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,20 +0,0 @@
1
- % Towers of Hanoi adapted from Eyeling hanoi.n3.
2
- % Output is the complete list of moves for size 3.
3
-
4
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
5
- materialize(answer, 2).
6
-
7
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
8
- memoize(hanoi, 5).
9
-
10
- hanoi(0, _From, _To, _Via, []).
11
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
12
- hanoi(N, From, To, Via, Moves) :-
13
- gt(N, 0),
14
- sub(N, 1, N1),
15
- hanoi(N1, From, Via, To, Before),
16
- hanoi(N1, Via, To, From, After),
17
- append(Before, [[From, To]|After], Moves).
18
-
19
- answer(3, Moves) :-
20
- hanoi(3, left, right, center, Moves).
@@ -1,51 +0,0 @@
1
- % Engineering example: one-dimensional conductive heat loss through a wall.
2
- %
3
- % Thermal resistance is L/(k*A), and heat loss is DeltaT/R.
4
-
5
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
6
- materialize(type, 2).
7
- materialize(temperatureDifference_K, 2).
8
- materialize(thermalResistance_K_W, 2).
9
- materialize(heatLoss_W, 2).
10
- materialize(status, 2).
11
-
12
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
13
- wall(wall1, conductivity_W_mK, 0.8).
14
- wall(wall1, area_m2, 12.0).
15
- wall(wall1, thickness_m, 0.2).
16
- wall(wall1, indoor_C, 21.0).
17
- wall(wall1, outdoor_C, -4.0).
18
-
19
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
20
- temperature_difference(Wall, DeltaT) :-
21
- wall(Wall, indoor_C, Indoor),
22
- wall(Wall, outdoor_C, Outdoor),
23
- sub(Indoor, Outdoor, DeltaT).
24
-
25
- thermal_resistance(Wall, Resistance) :-
26
- wall(Wall, thickness_m, Thickness),
27
- wall(Wall, conductivity_W_mK, Conductivity),
28
- wall(Wall, area_m2, Area),
29
- mul(Conductivity, Area, Conductance),
30
- div(Thickness, Conductance, Resistance).
31
-
32
- heat_loss(Wall, HeatLoss) :-
33
- temperature_difference(Wall, DeltaT),
34
- thermal_resistance(Wall, Resistance),
35
- div(DeltaT, Resistance, HeatLoss).
36
-
37
- type(Wall, conduction_heat_loss) :-
38
- wall(Wall, thickness_m, _Thickness).
39
-
40
- temperatureDifference_K(Wall, DeltaT) :-
41
- temperature_difference(Wall, DeltaT).
42
-
43
- thermalResistance_K_W(Wall, Resistance) :-
44
- thermal_resistance(Wall, Resistance).
45
-
46
- heatLoss_W(Wall, HeatLoss) :-
47
- heat_loss(Wall, HeatLoss).
48
-
49
- status(Wall, high_heat_loss) :-
50
- heat_loss(Wall, HeatLoss),
51
- gt(HeatLoss, 1000.0).
@@ -1,36 +0,0 @@
1
- % Heron's theorem: area = sqrt(s(s-a)(s-b)(s-c)).
2
-
3
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
4
- materialize(semiperimeter, 2).
5
- materialize(heronProduct, 2).
6
- materialize(area, 2).
7
- materialize(status, 2).
8
-
9
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
10
- % 13-14-15 is a classic integer-sided triangle with area 84.
11
- triangle(field_plot, 13, 14, 15).
12
-
13
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
14
- semiperimeter(Triangle, S) :-
15
- triangle(Triangle, A, B, C),
16
- add(A, B, AB),
17
- add(AB, C, Sum),
18
- div(Sum, 2, S).
19
-
20
- % Area is obtained by taking the square root of this Heron product.
21
- heron_product(Triangle, Product) :-
22
- triangle(Triangle, A, B, C),
23
- semiperimeter(Triangle, S),
24
- sub(S, A, SA),
25
- sub(S, B, SB),
26
- sub(S, C, SC),
27
- mul(S, SA, T1),
28
- mul(T1, SB, T2),
29
- mul(T2, SC, Product).
30
-
31
- area(Triangle, Area) :-
32
- heron_product(Triangle, Product),
33
- pow(Product, 0.5, Area).
34
-
35
- heronProduct(Triangle, P) :- heron_product(Triangle, P).
36
- status(Triangle, valid_survey_triangle) :- area(Triangle, A), gt(A, 0).
@@ -1,37 +0,0 @@
1
- % Science example: ideal gas law.
2
- %
3
- % A simple gas cell uses P*V = n*R*T. The constants are chosen so that the
4
- % computed pressure is exactly near one atmosphere in this small example.
5
-
6
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
7
- materialize(pressure_Pa, 2).
8
- materialize(status, 2).
9
- materialize(reason, 2).
10
-
11
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
12
- gas_cell(cell1, 1.0, 8.0, 300.0, 0.024).
13
- pressure_limit(cell1, low_Pa, 95000.0).
14
- pressure_limit(cell1, high_Pa, 105000.0).
15
-
16
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
17
- pressure(Cell, Pressure) :-
18
- gas_cell(Cell, Moles, GasConstant, Temperature, Volume),
19
- mul(Moles, GasConstant, NR),
20
- mul(NR, Temperature, NRT),
21
- div(NRT, Volume, Pressure).
22
-
23
- near_atmospheric(Cell) :-
24
- pressure(Cell, Pressure),
25
- pressure_limit(Cell, low_Pa, Low),
26
- pressure_limit(Cell, high_Pa, High),
27
- gt(Pressure, Low),
28
- lt(Pressure, High).
29
-
30
- pressure_Pa(Cell, Pressure) :-
31
- pressure(Cell, Pressure).
32
-
33
- status(Cell, near_atmospheric) :-
34
- near_atmospheric(Cell).
35
-
36
- reason(Cell, "pressure is inside the one-atmosphere tolerance band") :-
37
- near_atmospheric(Cell).
@@ -1,88 +0,0 @@
1
- % Illegitimate reasoning detector.
2
- %
3
- % The input facts describe arguments and their surface reasoning pattern. Helper
4
- % predicates identify common invalid inference forms. The output layer emits only
5
- % concise report relations: the argument is illegitimate, which fallacy was found,
6
- % the challenged conclusion, and a short reason why.
7
-
8
- % Affirming the consequent:
9
- % If it rained, the street is wet. The street is wet. Therefore it rained.
10
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
11
- materialize(type, 2).
12
- materialize(fallacy, 2).
13
- materialize(conclusion, 2).
14
- materialize(reason, 2).
15
- materialize(sampleSize, 2).
16
- materialize(requiredSampleSize, 2).
17
- materialize(omittedAlternative, 2).
18
-
19
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
20
- argument(arg_affirming_consequent).
21
- implication(arg_affirming_consequent, rain, street_wet).
22
- observed(arg_affirming_consequent, street_wet).
23
- concludes(arg_affirming_consequent, rain).
24
-
25
- % Denying the antecedent:
26
- % If the key is present, the door opens. The key is not present. Therefore the door does not open.
27
- argument(arg_denying_antecedent).
28
- implication(arg_denying_antecedent, key_present, door_opens).
29
- observed(arg_denying_antecedent, neg(key_present)).
30
- concludes(arg_denying_antecedent, neg(door_opens)).
31
-
32
- % Hasty generalization:
33
- % Three sampled cases are treated as enough for a universal conclusion.
34
- argument(arg_hasty_generalization).
35
- sample_size(arg_hasty_generalization, 3).
36
- required_sample_size(arg_hasty_generalization, 30).
37
- concludes(arg_hasty_generalization, all(crows, black)).
38
-
39
- % False dilemma:
40
- % Only two choices are presented even though a relevant third option exists.
41
- argument(arg_false_dilemma).
42
- presented_alternatives(arg_false_dilemma, [approve_now, reject_forever]).
43
- omitted_alternative(arg_false_dilemma, revise_proposal).
44
- concludes(arg_false_dilemma, approve_now).
45
-
46
- % A contrast case: modus ponens is not flagged.
47
- argument(arg_modus_ponens).
48
- implication(arg_modus_ponens, subscription_paid, access_allowed).
49
- observed(arg_modus_ponens, subscription_paid).
50
- concludes(arg_modus_ponens, access_allowed).
51
-
52
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
53
- fallacy(A, affirming_consequent) :-
54
- argument(A),
55
- implication(A, Antecedent, Consequent),
56
- observed(A, Consequent),
57
- concludes(A, Antecedent).
58
-
59
- fallacy(A, denying_antecedent) :-
60
- argument(A),
61
- implication(A, Antecedent, Consequent),
62
- observed(A, neg(Antecedent)),
63
- concludes(A, neg(Consequent)).
64
-
65
- fallacy(A, hasty_generalization) :-
66
- argument(A),
67
- sample_size(A, N),
68
- required_sample_size(A, Min),
69
- lt(N, Min),
70
- concludes(A, all(_, _)).
71
-
72
- fallacy(A, false_dilemma) :-
73
- argument(A),
74
- presented_alternatives(A, _),
75
- omitted_alternative(A, _),
76
- concludes(A, _).
77
-
78
- reason(arg_affirming_consequent, "observing the consequent does not prove the antecedent").
79
- reason(arg_denying_antecedent, "denying the antecedent does not disprove the consequent").
80
- reason(arg_hasty_generalization, "sample size is below the threshold for a universal conclusion").
81
- reason(arg_false_dilemma, "a relevant alternative is omitted").
82
-
83
- type(A, illegitimate_reasoning) :- fallacy(A, _).
84
- conclusion(A, C) :- fallacy(A, _), concludes(A, C).
85
- reason(A, R) :- fallacy(A, _), reason(A, R).
86
- sampleSize(A, N) :- fallacy(A, hasty_generalization), sample_size(A, N).
87
- requiredSampleSize(A, Min) :- fallacy(A, hasty_generalization), required_sample_size(A, Min).
88
- omittedAlternative(A, Alt) :- fallacy(A, false_dilemma), omitted_alternative(A, Alt).
@@ -1,40 +0,0 @@
1
- % Knowledge-engineering alignment flow in eyelang.
2
- % Local source predicates are aligned once and then reused to produce a target-shaped flow view.
3
- % fpv_* atoms denote a tiny local Flow/Policy Vocabulary profile.
4
-
5
- materialize(type, 2).
6
- materialize(target_fact, 3).
7
- materialize(runtime_rule, 2).
8
- materialize(target_predicate, 2).
9
- materialize(flow_emits, 2).
10
- materialize(trusted_by, 2).
11
-
12
- sub_class(local_observation, sosa_observation).
13
- sub_class(temperature_probe, sosa_sensor).
14
- sub_property(observed_by, sosa_madeBySensor).
15
- sub_property(observed_at, sosa_resultTime).
16
- sub_property(temperature_celsius, sosa_hasSimpleResult).
17
- sub_property(in_flow, fpv_hasFlowStep).
18
- equivalent_property(observed_feature, sosa_hasFeatureOfInterest).
19
-
20
- type(msg1, local_observation).
21
- type(probe7, temperature_probe).
22
- triple(msg1, observed_by, probe7).
23
- triple(msg1, observed_at, "2026-06-17T12:34:56Z").
24
- triple(msg1, temperature_celsius, 18.6).
25
- triple(msg1, observed_feature, platform_b).
26
- triple(msg1, in_flow, ingest_step).
27
-
28
- % Generic alignment rules.
29
- type(Thing, Super) :- type(Thing, Class), sub_class(Class, Super).
30
- target_fact(Subject, SuperPredicate, Object) :- triple(Subject, Predicate, Object), sub_property(Predicate, SuperPredicate).
31
- target_fact(Subject, TargetPredicate, Object) :- triple(Subject, Predicate, Object), equivalent_property(Predicate, TargetPredicate).
32
- target_fact(Subject, SourcePredicate, Object) :- triple(Subject, Predicate, Object), equivalent_property(SourcePredicate, Predicate).
33
-
34
- runtime_rule(SourcePredicate, copy_to_target) :- sub_property(SourcePredicate, _TargetPredicate).
35
- runtime_rule(SourcePredicate, copy_to_target) :- equivalent_property(SourcePredicate, _TargetPredicate).
36
- target_predicate(SourcePredicate, TargetPredicate) :- sub_property(SourcePredicate, TargetPredicate).
37
- target_predicate(SourcePredicate, TargetPredicate) :- equivalent_property(SourcePredicate, TargetPredicate).
38
-
39
- flow_emits(Step, Message) :- type(Message, sosa_observation), target_fact(Message, fpv_hasFlowStep, Step), target_fact(Message, sosa_madeBySensor, _Sensor).
40
- trusted_by(Step, Sensor) :- type(Message, sosa_observation), target_fact(Message, fpv_hasFlowStep, Step), target_fact(Message, sosa_madeBySensor, Sensor).
@@ -1,31 +0,0 @@
1
- % Law of cosines: c^2 = a^2 + b^2 - 2ab cos(C).
2
- % The example uses a 60-degree included angle, so cos(C) is represented as 0.5.
3
-
4
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
5
- materialize(sideCSquared, 2).
6
- materialize(sideC, 2).
7
- materialize(status, 2).
8
-
9
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
10
- % Stored tuple is triangle(Name, sideA, sideB, cosIncludedAngle).
11
- triangle(tri60, 7, 9, 0.5).
12
-
13
- % Compute c^2 first so both squared and square-rooted outputs can be shown.
14
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
15
- side_c_squared(Triangle, C2) :-
16
- triangle(Triangle, A, B, CosC),
17
- mul(A, A, A2),
18
- mul(B, B, B2),
19
- add(A2, B2, Sum),
20
- mul(2, A, TwoA),
21
- mul(TwoA, B, TwoAB),
22
- mul(TwoAB, CosC, Projection),
23
- sub(Sum, Projection, C2).
24
-
25
- side_c(Triangle, C) :-
26
- side_c_squared(Triangle, C2),
27
- pow(C2, 0.5, C).
28
-
29
- sideCSquared(Triangle, C2) :- side_c_squared(Triangle, C2).
30
- sideC(Triangle, C) :- side_c(Triangle, C).
31
- status(Triangle, acute_triangle) :- side_c_squared(Triangle, C2), gt(C2, 0).
@@ -1,81 +0,0 @@
1
- % Math example: least-squares linear regression.
2
- %
3
- % The rules reduce a list of points to sufficient statistics, then derive the
4
- % fitted slope, intercept, and coefficient of determination R^2.
5
-
6
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
7
- materialize(slope, 2).
8
- materialize(intercept, 2).
9
- materialize(rSquared, 2).
10
- materialize(status, 2).
11
- materialize(reason, 2).
12
-
13
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
14
- dataset(regression1, [point(1.0, 2.0), point(2.0, 3.0), point(3.0, 5.0), point(4.0, 4.0)]).
15
- threshold(regression1, minimum_r_squared, 0.60).
16
-
17
- stats([], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0).
18
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
19
- stats([point(X, Y)|Rest], N, SumX, SumY, SumXX, SumXY, SumYY) :-
20
- stats(Rest, N0, SumX0, SumY0, SumXX0, SumXY0, SumYY0),
21
- add(N0, 1.0, N),
22
- add(SumX0, X, SumX),
23
- add(SumY0, Y, SumY),
24
- mul(X, X, XX),
25
- add(SumXX0, XX, SumXX),
26
- mul(X, Y, XY),
27
- add(SumXY0, XY, SumXY),
28
- mul(Y, Y, YY),
29
- add(SumYY0, YY, SumYY).
30
-
31
- sufficient_statistics(Data, N, SumX, SumY, SumXX, SumXY, SumYY) :-
32
- dataset(Data, Points),
33
- stats(Points, N, SumX, SumY, SumXX, SumXY, SumYY).
34
-
35
- slope(Data, Slope) :-
36
- sufficient_statistics(Data, N, SumX, SumY, SumXX, SumXY, _SumYY),
37
- mul(N, SumXY, NSumXY),
38
- mul(SumX, SumY, SumXSumY),
39
- sub(NSumXY, SumXSumY, Numerator),
40
- mul(N, SumXX, NSumXX),
41
- mul(SumX, SumX, SumXSquared),
42
- sub(NSumXX, SumXSquared, Denominator),
43
- div(Numerator, Denominator, Slope).
44
-
45
- intercept(Data, Intercept) :-
46
- sufficient_statistics(Data, N, SumX, SumY, _SumXX, _SumXY, _SumYY),
47
- slope(Data, Slope),
48
- mul(Slope, SumX, SlopeSumX),
49
- sub(SumY, SlopeSumX, Numerator),
50
- div(Numerator, N, Intercept).
51
-
52
- r_squared(Data, R2) :-
53
- sufficient_statistics(Data, N, SumX, SumY, SumXX, SumXY, SumYY),
54
- mul(N, SumXY, NSumXY),
55
- mul(SumX, SumY, SumXSumY),
56
- sub(NSumXY, SumXSumY, NumeratorBase),
57
- pow(NumeratorBase, 2.0, Numerator),
58
- mul(N, SumXX, NSumXX),
59
- mul(SumX, SumX, SumXSquared),
60
- sub(NSumXX, SumXSquared, XSpread),
61
- mul(N, SumYY, NSumYY),
62
- mul(SumY, SumY, SumYSquared),
63
- sub(NSumYY, SumYSquared, YSpread),
64
- mul(XSpread, YSpread, Denominator),
65
- div(Numerator, Denominator, R2).
66
-
67
- accepted_fit(Data) :-
68
- r_squared(Data, R2),
69
- threshold(Data, minimum_r_squared, Minimum),
70
- ge(R2, Minimum).
71
-
72
-
73
-
74
- rSquared(Data, R2) :-
75
- r_squared(Data, R2).
76
-
77
- status(Data, accepted_linear_fit) :-
78
- accepted_fit(Data).
79
-
80
- reason(Data, "R squared meets the minimum explanatory-power threshold") :-
81
- accepted_fit(Data).
@@ -1,33 +0,0 @@
1
- % List collections inspired by the Eyeling collection example.
2
- % Demonstrates list literals, member/2, length/2, append/3, and [Head|Tail].
3
- % Each materialized relation demonstrates one list operation.
4
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
5
- materialize(length, 2).
6
- materialize(member, 2).
7
- materialize(append, 2).
8
- materialize(head, 2).
9
- materialize(tail, 2).
10
-
11
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
12
- % Lists are first-class terms in facts and rule heads/bodies.
13
- collection(numbers, [1, 2, 3]).
14
- collection(letters, [a, b]).
15
-
16
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
17
- length(numbers, N) :-
18
- collection(numbers, List),
19
- length(List, N).
20
-
21
- member(numbers, X) :-
22
- collection(numbers, List),
23
- member(X, List).
24
-
25
- append(letters, Extended) :-
26
- collection(letters, List),
27
- append(List, [c], Extended).
28
-
29
- head(letters, Head) :-
30
- collection(letters, [Head|_Tail]).
31
-
32
- tail(letters, Tail) :-
33
- collection(letters, [_Head|Tail]).
@@ -1,78 +0,0 @@
1
- % Leg Length Discrepancy Measurement, adapted from Eyeling lldm.n3.
2
- %
3
- % The measurement and intermediate geometry are kept in helper predicates so
4
- % the default relation materialization stays concise. The visible output is
5
- % the alarm plus the small set of relations explaining why the alarm fired.
6
-
7
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
8
- materialize(type, 2).
9
- materialize(lld_left_length_cm, 2).
10
- materialize(lld_right_length_cm, 2).
11
- materialize(lld_discrepancy_cm, 2).
12
- materialize(lld_threshold_cm, 2).
13
- materialize(lld_reason, 2).
14
-
15
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
16
- measurement(meas47).
17
-
18
- % measured landmark coordinates, in centimetres
19
- val(meas47, p1xCm, 10.1).
20
- val(meas47, p1yCm, 7.8).
21
- val(meas47, p2xCm, 45.1).
22
- val(meas47, p2yCm, 5.6).
23
- val(meas47, p3xCm, 3.6).
24
- val(meas47, p3yCm, 29.8).
25
- val(meas47, p4xCm, 54.7).
26
- val(meas47, p4yCm, 28.5).
27
-
28
- % threshold used by the alarm rule, in centimetres
29
- threshold(meas47, lld_alarm_threshold_cm, 1.25).
30
-
31
- % geometric intermediate values
32
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
33
- val(M, dx12Cm, Z) :- measurement(M), val(M, p1xCm, X), val(M, p2xCm, Y), sub(X, Y, Z).
34
- val(M, dx51Cm, Z) :- measurement(M), val(M, p5xCm, X), val(M, p1xCm, Y), sub(X, Y, Z).
35
- val(M, dx53Cm, Z) :- measurement(M), val(M, p5xCm, X), val(M, p3xCm, Y), sub(X, Y, Z).
36
- val(M, dx62Cm, Z) :- measurement(M), val(M, p6xCm, X), val(M, p2xCm, Y), sub(X, Y, Z).
37
- val(M, dx64Cm, Z) :- measurement(M), val(M, p6xCm, X), val(M, p4xCm, Y), sub(X, Y, Z).
38
- val(M, dy12Cm, Z) :- measurement(M), val(M, p1yCm, X), val(M, p2yCm, Y), sub(X, Y, Z).
39
- val(M, dy13Cm, Z) :- measurement(M), val(M, p1yCm, X), val(M, p3yCm, Y), sub(X, Y, Z).
40
- val(M, dy24Cm, Z) :- measurement(M), val(M, p2yCm, X), val(M, p4yCm, Y), sub(X, Y, Z).
41
- val(M, dy53Cm, Z) :- measurement(M), val(M, p5yCm, X), val(M, p3yCm, Y), sub(X, Y, Z).
42
- val(M, dy64Cm, Z) :- measurement(M), val(M, p6yCm, X), val(M, p4yCm, Y), sub(X, Y, Z).
43
- val(M, cL1, Z) :- measurement(M), val(M, dy12Cm, Y), val(M, dx12Cm, X), div(Y, X, Z).
44
- val(M, dL3m, Z) :- measurement(M), val(M, cL1, X), div(1, X, Z).
45
- val(M, cL3, Z) :- measurement(M), val(M, dL3m, X), sub(0, X, Z).
46
- val(M, pL1x1Cm, Z) :- measurement(M), val(M, cL1, X), val(M, p1xCm, Y), mul(X, Y, Z).
47
- val(M, pL1x2Cm, Z) :- measurement(M), val(M, cL1, X), val(M, p2xCm, Y), mul(X, Y, Z).
48
- val(M, pL3x3Cm, Z) :- measurement(M), val(M, cL3, X), val(M, p3xCm, Y), mul(X, Y, Z).
49
- val(M, pL3x4Cm, Z) :- measurement(M), val(M, cL3, X), val(M, p4xCm, Y), mul(X, Y, Z).
50
- val(M, dd13Cm, Z) :- measurement(M), val(M, pL1x1Cm, X), val(M, pL3x3Cm, Y), sub(X, Y, Z).
51
- val(M, ddy13Cm, Z) :- measurement(M), val(M, dd13Cm, X), val(M, dy13Cm, Y), sub(X, Y, Z).
52
- val(M, dd24Cm, Z) :- measurement(M), val(M, pL1x2Cm, X), val(M, pL3x4Cm, Y), sub(X, Y, Z).
53
- val(M, ddy24Cm, Z) :- measurement(M), val(M, dd24Cm, X), val(M, dy24Cm, Y), sub(X, Y, Z).
54
- val(M, ddL13, Z) :- measurement(M), val(M, cL1, X), val(M, cL3, Y), sub(X, Y, Z).
55
- val(M, pL1dx51Cm, Z) :- measurement(M), val(M, cL1, X), val(M, dx51Cm, Y), mul(X, Y, Z).
56
- val(M, pL1dx62Cm, Z) :- measurement(M), val(M, cL1, X), val(M, dx62Cm, Y), mul(X, Y, Z).
57
- val(M, p5xCm, Z) :- measurement(M), val(M, ddy13Cm, X), val(M, ddL13, Y), div(X, Y, Z).
58
- val(M, p5yCm, Z) :- measurement(M), val(M, pL1dx51Cm, X), val(M, p1yCm, Y), add(X, Y, Z).
59
- val(M, p6xCm, Z) :- measurement(M), val(M, ddy24Cm, X), val(M, ddL13, Y), div(X, Y, Z).
60
- val(M, p6yCm, Z) :- measurement(M), val(M, pL1dx62Cm, X), val(M, p2yCm, Y), add(X, Y, Z).
61
- val(M, sdx53Cm2, Z) :- measurement(M), val(M, dx53Cm, X), pow(X, 2, Z).
62
- val(M, sdx64Cm2, Z) :- measurement(M), val(M, dx64Cm, X), pow(X, 2, Z).
63
- val(M, sdy53Cm2, Z) :- measurement(M), val(M, dy53Cm, X), pow(X, 2, Z).
64
- val(M, sdy64Cm2, Z) :- measurement(M), val(M, dy64Cm, X), pow(X, 2, Z).
65
- val(M, ssd53Cm2, Z) :- measurement(M), val(M, sdx53Cm2, X), val(M, sdy53Cm2, Y), add(X, Y, Z).
66
- val(M, ssd64Cm2, Z) :- measurement(M), val(M, sdx64Cm2, X), val(M, sdy64Cm2, Y), add(X, Y, Z).
67
- val(M, d53Cm, Z) :- measurement(M), val(M, ssd53Cm2, X), pow(X, 0.5, Z).
68
- val(M, d64Cm, Z) :- measurement(M), val(M, ssd64Cm2, X), pow(X, 0.5, Z).
69
- val(M, dCm, Z) :- measurement(M), val(M, d53Cm, X), val(M, d64Cm, Y), sub(X, Y, Z).
70
-
71
- % concise output layer
72
- type(M, lld_alarm) :- measurement(M), val(M, dCm, D), threshold(M, lld_alarm_threshold_cm, T), sub(0, T, NegT), lt(D, NegT).
73
- type(M, lld_alarm) :- measurement(M), val(M, dCm, D), threshold(M, lld_alarm_threshold_cm, T), gt(D, T).
74
- lld_left_length_cm(M, L) :- type(M, lld_alarm), val(M, d53Cm, L).
75
- lld_right_length_cm(M, R) :- type(M, lld_alarm), val(M, d64Cm, R).
76
- lld_discrepancy_cm(M, D) :- type(M, lld_alarm), val(M, dCm, D).
77
- lld_threshold_cm(M, T) :- type(M, lld_alarm), threshold(M, lld_alarm_threshold_cm, T).
78
- lld_reason(M, "discrepancy below negative threshold") :- type(M, lld_alarm).
@@ -1,73 +0,0 @@
1
- % Representative example: manufacturing quality-control capability.
2
- %
3
- % The rules compute process capability indices from measurement summaries and
4
- % classify production lines using a practical Cpk threshold.
5
-
6
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
7
- materialize(cpk, 2).
8
- materialize(status, 2).
9
- materialize(reason, 2).
10
-
11
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
12
- run(line7_shift_a).
13
- run(line8_shift_b).
14
-
15
- spec(line7_shift_a, lower_mm, 10.0).
16
- spec(line7_shift_a, upper_mm, 10.2).
17
- summary(line7_shift_a, mean_mm, 10.12).
18
- summary(line7_shift_a, sigma_mm, 0.04).
19
-
20
- spec(line8_shift_b, lower_mm, 10.0).
21
- spec(line8_shift_b, upper_mm, 10.2).
22
- summary(line8_shift_b, mean_mm, 10.1).
23
- summary(line8_shift_b, sigma_mm, 0.02).
24
-
25
- capability_threshold(cpk, 1.33).
26
-
27
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
28
- upper_margin_mm(Run, Margin) :-
29
- spec(Run, upper_mm, Upper),
30
- summary(Run, mean_mm, Mean),
31
- sub(Upper, Mean, Margin).
32
-
33
- lower_margin_mm(Run, Margin) :-
34
- summary(Run, mean_mm, Mean),
35
- spec(Run, lower_mm, Lower),
36
- sub(Mean, Lower, Margin).
37
-
38
- nearest_spec_margin_mm(Run, Margin) :-
39
- upper_margin_mm(Run, UpperMargin),
40
- lower_margin_mm(Run, LowerMargin),
41
- min(UpperMargin, LowerMargin, Margin).
42
-
43
- three_sigma_mm(Run, ThreeSigma) :-
44
- summary(Run, sigma_mm, Sigma),
45
- mul(3.0, Sigma, ThreeSigma).
46
-
47
- cpk(Run, Cpk) :-
48
- nearest_spec_margin_mm(Run, Margin),
49
- three_sigma_mm(Run, ThreeSigma),
50
- div(Margin, ThreeSigma, Cpk).
51
-
52
- capable(Run) :-
53
- cpk(Run, Cpk),
54
- capability_threshold(cpk, Threshold),
55
- ge(Cpk, Threshold).
56
-
57
- needs_adjustment(Run) :-
58
- cpk(Run, Cpk),
59
- capability_threshold(cpk, Threshold),
60
- lt(Cpk, Threshold).
61
-
62
-
63
- status(Run, capable_process) :-
64
- capable(Run).
65
-
66
- status(Run, needs_process_adjustment) :-
67
- needs_adjustment(Run).
68
-
69
- reason(Run, "Cpk meets the production capability threshold") :-
70
- capable(Run).
71
-
72
- reason(Run, "Cpk is below the production capability threshold") :-
73
- needs_adjustment(Run).
@@ -1,85 +0,0 @@
1
- % Representative example: microgrid dispatch planning.
2
- %
3
- % The rules compute renewable supply, reserve-aware battery dispatch, remaining
4
- % grid import, and a concise feasibility report for a campus microgrid interval.
5
-
6
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
7
- materialize(renewablePower_kW, 2).
8
- materialize(batteryDispatch_kW, 2).
9
- materialize(gridImport_kW, 2).
10
- materialize(reserveAfterDispatch_kW, 2).
11
- materialize(status, 2).
12
- materialize(reason, 2).
13
-
14
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
15
- site(campus_interval_17).
16
-
17
- load_kW(campus_interval_17, 620.0).
18
- solar_kW(campus_interval_17, 180.0).
19
- wind_kW(campus_interval_17, 90.0).
20
- battery_max_discharge_kW(campus_interval_17, 320.0).
21
- required_battery_reserve_kW(campus_interval_17, 80.0).
22
- grid_contract_limit_kW(campus_interval_17, 150.0).
23
-
24
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
25
- renewable_kW(Site, Renewable) :-
26
- solar_kW(Site, Solar),
27
- wind_kW(Site, Wind),
28
- add(Solar, Wind, Renewable).
29
-
30
- net_deficit_kW(Site, Deficit) :-
31
- load_kW(Site, Load),
32
- renewable_kW(Site, Renewable),
33
- sub(Load, Renewable, Deficit).
34
-
35
- reserve_aware_battery_limit_kW(Site, Limit) :-
36
- battery_max_discharge_kW(Site, MaxDischarge),
37
- required_battery_reserve_kW(Site, Reserve),
38
- sub(MaxDischarge, Reserve, Limit).
39
-
40
- battery_dispatch_kW(Site, Dispatch) :-
41
- net_deficit_kW(Site, Deficit),
42
- reserve_aware_battery_limit_kW(Site, Limit),
43
- min(Deficit, Limit, Dispatch).
44
-
45
- grid_import_kW(Site, Import) :-
46
- net_deficit_kW(Site, Deficit),
47
- battery_dispatch_kW(Site, Dispatch),
48
- sub(Deficit, Dispatch, Import).
49
-
50
- battery_reserve_after_dispatch_kW(Site, ReserveLeft) :-
51
- battery_max_discharge_kW(Site, MaxDischarge),
52
- battery_dispatch_kW(Site, Dispatch),
53
- sub(MaxDischarge, Dispatch, ReserveLeft).
54
-
55
- contract_ok(Site) :-
56
- grid_import_kW(Site, Import),
57
- grid_contract_limit_kW(Site, Limit),
58
- le(Import, Limit).
59
-
60
- reserve_ok(Site) :-
61
- battery_reserve_after_dispatch_kW(Site, ReserveLeft),
62
- required_battery_reserve_kW(Site, Required),
63
- ge(ReserveLeft, Required).
64
-
65
- stable_dispatch(Site) :-
66
- contract_ok(Site),
67
- reserve_ok(Site).
68
-
69
- renewablePower_kW(Site, Renewable) :-
70
- renewable_kW(Site, Renewable).
71
-
72
- batteryDispatch_kW(Site, Dispatch) :-
73
- battery_dispatch_kW(Site, Dispatch).
74
-
75
- gridImport_kW(Site, Import) :-
76
- grid_import_kW(Site, Import).
77
-
78
- reserveAfterDispatch_kW(Site, ReserveLeft) :-
79
- battery_reserve_after_dispatch_kW(Site, ReserveLeft).
80
-
81
- status(Site, stable_dispatch) :-
82
- stable_dispatch(Site).
83
-
84
- reason(Site, "battery dispatch covers the deficit while preserving reserve and grid contract limits") :-
85
- stable_dispatch(Site).