aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJedidiah Barber <contact@jedbarber.id.au>2026-02-09 14:52:20 +1300
committerJedidiah Barber <contact@jedbarber.id.au>2026-02-09 14:52:20 +1300
commitad7fc58a7097e19c49cbf4a7c11ae9c0a7086a52 (patch)
treeb96a2b3dd0e898c34dbd5cc95e5e543f098129f7
parentab78413a044900e421d2e0144f3c170bdc3f0b18 (diff)
Readme updated to note IDDFS use
-rw-r--r--readme.md12
1 files changed, 8 insertions, 4 deletions
diff --git a/readme.md b/readme.md
index 8b5fd08..e253567 100644
--- a/readme.md
+++ b/readme.md
@@ -92,10 +92,14 @@ programs.
Internally a Goal is structured as a directed acyclic graph. Evaluation of a
Goal involves inverting the arrows in the graph, interleaving those arrows
according to Disjunct choices made from the top to get there, and then running
-a depth-first search from the bottom upwards using the inverted graph. When
-a Conjunct node is encountered it is expanded, inverted, and interleaved in a
-similar way before the search continues. The inversions and expanded portions
-are all discarded once evaluation is complete.
+an iterative deepening depth-first search from the bottom upwards using the
+inverted graph. The depth limit that is iterated on is the number of Conjunct
+nodes seen. When a Conjunct node is encountered it is expanded, inverted,
+and interleaved before the search continues. If too many Conjunct nodes have
+been encountered, the search will backtrack to before where the first one was,
+increase the limit, and keep going on other branches before coming back later.
+The inversions and expanded portions are all discarded once evaluation is
+complete.
The State datatype makes use of a Vector of Variable->Term bindings and a
Hashed_Map to get from Variable to the index for the Vector. Both are needed so