eyeling 1.34.5 → 1.34.6

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 (307) hide show
  1. package/README.md +3 -90
  2. package/bin/eyeling.cjs +4 -56
  3. package/dist/browser/eyeling.browser.js +0 -1
  4. package/examples/context-schema-audit.n3 +1 -1
  5. package/eyeling.js +0 -1
  6. package/index.d.ts +3 -37
  7. package/index.js +1 -90
  8. package/lib/cli.js +0 -1
  9. package/package.json +3 -12
  10. package/test/packlist.test.js +0 -2
  11. package/test/run.js +0 -2
  12. package/docs/eyelang-guide.md +0 -535
  13. package/docs/eyelang-language-reference.md +0 -697
  14. package/examples/eyelang/access-control-policy.pl +0 -52
  15. package/examples/eyelang/ackermann.pl +0 -46
  16. package/examples/eyelang/age.pl +0 -28
  17. package/examples/eyelang/aliases-and-namespaces.pl +0 -22
  18. package/examples/eyelang/alignment-demo.pl +0 -44
  19. package/examples/eyelang/allen-interval-calculus.pl +0 -64
  20. package/examples/eyelang/ancestor.pl +0 -21
  21. package/examples/eyelang/animal.pl +0 -21
  22. package/examples/eyelang/annotation.pl +0 -34
  23. package/examples/eyelang/auroracare.pl +0 -309
  24. package/examples/eyelang/backward.pl +0 -12
  25. package/examples/eyelang/basic-monadic.pl +0 -10032
  26. package/examples/eyelang/bayes-diagnosis.pl +0 -108
  27. package/examples/eyelang/bayes-therapy.pl +0 -182
  28. package/examples/eyelang/beam-deflection.pl +0 -50
  29. package/examples/eyelang/blocks-world-planning.pl +0 -75
  30. package/examples/eyelang/bmi.pl +0 -232
  31. package/examples/eyelang/braking-safety-worlds.pl +0 -69
  32. package/examples/eyelang/buck-converter-design.pl +0 -78
  33. package/examples/eyelang/cache-performance.pl +0 -54
  34. package/examples/eyelang/canary-release.pl +0 -49
  35. package/examples/eyelang/cat-koko.pl +0 -24
  36. package/examples/eyelang/clinical-trial-screening.pl +0 -92
  37. package/examples/eyelang/combinatorics-findall-sort.pl +0 -37
  38. package/examples/eyelang/competitive-enzyme-kinetics.pl +0 -78
  39. package/examples/eyelang/complex.pl +0 -121
  40. package/examples/eyelang/composition-of-injective-functions-is-injective.pl +0 -50
  41. package/examples/eyelang/context-association.pl +0 -53
  42. package/examples/eyelang/context-schema-audit.pl +0 -46
  43. package/examples/eyelang/control-system.pl +0 -72
  44. package/examples/eyelang/cyclic-path.pl +0 -16
  45. package/examples/eyelang/d3-group.pl +0 -100
  46. package/examples/eyelang/dairy-energy-balance.pl +0 -65
  47. package/examples/eyelang/data-negotiation.pl +0 -39
  48. package/examples/eyelang/deep-taxonomy-10.pl +0 -115
  49. package/examples/eyelang/deep-taxonomy-100.pl +0 -385
  50. package/examples/eyelang/deep-taxonomy-1000.pl +0 -3085
  51. package/examples/eyelang/deep-taxonomy-10000.pl +0 -30094
  52. package/examples/eyelang/deep-taxonomy-100000.pl +0 -300184
  53. package/examples/eyelang/delfour.pl +0 -281
  54. package/examples/eyelang/deontic-logic.pl +0 -52
  55. package/examples/eyelang/derived-backward-rule.pl +0 -30
  56. package/examples/eyelang/derived-rule.pl +0 -27
  57. package/examples/eyelang/diamond-property.pl +0 -38
  58. package/examples/eyelang/dijkstra-findall-sort.pl +0 -44
  59. package/examples/eyelang/dijkstra-risk-path.pl +0 -86
  60. package/examples/eyelang/dijkstra.pl +0 -46
  61. package/examples/eyelang/dining-philosophers.pl +0 -140
  62. package/examples/eyelang/dog.pl +0 -25
  63. package/examples/eyelang/dpv-odrl-purpose-mapping.pl +0 -46
  64. package/examples/eyelang/drone-corridor-planner.pl +0 -51
  65. package/examples/eyelang/easter-computus.pl +0 -89
  66. package/examples/eyelang/electrical-rc-filter.pl +0 -36
  67. package/examples/eyelang/epidemic-policy.pl +0 -67
  68. package/examples/eyelang/equivalence-classes-overlap-implies-same-class.pl +0 -27
  69. package/examples/eyelang/eulerian-path.pl +0 -85
  70. package/examples/eyelang/ev-range-worlds.pl +0 -82
  71. package/examples/eyelang/existential-rule.pl +0 -18
  72. package/examples/eyelang/exoplanet-validation-worlds.pl +0 -88
  73. package/examples/eyelang/expression-eval.pl +0 -43
  74. package/examples/eyelang/family-cousins.pl +0 -65
  75. package/examples/eyelang/fastpow.pl +0 -53
  76. package/examples/eyelang/fft8-numeric.pl +0 -83
  77. package/examples/eyelang/fibonacci.pl +0 -53
  78. package/examples/eyelang/field-nitrogen-balance.pl +0 -70
  79. package/examples/eyelang/flandor.pl +0 -296
  80. package/examples/eyelang/floating-point.pl +0 -23
  81. package/examples/eyelang/four-color-map.pl +0 -127
  82. package/examples/eyelang/fundamental-theorem-arithmetic.pl +0 -113
  83. package/examples/eyelang/gd-step-certified.pl +0 -158
  84. package/examples/eyelang/gdpr-compliance.pl +0 -69
  85. package/examples/eyelang/good-cobbler.pl +0 -14
  86. package/examples/eyelang/gps.pl +0 -152
  87. package/examples/eyelang/graph-reachability.pl +0 -36
  88. package/examples/eyelang/gray-code-counter.pl +0 -48
  89. package/examples/eyelang/greatest-lower-bound-uniqueness.pl +0 -28
  90. package/examples/eyelang/group-inverse-uniqueness.pl +0 -34
  91. package/examples/eyelang/hamiltonian-path.pl +0 -49
  92. package/examples/eyelang/hamming-code.pl +0 -105
  93. package/examples/eyelang/hanoi.pl +0 -20
  94. package/examples/eyelang/heat-loss.pl +0 -51
  95. package/examples/eyelang/heron-theorem.pl +0 -36
  96. package/examples/eyelang/ideal-gas-law.pl +0 -37
  97. package/examples/eyelang/illegitimate-reasoning.pl +0 -88
  98. package/examples/eyelang/knowledge-engineering-alignment-flow.pl +0 -40
  99. package/examples/eyelang/law-of-cosines.pl +0 -31
  100. package/examples/eyelang/least-squares-regression.pl +0 -81
  101. package/examples/eyelang/list-collection.pl +0 -33
  102. package/examples/eyelang/lldm.pl +0 -78
  103. package/examples/eyelang/manufacturing-quality-control.pl +0 -73
  104. package/examples/eyelang/microgrid-dispatch.pl +0 -85
  105. package/examples/eyelang/monkey-bananas.pl +0 -45
  106. package/examples/eyelang/network-sla.pl +0 -48
  107. package/examples/eyelang/newton-raphson.pl +0 -49
  108. package/examples/eyelang/nixon-diamond.pl +0 -37
  109. package/examples/eyelang/observability-log-correlation.pl +0 -34
  110. package/examples/eyelang/odrl-dpv-fpv-trust-flow.pl +0 -43
  111. package/examples/eyelang/odrl-dpv-healthcare-risk-ranked.pl +0 -266
  112. package/examples/eyelang/odrl-dpv-risk-ranked.pl +0 -320
  113. package/examples/eyelang/orbital-transfer-design.pl +0 -113
  114. package/examples/eyelang/output/access-control-policy.pl +0 -2
  115. package/examples/eyelang/output/ackermann.pl +0 -12
  116. package/examples/eyelang/output/age.pl +0 -2
  117. package/examples/eyelang/output/aliases-and-namespaces.pl +0 -5
  118. package/examples/eyelang/output/alignment-demo.pl +0 -32
  119. package/examples/eyelang/output/allen-interval-calculus.pl +0 -154
  120. package/examples/eyelang/output/ancestor.pl +0 -6
  121. package/examples/eyelang/output/animal.pl +0 -4
  122. package/examples/eyelang/output/annotation.pl +0 -4
  123. package/examples/eyelang/output/auroracare.pl +0 -117
  124. package/examples/eyelang/output/backward.pl +0 -1
  125. package/examples/eyelang/output/basic-monadic.pl +0 -1518
  126. package/examples/eyelang/output/bayes-diagnosis.pl +0 -13
  127. package/examples/eyelang/output/bayes-therapy.pl +0 -23
  128. package/examples/eyelang/output/beam-deflection.pl +0 -5
  129. package/examples/eyelang/output/blocks-world-planning.pl +0 -4
  130. package/examples/eyelang/output/bmi.pl +0 -32
  131. package/examples/eyelang/output/braking-safety-worlds.pl +0 -18
  132. package/examples/eyelang/output/buck-converter-design.pl +0 -6
  133. package/examples/eyelang/output/cache-performance.pl +0 -4
  134. package/examples/eyelang/output/canary-release.pl +0 -5
  135. package/examples/eyelang/output/cat-koko.pl +0 -3
  136. package/examples/eyelang/output/clinical-trial-screening.pl +0 -9
  137. package/examples/eyelang/output/combinatorics-findall-sort.pl +0 -2
  138. package/examples/eyelang/output/competitive-enzyme-kinetics.pl +0 -6
  139. package/examples/eyelang/output/complex.pl +0 -1
  140. package/examples/eyelang/output/composition-of-injective-functions-is-injective.pl +0 -2
  141. package/examples/eyelang/output/context-association.pl +0 -3
  142. package/examples/eyelang/output/context-schema-audit.pl +0 -12
  143. package/examples/eyelang/output/control-system.pl +0 -6
  144. package/examples/eyelang/output/cyclic-path.pl +0 -16
  145. package/examples/eyelang/output/d3-group.pl +0 -2
  146. package/examples/eyelang/output/dairy-energy-balance.pl +0 -13
  147. package/examples/eyelang/output/data-negotiation.pl +0 -1
  148. package/examples/eyelang/output/deep-taxonomy-10.pl +0 -16
  149. package/examples/eyelang/output/deep-taxonomy-100.pl +0 -16
  150. package/examples/eyelang/output/deep-taxonomy-1000.pl +0 -16
  151. package/examples/eyelang/output/deep-taxonomy-10000.pl +0 -16
  152. package/examples/eyelang/output/deep-taxonomy-100000.pl +0 -16
  153. package/examples/eyelang/output/delfour.pl +0 -31
  154. package/examples/eyelang/output/deontic-logic.pl +0 -4
  155. package/examples/eyelang/output/derived-backward-rule.pl +0 -3
  156. package/examples/eyelang/output/derived-rule.pl +0 -2
  157. package/examples/eyelang/output/diamond-property.pl +0 -4
  158. package/examples/eyelang/output/dijkstra-findall-sort.pl +0 -2
  159. package/examples/eyelang/output/dijkstra-risk-path.pl +0 -29
  160. package/examples/eyelang/output/dijkstra.pl +0 -16
  161. package/examples/eyelang/output/dining-philosophers.pl +0 -350
  162. package/examples/eyelang/output/dog.pl +0 -1
  163. package/examples/eyelang/output/dpv-odrl-purpose-mapping.pl +0 -18
  164. package/examples/eyelang/output/drone-corridor-planner.pl +0 -17
  165. package/examples/eyelang/output/easter-computus.pl +0 -30
  166. package/examples/eyelang/output/electrical-rc-filter.pl +0 -3
  167. package/examples/eyelang/output/epidemic-policy.pl +0 -14
  168. package/examples/eyelang/output/equivalence-classes-overlap-implies-same-class.pl +0 -18
  169. package/examples/eyelang/output/eulerian-path.pl +0 -3
  170. package/examples/eyelang/output/ev-range-worlds.pl +0 -19
  171. package/examples/eyelang/output/existential-rule.pl +0 -2
  172. package/examples/eyelang/output/exoplanet-validation-worlds.pl +0 -22
  173. package/examples/eyelang/output/expression-eval.pl +0 -1
  174. package/examples/eyelang/output/family-cousins.pl +0 -28
  175. package/examples/eyelang/output/fastpow.pl +0 -6
  176. package/examples/eyelang/output/fft8-numeric.pl +0 -4
  177. package/examples/eyelang/output/fibonacci.pl +0 -6
  178. package/examples/eyelang/output/field-nitrogen-balance.pl +0 -21
  179. package/examples/eyelang/output/flandor.pl +0 -43
  180. package/examples/eyelang/output/floating-point.pl +0 -9
  181. package/examples/eyelang/output/four-color-map.pl +0 -3
  182. package/examples/eyelang/output/fundamental-theorem-arithmetic.pl +0 -9
  183. package/examples/eyelang/output/gd-step-certified.pl +0 -79
  184. package/examples/eyelang/output/gdpr-compliance.pl +0 -6
  185. package/examples/eyelang/output/good-cobbler.pl +0 -1
  186. package/examples/eyelang/output/gps.pl +0 -21
  187. package/examples/eyelang/output/graph-reachability.pl +0 -3
  188. package/examples/eyelang/output/gray-code-counter.pl +0 -1
  189. package/examples/eyelang/output/greatest-lower-bound-uniqueness.pl +0 -2
  190. package/examples/eyelang/output/group-inverse-uniqueness.pl +0 -2
  191. package/examples/eyelang/output/hamiltonian-path.pl +0 -121
  192. package/examples/eyelang/output/hamming-code.pl +0 -6
  193. package/examples/eyelang/output/hanoi.pl +0 -1
  194. package/examples/eyelang/output/heat-loss.pl +0 -5
  195. package/examples/eyelang/output/heron-theorem.pl +0 -4
  196. package/examples/eyelang/output/ideal-gas-law.pl +0 -3
  197. package/examples/eyelang/output/illegitimate-reasoning.pl +0 -15
  198. package/examples/eyelang/output/knowledge-engineering-alignment-flow.pl +0 -17
  199. package/examples/eyelang/output/law-of-cosines.pl +0 -3
  200. package/examples/eyelang/output/least-squares-regression.pl +0 -5
  201. package/examples/eyelang/output/list-collection.pl +0 -3
  202. package/examples/eyelang/output/lldm.pl +0 -6
  203. package/examples/eyelang/output/manufacturing-quality-control.pl +0 -6
  204. package/examples/eyelang/output/microgrid-dispatch.pl +0 -6
  205. package/examples/eyelang/output/monkey-bananas.pl +0 -5
  206. package/examples/eyelang/output/network-sla.pl +0 -4
  207. package/examples/eyelang/output/newton-raphson.pl +0 -3
  208. package/examples/eyelang/output/nixon-diamond.pl +0 -5
  209. package/examples/eyelang/output/observability-log-correlation.pl +0 -28
  210. package/examples/eyelang/output/odrl-dpv-fpv-trust-flow.pl +0 -9
  211. package/examples/eyelang/output/odrl-dpv-healthcare-risk-ranked.pl +0 -42
  212. package/examples/eyelang/output/odrl-dpv-risk-ranked.pl +0 -120
  213. package/examples/eyelang/output/orbital-transfer-design.pl +0 -7
  214. package/examples/eyelang/output/path-discovery.pl +0 -3
  215. package/examples/eyelang/output/peano-arithmetic.pl +0 -3
  216. package/examples/eyelang/output/peasant.pl +0 -10
  217. package/examples/eyelang/output/pendulum-period.pl +0 -4
  218. package/examples/eyelang/output/polynomial.pl +0 -14
  219. package/examples/eyelang/output/proof-contrapositive.pl +0 -3
  220. package/examples/eyelang/output/quadratic-formula.pl +0 -6
  221. package/examples/eyelang/output/radioactive-decay.pl +0 -5
  222. package/examples/eyelang/output/reusable-builtins.pl +0 -5
  223. package/examples/eyelang/output/riemann-hypothesis.pl +0 -12
  224. package/examples/eyelang/output/security-incident-correlation.pl +0 -3
  225. package/examples/eyelang/output/service-impact.pl +0 -11
  226. package/examples/eyelang/output/sieve.pl +0 -1
  227. package/examples/eyelang/output/skolem-functions.pl +0 -16
  228. package/examples/eyelang/output/socket-age.pl +0 -1
  229. package/examples/eyelang/output/socket-family.pl +0 -3
  230. package/examples/eyelang/output/socrates.pl +0 -2
  231. package/examples/eyelang/output/statistics-summary.pl +0 -4
  232. package/examples/eyelang/output/superdense-coding.pl +0 -6
  233. package/examples/eyelang/output/term-tools.pl +0 -6
  234. package/examples/eyelang/output/trust-flow-provenance-threshold.pl +0 -6
  235. package/examples/eyelang/output/turing.pl +0 -12
  236. package/examples/eyelang/output/vector-similarity.pl +0 -4
  237. package/examples/eyelang/output/vulnerability-impact.pl +0 -20
  238. package/examples/eyelang/output/witch.pl +0 -7
  239. package/examples/eyelang/output/wolf-goat-cabbage.pl +0 -3
  240. package/examples/eyelang/output/zebra.pl +0 -3
  241. package/examples/eyelang/path-discovery.pl +0 -45013
  242. package/examples/eyelang/peano-arithmetic.pl +0 -31
  243. package/examples/eyelang/peasant.pl +0 -30
  244. package/examples/eyelang/pendulum-period.pl +0 -50
  245. package/examples/eyelang/polynomial.pl +0 -124
  246. package/examples/eyelang/proof/age.pl +0 -71
  247. package/examples/eyelang/proof/aliases-and-namespaces.pl +0 -78
  248. package/examples/eyelang/proof/ancestor.pl +0 -140
  249. package/examples/eyelang/proof/animal.pl +0 -68
  250. package/examples/eyelang/proof/annotation.pl +0 -80
  251. package/examples/eyelang/proof/backward.pl +0 -22
  252. package/examples/eyelang/proof/cat-koko.pl +0 -86
  253. package/examples/eyelang/proof/data-negotiation.pl +0 -76
  254. package/examples/eyelang/proof/derived-rule.pl +0 -43
  255. package/examples/eyelang/proof/dog.pl +0 -31
  256. package/examples/eyelang/proof/electrical-rc-filter.pl +0 -105
  257. package/examples/eyelang/proof/existential-rule.pl +0 -40
  258. package/examples/eyelang/proof/floating-point.pl +0 -160
  259. package/examples/eyelang/proof/good-cobbler.pl +0 -16
  260. package/examples/eyelang/proof/group-inverse-uniqueness.pl +0 -84
  261. package/examples/eyelang/proof/list-collection.pl +0 -52
  262. package/examples/eyelang/proof/proof-contrapositive.pl +0 -78
  263. package/examples/eyelang/proof/socket-age.pl +0 -32
  264. package/examples/eyelang/proof/socket-family.pl +0 -59
  265. package/examples/eyelang/proof/socrates.pl +0 -38
  266. package/examples/eyelang/proof-contrapositive.pl +0 -27
  267. package/examples/eyelang/quadratic-formula.pl +0 -54
  268. package/examples/eyelang/radioactive-decay.pl +0 -56
  269. package/examples/eyelang/reusable-builtins.pl +0 -32
  270. package/examples/eyelang/riemann-hypothesis.pl +0 -110
  271. package/examples/eyelang/security-incident-correlation.pl +0 -69
  272. package/examples/eyelang/service-impact.pl +0 -41
  273. package/examples/eyelang/sieve.pl +0 -20
  274. package/examples/eyelang/skolem-functions.pl +0 -52
  275. package/examples/eyelang/socket-age.pl +0 -39
  276. package/examples/eyelang/socket-family.pl +0 -28
  277. package/examples/eyelang/socrates.pl +0 -19
  278. package/examples/eyelang/statistics-summary.pl +0 -54
  279. package/examples/eyelang/superdense-coding.pl +0 -84
  280. package/examples/eyelang/term-tools.pl +0 -23
  281. package/examples/eyelang/trust-flow-provenance-threshold.pl +0 -40
  282. package/examples/eyelang/turing.pl +0 -67
  283. package/examples/eyelang/vector-similarity.pl +0 -56
  284. package/examples/eyelang/vulnerability-impact.pl +0 -70
  285. package/examples/eyelang/witch.pl +0 -38
  286. package/examples/eyelang/wolf-goat-cabbage.pl +0 -56
  287. package/examples/eyelang/zebra.pl +0 -44
  288. package/eyelang.d.ts +0 -80
  289. package/lib/eyelang/bin.js +0 -7
  290. package/lib/eyelang/builtins/aggregation.js +0 -81
  291. package/lib/eyelang/builtins/arithmetic.js +0 -208
  292. package/lib/eyelang/builtins/context.js +0 -42
  293. package/lib/eyelang/builtins/control.js +0 -34
  294. package/lib/eyelang/builtins/core.js +0 -78
  295. package/lib/eyelang/builtins/lists.js +0 -283
  296. package/lib/eyelang/builtins/registry.js +0 -48
  297. package/lib/eyelang/builtins/strings.js +0 -234
  298. package/lib/eyelang/builtins/terms.js +0 -66
  299. package/lib/eyelang/cli.js +0 -180
  300. package/lib/eyelang/explain.js +0 -324
  301. package/lib/eyelang/hash.js +0 -294
  302. package/lib/eyelang/index.js +0 -47
  303. package/lib/eyelang/package.json +0 -3
  304. package/lib/eyelang/parser.js +0 -428
  305. package/lib/eyelang/program.js +0 -237
  306. package/lib/eyelang/solver.js +0 -237
  307. package/lib/eyelang/term.js +0 -328
@@ -1,296 +0,0 @@
1
- % Flandor insight-economy case adapted from Eyeling flandor.n3.
2
- % The original N3 renders a Markdown ARC report. This eyelang translation keeps
3
- % the neutral insight, policy envelope, authorization, package choice, and checks
4
- % as materialized relation output.
5
-
6
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
7
- materialize(caseName, 2).
8
- materialize(regionName, 2).
9
- materialize(metric, 2).
10
- materialize(activeNeedCount, 2).
11
- materialize(activeNeedThreshold, 2).
12
- materialize(recommendedPackageName, 2).
13
- materialize(budgetCapMEUR, 2).
14
- materialize(packageCostMEUR, 2).
15
- materialize(envelopeExpiresAt, 2).
16
- materialize(workerCoverage, 2).
17
- materialize(gridReliefMW, 2).
18
- materialize(outcome, 2).
19
- materialize(target, 2).
20
- materialize(reason, 2).
21
- materialize(alg, 2).
22
- materialize(payloadHashSHA256, 2).
23
- materialize(signatureHMAC, 2).
24
- materialize(auditEntries, 2).
25
- materialize(filesWritten, 2).
26
- materialize(allChecksPass, 2).
27
- materialize(exportWeakness, 2).
28
- materialize(skillsStrain, 2).
29
- materialize(gridStress, 2).
30
- materialize(needsRetoolingPulse, 2).
31
- materialize(derivedFromNeed, 2).
32
- materialize(signatureVerifies, 2).
33
- materialize(payloadHashMatches, 2).
34
- materialize(hmacMatches, 2).
35
- materialize(minimizationStripsSensitiveTerms, 2).
36
- materialize(scopeComplete, 2).
37
- materialize(authorizationAllowed, 2).
38
- materialize(thresholdReached, 2).
39
- materialize(packageWithinBudget, 2).
40
- materialize(packageCoversAllNeeds, 2).
41
- materialize(dutyTimingConsistent, 2).
42
- materialize(surveillanceReuseProhibited, 2).
43
- materialize(filesWrittenExpected, 2).
44
- materialize(lowestCostEligiblePackageChosen, 2).
45
-
46
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
47
- % Case metadata describes the request, audit window, and expected file writes.
48
- case_name(case, "flandor").
49
- question(case, "Is the Flemish Economic Resilience Board allowed to use a neutral macro-economic insight for regional stabilization, and if so which package should it activate for Flanders?").
50
- expectedFilesWritten(case, 6).
51
- requestPurpose(case, "regional_stabilization").
52
- requestAction(case, odrlUse).
53
- hubCreatedAt(case, "2026-04-08T07:00:00+00:00").
54
- hubExpiresAt(case, "2026-04-08T19:00:00+00:00").
55
- boardAuthAt(case, "2026-04-08T09:15:00+00:00").
56
- boardDutyAt(case, "2026-04-08T18:30:00+00:00").
57
- files_written(case, 6).
58
- audit_entries(case, 1).
59
-
60
- region_name(flanders, "Flanders").
61
- observedFirms(signals, 217).
62
- aggregationLevel(signals, "regional_cluster").
63
- containsFirmNames(signals, false).
64
- containsPayrollRows(signals, false).
65
-
66
- % Signals are intentionally aggregated: no firm names or payroll rows are present.
67
- industrialCluster(clusterAntwerp).
68
- clusterName(clusterAntwerp, "Antwerp chemicals").
69
- exportOrdersIndex(clusterAntwerp, 84).
70
- energyIntensity(clusterAntwerp, 92).
71
- industrialCluster(clusterGhent).
72
- clusterName(clusterGhent, "Ghent manufacturing").
73
- exportOrdersIndex(clusterGhent, 87).
74
- energyIntensity(clusterGhent, 76).
75
-
76
- techVacancyRateTenths(labourMarket, 46).
77
- techVacancyRate(labourMarket, 4.6).
78
- congestionHours(grid, 19).
79
- renewableCurtailmentMWh(grid, 240).
80
- maxMEUR(budget, 140).
81
- windowName(budget, "Q2 resilience window").
82
-
83
- % Candidate packages expose cost and which active needs they cover.
84
- policyPackage(pkgTrainingOnly).
85
- packageId(pkgTrainingOnly, "pkg:TRAIN_070").
86
- packageName(pkgTrainingOnly, "Flanders Skills Sprint").
87
- costMEUR(pkgTrainingOnly, 70).
88
- worker_coverage(pkgTrainingOnly, 900).
89
- grid_relief_mw(pkgTrainingOnly, 0).
90
- coversSkillsStrain(pkgTrainingOnly, true).
91
-
92
- policyPackage(pkgLogisticsOnly).
93
- packageId(pkgLogisticsOnly, "pkg:PORT_095").
94
- packageName(pkgLogisticsOnly, "Schelde Trade Buffer").
95
- costMEUR(pkgLogisticsOnly, 95).
96
- worker_coverage(pkgLogisticsOnly, 300).
97
- grid_relief_mw(pkgLogisticsOnly, 10).
98
- coversExportWeakness(pkgLogisticsOnly, true).
99
-
100
- policyPackage(pkgFlandor).
101
- packageId(pkgFlandor, "pkg:RET_FLEX_120").
102
- packageName(pkgFlandor, "Flandor Retooling Pulse").
103
- costMEUR(pkgFlandor, 120).
104
- worker_coverage(pkgFlandor, 1200).
105
- grid_relief_mw(pkgFlandor, 85).
106
- coversExportWeakness(pkgFlandor, true).
107
- coversSkillsStrain(pkgFlandor, true).
108
- coversGridStress(pkgFlandor, true).
109
-
110
- policyPackage(pkgFullCorridor).
111
- packageId(pkgFullCorridor, "pkg:CORRIDOR_165").
112
- packageName(pkgFullCorridor, "Full Corridor Shock Shield").
113
- costMEUR(pkgFullCorridor, 165).
114
- worker_coverage(pkgFullCorridor, 1600).
115
- grid_relief_mw(pkgFullCorridor, 110).
116
- coversExportWeakness(pkgFullCorridor, true).
117
- coversSkillsStrain(pkgFullCorridor, true).
118
- coversGridStress(pkgFullCorridor, true).
119
-
120
- insight(macroInsight).
121
- id(macroInsight, "https://example.org/insight/flandor").
122
- insight_metric(macroInsight, "regional_retooling_priority").
123
- thresholdScore(macroInsight, 3).
124
- thresholdDisplay(macroInsight, "3 active needs").
125
- suggestionPolicy(macroInsight, "lowest_cost_package_covering_all_active_needs").
126
- scopeDevice(macroInsight, "economic-resilience-board").
127
- scopeEvent(macroInsight, "budget-prep-window").
128
- region(macroInsight, "Flanders").
129
- createdAt(macroInsight, "2026-04-08T07:00:00+00:00").
130
- expiresAt(macroInsight, "2026-04-08T19:00:00+00:00").
131
- serializedLowercase(macroInsight, "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").
132
-
133
- envelopeInsight(envelope, macroInsight).
134
- envelopePolicy(envelope, policy).
135
- envelopeHash(envelope, "10a85e861075bef2a96c01c7f3238735f82b8f368deb62eafcedd1c4b7f7c707").
136
- permission(policy, odrlUse, macroInsight, "regional_stabilization").
137
- prohibition(policy, odrlDistribute, macroInsight, "firm_surveillance").
138
- duty(policy, odrlDelete, "2026-04-08T19:00:00+00:00").
139
-
140
- signature_alg(signature, "HMAC-SHA256").
141
- keyid(signature, "demo-shared-secret").
142
- created(signature, "2026-04-08T07:00:00+00:00").
143
- payload_hash_sha256(signature, "10a85e861075bef2a96c01c7f3238735f82b8f368deb62eafcedd1c4b7f7c707").
144
- display_payload_hash_sha256(signature, "718f5b17d07ab6a95503bc04a1000ddb132409f600659c03d21def81914b780b").
145
- signature_hmac(signature, "955968ca99a191783bc00cba068128ccb9ff40a5e6114fda13a52c74ee27329e").
146
- hmacVerificationMode(signature, trustedPrecomputedInput).
147
-
148
- reason_value(reasonText, "Secure aggregates from Flanders indicate simultaneous export weakness, technical labour scarcity, and grid congestion. A neutral macro insight is scoped to the economic-resilience board for one budget window only, enabling a temporary package without exposing firm-level books.").
149
-
150
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
151
- caseName(Case, Name) :- case_name(Case, Name).
152
- regionName(Region, Name) :- region_name(Region, Name).
153
- metric(Insight, Metric) :- insight_metric(Insight, Metric).
154
- alg(Signature, Alg) :- signature_alg(Signature, Alg).
155
- payloadHashSHA256(Signature, Hash) :- display_payload_hash_sha256(Signature, Hash).
156
- signatureHMAC(Signature, Hmac) :- signature_hmac(Signature, Hmac).
157
- auditEntries(Case, Count) :- audit_entries(Case, Count).
158
- filesWritten(Case, Count) :- files_written(Case, Count).
159
-
160
- export_weakness(case) :-
161
- industrialCluster(Cluster),
162
- exportOrdersIndex(Cluster, Index),
163
- lt(Index, 90).
164
-
165
- skills_strain(case) :-
166
- techVacancyRateTenths(labourMarket, Rate),
167
- gt(Rate, 39).
168
-
169
- grid_stress(case) :-
170
- congestionHours(grid, Hours),
171
- gt(Hours, 11).
172
-
173
- needs_retooling_pulse(case) :-
174
- export_weakness(case),
175
- skills_strain(case),
176
- grid_stress(case).
177
-
178
- payload_hash_matches(check) :-
179
- envelopeHash(envelope, Digest),
180
- payload_hash_sha256(signature, Digest).
181
-
182
- signature_verifies(check) :- hmacVerificationMode(signature, trustedPrecomputedInput).
183
- hmac_matches(check) :-
184
- hmacVerificationMode(signature, trustedPrecomputedInput),
185
- signature_hmac(signature, "955968ca99a191783bc00cba068128ccb9ff40a5e6114fda13a52c74ee27329e").
186
-
187
- minimization_strips_sensitive_terms(check) :-
188
- serializedLowercase(macroInsight, Text),
189
- not_matches(Text, "salary|payroll|invoice|medical|firmname").
190
-
191
- scope_complete(check) :-
192
- scopeDevice(macroInsight, _Device),
193
- scopeEvent(macroInsight, _Event),
194
- expiresAt(macroInsight, _Expiry).
195
-
196
- % Authorization combines policy scope, envelope timing, and use permission.
197
- authorization_allowed(check) :-
198
- permission(policy, odrlUse, macroInsight, "regional_stabilization"),
199
- boardAuthAt(case, AuthAt),
200
- expiresAt(macroInsight, ExpiresAt),
201
- le(AuthAt, ExpiresAt).
202
-
203
- decision(decision, "Allowed", macroInsight) :- authorization_allowed(check).
204
-
205
- % An eligible package must cover every active need and fit under the budget cap.
206
- eligible_package(Pkg) :-
207
- needs_retooling_pulse(case),
208
- maxMEUR(budget, Max),
209
- policyPackage(Pkg),
210
- costMEUR(Pkg, Cost),
211
- coversExportWeakness(Pkg, true),
212
- coversSkillsStrain(Pkg, true),
213
- coversGridStress(Pkg, true),
214
- le(Cost, Max).
215
-
216
- lower_cost_eligible_package(Cost) :-
217
- eligible_package(Other),
218
- costMEUR(Other, OtherCost),
219
- lt(OtherCost, Cost).
220
-
221
- % The recommendation is the lowest-cost eligible package.
222
- recommended_package(case, Pkg) :-
223
- eligible_package(Pkg),
224
- costMEUR(Pkg, Cost),
225
- not(lower_cost_eligible_package(Cost)).
226
-
227
- package_within_budget(check) :-
228
- recommended_package(case, Pkg),
229
- costMEUR(Pkg, Cost),
230
- maxMEUR(budget, Max),
231
- le(Cost, Max).
232
-
233
- package_covers_all_needs(check) :-
234
- recommended_package(case, Pkg),
235
- coversExportWeakness(Pkg, true),
236
- coversSkillsStrain(Pkg, true),
237
- coversGridStress(Pkg, true).
238
-
239
- duty_timing_consistent(check) :-
240
- boardDutyAt(case, DutyAt),
241
- expiresAt(macroInsight, ExpiresAt),
242
- le(DutyAt, ExpiresAt).
243
-
244
- surveillance_reuse_prohibited(check) :- prohibition(policy, odrlDistribute, macroInsight, "firm_surveillance").
245
- files_written_expected(check) :- files_written(case, 6).
246
- threshold_reached(check) :- export_weakness(case), skills_strain(case), grid_stress(case).
247
- lowest_cost_eligible_package_chosen(check) :- recommended_package(case, _Pkg).
248
-
249
- all_checks_pass(result) :-
250
- signature_verifies(check),
251
- payload_hash_matches(check),
252
- minimization_strips_sensitive_terms(check),
253
- scope_complete(check),
254
- authorization_allowed(check),
255
- package_within_budget(check),
256
- package_covers_all_needs(check),
257
- duty_timing_consistent(check),
258
- surveillance_reuse_prohibited(check),
259
- files_written_expected(check).
260
-
261
- exportWeakness(case, true) :- export_weakness(case).
262
- skillsStrain(case, true) :- skills_strain(case).
263
- gridStress(case, true) :- grid_stress(case).
264
- needsRetoolingPulse(case, true) :- needs_retooling_pulse(case).
265
- derivedFromNeed(case, "regional_retooling_and_flexibility") :- needs_retooling_pulse(case).
266
- activeNeedCount(answer, 3) :- threshold_reached(check).
267
- activeNeedThreshold(answer, 3) :- thresholdScore(macroInsight, 3).
268
- recommendedPackageName(answer, Name) :- recommended_package(case, Pkg), packageName(Pkg, Name).
269
- budgetCapMEUR(answer, Max) :- maxMEUR(budget, Max).
270
- packageCostMEUR(answer, Cost) :- recommended_package(case, Pkg), costMEUR(Pkg, Cost).
271
- envelopeExpiresAt(answer, Time) :- expiresAt(macroInsight, Time).
272
- workerCoverage(why, Workers) :- recommended_package(case, Pkg), worker_coverage(Pkg, Workers).
273
- gridReliefMW(why, MW) :- recommended_package(case, Pkg), grid_relief_mw(Pkg, MW).
274
- outcome(decision, Outcome) :- decision(decision, Outcome, _Target).
275
- target(decision, Target) :- decision(decision, _Outcome, Target).
276
- allChecksPass(result, true) :- all_checks_pass(result).
277
- signatureVerifies(check, true) :- signature_verifies(check).
278
- payloadHashMatches(check, true) :- payload_hash_matches(check).
279
- hmacMatches(check, true) :- hmac_matches(check).
280
- minimizationStripsSensitiveTerms(check, true) :- minimization_strips_sensitive_terms(check).
281
- scopeComplete(check, true) :- scope_complete(check).
282
- authorizationAllowed(check, true) :- authorization_allowed(check).
283
- thresholdReached(check, true) :- threshold_reached(check).
284
- packageWithinBudget(check, true) :- package_within_budget(check).
285
- packageCoversAllNeeds(check, true) :- package_covers_all_needs(check).
286
- dutyTimingConsistent(check, true) :- duty_timing_consistent(check).
287
- surveillanceReuseProhibited(check, true) :- surveillance_reuse_prohibited(check).
288
- filesWrittenExpected(check, true) :- files_written_expected(check).
289
- lowestCostEligiblePackageChosen(check, true) :- lowest_cost_eligible_package_chosen(check).
290
-
291
- reason(whyExportWeakness, "Export weakness is active because at least one cluster has exportOrdersIndex < 90 (Antwerp chemicals=84, Ghent manufacturing=87).") :- export_weakness(case).
292
- reason(whySkillsStrain, "Skills strain is active because technical vacancy rate is 4.6% (threshold > 3.9%).") :- skills_strain(case).
293
- reason(whyGridStress, "Grid stress is active because congestion hours = 19 (threshold > 11).") :- grid_stress(case).
294
- reason(whyRecommendationPolicy, "The recommendation policy is \"lowest_cost_package_covering_all_active_needs\", so the cheapest package that covers all active needs within budget is selected.") :- recommended_package(case, _Pkg).
295
- reason(whySelectedPackage, "Selected package \"Flandor Retooling Pulse\" covers export=true, skills=true, grid=true, cost=€120M.") :- recommended_package(case, pkgFlandor).
296
- reason(whyUsage, "Usage is permitted only for purpose \"regional_stabilization\" and the envelope expires at 2026-04-08T19:00:00+00:00.") :- authorization_allowed(check).
@@ -1,23 +0,0 @@
1
- % Floating-point arithmetic and comparisons.
2
- % Integer-only operands continue to use arbitrary-size integer arithmetic.
3
-
4
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
5
- materialize(value, 2).
6
- materialize(than, 2).
7
-
8
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
9
- % Floating-point constants can be mixed with integer constants in built-ins.
10
- sample(roomC, 21.5).
11
- sample(targetC, 19.25).
12
-
13
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
14
- value(sum, X) :- add(1.5, 2.25, X).
15
- value(difference, X) :- sub(10.0, 3.125, X).
16
- value(product, X) :- mul(2.5, 4.0, X).
17
- value(quotient, X) :- div(7.5, 2, X).
18
- value(sqrtByPower, X) :- pow(9.0, 0.5, X).
19
- value(mathSum, X) :- add(0.125, 0.875, X).
20
- value(mathProduct, X) :- mul(6.0, 0.5, X).
21
- than(warmer, targetC) :- sample(roomC, R), sample(targetC, T), gt(R, T).
22
- % Boolean-like conclusions remain ordinary atoms.
23
- value(comfortable, true) :- sample(roomC, R), ge(R, 21.0), le(R, 22.0).
@@ -1,127 +0,0 @@
1
- % EYE reasoning-inspired example: four-colour map check for the European Union.
2
- %
3
- % The source EYE example encodes the EU neighbourhood map and an answer assigning
4
- % four colours. This eyelang version keeps the same map/assignment shape and adds
5
- % a rule-level validation layer that rejects equal colours across borders.
6
-
7
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
8
- materialize(color, 2).
9
- materialize(status, 2).
10
- materialize(reason, 2).
11
-
12
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
13
- country(belgium). country(netherlands). country(luxemburg). country(france).
14
- country(germany). country(italy). country(denmark). country(ireland).
15
- country(greece). country(spain). country(portugal). country(austria).
16
- country(sweden). country(finland). country(cyprus). country(malta).
17
- country(poland). country(hungary). country(czech_republic). country(slovakia).
18
- country(slovenia). country(estonia). country(latvia). country(lithuania).
19
- country(bulgaria). country(romania). country(croatia).
20
-
21
- % Undirected borders represented once.
22
- border(belgium, france). border(belgium, netherlands). border(belgium, luxemburg). border(belgium, germany).
23
- border(netherlands, germany).
24
- border(luxemburg, france). border(luxemburg, germany).
25
- border(france, spain). border(france, germany). border(france, italy).
26
- border(germany, denmark). border(germany, austria). border(germany, poland). border(germany, czech_republic).
27
- border(italy, austria). border(italy, slovenia).
28
- border(greece, bulgaria).
29
- border(spain, portugal).
30
- border(austria, czech_republic). border(austria, hungary). border(austria, slovenia). border(austria, slovakia).
31
- border(sweden, finland).
32
- border(poland, czech_republic). border(poland, slovakia). border(poland, lithuania).
33
- border(hungary, slovakia). border(hungary, romania). border(hungary, croatia). border(hungary, slovenia).
34
- border(czech_republic, slovakia).
35
- border(slovakia, austria).
36
- border(slovenia, croatia).
37
- border(estonia, latvia).
38
- border(latvia, lithuania).
39
- border(bulgaria, romania).
40
-
41
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
42
- adjacent(A, B) :- border(A, B).
43
- adjacent(A, B) :- border(B, A).
44
-
45
- color(red). color(green). color(blue). color(yellow).
46
-
47
- assigned(belgium, yellow).
48
- assigned(netherlands, green).
49
- assigned(luxemburg, green).
50
- assigned(france, blue).
51
- assigned(germany, red).
52
- assigned(italy, red).
53
- assigned(denmark, green).
54
- assigned(ireland, red).
55
- assigned(greece, red).
56
- assigned(spain, green).
57
- assigned(portugal, red).
58
- assigned(austria, yellow).
59
- assigned(sweden, green).
60
- assigned(finland, red).
61
- assigned(cyprus, red).
62
- assigned(malta, red).
63
- assigned(poland, blue).
64
- assigned(hungary, blue).
65
- assigned(czech_republic, green).
66
- assigned(slovakia, red).
67
- assigned(slovenia, green).
68
- assigned(estonia, red).
69
- assigned(latvia, green).
70
- assigned(lithuania, red).
71
- assigned(bulgaria, green).
72
- assigned(romania, red).
73
- assigned(croatia, red).
74
-
75
- valid_assignment(Country) :-
76
- country(Country),
77
- assigned(Country, Colour),
78
- color(Colour).
79
-
80
- bad_border(A, B, Colour) :-
81
- border(A, B),
82
- assigned(A, Colour),
83
- assigned(B, Colour).
84
-
85
- border_colours_differ(A, B) :-
86
- border(A, B),
87
- assigned(A, ColourA),
88
- assigned(B, ColourB),
89
- neq(ColourA, ColourB).
90
-
91
- country_count(27).
92
- border_count(36).
93
-
94
- all_countries_coloured(map_eu) :-
95
- findall(Country, valid_assignment(Country), Countries),
96
- sort(Countries, UniqueCountries),
97
- length(UniqueCountries, Count),
98
- country_count(Count).
99
-
100
- all_borders_checked(map_eu) :-
101
- findall([A, B], border_colours_differ(A, B), Borders),
102
- sort(Borders, UniqueBorders),
103
- length(UniqueBorders, Count),
104
- border_count(Count).
105
-
106
- map_valid(map_eu) :-
107
- all_countries_coloured(map_eu),
108
- all_borders_checked(map_eu).
109
-
110
- colouring([
111
- [belgium, yellow], [netherlands, green], [luxemburg, green], [france, blue],
112
- [germany, red], [italy, red], [denmark, green], [ireland, red], [greece, red],
113
- [spain, green], [portugal, red], [austria, yellow], [sweden, green], [finland, red],
114
- [cyprus, red], [malta, red], [poland, blue], [hungary, blue], [czech_republic, green],
115
- [slovakia, red], [slovenia, green], [estonia, red], [latvia, green], [lithuania, red],
116
- [bulgaria, green], [romania, red], [croatia, red]
117
- ]).
118
-
119
- color(map_eu, Colours) :-
120
- map_valid(map_eu),
121
- colouring(Colours).
122
-
123
- status(map_eu, valid_four_colour_assignment) :-
124
- map_valid(map_eu).
125
-
126
- reason(map_eu, "no neighbouring countries share a colour") :-
127
- map_valid(map_eu).
@@ -1,113 +0,0 @@
1
- % Adapted from Eyeling's fundamental-theorem-arithmetic.n3.
2
- % Compute a prime factorization by repeated smallest-divisor decomposition,
3
- % then check product reconstruction and primality of the distinct factors.
4
-
5
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
6
- materialize(n, 2).
7
- materialize(factorsSmallest, 2).
8
- materialize(factorsLargest, 2).
9
- materialize(product, 2).
10
- materialize(expectedFactorsMatched, 2).
11
- materialize(productReconstructsInput, 2).
12
- materialize(distinctPrimeCount, 2).
13
- materialize(smallestPrimeFactor, 2).
14
- materialize(largestPrimeFactor, 2).
15
-
16
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
17
- case(fta, 202692987).
18
- expected_factors(fta, [3, 3, 7, 829, 3881]).
19
-
20
- % A divides B in positive integers.
21
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
22
- divides(A, B) :-
23
- gt(A, 0),
24
- gt(B, 0),
25
- mod(B, A, 0).
26
-
27
- smallest_divisor_from(N, D, D) :-
28
- divides(D, N).
29
-
30
- smallest_divisor_from(N, D, N) :-
31
- mul(D, D, D2),
32
- gt(D2, N).
33
-
34
- smallest_divisor_from(N, D, S) :-
35
- not(divides(D, N)),
36
- mul(D, D, D2),
37
- le(D2, N),
38
- add(D, 1, D1),
39
- smallest_divisor_from(N, D1, S).
40
-
41
- trial_prime(2).
42
- trial_prime(3).
43
- trial_prime(P) :-
44
- gt(P, 3),
45
- smallest_divisor_from(P, 2, P).
46
-
47
- factor_smallest(N, []) :-
48
- lt(N, 2).
49
-
50
- factor_smallest(N, [N]) :-
51
- ge(N, 2),
52
- smallest_divisor_from(N, 2, N).
53
-
54
- factor_smallest(N, Factors) :-
55
- ge(N, 2),
56
- smallest_divisor_from(N, 2, D),
57
- neq(D, N),
58
- div(N, D, Q),
59
- factor_smallest(D, Left),
60
- factor_smallest(Q, Right),
61
- append(Left, Right, Factors).
62
-
63
- factor_largest(N, Factors) :-
64
- factor_smallest(N, Smallest),
65
- reverse(Smallest, Factors).
66
-
67
- product([], 1).
68
- product([X|Rest], P) :-
69
- product(Rest, P0),
70
- mul(X, P0, P).
71
-
72
- all_expected_primes(true) :-
73
- trial_prime(3),
74
- trial_prime(7),
75
- trial_prime(829),
76
- trial_prime(3881).
77
-
78
- n(case, N) :-
79
- case(fta, N).
80
-
81
- factorsSmallest(case, Factors) :-
82
- case(fta, N),
83
- factor_smallest(N, Factors).
84
-
85
- factorsLargest(case, Factors) :-
86
- case(fta, N),
87
- factor_largest(N, Factors).
88
-
89
- product(case, Product) :-
90
- case(fta, N),
91
- factor_smallest(N, Factors),
92
- product(Factors, Product).
93
-
94
- expectedFactorsMatched(case, true) :-
95
- case(fta, N),
96
- expected_factors(fta, Factors),
97
- factor_smallest(N, Factors).
98
-
99
- productReconstructsInput(case, true) :-
100
- case(fta, N),
101
- factor_smallest(N, Factors),
102
- product(Factors, N).
103
-
104
- distinctPrimeCount(case, 4) :-
105
- all_expected_primes(true).
106
-
107
- smallestPrimeFactor(case, 3) :-
108
- case(fta, N),
109
- factor_smallest(N, [3|_]).
110
-
111
- largestPrimeFactor(case, 3881) :-
112
- case(fta, N),
113
- factor_largest(N, [3881|_]).