Just as ALLADD and ALLREMOVE can be given a list of patterns to add or remove, similarly, ALLPRESENT can be given a list of patterns to look for in the database. If it finds items for all of them it returns a list of the found items (and also assigns it to the variable THEM). Otherwise its result is false. E.g. to find a grandson of TOM:
alladd([ [dick father harry] [tom father jack] [bill father tom] [jack father dick]]); vars x, y; if allpresent([[tom father ?x] [?x father ?y]]) then y => endif; ** dick them => ** [[tom father jack] [jack father dick]]For more summary information on the database procedures see:
HELP DATABASE, HELP ADD, HELP PRESENT, HELP REMOVE, HELP FLUSH, HELP LOOKUP. HELP FOREACH, HELP FOREVERY