Type Alias chalk_recursive::UCanonicalGoal
source · pub type UCanonicalGoal<I> = UCanonical<InEnvironment<Goal<I>>>;
Aliased Type§
struct UCanonicalGoal<I> {
pub canonical: Canonical<InEnvironment<Goal<I>>>,
pub universes: usize,
}
Fields§
§canonical: Canonical<InEnvironment<Goal<I>>>
The wrapped Canonical
.
universes: usize
The number of universes that have been collapsed.
Implementations
§impl<T> UCanonical<T>where
T: HasInterner,
impl<T> UCanonical<T>where
T: HasInterner,
pub fn is_trivial_substitution(
&self,
interner: <T as HasInterner>::Interner,
canonical_subst: &Canonical<AnswerSubst<<T as HasInterner>::Interner>>,
) -> bool
pub fn is_trivial_substitution( &self, interner: <T as HasInterner>::Interner, canonical_subst: &Canonical<AnswerSubst<<T as HasInterner>::Interner>>, ) -> bool
Checks whether the universe canonical value is a trivial substitution (e.g. an identity substitution).
pub fn trivial_substitution(
&self,
interner: <T as HasInterner>::Interner,
) -> Substitution<<T as HasInterner>::Interner>
pub fn trivial_substitution( &self, interner: <T as HasInterner>::Interner, ) -> Substitution<<T as HasInterner>::Interner>
Creates an identity substitution.
Trait Implementations
§impl<I> IsCoinductive<I> for UCanonical<InEnvironment<Goal<I>>>where
I: Interner,
impl<I> IsCoinductive<I> for UCanonical<InEnvironment<Goal<I>>>where
I: Interner,
§fn 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.