eyeling 1.32.1 → 1.33.1

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 (629) hide show
  1. package/README.md +87 -16
  2. package/bin/eyeling.cjs +56 -4
  3. package/dist/browser/eyeling.browser.js +2 -11
  4. package/examples/eyelang/INTEGRATION.md +13 -0
  5. package/examples/eyelang/README.md +628 -0
  6. package/examples/eyelang/SPEC.md +684 -0
  7. package/examples/eyelang/access-control-policy.pl +52 -0
  8. package/examples/eyelang/ackermann.pl +46 -0
  9. package/examples/eyelang/age.pl +28 -0
  10. package/examples/eyelang/aliases-and-namespaces.pl +22 -0
  11. package/examples/eyelang/alignment-demo.pl +44 -0
  12. package/examples/eyelang/allen-interval-calculus.pl +64 -0
  13. package/examples/eyelang/ancestor.pl +21 -0
  14. package/examples/eyelang/animal.pl +21 -0
  15. package/examples/eyelang/annotation-rdf12.ttl +12 -0
  16. package/examples/eyelang/annotation.pl +34 -0
  17. package/examples/eyelang/auroracare.pl +309 -0
  18. package/examples/eyelang/backward.pl +12 -0
  19. package/examples/eyelang/basic-monadic.pl +10018 -0
  20. package/examples/eyelang/bayes-diagnosis.pl +108 -0
  21. package/examples/eyelang/bayes-therapy.pl +182 -0
  22. package/examples/eyelang/beam-deflection.pl +50 -0
  23. package/examples/eyelang/blocks-world-planning.pl +75 -0
  24. package/examples/eyelang/bmi.pl +232 -0
  25. package/examples/eyelang/braking-safety-worlds.pl +69 -0
  26. package/examples/eyelang/buck-converter-design.pl +78 -0
  27. package/examples/eyelang/cache-performance.pl +54 -0
  28. package/examples/eyelang/canary-release.pl +49 -0
  29. package/examples/eyelang/cat-koko.pl +24 -0
  30. package/examples/eyelang/clinical-trial-screening.pl +92 -0
  31. package/examples/eyelang/collatz-1000.pl +14 -0
  32. package/examples/eyelang/combinatorics-findall-sort.pl +37 -0
  33. package/examples/eyelang/competitive-enzyme-kinetics.pl +78 -0
  34. package/examples/eyelang/complex-matrix-stability.pl +45 -0
  35. package/examples/eyelang/complex.pl +121 -0
  36. package/examples/eyelang/composition-of-injective-functions-is-injective.pl +50 -0
  37. package/examples/eyelang/context-association.pl +53 -0
  38. package/examples/eyelang/control-system.pl +72 -0
  39. package/examples/eyelang/cryptarithmetic-send-more-money.pl +49 -0
  40. package/examples/eyelang/cyclic-path.pl +16 -0
  41. package/examples/eyelang/d3-group.pl +100 -0
  42. package/examples/eyelang/dairy-energy-balance.pl +65 -0
  43. package/examples/eyelang/data-negotiation.pl +39 -0
  44. package/examples/eyelang/deep-taxonomy-10.pl +115 -0
  45. package/examples/eyelang/deep-taxonomy-100.pl +385 -0
  46. package/examples/eyelang/deep-taxonomy-1000.pl +3085 -0
  47. package/examples/eyelang/deep-taxonomy-10000.pl +30094 -0
  48. package/examples/eyelang/deep-taxonomy-100000.pl +300184 -0
  49. package/examples/eyelang/delfour.pl +281 -0
  50. package/examples/eyelang/dense-hamiltonian-cycle.pl +92 -0
  51. package/examples/eyelang/deontic-logic.pl +52 -0
  52. package/examples/eyelang/derived-backward-rule.pl +30 -0
  53. package/examples/eyelang/derived-rule.pl +27 -0
  54. package/examples/eyelang/diamond-property.pl +38 -0
  55. package/examples/eyelang/dijkstra-findall-sort.pl +44 -0
  56. package/examples/eyelang/dijkstra-risk-path.pl +86 -0
  57. package/examples/eyelang/dijkstra.pl +46 -0
  58. package/examples/eyelang/dining-philosophers.pl +140 -0
  59. package/examples/eyelang/directional-language.ttl +9 -0
  60. package/examples/eyelang/dog.pl +25 -0
  61. package/examples/eyelang/drone-corridor-planner.pl +51 -0
  62. package/examples/eyelang/easter-computus.pl +89 -0
  63. package/examples/eyelang/electrical-rc-filter.pl +36 -0
  64. package/examples/eyelang/epidemic-policy.pl +67 -0
  65. package/examples/eyelang/equivalence-classes-overlap-implies-same-class.pl +27 -0
  66. package/examples/eyelang/eulerian-path.pl +85 -0
  67. package/examples/eyelang/ev-range-worlds.pl +82 -0
  68. package/examples/eyelang/exact-cover-sudoku.pl +113 -0
  69. package/examples/eyelang/existential-rule.pl +18 -0
  70. package/examples/eyelang/exoplanet-validation-worlds.pl +88 -0
  71. package/examples/eyelang/expression-eval.pl +43 -0
  72. package/examples/eyelang/eyeling-ackermann.n3 +41 -0
  73. package/examples/eyelang/eyeling-age-threshold.n3 +12 -0
  74. package/examples/eyelang/eyeling-alignment-demo.n3 +11 -0
  75. package/examples/eyelang/eyeling-allen-interval-calculus-small.n3 +13 -0
  76. package/examples/eyelang/eyeling-backward-recursion.n3 +11 -0
  77. package/examples/eyelang/eyeling-backward.n3 +10 -0
  78. package/examples/eyelang/eyeling-basic-monadic-small.n3 +11 -0
  79. package/examples/eyelang/eyeling-bmi.n3 +10 -0
  80. package/examples/eyelang/eyeling-cat-koko.n3 +15 -0
  81. package/examples/eyelang/eyeling-collatz-small.n3 +11 -0
  82. package/examples/eyelang/eyeling-collection.n3 +11 -0
  83. package/examples/eyelang/eyeling-complex-arithmetic.n3 +10 -0
  84. package/examples/eyelang/eyeling-context-association.n3 +11 -0
  85. package/examples/eyelang/eyeling-control-system-small.n3 +11 -0
  86. package/examples/eyelang/eyeling-crypto-builtins-extra.n3 +10 -0
  87. package/examples/eyelang/eyeling-crypto-builtins.n3 +8 -0
  88. package/examples/eyelang/eyeling-deep-taxonomy-10.n3 +18 -0
  89. package/examples/eyelang/eyeling-derived-backward-rule-flat.n3 +10 -0
  90. package/examples/eyelang/eyeling-derived-rule-flat.n3 +9 -0
  91. package/examples/eyelang/eyeling-digital-product-passport-small.n3 +11 -0
  92. package/examples/eyelang/eyeling-dijkstra-tiny.n3 +14 -0
  93. package/examples/eyelang/eyeling-dog-license.n3 +13 -0
  94. package/examples/eyelang/eyeling-drone-corridor-planner-small.n3 +13 -0
  95. package/examples/eyelang/eyeling-equals.n3 +8 -0
  96. package/examples/eyelang/eyeling-equivalence-classes.n3 +11 -0
  97. package/examples/eyelang/eyeling-euler-identity.n3 +9 -0
  98. package/examples/eyelang/eyeling-existential-rule.n3 +9 -0
  99. package/examples/eyelang/eyeling-expression-eval.n3 +11 -0
  100. package/examples/eyelang/eyeling-family-cousins-extended.n3 +12 -0
  101. package/examples/eyelang/eyeling-fastpow.n3 +10 -0
  102. package/examples/eyelang/eyeling-fibonacci.n3 +44 -0
  103. package/examples/eyelang/eyeling-french-cities-reachability.n3 +22 -0
  104. package/examples/eyelang/eyeling-goldbach-small.n3 +22 -0
  105. package/examples/eyelang/eyeling-good-cobbler.n3 +9 -0
  106. package/examples/eyelang/eyeling-list-builtins.n3 +10 -0
  107. package/examples/eyelang/eyeling-list-collection-extra.n3 +9 -0
  108. package/examples/eyelang/eyeling-math-builtins.n3 +9 -0
  109. package/examples/eyelang/eyeling-string-builtins-extra.n3 +9 -0
  110. package/examples/eyelang/eyeling-string-builtins.n3 +10 -0
  111. package/examples/eyelang/eyeling-time-builtins.n3 +11 -0
  112. package/examples/eyelang/eyeling-time-components-extra.n3 +10 -0
  113. package/examples/eyelang/eyeling-witch.n3 +10 -0
  114. package/examples/eyelang/family-cousins.n3 +17 -0
  115. package/examples/eyelang/family-cousins.pl +65 -0
  116. package/examples/eyelang/fastpow.pl +53 -0
  117. package/examples/eyelang/fft8-numeric.pl +83 -0
  118. package/examples/eyelang/fibonacci.pl +53 -0
  119. package/examples/eyelang/field-nitrogen-balance.pl +70 -0
  120. package/examples/eyelang/flandor.pl +296 -0
  121. package/examples/eyelang/floating-point.pl +23 -0
  122. package/examples/eyelang/four-color-map.pl +127 -0
  123. package/examples/eyelang/fundamental-theorem-arithmetic.pl +113 -0
  124. package/examples/eyelang/gcd-bezout-identity.pl +48 -0
  125. package/examples/eyelang/gd-step-certified.pl +158 -0
  126. package/examples/eyelang/gdpr-compliance.pl +69 -0
  127. package/examples/eyelang/goldbach-1000.pl +185 -0
  128. package/examples/eyelang/good-cobbler.pl +14 -0
  129. package/examples/eyelang/gps.pl +152 -0
  130. package/examples/eyelang/graph-reachability.pl +36 -0
  131. package/examples/eyelang/gray-code-counter.pl +48 -0
  132. package/examples/eyelang/greatest-lower-bound-uniqueness.pl +28 -0
  133. package/examples/eyelang/group-inverse-uniqueness.pl +34 -0
  134. package/examples/eyelang/hamiltonian-cycle.pl +55 -0
  135. package/examples/eyelang/hamiltonian-path.pl +49 -0
  136. package/examples/eyelang/hamming-code.pl +105 -0
  137. package/examples/eyelang/hanoi.pl +20 -0
  138. package/examples/eyelang/heat-loss.pl +51 -0
  139. package/examples/eyelang/heron-theorem.pl +36 -0
  140. package/examples/eyelang/ideal-gas-law.pl +37 -0
  141. package/examples/eyelang/illegitimate-reasoning.pl +88 -0
  142. package/examples/eyelang/kaprekar.pl +32 -0
  143. package/examples/eyelang/law-of-cosines.pl +31 -0
  144. package/examples/eyelang/least-squares-regression.pl +81 -0
  145. package/examples/eyelang/list-collection.pl +33 -0
  146. package/examples/eyelang/lldm.pl +78 -0
  147. package/examples/eyelang/manufacturing-quality-control.pl +73 -0
  148. package/examples/eyelang/matrix.pl +296 -0
  149. package/examples/eyelang/microgrid-dispatch.pl +85 -0
  150. package/examples/eyelang/monkey-bananas.pl +45 -0
  151. package/examples/eyelang/n-queens.pl +23 -0
  152. package/examples/eyelang/n3-builtins.n3 +28 -0
  153. package/examples/eyelang/network-sla.pl +48 -0
  154. package/examples/eyelang/newton-raphson.pl +49 -0
  155. package/examples/eyelang/nixon-diamond.pl +37 -0
  156. package/examples/eyelang/odrl-dpv-healthcare-risk-ranked.pl +266 -0
  157. package/examples/eyelang/odrl-dpv-risk-ranked.pl +320 -0
  158. package/examples/eyelang/orbital-transfer-design.pl +113 -0
  159. package/examples/eyelang/output/access-control-policy.pl +2 -0
  160. package/examples/eyelang/output/ackermann.pl +12 -0
  161. package/examples/eyelang/output/age.pl +2 -0
  162. package/examples/eyelang/output/aliases-and-namespaces.pl +5 -0
  163. package/examples/eyelang/output/alignment-demo.pl +32 -0
  164. package/examples/eyelang/output/allen-interval-calculus.pl +154 -0
  165. package/examples/eyelang/output/ancestor.pl +6 -0
  166. package/examples/eyelang/output/animal.pl +4 -0
  167. package/examples/eyelang/output/annotation-rdf12.ttl +1 -0
  168. package/examples/eyelang/output/annotation.pl +4 -0
  169. package/examples/eyelang/output/auroracare.pl +117 -0
  170. package/examples/eyelang/output/backward.pl +1 -0
  171. package/examples/eyelang/output/basic-monadic.pl +1518 -0
  172. package/examples/eyelang/output/bayes-diagnosis.pl +13 -0
  173. package/examples/eyelang/output/bayes-therapy.pl +23 -0
  174. package/examples/eyelang/output/beam-deflection.pl +5 -0
  175. package/examples/eyelang/output/blocks-world-planning.pl +4 -0
  176. package/examples/eyelang/output/bmi.pl +32 -0
  177. package/examples/eyelang/output/braking-safety-worlds.pl +18 -0
  178. package/examples/eyelang/output/buck-converter-design.pl +6 -0
  179. package/examples/eyelang/output/cache-performance.pl +4 -0
  180. package/examples/eyelang/output/canary-release.pl +5 -0
  181. package/examples/eyelang/output/cat-koko.pl +3 -0
  182. package/examples/eyelang/output/clinical-trial-screening.pl +9 -0
  183. package/examples/eyelang/output/collatz-1000.pl +1000 -0
  184. package/examples/eyelang/output/combinatorics-findall-sort.pl +2 -0
  185. package/examples/eyelang/output/competitive-enzyme-kinetics.pl +6 -0
  186. package/examples/eyelang/output/complex-matrix-stability.pl +5 -0
  187. package/examples/eyelang/output/complex.pl +1 -0
  188. package/examples/eyelang/output/composition-of-injective-functions-is-injective.pl +2 -0
  189. package/examples/eyelang/output/context-association.pl +3 -0
  190. package/examples/eyelang/output/control-system.pl +6 -0
  191. package/examples/eyelang/output/cryptarithmetic-send-more-money.pl +6 -0
  192. package/examples/eyelang/output/cyclic-path.pl +16 -0
  193. package/examples/eyelang/output/d3-group.pl +2 -0
  194. package/examples/eyelang/output/dairy-energy-balance.pl +13 -0
  195. package/examples/eyelang/output/data-negotiation.pl +1 -0
  196. package/examples/eyelang/output/deep-taxonomy-10.pl +16 -0
  197. package/examples/eyelang/output/deep-taxonomy-100.pl +16 -0
  198. package/examples/eyelang/output/deep-taxonomy-1000.pl +16 -0
  199. package/examples/eyelang/output/deep-taxonomy-10000.pl +16 -0
  200. package/examples/eyelang/output/deep-taxonomy-100000.pl +16 -0
  201. package/examples/eyelang/output/delfour.pl +31 -0
  202. package/examples/eyelang/output/dense-hamiltonian-cycle.pl +4 -0
  203. package/examples/eyelang/output/deontic-logic.pl +4 -0
  204. package/examples/eyelang/output/derived-backward-rule.pl +3 -0
  205. package/examples/eyelang/output/derived-rule.pl +2 -0
  206. package/examples/eyelang/output/diamond-property.pl +4 -0
  207. package/examples/eyelang/output/dijkstra-findall-sort.pl +2 -0
  208. package/examples/eyelang/output/dijkstra-risk-path.pl +29 -0
  209. package/examples/eyelang/output/dijkstra.pl +16 -0
  210. package/examples/eyelang/output/dining-philosophers.pl +350 -0
  211. package/examples/eyelang/output/directional-language.ttl +1 -0
  212. package/examples/eyelang/output/dog.pl +1 -0
  213. package/examples/eyelang/output/drone-corridor-planner.pl +17 -0
  214. package/examples/eyelang/output/easter-computus.pl +30 -0
  215. package/examples/eyelang/output/electrical-rc-filter.pl +3 -0
  216. package/examples/eyelang/output/epidemic-policy.pl +14 -0
  217. package/examples/eyelang/output/equivalence-classes-overlap-implies-same-class.pl +18 -0
  218. package/examples/eyelang/output/eulerian-path.pl +3 -0
  219. package/examples/eyelang/output/ev-range-worlds.pl +19 -0
  220. package/examples/eyelang/output/exact-cover-sudoku.pl +3 -0
  221. package/examples/eyelang/output/existential-rule.pl +2 -0
  222. package/examples/eyelang/output/exoplanet-validation-worlds.pl +22 -0
  223. package/examples/eyelang/output/expression-eval.pl +1 -0
  224. package/examples/eyelang/output/eyeling-ackermann.n3 +12 -0
  225. package/examples/eyelang/output/eyeling-age-threshold.n3 +4 -0
  226. package/examples/eyelang/output/eyeling-alignment-demo.n3 +1 -0
  227. package/examples/eyelang/output/eyeling-allen-interval-calculus-small.n3 +3 -0
  228. package/examples/eyelang/output/eyeling-backward-recursion.n3 +9 -0
  229. package/examples/eyelang/output/eyeling-backward.n3 +1 -0
  230. package/examples/eyelang/output/eyeling-basic-monadic-small.n3 +8 -0
  231. package/examples/eyelang/output/eyeling-bmi.n3 +2 -0
  232. package/examples/eyelang/output/eyeling-cat-koko.n3 +3 -0
  233. package/examples/eyelang/output/eyeling-collatz-small.n3 +3 -0
  234. package/examples/eyelang/output/eyeling-collection.n3 +1 -0
  235. package/examples/eyelang/output/eyeling-complex-arithmetic.n3 +5 -0
  236. package/examples/eyelang/output/eyeling-context-association.n3 +4 -0
  237. package/examples/eyelang/output/eyeling-control-system-small.n3 +4 -0
  238. package/examples/eyelang/output/eyeling-crypto-builtins-extra.n3 +3 -0
  239. package/examples/eyelang/output/eyeling-crypto-builtins.n3 +2 -0
  240. package/examples/eyelang/output/eyeling-deep-taxonomy-10.n3 +32 -0
  241. package/examples/eyelang/output/eyeling-derived-backward-rule-flat.n3 +4 -0
  242. package/examples/eyelang/output/eyeling-derived-rule-flat.n3 +2 -0
  243. package/examples/eyelang/output/eyeling-digital-product-passport-small.n3 +3 -0
  244. package/examples/eyelang/output/eyeling-dijkstra-tiny.n3 +9 -0
  245. package/examples/eyelang/output/eyeling-dog-license.n3 +1 -0
  246. package/examples/eyelang/output/eyeling-drone-corridor-planner-small.n3 +5 -0
  247. package/examples/eyelang/output/eyeling-equals.n3 +1 -0
  248. package/examples/eyelang/output/eyeling-equivalence-classes.n3 +2 -0
  249. package/examples/eyelang/output/eyeling-euler-identity.n3 +3 -0
  250. package/examples/eyelang/output/eyeling-existential-rule.n3 +4 -0
  251. package/examples/eyelang/output/eyeling-expression-eval.n3 +3 -0
  252. package/examples/eyelang/output/eyeling-family-cousins-extended.n3 +6 -0
  253. package/examples/eyelang/output/eyeling-fastpow.n3 +4 -0
  254. package/examples/eyelang/output/eyeling-fibonacci.n3 +6 -0
  255. package/examples/eyelang/output/eyeling-french-cities-reachability.n3 +25 -0
  256. package/examples/eyelang/output/eyeling-goldbach-small.n3 +2 -0
  257. package/examples/eyelang/output/eyeling-good-cobbler.n3 +2 -0
  258. package/examples/eyelang/output/eyeling-list-builtins.n3 +6 -0
  259. package/examples/eyelang/output/eyeling-list-collection-extra.n3 +5 -0
  260. package/examples/eyelang/output/eyeling-math-builtins.n3 +5 -0
  261. package/examples/eyelang/output/eyeling-string-builtins-extra.n3 +3 -0
  262. package/examples/eyelang/output/eyeling-string-builtins.n3 +4 -0
  263. package/examples/eyelang/output/eyeling-time-builtins.n3 +4 -0
  264. package/examples/eyelang/output/eyeling-time-components-extra.n3 +5 -0
  265. package/examples/eyelang/output/eyeling-witch.n3 +2 -0
  266. package/examples/eyelang/output/family-cousins.n3 +8 -0
  267. package/examples/eyelang/output/family-cousins.pl +28 -0
  268. package/examples/eyelang/output/fastpow.pl +6 -0
  269. package/examples/eyelang/output/fft8-numeric.pl +4 -0
  270. package/examples/eyelang/output/fibonacci.pl +6 -0
  271. package/examples/eyelang/output/field-nitrogen-balance.pl +21 -0
  272. package/examples/eyelang/output/flandor.pl +43 -0
  273. package/examples/eyelang/output/floating-point.pl +9 -0
  274. package/examples/eyelang/output/four-color-map.pl +3 -0
  275. package/examples/eyelang/output/fundamental-theorem-arithmetic.pl +9 -0
  276. package/examples/eyelang/output/gcd-bezout-identity.pl +36 -0
  277. package/examples/eyelang/output/gd-step-certified.pl +79 -0
  278. package/examples/eyelang/output/gdpr-compliance.pl +6 -0
  279. package/examples/eyelang/output/goldbach-1000.pl +667 -0
  280. package/examples/eyelang/output/good-cobbler.pl +1 -0
  281. package/examples/eyelang/output/gps.pl +21 -0
  282. package/examples/eyelang/output/graph-reachability.pl +3 -0
  283. package/examples/eyelang/output/gray-code-counter.pl +1 -0
  284. package/examples/eyelang/output/greatest-lower-bound-uniqueness.pl +2 -0
  285. package/examples/eyelang/output/group-inverse-uniqueness.pl +2 -0
  286. package/examples/eyelang/output/hamiltonian-cycle.pl +4 -0
  287. package/examples/eyelang/output/hamiltonian-path.pl +121 -0
  288. package/examples/eyelang/output/hamming-code.pl +6 -0
  289. package/examples/eyelang/output/hanoi.pl +1 -0
  290. package/examples/eyelang/output/heat-loss.pl +5 -0
  291. package/examples/eyelang/output/heron-theorem.pl +4 -0
  292. package/examples/eyelang/output/ideal-gas-law.pl +3 -0
  293. package/examples/eyelang/output/illegitimate-reasoning.pl +15 -0
  294. package/examples/eyelang/output/kaprekar.pl +8 -0
  295. package/examples/eyelang/output/law-of-cosines.pl +3 -0
  296. package/examples/eyelang/output/least-squares-regression.pl +5 -0
  297. package/examples/eyelang/output/list-collection.pl +3 -0
  298. package/examples/eyelang/output/lldm.pl +6 -0
  299. package/examples/eyelang/output/manufacturing-quality-control.pl +6 -0
  300. package/examples/eyelang/output/matrix.pl +10 -0
  301. package/examples/eyelang/output/microgrid-dispatch.pl +6 -0
  302. package/examples/eyelang/output/monkey-bananas.pl +5 -0
  303. package/examples/eyelang/output/n-queens.pl +93 -0
  304. package/examples/eyelang/output/n3-builtins.n3 +6 -0
  305. package/examples/eyelang/output/network-sla.pl +4 -0
  306. package/examples/eyelang/output/newton-raphson.pl +3 -0
  307. package/examples/eyelang/output/nixon-diamond.pl +5 -0
  308. package/examples/eyelang/output/odrl-dpv-healthcare-risk-ranked.pl +42 -0
  309. package/examples/eyelang/output/odrl-dpv-risk-ranked.pl +120 -0
  310. package/examples/eyelang/output/orbital-transfer-design.pl +7 -0
  311. package/examples/eyelang/output/path-discovery.pl +3 -0
  312. package/examples/eyelang/output/peano-arithmetic.pl +3 -0
  313. package/examples/eyelang/output/peasant.pl +10 -0
  314. package/examples/eyelang/output/pendulum-period.pl +4 -0
  315. package/examples/eyelang/output/polynomial.pl +14 -0
  316. package/examples/eyelang/output/project-portfolio-optimization.pl +6 -0
  317. package/examples/eyelang/output/proof-contrapositive.pl +3 -0
  318. package/examples/eyelang/output/quadratic-formula.pl +6 -0
  319. package/examples/eyelang/output/quine-mccluskey.pl +3 -0
  320. package/examples/eyelang/output/radioactive-decay.pl +5 -0
  321. package/examples/eyelang/output/resilient-city-orchestration.pl +67 -0
  322. package/examples/eyelang/output/riemann-hypothesis.pl +12 -0
  323. package/examples/eyelang/output/sat-dpll.pl +5 -0
  324. package/examples/eyelang/output/security-incident-correlation.pl +3 -0
  325. package/examples/eyelang/output/service-impact.pl +11 -0
  326. package/examples/eyelang/output/sieve.pl +1 -0
  327. package/examples/eyelang/output/skolem-functions.pl +16 -0
  328. package/examples/eyelang/output/socket-age.pl +1 -0
  329. package/examples/eyelang/output/socket-family.pl +3 -0
  330. package/examples/eyelang/output/socrates.n3 +1 -0
  331. package/examples/eyelang/output/socrates.pl +2 -0
  332. package/examples/eyelang/output/statistics-summary.pl +4 -0
  333. package/examples/eyelang/output/sudoku.pl +2 -0
  334. package/examples/eyelang/output/superdense-coding.pl +6 -0
  335. package/examples/eyelang/output/traveling-salesman.pl +1 -0
  336. package/examples/eyelang/output/triple-term.n3 +2 -0
  337. package/examples/eyelang/output/turing.pl +12 -0
  338. package/examples/eyelang/output/vector-similarity.pl +4 -0
  339. package/examples/eyelang/output/witch.pl +7 -0
  340. package/examples/eyelang/output/wolf-goat-cabbage.pl +3 -0
  341. package/examples/eyelang/output/zebra.pl +3 -0
  342. package/examples/eyelang/path-discovery.pl +44998 -0
  343. package/examples/eyelang/peano-arithmetic.pl +31 -0
  344. package/examples/eyelang/peasant.pl +30 -0
  345. package/examples/eyelang/pendulum-period.pl +50 -0
  346. package/examples/eyelang/polynomial.pl +124 -0
  347. package/examples/eyelang/project-portfolio-optimization.pl +101 -0
  348. package/examples/eyelang/proof/age.pl +71 -0
  349. package/examples/eyelang/proof/aliases-and-namespaces.pl +78 -0
  350. package/examples/eyelang/proof/ancestor.pl +140 -0
  351. package/examples/eyelang/proof/animal.pl +68 -0
  352. package/examples/eyelang/proof/annotation.pl +80 -0
  353. package/examples/eyelang/proof/backward.pl +22 -0
  354. package/examples/eyelang/proof/cat-koko.pl +86 -0
  355. package/examples/eyelang/proof/data-negotiation.pl +76 -0
  356. package/examples/eyelang/proof/derived-rule.pl +43 -0
  357. package/examples/eyelang/proof/dog.pl +31 -0
  358. package/examples/eyelang/proof/electrical-rc-filter.pl +105 -0
  359. package/examples/eyelang/proof/existential-rule.pl +40 -0
  360. package/examples/eyelang/proof/floating-point.pl +160 -0
  361. package/examples/eyelang/proof/good-cobbler.pl +16 -0
  362. package/examples/eyelang/proof/group-inverse-uniqueness.pl +84 -0
  363. package/examples/eyelang/proof/list-collection.pl +52 -0
  364. package/examples/eyelang/proof/proof-contrapositive.pl +78 -0
  365. package/examples/eyelang/proof/socket-age.pl +32 -0
  366. package/examples/eyelang/proof/socket-family.pl +59 -0
  367. package/examples/eyelang/proof/socrates.pl +38 -0
  368. package/examples/eyelang/proof-contrapositive.pl +27 -0
  369. package/examples/eyelang/quadratic-formula.pl +54 -0
  370. package/examples/eyelang/quine-mccluskey.pl +143 -0
  371. package/examples/eyelang/radioactive-decay.pl +56 -0
  372. package/examples/eyelang/resilient-city-orchestration.pl +303 -0
  373. package/examples/eyelang/riemann-hypothesis.pl +110 -0
  374. package/examples/eyelang/sat-dpll.pl +80 -0
  375. package/examples/eyelang/security-incident-correlation.pl +69 -0
  376. package/examples/eyelang/service-impact.pl +41 -0
  377. package/examples/eyelang/sieve.pl +20 -0
  378. package/examples/eyelang/skolem-functions.pl +52 -0
  379. package/examples/eyelang/socket-age.pl +39 -0
  380. package/examples/eyelang/socket-family.pl +28 -0
  381. package/examples/eyelang/socrates.n3 +11 -0
  382. package/examples/eyelang/socrates.pl +19 -0
  383. package/examples/eyelang/statistics-summary.pl +54 -0
  384. package/examples/eyelang/sudoku.pl +20 -0
  385. package/examples/eyelang/superdense-coding.pl +84 -0
  386. package/examples/eyelang/traveling-salesman.pl +64 -0
  387. package/examples/eyelang/triple-term.n3 +9 -0
  388. package/examples/eyelang/turing.pl +67 -0
  389. package/examples/eyelang/vector-similarity.pl +56 -0
  390. package/examples/eyelang/witch.pl +38 -0
  391. package/examples/eyelang/wolf-goat-cabbage.pl +56 -0
  392. package/examples/eyelang/zebra.pl +44 -0
  393. package/eyelang.d.ts +92 -0
  394. package/eyeling-builtins.ttl +1 -1
  395. package/eyeling.js +2 -11
  396. package/index.d.ts +50 -2
  397. package/index.js +95 -1
  398. package/lib/builtins.js +1 -11
  399. package/lib/cli.js +1 -0
  400. package/lib/eyelang/bin.js +7 -0
  401. package/lib/eyelang/builtins/aggregation.mjs +81 -0
  402. package/lib/eyelang/builtins/alphametic.mjs +144 -0
  403. package/lib/eyelang/builtins/arithmetic.mjs +197 -0
  404. package/lib/eyelang/builtins/control.mjs +22 -0
  405. package/lib/eyelang/builtins/core.mjs +78 -0
  406. package/lib/eyelang/builtins/formula.mjs +42 -0
  407. package/lib/eyelang/builtins/lists.mjs +149 -0
  408. package/lib/eyelang/builtins/matrix.mjs +226 -0
  409. package/lib/eyelang/builtins/n3.mjs +483 -0
  410. package/lib/eyelang/builtins/number-theory.mjs +114 -0
  411. package/lib/eyelang/builtins/portfolio.mjs +73 -0
  412. package/lib/eyelang/builtins/registry.mjs +54 -0
  413. package/lib/eyelang/builtins/search.mjs +579 -0
  414. package/lib/eyelang/builtins/strings.mjs +41 -0
  415. package/lib/eyelang/builtins/sudoku.mjs +141 -0
  416. package/lib/eyelang/cli.mjs +192 -0
  417. package/lib/eyelang/explain.mjs +324 -0
  418. package/lib/eyelang/hash.mjs +294 -0
  419. package/lib/eyelang/index.mjs +48 -0
  420. package/lib/eyelang/parser.mjs +428 -0
  421. package/lib/eyelang/program.mjs +244 -0
  422. package/lib/eyelang/rdf.mjs +747 -0
  423. package/lib/eyelang/solver.mjs +237 -0
  424. package/lib/eyelang/term.mjs +328 -0
  425. package/package.json +12 -3
  426. package/test/builtins.test.js +15 -2
  427. package/test/eyelang/conformance/README.md +45 -0
  428. package/test/eyelang/conformance/cases/core/001_fact_output.pl +4 -0
  429. package/test/eyelang/conformance/cases/core/001_fact_query.query +1 -0
  430. package/test/eyelang/conformance/cases/core/002_rule_recursion.pl +7 -0
  431. package/test/eyelang/conformance/cases/core/002_rule_recursion.query +1 -0
  432. package/test/eyelang/conformance/cases/core/003_terms_and_readback.pl +16 -0
  433. package/test/eyelang/conformance/cases/core/003_terms_and_readback.query +1 -0
  434. package/test/eyelang/conformance/cases/core/004_conjunction_and_parentheses.pl +5 -0
  435. package/test/eyelang/conformance/cases/core/004_conjunction_and_parentheses.query +1 -0
  436. package/test/eyelang/conformance/cases/core/005_list_deconstruction.pl +6 -0
  437. package/test/eyelang/conformance/cases/core/005_list_deconstruction.query +1 -0
  438. package/test/eyelang/conformance/cases/core/006_comma_formula_data.pl +4 -0
  439. package/test/eyelang/conformance/cases/core/006_comma_formula_data.query +1 -0
  440. package/test/eyelang/conformance/cases/core/007_anonymous_variables.pl +5 -0
  441. package/test/eyelang/conformance/cases/core/007_anonymous_variables.query +1 -0
  442. package/test/eyelang/conformance/cases/core/008_graphic_atoms.pl +6 -0
  443. package/test/eyelang/conformance/cases/core/008_graphic_atoms.query +1 -0
  444. package/test/eyelang/conformance/cases/core/009_comments_and_whitespace.pl +5 -0
  445. package/test/eyelang/conformance/cases/core/009_comments_and_whitespace.query +1 -0
  446. package/test/eyelang/conformance/cases/core/010_variable_scope_and_reuse.pl +8 -0
  447. package/test/eyelang/conformance/cases/core/010_variable_scope_and_reuse.query +1 -0
  448. package/test/eyelang/conformance/cases/core/011_predicate_arity.pl +6 -0
  449. package/test/eyelang/conformance/cases/core/011_predicate_arity.query +1 -0
  450. package/test/eyelang/conformance/cases/core/012_nested_compound_unification.pl +5 -0
  451. package/test/eyelang/conformance/cases/core/012_nested_compound_unification.query +1 -0
  452. package/test/eyelang/conformance/cases/core/013_multiple_clauses_order.pl +6 -0
  453. package/test/eyelang/conformance/cases/core/013_multiple_clauses_order.query +1 -0
  454. package/test/eyelang/conformance/cases/core/014_failure_filters_answers.pl +7 -0
  455. package/test/eyelang/conformance/cases/core/014_failure_filters_answers.query +1 -0
  456. package/test/eyelang/conformance/cases/core/015_improper_list_unification.pl +6 -0
  457. package/test/eyelang/conformance/cases/core/015_improper_list_unification.query +1 -0
  458. package/test/eyelang/conformance/cases/core/016_zero_arity_compound.pl +4 -0
  459. package/test/eyelang/conformance/cases/core/016_zero_arity_compound.query +1 -0
  460. package/test/eyelang/conformance/cases/core/017_three_step_recursion.pl +8 -0
  461. package/test/eyelang/conformance/cases/core/017_three_step_recursion.query +1 -0
  462. package/test/eyelang/conformance/cases/core/018_quoted_atom_readback.pl +6 -0
  463. package/test/eyelang/conformance/cases/core/018_quoted_atom_readback.query +1 -0
  464. package/test/eyelang/conformance/cases/core/019_parenthesized_three_conjuncts.pl +7 -0
  465. package/test/eyelang/conformance/cases/core/019_parenthesized_three_conjuncts.query +1 -0
  466. package/test/eyelang/conformance/cases/core/020_nested_list_terms.pl +5 -0
  467. package/test/eyelang/conformance/cases/core/020_nested_list_terms.query +1 -0
  468. package/test/eyelang/conformance/cases/core/021_repeated_variable_head.pl +7 -0
  469. package/test/eyelang/conformance/cases/core/022_rule_head_structure.pl +5 -0
  470. package/test/eyelang/conformance/cases/core/023_quoted_escapes_readback.pl +5 -0
  471. package/test/eyelang/conformance/cases/core/024_numeric_literal_readback.pl +6 -0
  472. package/test/eyelang/conformance/cases/core/025_body_parentheses_with_formula_data.pl +5 -0
  473. package/test/eyelang/conformance/cases/core/026_underscore_named_variable_reuse.pl +5 -0
  474. package/test/eyelang/conformance/cases/extension/001_default_derived_output.pl +5 -0
  475. package/test/eyelang/conformance/cases/extension/002_materialize_focus.pl +5 -0
  476. package/test/eyelang/conformance/cases/extension/003_arithmetic_and_comparison.pl +12 -0
  477. package/test/eyelang/conformance/cases/extension/003_arithmetic_and_comparison.query +1 -0
  478. package/test/eyelang/conformance/cases/extension/004_strings_and_atoms.pl +6 -0
  479. package/test/eyelang/conformance/cases/extension/004_strings_and_atoms.query +1 -0
  480. package/test/eyelang/conformance/cases/extension/005_lists_aggregation_ordering.pl +10 -0
  481. package/test/eyelang/conformance/cases/extension/005_lists_aggregation_ordering.query +1 -0
  482. package/test/eyelang/conformance/cases/extension/006_formula_terms.pl +5 -0
  483. package/test/eyelang/conformance/cases/extension/006_formula_terms.query +1 -0
  484. package/test/eyelang/conformance/cases/extension/007_negation_once_generators.pl +7 -0
  485. package/test/eyelang/conformance/cases/extension/007_negation_once_generators.query +1 -0
  486. package/test/eyelang/conformance/cases/extension/008_equality_and_inequality.pl +6 -0
  487. package/test/eyelang/conformance/cases/extension/008_equality_and_inequality.query +1 -0
  488. package/test/eyelang/conformance/cases/extension/009_list_relations.pl +6 -0
  489. package/test/eyelang/conformance/cases/extension/009_list_relations.query +1 -0
  490. package/test/eyelang/conformance/cases/extension/010_append_splits.pl +3 -0
  491. package/test/eyelang/conformance/cases/extension/010_append_splits.query +1 -0
  492. package/test/eyelang/conformance/cases/extension/011_matching_and_comparison.pl +7 -0
  493. package/test/eyelang/conformance/cases/extension/011_matching_and_comparison.query +1 -0
  494. package/test/eyelang/conformance/cases/extension/012_memoize_declaration.pl +8 -0
  495. package/test/eyelang/conformance/cases/extension/012_memoize_declaration.query +1 -0
  496. package/test/eyelang/conformance/cases/extension/013_numeric_functions.pl +9 -0
  497. package/test/eyelang/conformance/cases/extension/013_numeric_functions.query +1 -0
  498. package/test/eyelang/conformance/cases/extension/014_between_enumeration.pl +3 -0
  499. package/test/eyelang/conformance/cases/extension/014_between_enumeration.query +1 -0
  500. package/test/eyelang/conformance/cases/extension/015_smallest_divisor.pl +3 -0
  501. package/test/eyelang/conformance/cases/extension/015_smallest_divisor.query +1 -0
  502. package/test/eyelang/conformance/cases/extension/016_negation_filter.pl +7 -0
  503. package/test/eyelang/conformance/cases/extension/016_negation_filter.query +1 -0
  504. package/test/eyelang/conformance/cases/extension/017_once_user_predicate.pl +5 -0
  505. package/test/eyelang/conformance/cases/extension/017_once_user_predicate.query +1 -0
  506. package/test/eyelang/conformance/cases/extension/018_findall_user_goal.pl +6 -0
  507. package/test/eyelang/conformance/cases/extension/018_findall_user_goal.query +1 -0
  508. package/test/eyelang/conformance/cases/extension/019_sort_deduplicates_atoms.pl +3 -0
  509. package/test/eyelang/conformance/cases/extension/019_sort_deduplicates_atoms.query +1 -0
  510. package/test/eyelang/conformance/cases/extension/020_append_bound_prefix_suffix.pl +4 -0
  511. package/test/eyelang/conformance/cases/extension/020_append_bound_prefix_suffix.query +1 -0
  512. package/test/eyelang/conformance/cases/extension/021_nth0_index_generation.pl +3 -0
  513. package/test/eyelang/conformance/cases/extension/021_nth0_index_generation.query +1 -0
  514. package/test/eyelang/conformance/cases/extension/022_set_nth0_edges.pl +4 -0
  515. package/test/eyelang/conformance/cases/extension/022_set_nth0_edges.query +1 -0
  516. package/test/eyelang/conformance/cases/extension/023_select_duplicate_occurrences.pl +3 -0
  517. package/test/eyelang/conformance/cases/extension/023_select_duplicate_occurrences.query +1 -0
  518. package/test/eyelang/conformance/cases/extension/024_not_member_filter.pl +6 -0
  519. package/test/eyelang/conformance/cases/extension/024_not_member_filter.query +1 -0
  520. package/test/eyelang/conformance/cases/extension/025_is_list_filter.pl +5 -0
  521. package/test/eyelang/conformance/cases/extension/025_is_list_filter.query +1 -0
  522. package/test/eyelang/conformance/cases/extension/026_nested_formula_terms.pl +5 -0
  523. package/test/eyelang/conformance/cases/extension/026_nested_formula_terms.query +1 -0
  524. package/test/eyelang/conformance/cases/extension/027_materialize_excludes_source_fact.pl +6 -0
  525. package/test/eyelang/conformance/cases/extension/028_numeric_and_lexical_comparison.pl +5 -0
  526. package/test/eyelang/conformance/cases/extension/028_numeric_and_lexical_comparison.query +1 -0
  527. package/test/eyelang/conformance/cases/extension/029_string_matching_filters.pl +6 -0
  528. package/test/eyelang/conformance/cases/extension/029_string_matching_filters.query +1 -0
  529. package/test/eyelang/conformance/cases/extension/030_string_and_atom_concat.pl +4 -0
  530. package/test/eyelang/conformance/cases/extension/030_string_and_atom_concat.query +1 -0
  531. package/test/eyelang/conformance/cases/extension/031_countall_empty_and_nonempty.pl +4 -0
  532. package/test/eyelang/conformance/cases/extension/031_countall_empty_and_nonempty.query +1 -0
  533. package/test/eyelang/conformance/cases/extension/032_sumall_numeric_template.pl +5 -0
  534. package/test/eyelang/conformance/cases/extension/032_sumall_numeric_template.query +1 -0
  535. package/test/eyelang/conformance/cases/extension/033_aggregate_min_template.pl +5 -0
  536. package/test/eyelang/conformance/cases/extension/033_aggregate_min_template.query +1 -0
  537. package/test/eyelang/conformance/cases/extension/034_aggregate_max_compound_key.pl +5 -0
  538. package/test/eyelang/conformance/cases/extension/034_aggregate_max_compound_key.query +1 -0
  539. package/test/eyelang/conformance/cases/extension/035_date_difference.pl +4 -0
  540. package/test/eyelang/conformance/cases/extension/036_extended_gcd.pl +3 -0
  541. package/test/eyelang/conformance/cases/extension/037_collatz_trajectory.pl +3 -0
  542. package/test/eyelang/conformance/cases/extension/038_kaprekar_steps.pl +3 -0
  543. package/test/eyelang/conformance/cases/extension/039_goldbach_pair.pl +3 -0
  544. package/test/eyelang/conformance/cases/extension/040_matrix_operations.pl +5 -0
  545. package/test/eyelang/conformance/cases/extension/041_atom_range_generators.pl +5 -0
  546. package/test/eyelang/conformance/cases/extension/042_n_queens_small.pl +3 -0
  547. package/test/eyelang/conformance/cases/extension/043_cnf_model.pl +3 -0
  548. package/test/eyelang/conformance/cases/extension/044_cover9_filter.pl +6 -0
  549. package/test/eyelang/conformance/cases/extension/045_alphametic_sum_small.pl +3 -0
  550. package/test/eyelang/conformance/cases/extension/046_bounded_subset.pl +4 -0
  551. package/test/eyelang/conformance/expected/core/001_fact_output.out +1 -0
  552. package/test/eyelang/conformance/expected/core/002_rule_recursion.out +2 -0
  553. package/test/eyelang/conformance/expected/core/003_terms_and_readback.out +13 -0
  554. package/test/eyelang/conformance/expected/core/004_conjunction_and_parentheses.out +1 -0
  555. package/test/eyelang/conformance/expected/core/005_list_deconstruction.out +2 -0
  556. package/test/eyelang/conformance/expected/core/006_comma_formula_data.out +1 -0
  557. package/test/eyelang/conformance/expected/core/007_anonymous_variables.out +1 -0
  558. package/test/eyelang/conformance/expected/core/008_graphic_atoms.out +3 -0
  559. package/test/eyelang/conformance/expected/core/009_comments_and_whitespace.out +2 -0
  560. package/test/eyelang/conformance/expected/core/010_variable_scope_and_reuse.out +2 -0
  561. package/test/eyelang/conformance/expected/core/011_predicate_arity.out +2 -0
  562. package/test/eyelang/conformance/expected/core/012_nested_compound_unification.out +2 -0
  563. package/test/eyelang/conformance/expected/core/013_multiple_clauses_order.out +2 -0
  564. package/test/eyelang/conformance/expected/core/014_failure_filters_answers.out +1 -0
  565. package/test/eyelang/conformance/expected/core/015_improper_list_unification.out +3 -0
  566. package/test/eyelang/conformance/expected/core/016_zero_arity_compound.out +1 -0
  567. package/test/eyelang/conformance/expected/core/017_three_step_recursion.out +3 -0
  568. package/test/eyelang/conformance/expected/core/018_quoted_atom_readback.out +3 -0
  569. package/test/eyelang/conformance/expected/core/019_parenthesized_three_conjuncts.out +1 -0
  570. package/test/eyelang/conformance/expected/core/020_nested_list_terms.out +2 -0
  571. package/test/eyelang/conformance/expected/core/021_repeated_variable_head.out +2 -0
  572. package/test/eyelang/conformance/expected/core/022_rule_head_structure.out +2 -0
  573. package/test/eyelang/conformance/expected/core/023_quoted_escapes_readback.out +2 -0
  574. package/test/eyelang/conformance/expected/core/024_numeric_literal_readback.out +3 -0
  575. package/test/eyelang/conformance/expected/core/025_body_parentheses_with_formula_data.out +1 -0
  576. package/test/eyelang/conformance/expected/core/026_underscore_named_variable_reuse.out +1 -0
  577. package/test/eyelang/conformance/expected/extension/001_default_derived_output.out +3 -0
  578. package/test/eyelang/conformance/expected/extension/002_materialize_focus.out +1 -0
  579. package/test/eyelang/conformance/expected/extension/003_arithmetic_and_comparison.out +10 -0
  580. package/test/eyelang/conformance/expected/extension/004_strings_and_atoms.out +4 -0
  581. package/test/eyelang/conformance/expected/extension/005_lists_aggregation_ordering.out +9 -0
  582. package/test/eyelang/conformance/expected/extension/006_formula_terms.out +4 -0
  583. package/test/eyelang/conformance/expected/extension/007_negation_once_generators.out +2 -0
  584. package/test/eyelang/conformance/expected/extension/008_equality_and_inequality.out +4 -0
  585. package/test/eyelang/conformance/expected/extension/009_list_relations.out +5 -0
  586. package/test/eyelang/conformance/expected/extension/010_append_splits.out +3 -0
  587. package/test/eyelang/conformance/expected/extension/011_matching_and_comparison.out +5 -0
  588. package/test/eyelang/conformance/expected/extension/012_memoize_declaration.out +2 -0
  589. package/test/eyelang/conformance/expected/extension/013_numeric_functions.out +7 -0
  590. package/test/eyelang/conformance/expected/extension/014_between_enumeration.out +3 -0
  591. package/test/eyelang/conformance/expected/extension/015_smallest_divisor.out +1 -0
  592. package/test/eyelang/conformance/expected/extension/016_negation_filter.out +2 -0
  593. package/test/eyelang/conformance/expected/extension/017_once_user_predicate.out +1 -0
  594. package/test/eyelang/conformance/expected/extension/018_findall_user_goal.out +1 -0
  595. package/test/eyelang/conformance/expected/extension/019_sort_deduplicates_atoms.out +1 -0
  596. package/test/eyelang/conformance/expected/extension/020_append_bound_prefix_suffix.out +2 -0
  597. package/test/eyelang/conformance/expected/extension/021_nth0_index_generation.out +1 -0
  598. package/test/eyelang/conformance/expected/extension/022_set_nth0_edges.out +2 -0
  599. package/test/eyelang/conformance/expected/extension/023_select_duplicate_occurrences.out +2 -0
  600. package/test/eyelang/conformance/expected/extension/024_not_member_filter.out +1 -0
  601. package/test/eyelang/conformance/expected/extension/025_is_list_filter.out +1 -0
  602. package/test/eyelang/conformance/expected/extension/026_nested_formula_terms.out +6 -0
  603. package/test/eyelang/conformance/expected/extension/027_materialize_excludes_source_fact.out +1 -0
  604. package/test/eyelang/conformance/expected/extension/028_numeric_and_lexical_comparison.out +3 -0
  605. package/test/eyelang/conformance/expected/extension/029_string_matching_filters.out +2 -0
  606. package/test/eyelang/conformance/expected/extension/030_string_and_atom_concat.out +2 -0
  607. package/test/eyelang/conformance/expected/extension/031_countall_empty_and_nonempty.out +1 -0
  608. package/test/eyelang/conformance/expected/extension/032_sumall_numeric_template.out +1 -0
  609. package/test/eyelang/conformance/expected/extension/033_aggregate_min_template.out +1 -0
  610. package/test/eyelang/conformance/expected/extension/034_aggregate_max_compound_key.out +1 -0
  611. package/test/eyelang/conformance/expected/extension/035_date_difference.out +2 -0
  612. package/test/eyelang/conformance/expected/extension/036_extended_gcd.out +1 -0
  613. package/test/eyelang/conformance/expected/extension/037_collatz_trajectory.out +1 -0
  614. package/test/eyelang/conformance/expected/extension/038_kaprekar_steps.out +1 -0
  615. package/test/eyelang/conformance/expected/extension/039_goldbach_pair.out +2 -0
  616. package/test/eyelang/conformance/expected/extension/040_matrix_operations.out +3 -0
  617. package/test/eyelang/conformance/expected/extension/041_atom_range_generators.out +8 -0
  618. package/test/eyelang/conformance/expected/extension/042_n_queens_small.out +2 -0
  619. package/test/eyelang/conformance/expected/extension/043_cnf_model.out +1 -0
  620. package/test/eyelang/conformance/expected/extension/044_cover9_filter.out +2 -0
  621. package/test/eyelang/conformance/expected/extension/045_alphametic_sum_small.out +4 -0
  622. package/test/eyelang/conformance/expected/extension/046_bounded_subset.out +5 -0
  623. package/test/eyelang/run-all.mjs +20 -0
  624. package/test/eyelang/run-conformance.mjs +80 -0
  625. package/test/eyelang/run-examples.mjs +126 -0
  626. package/test/eyelang/run-regression.mjs +640 -0
  627. package/test/eyelang/test-style.mjs +91 -0
  628. package/test/eyelang.test.js +58 -0
  629. package/test/run.js +1 -0
@@ -0,0 +1,39 @@
1
+ % socket-age.pl
2
+ %
3
+ % A small runnable eyelang Socket example for age reasoning.
4
+ %
5
+ % The socket facts are ordinary eyelang data. They document the semantic
6
+ % openings that this rule module expects:
7
+ %
8
+ % - a patient registry that provides birthDay/2
9
+ % - a policy source that provides duration/2
10
+ % - a clock source that provides today/1
11
+ %
12
+ % The plug facts say which concrete providers are connected.
13
+ %
14
+ % Run:
15
+ % eyelang socket-age.pl
16
+
17
+ % Output declarations: materialize/2 selects the relations written to this example's golden output.
18
+ materialize(ageAbove, 2).
19
+
20
+ % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
21
+ socket(patient_registry, provides(birthDay_2)).
22
+ socket(policy_source, provides(duration_2)).
23
+ socket(clock_source, provides(today_1)).
24
+
25
+ plug(test_patients, patient_registry).
26
+ plug(test_policy, policy_source).
27
+ plug(test_clock, clock_source).
28
+
29
+ birthDay(patH, "1944-08-21").
30
+ duration(check, "P80Y").
31
+ today("2026-05-30").
32
+
33
+ % Derivation rules: each rule below contributes one logical step toward the displayed results.
34
+ ageAbove(S, A) :-
35
+ birthDay(S, B),
36
+ duration(check, A),
37
+ today(D),
38
+ difference(D, B, F),
39
+ gt(F, A).
@@ -0,0 +1,28 @@
1
+ % socket-family.pl
2
+ %
3
+ % A small runnable eyelang Socket example.
4
+ %
5
+ % The socket facts below are ordinary eyelang data. They document the
6
+ % semantic opening: this reasoning module expects a provider for parent/2.
7
+ % The plug fact says which provider is connected.
8
+ %
9
+ % Run:
10
+ % eyelang socket-family.pl
11
+
12
+ % Output declarations: materialize/2 selects the relations written to this example's golden output.
13
+ materialize(ancestor, 2).
14
+
15
+ % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
16
+ socket(family_source, provides(parent_2)).
17
+ plug(family_file, family_source).
18
+
19
+ parent(pat, jan).
20
+ parent(jan, emma).
21
+
22
+ % Derivation rules: each rule below contributes one logical step toward the displayed results.
23
+ ancestor(X, Y) :-
24
+ parent(X, Y).
25
+
26
+ ancestor(X, Z) :-
27
+ parent(X, Y),
28
+ ancestor(Y, Z).
@@ -0,0 +1,11 @@
1
+ # Adapted from eyereasoner/eyeling examples/socrates.n3.
2
+ # Demonstrates a small RDFS-style subclass rule in the RDF/N3 reader.
3
+ PREFIX : <http://example.org/socrates#>
4
+ PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
5
+
6
+ :Socrates a :Human .
7
+ :Human rdfs:subClassOf :Mortal .
8
+
9
+ { ?S a ?A . ?A rdfs:subClassOf ?B . }
10
+ =>
11
+ { ?S a ?B . } .
@@ -0,0 +1,19 @@
1
+ % Socrates is mortal, adapted from Eyelet's input/socrates.pl.
2
+ %
3
+ % Eyelet uses type('Socrates', 'Man') and a single rule deriving Mortal.
4
+ % eyelang keeps the same reasoning shape and emits relation facts.
5
+
6
+ % Output declarations: materialize/2 selects the relations written to this example's golden output.
7
+ materialize(type, 2).
8
+ materialize(is, 2).
9
+
10
+ % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
11
+ type(socrates, man).
12
+
13
+ % Derivation rules: each rule below contributes one logical step toward the displayed results.
14
+ type(X, mortal) :-
15
+ type(X, man).
16
+
17
+
18
+ is(test, true) :-
19
+ type(socrates, mortal).
@@ -0,0 +1,54 @@
1
+ % Population statistics for a small numeric sample.
2
+ %
3
+ % The sample is the textbook data set [2,4,4,4,5,5,7,9], whose population
4
+ % mean is 5, variance is 4, and standard deviation is 2.
5
+
6
+ % Output declarations: materialize/2 selects the relations written to this example's golden output.
7
+ materialize(count, 2).
8
+ materialize(mean, 2).
9
+ materialize(populationVariance, 2).
10
+ materialize(populationStddev, 2).
11
+
12
+ % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
13
+ sample(scores, [2.0, 4.0, 4.0, 4.0, 5.0, 5.0, 7.0, 9.0]).
14
+
15
+ sum([], 0.0).
16
+ % Derivation rules: each rule below contributes one logical step toward the displayed results.
17
+ sum([X|Xs], Total) :-
18
+ sum(Xs, Rest),
19
+ add(X, Rest, Total).
20
+
21
+ mean(Name, Mean) :-
22
+ sample(Name, Values),
23
+ sum(Values, Total),
24
+ length(Values, Count),
25
+ div(Total, Count, Mean).
26
+
27
+ squared_error_sum([], _Mean, 0.0).
28
+ squared_error_sum([X|Xs], Mean, Total) :-
29
+ sub(X, Mean, Delta),
30
+ pow(Delta, 2.0, Squared),
31
+ squared_error_sum(Xs, Mean, Rest),
32
+ add(Squared, Rest, Total).
33
+
34
+ population_variance(Name, Variance) :-
35
+ sample(Name, Values),
36
+ mean(Name, Mean),
37
+ squared_error_sum(Values, Mean, SumSquaredErrors),
38
+ length(Values, Count),
39
+ div(SumSquaredErrors, Count, Variance).
40
+
41
+ population_stddev(Name, Stddev) :-
42
+ population_variance(Name, Variance),
43
+ pow(Variance, 0.5, Stddev).
44
+
45
+ count(Name, Count) :-
46
+ sample(Name, Values),
47
+ length(Values, Count).
48
+
49
+
50
+ populationVariance(Name, Variance) :-
51
+ population_variance(Name, Variance).
52
+
53
+ populationStddev(Name, Stddev) :-
54
+ population_stddev(Name, Stddev).
@@ -0,0 +1,20 @@
1
+ % Generic 9x9 Sudoku example using the compiled sudoku/2 builtin.
2
+ %
3
+ % Puzzles are 81-character strings read row-major. Digits 1..9 are givens;
4
+ % 0, dot, or underscore marks a blank. The builtin also accepts a 9x9 list
5
+ % of integers in the same representation.
6
+
7
+ % Output declarations: materialize/2 selects the relations written to this example's golden output.
8
+ materialize(solution, 2).
9
+
10
+ % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
11
+ puzzle(classic,
12
+ "100007090030129008009600500005300900010080002600794000350408219240005867897201304").
13
+
14
+ puzzle(third,
15
+ "078200000005000400100400092000035070007000500050810000720004008009000300000006910").
16
+
17
+ % Derivation rules: each rule below contributes one logical step toward the displayed results.
18
+ solution(Name, Rows) :-
19
+ puzzle(Name, Grid),
20
+ sudoku(Grid, Rows).
@@ -0,0 +1,84 @@
1
+ % Superdense coding using discrete quantum computing, adapted from
2
+ % Eyelet's input/superdense-coding.pl.
3
+ %
4
+ % The Eyelet program toggles dynamic sdcoding/2 facts so answers appearing an
5
+ % even number of times cancel. eyelang expresses the same finite example
6
+ % declaratively: for this protocol the surviving messages are exactly those
7
+ % with a single support path after the interference choices are expanded.
8
+
9
+ % |R) = |0, 0) + |1, 1)
10
+ % Output declarations: materialize/2 selects the relations written to this example's golden output.
11
+ materialize(decodesAs, 2).
12
+ materialize(preservesMessage, 2).
13
+ materialize(cancelsCrossTalk, 2).
14
+
15
+ % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
16
+ r(false, false).
17
+ r(true, true).
18
+
19
+ % ID |0) = |0), ID |1) = |1)
20
+ identity(false, false).
21
+ identity(true, true).
22
+
23
+ % G |0) = |1), G |1) = |0)
24
+ g(false, true).
25
+ g(true, false).
26
+
27
+ % K |0) = |0), K |1) = |0) + |1)
28
+ k(false, false).
29
+ k(true, false).
30
+ k(true, true).
31
+
32
+ % KG and GK compositions.
33
+ % Derivation rules: each rule below contributes one logical step toward the displayed results.
34
+ kg(X, Y) :-
35
+ g(X, Z),
36
+ k(Z, Y).
37
+
38
+ gk(X, Y) :-
39
+ k(X, Z),
40
+ g(Z, Y).
41
+
42
+ % Alice encodes two classical bits as one of four transformations.
43
+ alice(0, X, Y) :- identity(X, Y).
44
+ alice(1, X, Y) :- g(X, Y).
45
+ alice(2, X, Y) :- k(X, Y).
46
+ alice(3, X, Y) :- kg(X, Y).
47
+
48
+ % Bob decodes with the Bell-style measurement basis.
49
+ bob(X, Y, 0) :- gk(X, Y).
50
+ bob(X, Y, 1) :- k(X, Y).
51
+ bob(X, Y, 2) :- g(X, Y).
52
+ bob(X, Y, 3) :- identity(X, Y).
53
+
54
+ % One concrete support path through the entangled pair and the two transforms.
55
+ sdc_path(N, M, path(X, Y, B)) :-
56
+ r(X, Y),
57
+ alice(N, X, B),
58
+ bob(B, Y, M).
59
+
60
+ % If another different support path gives the same answer, this answer cancels
61
+ % in pairs in the finite superdense-coding table.
62
+ duplicate_sdc_path(N, M, Proof) :-
63
+ sdc_path(N, M, Proof),
64
+ sdc_path(N, M, Other),
65
+ neq(Proof, Other).
66
+
67
+ sdcoding(N, M) :-
68
+ sdc_path(N, M, Proof),
69
+ not(duplicate_sdc_path(N, M, Proof)).
70
+
71
+ decodesAs(message(N), M) :-
72
+ sdcoding(N, M).
73
+
74
+ preservesMessage(protocol, true) :-
75
+ sdcoding(0, 0),
76
+ sdcoding(1, 1),
77
+ sdcoding(2, 2),
78
+ sdcoding(3, 3).
79
+
80
+ cancelsCrossTalk(protocol, true) :-
81
+ not(sdcoding(0, 1)),
82
+ not(sdcoding(1, 0)),
83
+ not(sdcoding(2, 3)),
84
+ not(sdcoding(3, 2)).
@@ -0,0 +1,64 @@
1
+ % Traveling salesman problem, adapted from Eyelet input/traveling-salesman.pl.
2
+ % The optimal tour matches Eyelet output-swipl/traveling-salesman.pl.
3
+
4
+ % Output declarations: materialize/2 selects the relations written to this example's golden output.
5
+ materialize(optimalTour, 2).
6
+
7
+ % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
8
+ % The target list fixes the city set; weighted_hamiltonian_path/4 searches tours.
9
+ target_cities([aaa, bbb, ccc, ddd, eee, fff, ggg]).
10
+
11
+ distance(aaa, bbb, 10).
12
+ distance(aaa, ccc, 15).
13
+ distance(aaa, ddd, 20).
14
+ distance(aaa, eee, 25).
15
+ distance(aaa, fff, 30).
16
+ distance(bbb, ccc, 35).
17
+ distance(bbb, ddd, 40).
18
+ distance(bbb, eee, 20).
19
+ distance(bbb, fff, 25).
20
+ distance(ccc, ddd, 30).
21
+ distance(ccc, eee, 15).
22
+ distance(ccc, fff, 10).
23
+ distance(ddd, eee, 10).
24
+ distance(ddd, fff, 35).
25
+ distance(ddd, ggg, 5).
26
+ distance(eee, fff, 20).
27
+
28
+ % Distances are stored once; distance2/3 makes the graph undirected.
29
+ % Derivation rules: each rule below contributes one logical step toward the displayed results.
30
+ distance2(A, B, D) :-
31
+ distance(A, B, D).
32
+ distance2(A, B, D) :-
33
+ distance(B, A, D).
34
+
35
+ permutation([], []).
36
+ permutation(List, [X|Perm]) :-
37
+ select(X, List, Rest),
38
+ permutation(Rest, Perm).
39
+
40
+ total_distance([_Last], 0).
41
+ total_distance([X, Y|Tail], D) :-
42
+ distance2(X, Y, D1),
43
+ total_distance([Y|Tail], D2),
44
+ add(D1, D2, D).
45
+
46
+ tsp(Cities, Tour, Distance) :-
47
+ weighted_hamiltonian_path(distance, Cities, Tour, Distance).
48
+
49
+ % Materialized output keeps only the minimum-distance candidate.
50
+ optimalTour(Cities, Optimal) :-
51
+ target_cities(Cities),
52
+ findall([T, D], tsp(Cities, T, D), Solutions),
53
+ min_distance(Solutions, Optimal).
54
+
55
+ min_distance([Sol|Sols], Optimal) :-
56
+ min_distance_acc(Sols, Sol, Optimal).
57
+
58
+ min_distance_acc([], Best, Best).
59
+ min_distance_acc([[_T, D]|Rest], [_BestTour, BestDistance], Optimal) :-
60
+ lt(D, BestDistance),
61
+ min_distance_acc(Rest, [_T, D], Optimal).
62
+ min_distance_acc([[_T, D]|Rest], [BestTour, BestDistance], Optimal) :-
63
+ ge(D, BestDistance),
64
+ min_distance_acc(Rest, [BestTour, BestDistance], Optimal).
@@ -0,0 +1,9 @@
1
+ # RDF 1.2 triple term example for the eyelang compatibility layer.
2
+ PREFIX : <http://example.org/triple-term#>
3
+
4
+ :alice :says <<( :bob :knows :carol )>> .
5
+
6
+ { ?Reporter :says <<( ?Knower :knows ?Known )>> . }
7
+ =>
8
+ { ?Reporter :reportedKnower ?Knower .
9
+ ?Reporter :reportedKnown ?Known . } .
@@ -0,0 +1,67 @@
1
+ % Universal Turing machine example adapted from Eyelet's input/turing.pl.
2
+ %
3
+ % The machine below adds 1 to a binary number represented as a list of bits.
4
+ % The blank tape symbol is #.
5
+
6
+ % Output declarations: materialize/2 selects the relations written to this example's golden output.
7
+ materialize(input, 2).
8
+ materialize(output, 2).
9
+ materialize(addsOne, 2).
10
+
11
+ % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
12
+ % Derivation rules: each rule below contributes one logical step toward the displayed results.
13
+ compute([], OutTape) :-
14
+ start(_Machine, I),
15
+ find(I, [], #, [], OutTape).
16
+
17
+ compute([Head|Tail], OutTape) :-
18
+ start(_Machine, I),
19
+ find(I, [], Head, Tail, OutTape).
20
+
21
+ find(State, Left, Cell, Right, OutTape) :-
22
+ t([State, Cell, Write, Move], Next),
23
+ move(Move, Left, Write, Right, A, B, C),
24
+ continue(Next, A, B, C, OutTape).
25
+
26
+ continue(halt, Left, Cell, Right, OutTape) :-
27
+ rever(Left, R),
28
+ append(R, [Cell|Right], OutTape).
29
+
30
+ continue(State, Left, Cell, Right, OutTape) :-
31
+ find(State, Left, Cell, Right, OutTape).
32
+
33
+ move(l, [], Cell, Right, [], #, [Cell|Right]).
34
+ move(l, [Head|Tail], Cell, Right, Tail, Head, [Cell|Right]).
35
+ move(s, Left, Cell, Right, Left, Cell, Right).
36
+ move(r, Left, Cell, [], [Cell|Left], #, []).
37
+ move(r, Left, Cell, [Head|Tail], [Cell|Left], Head, Tail).
38
+
39
+ rever([], []).
40
+ rever([A|B], C) :-
41
+ rever(B, D),
42
+ append(D, [A], C).
43
+
44
+ % A Turing machine to add 1 to a binary number.
45
+ start(add1, 0).
46
+ t([0, 0, 0, r], 0).
47
+ t([0, 1, 1, r], 0).
48
+ t([0, #, #, l], 1).
49
+ t([1, 0, 1, s], halt).
50
+ t([1, 1, 0, l], 1).
51
+ t([1, #, 1, s], halt).
52
+
53
+ case(case1, [1, 0, 1, 0, 0, 1]).
54
+ case(case2, [1, 0, 1, 1, 1, 1]).
55
+ case(case3, [1, 1, 1, 1, 1, 1]).
56
+ case(case4, []).
57
+
58
+ input(Case, InTape) :-
59
+ case(Case, InTape).
60
+
61
+ output(Case, OutTape) :-
62
+ case(Case, InTape),
63
+ compute(InTape, OutTape).
64
+
65
+ addsOne(Case, true) :-
66
+ case(Case, InTape),
67
+ compute(InTape, _OutTape).
@@ -0,0 +1,56 @@
1
+ % Vector dot product, Euclidean norm, and cosine similarity.
2
+
3
+ % Output declarations: materialize/2 selects the relations written to this example's golden output.
4
+ materialize(dotProduct, 2).
5
+ materialize(normA, 2).
6
+ materialize(normB, 2).
7
+ materialize(cosineSimilarity, 2).
8
+
9
+ % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
10
+ % Two named vectors form the single cosine-similarity case.
11
+ vector(pair1, a, [1.0, 2.0, 3.0]).
12
+ vector(pair1, b, [4.0, -5.0, 6.0]).
13
+
14
+ % Recursive list folds compute dot products and sums of squares.
15
+ dot([], [], 0.0).
16
+ % Derivation rules: each rule below contributes one logical step toward the displayed results.
17
+ dot([A|As], [B|Bs], Dot) :-
18
+ mul(A, B, Product),
19
+ dot(As, Bs, Rest),
20
+ add(Product, Rest, Dot).
21
+
22
+ sum_squares([], 0.0).
23
+ sum_squares([X|Xs], Total) :-
24
+ pow(X, 2.0, Squared),
25
+ sum_squares(Xs, Rest),
26
+ add(Squared, Rest, Total).
27
+
28
+ norm(Vector, Norm) :-
29
+ sum_squares(Vector, SumSquares),
30
+ pow(SumSquares, 0.5, Norm).
31
+
32
+ % cosine = dot(A,B) / (norm(A) * norm(B)).
33
+ cosine_similarity(Case, Similarity) :-
34
+ vector(Case, a, A),
35
+ vector(Case, b, B),
36
+ dot(A, B, Dot),
37
+ norm(A, NormA),
38
+ norm(B, NormB),
39
+ mul(NormA, NormB, Denominator),
40
+ div(Dot, Denominator, Similarity).
41
+
42
+ dotProduct(Case, Dot) :-
43
+ vector(Case, a, A),
44
+ vector(Case, b, B),
45
+ dot(A, B, Dot).
46
+
47
+ normA(Case, NormA) :-
48
+ vector(Case, a, A),
49
+ norm(A, NormA).
50
+
51
+ normB(Case, NormB) :-
52
+ vector(Case, b, B),
53
+ norm(B, NormB).
54
+
55
+ cosineSimilarity(Case, Similarity) :-
56
+ cosine_similarity(Case, Similarity).
@@ -0,0 +1,38 @@
1
+ % Burn the witch, adapted from Eyeling's examples/witch.n3.
2
+ %
3
+ % This is the classic N3/Semantic Web rule chain in eyelang form: a duck
4
+ % floats; something with the same weight as something that floats also floats;
5
+ % things that float are made of wood; things made of wood burn; and a woman
6
+ % who burns is a witch.
7
+
8
+ % Output declarations: materialize/2 selects the relations written to this example's golden output.
9
+ materialize(floats, 1).
10
+ materialize(madeOfWood, 1).
11
+ materialize(burns, 1).
12
+ materialize(witch, 1).
13
+ materialize(is, 2).
14
+
15
+ % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
16
+ % Derivation rules: each rule below contributes one logical step toward the displayed results.
17
+ witch(X) :-
18
+ burns(X),
19
+ woman(X).
20
+
21
+ woman(girl).
22
+
23
+ burns(X) :-
24
+ madeOfWood(X).
25
+
26
+ madeOfWood(X) :-
27
+ floats(X).
28
+
29
+ floats(duck).
30
+
31
+ floats(Y) :-
32
+ sameWeight(X, Y),
33
+ floats(X).
34
+
35
+ sameWeight(duck, girl).
36
+
37
+ is(witchExample, true) :-
38
+ witch(girl).
@@ -0,0 +1,56 @@
1
+ % Wolf, goat and cabbage puzzle, adapted from Eyelet's
2
+ % input/wolf-goat-cabbage.pl.
3
+ %
4
+ % A configuration is [man, wolf, goat, cabbage], where each item is on the west
5
+ % bank w or east bank e. The recursive search keeps a visited list so eyelang
6
+ % explores the finite state space without looping.
7
+
8
+ % Output declarations: materialize/2 selects the relations written to this example's golden output.
9
+ materialize(solution, 2).
10
+ materialize(solved, 2).
11
+
12
+ % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
13
+ memoize(solve, 4).
14
+
15
+ % Derivation rules: each rule below contributes one logical step toward the displayed results.
16
+ solution(Moves) :-
17
+ solve([w, w, w, w], [e, e, e, e], [[w, w, w, w]], Moves),
18
+ length(Moves, 7).
19
+
20
+ solve(Config, Config, _Visited, []).
21
+
22
+ solve(Config, Goal, Visited, [Move|Rest]) :-
23
+ move(Config, Move, NextConfig),
24
+ safe(NextConfig),
25
+ not_member(NextConfig, Visited),
26
+ solve(NextConfig, Goal, [NextConfig|Visited], Rest).
27
+
28
+ % Each move transforms one configuration into another.
29
+ move([X, X, Goat, Cabbage], wolf, [Y, Y, Goat, Cabbage]) :-
30
+ change(X, Y).
31
+
32
+ move([X, Wolf, X, Cabbage], goat, [Y, Wolf, Y, Cabbage]) :-
33
+ change(X, Y).
34
+
35
+ move([X, Wolf, Goat, X], cabbage, [Y, Wolf, Goat, Y]) :-
36
+ change(X, Y).
37
+
38
+ move([X, Wolf, Goat, Cabbage], nothing, [Y, Wolf, Goat, Cabbage]) :-
39
+ change(X, Y).
40
+
41
+ change(e, w).
42
+ change(w, e).
43
+
44
+ % Safe if the goat is not left alone with the wolf or cabbage without the man.
45
+ safe([Man, Wolf, Goat, Cabbage]) :-
46
+ one_eq(Man, Goat, Wolf),
47
+ one_eq(Man, Goat, Cabbage).
48
+
49
+ one_eq(X, X, _).
50
+ one_eq(X, _, X).
51
+
52
+ solution(puzzle, Moves) :-
53
+ solution(Moves).
54
+
55
+ solved(puzzle, true) :-
56
+ solution(_Moves).
@@ -0,0 +1,44 @@
1
+ % Zebra puzzle, adapted from Eyelet's input/zebra.pl.
2
+ %
3
+ % Five houses are represented as house(Color, Nationality, Pet, Beverage,
4
+ % Cigarette). The answer is the classic one: the Norwegian drinks water and the
5
+ % Japanese owns the zebra.
6
+
7
+ % Output declarations: materialize/2 selects the relations written to this example's golden output.
8
+ materialize(waterDrinker, 2).
9
+ materialize(zebraOwner, 2).
10
+ materialize(solved, 2).
11
+
12
+ % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
13
+ % Derivation rules: each rule below contributes one logical step toward the displayed results.
14
+ zebra(WaterDrinker, ZebraOwner) :-
15
+ eq(Houses, [_, _, _, _, _]),
16
+ first(Houses, house(_, norwegian, _, _, _)),
17
+ third(Houses, house(_, _, _, milk, _)),
18
+ adjacent(house(_, norwegian, _, _, _), house(blue, _, _, _, _), Houses),
19
+ next_to(house(ivory, _, _, _, _), house(green, _, _, _, _), Houses),
20
+ member(house(red, english, _, _, _), Houses),
21
+ member(house(green, _, _, coffee, _), Houses),
22
+ member(house(yellow, _, _, _, kools), Houses),
23
+ member(house(_, spanish, dog, _, _), Houses),
24
+ member(house(_, ukrainian, _, tea, _), Houses),
25
+ member(house(_, _, snail, _, old_gold), Houses),
26
+ adjacent(house(_, _, _, _, chesterfields), house(_, _, fox, _, _), Houses),
27
+ adjacent(house(_, _, _, _, kools), house(_, _, horse, _, _), Houses),
28
+ member(house(_, _, _, orange_juice, lucky_strike), Houses),
29
+ member(house(_, japanese, _, _, parliaments), Houses),
30
+ member(house(_, WaterDrinker, _, water, _), Houses),
31
+ member(house(_, ZebraOwner, zebra, _, _), Houses).
32
+
33
+ first([X|_], X).
34
+ third([_, _, X|_], X).
35
+
36
+ adjacent(A, B, List) :- next_to(A, B, List).
37
+ adjacent(A, B, List) :- next_to(B, A, List).
38
+
39
+ next_to(X, Y, [X, Y|_]).
40
+ next_to(X, Y, [_|Zs]) :- next_to(X, Y, Zs).
41
+
42
+ waterDrinker(zebraPuzzle, WaterDrinker) :- zebra(WaterDrinker, _ZebraOwner).
43
+ zebraOwner(zebraPuzzle, ZebraOwner) :- zebra(_WaterDrinker, ZebraOwner).
44
+ solved(zebraPuzzle, true) :- zebra(norwegian, japanese).
package/eyelang.d.ts ADDED
@@ -0,0 +1,92 @@
1
+ export interface EyelangStats {
2
+ [key: string]: number;
3
+ }
4
+
5
+ export interface EyelangRunOptions {
6
+ proof?: boolean;
7
+ why?: boolean;
8
+ explain?: boolean;
9
+ inputFormat?: 'auto' | 'eyelang' | 'rdf' | 'rdf12' | 'turtle' | 'ttl' | 'nt' | 'n3' | string;
10
+ [key: string]: unknown;
11
+ }
12
+
13
+ export interface EyelangRunResult {
14
+ stdout: string;
15
+ stats: EyelangStats;
16
+ }
17
+
18
+ export interface EyelangSourcePart {
19
+ text?: string;
20
+ source?: string;
21
+ filename?: string;
22
+ }
23
+
24
+ export class Program {
25
+ constructor(clauses?: unknown[], options?: EyelangRunOptions);
26
+ static parse(source: string, options?: EyelangRunOptions): Program;
27
+ static parseSources(sources?: Array<string | EyelangSourcePart>, options?: EyelangRunOptions): Program;
28
+ materializationGoals(): unknown[];
29
+ sourceFactLines(predicateKeys?: Set<string> | null): Set<string>;
30
+ }
31
+
32
+ export function makeProgram(clauses?: unknown[], options?: EyelangRunOptions): Program;
33
+ export function parseClauses(source: string, options?: EyelangRunOptions): unknown[];
34
+ export function parseProgramText(source: string, options?: EyelangRunOptions): unknown[];
35
+ export function parseRdfClauses(source: string, options?: EyelangRunOptions): unknown[];
36
+ export function rdfToEyelang(source: string, options?: EyelangRunOptions): string;
37
+ export function clausesToEyelang(clauses: unknown[]): string;
38
+ export function rdfIri(value: string): unknown;
39
+ export function rdfBlank(value: string): unknown;
40
+ export function rdfLiteral(value: string, datatype?: string, language?: string): unknown;
41
+ export function rdfTripleTerm(subject: unknown, predicate: unknown, object: unknown): unknown;
42
+ export function rdfGoal(subject: unknown, predicate: unknown, object: unknown): unknown;
43
+
44
+ export class Env {
45
+ constructor(parent?: Env | null);
46
+ }
47
+
48
+ export class Solver {
49
+ constructor(program: Program, options?: EyelangRunOptions);
50
+ stats: EyelangStats;
51
+ solve(goals: unknown[], env?: Env, depth?: number): Iterable<Env>;
52
+ }
53
+
54
+ export class BuiltinRegistry {
55
+ constructor();
56
+ }
57
+
58
+ export function createDefaultRegistry(): BuiltinRegistry;
59
+ export function getDefaultRegistry(): BuiltinRegistry;
60
+
61
+ export function run(source: string | Program, options?: EyelangRunOptions): EyelangRunResult;
62
+
63
+ export function whyProof(program: Program, goal: unknown, options?: EyelangRunOptions): { ok: boolean; text: string };
64
+ export function whyNoProof(goal: unknown): string;
65
+
66
+ export const ATOM: 'atom';
67
+ export const VARIABLE: 'variable';
68
+ export const COMPOUND: 'compound';
69
+ export const NUMBER: 'number';
70
+ export const STRING: 'string';
71
+ export function atom(name: string): unknown;
72
+ export function variable(name: string): unknown;
73
+ export function compound(name: string, args?: unknown[]): unknown;
74
+ export function termToString(term: unknown, env?: Env, quoted?: boolean): string;
75
+
76
+ declare const eyelang: {
77
+ run: typeof run;
78
+ Program: typeof Program;
79
+ makeProgram: typeof makeProgram;
80
+ parseClauses: typeof parseClauses;
81
+ parseProgramText: typeof parseProgramText;
82
+ parseRdfClauses: typeof parseRdfClauses;
83
+ rdfToEyelang: typeof rdfToEyelang;
84
+ clausesToEyelang: typeof clausesToEyelang;
85
+ Solver: typeof Solver;
86
+ Env: typeof Env;
87
+ BuiltinRegistry: typeof BuiltinRegistry;
88
+ createDefaultRegistry: typeof createDefaultRegistry;
89
+ getDefaultRegistry: typeof getDefaultRegistry;
90
+ };
91
+
92
+ export default eyelang;