src/HOL/Orderings.thy
changeset 15531 08c8dad8e399
parent 15524 2ef571f80a55
child 15622 4723248c982b
equal deleted inserted replaced
15530:6f43714517ee 15531:08c8dad8e399
   288 
   288 
   289 fun decomp_gen sort sign (Trueprop $ t) =
   289 fun decomp_gen sort sign (Trueprop $ t) =
   290   let fun of_sort t = Sign.of_sort sign (type_of t, sort)
   290   let fun of_sort t = Sign.of_sort sign (type_of t, sort)
   291   fun dec (Const ("Not", _) $ t) = (
   291   fun dec (Const ("Not", _) $ t) = (
   292 	  case dec t of
   292 	  case dec t of
   293 	    None => None
   293 	    NONE => NONE
   294 	  | Some (t1, rel, t2) => Some (t1, "~" ^ rel, t2))
   294 	  | SOME (t1, rel, t2) => SOME (t1, "~" ^ rel, t2))
   295 	| dec (Const ("op =",  _) $ t1 $ t2) =
   295 	| dec (Const ("op =",  _) $ t1 $ t2) =
   296 	    if of_sort t1
   296 	    if of_sort t1
   297 	    then Some (t1, "=", t2)
   297 	    then SOME (t1, "=", t2)
   298 	    else None
   298 	    else NONE
   299 	| dec (Const ("op <=",  _) $ t1 $ t2) =
   299 	| dec (Const ("op <=",  _) $ t1 $ t2) =
   300 	    if of_sort t1
   300 	    if of_sort t1
   301 	    then Some (t1, "<=", t2)
   301 	    then SOME (t1, "<=", t2)
   302 	    else None
   302 	    else NONE
   303 	| dec (Const ("op <",  _) $ t1 $ t2) =
   303 	| dec (Const ("op <",  _) $ t1 $ t2) =
   304 	    if of_sort t1
   304 	    if of_sort t1
   305 	    then Some (t1, "<", t2)
   305 	    then SOME (t1, "<", t2)
   306 	    else None
   306 	    else NONE
   307 	| dec _ = None
   307 	| dec _ = NONE
   308   in dec t end;
   308   in dec t end;
   309 
   309 
   310 structure Quasi_Tac = Quasi_Tac_Fun (
   310 structure Quasi_Tac = Quasi_Tac_Fun (
   311   struct
   311   struct
   312     val le_trans = thm "order_trans";
   312     val le_trans = thm "order_trans";