diff options
| author | Marcos Magueta <maguetamarcos@gmail.com> | 2026-07-11 23:39:40 -0300 |
|---|---|---|
| committer | Marcos Magueta <maguetamarcos@gmail.com> | 2026-07-11 23:39:40 -0300 |
| commit | 726f3dfb116ec9265041e642000612831633fe3c (patch) | |
| tree | cac0e9e4e967e2f78163d1429213b69ff959e60b /lib/world.mli | |
| parent | 5d967951eb0b08c36ee59f70d7f4cca37b0ca72b (diff) | |
| download | SOL-726f3dfb116ec9265041e642000612831633fe3c.tar.gz SOL-726f3dfb116ec9265041e642000612831633fe3c.zip | |
mutual recursion admitted under lexicographic measures
Diffstat (limited to 'lib/world.mli')
| -rw-r--r-- | lib/world.mli | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/world.mli b/lib/world.mli index 51ee078..14f82d3 100644 --- a/lib/world.mli +++ b/lib/world.mli @@ -29,11 +29,13 @@ type rule = { rule_name : string; head : Pattern.t Label.Map.t; body : expr; - witness : Label.t option; - (** For a recursive rule, the label whose argument strictly - decreases. The VM requires it ground before unfolding, - which is what turns the admission proof into runtime - termination. [None] on non-recursive rules. *) + witness : Label.t list; + (** For a recursive rule, the lexicographic measure of its + call-graph component: at some position the recursive + argument strictly decreases, all earlier positions staying + equal. The VM requires every position ground before + unfolding, which is what turns the admission proof into + runtime termination. Empty on non-recursive rules. *) } (** The primitive host-checked domains. *) |
