src/Pure/term.ML
changeset 18975 78d650a7e99a
parent 18942 9228bbe9cd4e
child 18976 4efb82669880
equal deleted inserted replaced
18974:593af1a1068b 18975:78d650a7e99a
   895           Abs (a, T, t) => Abs (a, T, abs (lev + 1) t)
   895           Abs (a, T, t) => Abs (a, T, abs (lev + 1) t)
   896         | t $ u => (abs lev t $ (abs lev u handle SAME => u) handle SAME => t $ abs lev u)
   896         | t $ u => (abs lev t $ (abs lev u handle SAME => u) handle SAME => t $ abs lev u)
   897         | _ => raise SAME);
   897         | _ => raise SAME);
   898   in abs 0 body handle SAME => body end;
   898   in abs 0 body handle SAME => body end;
   899 
   899 
   900 fun lambda (v as Const (x, T)) t = Abs (x, T, abstract_over (v, t))
   900 fun lambda (v as Const (x, T)) t = Abs (NameSpace.base x, T, abstract_over (v, t))
   901   | lambda (v as Free (x, T)) t = Abs (x, T, abstract_over (v, t))
   901   | lambda (v as Free (x, T)) t = Abs (x, T, abstract_over (v, t))
   902   | lambda (v as Var ((x, _), T)) t = Abs (x, T, abstract_over (v, t))
   902   | lambda (v as Var ((x, _), T)) t = Abs (x, T, abstract_over (v, t))
   903   | lambda v t = raise TERM ("lambda", [v, t]);
   903   | lambda v t = raise TERM ("lambda", [v, t]);
   904 
   904 
   905 (*Form an abstraction over a free variable.*)
   905 (*Form an abstraction over a free variable.*)