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"; |