src/HOL/Finite_Set.thy
changeset 23087 ad7244663431
parent 23018 1d29bc31b0cb
child 23234 b78bce9a0bcc
equal deleted inserted replaced
23086:12320f6e2523 23087:ad7244663431
  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]