42 val strip_imp_concl : term -> term |
42 val strip_imp_concl : term -> term |
43 val strip_imp_prems : term -> term list |
43 val strip_imp_prems : term -> term list |
44 val strip_params : term -> (string * typ) list |
44 val strip_params : term -> (string * typ) list |
45 val strip_prems : int * term list * term -> term list * term |
45 val strip_prems : int * term list * term -> term list * term |
46 val thaw_vars : term -> term |
46 val thaw_vars : term -> term |
47 val unvarifyT : typ -> typ |
|
48 val unvarify : term -> term |
47 val unvarify : term -> term |
49 val varify : term -> term |
48 val varify : term -> term |
50 end; |
49 end; |
51 |
50 |
52 functor LogicFun (structure Unify: UNIFY and Net:NET): LOGIC = |
51 functor LogicFun (structure Unify: UNIFY and Net:NET): LOGIC = |
318 | varify (Var(ixn,T)) = Var(ixn, Type.varifyT T) |
317 | varify (Var(ixn,T)) = Var(ixn, Type.varifyT T) |
319 | varify (Abs (a,T,body)) = Abs (a, Type.varifyT T, varify body) |
318 | varify (Abs (a,T,body)) = Abs (a, Type.varifyT T, varify body) |
320 | varify (f$t) = varify f $ varify t |
319 | varify (f$t) = varify f $ varify t |
321 | varify t = t; |
320 | varify t = t; |
322 |
321 |
323 (*Inverse of varifyT. Move to Pure/type.ML?*) |
|
324 fun unvarifyT (Type (a, Ts)) = Type (a, map unvarifyT Ts) |
|
325 | unvarifyT (TVar ((a, 0), S)) = TFree (a, S) |
|
326 | unvarifyT T = T; |
|
327 |
|
328 (*Inverse of varify. Converts axioms back to their original form.*) |
322 (*Inverse of varify. Converts axioms back to their original form.*) |
329 fun unvarify (Const(a,T)) = Const(a, unvarifyT T) |
323 fun unvarify (Const(a,T)) = Const(a, Type.unvarifyT T) |
330 | unvarify (Var((a,0), T)) = Free(a, unvarifyT T) |
324 | unvarify (Var((a,0), T)) = Free(a, Type.unvarifyT T) |
331 | unvarify (Var(ixn,T)) = Var(ixn, unvarifyT T) (*non-zero index!*) |
325 | unvarify (Var(ixn,T)) = Var(ixn, Type.unvarifyT T) (*non-0 index!*) |
332 | unvarify (Abs (a,T,body)) = Abs (a, unvarifyT T, unvarify body) |
326 | unvarify (Abs (a,T,body)) = Abs (a, Type.unvarifyT T, unvarify body) |
333 | unvarify (f$t) = unvarify f $ unvarify t |
327 | unvarify (f$t) = unvarify f $ unvarify t |
334 | unvarify t = t; |
328 | unvarify t = t; |
335 |
329 |
336 end; |
330 end; |