equal
deleted
inserted
replaced
8 |
8 |
9 notation |
9 notation |
10 less_eq (infix "\<sqsubseteq>" 50) and |
10 less_eq (infix "\<sqsubseteq>" 50) and |
11 less (infix "\<sqsubset>" 50) and |
11 less (infix "\<sqsubset>" 50) and |
12 inf (infixl "\<sqinter>" 70) and |
12 inf (infixl "\<sqinter>" 70) and |
13 sup (infixl "\<squnion>" 65) |
13 sup (infixl "\<squnion>" 65) and |
|
14 top ("\<top>") and |
|
15 bot ("\<bottom>") |
14 |
16 |
15 |
17 |
16 subsection {* Abstract complete lattices *} |
18 subsection {* Abstract complete lattices *} |
17 |
19 |
18 class complete_lattice = lattice + bot + top + |
20 class complete_lattice = lattice + bot + top + |
21 assumes Inf_lower: "x \<in> A \<Longrightarrow> \<Sqinter>A \<sqsubseteq> x" |
23 assumes Inf_lower: "x \<in> A \<Longrightarrow> \<Sqinter>A \<sqsubseteq> x" |
22 and Inf_greatest: "(\<And>x. x \<in> A \<Longrightarrow> z \<sqsubseteq> x) \<Longrightarrow> z \<sqsubseteq> \<Sqinter>A" |
24 and Inf_greatest: "(\<And>x. x \<in> A \<Longrightarrow> z \<sqsubseteq> x) \<Longrightarrow> z \<sqsubseteq> \<Sqinter>A" |
23 assumes Sup_upper: "x \<in> A \<Longrightarrow> x \<sqsubseteq> \<Squnion>A" |
25 assumes Sup_upper: "x \<in> A \<Longrightarrow> x \<sqsubseteq> \<Squnion>A" |
24 and Sup_least: "(\<And>x. x \<in> A \<Longrightarrow> x \<sqsubseteq> z) \<Longrightarrow> \<Squnion>A \<sqsubseteq> z" |
26 and Sup_least: "(\<And>x. x \<in> A \<Longrightarrow> x \<sqsubseteq> z) \<Longrightarrow> \<Squnion>A \<sqsubseteq> z" |
25 begin |
27 begin |
|
28 |
|
29 term complete_lattice |
|
30 |
|
31 lemma dual_complete_lattice: |
|
32 "complete_lattice (op \<ge>) (op >) (op \<squnion>) (op \<sqinter>) \<top> \<bottom> Sup Inf" |
|
33 by (auto intro!: complete_lattice.intro dual_lattice |
|
34 bot.intro top.intro dual_preorder, unfold_locales) |
|
35 (fact bot_least top_greatest |
|
36 Sup_upper Sup_least Inf_lower Inf_greatest)+ |
26 |
37 |
27 lemma Inf_Sup: "\<Sqinter>A = \<Squnion>{b. \<forall>a \<in> A. b \<le> a}" |
38 lemma Inf_Sup: "\<Sqinter>A = \<Squnion>{b. \<forall>a \<in> A. b \<le> a}" |
28 by (auto intro: antisym Inf_lower Inf_greatest Sup_upper Sup_least) |
39 by (auto intro: antisym Inf_lower Inf_greatest Sup_upper Sup_least) |
29 |
40 |
30 lemma Sup_Inf: "\<Squnion>A = \<Sqinter>{b. \<forall>a \<in> A. a \<le> b}" |
41 lemma Sup_Inf: "\<Squnion>A = \<Sqinter>{b. \<forall>a \<in> A. a \<le> b}" |
782 less_eq (infix "\<sqsubseteq>" 50) and |
793 less_eq (infix "\<sqsubseteq>" 50) and |
783 less (infix "\<sqsubset>" 50) and |
794 less (infix "\<sqsubset>" 50) and |
784 inf (infixl "\<sqinter>" 70) and |
795 inf (infixl "\<sqinter>" 70) and |
785 sup (infixl "\<squnion>" 65) and |
796 sup (infixl "\<squnion>" 65) and |
786 Inf ("\<Sqinter>_" [900] 900) and |
797 Inf ("\<Sqinter>_" [900] 900) and |
787 Sup ("\<Squnion>_" [900] 900) |
798 Sup ("\<Squnion>_" [900] 900) and |
|
799 top ("\<top>") and |
|
800 bot ("\<bottom>") |
788 |
801 |
789 lemmas mem_simps = |
802 lemmas mem_simps = |
790 insert_iff empty_iff Un_iff Int_iff Compl_iff Diff_iff |
803 insert_iff empty_iff Un_iff Int_iff Compl_iff Diff_iff |
791 mem_Collect_eq UN_iff Union_iff INT_iff Inter_iff |
804 mem_Collect_eq UN_iff Union_iff INT_iff Inter_iff |
792 -- {* Each of these has ALREADY been added @{text "[simp]"} above. *} |
805 -- {* Each of these has ALREADY been added @{text "[simp]"} above. *} |