From ad7fc58a7097e19c49cbf4a7c11ae9c0a7086a52 Mon Sep 17 00:00:00 2001 From: Jedidiah Barber Date: Mon, 9 Feb 2026 14:52:20 +1300 Subject: Readme updated to note IDDFS use --- readme.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'readme.md') 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 -- cgit