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

judgment_fn! {
    /// Normalize `p` one step, returning a set of constraints and a new parameter `q` that is
    /// semantically equivalent to `p`. e.g., if p is `<Vec<T> as IntoIterator>::Item`, this would
    /// return `T`.
    pub fn prove_normalize(
        _decls: Program,
        env: Env,
        assumptions: Predicates,
        p: Parameter,
    ) => Constrained<Parameter> {
        /* rules omitted */
    }
}

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

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.

normalize-via-assumption
LineCoverageSource
35✗(a in assumptions)
3614(prove_normalize_via(decls, env, assumptions, a, goal) => c)
──────── ("normalize-via-assumption")
384(prove_normalize(decls, env, assumptions, goal) => c)
normalize-via-impl
LineCoverageSource
421(decl in decls.alias_eq_decls(&a.name))
43✗(scope(enter_existentially_with_constraints(env, &decl.binder)
=> (env, AliasEqDeclBoundData { alias: AliasTy { name, parameters }, ty, where_clause })) with(ty, c)
(assert a.name == *name)
(prove(decls, env, assumptions, Predicates::all_eq(&a.parameters, &parameters)) => c)
(prove_after(decls, c, assumptions, &where_clause) => c)
(let ty = c.substitution().apply(ty)))
──────── ("normalize-via-impl")
5055(prove_normalize(decls, env, assumptions, Ty::AliasTy(a)) => Constrained(ty, c))

How to read this page