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 overlap_check_impl at crates/formality-rust/src/check/coherence.rs:64

Signature:

overlap_check_impl(program: Program, impl_a: TraitImpl, impl_b: TraitImpl) => ()

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.

same impl
LineCoverageSource
726(if impl_a == impl_b)
──────── ("same impl")
74127(overlap_check_impl(_program, impl_a, impl_b) => ())
different trait
LineCoverageSource
796(if impl_a.trait_id() != impl_b.trait_id())
──────── ("different trait")
81115(overlap_check_impl(_program, impl_a, impl_b) => ())
not goal
LineCoverageSource
102✗(if impl_a != impl_b)
103✗(if impl_a.trait_id() == impl_b.trait_id())
104N/A(let (env, a) = Env::default().instantiate_universally(&impl_a.binder))
105N/A(let (env, b) = env.instantiate_universally(&impl_b.binder))
1066(prove_not_goal(program, env, (), (Wcs::all_eq(&a.trait_ref().parameters, &b.trait_ref().parameters), &a.where_clauses, &b.where_clauses)) => ())
──────── ("not goal")
108115(overlap_check_impl(program, impl_a, impl_b) => ())
inverted
LineCoverageSource
114✗(if impl_a != impl_b)
115✗(if impl_a.trait_id() == impl_b.trait_id())
116N/A(let (env, a) = Env::default().instantiate_universally(&impl_a.binder))
117N/A(let (env, b) = env.instantiate_universally(&impl_b.binder))
1181(wc in a.where_clauses.iter().chain(&b.where_clauses).flat_map(|wc| wc.invert()))
1195(prove_goal(program, env, (Wcs::all_eq(&a.trait_ref().parameters, &b.trait_ref().parameters), &a.where_clauses, &b.where_clauses), wc) => ())
──────── ("inverted")
1211(overlap_check_impl(program, impl_a, impl_b) => ())