2600 "Linorder.Min (op \<le>) = Min" |
2600 "Linorder.Min (op \<le>) = Min" |
2601 proof |
2601 proof |
2602 fix A :: "'a set" |
2602 fix A :: "'a set" |
2603 show "Linorder.Min (op \<le>) A = Min A" |
2603 show "Linorder.Min (op \<le>) A = Min A" |
2604 by (simp add: Min_def Linorder.Min_def [OF Linorder.intro, OF linorder_axioms] |
2604 by (simp add: Min_def Linorder.Min_def [OF Linorder.intro, OF linorder_axioms] |
2605 linorder_class_min) |
2605 ord_class.min) |
2606 qed |
2606 qed |
2607 |
2607 |
2608 lemma Linorder_Max: |
2608 lemma Linorder_Max: |
2609 "Linorder.Max (op \<le>) = Max" |
2609 "Linorder.Max (op \<le>) = Max" |
2610 proof |
2610 proof |
2611 fix A :: "'a set" |
2611 fix A :: "'a set" |
2612 show "Linorder.Max (op \<le>) A = Max A" |
2612 show "Linorder.Max (op \<le>) A = Max A" |
2613 by (simp add: Max_def Linorder.Max_def [OF Linorder.intro, OF linorder_axioms] |
2613 by (simp add: Max_def Linorder.Max_def [OF Linorder.intro, OF linorder_axioms] |
2614 linorder_class_max) |
2614 ord_class.max) |
2615 qed |
2615 qed |
2616 |
2616 |
2617 interpretation [unfolded linorder_class_min linorder_class_max Linorder_Min Linorder_Max]: |
2617 interpretation [folded ord_class.min ord_class.max, unfolded Linorder_Min Linorder_Max]: |
2618 Linorder_ab_semigroup_add ["op \<le> \<Colon> 'a\<Colon>{linorder, pordered_ab_semigroup_add} \<Rightarrow> 'a \<Rightarrow> bool" "op <" "op +"] |
2618 Linorder_ab_semigroup_add ["op \<le> \<Colon> 'a\<Colon>{linorder, pordered_ab_semigroup_add} \<Rightarrow> 'a \<Rightarrow> bool" "op <" "op +"] |
2619 by (rule Linorder_ab_semigroup_add.intro, |
2619 by (rule Linorder_ab_semigroup_add.intro, |
2620 rule Linorder.intro, rule linorder_axioms, rule pordered_ab_semigroup_add_axioms) |
2620 rule Linorder.intro, rule linorder_axioms, rule pordered_ab_semigroup_add_axioms) |
2621 hide const Min Max |
2621 hide const Min Max |
2622 |
2622 |
2623 interpretation [unfolded linorder_class_min linorder_class_max Linorder_Min Linorder_Max]: |
2623 interpretation [folded ord_class.min ord_class.max, unfolded Linorder_Min Linorder_Max]: |
2624 Linorder ["op \<le> \<Colon> 'a\<Colon>linorder \<Rightarrow> 'a \<Rightarrow> bool" "op <"] |
2624 Linorder ["op \<le> \<Colon> 'a\<Colon>linorder \<Rightarrow> 'a \<Rightarrow> bool" "op <"] |
2625 by (rule Linorder.intro, rule linorder_axioms) |
2625 by (rule Linorder.intro, rule linorder_axioms) |
2626 declare Min_singleton [simp] |
2626 declare Min_singleton [simp] |
2627 declare Max_singleton [simp] |
2627 declare Max_singleton [simp] |
2628 declare Min_insert [simp] |
2628 declare Min_insert [simp] |