[−][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>)
A goal that holds given some clauses (like an if-statement).
All(Goals<I>)
List of goals that all should hold.
Not(Goal<I>)
Negation: the inner goal should not hold.
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
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.
Implementations
impl<I: Interner> GoalData<I>
[src]
Trait Implementations
impl<I: Clone + Interner> Clone for GoalData<I>
[src]
impl<I: Interner> Copy for GoalData<I> where
I::InternedType: Copy,
I::InternedLifetime: Copy,
I::InternedGenericArg: Copy,
I::InternedSubstitution: Copy,
I::InternedGoal: Copy,
I::InternedGoals: Copy,
I::InternedProgramClauses: Copy,
I::InternedVariableKinds: Copy,
[src]
I::InternedType: Copy,
I::InternedLifetime: Copy,
I::InternedGenericArg: Copy,
I::InternedSubstitution: Copy,
I::InternedGoal: Copy,
I::InternedGoals: Copy,
I::InternedProgramClauses: Copy,
I::InternedVariableKinds: Copy,
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
The interner associated with the type.
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>,