···33 type schematic
44 type meta
55 type subst = Map.t<schematic, t>
66+ type gen
67 let substitute: (t, subst) => t
77- let unify: (t, t) => array<subst>
88+ let unify: (t, t, ~gen: gen=?) => array<subst>
89 // law: unify(a,b) == [{}] iff equivalent(a,b)
910 let equivalent: (t, t) => bool
1011 let substDeBruijn: (t, array<t>, ~from: int=?) => t
1112 let upshift: (t, int, ~from: int=?) => t
1212- type gen
1313 let fresh: (gen, ~replacing: meta=?) => schematic
1414 let seen: (gen, schematic) => unit
1515 let place: (schematic, ~scope: array<meta>) => t
···2525 type t
2626 let substitute: (t, Term.subst) => t
2727 let equivalent: (t, t) => bool
2828- let unify: (t, t) => array<Term.subst>
2828+ let unify: (t, t, ~gen: Term.gen=?) => array<Term.subst>
2929 let substDeBruijn: (t, array<Term.t>, ~from: int=?) => t
3030 let upshift: (t, int, ~from: int=?) => t
3131 let parse: (string, ~scope: array<Term.meta>, ~gen: Term.gen=?) => result<(t, string), string>