equal
deleted
inserted
replaced
123 and v_def: "v == glb {x. ((%x: intY1. f x) x, x): induced intY1 r & |
123 and v_def: "v == glb {x. ((%x: intY1. f x) x, x): induced intY1 r & |
124 x: intY1} |
124 x: intY1} |
125 (| pset=intY1, order=induced intY1 r|)" |
125 (| pset=intY1, order=induced intY1 r|)" |
126 |
126 |
127 |
127 |
128 subsubsection {* Partial Order *} |
128 subsection {* Partial Order *} |
129 |
129 |
130 lemma (in PO) PO_imp_refl: "refl A r" |
130 lemma (in PO) PO_imp_refl: "refl A r" |
131 apply (insert cl_po) |
131 apply (insert cl_po) |
132 apply (simp add: PartialOrder_def A_def r_def) |
132 apply (simp add: PartialOrder_def A_def r_def) |
133 done |
133 done |
298 apply (simp add: PO_imp_trans interval_not_empty) |
298 apply (simp add: PO_imp_trans interval_not_empty) |
299 apply (simp add: PO_imp_refl [THEN reflE]) |
299 apply (simp add: PO_imp_refl [THEN reflE]) |
300 done |
300 done |
301 |
301 |
302 |
302 |
303 subsubsection {* sublattice *} |
303 subsection {* sublattice *} |
304 |
304 |
305 lemma (in PO) sublattice_imp_CL: |
305 lemma (in PO) sublattice_imp_CL: |
306 "S <<= cl ==> (| pset = S, order = induced S r |) \<in> CompleteLattice" |
306 "S <<= cl ==> (| pset = S, order = induced S r |) \<in> CompleteLattice" |
307 by (simp add: sublattice_def CompleteLattice_def A_def r_def) |
307 by (simp add: sublattice_def CompleteLattice_def A_def r_def) |
308 |
308 |
310 "[| S <= A; (| pset = S, order = induced S r |) \<in> CompleteLattice |] |
310 "[| S <= A; (| pset = S, order = induced S r |) \<in> CompleteLattice |] |
311 ==> S <<= cl" |
311 ==> S <<= cl" |
312 by (simp add: sublattice_def A_def r_def) |
312 by (simp add: sublattice_def A_def r_def) |
313 |
313 |
314 |
314 |
315 subsubsection {* lub *} |
315 subsection {* lub *} |
316 |
316 |
317 lemma (in CL) lub_unique: "[| S <= A; isLub S cl x; isLub S cl L|] ==> x = L" |
317 lemma (in CL) lub_unique: "[| S <= A; isLub S cl x; isLub S cl L|] ==> x = L" |
318 apply (rule antisymE) |
318 apply (rule antisymE) |
319 apply (rule CO_antisym) |
319 apply (rule CO_antisym) |
320 apply (auto simp add: isLub_def r_def) |
320 apply (auto simp add: isLub_def r_def) |
377 "[| L \<in> A; \<forall>y \<in> S. (y, L) \<in> r; |
377 "[| L \<in> A; \<forall>y \<in> S. (y, L) \<in> r; |
378 (\<forall>z \<in> A. (\<forall>y \<in> S. (y, z):r) --> (L, z) \<in> r)|] ==> isLub S cl L" |
378 (\<forall>z \<in> A. (\<forall>y \<in> S. (y, z):r) --> (L, z) \<in> r)|] ==> isLub S cl L" |
379 by (simp add: isLub_def A_def r_def) |
379 by (simp add: isLub_def A_def r_def) |
380 |
380 |
381 |
381 |
382 subsubsection {* glb *} |
382 subsection {* glb *} |
383 |
383 |
384 lemma (in CL) glb_in_lattice: "S <= A ==> glb S cl \<in> A" |
384 lemma (in CL) glb_in_lattice: "S <= A ==> glb S cl \<in> A" |
385 apply (subst glb_dual_lub) |
385 apply (subst glb_dual_lub) |
386 apply (simp add: A_def) |
386 apply (simp add: A_def) |
387 apply (rule dualA_iff [THEN subst]) |
387 apply (rule dualA_iff [THEN subst]) |
425 apply (simp add: CLF_def CL_dualCL monotone_dual) |
425 apply (simp add: CLF_def CL_dualCL monotone_dual) |
426 apply (simp add: dualA_iff) |
426 apply (simp add: dualA_iff) |
427 done |
427 done |
428 |
428 |
429 |
429 |
430 subsubsection {* fixed points *} |
430 subsection {* fixed points *} |
431 |
431 |
432 lemma fix_subset: "fix f A <= A" |
432 lemma fix_subset: "fix f A <= A" |
433 by (simp add: fix_def, fast) |
433 by (simp add: fix_def, fast) |
434 |
434 |
435 lemma fix_imp_eq: "x \<in> fix f A ==> f x = x" |
435 lemma fix_imp_eq: "x \<in> fix f A ==> f x = x" |
439 "[| A <= B; x \<in> fix (%y: A. f y) A |] ==> x \<in> fix f B" |
439 "[| A <= B; x \<in> fix (%y: A. f y) A |] ==> x \<in> fix f B" |
440 apply (simp add: fix_def, auto) |
440 apply (simp add: fix_def, auto) |
441 done |
441 done |
442 |
442 |
443 |
443 |
444 subsubsection {* lemmas for Tarski, lub *} |
444 subsection {* lemmas for Tarski, lub *} |
445 lemma (in CLF) lubH_le_flubH: |
445 lemma (in CLF) lubH_le_flubH: |
446 "H = {x. (x, f x) \<in> r & x \<in> A} ==> (lub H cl, f (lub H cl)) \<in> r" |
446 "H = {x. (x, f x) \<in> r & x \<in> A} ==> (lub H cl, f (lub H cl)) \<in> r" |
447 apply (rule lub_least, fast) |
447 apply (rule lub_least, fast) |
448 apply (rule f_in_funcset [THEN funcset_mem]) |
448 apply (rule f_in_funcset [THEN funcset_mem]) |
449 apply (rule lub_in_lattice, fast) |
449 apply (rule lub_in_lattice, fast) |
509 apply (rule impI) |
509 apply (rule impI) |
510 apply (erule bspec) |
510 apply (erule bspec) |
511 apply (rule lubH_is_fixp, assumption) |
511 apply (rule lubH_is_fixp, assumption) |
512 done |
512 done |
513 |
513 |
514 subsubsection {* Tarski fixpoint theorem 1, first part *} |
514 subsection {* Tarski fixpoint theorem 1, first part *} |
515 lemma (in CLF) T_thm_1_lub: "lub P cl = lub {x. (x, f x) \<in> r & x \<in> A} cl" |
515 lemma (in CLF) T_thm_1_lub: "lub P cl = lub {x. (x, f x) \<in> r & x \<in> A} cl" |
516 apply (rule sym) |
516 apply (rule sym) |
517 apply (simp add: P_def) |
517 apply (simp add: P_def) |
518 apply (rule lubI) |
518 apply (rule lubI) |
519 apply (rule fix_subset) |
519 apply (rule fix_subset) |
538 apply (rule dualA_iff [THEN subst]) |
538 apply (rule dualA_iff [THEN subst]) |
539 apply (simp add: Tarski.T_thm_1_lub [of _ f, OF dualPO CL_dualCL] |
539 apply (simp add: Tarski.T_thm_1_lub [of _ f, OF dualPO CL_dualCL] |
540 dualPO CL_dualCL CLF_dual dualr_iff) |
540 dualPO CL_dualCL CLF_dual dualr_iff) |
541 done |
541 done |
542 |
542 |
543 subsubsection {* interval *} |
543 subsection {* interval *} |
544 |
544 |
545 lemma (in CLF) rel_imp_elem: "(x, y) \<in> r ==> x \<in> A" |
545 lemma (in CLF) rel_imp_elem: "(x, y) \<in> r ==> x \<in> A" |
546 apply (insert CO_refl) |
546 apply (insert CO_refl) |
547 apply (simp add: refl_def, blast) |
547 apply (simp add: refl_def, blast) |
548 done |
548 done |
678 |
678 |
679 lemmas (in CLF) interv_is_compl_latt = |
679 lemmas (in CLF) interv_is_compl_latt = |
680 interval_is_sublattice [THEN sublattice_imp_CL] |
680 interval_is_sublattice [THEN sublattice_imp_CL] |
681 |
681 |
682 |
682 |
683 subsubsection {* Top and Bottom *} |
683 subsection {* Top and Bottom *} |
684 lemma (in CLF) Top_dual_Bot: "Top cl = Bot (dual cl)" |
684 lemma (in CLF) Top_dual_Bot: "Top cl = Bot (dual cl)" |
685 by (simp add: Top_def Bot_def least_def greatest_def dualA_iff dualr_iff) |
685 by (simp add: Top_def Bot_def least_def greatest_def dualA_iff dualr_iff) |
686 |
686 |
687 lemma (in CLF) Bot_dual_Top: "Bot cl = Top (dual cl)" |
687 lemma (in CLF) Bot_dual_Top: "Bot cl = Top (dual cl)" |
688 by (simp add: Top_def Bot_def least_def greatest_def dualA_iff dualr_iff) |
688 by (simp add: Top_def Bot_def least_def greatest_def dualA_iff dualr_iff) |
739 f_cl dualPO CL_dualCL CLF_dual) |
739 f_cl dualPO CL_dualCL CLF_dual) |
740 apply (simp add: Tarski.Top_intv_not_empty [of _ f] |
740 apply (simp add: Tarski.Top_intv_not_empty [of _ f] |
741 dualA_iff A_def dualPO CL_dualCL CLF_dual) |
741 dualA_iff A_def dualPO CL_dualCL CLF_dual) |
742 done |
742 done |
743 |
743 |
744 subsubsection {* fixed points form a partial order *} |
744 subsection {* fixed points form a partial order *} |
745 |
745 |
746 lemma (in CLF) fixf_po: "(| pset = P, order = induced P r|) \<in> PartialOrder" |
746 lemma (in CLF) fixf_po: "(| pset = P, order = induced P r|) \<in> PartialOrder" |
747 by (simp add: P_def fix_subset po_subset_po) |
747 by (simp add: P_def fix_subset po_subset_po) |
748 |
748 |
749 lemma (in Tarski) Y_subset_A: "Y <= A" |
749 lemma (in Tarski) Y_subset_A: "Y <= A" |