diff --git a/notes/008-geolog-to-datalog-subset.md b/notes/008-geolog-to-datalog-subset.md index 2965580..2b994af 100644 --- a/notes/008-geolog-to-datalog-subset.md +++ b/notes/008-geolog-to-datalog-subset.md @@ -440,6 +440,56 @@ Here is a useful one-sentence definition: --- +## How Useful This Subset Would Be + +This subset would be genuinely useful, but only for the right jobs. + +It would be useful for: + +- understanding a Geolog theory in simpler rule form, +- debugging the rule part of a theory, +- exporting some Geolog programs to Datalog tools, +- comparing Geolog evaluation with Datalog evaluation, +- and teaching the parts of Geolog that are close to rule-based database logic. + +It would be especially useful for theories that are mostly: + +- relation-based, +- rule-based, +- and not dependent on creating fresh objects during chase. + +Good examples include: + +- graph reachability, +- transitive closure, +- propagation rules, +- dependency rules, +- and many database-style logic programs. + +But this subset would not cover the full point of Geolog. + +It becomes less useful when a theory depends on: + +- existential conclusions, +- equality-heavy reasoning, +- or the full meaning of native functions. + +So the best way to think about it is this: + +- it is a very useful **bridge**, +- a useful **debugging view**, +- and a useful **restricted compilation target**, +- but it is not a replacement for full Geolog. + +If built well, the ideal behavior would be: + +- if a Geolog program fits inside the subset, export it cleanly, +- if it does not fit, explain clearly why not. + +That alone would make the subset valuable. + +--- + ## Final Summary If you only want a practical translator, the right plan is: @@ -451,4 +501,3 @@ If you only want a practical translator, the right plan is: - reject existential and equality-heavy features. That gives a subset that is useful, understandable, and realistic to translate automatically. -