{"id":90,"date":"2020-02-23T11:37:07","date_gmt":"2020-02-23T11:37:07","guid":{"rendered":"https:\/\/alandix.com\/aibook\/?page_id=90"},"modified":"2020-02-23T11:50:32","modified_gmt":"2020-02-23T11:50:32","slug":"prolog-utility-files","status":"publish","type":"page","link":"https:\/\/alandix.com\/aibook\/code\/prolog-utility-files\/","title":{"rendered":"prolog utility files"},"content":{"rendered":"\n<p>Some of the prolog examples use predicates defined in the following utility files. Many of these predicates may already be available on your system either in libraries or as built-in predicates.<\/p>\n\n\n\n<dl>\n\n<dt> <a href=\"https:\/\/alandix.com\/books\/ai96\/prolog\/util\/list.p\" target=\"_blank\" rel=\"noopener noreferrer\">list.p<\/a> &#8211; list and set processing predicates\n <dd>  <tt>concat\/3, length\/2, element_at\/3<\/tt> <\/dd>\n <dd>  <tt>member\/2, count_members\/3, add_member\/3<\/tt> <\/dd>\n <dd>  <tt>remove_member\/3, remove_members\/3, remove_list\/3<\/tt> <\/dd>\n <dd>  <tt>notsubset\/2, subset\/2, sameset\/2<\/tt> <\/dd>\n <dd>  <tt>union\/3, intersect\/3, setdiff\/3<\/tt> <\/dd>\n <dd>  <tt>sumlist\/2, maxlist\/2<\/tt> <\/dd>\n <dd>  <tt>range_list\/3<\/tt> <\/dd>\n<\/dl>\n\n\n\n<dl>\n\n<dt> <a href=\"https:\/\/alandix.com\/books\/ai96\/prolog\/util\/meta.p\" target=\"_blank\" rel=\"noopener noreferrer\">meta.p<\/a> &#8211; meta-logical predicates <\/dt>\n <dd>  <tt>findall\/3, findone\/2, sumall\/3, maxall\/3<\/tt> <\/dd>\n <dd>  <tt>retractall\/1<\/tt> <\/dd>\n <dd>  <tt>in_range\/3<\/tt> <\/dd>\n<\/dl>\n\n\n\n<dl> \n<dt> <a href=\"https:\/\/alandix.com\/books\/ai96\/prolog\/util\/math.p\" target=\"_blank\" rel=\"noopener noreferrer\">math.p<\/a> &#8211; mathematical utilities <\/dt>\n <dd>  <tt>max\/3, min\/3<\/tt> <\/dd>\n <dd>  <tt>fdiv\/3<\/tt>  &#8211;  for Prologs without floating point divide! <\/dd>\n <dd>  <tt>round\/2<\/tt>  &#8211;  may need to be redefined for your Prolog <\/dd>\n<\/dl>\n\n\n\n<dl>\n<dt> <a href=\"https:\/\/alandix.com\/books\/ai96\/prolog\/util\/cond.p\" target=\"_blank\" rel=\"noopener noreferrer\">cond.p<\/a> &#8211; handles lists of positive\/negative conditions <\/dt>\n <dd>  <tt>test_one_cond\/2,  set_one_cond\/3<\/tt> <\/dd>\n <dd>  <tt>test_cond_list\/2,  set_cond_list\/3<\/tt> <\/dd>\n\n<\/dl>\n","protected":false},"excerpt":{"rendered":"<p>Some of the prolog examples use predicates defined in the following utility files. Many of these predicates may already be available on your system either in libraries or as built-in predicates. list.p &#8211; list and set processing predicates concat\/3, length\/2, element_at\/3 member\/2, count_members\/3, add_member\/3 remove_member\/3, remove_members\/3, remove_list\/3 notsubset\/2, subset\/2, sameset\/2 union\/3, intersect\/3, setdiff\/3 sumlist\/2, maxlist\/2 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":87,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_themeisle_gutenberg_block_has_review":false,"footnotes":""},"class_list":["post-90","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/alandix.com\/aibook\/wp-json\/wp\/v2\/pages\/90","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alandix.com\/aibook\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/alandix.com\/aibook\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/alandix.com\/aibook\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/alandix.com\/aibook\/wp-json\/wp\/v2\/comments?post=90"}],"version-history":[{"count":3,"href":"https:\/\/alandix.com\/aibook\/wp-json\/wp\/v2\/pages\/90\/revisions"}],"predecessor-version":[{"id":96,"href":"https:\/\/alandix.com\/aibook\/wp-json\/wp\/v2\/pages\/90\/revisions\/96"}],"up":[{"embeddable":true,"href":"https:\/\/alandix.com\/aibook\/wp-json\/wp\/v2\/pages\/87"}],"wp:attachment":[{"href":"https:\/\/alandix.com\/aibook\/wp-json\/wp\/v2\/media?parent=90"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}