[−][src]Enum chalk_ir::GoalData
A general goal; this is the full range of questions you can pose to Chalk.
Variants
Quantified(QuantifierKind, Binders<Goal<I>>)
Introduces a binding at depth 0, shifting other bindings up (deBruijn index).
Implies(ProgramClauses<I>, Goal<I>)
All(Goals<I>)
Not(Goal<I>)
EqGoal(EqGoal<I>)
Make two things equal; the rules for doing so are well known to the logic
DomainGoal(DomainGoal<I>)
A "domain goal" indicates some base sort of goal that can be proven via program clauses
CannotProve(())
Indicates something that cannot be proven to be true or false
definitively. This can occur with overflow but also with
unifications of skolemized variables like forall<X,Y> { X = Y }
. Of course, that statement is false, as there exist types
X, Y where X = Y
is not true. But we treat it as "cannot
prove" so that forall<X,Y> { not { X = Y } }
also winds up
as cannot prove.
(TOTAL HACK: Having a unit result makes some of our macros work better.)
Implementations
impl<I: Interner> GoalData<I>
[src]
Trait Implementations
impl<I: Clone + Interner> Clone for GoalData<I>
[src]
impl<I: Interner> Debug for GoalData<I>
[src]
impl<I: Eq + Interner> Eq for GoalData<I>
[src]
impl<I: Interner, _TI> Fold<I, _TI> for GoalData<I> where
_TI: TargetInterner<I>,
[src]
_TI: TargetInterner<I>,
type Result = GoalData<_TI>
The type of value that will be produced once folding is done. Typically this is Self
, unless Self
contains borrowed values, in which case owned values are produced (for example, one can fold over a &T
value where T: Fold
, in which case you get back a T
, not a &T
). Read more
fn fold_with<'i>(
&self,
folder: &mut dyn Folder<'i, I, _TI>,
outer_binder: DebruijnIndex
) -> Fallible<Self::Result> where
I: 'i,
_TI: 'i,
[src]
&self,
folder: &mut dyn Folder<'i, I, _TI>,
outer_binder: DebruijnIndex
) -> Fallible<Self::Result> where
I: 'i,
_TI: 'i,
impl<I: Interner> HasInterner for GoalData<I>
[src]
type Interner = I
impl<I: Hash + Interner> Hash for GoalData<I>
[src]
fn hash<__H: Hasher>(&self, state: &mut __H)
[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl<I: PartialEq + Interner> PartialEq<GoalData<I>> for GoalData<I>
[src]
impl<I: Interner> StructuralEq for GoalData<I>
[src]
impl<I: Interner> StructuralPartialEq for GoalData<I>
[src]
impl<I: Interner> Visit<I> for GoalData<I>
[src]
fn visit_with<'i, R: VisitResult>(
&self,
visitor: &mut dyn Visitor<'i, I, Result = R>,
outer_binder: DebruijnIndex
) -> R where
I: 'i,
[src]
&self,
visitor: &mut dyn Visitor<'i, I, Result = R>,
outer_binder: DebruijnIndex
) -> R where
I: 'i,
impl<I: Interner> Zip<I> for GoalData<I>
[src]
Auto Trait Implementations
impl<I> RefUnwindSafe for GoalData<I> where
<I as Interner>::DefId: RefUnwindSafe,
<I as Interner>::InternedGenericArg: RefUnwindSafe,
<I as Interner>::InternedGoal: RefUnwindSafe,
<I as Interner>::InternedGoals: RefUnwindSafe,
<I as Interner>::InternedLifetime: RefUnwindSafe,
<I as Interner>::InternedProgramClauses: RefUnwindSafe,
<I as Interner>::InternedSubstitution: RefUnwindSafe,
<I as Interner>::InternedType: RefUnwindSafe,
<I as Interner>::InternedVariableKinds: RefUnwindSafe,
<I as Interner>::DefId: RefUnwindSafe,
<I as Interner>::InternedGenericArg: RefUnwindSafe,
<I as Interner>::InternedGoal: RefUnwindSafe,
<I as Interner>::InternedGoals: RefUnwindSafe,
<I as Interner>::InternedLifetime: RefUnwindSafe,
<I as Interner>::InternedProgramClauses: RefUnwindSafe,
<I as Interner>::InternedSubstitution: RefUnwindSafe,
<I as Interner>::InternedType: RefUnwindSafe,
<I as Interner>::InternedVariableKinds: RefUnwindSafe,
impl<I> Send for GoalData<I> where
<I as Interner>::DefId: Send,
<I as Interner>::InternedGenericArg: Send,
<I as Interner>::InternedGoal: Send,
<I as Interner>::InternedGoals: Send,
<I as Interner>::InternedLifetime: Send,
<I as Interner>::InternedProgramClauses: Send,
<I as Interner>::InternedSubstitution: Send,
<I as Interner>::InternedType: Send,
<I as Interner>::InternedVariableKinds: Send,
<I as Interner>::DefId: Send,
<I as Interner>::InternedGenericArg: Send,
<I as Interner>::InternedGoal: Send,
<I as Interner>::InternedGoals: Send,
<I as Interner>::InternedLifetime: Send,
<I as Interner>::InternedProgramClauses: Send,
<I as Interner>::InternedSubstitution: Send,
<I as Interner>::InternedType: Send,
<I as Interner>::InternedVariableKinds: Send,
impl<I> Sync for GoalData<I> where
<I as Interner>::DefId: Sync,
<I as Interner>::InternedGenericArg: Sync,
<I as Interner>::InternedGoal: Sync,
<I as Interner>::InternedGoals: Sync,
<I as Interner>::InternedLifetime: Sync,
<I as Interner>::InternedProgramClauses: Sync,
<I as Interner>::InternedSubstitution: Sync,
<I as Interner>::InternedType: Sync,
<I as Interner>::InternedVariableKinds: Sync,
<I as Interner>::DefId: Sync,
<I as Interner>::InternedGenericArg: Sync,
<I as Interner>::InternedGoal: Sync,
<I as Interner>::InternedGoals: Sync,
<I as Interner>::InternedLifetime: Sync,
<I as Interner>::InternedProgramClauses: Sync,
<I as Interner>::InternedSubstitution: Sync,
<I as Interner>::InternedType: Sync,
<I as Interner>::InternedVariableKinds: Sync,
impl<I> Unpin for GoalData<I> where
<I as Interner>::DefId: Unpin,
<I as Interner>::InternedGenericArg: Unpin,
<I as Interner>::InternedGoal: Unpin,
<I as Interner>::InternedGoals: Unpin,
<I as Interner>::InternedLifetime: Unpin,
<I as Interner>::InternedProgramClauses: Unpin,
<I as Interner>::InternedSubstitution: Unpin,
<I as Interner>::InternedType: Unpin,
<I as Interner>::InternedVariableKinds: Unpin,
<I as Interner>::DefId: Unpin,
<I as Interner>::InternedGenericArg: Unpin,
<I as Interner>::InternedGoal: Unpin,
<I as Interner>::InternedGoals: Unpin,
<I as Interner>::InternedLifetime: Unpin,
<I as Interner>::InternedProgramClauses: Unpin,
<I as Interner>::InternedSubstitution: Unpin,
<I as Interner>::InternedType: Unpin,
<I as Interner>::InternedVariableKinds: Unpin,
impl<I> UnwindSafe for GoalData<I> where
<I as Interner>::DefId: UnwindSafe,
<I as Interner>::InternedGenericArg: UnwindSafe,
<I as Interner>::InternedGoal: UnwindSafe,
<I as Interner>::InternedGoals: UnwindSafe,
<I as Interner>::InternedLifetime: UnwindSafe,
<I as Interner>::InternedProgramClauses: UnwindSafe,
<I as Interner>::InternedSubstitution: UnwindSafe,
<I as Interner>::InternedType: UnwindSafe,
<I as Interner>::InternedVariableKinds: UnwindSafe,
<I as Interner>::DefId: UnwindSafe,
<I as Interner>::InternedGenericArg: UnwindSafe,
<I as Interner>::InternedGoal: UnwindSafe,
<I as Interner>::InternedGoals: UnwindSafe,
<I as Interner>::InternedLifetime: UnwindSafe,
<I as Interner>::InternedProgramClauses: UnwindSafe,
<I as Interner>::InternedSubstitution: UnwindSafe,
<I as Interner>::InternedType: UnwindSafe,
<I as Interner>::InternedVariableKinds: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Cast for T
[src]
fn cast<U>(self, interner: &U::Interner) -> U where
Self: CastTo<U>,
U: HasInterner,
[src]
Self: CastTo<U>,
U: HasInterner,
impl<T, I> CouldMatch<T> for T where
I: Interner,
T: Zip<I> + HasInterner<Interner = I> + ?Sized,
[src]
I: Interner,
T: Zip<I> + HasInterner<Interner = I> + ?Sized,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, I> Shift<I> for T where
I: Interner,
T: Fold<I, I>,
[src]
I: Interner,
T: Fold<I, I>,
fn shifted_in(&Self, &I) -> <T as Fold<I, I>>::Result
[src]
fn shifted_in_from(&Self, &I, DebruijnIndex) -> <T as Fold<I, I>>::Result
[src]
fn shifted_out_to(
&Self,
&I,
DebruijnIndex
) -> Result<<T as Fold<I, I>>::Result, NoSolution>
[src]
&Self,
&I,
DebruijnIndex
) -> Result<<T as Fold<I, I>>::Result, NoSolution>
fn shifted_out(&Self, &I) -> Result<<T as Fold<I, I>>::Result, NoSolution>
[src]
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T, I> VisitExt<I> for T where
I: Interner,
T: Visit<I>,
[src]
I: Interner,
T: Visit<I>,