Dcalc.AstSourceAbstract syntax tree for the default calculus
type typ = | TLit of typ_lit| TTuple of typ Pos.marked list| TEnum of typ Pos.marked list| TArrow of typ Pos.marked * typ Pos.markedtype unop = | Not| Minus of op_kind| ErrorOnEmpty| Log of log_entry * Utils.Uid.MarkedString.info listtype expr = | EVar of expr Bindlib.var Pos.marked| ETuple of (expr Pos.marked * Uid.MarkedString.info option) listThe MarkedString.info is the former struct field name
| ETupleAccess of expr Pos.marked * int * Uid.MarkedString.info optionThe MarkedString.info is the former struct field name
| EInj of expr Pos.marked * int * Uid.MarkedString.info * typ Pos.marked listThe MarkedString.info is the former enum case name
| EMatch of expr Pos.marked * (expr Pos.marked * Uid.MarkedString.info) listThe MarkedString.info is the former enum case name
| ELit of lit| EAbs of Pos.t * (expr, expr Pos.marked) Bindlib.mbinder * typ Pos.marked list| EApp of expr Pos.marked * expr Pos.marked list| EAssert of expr Pos.marked| EOp of operator| EDefault of expr Pos.marked list * expr Pos.marked * expr Pos.marked| EIfThenElse of expr Pos.marked * expr Pos.marked * expr Pos.markedThe expressions use the Bindlib library, based on higher-order abstract syntax
val make_abs :
vars ->
expr Pos.marked Bindlib.box ->
Pos.t ->
typ Pos.marked list ->
Pos.t ->
expr Pos.marked Bindlib.boxval make_app :
expr Pos.marked Bindlib.box ->
expr Pos.marked Bindlib.box list ->
Pos.t ->
expr Pos.marked Bindlib.boxval make_let_in :
Var.t ->
typ Pos.marked ->
expr Pos.marked Bindlib.box ->
expr Pos.marked Bindlib.box ->
expr Pos.marked Bindlib.box