Term.is_bound;
authorwenzelm
Mon, 01 Aug 2005 19:20:33 +0200
changeset 16979 4d4d42ea3096
parent 16978 e35b518bffc9
child 16980 79d6b391344b
Term.is_bound;
src/Provers/hypsubst.ML
--- a/src/Provers/hypsubst.ML	Mon Aug 01 19:20:32 2005 +0200
+++ b/src/Provers/hypsubst.ML	Mon Aug 01 19:20:33 2005 +0200
@@ -71,21 +71,17 @@
 
 fun loose (i,t) = 0 mem_int add_loose_bnos(t,i,[]);
 
-local val odot = ord"."
-in
-(*Simplifier turns Bound variables to dotted Free variables:
-  change it back (any Bound variable will do)
-*)
+(*Simplifier turns Bound variables to special Free variables:
+  change it back (any Bound variable will do)*)
 fun contract t =
-    case Pattern.eta_contract_atom t of
-        Free(a,T) => if (ord a = odot) then Bound 0 else Free(a,T)
-      | t'        => t'
-end;
+  (case Pattern.eta_contract_atom t of
+    Free (a, T) => if Term.is_bound a then Bound 0 else Free (a, T)
+  | t' => t');
 
 fun has_vars t = maxidx_of_term t <> ~1;
 
 (*If novars then we forbid Vars in the equality.
-  If bnd then we only look for Bound (or dotted Free) variables to eliminate.
+  If bnd then we only look for Bound variables to eliminate.
   When can we safely delete the equality?
     Not if it equates two constants; consider 0=1.
     Not if it resembles x=t[x], since substitution does not eliminate x.