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