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

judgment_fn! {
    fn prove_normalize_via(
        _decls: Program,
        env: Env,
        assumptions: Predicates,
        via: Predicate,
        goal: Parameter,
    ) => Constrained<Parameter> {
        /* rules omitted */
    }
}

Source: crates/formality-rust/src/prove/prove_normalize.rs:55

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, AtomicPredicate::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, AtomicPredicate::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, AtomicPredicate::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")
1081(prove_normalize_via(decls, env, assumptions, AtomicPredicate::Equals(b, a), goal) => Constrained(b, c))
forall
LineCoverageSource
114✗(scope(enter_existentially_with_constraints(env, binder) => (env, via1)) with(p, c)
(prove_normalize_via(decls, env, assumptions, via1, goal) => Constrained(p, c)))
──────── ("forall")
117✗(prove_normalize_via(decls, env, assumptions, Predicate::ForAll(binder), goal) => Constrained(p, c))
implies
LineCoverageSource
121✗(prove_normalize_via(decls, env, assumptions, wc_consequence, goal) => Constrained(p, c))
122✗(prove_after(decls, c, assumptions, wc_condition) => c)
123N/A(let p = c.substitution().apply(p))
──────── ("implies")
125✗(prove_normalize_via(decls, env, assumptions, Predicate::Implies(wc_condition, wc_consequence), goal) => Constrained(p, c))

How to read this page