Syntax:
head_chunk_fact ::= (chunk (head_literal {chunk_guard}*) chunk_descr)
head_chunk_rule ::= (chunk (head_literal {chunk_guard}* first_premise_literal)
chunk_descr)
body_chunk_list ::= {body_chunk}* [(({chunk_guard}*) chunk_descr)]
body_chunk ::= (chunk ({chunk_guard}* call_literal) chunk_descr)
call_literal ::= literal_classification
lispcall_classification
chunk_guard ::= builtin
passive_term
chunk_descr ::= (lu_reg ({(variable permvar_uselit_list)}*))
permvar_uselit_list ::= ({arg_nr}
)
Description:
Example:
Prolog-like source:foo(alpha,beta). foo(T,gamma) :- bar(T,P) !& bar(P,Q). . . .Lisp-like source:(hn (foo alpha beta)) (ft (foo _t gamma) (bar _t _p) ! (bar _p _q)) . . .Classified Clauses:
(db (proc foo/2 2 (indexing ...) (rel0 ; hn-clause without body goals (cut-info nil) (perm) (temp) (chunk ; The tag for the first chunk. (head_literal) ; There exists only the head literal nil) ) ; There is no need for any chunk_descr (fun*eva (cut-info general) (perm (_p (1 nil (2 1)))) (temp (_t (1 (1) (1))) (_q (2 nil (2)))) (chunk ; The tag for the first chunk. ((usrlit ...)) ; head_literal first_premise_literal (2 ((_p (2)))) ); lu_reg = 2 because of the arity ; of the first_premise_literal. The ; permanent variable _p occurs at ; position 2 in the call_literal. (chunk ; The tag for the second chunk. ((usrlit ...)) ; there is only a call_literal. (2 ((_p (1))))))) ; _p occurs at position 1 ; in the call_literal. . . .)