Library
Module
Module type
Parameter
Class
Class type
Functor building an implementation of abstract binding trees given a signature.
module Operator :
Operator with type ('arity, 'sort) t = ('arity, 'sort) Operator.t
An abstract binding tree (ABT). 'valence
is a phantom type parameter representing the valence of the ABT.
type 'valence view =
| Abs : 'sort Variable.t * 'valence t -> ('sort -> 'valence) view
An abstractor, which binds a variable within a term.
*)| Op : ('arity, 'sort) Operator.t * ('arity, 'sort) operands -> 'sort va view
An operator applied to operands.
*)| Var : 'sort Variable.t -> 'sort va view
A variable.
*)A view of an ABT.
val abs : 'sort Variable.t -> 'valence t -> ('sort -> 'valence) t
Constructs an abstractor ABT.
val op : ('arity, 'sort) Operator.t -> ('arity, 'sort) operands -> 'sort va t
Constructs an operation ABT.
val var : 'sort Variable.t -> 'sort va t
Constructs a variable ABT.
Applies a substitution to the ABT.
Checks two ABTs for alpha-equivalence. Two ABTs are alpha-equivalent iff they are structurally equal up to renaming of bound variables.
val pp_print : Format.formatter -> _ t -> unit
Pretty-prints an ABT.