EpilogJS
What
versus
How
 

hypofindx


hypofindx(expression,sentence,dataset,dataset,dataset,ruleset) → expression / false

The hypofinds subroutine takes as arguments an expression (called the aspect), a sentence (called the query), two datasets (the add list and the delete list), another dataset, and a ruleset. If it succeeds, it returns the corresponding instance of the aspect; if it fails to derive an instance of the query, it returns false.

Call: definefacts(repository,readdata('p(art,bob) p(bob,cal) p(bob,cam)')) Exit: true Call: definerules(library,readdata('g(X,Z) :- p(X,Y) & p(Y,Z)')) Exit: true Call: hypofindx('Z',read('g(art,Z)'),[],[],repository,library) Exit: cal Call: hypofindx('X',read('g(art,cal)'),[],[],repository,library) Exit: art Call: grind(hypofindx(read('answer(X,Z)'),read('g(X,Z)'),[],[],repository,library)) Exit: answer(art,cal) Call: grind(hypofindx(read('answer(X,Z)'),read('p(X,Y) & p(Y,Z)'),[],[],repository,library)) Exit: answer(art,cal) Call: hypofindx('Z',read('g(bob,Z)'),[],[],repository,library) Exit: false

The hypofindx subroutine is used for hypothetical reasoning in situations where one wants answers based on additions to a dataset or deletions from that dataset but where it is inconvenient to modify the dataset (due to cost considerations or to allow multiple programs to access a dataset at the same time.




Comments and complaints to genesereth@stanford.edu.