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.
|