pls refer to this schema using the namespace name http://www.w3.org/2000/04shoe-swell/inference#
cookie crumbs: horn clause in the FOLDOC.
aka "introduces" in larch
vars(rule, l) = l is the list of vars used in rule
hmm... List[Term]
if(rule, l) = l is the list of premises in rule
hmm... List[Statement] @@ I could perhaps model that as in(x, if(r)) -> type(x, Statement)
then(rule, s) = s is the conclusion of rule
Hmm... this forall mechanism of explicitly stating which symbols are variables is very general, and it makes explicit the connection between variable syntax and the particular logic implied by that syntax.
But it's sort of tedious to work with. Some folks have propose[@@cite] distinguishing variables by their URI scheme, ala var:foo; I noted that this rubs me the wrong way[@@cite], but I couldn't fully explain why (except to appeal to the axiom of opacity@@link). It occurs to me, though, that we can reserve a part of URI space for variables without reserving a new URI scheme. See: KIF and RDF.
busy(?who, ?t) :- member(?who, ?group), meets(?group, ?t) <r:Rule> <r:vars> <l:List> <l:first rdf:resource="#who"> <l:rest> <List> <l:first rdf:resource="#t"> <l:rest> <l:List> <l:first rdf:resource="#group"/> <l:rest rdf:resource="@@empty"/> </l:List> </l:rest> </l:List> </l:rest> </l:List> </r:vars> <r:if> <l:List> <l:first rdf:resource="#if1"/> <l:rest> <l:List> <l:first rdf:resource="#if2"/> <l:rest rdf:resource="@@empty"/> </l:List> </l:rest> </l:List> </r:if> <r:then rdf:resource="#then"/> </r:Rule> <rdf:Description about="#who"> <xx:member rdf:ID="if1" rdf:resource="#group"/> </rdf:Description> <rdf:Description about="#group"> <xx:meets rdf:ID="if2" rdf:resource="#t"/> </rdf:Description> <rdf:Description about="#who"> <xx:busy rdf:ID="then" rdf:resource="#t"/> </rdf:Description>
dealing with variables: base case
dealing with variables: induction step:
@@this pretty much introduces rule2 by an existential, and won't work in ALL; that is: it needs :the or :find (find or create)... or some sort of ruleOf([vars, if, then]) thingy?
I maintain this as HTML, but I make it availble as RDF using a transformation.