diff -r 845883bd3a6b -r 9200b36280c0 src/HOL/Library/Product_ord.thy --- a/src/HOL/Library/Product_ord.thy Thu Nov 29 07:55:46 2007 +0100 +++ b/src/HOL/Library/Product_ord.thy Thu Nov 29 17:08:26 2007 +0100 @@ -10,30 +10,28 @@ begin instance "*" :: (ord, ord) ord - prod_le_def: "(x \ y) \ (fst x < fst y) \ (fst x = fst y \ snd x \ snd y)" - prod_less_def: "(x < y) \ (fst x < fst y) \ (fst x = fst y \ snd x < snd y)" .. - -lemmas prod_ord_defs [code func del] = prod_less_def prod_le_def + prod_le_def [code func del]: "x \ y \ fst x < fst y \ fst x = fst y \ snd x \ snd y" + prod_less_def [code func del]: "x < y \ fst x < fst y \ fst x = fst y \ snd x < snd y" .. lemma [code func]: "(x1\'a\{ord, eq}, y1) \ (x2, y2) \ x1 < x2 \ x1 = x2 \ y1 \ y2" "(x1\'a\{ord, eq}, y1) < (x2, y2) \ x1 < x2 \ x1 = x2 \ y1 < y2" - unfolding prod_ord_defs by simp_all + unfolding prod_le_def prod_less_def by simp_all lemma [code]: "(x1, y1) \ (x2, y2) \ x1 < x2 \ x1 = x2 \ y1 \ y2" "(x1, y1) < (x2, y2) \ x1 < x2 \ x1 = x2 \ y1 < y2" - unfolding prod_ord_defs by simp_all + unfolding prod_le_def prod_less_def by simp_all instance * :: (order, order) order - by default (auto simp: prod_ord_defs intro: order_less_trans) + by default (auto simp: prod_le_def prod_less_def intro: order_less_trans) instance * :: (linorder, linorder) linorder by default (auto simp: prod_le_def) instance * :: (linorder, linorder) distrib_lattice - inf_prod_def: "inf \ min" - sup_prod_def: "sup \ max" + inf_prod_def: "(inf \ 'a \ 'b \ _ \ _) = min" + sup_prod_def: "(sup \ 'a \ 'b \ _ \ _) = max" by intro_classes (auto simp add: inf_prod_def sup_prod_def min_max.sup_inf_distrib1)