Enum chalk_ir::GoalData [−][src]
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
SubtypeGoal(SubtypeGoal<I>)
Make one thing a subtype of another; 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> Fold<I> for GoalData<I>
[src]
type Result = GoalData<I>
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>,
outer_binder: DebruijnIndex
) -> Fallible<Self::Result> where
I: 'i,
[src]
self,
folder: &mut dyn Folder<'i, I>,
outer_binder: DebruijnIndex
) -> Fallible<Self::Result> where
I: '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]
pub 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, B>(
&self,
visitor: &mut dyn Visitor<'i, I, BreakTy = B>,
outer_binder: DebruijnIndex
) -> ControlFlow<B> where
I: 'i,
[src]
&self,
visitor: &mut dyn Visitor<'i, I, BreakTy = B>,
outer_binder: DebruijnIndex
) -> ControlFlow<B> 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,
pub 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
T: Zip<I> + HasInterner<Interner = I> + ?Sized,
I: Interner,
[src]
T: Zip<I> + HasInterner<Interner = I> + ?Sized,
I: Interner,
pub fn could_match(&Self, &I, &dyn UnificationDatabase<I>, &T) -> bool
[src]
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
T: Fold<I>,
I: Interner,
[src]
T: Fold<I>,
I: Interner,
pub fn shifted_in(Self, &I) -> <T as Fold<I>>::Result
[src]
pub fn shifted_in_from(Self, &I, DebruijnIndex) -> <T as Fold<I>>::Result
[src]
pub fn shifted_out_to(
Self,
&I,
DebruijnIndex
) -> Result<<T as Fold<I>>::Result, NoSolution>
[src]
Self,
&I,
DebruijnIndex
) -> Result<<T as Fold<I>>::Result, NoSolution>
pub fn shifted_out(Self, &I) -> Result<<T as Fold<I>>::Result, NoSolution>
[src]
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub 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.
pub 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.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T, I> VisitExt<I> for T where
T: Visit<I>,
I: Interner,
[src]
T: Visit<I>,
I: Interner,