sig
type id = string
type op2 = Typeinf_syntax.op2 = LT | GT | Eq | Add | Sub | Mul
type const = Typeinf_syntax.const = Int of int | Bool of bool
module Implicit :
sig
type exp =
Typeinf_syntax.Implicit.exp =
Const of Typeinf.const
| Op2 of Typeinf.op2 * Typeinf.Implicit.exp * Typeinf.Implicit.exp
| If of Typeinf.Implicit.exp * Typeinf.Implicit.exp *
Typeinf.Implicit.exp
| Id of Typeinf.id
| Let of Typeinf.id * Typeinf.Implicit.exp * Typeinf.Implicit.exp
| Fun of Typeinf.id * Typeinf.Implicit.exp
| Fix of Typeinf.id * Typeinf.Implicit.exp
| App of Typeinf.Implicit.exp * Typeinf.Implicit.exp
| Empty
| Cons of Typeinf.Implicit.exp * Typeinf.Implicit.exp
| Head of Typeinf.Implicit.exp
| Tail of Typeinf.Implicit.exp
| IsEmpty of Typeinf.Implicit.exp
| Pair of Typeinf.Implicit.exp * Typeinf.Implicit.exp
| ProjL of Typeinf.Implicit.exp
| ProjR of Typeinf.Implicit.exp
val from_file : string -> Typeinf.Implicit.exp
val from_string : string -> Typeinf.Implicit.exp
end
module Explicit :
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
end