(index ("csp-solution" 0) ("create-domain-variable" 255) ("*csp-strategy*" 406) ("assert-constraint!" 406) ("bound?" 1101) ("binding" 1101) ("assert-unary-constraint-efd!" 1290) ("assert-binary-constraint-efd!" 1290) ("assert-ternary-constraint-efd!" 1290) ("assert-unary-constraint-fc!" 1290) ("assert-binary-constraint-fc!" 1290) ("assert-ternary-constraint-fc!" 1290) ("assert-unary-constraint-vp!" 1290) ("assert-binary-constraint-vp!" 1290) ("assert-ternary-constraint-vp!" 1290) ("assert-unary-constraint-gfc!" 1290) ("assert-binary-constraint-gfc!" 1290) ("assert-ternary-constraint-gfc!" 1290) ("assert-unary-constraint-ac!" 1290) ("assert-binary-constraint-ac!" 1290) ("assert-ternary-constraint-ac!" 1290) ("assert-constraint-efd!" 2970) ("assert-constraint-fc!" 2970) ("assert-constraint-vp!" 2970) ("assert-constraint-gfc!" 2970) ("assert-constraint-ac!" 2970) ("attach-before-demon!" 3624) ("attach-after-demon!" 3624) ("restrict-domain!" 3624))
(def (sig (procedure "(csp-solution domain-variables select)" (id csp-solution))) (p "Given a list of domain variables and a function to select which one to try to bind next, one can simply pass in " (i "first") ", this produces a solution to the CSP."))
(def (sig (procedure "(create-domain-variable domain)" (id create-domain-variable))) (p "Create a domain variable whose domain is " (i "domain") "."))
(def (sig (parameter "*csp-strategy*" (id *csp-strategy*)) (procedure "(assert-constraint! constraint domain-variables)" (id assert-constraint!))) (p "Assert a constraint, a function that returns a boolean, between a number of domain variables. The kind of constraint is determined by inspecting " (i "*csp-strategy*") ". Valid types are: " (i "efd") " (early failure detection), " (i "fc") " (forward checking), " (i "vp") " (value propagation), " (i "gfc") " (generalized forward checking) and " (i "ac") " (arc consistency). The default is " (i "ac") ". For constraints of low arity, a small number of domain variables, it will use an optimized version of the constraint propagation code."))
(def (sig (procedure "(bound? domain-variable)" (id bound?)) (procedure "(binding domain-variable)" (id binding))) (p "Determine if the domain variable is bound and what its binding is."))
(def (sig (procedure "(assert-unary-constraint-efd! constraint x)" (id assert-unary-constraint-efd!)) (procedure "(assert-binary-constraint-efd! constraint x y)" (id assert-binary-constraint-efd!)) (procedure "(assert-ternary-constraint-efd! constraint x y z)" (id assert-ternary-constraint-efd!)) (procedure "(assert-unary-constraint-fc! constraint x)" (id assert-unary-constraint-fc!)) (procedure "(assert-binary-constraint-fc! constraint x y)" (id assert-binary-constraint-fc!)) (procedure "(assert-ternary-constraint-fc! constraint x y z)" (id assert-ternary-constraint-fc!)) (procedure "(assert-unary-constraint-vp! constraint x)" (id assert-unary-constraint-vp!)) (procedure "(assert-binary-constraint-vp! constraint x y)" (id assert-binary-constraint-vp!)) (procedure "(assert-ternary-constraint-vp! constraint x y z)" (id assert-ternary-constraint-vp!)) (procedure "(assert-unary-constraint-gfc! constraint x)" (id assert-unary-constraint-gfc!)) (procedure "(assert-binary-constraint-gfc! constraint x y)" (id assert-binary-constraint-gfc!)) (procedure "(assert-ternary-constraint-gfc! constraint x y z)" (id assert-ternary-constraint-gfc!)) (procedure "(assert-unary-constraint-ac! constraint x)" (id assert-unary-constraint-ac!)) (procedure "(assert-binary-constraint-ac! constraint x y)" (id assert-binary-constraint-ac!)) (procedure "(assert-ternary-constraint-ac! constraint x y z)" (id assert-ternary-constraint-ac!))) (p "Assert each of the 5 kinds of constraints between domain-variables " (i "x") ", " (i "y") " and " (i "z") ". You can always use " (i "assert-constraint!") " instead and it will default to these functions if your constraint is of low arity."))
(def (sig (procedure "(assert-constraint-efd! constraint ds)" (id assert-constraint-efd!)) (procedure "(assert-constraint-fc! constraint ds)" (id assert-constraint-fc!)) (procedure "(assert-constraint-vp! constraint ds)" (id assert-constraint-vp!)) (procedure "(assert-constraint-gfc! constraint ds)" (id assert-constraint-gfc!)) (procedure "(assert-constraint-ac! constraint ds)" (id assert-constraint-ac!))) (p "Assert each of the 5 kinds of constraints between the list of domain-variables ds. You can always use " (i "assert-constraint!") " instead as it will pick an optimized version for each of the above if the arity of the constraint is low."))
(def (sig (procedure "(attach-before-demon! demon x)" (id attach-before-demon!)) (procedure "(attach-after-demon! demon x)" (id attach-after-demon!)) (procedure "(restrict-domain! x domain)" (id restrict-domain!))) (p "Only of interest to implementers."))
