BackwardChainer

Struct BackwardChainer 

Source
pub struct BackwardChainer { /* private fields */ }
Expand description

The backward chaining proof engine.

Searches for proofs by working backwards from the goal, finding rules whose conclusions match, and recursively proving their premises.

Implementations§

Source§

impl BackwardChainer

Source

pub fn new() -> Self

Create a new proof engine with empty knowledge base.

Source

pub fn set_max_depth(&mut self, depth: usize)

Set the maximum proof search depth.

Source

pub fn knowledge_base(&self) -> &[ProofExpr]

Get a reference to the knowledge base (for debugging).

Source

pub fn add_axiom(&mut self, expr: ProofExpr)

Add an axiom/fact/rule to the knowledge base.

Event semantics are automatically abstracted to simple predicates for efficient proof search.

Source

pub fn prove(&mut self, goal: ProofExpr) -> ProofResult<DerivationTree>

Attempt to prove a goal.

Returns a derivation tree if successful, explaining how the proof was constructed. Event semantics in the goal are automatically abstracted (but De Morgan is not applied to preserve goal pattern matching for reductio strategies).

Source

pub fn prove_with_goal( &mut self, goal: ProofGoal, ) -> ProofResult<DerivationTree>

Prove a goal with pre-populated context assumptions.

This allows proving goals like “x > 5” given assumptions like “x > 10” in the context. The oracle (Z3) will use these context assumptions when verifying.

Trait Implementations§

Source§

impl Default for BackwardChainer

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.