added Term.dummy_pattern conveniences;
authorwenzelm
Sun, 16 Oct 2011 18:48:30 +0200
changeset 45156 a9b6c2ea7bec
parent 45155 3216d65d8f34
child 45157 efc2e2d80218
added Term.dummy_pattern conveniences;
src/HOL/Tools/Datatype/datatype_case.ML
src/HOL/Tools/Function/function_lib.ML
src/Pure/Proof/proof_syntax.ML
src/Pure/drule.ML
src/Pure/proofterm.ML
src/Pure/term.ML
src/Tools/induct.ML
--- a/src/HOL/Tools/Datatype/datatype_case.ML	Sun Oct 16 16:56:01 2011 +0200
+++ b/src/HOL/Tools/Datatype/datatype_case.ML	Sun Oct 16 18:48:30 2011 +0200
@@ -346,7 +346,7 @@
                   (fold_rev count_cases cases []);
                 val R = type_of t;
                 val dummy =
-                  if d then Const (@{const_name dummy_pattern}, R)
+                  if d then Term.dummy_pattern R
                   else Free (singleton (Name.variant_list used) "x", R);
               in
                 SOME (x,
--- a/src/HOL/Tools/Function/function_lib.ML	Sun Oct 16 16:56:01 2011 +0200
+++ b/src/HOL/Tools/Function/function_lib.ML	Sun Oct 16 18:48:30 2011 +0200
@@ -75,9 +75,7 @@
   let
     val allthm = Thm.forall_intr cv thm
     val (_ $ abs) = prop_of allthm
-  in
-    Thm.rename_boundvars abs (Abs (n, dummyT, Term.dummy_pattern dummyT)) allthm
-  end
+  in Thm.rename_boundvars abs (Abs (n, dummyT, Term.dummy)) allthm end
 
 
 datatype proof_attempt = Solved of thm | Stuck of thm | Fail
--- a/src/Pure/Proof/proof_syntax.ML	Sun Oct 16 16:56:01 2011 +0200
+++ b/src/Pure/Proof/proof_syntax.ML	Sun Oct 16 18:48:30 2011 +0200
@@ -172,12 +172,12 @@
         Abs (s, T, term_of (T::Ts) (Proofterm.incr_pboundvars 1 0 prf))
       end
   | term_of Ts (AbsP (s, t, prf)) =
-      AbsPt $ the_default (Term.dummy_pattern propT) t $
+      AbsPt $ the_default Term.dummy_prop t $
         Abs (s, proofT, term_of (proofT::Ts) (Proofterm.incr_pboundvars 0 1 prf))
   | term_of Ts (prf1 %% prf2) =
       AppPt $ term_of Ts prf1 $ term_of Ts prf2
   | term_of Ts (prf % opt) =
-      let val t = the_default (Term.dummy_pattern dummyT) opt
+      let val t = the_default Term.dummy opt
       in Const ("Appt",
         [proofT, fastype_of1 (Ts, t) handle TERM _ => dummyT] ---> proofT) $
           term_of Ts prf $ t
--- a/src/Pure/drule.ML	Sun Oct 16 16:56:01 2011 +0200
+++ b/src/Pure/drule.ML	Sun Oct 16 18:48:30 2011 +0200
@@ -729,7 +729,7 @@
 fun cterm_rule f = dest_term o f o mk_term;
 fun term_rule thy f t = Thm.term_of (cterm_rule f (Thm.cterm_of thy t));
 
-val dummy_thm = mk_term (certify (Term.dummy_pattern propT));
+val dummy_thm = mk_term (certify Term.dummy_prop);
 
 
 (* sort_constraint *)
--- a/src/Pure/proofterm.ML	Sun Oct 16 16:56:01 2011 +0200
+++ b/src/Pure/proofterm.ML	Sun Oct 16 18:48:30 2011 +0200
@@ -1051,10 +1051,8 @@
 
 val axm_proof = gen_axm_proof PAxm;
 
-val dummy = Const (Term.dummy_patternN, dummyT);
-
 fun oracle_proof name prop =
-  if ! proofs = 0 then ((name, dummy), Oracle (name, dummy, NONE))
+  if ! proofs = 0 then ((name, Term.dummy), Oracle (name, Term.dummy, NONE))
   else ((name, prop), gen_axm_proof Oracle name prop);
 
 fun shrink_proof thy =
--- a/src/Pure/term.ML	Sun Oct 16 16:56:01 2011 +0200
+++ b/src/Pure/term.ML	Sun Oct 16 18:48:30 2011 +0200
@@ -164,6 +164,8 @@
   val dest_abs: string * typ * term -> string * term
   val dummy_patternN: string
   val dummy_pattern: typ -> term
+  val dummy: term
+  val dummy_prop: term
   val is_dummy_pattern: term -> bool
   val free_dummy_patterns: term -> Name.context -> term * Name.context
   val no_dummy_patterns: term -> term
@@ -941,6 +943,8 @@
 val dummy_patternN = "dummy_pattern";
 
 fun dummy_pattern T = Const (dummy_patternN, T);
+val dummy = dummy_pattern dummyT;
+val dummy_prop = dummy_pattern propT;
 
 fun is_dummy_pattern (Const ("dummy_pattern", _)) = true
   | is_dummy_pattern _ = false;
@@ -979,7 +983,7 @@
 fun is_replaced_dummy_pattern ("_dummy_", _) = true
   | is_replaced_dummy_pattern _ = false;
 
-fun show_dummy_patterns (Var (("_dummy_", _), T)) = Const ("dummy_pattern", T)
+fun show_dummy_patterns (Var (("_dummy_", _), T)) = dummy_pattern T
   | show_dummy_patterns (t $ u) = show_dummy_patterns t $ show_dummy_patterns u
   | show_dummy_patterns (Abs (x, T, t)) = Abs (x, T, show_dummy_patterns t)
   | show_dummy_patterns a = a;
--- a/src/Tools/induct.ML	Sun Oct 16 16:56:01 2011 +0200
+++ b/src/Tools/induct.ML	Sun Oct 16 18:48:30 2011 +0200
@@ -642,9 +642,9 @@
 local
 
 fun goal_prefix k ((c as Const ("all", _)) $ Abs (a, T, B)) = c $ Abs (a, T, goal_prefix k B)
-  | goal_prefix 0 _ = Term.dummy_pattern propT
+  | goal_prefix 0 _ = Term.dummy_prop
   | goal_prefix k ((c as Const ("==>", _)) $ A $ B) = c $ A $ goal_prefix (k - 1) B
-  | goal_prefix _ _ = Term.dummy_pattern propT;
+  | goal_prefix _ _ = Term.dummy_prop;
 
 fun goal_params k (Const ("all", _) $ Abs (_, _, B)) = goal_params k B + 1
   | goal_params 0 _ = 0