sig
type metavar = int * string
type typ =
Typeinf_syntax.Explicit.typ =
TMetavar of Typeinf.Explicit.metavar
| TInt
| TBool
| TFun of Typeinf.Explicit.typ * Typeinf.Explicit.typ
| TPair of Typeinf.Explicit.typ * Typeinf.Explicit.typ
| TList of Typeinf.Explicit.typ
type exp =
Typeinf_syntax.Explicit.exp =
Const of Typeinf.const
| Op2 of Typeinf.op2 * Typeinf.Explicit.exp * Typeinf.Explicit.exp
| If of Typeinf.Explicit.exp * Typeinf.Explicit.exp *
Typeinf.Explicit.exp
| Id of Typeinf.id
| Let of Typeinf.id * Typeinf.Explicit.exp * Typeinf.Explicit.exp
| Fun of Typeinf.id * Typeinf.Explicit.typ * Typeinf.Explicit.exp
| Fix of Typeinf.id * Typeinf.Explicit.typ * Typeinf.Explicit.exp
| App of Typeinf.Explicit.exp * Typeinf.Explicit.exp
| Empty of Typeinf.Explicit.typ
| Cons of Typeinf.Explicit.exp * Typeinf.Explicit.exp
| Head of Typeinf.Explicit.exp
| Tail of Typeinf.Explicit.exp
| IsEmpty of Typeinf.Explicit.exp
| Pair of Typeinf.Explicit.exp * Typeinf.Explicit.exp
| ProjL of Typeinf.Explicit.exp
| ProjR of Typeinf.Explicit.exp
val string_of_exp : Typeinf.Explicit.exp -> string
val print_exp : Typeinf.Explicit.exp -> unit
val string_of_typ : Typeinf.Explicit.typ -> string
val print_typ : Typeinf.Explicit.typ -> unit
end