12 Glossary of Racklog Primitives
12.1 Racket Predicates
procedure
(logic-var? x) → boolean?
x : any/c
procedure
(atomic-struct? x) → boolean?
x : any/c
procedure
(compound-struct? x) → boolean?
x : any/c
procedure
(unifiable? x) → boolean?
x : any/c
procedure
(answer-value? x) → boolean?
x : any/c
12.2 User Interface
syntax
(%which (V ...) G ...)
V : identifier?
G : goal/c
syntax
(%find-all (V ...) G ...)
V : identifier?
G : goal/c
12.3 Relations
syntax
(%rel (V ...) clause ...)
clause = [(E ...) G ...]
V : identifier?
E : expression?
G : goal/c
procedure
(%empty-rel E ...) → goal/c
E : unifiable?
syntax
(%assert! Pname (V ...) clause ...)
Pname : identifier?
V : identifier?
syntax
(%assert-after! Pname (V ...) clause ...)
Pname : identifier?
V : identifier?
12.4 Racklog Variables
procedure
(_) → logic-var?
syntax
(%let (V ...) expr ...)
V : identifier?
12.5 Cut
syntax
(%cut-delimiter . any)
syntax
May only be used syntactically inside %cut-delimiter or %rel.
12.6 Racklog Operators
procedure
(%if-then-else G1 G2 G3) → goal/c
G1 : goal/c G2 : goal/c G3 : goal/c
12.7 Unification
procedure
E1 : unifiable? E2 : unifiable?
procedure
E1 : unifiable? E2 : unifiable?
procedure
E1 : unifiable? E2 : unifiable?
procedure
E1 : unifiable? E2 : unifiable?
syntax
(%is E1 E2)
parameter
(use-occurs-check? on?) → void? on? : boolean?
12.8 Numeric Predicates
procedure
E1 : unifiable? E2 : unifiable?
procedure
E1 : unifiable? E2 : unifiable?
procedure
E1 : unifiable? E2 : unifiable?
procedure
E1 : unifiable? E2 : unifiable?
procedure
E1 : unifiable? E2 : unifiable?
procedure
E1 : unifiable? E2 : unifiable?
12.9 List Predicates
procedure
E1 : unifiable? E2 : unifiable? E3 : unifiable?
procedure
E1 : unifiable? E2 : unifiable?
12.10 Set Predicates
procedure
E1 : unifiable? G : goal/c E2 : unifiable?
procedure
E1 : unifiable? G : goal/c E2 : unifiable?
procedure
E1 : unifiable? G : goal/c E2 : unifiable?
procedure
E1 : unifiable? G : goal/c E2 : unifiable?
syntax
(%free-vars (V ...) G)
V : identifier?
G : goal/c
12.11 Racklog Predicates
procedure
E : unifiable?
procedure
E : unifiable?
procedure
E : unifiable?
procedure
E : unifiable?
12.12 Higher-order Predicates
procedure
P : unifiable? L : unifiable?
The goal will fail if L is not sufficiently instantiated to determine its length.
(%= 1 X)
procedure
P : unifiable? L : unifiable?
12.13 Racklog Variable Manipulation
procedure
S : unifiable? F : unifiable?
procedure
F : unifiable? S : unifiable?
procedure
F : unifiable? S : unifiable?
procedure
F : unifiable? S : unifiable?