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,108 +0,0 @@
1
- % Bayesian diagnosis adapted from Eyeling bayes-diagnosis.n3.
2
- % The integer-scaled rules keep the model executable in eyelang. The emitted
3
- % relations use Eyeling's full posterior vocabulary instead of rounded basis
4
- % points, so this example is comparable with examples/output/bayes-diagnosis.n3
5
- % in the Eyeling repository.
6
-
7
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
8
- materialize(scores, 2).
9
- materialize(evidenceTotal, 2).
10
- materialize(result, 2).
11
- materialize(disease, 2).
12
- materialize(unnormalized, 2).
13
- materialize(posterior, 2).
14
-
15
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
16
- disease(covid19).
17
- disease(influenza).
18
- disease(allergicRhinitis).
19
- disease(bacterialPneumonia).
20
-
21
- prior(covid19, 50).
22
- prior(influenza, 30).
23
- prior(allergicRhinitis, 100).
24
- prior(bacterialPneumonia, 10).
25
-
26
- p_given(covid19, fever, 700).
27
- p_given(covid19, dryCough, 650).
28
- p_given(covid19, lossOfSmell, 400).
29
- p_given(covid19, sneezing, 150).
30
- p_given(covid19, shortBreath, 200).
31
-
32
- p_given(influenza, fever, 800).
33
- p_given(influenza, dryCough, 500).
34
- p_given(influenza, lossOfSmell, 50).
35
- p_given(influenza, sneezing, 200).
36
- p_given(influenza, shortBreath, 100).
37
-
38
- p_given(allergicRhinitis, fever, 50).
39
- p_given(allergicRhinitis, dryCough, 150).
40
- p_given(allergicRhinitis, lossOfSmell, 100).
41
- p_given(allergicRhinitis, sneezing, 800).
42
- p_given(allergicRhinitis, shortBreath, 50).
43
-
44
- p_given(bacterialPneumonia, fever, 700).
45
- p_given(bacterialPneumonia, dryCough, 600).
46
- p_given(bacterialPneumonia, lossOfSmell, 20).
47
- p_given(bacterialPneumonia, sneezing, 50).
48
- p_given(bacterialPneumonia, shortBreath, 600).
49
-
50
- evidence([
51
- ev(fever, true),
52
- ev(dryCough, true),
53
- ev(lossOfSmell, true),
54
- ev(sneezing, false),
55
- ev(shortBreath, true)
56
- ]).
57
-
58
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
59
- factor(Disease, Symptom, true, P) :- p_given(Disease, Symptom, P).
60
- factor(Disease, Symptom, false, Q) :-
61
- p_given(Disease, Symptom, P),
62
- sub(1000, P, Q).
63
-
64
- likelihood(_Disease, [], Acc, Acc).
65
- likelihood(Disease, [ev(Symptom, Present)|Rest], Acc, Value) :-
66
- factor(Disease, Symptom, Present, Factor),
67
- mul(Acc, Factor, Next),
68
- likelihood(Disease, Rest, Next, Value).
69
-
70
- score(Disease, Score) :-
71
- prior(Disease, Prior),
72
- evidence(Evidence),
73
- likelihood(Disease, Evidence, 1, Likelihood),
74
- mul(Prior, Likelihood, Score).
75
-
76
- total_score(Total) :-
77
- score(covid19, S1),
78
- score(influenza, S2),
79
- score(allergicRhinitis, S3),
80
- score(bacterialPneumonia, S4),
81
- add(S1, S2, A),
82
- add(S3, S4, B),
83
- add(A, B, Total).
84
-
85
- % Decimal surface values from the Eyeling reference output.
86
- score_decimal(covid19, 0.0015470000000000002).
87
- score_decimal(influenza, 0.000048000000000000015).
88
- score_decimal(allergicRhinitis, 7.499999999999999e-7).
89
- score_decimal(bacterialPneumonia, 0.000047879999999999996).
90
-
91
- total_score_decimal(0.0016436300000000003).
92
-
93
- posterior(covid19, 0.9412093962753174).
94
- posterior(influenza, 0.029203652890249024).
95
- posterior(allergicRhinitis, 0.00045630707641014084).
96
- posterior(bacterialPneumonia, 0.029130643758023392).
97
-
98
- scores(case, [
99
- 0.0015470000000000002,
100
- 0.000048000000000000015,
101
- 7.499999999999999e-7,
102
- 0.000047879999999999996
103
- ]).
104
- evidenceTotal(case, Total) :- total_score_decimal(Total).
105
- result(case, result(Disease)) :- disease(Disease).
106
- disease(result(Disease), Disease) :- disease(Disease).
107
- unnormalized(result(Disease), Score) :- score_decimal(Disease, Score).
108
- posterior(result(Disease), Posterior) :- posterior(Disease, Posterior).
@@ -1,182 +0,0 @@
1
- % Memoize shared inference layers: the score vector, disease likelihood tails,
2
- % and expected therapy success are reused by several report relations.
3
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
4
- materialize(diseases, 2).
5
- materialize(therapies, 2).
6
- materialize(evidence, 2).
7
- materialize(scores, 2).
8
- materialize(evidenceTotal, 2).
9
- materialize(posteriors, 2).
10
- materialize(posterior, 2).
11
- materialize(expectedSuccess, 2).
12
- materialize(expectedAdverse, 2).
13
- materialize(utility, 2).
14
- materialize(recommendedTherapy, 2).
15
-
16
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
17
- memoize(scores_for, 2).
18
- memoize(likelihood, 3).
19
- memoize(expected_success, 2).
20
-
21
- % Bayes therapy decision support adapted from Eyeling bayes-therapy.n3.
22
- % Probabilities are illustrative and are not medical advice.
23
- % The example combines a tiny Naive Bayes diagnosis model with a therapy
24
- % utility layer: expected utility = 10 * expectedSuccess - 3 * expectedAdverse.
25
-
26
- diseases(case, [covid19, influenza, allergicRhinitis, bacterialPneumonia]).
27
- therapies(case, [paxlovid, oseltamivir, supportiveCare, antibiotic, antihistamine]).
28
- evidence(case, [
29
- ev(fever, true),
30
- ev(dryCough, true),
31
- ev(lossOfSmell, false),
32
- ev(sneezing, false),
33
- ev(shortBreath, false)
34
- ]).
35
-
36
- prior(covid19, 0.05).
37
- prior(influenza, 0.03).
38
- prior(allergicRhinitis, 0.10).
39
- prior(bacterialPneumonia, 0.01).
40
-
41
- p_given(covid19, fever, 0.70).
42
- p_given(covid19, dryCough, 0.65).
43
- p_given(covid19, lossOfSmell, 0.40).
44
- p_given(covid19, sneezing, 0.15).
45
- p_given(covid19, shortBreath, 0.20).
46
-
47
- p_given(influenza, fever, 0.80).
48
- p_given(influenza, dryCough, 0.50).
49
- p_given(influenza, lossOfSmell, 0.05).
50
- p_given(influenza, sneezing, 0.20).
51
- p_given(influenza, shortBreath, 0.10).
52
-
53
- p_given(allergicRhinitis, fever, 0.05).
54
- p_given(allergicRhinitis, dryCough, 0.15).
55
- p_given(allergicRhinitis, lossOfSmell, 0.10).
56
- p_given(allergicRhinitis, sneezing, 0.80).
57
- p_given(allergicRhinitis, shortBreath, 0.05).
58
-
59
- p_given(bacterialPneumonia, fever, 0.70).
60
- p_given(bacterialPneumonia, dryCough, 0.60).
61
- p_given(bacterialPneumonia, lossOfSmell, 0.02).
62
- p_given(bacterialPneumonia, sneezing, 0.05).
63
- p_given(bacterialPneumonia, shortBreath, 0.60).
64
-
65
- therapy(paxlovid).
66
- therapy(oseltamivir).
67
- therapy(antihistamine).
68
- therapy(antibiotic).
69
- therapy(supportiveCare).
70
-
71
- success_by_disease(paxlovid, [0.75, 0.05, 0.02, 0.05]).
72
- success_by_disease(oseltamivir, [0.05, 0.60, 0.02, 0.05]).
73
- success_by_disease(antihistamine, [0.10, 0.10, 0.75, 0.05]).
74
- success_by_disease(antibiotic, [0.05, 0.05, 0.02, 0.80]).
75
- success_by_disease(supportiveCare, [0.30, 0.30, 0.25, 0.20]).
76
-
77
- adverse(paxlovid, 0.10).
78
- adverse(oseltamivir, 0.08).
79
- adverse(antihistamine, 0.03).
80
- adverse(antibiotic, 0.07).
81
- adverse(supportiveCare, 0.01).
82
-
83
- benefit_weight(10).
84
- harm_weight(3).
85
-
86
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
87
- factor(Disease, ev(Symptom, true), P) :- p_given(Disease, Symptom, P).
88
- factor(Disease, ev(Symptom, false), Q) :-
89
- p_given(Disease, Symptom, P),
90
- sub(1.0, P, Q).
91
-
92
- likelihood(_Disease, [], 1.0).
93
- likelihood(Disease, [Evidence|Rest], Likelihood) :-
94
- factor(Disease, Evidence, Factor),
95
- likelihood(Disease, Rest, TailLikelihood),
96
- mul(Factor, TailLikelihood, Likelihood).
97
-
98
- score(Disease, Score) :-
99
- prior(Disease, Prior),
100
- evidence(case, Evidence),
101
- likelihood(Disease, Evidence, Likelihood),
102
- mul(Prior, Likelihood, Score).
103
-
104
- scores_for([], []).
105
- scores_for([Disease|RestDiseases], [Score|RestScores]) :-
106
- score(Disease, Score),
107
- scores_for(RestDiseases, RestScores).
108
-
109
- score_sum([], 0.0).
110
- score_sum([Value|Rest], Sum) :-
111
- score_sum(Rest, TailSum),
112
- add(Value, TailSum, Sum).
113
-
114
- normalize_scores([], _Total, []).
115
- normalize_scores([Score|RestScores], Total, [Posterior|RestPosteriors]) :-
116
- div(Score, Total, Posterior),
117
- normalize_scores(RestScores, Total, RestPosteriors).
118
-
119
- disease_posterior([Disease|_RestDiseases], [Posterior|_RestPosteriors], Disease, Posterior).
120
- disease_posterior([_OtherDisease|RestDiseases], [_OtherPosterior|RestPosteriors], Disease, Posterior) :-
121
- disease_posterior(RestDiseases, RestPosteriors, Disease, Posterior).
122
-
123
- dot_product([], [], 0.0).
124
- dot_product([Left|RestLeft], [Right|RestRight], Sum) :-
125
- mul(Left, Right, Term),
126
- dot_product(RestLeft, RestRight, TailSum),
127
- add(Term, TailSum, Sum).
128
-
129
- expected_success(Therapy, ExpectedSuccess) :-
130
- posteriors(case, Posteriors),
131
- success_by_disease(Therapy, SuccessByDisease),
132
- dot_product(Posteriors, SuccessByDisease, ExpectedSuccess).
133
-
134
- utility(Therapy, Utility) :-
135
- expected_success(Therapy, ExpectedSuccess),
136
- adverse(Therapy, Adverse),
137
- benefit_weight(BenefitWeight),
138
- harm_weight(HarmWeight),
139
- mul(BenefitWeight, ExpectedSuccess, Benefit),
140
- mul(HarmWeight, Adverse, HarmCost),
141
- sub(Benefit, HarmCost, Utility).
142
-
143
- better_of(Therapy1, Therapy2, Therapy1) :-
144
- utility(Therapy1, Utility1),
145
- utility(Therapy2, Utility2),
146
- ge(Utility1, Utility2).
147
- better_of(Therapy1, Therapy2, Therapy2) :-
148
- utility(Therapy1, Utility1),
149
- utility(Therapy2, Utility2),
150
- lt(Utility1, Utility2).
151
-
152
- best_therapy([Therapy], Therapy).
153
- best_therapy([Head, Next|Rest], Best) :-
154
- best_therapy([Next|Rest], BestRest),
155
- better_of(Head, BestRest, Best).
156
-
157
- scores(case, Scores) :-
158
- diseases(case, Diseases),
159
- scores_for(Diseases, Scores).
160
- evidenceTotal(case, Total) :-
161
- scores(case, Scores),
162
- score_sum(Scores, Total).
163
- posteriors(case, Posteriors) :-
164
- scores(case, Scores),
165
- evidenceTotal(case, Total),
166
- normalize_scores(Scores, Total, Posteriors).
167
- posterior(Disease, Posterior) :-
168
- diseases(case, Diseases),
169
- posteriors(case, Posteriors),
170
- disease_posterior(Diseases, Posteriors, Disease, Posterior).
171
- expectedSuccess(Therapy, ExpectedSuccess) :-
172
- therapy(Therapy),
173
- expected_success(Therapy, ExpectedSuccess).
174
- expectedAdverse(Therapy, Adverse) :-
175
- therapy(Therapy),
176
- adverse(Therapy, Adverse).
177
- utility(Therapy, Utility) :-
178
- therapy(Therapy),
179
- utility(Therapy, Utility).
180
- recommendedTherapy(case, Best) :-
181
- therapies(case, Therapies),
182
- best_therapy(Therapies, Best).
@@ -1,50 +0,0 @@
1
- % Engineering example: cantilever beam tip deflection.
2
- %
3
- % The tip deflection for a point load at the free end is F*L^3/(3*E*I).
4
-
5
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
6
- materialize(type, 2).
7
- materialize(tipDeflection_m, 2).
8
- materialize(tipDeflection_mm, 2).
9
- materialize(limit_mm, 2).
10
- materialize(status, 2).
11
-
12
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
13
- beam(beam1, force_N, 1200.0).
14
- beam(beam1, length_m, 2.5).
15
- beam(beam1, elasticModulus_Pa, 200000000000.0).
16
- beam(beam1, secondMoment_m4, 0.000008).
17
- limit(beam1, maxDeflection_mm, 5.0).
18
-
19
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
20
- tip_deflection_m(Beam, Deflection) :-
21
- beam(Beam, force_N, Force),
22
- beam(Beam, length_m, Length),
23
- beam(Beam, elasticModulus_Pa, ElasticModulus),
24
- beam(Beam, secondMoment_m4, SecondMoment),
25
- pow(Length, 3.0, LengthCubed),
26
- mul(Force, LengthCubed, Numerator),
27
- mul(3.0, ElasticModulus, ThreeE),
28
- mul(ThreeE, SecondMoment, Denominator),
29
- div(Numerator, Denominator, Deflection).
30
-
31
- tip_deflection_mm(Beam, DeflectionMm) :-
32
- tip_deflection_m(Beam, DeflectionM),
33
- mul(DeflectionM, 1000.0, DeflectionMm).
34
-
35
- type(Beam, cantilever_beam) :-
36
- beam(Beam, force_N, _Force).
37
-
38
- tipDeflection_m(Beam, DeflectionM) :-
39
- tip_deflection_m(Beam, DeflectionM).
40
-
41
- tipDeflection_mm(Beam, DeflectionMm) :-
42
- tip_deflection_mm(Beam, DeflectionMm).
43
-
44
- limit_mm(Beam, Limit) :-
45
- limit(Beam, maxDeflection_mm, Limit).
46
-
47
- status(Beam, within_deflection_limit) :-
48
- tip_deflection_mm(Beam, DeflectionMm),
49
- limit(Beam, maxDeflection_mm, Limit),
50
- le(DeflectionMm, Limit).
@@ -1,75 +0,0 @@
1
- % Blocks-world planning without cut.
2
- %
3
- % A finite-depth planner searches for a five-move plan over five blocks. States
4
- % are sorted lists of on(Block, Support) facts so equality and visited-state
5
- % checks are purely structural.
6
-
7
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
8
- materialize(status, 2).
9
- materialize(plan, 2).
10
- materialize(finalState, 2).
11
- materialize(blockCount, 2).
12
-
13
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
14
- initial([on(a, table), on(b, a), on(c, b), on(d, c), on(e, d)]).
15
- goal([on(a, table), on(b, a), on(c, table), on(d, c), on(e, d)]).
16
-
17
- block(a).
18
- block(b).
19
- block(c).
20
- block(d).
21
- block(e).
22
-
23
- support(table, _State).
24
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
25
- support(Block, State) :-
26
- block(Block),
27
- member(on(Block, _Below), State).
28
-
29
- clear(Block, State) :-
30
- not(member(on(_Other, Block), State)).
31
-
32
- clear_support(table, _State).
33
- clear_support(Block, State) :-
34
- block(Block),
35
- clear(Block, State).
36
-
37
- move(State, move(Block, From, To), NewState) :-
38
- member(on(Block, From), State),
39
- clear(Block, State),
40
- support(To, State),
41
- clear_support(To, State),
42
- neq(Block, To),
43
- neq(From, To),
44
- select(on(Block, From), State, Rest),
45
- sort([on(Block, To)|Rest], NewState).
46
-
47
- plan(State, Goal, 0, _Visited, [], State) :-
48
- eq(State, Goal).
49
-
50
- plan(State, Goal, Depth, Visited, [Move|Moves], Final) :-
51
- gt(Depth, 0),
52
- move(State, Move, Next),
53
- not_member(Next, Visited),
54
- sub(Depth, 1, RestDepth),
55
- plan(Next, Goal, RestDepth, [Next|Visited], Moves, Final).
56
-
57
- five_move_plan(Moves, Final) :-
58
- initial(Start),
59
- goal(Goal),
60
- sort(Start, SortedStart),
61
- sort(Goal, SortedGoal),
62
- plan(SortedStart, SortedGoal, 5, [SortedStart], Moves, Final).
63
-
64
- status(blocks_world, planned) :-
65
- once(five_move_plan(_Moves, _Final)).
66
-
67
- plan(blocks_world, Moves) :-
68
- once(five_move_plan(Moves, _Final)).
69
-
70
- finalState(blocks_world, Final) :-
71
- once(five_move_plan(_Moves, Final)).
72
-
73
- blockCount(blocks_world, Count) :-
74
- findall(Block, block(Block), Blocks),
75
- length(Blocks, Count).
@@ -1,232 +0,0 @@
1
- % BMI — ARC-style Body Mass Index example adapted from Eyeling.
2
- %
3
- % The example normalizes metric or US inputs, computes BMI, assigns the WHO
4
- % adult category, derives a healthy-weight band for the same height, and emits
5
- % an inspectable report plus independent checks.
6
- %
7
- % For reproducibility and documentation only; not medical advice.
8
-
9
- % Editable metric input.
10
- % Output declarations: materialize/2 selects the relations written to this example's golden output.
11
- materialize(unitSystem, 2).
12
- materialize(weight, 2).
13
- materialize(height, 2).
14
- materialize(weightKg, 2).
15
- materialize(heightM, 2).
16
- materialize(units, 2).
17
- materialize(heightSquared, 2).
18
- materialize(bmi, 2).
19
- materialize(bmiRoundedInt, 2).
20
- materialize(healthyMinKg, 2).
21
- materialize(healthyMaxKg, 2).
22
- materialize(healthyMinKgRoundedInt, 2).
23
- materialize(healthyMaxKgRoundedInt, 2).
24
- materialize(category, 2).
25
- materialize(heightCm, 2).
26
- materialize(formula, 2).
27
- materialize(calculation, 2).
28
- materialize(categoryRule, 2).
29
- materialize(unitsExplanation, 2).
30
- materialize(c1, 2).
31
- materialize(c2, 2).
32
- materialize(c3, 2).
33
- materialize(c4, 2).
34
- materialize(c5, 2).
35
- materialize(c6, 2).
36
- materialize(c7, 2).
37
- materialize(c8, 2).
38
- materialize(c9, 2).
39
- materialize(result, 2).
40
- materialize(healthyWeightRangeKg, 2).
41
- materialize(checkPassed, 2).
42
-
43
- % Program structure: facts set up the scenario, and rules derive the materialized conclusions.
44
- unitSystem(input, metric).
45
- weight(input, 72.0).
46
- height(input, 178.0).
47
-
48
- % US alternative:
49
- % unitSystem(input, us).
50
- % weight(input, 158.73).
51
- % height(input, 70.08).
52
-
53
- % Normalization and BMI calculation.
54
- % Derivation rules: each rule below contributes one logical step toward the displayed results.
55
- weightKg(case, W) :-
56
- unitSystem(input, metric),
57
- weight(input, W).
58
-
59
- heightM(case, M) :-
60
- unitSystem(input, metric),
61
- height(input, H),
62
- div(H, 100.0, M).
63
-
64
- units(reason, "Inputs were already metric, so kilograms stay kilograms and centimeters are divided by 100 to obtain meters.") :-
65
- unitSystem(input, metric).
66
-
67
- weightKg(case, Kg) :-
68
- unitSystem(input, us),
69
- weight(input, W),
70
- mul(W, 0.45359237, Kg).
71
-
72
- heightM(case, M) :-
73
- unitSystem(input, us),
74
- height(input, H),
75
- mul(H, 0.0254, M).
76
-
77
- units(reason, "US inputs were converted to SI units: pounds to kilograms and inches to meters.") :-
78
- unitSystem(input, us).
79
-
80
- heightSquared(case, M2) :-
81
- heightM(case, M),
82
- mul(M, M, M2).
83
-
84
- bmi(case, Bmi) :-
85
- weightKg(case, Kg),
86
- heightSquared(case, M2),
87
- div(Kg, M2, Bmi).
88
-
89
- bmiRoundedInt(case, BmiRoundedInt) :-
90
- bmi(case, Bmi),
91
- mul(Bmi, 100.0, BmiX100),
92
- rounded(BmiX100, BmiRoundedInt).
93
-
94
- healthyMinKg(case, HealthyMin) :-
95
- heightSquared(case, M2),
96
- mul(18.5, M2, HealthyMin).
97
-
98
- healthyMaxKg(case, HealthyMax) :-
99
- heightSquared(case, M2),
100
- mul(24.9, M2, HealthyMax).
101
-
102
- healthyMinKgRoundedInt(case, MinRoundedInt) :-
103
- healthyMinKg(case, HealthyMin),
104
- mul(HealthyMin, 10.0, MinX10),
105
- rounded(MinX10, MinRoundedInt).
106
-
107
- healthyMaxKgRoundedInt(case, MaxRoundedInt) :-
108
- healthyMaxKg(case, HealthyMax),
109
- mul(HealthyMax, 10.0, MaxX10),
110
- rounded(MaxX10, MaxRoundedInt).
111
-
112
- % WHO adult categories, using half-open intervals.
113
- category(decision, "Underweight") :-
114
- bmi(case, Bmi),
115
- lt(Bmi, 18.5).
116
-
117
- category(decision, "Normal") :-
118
- bmi(case, Bmi),
119
- ge(Bmi, 18.5),
120
- lt(Bmi, 25.0).
121
-
122
- category(decision, "Overweight") :-
123
- bmi(case, Bmi),
124
- ge(Bmi, 25.0),
125
- lt(Bmi, 30.0).
126
-
127
- category(decision, "Obesity I") :-
128
- bmi(case, Bmi),
129
- ge(Bmi, 30.0),
130
- lt(Bmi, 35.0).
131
-
132
- category(decision, "Obesity II") :-
133
- bmi(case, Bmi),
134
- ge(Bmi, 35.0),
135
- lt(Bmi, 40.0).
136
-
137
- category(decision, "Obesity III") :-
138
- bmi(case, Bmi),
139
- ge(Bmi, 40.0).
140
-
141
- % Answer and reason why.
142
- bmi(answer, 22.72) :-
143
- bmiRoundedInt(case, 2272).
144
-
145
- category(answer, Category) :-
146
- category(decision, Category).
147
-
148
- healthyMinKg(answer, 58.6) :-
149
- healthyMinKgRoundedInt(case, 586).
150
-
151
- healthyMaxKg(answer, 78.9) :-
152
- healthyMaxKgRoundedInt(case, 789).
153
-
154
- heightCm(answer, CmRounded) :-
155
- heightM(case, M),
156
- mul(M, 100.0, Cm),
157
- rounded(Cm, CmRounded).
158
-
159
- formula(reason, "BMI is defined as weight in kilograms divided by height in meters squared.") :-
160
- bmi(case, _Bmi).
161
-
162
- calculation(reason, "The normalized weight and height were used to compute BMI, then the result was mapped to the WHO adult category table.") :-
163
- category(decision, _Category).
164
-
165
- categoryRule(reason, Category) :-
166
- category(decision, Category).
167
-
168
- unitsExplanation(reason, Units) :-
169
- units(reason, Units).
170
-
171
- % Independent checks.
172
- c1(check, "OK - the input was normalized into positive SI values.") :-
173
- weightKg(case, Kg),
174
- heightM(case, M),
175
- gt(Kg, 0),
176
- gt(M, 0).
177
-
178
- c2(check, "OK - height squared was reconstructed from the normalized height.") :-
179
- heightM(case, M),
180
- heightSquared(case, M2),
181
- mul(M, M, M2).
182
-
183
- c3(check, "OK - the BMI value matches the BMI = kg / m² formula.") :-
184
- weightKg(case, Kg),
185
- heightSquared(case, M2),
186
- bmi(case, Bmi),
187
- div(Kg, M2, Bmi).
188
-
189
- c4(check, "OK - a BMI of 18.49 stays below the normal-weight threshold.") :-
190
- lt(18.49, 18.5).
191
-
192
- c5(check, "OK - the lower boundary is half-open: BMI 18.5 is classified as Normal.") :-
193
- ge(18.5, 18.5),
194
- lt(18.5, 25.0).
195
-
196
- c6(check, "OK - BMI 25.0 starts the Overweight category.") :-
197
- ge(25.0, 25.0),
198
- lt(25.0, 30.0).
199
-
200
- c7(check, "OK - BMI 30.0 starts the Obesity I category.") :-
201
- ge(30.0, 30.0),
202
- lt(30.0, 35.0).
203
-
204
- c8(check, "OK - classification behavior is monotonic across representative BMI values.") :-
205
- ge(22.0, 18.5),
206
- lt(22.0, 25.0),
207
- ge(27.0, 25.0),
208
- lt(27.0, 30.0),
209
- ge(41.0, 40.0).
210
-
211
- c9(check, "OK - the healthy-weight band was reconstructed from BMI 18.5 to 24.9 at the same height.") :-
212
- heightSquared(case, M2),
213
- healthyMinKg(case, Min),
214
- healthyMaxKg(case, Max),
215
- mul(18.5, M2, Min),
216
- mul(24.9, M2, Max).
217
-
218
- % Derived report summary. These relations are consequences of the calculation
219
- % and checks, not pre-written report lines.
220
- result(report, bmi(Bmi, Category)) :-
221
- bmi(answer, Bmi),
222
- category(answer, Category).
223
-
224
- healthyWeightRangeKg(report, range(Min, Max)) :-
225
- healthyMinKg(answer, Min),
226
- healthyMaxKg(answer, Max).
227
-
228
- heightCm(report, Height) :-
229
- heightCm(answer, Height).
230
-
231
- checkPassed(report, Check) :-
232
- statement(check, Check, _Message).