Skip to content

Latest commit

 

History

History

backward-chaining

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Backward Chaining Experiments

Description

Contains a number of experiments to realize backward chaining in MeTTa. Specifically:

  • Bare Entail: represent rules with the relationship. Knowledge however is not wrapped around .
  • Equality: like bare entail but the rules are directly encoded in the backward chainer function.
  • Bare Entail Match: like bare entail but both knowledge and rule bases are stored in their own spaces and match is used instead of let. let* is still used to bind the and-branches of the inference trees together. By and-branches we mean the multiple premises an inference rule must satify at once.
  • Equality Match: like equality but the knowledge base is stored in its own space, the rules are directly encoded in the backward chainer function, and match is used instead of let to match premises with the knowledge base. let* is still used to bind the and-branches of the inference trees together.
  • DTL Equality Match: like DTL (Synthesizer) but the rules are hard wired in the backward chainer function and match used instead of let to match the premises with the knowledge base. let* is still used to bind the and-branches of the inference trees together.

Usage

To run the experiments, enter the following

metta bc-xp.metta

It should outputs empty results indicating that all tests have passed.

Related

In the iterative-chaining experiments, a new implementation of the backward chainer was discovered which recurses on rule abstraction (not just rule premises) and uses currying to simplify the implementation. See syn in ibc-xp.metta.

Also, in the hol experiments, it was discovered that proof reduction (simplifying a proof to reach a canonical form) can be achieved by defining reduction rules as traditional function definitions, and thus let MeTTa interper spontaneously reduce them.