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_wc at crates/formality-rust/src/prove/prove_wc.rs:21

Signature:

prove_wc(_decls: Program, env: Env, assumptions: Wcs, goal: Wc,) => Constraints

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.

forall
LineCoverageSource
33N/A(let (env, subst) = env.universal_substitution(binder))
34N/A(let p1 = binder.instantiate_with(&subst).unwrap())
358(prove_wc(decls, env, assumptions, p1) => c)
──────── ("forall")
3712(prove_wc(decls, env, assumptions, Wc::ForAll(binder)) => c.pop_subst(&subst))
implies
LineCoverageSource
413(prove_wc(decls, env, (assumptions, p1), p2) => c)
──────── ("implies")
434(prove_wc(decls, env, assumptions, Wc::Implies(p1, p2)) => c)
assumption
LineCoverageSource
47(a in assumptions)
4821(prove_via(decls, env, assumptions, a, goal) => c)
──────── ("assumption")
5019(prove_wc(decls, env, assumptions, Wc::Predicate(goal)) => c)
positive impl
LineCoverageSource
57(i in decls.impl_decls(&trait_ref.trait_id))
60N/A(let (env, subst) = env.existential_substitution(&i.binder))
61N/A(let i = i.binder.instantiate_with(&subst).unwrap())
65N/A(let t = decls.trait_decl(&i.trait_ref.trait_id).binder.instantiate_with(&i.trait_ref.parameters).unwrap())
72N/A(let co_assumptions = (assumptions, trait_ref))
737(prove(decls, env, co_assumptions, Wcs::all_eq(&trait_ref.parameters, &i.trait_ref.parameters)) => c)
742(prove_after(decls, c, co_assumptions, &i.where_clause) => c)
804(prove_after(decls, c, assumptions, &t.where_clause) => c)
──────── ("positive impl")
82136(prove_wc(decls, env, assumptions, Predicate::IsImplemented(trait_ref)) => c.pop_subst(&subst))
coherence / remote impl
LineCoverageSource
86(if env.bias() == Bias::Completeness)
87(may_be_remote(decls, env, assumptions, trait_ref) => c)
──────── ("coherence / remote impl")
89(prove_wc(decls, env, assumptions, Predicate::IsImplemented(trait_ref)) => c)
negative impl
LineCoverageSource
93(i in decls.neg_impl_decls(&trait_ref.trait_id))
94N/A(let (env, subst) = env.existential_substitution(&i.binder))
95N/A(let i = i.binder.instantiate_with(&subst).unwrap())
96(prove(decls, env, assumptions, Wcs::all_eq(&trait_ref.parameters, &i.trait_ref.parameters)) => c)
97(prove_after(decls, c, assumptions, &i.where_clause) => c)
──────── ("negative impl")
993(prove_wc(decls, env, assumptions, Predicate::NotImplemented(trait_ref)) => c.pop_subst(&subst))
alias eq
LineCoverageSource
103(prove_eq(decls, env, assumptions, alias_ty, ty) => c)
──────── ("alias eq")
1051(prove_wc(decls, env, assumptions, Predicate::AliasEq(alias_ty, ty)) => c)
trait implied bound
LineCoverageSource
10914(ti in decls.trait_invariants())
110N/A(let (env, subst) = env.existential_substitution(&ti.binder))
111N/A(let ti = ti.binder.instantiate_with(&subst).unwrap())
1124(prove_via(decls, env, assumptions, &ti.where_clause, trait_ref) => c)
1133(prove_after(decls, c, assumptions, &ti.trait_ref) => c)
──────── ("trait implied bound")
1151(prove_wc(decls, env, assumptions, Predicate::IsImplemented(trait_ref)) => c.pop_subst(&subst))
eq
LineCoverageSource
11915(prove_eq(decls, env, assumptions, a, b) => c)
──────── ("eq")
121148(prove_wc(decls, env, assumptions, Predicate::Equals(a, b)) => c)
subtype
LineCoverageSource
1255(prove_sub(decls, env, assumptions, a, b) => c)
──────── ("subtype")
12782(prove_wc(decls, env, assumptions, Predicate::Sub(a, b)) => c)
trait well formed
LineCoverageSource
1311(for_all(decls, env, assumptions, &trait_ref.parameters, &prove_wf) => c)
132N/A(let t = decls.trait_decl(&trait_ref.trait_id))
133N/A(let t = t.binder.instantiate_with(&trait_ref.parameters).unwrap())
1342(prove_after(decls, c, assumptions, &t.where_clause) => c)
──────── ("trait well formed")
13619(prove_wc(decls, env, assumptions, Predicate::WellFormedTraitRef(trait_ref)) => c)
trait ref is local
LineCoverageSource
1407(is_local_trait_ref(decls, env, assumptions, trait_ref) => c)
──────── ("trait ref is local")
142128(prove_wc(decls, env, assumptions, Predicate::IsLocal(trait_ref)) => c)
outlives
LineCoverageSource
1467(prove_outlives(decls, env, assumptions, a, b) => c)
──────── ("outlives")
148113(prove_wc(decls, env, assumptions, Predicate::Outlives(a, b)) => c)
parameter well formed
LineCoverageSource
1533(prove_wf(decls, env, assumptions, p) => c)
──────── ("parameter well formed")
155121(prove_wc(decls, env, assumptions, Predicate::WellFormed(p)) => c)
const has ty
LineCoverageSource
1591(prove_const_has_type(decls, env, assumptions, constant) => (ty_constant, c))
1601(prove_after(decls, c, assumptions, Predicate::equals(ty_constant, ty)) => c)
──────── ("const has ty")
1623(prove_wc(decls, env, assumptions, Predicate::ConstHasType(constant, ty)) => c)