Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Judgment prove_normalize_via at crates/formality-rust/src/prove/prove/prove/prove_normalize.rs:55

Signature:

prove_normalize_via(_decls: Program, env: Env, assumptions: Wcs, via: Wc, goal: Parameter,) => Constrained<Parameter>

No applicable rule observed: at least one test exercised this judgment with no matching rule.

The number on each rule’s conclusion is positive coverage; the number on each premise is negative coverage. Click a number to browse the tests.

var-axiom-l
LineCoverageSource
72(if let Some(Variable::ExistentialVar(v_a)) = a.downcast())
73(if v_goal == v_a)
──────── ("var-axiom-l")
75(prove_normalize_via(_decls, env, _assumptions, Relation::Equals(a, b), Variable::ExistentialVar(v_goal)) => Constrained::none(env, b))
var-axiom-r
LineCoverageSource
79(if let Some(Variable::ExistentialVar(v_a)) = a.downcast())
80(if v_goal == v_a)
──────── ("var-axiom-r")
82(prove_normalize_via(_decls, env, _assumptions, Relation::Equals(b, a), Variable::ExistentialVar(v_goal)) => Constrained::none(env, b))
axiom-l
LineCoverageSource
94(if let None = goal.downcast::<ExistentialVar>())
95(if goal != b)
961(prove_syntactically_eq(decls, env, assumptions, a, goal) => c)
97N/A(let b = c.substitution().apply(b))
──────── ("axiom-l")
993(prove_normalize_via(decls, env, assumptions, Relation::Equals(a, b), goal) => Constrained(b, c))
axiom-r
LineCoverageSource
103(if let None = goal.downcast::<ExistentialVar>())
104(if goal != b)
105(prove_syntactically_eq(decls, env, assumptions, a, goal) => c)
106N/A(let b = c.substitution().apply(b))
──────── ("axiom-r")
108(prove_normalize_via(decls, env, assumptions, Relation::Equals(b, a), goal) => Constrained(b, c))
forall
LineCoverageSource
114N/A(let (env, subst) = env.existential_substitution(binder))
115N/A(let via1 = binder.instantiate_with(&subst).unwrap())
116(prove_normalize_via(decls, env, assumptions, via1, goal) => Constrained(p, c))
117N/A(let c = c.pop_subst(&subst))
118(assert c.env().encloses(&p))
──────── ("forall")
120(prove_normalize_via(decls, env, assumptions, WcData::ForAll(binder), goal) => Constrained(p, c))
implies
LineCoverageSource
124(prove_normalize_via(decls, env, assumptions, wc_consequence, goal) => Constrained(p, c))
125(prove_after(decls, c, assumptions, wc_condition) => c)
126N/A(let p = c.substitution().apply(p))
──────── ("implies")
128(prove_normalize_via(decls, env, assumptions, WcData::Implies(wc_condition, wc_consequence), goal) => Constrained(p, c))