package alba
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=062f33c55ef39706c4290dff67d5a00bf009051fd757f9352be527f629ae21fc
md5=eb4edc4d6b7e15b83d6397bd34994153
doc/alba.core/Alba_core/Term/index.html
Module Alba_core.Term
Source
type t =
| Sort of Sort.t
| Value of Value.t
| Variable of int
| Typed of t * typ
| Appl of t * t * Application_info.t
| Lambda of typ * t * Lambda_info.t
| Pi of typ * typ * Pi_info.t
| Where of string * typ * t * t
(*Where
*)(name, tp, exp, def)
is equivalent to the beta redexAppl ( Lambda (tp, exp, "name"), def)
Rewrite a where block as an application with a lambda term.
split_application t
up_from start delta t
: increases all free variables >= start
in t
by delta
requires: 0 <= delta
up delta t
: increases all free variables in t
by delta
requires: 0 <= delta
down_from start delta t
: decreases all free variables >= start
in t
by delta
if possible. Returns None
it there is a free variable in t
with index i < delta
.
requires: 0 <= delta
down delta t
: decreases all free variables in t
by delta
if possible. Returns None
if there is a free variable in t
with index i < delta
.
requires: 0 <= delta
substitute f term
substitutes each free variable i
in term
by the term f i
.
substitute f term
substitutes each free variable i
in term
by the term f i
and do beta reduction in case that f i
appears in a function position and is a function abstraction.
apply_nargs f n mode
returns
f (Var (n-1)) ... (Var 0)
where all applications are done with mode mode
.
has p term
does the term have a free variable satisfying p
?
Monadic functions