pub enum EqProof {
PRule {
rule_name: Rc<str>,
subst: DenseIdMap<VariableId, TermId>,
body_pfs: Vec<Premise>,
result_lhs: TermId,
result_rhs: TermId,
},
PRefl {
t_ok_pf: TermProofId,
t: TermId,
},
PSym {
eq_pf: EqProofId,
},
PTrans {
pfxy: EqProofId,
pfyz: EqProofId,
},
PCong(CongProof),
}Variants§
PRule
proves a Proposition based on a rule application the subsitution gives the mapping from variables to terms the body_pfs gives proofs for each of the conditions in the query of the rule the act_pf gives a location in the action of the proposition
Fields
§
subst: DenseIdMap<VariableId, TermId>PRefl
A term is equal to itself- proves the proposition t = t
PSym
The symmetric equality of eq_pf
PTrans
PCong(CongProof)
Proves f(x1, y1, …) = f(x2, y2, …) where f is fun_sym A proof via congruence- one proof for each child of the term pf_f_args_ok is a proof that the term with the lhs children is valid
Trait Implementations§
impl Eq for EqProof
impl StructuralPartialEq for EqProof
Auto Trait Implementations§
impl Freeze for EqProof
impl RefUnwindSafe for EqProof
impl !Send for EqProof
impl !Sync for EqProof
impl Unpin for EqProof
impl UnwindSafe for EqProof
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more