Module Logtk.Lambda
Lambda-Calculus
type term
= Term.t
val beta_red_head : term -> term
val whnf_list : term -> term list -> term
Apply a lambda to a list of arguments. The type of the lambda must be a generalization of a function that takes the list's types as arguments.
- raises Type.ApplyError
if the first term doesn't have a function type or if the types are not compatible
val eta_expand : term -> term
Traverse the term, eta-expanding all sub-terms. A term
t : a -> b
becomesfun (x:a). t x
val eta_reduce : ?full:bool -> term -> term
Traverse the term, eta-reducing all sub-terms. A term
fun x. t x
wherex ∉ vars(t)
becomest
. If full is false, it eta-reduces only at the top level (default: true)
module Inner : sig ... end
Low level interface