# HG changeset patch # User haftmann # Date 1241593727 -7200 # Node ID 996ae76c9eda49b29fe75b774f899da6655d830a # Parent fbb00c98f9ed1af5ccacac515bde24721b6d1175 compatible with preorder; bot and top instances diff -r fbb00c98f9ed -r 996ae76c9eda src/HOL/Library/Product_ord.thy --- a/src/HOL/Library/Product_ord.thy Mon May 04 23:45:58 2009 +0200 +++ b/src/HOL/Library/Product_ord.thy Wed May 06 09:08:47 2009 +0200 @@ -12,25 +12,28 @@ begin definition - prod_le_def [code del]: "x \ y \ fst x < fst y \ fst x = fst y \ snd x \ snd y" + prod_le_def [code del]: "x \ y \ fst x < fst y \ fst x \ fst y \ snd x \ snd y" definition - prod_less_def [code del]: "x < y \ fst x < fst y \ fst x = fst y \ snd x < snd y" + prod_less_def [code del]: "x < y \ fst x < fst y \ fst x \ fst y \ snd x < snd y" instance .. end lemma [code]: - "(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" + "(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_le_def prod_less_def by simp_all -instance * :: (order, order) order - by default (auto simp: prod_le_def prod_less_def intro: order_less_trans) +instance * :: (preorder, preorder) preorder proof +qed (auto simp: prod_le_def prod_less_def less_le_not_le intro: order_trans) -instance * :: (linorder, linorder) linorder - by default (auto simp: prod_le_def) +instance * :: (order, order) order proof +qed (auto simp add: prod_le_def) + +instance * :: (linorder, linorder) linorder proof +qed (auto simp: prod_le_def) instantiation * :: (linorder, linorder) distrib_lattice begin @@ -41,9 +44,30 @@ definition sup_prod_def: "(sup \ 'a \ 'b \ _ \ _) = max" -instance - by intro_classes - (auto simp add: inf_prod_def sup_prod_def min_max.sup_inf_distrib1) +instance proof +qed (auto simp add: inf_prod_def sup_prod_def min_max.sup_inf_distrib1) + +end + +instantiation * :: (bot, bot) bot +begin + +definition + bot_prod_def: "bot = (bot, bot)" + +instance proof +qed (auto simp add: bot_prod_def prod_le_def) + +end + +instantiation * :: (top, top) top +begin + +definition + top_prod_def: "top = (top, top)" + +instance proof +qed (auto simp add: top_prod_def prod_le_def) end