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, WcData::ForAll(binder)) => c.pop_subst(&subst))
implies
LineCoverageSource
413(prove_wc(decls, env, (assumptions, p1), p2) => c)
──────── ("implies")
434(prove_wc(decls, env, assumptions, WcData::Implies(p1, p2)) => c)
assumption - predicate
LineCoverageSource
47(a in assumptions)
4811(prove_via(decls, env, assumptions, a, goal) => c)
──────── ("assumption - predicate")
5013(prove_wc(decls, env, assumptions, WcData::Predicate(goal)) => c)
assumption - relation
LineCoverageSource
53(a in assumptions)
5418(prove_via(decls, env, assumptions, a, goal) => c)
──────── ("assumption - relation")
568(prove_wc(decls, env, assumptions, WcData::Relation(goal)) => c)
positive impl
LineCoverageSource
63(i in decls.impl_decls(&trait_ref.trait_id))
66N/A(let (env, subst) = env.existential_substitution(&i.binder))
67N/A(let i = i.binder.instantiate_with(&subst).unwrap())
71N/A(let t = decls.trait_decl(&i.trait_ref.trait_id).binder.instantiate_with(&i.trait_ref.parameters).unwrap())
78N/A(let co_assumptions = (assumptions, trait_ref))
797(prove(decls, env, co_assumptions, Wcs::all_eq(&trait_ref.parameters, &i.trait_ref.parameters)) => c)
802(prove_after(decls, c, co_assumptions, &i.where_clause) => c)
864(prove_after(decls, c, assumptions, &t.where_clause) => c)
──────── ("positive impl")
88153(prove_wc(decls, env, assumptions, Predicate::IsImplemented(trait_ref)) => c.pop_subst(&subst))
coherence / remote impl
LineCoverageSource
92(if env.bias() == Bias::Completeness)
93(may_be_remote(decls, env, assumptions, trait_ref) => c)
──────── ("coherence / remote impl")
95(prove_wc(decls, env, assumptions, Predicate::IsImplemented(trait_ref)) => c)
negative impl
LineCoverageSource
99(i in decls.neg_impl_decls(&trait_ref.trait_id))
100N/A(let (env, subst) = env.existential_substitution(&i.binder))
101N/A(let i = i.binder.instantiate_with(&subst).unwrap())
102(prove(decls, env, assumptions, Wcs::all_eq(&trait_ref.parameters, &i.trait_ref.parameters)) => c)
103(prove_after(decls, c, assumptions, &i.where_clause) => c)
──────── ("negative impl")
1053(prove_wc(decls, env, assumptions, Predicate::NotImplemented(trait_ref)) => c.pop_subst(&subst))
alias eq
LineCoverageSource
109(prove_eq(decls, env, assumptions, alias_ty, ty) => c)
──────── ("alias eq")
1111(prove_wc(decls, env, assumptions, Predicate::AliasEq(alias_ty, ty)) => c)
trait implied bound
LineCoverageSource
11514(ti in decls.trait_invariants())
116N/A(let (env, subst) = env.existential_substitution(&ti.binder))
117N/A(let ti = ti.binder.instantiate_with(&subst).unwrap())
1184(prove_via(decls, env, assumptions, &ti.where_clause, trait_ref) => c)
1193(prove_after(decls, c, assumptions, &ti.trait_ref) => c)
──────── ("trait implied bound")
1211(prove_wc(decls, env, assumptions, Predicate::IsImplemented(trait_ref)) => c.pop_subst(&subst))
eq
LineCoverageSource
12515(prove_eq(decls, env, assumptions, a, b) => c)
──────── ("eq")
127165(prove_wc(decls, env, assumptions, Relation::Equals(a, b)) => c)
subtype
LineCoverageSource
1315(prove_sub(decls, env, assumptions, a, b) => c)
──────── ("subtype")
13399(prove_wc(decls, env, assumptions, WcData::Relation(Relation::Sub(a, b))) => c)
trait well formed
LineCoverageSource
1371(for_all(decls, env, assumptions, &trait_ref.parameters, &prove_wf) => c)
138N/A(let t = decls.trait_decl(&trait_ref.trait_id))
139N/A(let t = t.binder.instantiate_with(&trait_ref.parameters).unwrap())
1402(prove_after(decls, c, assumptions, &t.where_clause) => c)
──────── ("trait well formed")
14219(prove_wc(decls, env, assumptions, Predicate::WellFormedTraitRef(trait_ref)) => c)
trait ref is local
LineCoverageSource
1466(is_local_trait_ref(decls, env, assumptions, trait_ref) => c)
──────── ("trait ref is local")
148145(prove_wc(decls, env, assumptions, Predicate::IsLocal(trait_ref)) => c)
outlives
LineCoverageSource
15210(prove_outlives(decls, env, assumptions, a, b) => c)
──────── ("outlives")
154130(prove_wc(decls, env, assumptions, Relation::Outlives(a, b)) => c)
parameter well formed
LineCoverageSource
1593(prove_wf(decls, env, assumptions, p) => c)
──────── ("parameter well formed")
161138(prove_wc(decls, env, assumptions, Relation::WellFormed(p)) => c)
const has ty
LineCoverageSource
1651(prove_const_has_type(decls, env, assumptions, constant) => (ty_constant, c))
1661(prove_after(decls, c, assumptions, Relation::equals(ty_constant, ty)) => c)
──────── ("const has ty")
1683(prove_wc(decls, env, assumptions, Predicate::ConstHasType(constant, ty)) => c)