pub enum ProofRule {
Show 19 variants
Conjunction,
DisjunctionCheck {
detail: String,
},
DisjunctionIntro {
side: String,
},
Negation,
ModalPassthrough {
kind: String,
},
ExistsWitness {
var: String,
term: LogicalTerm,
},
ExistsFailed,
ForallVacuous,
ForallVerified {
entities: Vec<LogicalTerm>,
},
ForallCounterexample {
entity: LogicalTerm,
},
CountResult {
expected: u32,
actual: u32,
},
PredicateCheck {
method: String,
detail: String,
},
ComputeCheck {
method: String,
detail: String,
},
Asserted {
fact: String,
},
Derived {
label: String,
fact: String,
},
ProofRef {
fact: String,
},
EqualitySubstitution {
original: String,
equality_facts: String,
substituted: String,
},
RuleAttemptFailed {
rule_label: String,
failed_condition: String,
},
PredicateNotFound {
predicate: String,
},
}Expand description
Proof rule applied at a single proof step.
This IS the serde wire type (named fields, #[serde(tag = "type")]): the same
type crosses every native boundary (nibli-reason → nibli-engine/nibli-wasm → JSON →
nibli-ui). nibli-protocol re-exports it and owns only the JSON helpers; the WIT
boundary (nibli-pipeline/nibli-host) keeps its generated tuple-shaped mirror by necessity.
The serde attributes are the JSON contract — do not rename a field or tag.
Variants§
Conjunction
DisjunctionCheck
DisjunctionIntro
Negation
ModalPassthrough
ExistsWitness
ExistsFailed
ForallVacuous
ForallVerified
Fields
§
entities: Vec<LogicalTerm>ForallCounterexample
Fields
§
entity: LogicalTermCountResult
PredicateCheck
ComputeCheck
Asserted
Derived
ProofRef
EqualitySubstitution
Equality substitution: fact proved by substituting equivalent terms. Fields: original fact, equality facts used, substituted fact that was found.
RuleAttemptFailed
Rule was tried but a condition failed.
PredicateNotFound
Predicate not found in fact store and no rule could derive it.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for ProofRule
impl<'de> Deserialize<'de> for ProofRule
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ProofRule, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ProofRule, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Serialize for ProofRule
impl Serialize for ProofRule
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl StructuralPartialEq for ProofRule
Auto Trait Implementations§
impl Freeze for ProofRule
impl RefUnwindSafe for ProofRule
impl Send for ProofRule
impl Sync for ProofRule
impl Unpin for ProofRule
impl UnsafeUnpin for ProofRule
impl UnwindSafe for ProofRule
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