diff options
Diffstat (limited to 'readme.md')
| -rw-r--r-- | readme.md | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -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 |
