893 | _ => raise SAME); |
893 | _ => raise SAME); |
894 in abs 0 body handle SAME => body end; |
894 in abs 0 body handle SAME => body end; |
895 |
895 |
896 fun lambda (v as Free (x, T)) t = Abs (x, T, abstract_over (v, t)) |
896 fun lambda (v as Free (x, T)) t = Abs (x, T, abstract_over (v, t)) |
897 | lambda (v as Var ((x, _), T)) t = Abs (x, T, abstract_over (v, t)) |
897 | lambda (v as Var ((x, _), T)) t = Abs (x, T, abstract_over (v, t)) |
|
898 | lambda (v as Const ("TYPE", T)) t = Abs ("uu", T, abstract_over (v, t)) |
898 | lambda v t = raise TERM ("lambda", [v, t]); |
899 | lambda v t = raise TERM ("lambda", [v, t]); |
899 |
900 |
900 (*Form an abstraction over a free variable.*) |
901 (*Form an abstraction over a free variable.*) |
901 fun absfree (a,T,body) = Abs(a, T, abstract_over (Free(a,T), body)); |
902 fun absfree (a,T,body) = Abs(a, T, abstract_over (Free(a,T), body)); |
902 fun absdummy (T, body) = Abs ("uu", T, body); |
903 fun absdummy (T, body) = Abs ("uu", T, body); |