eyeprolog 1.6.41 → 1.6.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/README.md +7 -0
  2. package/SPEC.md +100 -16
  3. package/arc-in-eyeprolog.md +15 -12
  4. package/examples/check/blocks-world-planning.pl +4 -9
  5. package/examples/check/clpz-factorial.pl +8 -8
  6. package/examples/check/clpz-global-constraints.pl +8 -8
  7. package/examples/check/clpz-n-queens.pl +8 -8
  8. package/examples/check/clpz-resource-allocation.pl +8 -8
  9. package/examples/check/data-negotiation.pl +5 -6
  10. package/examples/check/declarative-fault-localization.pl +8 -8
  11. package/examples/check/delfour.pl +4 -5
  12. package/examples/check/dialogical-reasoning.pl +20 -0
  13. package/examples/check/dijkstra.pl +5 -22
  14. package/examples/check/flandor.pl +4 -5
  15. package/examples/check/graph-reachability.pl +4 -10
  16. package/examples/check/hamiltonian-path.pl +5 -413
  17. package/examples/check/iso-control-and-errors.pl +10 -11
  18. package/examples/check/manufacturing-quality-control.pl +8 -8
  19. package/examples/check/microgrid-dispatch.pl +8 -8
  20. package/examples/check/missionaries-cannibals.pl +4 -15
  21. package/examples/check/odrl-policy-reasoning.pl +4 -6
  22. package/examples/check/partial-evaluator.pl +4 -6
  23. package/examples/check/path-discovery.pl +5 -12
  24. package/examples/check/quine-mccluskey.pl +8 -8
  25. package/examples/check/sbom-vulnerability-response.pl +4 -7
  26. package/examples/check/symbiotic-knowledge-graph.pl +10 -11
  27. package/examples/check/weighted-interval-scheduling.pl +8 -8
  28. package/examples/check/wolf-goat-cabbage.pl +5 -17
  29. package/examples/deck/README.md +2 -1
  30. package/examples/deck/blocks-world-planning.md +8 -7
  31. package/examples/deck/clpz-factorial.md +8 -4
  32. package/examples/deck/clpz-global-constraints.md +8 -6
  33. package/examples/deck/clpz-n-queens.md +7 -6
  34. package/examples/deck/clpz-resource-allocation.md +5 -5
  35. package/examples/deck/data-negotiation.md +9 -10
  36. package/examples/deck/declarative-fault-localization.md +11 -8
  37. package/examples/deck/delfour.md +6 -5
  38. package/examples/deck/dialogical-reasoning.md +183 -0
  39. package/examples/deck/dijkstra.md +8 -7
  40. package/examples/deck/flandor.md +8 -7
  41. package/examples/deck/graph-reachability.md +7 -7
  42. package/examples/deck/hamiltonian-path.md +8 -7
  43. package/examples/deck/iso-control-and-errors.md +8 -5
  44. package/examples/deck/manufacturing-quality-control.md +8 -7
  45. package/examples/deck/microgrid-dispatch.md +7 -4
  46. package/examples/deck/missionaries-cannibals.md +8 -8
  47. package/examples/deck/partial-evaluator.md +6 -5
  48. package/examples/deck/path-discovery.md +10 -8
  49. package/examples/deck/quine-mccluskey.md +5 -4
  50. package/examples/deck/weighted-interval-scheduling.md +3 -2
  51. package/examples/deck/wolf-goat-cabbage.md +9 -10
  52. package/examples/dialogical-reasoning.pl +214 -0
  53. package/examples/dialogue/contract-dialogue.pl +24 -0
  54. package/examples/dialogue/contract-evidence-dialogue.pl +41 -0
  55. package/examples/dialogue/contract.pl +58 -0
  56. package/examples/dialogue/evidence.pl +5 -0
  57. package/examples/output/dialogical-reasoning.pl +48 -0
  58. package/examples/proof/clpz-factorial.pl +46 -8
  59. package/examples/proof/clpz-global-constraints.pl +24 -8
  60. package/examples/proof/clpz-n-queens.pl +554 -156
  61. package/examples/proof/clpz-resource-allocation.pl +4 -2
  62. package/examples/proof/declarative-fault-localization.pl +10 -4
  63. package/examples/proof/dialogical-reasoning.pl +2762 -0
  64. package/examples/proof/iso-control-and-errors.pl +8 -4
  65. package/examples/proof/manufacturing-quality-control.pl +8 -4
  66. package/examples/proof/microgrid-dispatch.pl +6 -1
  67. package/examples/proof/odrl-policy-reasoning.pl +8 -2
  68. package/examples/proof/quine-mccluskey.pl +6 -2
  69. package/examples/proof/symbiotic-knowledge-graph.pl +21 -3
  70. package/examples/proof/weighted-interval-scheduling.pl +21 -14
  71. package/index.d.ts +12 -1
  72. package/package.json +1 -1
  73. package/playground.html +3 -2
  74. package/src/check-proof.js +26 -4
  75. package/src/cli.js +45 -1
  76. package/src/dialogue.js +184 -0
  77. package/src/execute.js +4 -0
  78. package/src/explain.js +185 -2
  79. package/src/goal-metadata.js +55 -0
  80. package/src/index.js +1 -0
  81. package/src/proof-document.js +11 -3
  82. package/src/result-format.js +3 -1
  83. package/test/regression/cases-regression.mjs +21 -0
  84. package/test/regression/cases-white-box.mjs +51 -0
  85. package/test/run-playground.mjs +9 -0
  86. package/the-art-of-eyeprolog.md +62 -5
  87. package/why-eyeprolog.md +4 -4
package/README.md CHANGED
@@ -60,6 +60,13 @@ printf 'human(socrates).\nmortal(X) :- human(X).\n' |
60
60
  npx --yes eyeprolog --proof --goal 'mortal(socrates)' -
61
61
  ```
62
62
 
63
+ Or play the answer out as a dialogue, with the proof checker as the opponent:
64
+
65
+ ```sh
66
+ printf 'human(socrates).\nmortal(X) :- human(X).\n' |
67
+ npx --yes eyeprolog --dialogue --goal 'mortal(socrates)' -
68
+ ```
69
+
63
70
  ## Links
64
71
 
65
72
  - [The Art of EyeProlog](https://eyereasoner.github.io/eyeprolog/the-art-of-eyeprolog) — complete reference
package/SPEC.md CHANGED
@@ -41,9 +41,10 @@ of them.
41
41
  8. [Proof Documents](#8-proof-documents)
42
42
  9. [Proof Checking](#9-proof-checking)
43
43
  10. [Check Reports](#10-check-reports)
44
- 11. [Command Line](#11-command-line)
45
- 12. [Security Considerations](#12-security-considerations)
46
- 13. [Conformance](#13-conformance)
44
+ 11. [Dialogues](#11-dialogues)
45
+ 12. [Command Line](#12-command-line)
46
+ 13. [Security Considerations](#13-security-considerations)
47
+ 14. [Conformance](#14-conformance)
47
48
  - [Appendix A. Document Grammar](#appendix-a-document-grammar)
48
49
  - [Appendix B. Example](#appendix-b-example)
49
50
  - [Appendix C. Implementation Notes](#appendix-c-implementation-notes)
@@ -117,7 +118,7 @@ A clause number therefore depends only on the source text, never on what
117
118
 
118
119
  A run asks a sequence of goals. They are, in order of precedence:
119
120
 
120
- 1. the goals given on the command line with `--goal` (Section 11) or to the
121
+ 1. the goals given on the command line with `--goal` (Section 12) or to the
121
122
  embedding API;
122
123
  2. otherwise, the **declared goals** of the sources: each comment line of the
123
124
  form `%% ?- Goal.`, whose goal MAY continue on following lines that begin
@@ -159,7 +160,9 @@ the program's operator table and its `double_quotes` flag in force:
159
160
  as a double-quoted string, and a list ending in such a list is written
160
161
  `[a, b|"cd"]`;
161
162
  - a variable is written with its name: the name the program or document gave
162
- it, or a name the engine minted.
163
+ it, or a name the engine minted;
164
+ - a term `'$VAR'(N)` is written as itself, not as the variable letter
165
+ `writeq/1` would print for it: the letter would read back as a variable.
163
166
 
164
167
  The written text of a term MUST read back, with the same operators and flags,
165
168
  as a term identical to it up to the renaming of variables.
@@ -202,6 +205,17 @@ A goal `Module:Goal` is replayed as `Goal` in `Module`, as the solver runs it:
202
205
  in a bundled library under `abstract` detail as one `builtin` step for the
203
206
  qualified goal, and otherwise as a `control` step whose use is `Goal`.
204
207
 
208
+ A disjunction, an if-then, an if-then-else, a soft-cut and `call/1` are
209
+ replayed branch by branch and recorded as a `control` step resting on the
210
+ branch they took. The condition of an if-then-else commits to its first
211
+ solution, as execution does. A construct that took its else branch rests on
212
+ `\+ C`, recorded as an `absent` step, and then on the goals of `E`: the else
213
+ branch is only taken when the condition has no solution. A condition that
214
+ tests instantiation (`var/1`, `nonvar/1`, the type tests, `==/2`, `\==/2`,
215
+ the standard order comparisons, `compare/3`, `\+/1`) on a term that is not
216
+ yet ground is not split: its truth when tried can differ from its truth once
217
+ the derivation is complete, and the construct is one `builtin` step.
218
+
205
219
  A derivation deeper than the replay's nesting budget continues as a **chain**:
206
220
  each level commits to the first clause whose head matches the goal and whose
207
221
  body, up to a final call of a program predicate, is proved, and that final
@@ -378,14 +392,17 @@ order, to one of the **alternatives** of its goal:
378
392
  | --- | --- |
379
393
  | `call(G)`, `once(G)`, `ignore(G)`, `catch(G, C, R)`, `M:G` | the conjuncts of `G` |
380
394
  | `(C -> T)`, `(C *-> T)` | the conjuncts of `C`, then those of `T` |
381
- | `(C -> T ; E)`, `(C *-> T ; E)` | the conjuncts of `C`, then those of `T`; or the conjuncts of `E` |
395
+ | `(C -> T ; E)`, `(C *-> T ; E)` | the conjuncts of `C`, then those of `T`; or `\+ C`, then the conjuncts of `E` |
382
396
  | `(A ; B)` | the conjuncts of `A`; or the conjuncts of `B` |
383
397
 
384
398
  A `builtin` step with uses whose goal has alternatives and cannot be
385
399
  re-decided is held to the same rule, as written by earlier versions.
386
400
 
387
- `absent`, `collected` and `asserted` steps are trusted boundaries of their own
388
- kind, with the reason `theory_scoped`. When trusted boundaries are forbidden
401
+ An `absent` step whose goal is ground and whose inner goal is not one that
402
+ cannot be re-decided is re-decided as a `builtin` step is: when the re-decision
403
+ agrees, the step is checked rather than trusted, and when it disagrees, C5
404
+ fails. Otherwise `absent`, `collected` and `asserted` steps are trusted
405
+ boundaries of their own kind, with the reason `theory_scoped`. When trusted boundaries are forbidden
389
406
  ("strict"), each trusted boundary, of any kind, fails C5.
390
407
 
391
408
  ### 9.7 C6 Boundary consistency
@@ -454,7 +471,7 @@ reachable from a conjunct of a claim through the conjuncts of uses.
454
471
  | C2 well_founded | steps |
455
472
  | C3 justification | steps |
456
473
  | C4 coverage | claims plus the uses of all steps |
457
- | C5 re_decision | `builtin` steps that agreed plus `control` steps that composed |
474
+ | C5 re_decision | `builtin` and `absent` steps that agreed plus `control` steps that composed |
458
475
  | C6 boundary_consistency | boundaries decided |
459
476
  | C7 relevance | claims plus steps |
460
477
 
@@ -525,7 +542,70 @@ The JSON form of a report is an object with `valid` (boolean), `steps`,
525
542
  `{id, name, covered, failed}`), where `conclusion` is the written text of the
526
543
  term concerned.
527
544
 
528
- ## 11. Command Line
545
+ ## 11. Dialogues
546
+
547
+ A proof can be read as one side of an argument. In the dialogue logic of
548
+ Lorenzen and Lorenz, a **proponent** asserts a claim and an **opponent** may
549
+ challenge every assertion that is not common ground; the proponent answers a
550
+ challenge by naming what the assertion follows from, and the claim holds when
551
+ the proponent can answer every challenge. A checked proof is a defence of
552
+ this kind: the proponent's answers are its steps, and the opponent is the
553
+ checker (Section 9).
554
+
555
+ ### 11.1 Moves
556
+
557
+ A **dialogue** is held for each answer of a run, in answer order, numbered from
558
+ 1. Its first move is the proponent's `claims(Claim)`. The steps of the run's
559
+ proof (Section 8.3) are then visited from the claim, depth first and left to
560
+ right through the uses of each step, and each goal visited gives these moves:
561
+
562
+ | Goal's step | Moves |
563
+ | --- | --- |
564
+ | `rule(N)` or `control` | the opponent's `why(G)`, then the proponent's `because(G, By, Uses)` |
565
+ | `fact(N)`, or no step (a use given by a fact) | the opponent's `concedes(G)` |
566
+ | `builtin` or `absent` that the check re-decided | the opponent's `verifies(G)` |
567
+ | `builtin` or `absent` the check trusted, `collected`, `asserted` | the opponent's `grants(G)` |
568
+ | `unproven` | the proponent's `gives_up(G)` |
569
+
570
+ A goal already visited in the same dialogue gives only the opponent's
571
+ `concedes(G)`: it has been established. A failure the check recorded for a
572
+ step's conclusion (Section 10) gives the opponent's
573
+ `objects(G, Condition, Detail)` after the moves of that step, and ends the
574
+ dialogue, lost.
575
+
576
+ ### 11.2 Evidence
577
+
578
+ The opponent MAY hold **evidence**: clauses added to the program, which the
579
+ proponent did not use. Before it grants or verifies an `absent` step `\+ G`,
580
+ the opponent then solves `G` in the program with its evidence. When `G` has a
581
+ solution, the opponent's move is `counters(\+ G, Instance, Used)`, where
582
+ `Instance` is the first solution and `Used` the list of the evidence's clauses
583
+ in the first proof of `Instance`, in the order that proof visits them; the
584
+ defence is lost.
585
+
586
+ A countered defence is followed by the proponent's `retracts(Claim, By)`, where
587
+ `By` is the justification of the claim's step. Under the formal rule of
588
+ dialogue logic the proponent MAY then use what the opponent asserted: the run
589
+ is made again on the program with the evidence, and when the claim is among
590
+ its answers, its dialogue continues with the moves of that run's proof, which
591
+ no evidence counters. Otherwise the proponent's last move is
592
+ `gives_up(Claim)`.
593
+
594
+ ### 11.3 The dialogue document
595
+
596
+ A dialogue document holds, for each dialogue in order, one fact per line:
597
+
598
+ 1. `move(Dialogue, N, Speaker, Act)` for each move, `N` counting from 1 and
599
+ `Speaker` being `proponent` or `opponent`;
600
+ 2. `outcome(Dialogue, Claim, Result)`, `Result` being `won` when no move lost
601
+ the defence and `lost` otherwise;
602
+ 3. `obligation(Dialogue, Goal)` for each `grants(Goal)` of a won dialogue's
603
+ final defence, in move order: what the proponent's win still rests on.
604
+
605
+ Terms are written as in Section 6.1. A dialogue document is ordinary data: a
606
+ program MAY load it as facts.
607
+
608
+ ## 12. Command Line
529
609
 
530
610
  ```text
531
611
  eyeprolog [OPTION ...] [FILE-OR-URL ... | -]
@@ -543,10 +623,13 @@ The options that concern this document are:
543
623
  | `--strict-proof` | With `--check-proof`, forbid trusted boundaries. |
544
624
  | `--json` | With `--check-proof`, print the report as JSON. |
545
625
  | `--quiet` | With `--check-proof`, print only the `verdict/1` fact. |
626
+ | `-d`, `--dialogue` | Print the dialogue document (Section 11) instead of the answers. |
627
+ | `--evidence FILE` | Give the opponent the clauses of `FILE` as evidence (Section 11.2); implies `--dialogue`. |
546
628
  | `--iso-strict`, `--no-autoload` | Select the language profile (Section 3). |
547
629
  | `-h`, `--help`, `-v`, `--version` | Print the usage, or the version. |
548
630
 
549
- `--check-proof` MUST NOT be combined with `--proof` or `--quads`, and `--json`
631
+ `--dialogue` MUST NOT be combined with `--check-proof`, `--quads` or
632
+ `--iso-strict`. `--check-proof` MUST NOT be combined with `--proof` or `--quads`, and `--json`
550
633
  and `--strict-proof` need `--check-proof`. With `--check-proof -` the proof is
551
634
  read from standard input, so the program MUST be named as a file:
552
635
 
@@ -566,7 +649,7 @@ goals, the command line MUST say how to check it instead.
566
649
 
567
650
  A program MAY choose its own exit status with `halt/1`.
568
651
 
569
- ## 12. Security Considerations
652
+ ## 13. Security Considerations
570
653
 
571
654
  A **program** is Prolog code and runs with the privileges of whoever runs it;
572
655
  it MAY read and write files, open sockets and run initialization goals. Only
@@ -587,19 +670,19 @@ to the checker (Section 9.10). It does not establish that the program is
587
670
  correct or that the claims are all its answers, and a proof with obligations
588
671
  holds only conditional on them.
589
672
 
590
- ## 13. Conformance
673
+ ## 14. Conformance
591
674
 
592
675
  A conforming **reasoner** implements Sections 3 to 8, produces answers and
593
676
  proof documents in the written form of Section 6, and checks every proof it
594
677
  produces as Section 7.1 requires. A conforming **checker**
595
678
  implements Sections 8 to 10 and does not depend on a reasoner. For the same
596
679
  program and goals, a conforming reasoner and checker MUST produce the same
597
- answers, proof documents and reports as eyeprolog 1.6.33, byte for byte,
680
+ answers, proof documents, reports and dialogue documents as eyeprolog 1.6.42, byte for byte,
598
681
  except for the `Detail` texts of failures (Section 10) and where the host's
599
682
  floating-point library functions differ in the last digit.
600
683
 
601
684
  The repository's examples, with their saved answers (`examples/output/`),
602
- proofs (`examples/proof/`) and reports (`examples/check/`), test this on 236
685
+ proofs (`examples/proof/`) and reports (`examples/check/`), test this on 239
603
686
  programs, each with its proof; `npm test` regenerates and re-checks every one of them, as well as
604
687
  the proof cases of the conformance suite in `test/conformance/proofs/`.
605
688
 
@@ -721,7 +804,8 @@ implements this document, not requirements on other implementations.
721
804
  | [src/result-format.js](src/result-format.js) | Writing answers, clause records and steps (Sections 6, 8) |
722
805
  | [src/proof-document.js](src/proof-document.js) | Checking a run's own proof before it is written (Section 7.1) |
723
806
  | [src/check-proof.js](src/check-proof.js) | Reading and checking proof documents and writing reports, with no search of the program (Sections 9, 10) |
724
- | [src/cli.js](src/cli.js) | The command line (Section 11) |
807
+ | [src/dialogue.js](src/dialogue.js) | Playing a checked proof out as a dialogue (Section 11) |
808
+ | [src/cli.js](src/cli.js) | The command line (Section 12) |
725
809
  | [test/run-proof-checking.mjs](test/run-proof-checking.mjs) | Re-checking every packaged proof against its saved report |
726
810
 
727
811
  **The proof is a replay, not a trace.** The engine answers goals without
@@ -216,25 +216,28 @@ the program themselves, with a different copy of the checker if they like.
216
216
 
217
217
  ## 08 — Catalogue: the corpus
218
218
 
219
- The pattern is not aspirational here. Every one of the **236 examples** ships
219
+ The pattern is not aspirational here. Every one of the **239 examples** ships
220
220
  with its answer, the proof of that answer, and the result of checking the
221
221
  proof, and `npm test` re-checks all of them on every run:
222
222
 
223
223
  | | |
224
224
  | --- | ---: |
225
- | examples | 236 |
226
- | packaged proofs | 236 |
227
- | packaged check results | 236 |
228
- | recorded steps | 212365 |
229
- | verified against a source clause | 156674 |
230
- | recomputed independently | 54753 |
231
- | carried by the goal they wrap | 10 |
232
- | trusted boundaries confronted with evidence | 516 |
233
- | remaining obligations | 928 (0.4%) |
225
+ | examples | 239 |
226
+ | packaged proofs | 239 |
227
+ | packaged check results | 239 |
228
+ | recorded steps | 213091 |
229
+ | verified against a source clause | 156944 |
230
+ | recomputed independently | 55460 |
231
+ | carried by the goal they wrap | 220 |
232
+ | trusted boundaries confronted with evidence | 53 |
233
+ | remaining obligations | 467 (0.2%) |
234
234
 
235
235
  Each obligation names the conclusion it stands for, so the residue can be read
236
- rather than only counted. Two thirds of it is one thing: a `\+` step claims a
237
- goal has no proof, and no recorded use can establish an absence.
236
+ rather than only counted. Two fifths of it is one thing: a `\+` step claims a
237
+ goal of the program has no proof, and no recorded use can establish an
238
+ absence. An absence the bundled libraries can decide, such as
239
+ `\+ member(b, "a")`, is recomputed instead. Most of the rest are aggregates
240
+ over the program, such as `countall/2` and `setof/3`, and character I/O.
238
241
 
239
242
  The proof directory is read from disk rather than from a list, so a document
240
243
  cannot be added without being checked. An unverified proof is worse than none,
@@ -2,26 +2,21 @@ condition('C1', resolution, ok, 37).
2
2
  condition('C2', well_founded, ok, 90).
3
3
  condition('C3', justification, ok, 90).
4
4
  condition('C4', coverage, ok, 96).
5
- condition('C5', re_decision, ok, 40).
6
- condition('C6', boundary_consistency, ok, 6).
5
+ condition('C5', re_decision, ok, 45).
6
+ condition('C6', boundary_consistency, ok, 1).
7
7
  condition('C7', relevance, ok, 94).
8
8
  obligation(absent, theory_scoped, \+ member(on(A, e), [on(a, table), on(b, a), on(c, b), on(d, c), on(e, d)])).
9
- obligation(absent, theory_scoped, \+ member([on(a, table), on(b, a), on(c, b), on(d, c), on(e, table)], [[on(a, table), on(b, a), on(c, b), on(d, c), on(e, d)]])).
10
9
  obligation(absent, theory_scoped, \+ member(on(A, d), [on(a, table), on(b, a), on(c, b), on(d, c), on(e, table)])).
11
- obligation(absent, theory_scoped, \+ member([on(a, table), on(b, a), on(c, b), on(d, table), on(e, table)], [[on(a, table), on(b, a), on(c, b), on(d, c), on(e, table)], [on(a, table), on(b, a), on(c, b), on(d, c), on(e, d)]])).
12
10
  obligation(absent, theory_scoped, \+ member(on(A, c), [on(a, table), on(b, a), on(c, b), on(d, table), on(e, table)])).
13
- obligation(absent, theory_scoped, \+ member([on(a, table), on(b, a), on(c, table), on(d, table), on(e, table)], [[on(a, table), on(b, a), on(c, b), on(d, table), on(e, table)], [on(a, table), on(b, a), on(c, b), on(d, c), on(e, table)], [on(a, table), on(b, a), on(c, b), on(d, c), on(e, d)]])).
14
11
  obligation(absent, theory_scoped, \+ member(on(A, d), [on(a, table), on(b, a), on(c, table), on(d, table), on(e, table)])).
15
12
  obligation(absent, theory_scoped, \+ member(on(A, c), [on(a, table), on(b, a), on(c, table), on(d, table), on(e, table)])).
16
- obligation(absent, theory_scoped, \+ member([on(a, table), on(b, a), on(c, table), on(d, c), on(e, table)], [[on(a, table), on(b, a), on(c, table), on(d, table), on(e, table)], [on(a, table), on(b, a), on(c, b), on(d, table), on(e, table)], [on(a, table), on(b, a), on(c, b), on(d, c), on(e, table)], [on(a, table), on(b, a), on(c, b), on(d, c), on(e, d)]])).
17
13
  obligation(absent, theory_scoped, \+ member(on(A, e), [on(a, table), on(b, a), on(c, table), on(d, c), on(e, table)])).
18
14
  obligation(absent, theory_scoped, \+ member(on(A, d), [on(a, table), on(b, a), on(c, table), on(d, c), on(e, table)])).
19
- obligation(absent, theory_scoped, \+ member([on(a, table), on(b, a), on(c, table), on(d, c), on(e, d)], [[on(a, table), on(b, a), on(c, table), on(d, c), on(e, table)], [on(a, table), on(b, a), on(c, table), on(d, table), on(e, table)], [on(a, table), on(b, a), on(c, b), on(d, table), on(e, table)], [on(a, table), on(b, a), on(c, b), on(d, c), on(e, table)], [on(a, table), on(b, a), on(c, b), on(d, c), on(e, d)]])).
20
15
  obligation(collected, theory_scoped, findall(A, block(A), "abcde")).
21
16
  steps(90).
22
17
  verified(37).
23
- recomputed(39).
18
+ recomputed(44).
24
19
  composed(1).
25
- trusted(13).
20
+ trusted(8).
26
21
  claims(4).
27
22
  verdict(checked_with_obligations).
@@ -1,14 +1,14 @@
1
1
  condition('C1', resolution, ok, 7).
2
- condition('C2', well_founded, ok, 25).
3
- condition('C3', justification, ok, 25).
4
- condition('C4', coverage, ok, 25).
5
- condition('C5', re_decision, ok, 18).
2
+ condition('C2', well_founded, ok, 41).
3
+ condition('C3', justification, ok, 41).
4
+ condition('C4', coverage, ok, 42).
5
+ condition('C5', re_decision, ok, 34).
6
6
  condition('C6', boundary_consistency, ok, 0).
7
- condition('C7', relevance, ok, 26).
8
- steps(25).
7
+ condition('C7', relevance, ok, 42).
8
+ steps(41).
9
9
  verified(7).
10
- recomputed(18).
11
- composed(0).
10
+ recomputed(26).
11
+ composed(8).
12
12
  trusted(0).
13
13
  claims(1).
14
14
  verdict(checked).
@@ -1,14 +1,14 @@
1
1
  condition('C1', resolution, ok, 7).
2
- condition('C2', well_founded, ok, 37).
3
- condition('C3', justification, ok, 37).
4
- condition('C4', coverage, ok, 38).
5
- condition('C5', re_decision, ok, 30).
2
+ condition('C2', well_founded, ok, 47).
3
+ condition('C3', justification, ok, 47).
4
+ condition('C4', coverage, ok, 50).
5
+ condition('C5', re_decision, ok, 40).
6
6
  condition('C6', boundary_consistency, ok, 0).
7
- condition('C7', relevance, ok, 44).
8
- steps(37).
7
+ condition('C7', relevance, ok, 54).
8
+ steps(47).
9
9
  verified(7).
10
- recomputed(30).
11
- composed(0).
10
+ recomputed(34).
11
+ composed(6).
12
12
  trusted(0).
13
13
  claims(7).
14
14
  verdict(checked).
@@ -1,14 +1,14 @@
1
1
  condition('C1', resolution, ok, 76).
2
- condition('C2', well_founded, ok, 174).
3
- condition('C3', justification, ok, 174).
4
- condition('C4', coverage, ok, 212).
5
- condition('C5', re_decision, ok, 98).
2
+ condition('C2', well_founded, ok, 338).
3
+ condition('C3', justification, ok, 338).
4
+ condition('C4', coverage, ok, 602).
5
+ condition('C5', re_decision, ok, 262).
6
6
  condition('C6', boundary_consistency, ok, 0).
7
- condition('C7', relevance, ok, 177).
8
- steps(174).
7
+ condition('C7', relevance, ok, 341).
8
+ steps(338).
9
9
  verified(76).
10
- recomputed(98).
11
- composed(0).
10
+ recomputed(106).
11
+ composed(156).
12
12
  trusted(0).
13
13
  claims(3).
14
14
  verdict(checked).
@@ -1,19 +1,19 @@
1
1
  condition('C1', resolution, ok, 3).
2
- condition('C2', well_founded, ok, 31).
3
- condition('C3', justification, ok, 31).
4
- condition('C4', coverage, ok, 33).
5
- condition('C5', re_decision, ok, 23).
2
+ condition('C2', well_founded, ok, 33).
3
+ condition('C3', justification, ok, 33).
4
+ condition('C4', coverage, ok, 35).
5
+ condition('C5', re_decision, ok, 25).
6
6
  condition('C6', boundary_consistency, ok, 0).
7
- condition('C7', relevance, ok, 34).
7
+ condition('C7', relevance, ok, 36).
8
8
  obligation(builtin, stateful, fd_var(A)).
9
9
  obligation(builtin, stateful, fd_inf(A, 2)).
10
10
  obligation(builtin, stateful, fd_sup(A, 7)).
11
11
  obligation(builtin, stateful, fd_size(A, 4)).
12
12
  obligation(builtin, stateful, fd_dom(A, 2..4 \/ 7)).
13
- steps(31).
13
+ steps(33).
14
14
  verified(3).
15
- recomputed(23).
16
- composed(0).
15
+ recomputed(24).
16
+ composed(1).
17
17
  trusted(5).
18
18
  claims(3).
19
19
  verdict(checked_with_obligations).
@@ -2,14 +2,13 @@ condition('C1', resolution, ok, 8).
2
2
  condition('C2', well_founded, ok, 12).
3
3
  condition('C3', justification, ok, 12).
4
4
  condition('C4', coverage, ok, 14).
5
- condition('C5', re_decision, ok, 3).
6
- condition('C6', boundary_consistency, ok, 1).
5
+ condition('C5', re_decision, ok, 4).
6
+ condition('C6', boundary_consistency, ok, 0).
7
7
  condition('C7', relevance, ok, 13).
8
- obligation(absent, theory_scoped, \+ member(data4, [data1, data2, data3])).
9
8
  steps(12).
10
9
  verified(8).
11
- recomputed(3).
10
+ recomputed(4).
12
11
  composed(0).
13
- trusted(1).
12
+ trusted(0).
14
13
  claims(1).
15
- verdict(checked_with_obligations).
14
+ verdict(checked).
@@ -1,14 +1,14 @@
1
1
  condition('C1', resolution, ok, 7).
2
- condition('C2', well_founded, ok, 11).
3
- condition('C3', justification, ok, 11).
4
- condition('C4', coverage, ok, 13).
5
- condition('C5', re_decision, ok, 4).
2
+ condition('C2', well_founded, ok, 17).
3
+ condition('C3', justification, ok, 17).
4
+ condition('C4', coverage, ok, 21).
5
+ condition('C5', re_decision, ok, 10).
6
6
  condition('C6', boundary_consistency, ok, 0).
7
- condition('C7', relevance, ok, 12).
8
- steps(11).
7
+ condition('C7', relevance, ok, 18).
8
+ steps(17).
9
9
  verified(7).
10
- recomputed(4).
11
- composed(0).
10
+ recomputed(6).
11
+ composed(4).
12
12
  trusted(0).
13
13
  claims(1).
14
14
  verdict(checked).
@@ -2,15 +2,14 @@ condition('C1', resolution, ok, 244).
2
2
  condition('C2', well_founded, ok, 296).
3
3
  condition('C3', justification, ok, 296).
4
4
  condition('C4', coverage, ok, 353).
5
- condition('C5', re_decision, ok, 50).
6
- condition('C6', boundary_consistency, ok, 2).
5
+ condition('C5', re_decision, ok, 51).
6
+ condition('C6', boundary_consistency, ok, 1).
7
7
  condition('C7', relevance, ok, 327).
8
8
  obligation(absent, theory_scoped, \+ better_lower_sugar(biscuits, 120, 30)).
9
- obligation(absent, theory_scoped, \+ matches('createdat expiresat insight metric sugar_g_per_serving retailer delfour scopedevice self-scanner scopeevent pick_up_scanner', 'diabetes|medical')).
10
9
  steps(296).
11
10
  verified(244).
12
- recomputed(50).
11
+ recomputed(51).
13
12
  composed(0).
14
- trusted(2).
13
+ trusted(1).
15
14
  claims(31).
16
15
  verdict(checked_with_obligations).
@@ -0,0 +1,20 @@
1
+ condition('C1', resolution, ok, 231).
2
+ condition('C2', well_founded, ok, 444).
3
+ condition('C3', justification, ok, 444).
4
+ condition('C4', coverage, ok, 599).
5
+ condition('C5', re_decision, ok, 207).
6
+ condition('C6', boundary_consistency, ok, 5).
7
+ condition('C7', relevance, ok, 492).
8
+ obligation(absent, theory_scoped, \+ common_ground(valid(c17), [])).
9
+ obligation(absent, theory_scoped, \+ opponent_proves(minor_party(c17), 1, A)).
10
+ obligation(absent, theory_scoped, \+ common_ground(ratified_at_majority(c17), [born(ann, 2009)])).
11
+ obligation(absent, theory_scoped, \+ common_ground(valid(c18), [])).
12
+ obligation(absent, theory_scoped, \+ common_ground(ratified_at_majority(c18), [born(dave, 2010)])).
13
+ obligation(absent, theory_scoped, \+ common_ground(ratified(c18, A, B), [born(dave, 2010)])).
14
+ steps(444).
15
+ verified(231).
16
+ recomputed(191).
17
+ composed(16).
18
+ trusted(6).
19
+ claims(48).
20
+ verdict(checked_with_obligations).
@@ -2,30 +2,13 @@ condition('C1', resolution, ok, 121).
2
2
  condition('C2', well_founded, ok, 167).
3
3
  condition('C3', justification, ok, 167).
4
4
  condition('C4', coverage, ok, 223).
5
- condition('C5', re_decision, ok, 29).
6
- condition('C6', boundary_consistency, ok, 17).
5
+ condition('C5', re_decision, ok, 46).
6
+ condition('C6', boundary_consistency, ok, 0).
7
7
  condition('C7', relevance, ok, 183).
8
- obligation(absent, theory_scoped, \+ member(b, "a")).
9
- obligation(absent, theory_scoped, \+ member(d, "ba")).
10
- obligation(absent, theory_scoped, \+ member(e, "dba")).
11
- obligation(absent, theory_scoped, \+ member(f, "edba")).
12
- obligation(absent, theory_scoped, \+ member(f, "dba")).
13
- obligation(absent, theory_scoped, \+ member(c, "a")).
14
- obligation(absent, theory_scoped, \+ member(d, "ca")).
15
- obligation(absent, theory_scoped, \+ member(e, "dca")).
16
- obligation(absent, theory_scoped, \+ member(f, "edca")).
17
- obligation(absent, theory_scoped, \+ member(f, "dca")).
18
- obligation(absent, theory_scoped, \+ member(e, "ca")).
19
- obligation(absent, theory_scoped, \+ member(f, "eca")).
20
- obligation(absent, theory_scoped, \+ member(b, "ca")).
21
- obligation(absent, theory_scoped, \+ member(d, "bca")).
22
- obligation(absent, theory_scoped, \+ member(e, "dbca")).
23
- obligation(absent, theory_scoped, \+ member(f, "edbca")).
24
- obligation(absent, theory_scoped, \+ member(f, "dbca")).
25
8
  steps(167).
26
9
  verified(121).
27
- recomputed(29).
10
+ recomputed(46).
28
11
  composed(0).
29
- trusted(17).
12
+ trusted(0).
30
13
  claims(16).
31
- verdict(checked_with_obligations).
14
+ verdict(checked).
@@ -2,15 +2,14 @@ condition('C1', resolution, ok, 97).
2
2
  condition('C2', well_founded, ok, 107).
3
3
  condition('C3', justification, ok, 107).
4
4
  condition('C4', coverage, ok, 157).
5
- condition('C5', re_decision, ok, 8).
6
- condition('C6', boundary_consistency, ok, 2).
5
+ condition('C5', re_decision, ok, 9).
6
+ condition('C6', boundary_consistency, ok, 1).
7
7
  condition('C7', relevance, ok, 150).
8
8
  obligation(absent, theory_scoped, \+ lower_cost_eligible_package(120)).
9
- obligation(absent, theory_scoped, \+ matches('createdat expiresat insight metric regional_retooling_priority region flanders scopedevice economic-resilience-board scopeevent budget-prep-window suggestionpolicy lowest_cost_package_covering_all_active_needs threshold 3', 'salary|payroll|invoice|medical|firmname')).
10
9
  steps(107).
11
10
  verified(97).
12
- recomputed(8).
11
+ recomputed(9).
13
12
  composed(0).
14
- trusted(2).
13
+ trusted(1).
15
14
  claims(43).
16
15
  verdict(checked_with_obligations).
@@ -2,20 +2,14 @@ condition('C1', resolution, ok, 19).
2
2
  condition('C2', well_founded, ok, 26).
3
3
  condition('C3', justification, ok, 26).
4
4
  condition('C4', coverage, ok, 26).
5
- condition('C5', re_decision, ok, 0).
6
- condition('C6', boundary_consistency, ok, 6).
5
+ condition('C5', re_decision, ok, 6).
6
+ condition('C6', boundary_consistency, ok, 0).
7
7
  condition('C7', relevance, ok, 29).
8
- obligation(absent, theory_scoped, \+ member(b, "a")).
9
- obligation(absent, theory_scoped, \+ member(d, "ba")).
10
- obligation(absent, theory_scoped, \+ member(f, "dba")).
11
- obligation(absent, theory_scoped, \+ member(e, "c")).
12
- obligation(absent, theory_scoped, \+ member(f, "ec")).
13
- obligation(absent, theory_scoped, \+ member(g, "fec")).
14
8
  obligation(absent, theory_scoped, \+ is_reachable(b, e)).
15
9
  steps(26).
16
10
  verified(19).
17
- recomputed(0).
11
+ recomputed(6).
18
12
  composed(0).
19
- trusted(7).
13
+ trusted(1).
20
14
  claims(3).
21
15
  verdict(checked_with_obligations).