equal
deleted
inserted
replaced
330 min_max.le_infI1 min_max.le_infI2 |
330 min_max.le_infI1 min_max.le_infI2 |
331 |
331 |
332 |
332 |
333 subsection {* Complete lattices *} |
333 subsection {* Complete lattices *} |
334 |
334 |
335 class complete_lattice = lattice + top + bot + |
335 class complete_lattice = lattice + bot + top + |
336 fixes Inf :: "'a set \<Rightarrow> 'a" ("\<Sqinter>_" [900] 900) |
336 fixes Inf :: "'a set \<Rightarrow> 'a" ("\<Sqinter>_" [900] 900) |
337 and Sup :: "'a set \<Rightarrow> 'a" ("\<Squnion>_" [900] 900) |
337 and Sup :: "'a set \<Rightarrow> 'a" ("\<Squnion>_" [900] 900) |
338 assumes Inf_lower: "x \<in> A \<Longrightarrow> \<Sqinter>A \<sqsubseteq> x" |
338 assumes Inf_lower: "x \<in> A \<Longrightarrow> \<Sqinter>A \<sqsubseteq> x" |
339 and Inf_greatest: "(\<And>x. x \<in> A \<Longrightarrow> z \<sqsubseteq> x) \<Longrightarrow> z \<sqsubseteq> \<Sqinter>A" |
339 and Inf_greatest: "(\<And>x. x \<in> A \<Longrightarrow> z \<sqsubseteq> x) \<Longrightarrow> z \<sqsubseteq> \<Sqinter>A" |
340 assumes Sup_upper: "x \<in> A \<Longrightarrow> x \<sqsubseteq> \<Squnion>A" |
340 assumes Sup_upper: "x \<in> A \<Longrightarrow> x \<sqsubseteq> \<Squnion>A" |
381 |
381 |
382 lemma Sup_binary: |
382 lemma Sup_binary: |
383 "\<Squnion>{a, b} = a \<squnion> b" |
383 "\<Squnion>{a, b} = a \<squnion> b" |
384 by (simp add: Sup_insert_simp) |
384 by (simp add: Sup_insert_simp) |
385 |
385 |
|
386 lemma bot_def: |
|
387 "bot = \<Squnion>{}" |
|
388 by (auto intro: antisym Sup_least) |
|
389 |
386 lemma top_def: |
390 lemma top_def: |
387 "top = \<Sqinter>{}" |
391 "top = \<Sqinter>{}" |
388 by (auto intro: antisym Inf_greatest) |
392 by (auto intro: antisym Inf_greatest) |
389 |
393 |
390 lemma bot_def: |
394 lemma sup_bot [simp]: |
391 "bot = \<Squnion>{}" |
395 "x \<squnion> bot = x" |
392 by (auto intro: antisym Sup_least) |
396 using bot_least [of x] by (simp add: le_iff_sup sup_commute) |
393 |
397 |
394 definition |
398 lemma inf_top [simp]: |
395 SUPR :: "'b set \<Rightarrow> ('b \<Rightarrow> 'a) \<Rightarrow> 'a" |
399 "x \<sqinter> top = x" |
396 where |
400 using top_greatest [of x] by (simp add: le_iff_inf inf_commute) |
|
401 |
|
402 definition SUPR :: "'b set \<Rightarrow> ('b \<Rightarrow> 'a) \<Rightarrow> 'a" where |
397 "SUPR A f == \<Squnion> (f ` A)" |
403 "SUPR A f == \<Squnion> (f ` A)" |
398 |
404 |
399 definition |
405 definition INFI :: "'b set \<Rightarrow> ('b \<Rightarrow> 'a) \<Rightarrow> 'a" where |
400 INFI :: "'b set \<Rightarrow> ('b \<Rightarrow> 'a) \<Rightarrow> 'a" |
|
401 where |
|
402 "INFI A f == \<Sqinter> (f ` A)" |
406 "INFI A f == \<Sqinter> (f ` A)" |
403 |
407 |
404 end |
408 end |
405 |
409 |
406 syntax |
410 syntax |