TFL/usyntax.ML
changeset 20071 8f3e1ddb50e6
parent 19046 bc5c6c9b114e
equal deleted inserted replaced
20070:3f31fb81b83a 20071:8f3e1ddb50e6
   238 fun dest_comb(t1 $ t2) = {Rator = t1, Rand = t2}
   238 fun dest_comb(t1 $ t2) = {Rator = t1, Rand = t2}
   239   | dest_comb _ =  raise USYN_ERR "dest_comb" "not a comb";
   239   | dest_comb _ =  raise USYN_ERR "dest_comb" "not a comb";
   240 
   240 
   241 fun dest_abs used (a as Abs(s, ty, M)) =
   241 fun dest_abs used (a as Abs(s, ty, M)) =
   242      let
   242      let
   243        val s' = variant used s;
   243        val s' = Name.variant used s;
   244        val v = Free(s', ty);
   244        val v = Free(s', ty);
   245      in ({Bvar = v, Body = Term.betapply (a,v)}, s'::used)
   245      in ({Bvar = v, Body = Term.betapply (a,v)}, s'::used)
   246      end
   246      end
   247   | dest_abs _ _ =  raise USYN_ERR "dest_abs" "not an abstraction";
   247   | dest_abs _ _ =  raise USYN_ERR "dest_abs" "not an abstraction";
   248 
   248