···22 type t
33 type schematic
44 type meta
55- type subst = Map.t<schematic, t>
55+ type subst
66+ let mapSubst: (subst, t => t) => subst
77+ type gen
68 let substitute: (t, subst) => t
77- let unify: (t, t) => array<subst>
99+ let unify: (t, t, ~gen: gen=?) => array<subst>
810 // law: unify(a,b) == [{}] iff equivalent(a,b)
911 let equivalent: (t, t) => bool
1012 let substDeBruijn: (t, array<t>, ~from: int=?) => t
1113 let upshift: (t, int, ~from: int=?) => t
1212- type gen
1314 let fresh: (gen, ~replacing: meta=?) => schematic
1415 let seen: (gen, schematic) => unit
1516 let place: (schematic, ~scope: array<meta>) => t
···2526 type t
2627 let substitute: (t, Term.subst) => t
2728 let equivalent: (t, t) => bool
2828- let unify: (t, t) => array<Term.subst>
2929+ let unify: (t, t, ~gen: Term.gen=?) => array<Term.subst>
2930 let substDeBruijn: (t, array<Term.t>, ~from: int=?) => t
3031 let upshift: (t, int, ~from: int=?) => t
3132 let parse: (string, ~scope: array<Term.meta>, ~gen: Term.gen=?) => result<(t, string), string>