/usr/share/doc/racket/racklog/glossary.html is in racket-doc 6.1-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"/><title>11 Glossary of Racklog Primitives</title><link rel="stylesheet" type="text/css" href="../scribble.css" title="default"/><link rel="stylesheet" type="text/css" href="../racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-style.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../doc-site.css" title="default"/><script type="text/javascript" src="../scribble-common.js"></script><script type="text/javascript" src="../manual-racket.js"></script><script type="text/javascript" src="../manual-racket.js"></script><script type="text/javascript" src="../doc-site.js"></script><script type="text/javascript" src="../local-redirect/local-redirect.js"></script><script type="text/javascript" src="../local-redirect/local-user-redirect.js"></script><!--[if IE 6]><style type="text/css">.SIEHidden { overflow: hidden; }</style><![endif]--></head><body id="doc-racket-lang-org"><div class="tocset"><div class="tocview"><div class="tocviewlist tocviewlisttopspace"><div class="tocviewtitle"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,"tocview_0");">▼</a></td><td></td><td><a href="index.html" class="tocviewlink" data-pltdoc="x">Racklog:<span class="mywbr"> </span> Prolog-<wbr></wbr>Style Logic Programming</a></td></tr></table></div><div class="tocviewsublisttop" style="display: block;" id="tocview_0"><table cellspacing="0" cellpadding="0"><tr><td align="right">1 </td><td><a href="simple.html" class="tocviewlink" data-pltdoc="x">Simple Goals and Queries</a></td></tr><tr><td align="right">2 </td><td><a href="predicates.html" class="tocviewlink" data-pltdoc="x">Predicates</a></td></tr><tr><td align="right">3 </td><td><a href="racket-w-logic.html" class="tocviewlink" data-pltdoc="x">Using Conventional Racket Expressions in Racklog</a></td></tr><tr><td align="right">4 </td><td><a href="backtracking.html" class="tocviewlink" data-pltdoc="x">Backtracking</a></td></tr><tr><td align="right">5 </td><td><a href="unification.html" class="tocviewlink" data-pltdoc="x">Unification</a></td></tr><tr><td align="right">6 </td><td><a href="and-or.html" class="tocviewlink" data-pltdoc="x">Conjuctions and Disjunctions</a></td></tr><tr><td align="right">7 </td><td><a href="lv-manip.html" class="tocviewlink" data-pltdoc="x">Manipulating Racklog Variables</a></td></tr><tr><td align="right">8 </td><td><a href="cut.html" class="tocviewlink" data-pltdoc="x">The Cut (<span class="RktSym"><span class="RktStxLink">!</span></span>)</a></td></tr><tr><td align="right">9 </td><td><a href="set-of.html" class="tocviewlink" data-pltdoc="x">Set Predicates</a></td></tr><tr><td align="right">10 </td><td><a href="Racklog_Module_Language.html" class="tocviewlink" data-pltdoc="x">Racklog Module Language</a></td></tr><tr><td align="right">11 </td><td><a href="" class="tocviewselflink" data-pltdoc="x">Glossary of Racklog Primitives</a></td></tr><tr><td align="right"></td><td><a href="doc-bibliography.html" class="tocviewlink" data-pltdoc="x">Bibliography</a></td></tr></table></div></div><div class="tocviewlist"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,"tocview_1");">►</a></td><td>11 </td><td><a href="" class="tocviewselflink" data-pltdoc="x">Glossary of Racklog Primitives</a></td></tr></table><div class="tocviewsublistbottom" style="display: none;" id="tocview_1"><table cellspacing="0" cellpadding="0"><tr><td align="right">11.1 </td><td><a href="#%28part._.Racket_.Predicates%29" class="tocviewlink" data-pltdoc="x">Racket Predicates</a></td></tr><tr><td align="right">11.2 </td><td><a href="#%28part._.User_.Interface%29" class="tocviewlink" data-pltdoc="x">User Interface</a></td></tr><tr><td align="right">11.3 </td><td><a href="#%28part._.Relations%29" class="tocviewlink" data-pltdoc="x">Relations</a></td></tr><tr><td align="right">11.4 </td><td><a href="#%28part._.Racklog_.Variables%29" class="tocviewlink" data-pltdoc="x">Racklog Variables</a></td></tr><tr><td align="right">11.5 </td><td><a href="#%28part._.Cut%29" class="tocviewlink" data-pltdoc="x">Cut</a></td></tr><tr><td align="right">11.6 </td><td><a href="#%28part._.Racklog_.Operators%29" class="tocviewlink" data-pltdoc="x">Racklog Operators</a></td></tr><tr><td align="right">11.7 </td><td><a href="#%28part._.Unification%29" class="tocviewlink" data-pltdoc="x">Unification</a></td></tr><tr><td align="right">11.8 </td><td><a href="#%28part._.Numeric_.Predicates%29" class="tocviewlink" data-pltdoc="x">Numeric Predicates</a></td></tr><tr><td align="right">11.9 </td><td><a href="#%28part._.List_.Predicates%29" class="tocviewlink" data-pltdoc="x">List Predicates</a></td></tr><tr><td align="right">11.10 </td><td><a href="#%28part._.Set_.Predicates%29" class="tocviewlink" data-pltdoc="x">Set Predicates</a></td></tr><tr><td align="right">11.11 </td><td><a href="#%28part._.Racklog_.Predicates%29" class="tocviewlink" data-pltdoc="x">Racklog Predicates</a></td></tr><tr><td align="right">11.12 </td><td><a href="#%28part._.Racklog_.Variable_.Manipulation%29" class="tocviewlink" data-pltdoc="x">Racklog Variable Manipulation</a></td></tr></table></div></div></div><div class="tocsub"><div class="tocsubtitle">On this page:</div><table class="tocsublist" cellspacing="0"><tr><td><span class="tocsublinknumber">11.1<tt> </tt></span><a href="#%28part._.Racket_.Predicates%29" class="tocsubseclink" data-pltdoc="x">Racket Predicates</a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._logic-var~3f%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">logic-<wbr></wbr>var?</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._atomic-struct~3f%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">atomic-<wbr></wbr>struct?</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._atom~3f%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">atom?</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._compound-struct~3f%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">compound-<wbr></wbr>struct?</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._compound~3f%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">compound?</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">unifiable?</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._answer-value~3f%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">answer-<wbr></wbr>value?</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._answer~3f%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">answer?</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">goal/<span class="mywbr"> </span>c</span></span></a></td></tr><tr><td><span class="tocsublinknumber">11.2<tt> </tt></span><a href="#%28part._.User_.Interface%29" class="tocsubseclink" data-pltdoc="x">User Interface</a></td></tr><tr><td><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25which%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">%which</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25more%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%more</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25find-all%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">%find-<wbr></wbr>all</span></span></a></td></tr><tr><td><span class="tocsublinknumber">11.3<tt> </tt></span><a href="#%28part._.Relations%29" class="tocsubseclink" data-pltdoc="x">Relations</a></td></tr><tr><td><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25rel%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">%rel</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25empty-rel%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%empty-<wbr></wbr>rel</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25assert%21%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">%assert!</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25assert-after%21%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">%assert-<wbr></wbr>after!</span></span></a></td></tr><tr><td><span class="tocsublinknumber">11.4<tt> </tt></span><a href="#%28part._.Racklog_.Variables%29" class="tocsubseclink" data-pltdoc="x">Racklog Variables</a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29.__%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">_</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25let%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">%let</span></span></a></td></tr><tr><td><span class="tocsublinknumber">11.5<tt> </tt></span><a href="#%28part._.Cut%29" class="tocsubseclink" data-pltdoc="x">Cut</a></td></tr><tr><td><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25cut-delimiter%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">%cut-<wbr></wbr>delimiter</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._%21%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">!</span></span></a></td></tr><tr><td><span class="tocsublinknumber">11.6<tt> </tt></span><a href="#%28part._.Racklog_.Operators%29" class="tocsubseclink" data-pltdoc="x">Racklog Operators</a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25fail%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%fail</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25true%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%true</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25repeat%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%repeat</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25and%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">%and</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25or%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">%or</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25not%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%not</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25if-then-else%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%if-<wbr></wbr>then-<wbr></wbr>else</span></span></a></td></tr><tr><td><span class="tocsublinknumber">11.7<tt> </tt></span><a href="#%28part._.Unification%29" class="tocsubseclink" data-pltdoc="x">Unification</a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3d%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%=</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25%2F~3d%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%/<span class="mywbr"> </span>=</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3d~3d%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%==</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25%2F~3d~3d%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%/<span class="mywbr"> </span>==</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25is%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">%is</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._use-occurs-check~3f%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">use-<wbr></wbr>occurs-<wbr></wbr>check?</span></span></a></td></tr><tr><td><span class="tocsublinknumber">11.8<tt> </tt></span><a href="#%28part._.Numeric_.Predicates%29" class="tocsubseclink" data-pltdoc="x">Numeric Predicates</a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3c%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%<</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3c~3d%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%<=</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3d%2F~3d%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%=/<span class="mywbr"> </span>=</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3d~3a~3d%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%=:<span class="mywbr"> </span>=</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3e%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%></span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3e~3d%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%>=</span></span></a></td></tr><tr><td><span class="tocsublinknumber">11.9<tt> </tt></span><a href="#%28part._.List_.Predicates%29" class="tocsubseclink" data-pltdoc="x">List Predicates</a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25append%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%append</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25member%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%member</span></span></a></td></tr><tr><td><span class="tocsublinknumber">11.10<tt> </tt></span><a href="#%28part._.Set_.Predicates%29" class="tocsubseclink" data-pltdoc="x">Set Predicates</a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25set-of%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%set-<wbr></wbr>of</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25set-of-1%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%set-<wbr></wbr>of-<wbr></wbr>1</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25bag-of%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%bag-<wbr></wbr>of</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25bag-of-1%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%bag-<wbr></wbr>of-<wbr></wbr>1</span></span></a></td></tr><tr><td><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25free-vars%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktStxLink">%free-<wbr></wbr>vars</span></span></a></td></tr><tr><td><span class="tocsublinknumber">11.11<tt> </tt></span><a href="#%28part._.Racklog_.Predicates%29" class="tocsubseclink" data-pltdoc="x">Racklog Predicates</a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25compound%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%compound</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25constant%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%constant</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25var%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%var</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25nonvar%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%nonvar</span></span></a></td></tr><tr><td><span class="tocsublinknumber">11.12<tt> </tt></span><a href="#%28part._.Racklog_.Variable_.Manipulation%29" class="tocsubseclink" data-pltdoc="x">Racklog Variable Manipulation</a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25freeze%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%freeze</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25melt%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%melt</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25melt-new%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%melt-<wbr></wbr>new</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25copy%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">%copy</span></span></a></td></tr></table></div></div><div class="maincolumn"><div class="main"><div class="navsettop"><span class="navleft"><form class="searchform"><input class="searchbox" style="color: #888;" type="text" value="...search manuals..." title="Enter a search string to search the manuals" onkeypress="return DoSearchKey(event, this, "6.1", "../");" onfocus="this.style.color="black"; this.style.textAlign="left"; if (this.value == "...search manuals...") this.value="";" onblur="if (this.value.match(/^ *$/)) { this.style.color="#888"; this.style.textAlign="center"; this.value="...search manuals..."; }"/></form> <a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot("6.1");">top</a></span><span class="navright"> <a href="Racklog_Module_Language.html" title="backward to "10 Racklog Module Language"" data-pltdoc="x">← prev</a> <a href="index.html" title="up to "Racklog: Prolog-Style Logic Programming"" data-pltdoc="x">up</a> <a href="doc-bibliography.html" title="forward to "Bibliography"" data-pltdoc="x">next →</a></span> </div><h3 x-source-module="(lib "racklog/racklog.scrbl")" x-part-tag=""glossary"">11<tt> </tt><a name="(part._glossary)"></a>Glossary of Racklog Primitives</h3><h4 x-source-module="(lib "racklog/racklog.scrbl")" x-part-tag=""Racket_Predicates"">11.1<tt> </tt><a name="(part._.Racket_.Predicates)"></a>Racket Predicates</h4><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._logic-var~3f))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._logic-var~3f%29%29" class="RktValDef RktValLink" data-pltdoc="x">logic-var?</a></span></span><span class="hspace"> </span><span class="RktVar">x</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._boolean%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">boolean?</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">x</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">any/c</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Identifies a logic variable.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._atomic-struct~3f))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._atomic-struct~3f%29%29" class="RktValDef RktValLink" data-pltdoc="x">atomic-struct?</a></span></span><span class="hspace"> </span><span class="RktVar">x</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._boolean%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">boolean?</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">x</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">any/c</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Identifies structures that the <span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=inspectors.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-inspector%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">current-inspector</a></span><span class="RktPn">)</span> cannot inspect.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._atom~3f))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._atom~3f%29%29" class="RktValDef RktValLink" data-pltdoc="x">atom?</a></span></span><span class="hspace"> </span><span class="RktVar">x</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._boolean%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">boolean?</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">x</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">any/c</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Identifies atomic values that may appear in Racklog programs. Equivalent to
the contract <span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._boolean%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">boolean?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=number-types.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._number%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">number?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=bytestrings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._bytes%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">bytes?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=characters.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._char%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">char?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=symbols.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._symbol%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">symbol?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=regexp.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._regexp%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">regexp?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=regexp.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._pregexp%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">pregexp?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=regexp.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._byte-regexp%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">byte-regexp?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=regexp.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._byte-pregexp%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">byte-pregexp?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=keywords.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._keyword%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">keyword?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=pairs.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._null%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">null?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=procedures.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._procedure%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">procedure?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">void?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=sets.html%23%2528def._%2528%2528lib._racket%252Fset..rkt%2529._set%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">set?</a></span><span class="stt"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._atomic-struct~3f%29%29" class="RktValLink" data-pltdoc="x">atomic-struct?</a></span><span class="RktPn">)</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._compound-struct~3f))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._compound-struct~3f%29%29" class="RktValDef RktValLink" data-pltdoc="x">compound-struct?</a></span></span><span class="hspace"> </span><span class="RktVar">x</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._boolean%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">boolean?</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">x</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">any/c</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Identifies structures that the <span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=inspectors.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-inspector%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">current-inspector</a></span><span class="RktPn">)</span> can inspect.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._compound~3f))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._compound~3f%29%29" class="RktValDef RktValLink" data-pltdoc="x">compound?</a></span></span><span class="hspace"> </span><span class="RktVar">x</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._boolean%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">boolean?</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">x</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">any/c</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Identifies compound values that may appear in Racklog programs. Equivalent to
the contract
<span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=pairs.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._pair%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">pair?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=vectors.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._vector%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">vector?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=mpairs.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._mpair%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">mpair?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=boxes.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._box%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">box?</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=hashtables.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._hash%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">hash?</a></span><span class="stt"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._compound-struct~3f%29%29" class="RktValLink" data-pltdoc="x">compound-struct?</a></span><span class="RktPn">)</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._unifiable~3f))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValDef RktValLink" data-pltdoc="x">unifiable?</a></span></span><span class="hspace"> </span><span class="RktVar">x</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._boolean%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">boolean?</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">x</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">any/c</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Identifies values that may appear in Racklog programs. Essentialy either an
<span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._atom~3f%29%29" class="RktValLink" data-pltdoc="x">atom?</a></span>, <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._logic-var~3f%29%29" class="RktValLink" data-pltdoc="x">logic-var?</a></span>, or <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._compound~3f%29%29" class="RktValLink" data-pltdoc="x">compound?</a></span> that contains
<span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span>s.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._answer-value~3f))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._answer-value~3f%29%29" class="RktValDef RktValLink" data-pltdoc="x">answer-value?</a></span></span><span class="hspace"> </span><span class="RktVar">x</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._boolean%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">boolean?</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">x</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">any/c</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Identifies values that may appear in <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._answer~3f%29%29" class="RktValLink" data-pltdoc="x">answer?</a></span>. Essentially
<span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span>s that do not contain <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._logic-var~3f%29%29" class="RktValLink" data-pltdoc="x">logic-var?</a></span>s.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._answer~3f))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._answer~3f%29%29" class="RktValDef RktValLink" data-pltdoc="x">answer?</a></span></span><span class="hspace"> </span><span class="RktVar">x</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._boolean%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">boolean?</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">x</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">any/c</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Identifies answers returned by <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25more%29%29" class="RktValLink" data-pltdoc="x">%more</a></span> and <span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25which%29%29" class="RktStxLink" data-pltdoc="x">%which</a></span>. Equivalent
to the contract
<span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._false%252Fc%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">false/c</a></span><span class="stt"> </span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._listof%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">listof</a></span><span class="stt"> </span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._cons%252Fc%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">cons/c</a></span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=symbols.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._symbol%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">symbol?</a></span><span class="stt"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._answer-value~3f%29%29" class="RktValLink" data-pltdoc="x">answer-value?</a></span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>value</p></div></div><p class="RForeground"><a name="(def._((lib._racklog/main..rkt)._goal/c))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValDef RktValLink" data-pltdoc="x">goal/c</a></span></span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=contract-utilities.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._contract%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">contract?</a></span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">A contract for goals.</div></p><h4 x-source-module="(lib "racklog/racklog.scrbl")" x-part-tag=""User_Interface"">11.2<tt> </tt><a name="(part._.User_.Interface)"></a>User Interface</h4><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>syntax</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racklog/main..rkt)._~25which))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25which%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">%which</a></span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktVar">V</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktVar">G</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="stt"> </span></td></tr><tr><td><blockquote class="SubFlow"><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace"> </span></td><td><span class="RktVar">V</span></td><td><span class="hspace"> </span></td><td>:</td><td><span class="hspace"> </span></td><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=stxops.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fstx..rkt%2529._identifier%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">identifier?</a></span></td></tr></table><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace"> </span></td><td><span class="RktVar">G</span></td><td><span class="hspace"> </span></td><td>:</td><td><span class="hspace"> </span></td><td><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></td></tr></table></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Returns an <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._answer~3f%29%29" class="RktValLink" data-pltdoc="x">answer?</a></span>
of the variables <span class="RktVar">V</span>, ..., that satisfies all of <span class="RktVar">G</span>,
... If <span class="RktVar">G</span>, ..., cannot be satisfied, returns <span class="RktVal">#f</span>.
Calling the thunk <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25more%29%29" class="RktValLink" data-pltdoc="x">%more</a></span> produces more
instantiations, if available.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25more))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25more%29%29" class="RktValDef RktValLink" data-pltdoc="x">%more</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._answer~3f%29%29" class="RktValLink" data-pltdoc="x">answer?</a></span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">The thunk <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25more%29%29" class="RktValLink" data-pltdoc="x">%more</a></span> produces more instantiations of the
variables in the most recent <span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25which%29%29" class="RktStxLink" data-pltdoc="x">%which</a></span>-form that satisfy the
goals in that <span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25which%29%29" class="RktStxLink" data-pltdoc="x">%which</a></span>-form. If no more solutions can
be found, <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25more%29%29" class="RktValLink" data-pltdoc="x">%more</a></span> returns <span class="RktVal">#f</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>syntax</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racklog/main..rkt)._~25find-all))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25find-all%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">%find-all</a></span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktVar">V</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktVar">G</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="stt"> </span></td></tr><tr><td><blockquote class="SubFlow"><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace"> </span></td><td><span class="RktVar">V</span></td><td><span class="hspace"> </span></td><td>:</td><td><span class="hspace"> </span></td><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=stxops.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fstx..rkt%2529._identifier%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">identifier?</a></span></td></tr></table><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace"> </span></td><td><span class="RktVar">G</span></td><td><span class="hspace"> </span></td><td>:</td><td><span class="hspace"> </span></td><td><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></td></tr></table></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Like <span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=pairs.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._list%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">list</a></span><span class="stt"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25which%29%29" class="RktStxLink" data-pltdoc="x">%which</a></span><span class="stt"> </span><span class="RktPn">(</span><span class="RktVar">V</span><span class="stt"> </span><span class="RktMeta"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529._......%2529%2529&version=6.1" class="RktStxLink Sq" data-pltdoc="x">...</a></span><span class="RktPn">)</span><span class="stt"> </span><span class="RktVar">G</span><span class="stt"> </span><span class="RktMeta"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529._......%2529%2529&version=6.1" class="RktStxLink Sq" data-pltdoc="x">...</a></span><span class="RktPn">)</span><span class="stt"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25more%29%29" class="RktValLink" data-pltdoc="x">%more</a></span><span class="RktPn">)</span><span class="stt"> </span><span class="RktMeta"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529._......%2529%2529&version=6.1" class="RktStxLink Sq" data-pltdoc="x">...</a></span><span class="RktPn">)</span> with as many <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25more%29%29" class="RktValLink" data-pltdoc="x">%more</a></span><span class="RktPn">)</span>s as there are answers. (This will not terminate if there are an infinite number of answers.)</div></p><h4 x-source-module="(lib "racklog/racklog.scrbl")" x-part-tag=""Relations"">11.3<tt> </tt><a name="(part._.Relations)"></a>Relations</h4><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>syntax</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racklog/main..rkt)._~25rel))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25rel%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">%rel</a></span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktVar">V</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktVar">clause</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="stt"> </span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="specgrammar"><tr><td align="right" valign="baseline"><span class="RktVar">clause</span></td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="center" valign="baseline">=</td><td align="left" valign="baseline"><span class="stt"> </span></td><td align="left" valign="baseline"><span class="RktPn">[</span><span class="RktPn">(</span><span class="RktVar">E</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktVar">G</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">]</span></td></tr></table></td></tr><tr><td><span class="stt"> </span></td></tr><tr><td><blockquote class="SubFlow"><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace"> </span></td><td><span class="RktVar">V</span></td><td><span class="hspace"> </span></td><td>:</td><td><span class="hspace"> </span></td><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=stxops.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fstx..rkt%2529._identifier%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">identifier?</a></span></td></tr></table><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace"> </span></td><td><span class="RktVar">E</span></td><td><span class="hspace"> </span></td><td>:</td><td><span class="hspace"> </span></td><td><span class="RktSym">expression?</span></td></tr></table><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace"> </span></td><td><span class="RktVar">G</span></td><td><span class="hspace"> </span></td><td>:</td><td><span class="hspace"> </span></td><td><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></td></tr></table></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Returns a predicate function. Each clause <span class="RktSym">C</span> signifies that
the goal created by applying the predicate object to anything that
matches <span class="RktPn">(</span><span class="RktVar">E</span><span class="stt"> </span><span class="RktMeta"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529._......%2529%2529&version=6.1" class="RktStxLink Sq" data-pltdoc="x">...</a></span><span class="RktPn">)</span> is deemed to succeed if all the goals
<span class="RktVar">G</span>, ..., can, in their turn, be shown to succeed. The
variables <span class="RktVar">V</span>, ..., are local logic variables for
<span class="RktVar">clause</span>, ....</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25empty-rel))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25empty-rel%29%29" class="RktValDef RktValLink" data-pltdoc="x">%empty-rel</a></span></span><span class="hspace"> </span><span class="RktVar">E</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25empty-rel%29%29" class="RktValLink" data-pltdoc="x">%empty-rel</a></span><span class="stt"> </span><span class="RktVar">E</span><span class="stt"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529._......%2529%2529&version=6.1" class="RktStxLink Sq" data-pltdoc="x">...</a></span><span class="RktPn">)</span> always fails. The <span style="font-style: italic">value</span>
<span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25empty-rel%29%29" class="RktValLink" data-pltdoc="x">%empty-rel</a></span> is used as a starting value for predicates
that can later be enhanced with <span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25assert%21%29%29" class="RktStxLink" data-pltdoc="x">%assert!</a></span> and <span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25assert-after%21%29%29" class="RktStxLink" data-pltdoc="x">%assert-after!</a></span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>syntax</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racklog/main..rkt)._~25assert!))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25assert%21%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">%assert!</a></span></span><span class="hspace"> </span><span class="RktVar">Pname</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktVar">V</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktVar">clause</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="stt"> </span></td></tr><tr><td><blockquote class="SubFlow"><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace"> </span></td><td><span class="RktVar">Pname</span></td><td><span class="hspace"> </span></td><td>:</td><td><span class="hspace"> </span></td><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=stxops.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fstx..rkt%2529._identifier%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">identifier?</a></span></td></tr></table><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace"> </span></td><td><span class="RktVar">V</span></td><td><span class="hspace"> </span></td><td>:</td><td><span class="hspace"> </span></td><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=stxops.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fstx..rkt%2529._identifier%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">identifier?</a></span></td></tr></table></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Adds the clauses
<span class="RktSym">clauses</span>, ..., to the <span style="font-style: italic">end</span> of the predicate that is the value of
the Racket variable <span class="RktVar">Pname</span>. The variables <span class="RktVar">V</span>, ..., are
local logic variables for <span class="RktVar">clause</span>, ....</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>syntax</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racklog/main..rkt)._~25assert-after!))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25assert-after%21%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">%assert-after!</a></span></span><span class="hspace"> </span><span class="RktVar">Pname</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktVar">V</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktVar">clause</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="stt"> </span></td></tr><tr><td><blockquote class="SubFlow"><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace"> </span></td><td><span class="RktVar">Pname</span></td><td><span class="hspace"> </span></td><td>:</td><td><span class="hspace"> </span></td><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=stxops.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fstx..rkt%2529._identifier%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">identifier?</a></span></td></tr></table><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace"> </span></td><td><span class="RktVar">V</span></td><td><span class="hspace"> </span></td><td>:</td><td><span class="hspace"> </span></td><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=stxops.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fstx..rkt%2529._identifier%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">identifier?</a></span></td></tr></table></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Like <span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25assert%21%29%29" class="RktStxLink" data-pltdoc="x">%assert!</a></span>, but adds the new clauses to the <span style="font-style: italic">front</span>
of the existing predicate.</div></p><h4 x-source-module="(lib "racklog/racklog.scrbl")" x-part-tag=""Racklog_Variables"">11.4<tt> </tt><a name="(part._.Racklog_.Variables)"></a>Racklog Variables</h4><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt).__))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29.__%29%29" class="RktValDef RktValLink" data-pltdoc="x">_</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._logic-var~3f%29%29" class="RktValLink" data-pltdoc="x">logic-var?</a></span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">A thunk that produces a new logic variable. Can be
used in situations where we want a logic variable but
don’t want to name it. (<span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25let%29%29" class="RktStxLink" data-pltdoc="x">%let</a></span>, in contrast, introduces new
lexical names for the logic variables it creates.)</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>syntax</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racklog/main..rkt)._~25let))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25let%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">%let</a></span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktVar">V</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktVar">expr</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="stt"> </span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace"> </span></td><td><span class="RktVar">V</span></td><td><span class="hspace"> </span></td><td>:</td><td><span class="hspace"> </span></td><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=stxops.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fstx..rkt%2529._identifier%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">identifier?</a></span></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara">Introduces <span class="RktVar">V</span>, ..., as
lexically scoped logic variables to be used in <span class="RktVar">expr</span>, ...</div></p><h4 x-source-module="(lib "racklog/racklog.scrbl")" x-part-tag=""Cut"">11.5<tt> </tt><a name="(part._.Cut)"></a>Cut</h4><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>syntax</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racklog/main..rkt)._~25cut-delimiter))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25cut-delimiter%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">%cut-delimiter</a></span></span><span class="hspace"> </span><span class="RktPn">. </span><span class="RktVar">any</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Introduces a cut point. See <a href="cut.html" data-pltdoc="x">The Cut (<span class="RktSym"><span class="RktStxLink">!</span></span>)</a>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>syntax</p></div></div><p class="RForeground"><a name="(form._((lib._racklog/main..rkt)._!))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._%21%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">!</a></span></span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">The cut goal, see <a href="cut.html" data-pltdoc="x">The Cut (<span class="RktSym"><span class="RktStxLink">!</span></span>)</a>.</div></p><p>May only be used syntactically inside <span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25cut-delimiter%29%29" class="RktStxLink" data-pltdoc="x">%cut-delimiter</a></span> or <span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25rel%29%29" class="RktStxLink" data-pltdoc="x">%rel</a></span>.</p><h4 x-source-module="(lib "racklog/racklog.scrbl")" x-part-tag=""Racklog_Operators"">11.6<tt> </tt><a name="(part._.Racklog_.Operators)"></a>Racklog Operators</h4><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>value</p></div></div><p class="RForeground"><a name="(def._((lib._racklog/main..rkt)._~25fail))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25fail%29%29" class="RktValDef RktValLink" data-pltdoc="x">%fail</a></span></span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25fail%29%29" class="RktValLink" data-pltdoc="x">%fail</a></span> always fails.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>value</p></div></div><p class="RForeground"><a name="(def._((lib._racklog/main..rkt)._~25true))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25true%29%29" class="RktValDef RktValLink" data-pltdoc="x">%true</a></span></span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25true%29%29" class="RktValLink" data-pltdoc="x">%true</a></span> succeeds. Fails on retry.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25repeat))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25repeat%29%29" class="RktValDef RktValLink" data-pltdoc="x">%repeat</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25repeat%29%29" class="RktValLink" data-pltdoc="x">%repeat</a></span><span class="RktPn">)</span> always succeeds (even on retries).
Useful for failure-driven loops.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>syntax</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racklog/main..rkt)._~25and))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25and%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">%and</a></span></span><span class="hspace"> </span><span class="RktVar">G</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="stt"> </span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace"> </span></td><td><span class="RktVar">G</span></td><td><span class="hspace"> </span></td><td>:</td><td><span class="hspace"> </span></td><td><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25and%29%29" class="RktStxLink" data-pltdoc="x">%and</a></span><span class="stt"> </span><span class="RktVar">G</span><span class="stt"> </span><span class="RktMeta"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529._......%2529%2529&version=6.1" class="RktStxLink Sq" data-pltdoc="x">...</a></span><span class="RktPn">)</span> succeeds if all the goals
<span class="RktVar">G</span>, ..., succeed.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>syntax</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racklog/main..rkt)._~25or))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25or%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">%or</a></span></span><span class="hspace"> </span><span class="RktVar">G</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="stt"> </span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace"> </span></td><td><span class="RktVar">G</span></td><td><span class="hspace"> </span></td><td>:</td><td><span class="hspace"> </span></td><td><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25or%29%29" class="RktStxLink" data-pltdoc="x">%or</a></span><span class="stt"> </span><span class="RktVar">G</span><span class="stt"> </span><span class="RktMeta"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=stx-patterns.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fstxcase-scheme..rkt%2529._......%2529%2529&version=6.1" class="RktStxLink Sq" data-pltdoc="x">...</a></span><span class="RktPn">)</span> succeeds if one of <span class="RktVar">G</span>, ..., tried
in that order, succeeds.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25not))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25not%29%29" class="RktValDef RktValLink" data-pltdoc="x">%not</a></span></span><span class="hspace"> </span><span class="RktVar">G</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">G</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25not%29%29" class="RktValLink" data-pltdoc="x">%not</a></span><span class="stt"> </span><span class="RktVar">G</span><span class="RktPn">)</span> succeeds if <span class="RktVar">G</span> fails.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25if-then-else))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25if-then-else%29%29" class="RktValDef RktValLink" data-pltdoc="x">%if-then-else</a></span></span><span class="hspace"> </span><span class="RktVar">G1</span><span class="hspace"> </span><span class="RktVar">G2</span><span class="hspace"> </span><span class="RktVar">G3</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">G1</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">G2</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">G3</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25if-then-else%29%29" class="RktValLink" data-pltdoc="x">%if-then-else</a></span><span class="stt"> </span><span class="RktVar">G1</span><span class="stt"> </span><span class="RktVar">G2</span><span class="stt"> </span><span class="RktVar">G3</span><span class="RktPn">)</span> tries <span class="RktVar">G1</span> first: if it
succeeds, tries <span class="RktVar">G2</span>; if not, tries <span class="RktVar">G3</span>.</div></p><h4 x-source-module="(lib "racklog/racklog.scrbl")" x-part-tag=""Unification"">11.7<tt> </tt><a name="(part._.Unification)"></a>Unification</h4><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25~3d))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3d%29%29" class="RktValDef RktValLink" data-pltdoc="x">%=</a></span></span><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span><span class="RktVar">E2</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E2</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3d%29%29" class="RktValLink" data-pltdoc="x">%=</a></span><span class="stt"> </span><span class="RktVar">E1</span><span class="stt"> </span><span class="RktVar">E2</span><span class="RktPn">)</span> succeeds if <span class="RktVar">E1</span> can be unified with
<span class="RktVar">E2</span>. Any resulting bindings for logic variables are kept.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25/~3d))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25%2F~3d%29%29" class="RktValDef RktValLink" data-pltdoc="x">%/=</a></span></span><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span><span class="RktVar">E2</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E2</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25%2F~3d%29%29" class="RktValLink" data-pltdoc="x">%/=</a></span> is the negation of <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3d%29%29" class="RktValLink" data-pltdoc="x">%=</a></span>.
The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25%2F~3d%29%29" class="RktValLink" data-pltdoc="x">%/=</a></span><span class="stt"> </span><span class="RktVar">E1</span><span class="stt"> </span><span class="RktVar">E2</span><span class="RktPn">)</span> succeeds if <span class="RktVar">E1</span> can not be unified
with <span class="RktVar">E2</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25~3d~3d))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3d~3d%29%29" class="RktValDef RktValLink" data-pltdoc="x">%==</a></span></span><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span><span class="RktVar">E2</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E2</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3d~3d%29%29" class="RktValLink" data-pltdoc="x">%==</a></span><span class="stt"> </span><span class="RktVar">E1</span><span class="stt"> </span><span class="RktVar">E2</span><span class="RktPn">)</span> succeeds if <span class="RktVar">E1</span> is <span style="font-style: italic">identical</span>
to <span class="RktVar">E2</span>. They should be structurally equal. If containing
logic variables, they should have the same variables in the
same position. Unlike a <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3d%29%29" class="RktValLink" data-pltdoc="x">%=</a></span>-call, this goal will not bind
any logic variables.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25/~3d~3d))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25%2F~3d~3d%29%29" class="RktValDef RktValLink" data-pltdoc="x">%/==</a></span></span><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span><span class="RktVar">E2</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E2</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25%2F~3d~3d%29%29" class="RktValLink" data-pltdoc="x">%/==</a></span> is the negation of <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3d~3d%29%29" class="RktValLink" data-pltdoc="x">%==</a></span>.
The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25%2F~3d~3d%29%29" class="RktValLink" data-pltdoc="x">%/==</a></span><span class="stt"> </span><span class="RktVar">E1</span><span class="stt"> </span><span class="RktVar">E2</span><span class="RktPn">)</span> succeeds if <span class="RktVar">E1</span> and <span class="RktVar">E2</span> are not
identical.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>syntax</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racklog/main..rkt)._~25is))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25is%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">%is</a></span></span><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span><span class="RktVar">E2</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25is%29%29" class="RktStxLink" data-pltdoc="x">%is</a></span><span class="stt"> </span><span class="RktVar">E1</span><span class="stt"> </span><span class="RktVar">E2</span><span class="RktPn">)</span> unifies with <span class="RktVar">E1</span> the result of
evaluating <span class="RktVar">E2</span> as a Racket expression. <span class="RktVar">E2</span> may contain
logic variables, which are dereferenced automatically.
Fails if <span class="RktVar">E2</span> contains unbound logic variables.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>parameter</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._use-occurs-check~3f))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._use-occurs-check~3f%29%29" class="RktValDef RktValLink" data-pltdoc="x">use-occurs-check?</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._boolean%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">boolean?</a></span></p></blockquote></td></tr><tr><td><span class="RktPn">(</span><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._use-occurs-check~3f%29%29" class="RktValDef RktValLink" data-pltdoc="x">use-occurs-check?</a></span></span><span class="hspace"> </span><span class="RktVar">on?</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">void?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">on?</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._boolean%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">boolean?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">If this is false (the default),
Racklog’s unification will not use the occurs check.
If it is true, the occurs check is enabled.</div></p><h4 x-source-module="(lib "racklog/racklog.scrbl")" x-part-tag=""Numeric_Predicates"">11.8<tt> </tt><a name="(part._.Numeric_.Predicates)"></a>Numeric Predicates</h4><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25~3c))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3c%29%29" class="RktValDef RktValLink" data-pltdoc="x">%<</a></span></span><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span><span class="RktVar">E2</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E2</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3c%29%29" class="RktValLink" data-pltdoc="x">%<</a></span><span class="stt"> </span><span class="RktVar">E1</span><span class="stt"> </span><span class="RktVar">E2</span><span class="RktPn">)</span> succeeds if <span class="RktVar">E1</span> and <span class="RktVar">E2</span> are bound to
numbers and <span class="RktVar">E1</span> is less than <span class="RktVar">E2</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25~3c~3d))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3c~3d%29%29" class="RktValDef RktValLink" data-pltdoc="x">%<=</a></span></span><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span><span class="RktVar">E2</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E2</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3c~3d%29%29" class="RktValLink" data-pltdoc="x">%<=</a></span><span class="stt"> </span><span class="RktVar">E1</span><span class="stt"> </span><span class="RktVar">E2</span><span class="RktPn">)</span> succeeds if <span class="RktVar">E1</span> and <span class="RktVar">E2</span> are bound to
numbers and <span class="RktVar">E1</span> is less than or equal to <span class="RktVar">E2</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25~3d/~3d))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3d%2F~3d%29%29" class="RktValDef RktValLink" data-pltdoc="x">%=/=</a></span></span><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span><span class="RktVar">E2</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E2</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3d%2F~3d%29%29" class="RktValLink" data-pltdoc="x">%=/=</a></span><span class="stt"> </span><span class="RktVar">E1</span><span class="stt"> </span><span class="RktVar">E2</span><span class="RktPn">)</span> succeeds if <span class="RktVar">E1</span> and <span class="RktVar">E2</span> are bound to
numbers and <span class="RktVar">E1</span> is not equal to <span class="RktVar">E2</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25~3d~3a~3d))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3d~3a~3d%29%29" class="RktValDef RktValLink" data-pltdoc="x">%=:=</a></span></span><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span><span class="RktVar">E2</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E2</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3d~3a~3d%29%29" class="RktValLink" data-pltdoc="x">%=:=</a></span><span class="stt"> </span><span class="RktVar">E1</span><span class="stt"> </span><span class="RktVar">E2</span><span class="RktPn">)</span> succeeds if <span class="RktVar">E1</span> and <span class="RktVar">E2</span> are bound to
numbers and <span class="RktVar">E1</span> is equal to <span class="RktVar">E2</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25~3e))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3e%29%29" class="RktValDef RktValLink" data-pltdoc="x">%></a></span></span><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span><span class="RktVar">E2</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E2</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3e%29%29" class="RktValLink" data-pltdoc="x">%></a></span><span class="stt"> </span><span class="RktVar">E1</span><span class="stt"> </span><span class="RktVar">E2</span><span class="RktPn">)</span> succeeds if <span class="RktVar">E1</span> and <span class="RktVar">E2</span> are bound to
numbers and <span class="RktVar">E1</span> is greater than <span class="RktVar">E2</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25~3e~3d))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3e~3d%29%29" class="RktValDef RktValLink" data-pltdoc="x">%>=</a></span></span><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span><span class="RktVar">E2</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E2</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25~3e~3d%29%29" class="RktValLink" data-pltdoc="x">%>=</a></span><span class="stt"> </span><span class="RktVar">E1</span><span class="stt"> </span><span class="RktVar">E2</span><span class="RktPn">)</span> succeeds if <span class="RktVar">E1</span> and <span class="RktVar">E2</span> are bound to
numbers and <span class="RktVar">E1</span> is greater than or equal to <span class="RktVar">E2</span>.</div></p><h4 x-source-module="(lib "racklog/racklog.scrbl")" x-part-tag=""List_Predicates"">11.9<tt> </tt><a name="(part._.List_.Predicates)"></a>List Predicates</h4><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25append))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25append%29%29" class="RktValDef RktValLink" data-pltdoc="x">%append</a></span></span><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span><span class="RktVar">E2</span><span class="hspace"> </span><span class="RktVar">E3</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E2</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E3</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25append%29%29" class="RktValLink" data-pltdoc="x">%append</a></span><span class="stt"> </span><span class="RktVar">E1</span><span class="stt"> </span><span class="RktVar">E2</span><span class="stt"> </span><span class="RktVar">E3</span><span class="RktPn">)</span> succeeds if <span class="RktVar">E3</span> is unifiable
with the list obtained by appending <span class="RktVar">E1</span> and <span class="RktVar">E2</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25member))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25member%29%29" class="RktValDef RktValLink" data-pltdoc="x">%member</a></span></span><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span><span class="RktVar">E2</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E2</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25member%29%29" class="RktValLink" data-pltdoc="x">%member</a></span><span class="stt"> </span><span class="RktVar">E1</span><span class="stt"> </span><span class="RktVar">E2</span><span class="RktPn">)</span> succeeds if <span class="RktVar">E1</span> is a member
of the list in <span class="RktVar">E2</span>.</div></p><h4 x-source-module="(lib "racklog/racklog.scrbl")" x-part-tag=""Set_Predicates"">11.10<tt> </tt><a name="(part._.Set_.Predicates)"></a>Set Predicates</h4><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25set-of))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25set-of%29%29" class="RktValDef RktValLink" data-pltdoc="x">%set-of</a></span></span><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span><span class="RktVar">G</span><span class="hspace"> </span><span class="RktVar">E2</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">G</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E2</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25set-of%29%29" class="RktValLink" data-pltdoc="x">%set-of</a></span><span class="stt"> </span><span class="RktVar">E1</span><span class="stt"> </span><span class="RktVar">G</span><span class="stt"> </span><span class="RktVar">E2</span><span class="RktPn">)</span> unifies with <span class="RktVar">E2</span> the <span style="font-style: italic">set</span>
of all the
instantiations of <span class="RktVar">E1</span> for which goal <span class="RktVar">G</span> succeeds.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25set-of-1))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25set-of-1%29%29" class="RktValDef RktValLink" data-pltdoc="x">%set-of-1</a></span></span><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span><span class="RktVar">G</span><span class="hspace"> </span><span class="RktVar">E2</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">G</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E2</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Similar to <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25set-of%29%29" class="RktValLink" data-pltdoc="x">%set-of</a></span>, but fails if the set is empty.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25bag-of))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25bag-of%29%29" class="RktValDef RktValLink" data-pltdoc="x">%bag-of</a></span></span><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span><span class="RktVar">G</span><span class="hspace"> </span><span class="RktVar">E2</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">G</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E2</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25bag-of%29%29" class="RktValLink" data-pltdoc="x">%bag-of</a></span><span class="stt"> </span><span class="RktVar">E1</span><span class="stt"> </span><span class="RktVar">G</span><span class="stt"> </span><span class="RktVar">E2</span><span class="RktPn">)</span> unifies with <span class="RktVar">E2</span> the <span style="font-style: italic">bag</span>
(multiset)
of all the
instantiations of <span class="RktVar">E1</span> for which goal <span class="RktVar">G</span> succeeds.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25bag-of-1))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25bag-of-1%29%29" class="RktValDef RktValLink" data-pltdoc="x">%bag-of-1</a></span></span><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span><span class="RktVar">G</span><span class="hspace"> </span><span class="RktVar">E2</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E1</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">G</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E2</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Similar to <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25bag-of%29%29" class="RktValLink" data-pltdoc="x">%bag-of</a></span>, but fails if the bag is empty.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>syntax</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._racklog/main..rkt)._~25free-vars))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28form._%28%28lib._racklog%2Fmain..rkt%29._~25free-vars%29%29" class="RktStxDef RktStxLink" data-pltdoc="x">%free-vars</a></span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktVar">V</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktVar">G</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="stt"> </span></td></tr><tr><td><blockquote class="SubFlow"><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace"> </span></td><td><span class="RktVar">V</span></td><td><span class="hspace"> </span></td><td>:</td><td><span class="hspace"> </span></td><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=stxops.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fstx..rkt%2529._identifier%7E3f%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">identifier?</a></span></td></tr></table><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace"> </span></td><td><span class="RktVar">G</span></td><td><span class="hspace"> </span></td><td>:</td><td><span class="hspace"> </span></td><td><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></td></tr></table></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Identifies
the occurrences of the variables <span class="RktVar">V</span>, ..., in goal
<span class="RktVar">G</span> as free. It is used to avoid existential quantification
in calls to set predicates (<span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25bag-of%29%29" class="RktValLink" data-pltdoc="x">%bag-of</a></span>, <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25set-of%29%29" class="RktValLink" data-pltdoc="x">%set-of</a></span>, &c.).</div></p><h4 x-source-module="(lib "racklog/racklog.scrbl")" x-part-tag=""Racklog_Predicates"">11.11<tt> </tt><a name="(part._.Racklog_.Predicates)"></a>Racklog Predicates</h4><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25compound))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25compound%29%29" class="RktValDef RktValLink" data-pltdoc="x">%compound</a></span></span><span class="hspace"> </span><span class="RktVar">E</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25compound%29%29" class="RktValLink" data-pltdoc="x">%compound</a></span><span class="stt"> </span><span class="RktVar">E</span><span class="RktPn">)</span> succeeds if <span class="RktVar">E</span> is a compound
value.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25constant))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25constant%29%29" class="RktValDef RktValLink" data-pltdoc="x">%constant</a></span></span><span class="hspace"> </span><span class="RktVar">E</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25constant%29%29" class="RktValLink" data-pltdoc="x">%constant</a></span><span class="stt"> </span><span class="RktVar">E</span><span class="RktPn">)</span> succeeds if <span class="RktVar">E</span> is an atomic
value.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25var))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25var%29%29" class="RktValDef RktValLink" data-pltdoc="x">%var</a></span></span><span class="hspace"> </span><span class="RktVar">E</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25var%29%29" class="RktValLink" data-pltdoc="x">%var</a></span><span class="stt"> </span><span class="RktVar">E</span><span class="RktPn">)</span> succeeds if <span class="RktVar">E</span> is not completely
instantiated, ie, it has at least one unbound variable in
it.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25nonvar))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25nonvar%29%29" class="RktValDef RktValLink" data-pltdoc="x">%nonvar</a></span></span><span class="hspace"> </span><span class="RktVar">E</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">E</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25nonvar%29%29" class="RktValLink" data-pltdoc="x">%nonvar</a></span> is the negation of <span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25var%29%29" class="RktValLink" data-pltdoc="x">%var</a></span>.
The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25nonvar%29%29" class="RktValLink" data-pltdoc="x">%nonvar</a></span><span class="stt"> </span><span class="RktVar">E</span><span class="RktPn">)</span> succeeds if <span class="RktVar">E</span> is completely
instantiated, ie, it has no unbound variable in it.</div></p><h4 x-source-module="(lib "racklog/racklog.scrbl")" x-part-tag=""Racklog_Variable_Manipulation"">11.12<tt> </tt><a name="(part._.Racklog_.Variable_.Manipulation)"></a>Racklog Variable Manipulation</h4><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25freeze))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25freeze%29%29" class="RktValDef RktValLink" data-pltdoc="x">%freeze</a></span></span><span class="hspace"> </span><span class="RktVar">S</span><span class="hspace"> </span><span class="RktVar">F</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">S</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">F</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25freeze%29%29" class="RktValLink" data-pltdoc="x">%freeze</a></span><span class="stt"> </span><span class="RktVar">S</span><span class="stt"> </span><span class="RktVar">F</span><span class="RktPn">)</span> unifies with <span class="RktVar">F</span> a new frozen
version of the structure in <span class="RktVar">S</span>. Freezing implies that all
the unbound variables are preserved. <span class="RktVar">F</span> can henceforth be
used as <span style="font-style: italic">bound</span> object with no fear of its variables
getting bound by unification.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25melt))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25melt%29%29" class="RktValDef RktValLink" data-pltdoc="x">%melt</a></span></span><span class="hspace"> </span><span class="RktVar">F</span><span class="hspace"> </span><span class="RktVar">S</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">F</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">S</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25melt%29%29" class="RktValLink" data-pltdoc="x">%melt</a></span><span class="stt"> </span><span class="RktVar">F</span><span class="stt"> </span><span class="RktVar">S</span><span class="RktPn">)</span> unifies <span class="RktVar">S</span> with the thawed
(original) form of the frozen structure in <span class="RktVar">F</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25melt-new))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25melt-new%29%29" class="RktValDef RktValLink" data-pltdoc="x">%melt-new</a></span></span><span class="hspace"> </span><span class="RktVar">F</span><span class="hspace"> </span><span class="RktVar">S</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">F</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">S</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25melt-new%29%29" class="RktValLink" data-pltdoc="x">%melt-new</a></span><span class="stt"> </span><span class="RktVar">F</span><span class="stt"> </span><span class="RktVar">S</span><span class="RktPn">)</span> unifies <span class="RktVar">S</span> with a thawed
<span style="font-style: italic">copy</span> of the frozen structure in <span class="RktVar">F</span>. This means
new logic variables are used for unbound logic variables in
<span class="RktVar">F</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._racklog/main..rkt)._~25copy))"></a><span title="Provided from: racklog | Package: racklog"><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25copy%29%29" class="RktValDef RktValLink" data-pltdoc="x">%copy</a></span></span><span class="hspace"> </span><span class="RktVar">F</span><span class="hspace"> </span><span class="RktVar">S</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._goal%2Fc%29%29" class="RktValLink" data-pltdoc="x">goal/c</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">F</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">S</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._unifiable~3f%29%29" class="RktValLink" data-pltdoc="x">unifiable?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">The goal <span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._racklog%2Fmain..rkt%29._~25copy%29%29" class="RktValLink" data-pltdoc="x">%copy</a></span><span class="stt"> </span><span class="RktVar">F</span><span class="stt"> </span><span class="RktVar">S</span><span class="RktPn">)</span> unifies with <span class="RktVar">S</span> a copy of the
frozen structure in <span class="RktVar">F</span>.</div></p><div class="navsetbottom"><span class="navleft"><form class="searchform"><input class="searchbox" style="color: #888;" type="text" value="...search manuals..." title="Enter a search string to search the manuals" onkeypress="return DoSearchKey(event, this, "6.1", "../");" onfocus="this.style.color="black"; this.style.textAlign="left"; if (this.value == "...search manuals...") this.value="";" onblur="if (this.value.match(/^ *$/)) { this.style.color="#888"; this.style.textAlign="center"; this.value="...search manuals..."; }"/></form> <a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot("6.1");">top</a></span><span class="navright"> <a href="Racklog_Module_Language.html" title="backward to "10 Racklog Module Language"" data-pltdoc="x">← prev</a> <a href="index.html" title="up to "Racklog: Prolog-Style Logic Programming"" data-pltdoc="x">up</a> <a href="doc-bibliography.html" title="forward to "Bibliography"" data-pltdoc="x">next →</a></span> </div></div></div><div id="contextindicator"> </div></body></html>
|