eyeprolog 1.6.33 → 1.6.34

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.
package/README.md CHANGED
@@ -12,7 +12,7 @@ EyeProlog turns portable ISO Prolog programs into answers and inspectable proofs
12
12
  <strong>Click the cover to read <em>The Art of EyeProlog</em>.</strong>
13
13
  </p>
14
14
 
15
- The single implementation reference is [*The Art of EyeProlog*](the-art-of-eyeprolog.md).
15
+ The single implementation reference is [*The Art of EyeProlog*](https://eyereasoner.github.io/eyeprolog/the-art-of-eyeprolog).
16
16
  It documents the language, built-ins, libraries, command line, JavaScript API,
17
17
  examples, proofs, conformance profile, and implementation.
18
18
 
@@ -65,18 +65,18 @@ printf 'human(socrates).\nmortal(X) :- human(X).\n' |
65
65
  - [The Art of EyeProlog](https://eyereasoner.github.io/eyeprolog/the-art-of-eyeprolog) — complete reference
66
66
  - [Why EyeProlog?](https://eyereasoner.github.io/eyeprolog/why-eyeprolog) — project scope and design
67
67
  - [ARC in EyeProlog](https://eyereasoner.github.io/eyeprolog/arc-in-eyeprolog) — answer, reason, check
68
- - [SPEC.md](SPEC.md) — the answer, proof and check format, and the seven conditions C1–C7 a proof check establishes
68
+ - [SPEC.md](https://eyereasoner.github.io/eyeprolog/SPEC) — the answer, proof and check format, and the seven conditions C1–C7 a proof check establishes
69
69
  - [Playground](https://eyereasoner.github.io/eyeprolog/playground) — run EyeProlog in a browser
70
70
  - [Examples](examples) — runnable programs and checked output
71
- - [Example decks](examples/deck/README.md) — explainable RDF/Prolog scenarios with reproducible roundtrips
71
+ - [Example decks](https://eyereasoner.github.io/eyeprolog/examples/deck/) — explainable RDF/Prolog scenarios with reproducible roundtrips
72
72
  - [Introduction to EyeProlog](https://eyereasoner.github.io/eyeprolog/examples/deck/introduction-to-eyeprolog) — short presentation deck for first-time audiences
73
73
  - [Symbiotic Knowledge Graphs](https://eyereasoner.github.io/eyeprolog/examples/deck/symbiotic-knowledge-graphs) — RDF ↔ Prolog heatwave-response demo for human/AI/KG co-evolution
74
74
  - [rdf-prolog-interchange](https://github.com/eyereasoner/rdf-prolog-interchange) — standalone RDF 1.2 ↔ ISO Prolog bridge used by the RDF examples
75
- - [RDF and Prolog: Two Standards-Based Legs](https://github.com/eyereasoner/rdf-prolog-interchange/blob/main/why-rdf-prolog.md) — why W3C RDF and ISO Prolog form the foundation
76
- - [ISO conformance review](test/conformance/ISO-COMPLIANCE.md) — supported Part 1 profile
77
- - [Latest Neumerkel conformity](test/conformance/NEUMERKEL-LATEST.md) — tracked result from the current live upstream inventory
78
- - [Conformance report](conformance-report.md) — generated executable conformance status, local corpus summary, and known deviations
79
- - [OpenRuleBench](openrulebench/README.md) — portable benchmark profile
75
+ - [RDF and Prolog: Two Standards-Based Legs](https://eyereasoner.github.io/rdf-prolog-interchange/why-rdf-prolog) — why W3C RDF and ISO Prolog form the foundation
76
+ - [ISO conformance review](https://eyereasoner.github.io/eyeprolog/test/conformance/ISO-COMPLIANCE) — supported Part 1 profile
77
+ - [Latest Neumerkel conformity](https://eyereasoner.github.io/eyeprolog/test/conformance/NEUMERKEL-LATEST) — tracked result from the current live upstream inventory
78
+ - [Conformance report](https://eyereasoner.github.io/eyeprolog/conformance-report) — generated executable conformance status, local corpus summary, and known deviations
79
+ - [OpenRuleBench](https://eyereasoner.github.io/eyeprolog/openrulebench/) — portable benchmark profile
80
80
  ## RDF, Prolog, and symbiotic knowledge graphs
81
81
 
82
82
  EyeProlog can sit behind an RDF knowledge graph without inventing a private graph representation. [`rdf-prolog-interchange`](https://github.com/eyereasoner/rdf-prolog-interchange) converts RDF 1.2 datasets to ordinary `rdf(Subject, Predicate, Object, Graph)` facts, EyeProlog applies portable rules, and ground `rdf/4` results can be converted back to RDF.
@@ -86,8 +86,8 @@ The checked [Symbiotic Knowledge Graphs example](examples/symbiotic-knowledge-gr
86
86
  The same RDF → Prolog → RDF boundary is exercised by five additional checked scenarios: [cross-organization data sharing](https://eyereasoner.github.io/eyeprolog/examples/deck/cross-organization-data-sharing), [explainable EV-depot configuration](https://eyereasoner.github.io/eyeprolog/examples/deck/explainable-ev-depot-configuration), [operational incident response](https://eyereasoner.github.io/eyeprolog/examples/deck/operational-incident-response), [software supply-chain vulnerability response](https://eyereasoner.github.io/eyeprolog/examples/deck/sbom-vulnerability-response), and a [scientific evidence graph](https://eyereasoner.github.io/eyeprolog/examples/deck/scientific-evidence-graph). Together they cover policy decisions, reversible configuration reasoning, dependency-graph diagnosis, transitive SBOM exposure, and evidence aggregation with explicit disagreement.
87
87
 
88
88
  ## Performance
89
- EyeProlog does not carry a separate wall-clock benchmark harness. `npm test`'s own elapsed time, run across thousands of conformance, regression, and example programs, is the coarse performance indicator instead — a real slowdown shows up there. [OpenRuleBench](openrulebench/README.md) remains a dedicated, checked correctness-and-scale benchmark for the Datalog rule-engine profile specifically.
90
- For the project policy on post-ISO-standard and WG17 compatibility features such as digit separators, see [ISO/WG17 compatibility extensions](test/conformance/ISO-WG17-EXTENSIONS.md).
89
+ EyeProlog does not carry a separate wall-clock benchmark harness. `npm test`'s own elapsed time, run across thousands of conformance, regression, and example programs, is the coarse performance indicator instead — a real slowdown shows up there. [OpenRuleBench](https://eyereasoner.github.io/eyeprolog/openrulebench/) remains a dedicated, checked correctness-and-scale benchmark for the Datalog rule-engine profile specifically.
90
+ For the project policy on post-ISO-standard and WG17 compatibility features such as digit separators, see [ISO/WG17 compatibility extensions](https://eyereasoner.github.io/eyeprolog/test/conformance/ISO-WG17-EXTENSIONS).
91
91
  ## Development
92
92
  ```sh
93
93
  git clone https://github.com/eyereasoner/eyeprolog.git
@@ -100,6 +100,6 @@ The npm command list is deliberately small:
100
100
  - `npm test` (or `npm run test`): run the release gate, including live upstream conformity checks (WG17 syntax among them).
101
101
  - `npm run neumerkel`: re-fetch the upstream Neumerkel conformity sources and fail if the tracked report no longer matches them. The release gate reports that drift as a warning; this command makes it an error, so it answers "are we still current?" on its own.
102
102
 
103
- Use `npm test -- --offline` for a network-free local pass (this also skips the live-discovered WG17 syntax check, since it has no offline snapshot). Focused checks remain available directly, for example `node test/run-regression.mjs docs`; see [test runners](test/README.md). The automatic version hooks rebuild generated library and book files, run the release gate, refresh and stage conformance reports, and push the release. Detailed upstream report maintenance is documented in the [conformance guide](test/conformance/README.md).
103
+ Use `npm test -- --offline` for a network-free local pass (this also skips the live-discovered WG17 syntax check, since it has no offline snapshot). Focused checks remain available directly, for example `node test/run-regression.mjs docs`; see [test runners](https://eyereasoner.github.io/eyeprolog/test/). The automatic version hooks rebuild generated library and book files, run the release gate, refresh and stage conformance reports, and push the release. Detailed upstream report maintenance is documented in the [conformance guide](https://eyereasoner.github.io/eyeprolog/test/conformance/).
104
104
 
105
105
  EyeProlog is released under the [MIT License](LICENSE.md).
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.6.33",
6
+ "version": "1.6.34",
7
7
  "description": "EyeProlog turns facts and rules into answers and proofs.",
8
8
  "type": "module",
9
9
  "main": "./index.js",
package/playground.html CHANGED
@@ -435,6 +435,8 @@
435
435
  </footer>
436
436
 
437
437
  <script type="module">
438
+ import { goalsFromSource } from './src/goal-metadata.js';
439
+
438
440
  const EXAMPLES = [
439
441
  "abstract-interpretation",
440
442
  "access-control-policy",
@@ -886,7 +888,7 @@
886
888
  }
887
889
 
888
890
  function suggestedGoalsFromSource(text) {
889
- return [...text.matchAll(/^\s*%%\s*goal:\s*(.+)$/gm)].map((match) => match[1].trim());
891
+ return goalsFromSource(text).map((text) => text.replace(/\s+/g, ' '));
890
892
  }
891
893
 
892
894
  function selectedGoals() {
@@ -588,7 +588,7 @@ ${profile}`;
588
588
  'ISO-EVALUABLE-FUNCTOR-MATRIX.md',
589
589
  ]) assertIncludes(book, name, `book ${name}`);
590
590
  assertIncludes(readme, 'implementation reference is [*The Art of EyeProlog*]', 'README book hand-off');
591
- assertIncludes(readme, 'test/conformance/ISO-COMPLIANCE.md', 'README concise review link');
591
+ assertIncludes(readme, 'test/conformance/ISO-COMPLIANCE', 'README concise review link');
592
592
  for (const heading of ['## Tabling', '## Cleanup-aware control', '## Strict ISO',
593
593
  '## Module and definite clause grammar', '## Trealla and Scryer interoperability']) {
594
594
  assertNotIncludes(readme, heading, `README delegates ${heading} to the book`);