Trait chalk_solve::coinductive_goal::IsCoinductive
source · pub trait IsCoinductive<I: Interner> {
// Required method
fn is_coinductive(&self, db: &dyn RustIrDatabase<I>) -> bool;
}
Required Methods§
sourcefn is_coinductive(&self, db: &dyn RustIrDatabase<I>) -> bool
fn is_coinductive(&self, db: &dyn RustIrDatabase<I>) -> bool
A goal G has coinductive semantics if proving G is allowed to
assume G is true (very roughly speaking). In the case of
chalk-ir, this is true for goals of the form T: AutoTrait
,
or if it is of the form WellFormed(T: Trait)
where Trait
is any trait. The latter is needed for dealing with WF
requirements and cyclic traits, which generates cycles in the
proof tree which must not be rejected but instead must be
treated as a success.