diff -r 000000000000 -r 110247f9d47e Precedence_ord.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Precedence_ord.thy Thu Dec 06 15:11:21 2012 +0000 @@ -0,0 +1,34 @@ +header {* Order on product types *} + +theory Precedence_ord +imports Main +begin + +datatype precedence = Prc nat nat + +instantiation precedence :: order +begin + +definition + precedence_le_def: "x \ y \ (case (x, y) of + (Prc fx sx, Prc fy sy) \ + fx < fy \ (fx \ fy \ sy \ sx))" + +definition + precedence_less_def: "x < y \ (case (x, y) of + (Prc fx sx, Prc fy sy) \ + fx < fy \ (fx \ fy \ sy < sx))" + +instance +proof +qed (auto simp: precedence_le_def precedence_less_def + intro: order_trans split:precedence.splits) +end + +instance precedence :: preorder .. + +instance precedence :: linorder proof +qed (auto simp: precedence_le_def precedence_less_def + intro: order_trans split:precedence.splits) + +end