summaryrefslogtreecommitdiff
path: root/runtime/README.md
diff options
context:
space:
mode:
authorMatthew Sotoudeh <masotoudeh@ucdavis.edu>2020-11-10 14:16:20 -0800
committerGitHub <noreply@github.com>2020-11-10 14:16:20 -0800
commitde88829eccd369aa1872413d6068d5179468c47e (patch)
tree1947f69081b4f647c643b0f9d5ce8c246a9b097c /runtime/README.md
parentdb99b3af36fa4687c734e1c74d83157d2f10c9ed (diff)
parentbe64046354a0451869d475e7f0d35f4eb2344c93 (diff)
Initial Code ReleaseHEADmaster
Contains code for reproducing the demos from our Onward '20 paper about Sifter.
Diffstat (limited to 'runtime/README.md')
-rw-r--r--runtime/README.md33
1 files changed, 33 insertions, 0 deletions
diff --git a/runtime/README.md b/runtime/README.md
new file mode 100644
index 0000000..e080a99
--- /dev/null
+++ b/runtime/README.md
@@ -0,0 +1,33 @@
+# Triplet Structure Runtime
+
+This folder contains a triplet structure runtime implementation. The goal of
+the runtime is to take a Triplet Structure (see ``../ts_lib.py``), parse the
+"operational" nodes (eg. rules and tactics), then apply the rules so that some
+goal is achieved (eg. getting rid of TOP nodes).
+
+At a high level:
+- `runtime.py` operates as the main data structure which keeps track of the
+ information needed and produced during the execution.
+- `solver.py` has methods that allow for existential queries on the
+ corresponding Structure. For example, you might look for nodes 1, 2 such that
+ facts (1, 2, "/:Mapper:TOP") and (2, 1, 2) both hold in the structure.
+- `pattern.py` is essentially a higher-level interface to the Solver. Each
+ `Pattern` instance corresponds to a single pattern/existential query.
+- `production_rule.py` can be thought of as an _even higher_ level interface to
+ the `Patterns`. Each `ProductionRule` corresponds to one ``/RULE` node in the
+ Structure. ProductionRules can have relatively complicated mapping
+ strategies, eg. "find an assignment satisfying ... but not ..."
+- `assignment.py` describes a satisfying assignment to a `ProductionRule`.
+ `Assignment`s are an intermediate step between matching a pattern and then
+ constructing the actual delta corresponding to the match/rule.
+- `delta.py` describes `TSDeltas`, which describe a modification (add/remove
+ nodes/facts) to the structure. They are produced by `Assignments` which are
+ produced by `ProductionRules`.
+- `tactic.py` describes `Tactic`s, which are essentially heuristics that
+ control the application of rules (and other tactics).
+- `interactive.py` is an interactive REPL for manually/semi-automatically
+ applying rules, tactics, etc. to the structure.
+- `shadow_input.py` is used by `interactive.py` to allow the user to record,
+ save, and replay their commands.
+- `utils.py` contains helper methods for the rest of the runtime. Most useful
+ is the Translator, which cleans up some common operations with dictionaries.
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback