added drop_judgment;
authorwenzelm
Sat, 06 Jan 2001 21:28:30 +0100
changeset 10808 cc4a3ed7e70b
parent 10807 ae001d5119fc
child 10809 e827c779ae2e
added drop_judgment;
src/Pure/Isar/auto_bind.ML
--- a/src/Pure/Isar/auto_bind.ML	Sat Jan 06 21:28:04 2001 +0100
+++ b/src/Pure/Isar/auto_bind.ML	Sat Jan 06 21:28:30 2001 +0100
@@ -12,6 +12,7 @@
 signature AUTO_BIND =
 sig
   val is_judgment: term -> bool
+  val drop_judgment: term -> term
   val atomic_judgment: theory -> string -> term
   val add_judgment: bstring * string * mixfix -> theory -> theory
   val add_judgment_i: bstring * typ * mixfix -> theory -> theory
@@ -28,14 +29,15 @@
 
 val TruepropN = "Trueprop";
 
-fun strip_judgment prop =
-  (case Logic.strip_assums_concl prop of
-    tm as (Const (c, _) $ t) => if c = TruepropN then t else tm
-  | tm => tm);
-
 fun is_judgment (Const (c, _) $ _) = c = TruepropN
   | is_judgment _ = false;
 
+fun drop_judgment (Abs (x, T, t)) = Abs (x, T, drop_judgment t)
+  | drop_judgment (tm as (Const (c, _) $ t)) = if c = TruepropN then t else tm
+  | drop_judgment tm = tm;
+
+val strip_judgment = drop_judgment o Logic.strip_assums_concl;
+
 fun atomic_judgment thy x =
   let  (*be robust wrt. low-level errors*)
     val aT = TFree ("'a", logicS);
@@ -61,10 +63,8 @@
 val thesisN = "thesis";
 val thisN = "this";
 
-fun list_abs parms tm = foldr (fn ((x, T), t) => Abs (x, T, t)) (parms, tm);
-
 fun statement_binds name prop =
-  [((name, 0), Some (list_abs (Logic.strip_params prop) (strip_judgment prop)))];
+  [((name, 0), Some (Term.list_abs (Logic.strip_params prop, strip_judgment prop)))];
 
 
 (* goal *)
@@ -76,7 +76,7 @@
 
 fun get_arg prop =
   (case strip_judgment prop of
-    _ $ t => Some (list_abs (Logic.strip_params prop) t)
+    _ $ t => Some (Term.list_abs (Logic.strip_params prop, t))
   | _ => None);
 
 fun facts _ [] = []
@@ -84,4 +84,5 @@
       let val prop = Library.last_elem props
       in [(Syntax.dddot_indexname, get_arg prop)] @ statement_binds thisN prop end;
 
+
 end;