···66module Make = (Term: TERM, Judgment: JUDGMENT with module Term := Term) => {
77 type rec t = {vars: array<Term.meta>, premises: array<t>, conclusion: Judgment.t}
88 let rec substitute = (rule: t, subst: Judgment.subst) => {
99- let subst' = subst->Judgment.mapSubst(v => v->Judgment.upshiftSubstCodom(Array.length(rule.vars)))
99+ let subst' =
1010+ subst->Judgment.mapSubst(v => v->Judgment.upshiftSubstCodom(Array.length(rule.vars)))
1011 {
1112 vars: rule.vars,
1213 premises: rule.premises->Array.map(premise => premise->substitute(subst')),
+2-2
tests/HOTermTest.res
···313313 t->testUnify(c, b, ~subst=emptySubst->substAdd(6, t->Util.parse("(x. S \\0)")))
314314 })
315315 t->block("tests from induction examples", t => {
316316- let r = ("((?0 \\0) (?1 \\0))")
317317- let g = ("(f \\0)")
316316+ let r = "((?0 \\0) (?1 \\0))"
317317+ let g = "(f \\0)"
318318 // what it's currently doing:
319319 // 0 := (x. y. f x)
320320 // 1 := doesn't matter