eyeling 1.34.4 → 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 (555) 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/eyelang/conformance/README.md +9 -11
  11. package/test/eyelang/conformance/cases/001_fact_output.pl +4 -0
  12. package/test/eyelang/conformance/cases/002_rule_recursion.pl +7 -0
  13. package/test/eyelang/conformance/cases/002_rule_recursion.query +1 -0
  14. package/test/eyelang/conformance/cases/003_terms_and_readback.pl +16 -0
  15. package/test/eyelang/conformance/cases/003_terms_and_readback.query +1 -0
  16. package/test/eyelang/conformance/cases/004_conjunction_and_parentheses.pl +5 -0
  17. package/test/eyelang/conformance/cases/004_conjunction_and_parentheses.query +1 -0
  18. package/test/eyelang/conformance/cases/005_list_deconstruction.pl +6 -0
  19. package/test/eyelang/conformance/cases/005_list_deconstruction.query +1 -0
  20. package/test/eyelang/conformance/cases/006_comma_formula_data.pl +4 -0
  21. package/test/eyelang/conformance/cases/006_comma_formula_data.query +1 -0
  22. package/test/eyelang/conformance/cases/007_anonymous_variables.pl +5 -0
  23. package/test/eyelang/conformance/cases/007_anonymous_variables.query +1 -0
  24. package/test/eyelang/conformance/cases/008_graphic_atoms.pl +6 -0
  25. package/test/eyelang/conformance/cases/008_graphic_atoms.query +1 -0
  26. package/test/eyelang/conformance/cases/009_comments_and_whitespace.pl +5 -0
  27. package/test/eyelang/conformance/cases/009_comments_and_whitespace.query +1 -0
  28. package/test/eyelang/conformance/cases/010_variable_scope_and_reuse.pl +8 -0
  29. package/test/eyelang/conformance/cases/010_variable_scope_and_reuse.query +1 -0
  30. package/test/eyelang/conformance/cases/011_predicate_arity.pl +6 -0
  31. package/test/eyelang/conformance/cases/011_predicate_arity.query +1 -0
  32. package/test/eyelang/conformance/cases/012_nested_compound_unification.pl +5 -0
  33. package/test/eyelang/conformance/cases/012_nested_compound_unification.query +1 -0
  34. package/test/eyelang/conformance/cases/013_multiple_clauses_order.pl +6 -0
  35. package/test/eyelang/conformance/cases/013_multiple_clauses_order.query +1 -0
  36. package/test/eyelang/conformance/cases/014_failure_filters_answers.pl +7 -0
  37. package/test/eyelang/conformance/cases/014_failure_filters_answers.query +1 -0
  38. package/test/eyelang/conformance/cases/015_improper_list_unification.pl +6 -0
  39. package/test/eyelang/conformance/cases/015_improper_list_unification.query +1 -0
  40. package/test/eyelang/conformance/cases/016_zero_arity_compound.pl +4 -0
  41. package/test/eyelang/conformance/cases/016_zero_arity_compound.query +1 -0
  42. package/test/eyelang/conformance/cases/017_three_step_recursion.pl +8 -0
  43. package/test/eyelang/conformance/cases/017_three_step_recursion.query +1 -0
  44. package/test/eyelang/conformance/cases/018_quoted_atom_readback.pl +6 -0
  45. package/test/eyelang/conformance/cases/018_quoted_atom_readback.query +1 -0
  46. package/test/eyelang/conformance/cases/019_parenthesized_three_conjuncts.pl +7 -0
  47. package/test/eyelang/conformance/cases/019_parenthesized_three_conjuncts.query +1 -0
  48. package/test/eyelang/conformance/cases/020_nested_list_terms.pl +5 -0
  49. package/test/eyelang/conformance/cases/020_nested_list_terms.query +1 -0
  50. package/test/eyelang/conformance/cases/021_repeated_variable_head.pl +7 -0
  51. package/test/eyelang/conformance/cases/022_rule_head_structure.pl +5 -0
  52. package/test/eyelang/conformance/cases/023_quoted_escapes_readback.pl +5 -0
  53. package/test/eyelang/conformance/cases/024_numeric_literal_readback.pl +6 -0
  54. package/test/eyelang/conformance/cases/025_body_parentheses_with_formula_data.pl +5 -0
  55. package/test/eyelang/conformance/cases/026_underscore_named_variable_reuse.pl +5 -0
  56. package/test/eyelang/conformance/cases/027_default_derived_output.pl +5 -0
  57. package/test/eyelang/conformance/cases/028_materialize_focus.pl +5 -0
  58. package/test/eyelang/conformance/cases/029_arithmetic_and_comparison.pl +11 -0
  59. package/test/eyelang/conformance/cases/029_arithmetic_and_comparison.query +1 -0
  60. package/test/eyelang/conformance/cases/030_strings_and_atoms.pl +4 -0
  61. package/test/eyelang/conformance/cases/030_strings_and_atoms.query +1 -0
  62. package/test/eyelang/conformance/cases/031_lists_aggregation_ordering.pl +10 -0
  63. package/test/eyelang/conformance/cases/031_lists_aggregation_ordering.query +1 -0
  64. package/test/eyelang/conformance/cases/032_holds_parts.pl +4 -0
  65. package/test/eyelang/conformance/cases/033_negation_once_generators.pl +7 -0
  66. package/test/eyelang/conformance/cases/033_negation_once_generators.query +1 -0
  67. package/test/eyelang/conformance/cases/034_equality_and_inequality.pl +6 -0
  68. package/test/eyelang/conformance/cases/034_equality_and_inequality.query +1 -0
  69. package/test/eyelang/conformance/cases/035_list_relations.pl +5 -0
  70. package/test/eyelang/conformance/cases/035_list_relations.query +1 -0
  71. package/test/eyelang/conformance/cases/036_append_splits.pl +3 -0
  72. package/test/eyelang/conformance/cases/036_append_splits.query +1 -0
  73. package/test/eyelang/conformance/cases/037_matching_and_comparison.pl +7 -0
  74. package/test/eyelang/conformance/cases/037_matching_and_comparison.query +1 -0
  75. package/test/eyelang/conformance/cases/038_memoize_declaration.pl +8 -0
  76. package/test/eyelang/conformance/cases/038_memoize_declaration.query +1 -0
  77. package/test/eyelang/conformance/cases/039_numeric_functions.pl +9 -0
  78. package/test/eyelang/conformance/cases/039_numeric_functions.query +1 -0
  79. package/test/eyelang/conformance/cases/040_between_enumeration.pl +3 -0
  80. package/test/eyelang/conformance/cases/040_between_enumeration.query +1 -0
  81. package/test/eyelang/conformance/cases/041_smallest_divisor.pl +3 -0
  82. package/test/eyelang/conformance/cases/041_smallest_divisor.query +1 -0
  83. package/test/eyelang/conformance/cases/042_negation_filter.pl +7 -0
  84. package/test/eyelang/conformance/cases/042_negation_filter.query +1 -0
  85. package/test/eyelang/conformance/cases/043_once_user_predicate.pl +5 -0
  86. package/test/eyelang/conformance/cases/043_once_user_predicate.query +1 -0
  87. package/test/eyelang/conformance/cases/044_findall_user_goal.pl +6 -0
  88. package/test/eyelang/conformance/cases/044_findall_user_goal.query +1 -0
  89. package/test/eyelang/conformance/cases/045_sort_deduplicates_atoms.pl +3 -0
  90. package/test/eyelang/conformance/cases/045_sort_deduplicates_atoms.query +1 -0
  91. package/test/eyelang/conformance/cases/046_append_bound_prefix_suffix.pl +4 -0
  92. package/test/eyelang/conformance/cases/046_append_bound_prefix_suffix.query +1 -0
  93. package/test/eyelang/conformance/cases/047_nth0_index_generation.pl +3 -0
  94. package/test/eyelang/conformance/cases/047_nth0_index_generation.query +1 -0
  95. package/test/eyelang/conformance/cases/048_set_nth0_edges.pl +4 -0
  96. package/test/eyelang/conformance/cases/048_set_nth0_edges.query +1 -0
  97. package/test/eyelang/conformance/cases/049_select_duplicate_occurrences.pl +3 -0
  98. package/test/eyelang/conformance/cases/049_select_duplicate_occurrences.query +1 -0
  99. package/test/eyelang/conformance/cases/050_not_member_filter.pl +6 -0
  100. package/test/eyelang/conformance/cases/050_not_member_filter.query +1 -0
  101. package/test/eyelang/conformance/cases/051_nested_holds_parts.pl +4 -0
  102. package/test/eyelang/conformance/cases/052_holds_member.pl +3 -0
  103. package/test/eyelang/conformance/cases/053_materialize_excludes_source_fact.pl +6 -0
  104. package/test/eyelang/conformance/cases/054_numeric_and_lexical_comparison.pl +5 -0
  105. package/test/eyelang/conformance/cases/054_numeric_and_lexical_comparison.query +1 -0
  106. package/test/eyelang/conformance/cases/055_string_matching_filters.pl +6 -0
  107. package/test/eyelang/conformance/cases/055_string_matching_filters.query +1 -0
  108. package/test/eyelang/conformance/cases/056_string_and_atom_concat.pl +3 -0
  109. package/test/eyelang/conformance/cases/056_string_and_atom_concat.query +1 -0
  110. package/test/eyelang/conformance/cases/057_countall_empty_and_nonempty.pl +4 -0
  111. package/test/eyelang/conformance/cases/057_countall_empty_and_nonempty.query +1 -0
  112. package/test/eyelang/conformance/cases/058_sumall_numeric_template.pl +5 -0
  113. package/test/eyelang/conformance/cases/058_sumall_numeric_template.query +1 -0
  114. package/test/eyelang/conformance/cases/059_aggregate_min_template.pl +5 -0
  115. package/test/eyelang/conformance/cases/059_aggregate_min_template.query +1 -0
  116. package/test/eyelang/conformance/cases/060_aggregate_max_compound_key.pl +5 -0
  117. package/test/eyelang/conformance/cases/060_aggregate_max_compound_key.query +1 -0
  118. package/test/eyelang/conformance/cases/061_date_difference.pl +4 -0
  119. package/test/eyelang/conformance/cases/062_reusable_numeric_builtins.pl +10 -0
  120. package/test/eyelang/conformance/cases/063_reusable_list_builtins.pl +11 -0
  121. package/test/eyelang/conformance/cases/064_reusable_string_builtins.pl +12 -0
  122. package/test/eyelang/conformance/cases/065_reusable_term_control_builtins.pl +11 -0
  123. package/test/eyelang/conformance/cases/066_numeric_edges.pl +14 -0
  124. package/test/eyelang/conformance/cases/067_list_edges.pl +10 -0
  125. package/test/eyelang/conformance/cases/068_list_generation_order.pl +7 -0
  126. package/test/eyelang/conformance/cases/069_list_summaries_and_sets.pl +9 -0
  127. package/test/eyelang/conformance/cases/070_matches_named_captures.pl +13 -0
  128. package/test/eyelang/conformance/cases/071_string_edges.pl +10 -0
  129. package/test/eyelang/conformance/cases/072_string_conversions.pl +10 -0
  130. package/test/eyelang/conformance/cases/073_term_introspection_edges.pl +10 -0
  131. package/test/eyelang/conformance/cases/074_forall_edges.pl +10 -0
  132. package/test/eyelang/conformance/cases/075_aggregation_edges.pl +12 -0
  133. package/test/eyelang/conformance/cases/076_composed_reusable_builtins.pl +8 -0
  134. package/test/eyelang/conformance/cases/077_recursive_path_with_lists.pl +10 -0
  135. package/test/eyelang/conformance/cases/078_mutual_recursion_with_arithmetic.pl +7 -0
  136. package/test/eyelang/conformance/cases/079_big_integer_arithmetic.pl +8 -0
  137. package/test/eyelang/conformance/cases/080_rounding_modes.pl +10 -0
  138. package/test/eyelang/conformance/cases/081_zero_safe_numeric_functions.pl +9 -0
  139. package/test/eyelang/conformance/cases/082_comparison_semantics.pl +10 -0
  140. package/test/eyelang/conformance/cases/083_between_modes_and_empty_ranges.pl +8 -0
  141. package/test/eyelang/conformance/cases/084_append_and_select_composition.pl +7 -0
  142. package/test/eyelang/conformance/cases/085_nth_and_update_edges.pl +8 -0
  143. package/test/eyelang/conformance/cases/086_slicing_pipeline.pl +10 -0
  144. package/test/eyelang/conformance/cases/087_sort_reverse_length.pl +8 -0
  145. package/test/eyelang/conformance/cases/088_list_summaries_failures.pl +8 -0
  146. package/test/eyelang/conformance/cases/089_string_split_join_pipeline.pl +7 -0
  147. package/test/eyelang/conformance/cases/090_string_substring_replace_edges.pl +9 -0
  148. package/test/eyelang/conformance/cases/091_string_case_and_trim.pl +7 -0
  149. package/test/eyelang/conformance/cases/092_scalar_string_conversions.pl +9 -0
  150. package/test/eyelang/conformance/cases/093_regex_named_captures_context.pl +8 -0
  151. package/test/eyelang/conformance/cases/094_context_holds_enumeration.pl +7 -0
  152. package/test/eyelang/conformance/cases/095_term_introspection_roundtrip.pl +8 -0
  153. package/test/eyelang/conformance/cases/096_functor_scalar_edges.pl +8 -0
  154. package/test/eyelang/conformance/cases/097_control_negation_once_forall.pl +13 -0
  155. package/test/eyelang/conformance/cases/098_aggregation_nested_templates.pl +11 -0
  156. package/test/eyelang/conformance/cases/099_materialize_multiple_arities.pl +8 -0
  157. package/test/eyelang/conformance/cases/100_reusable_builtin_workflow.pl +10 -0
  158. package/test/eyelang/conformance/expected/001_fact_output.pl +1 -0
  159. package/test/eyelang/conformance/expected/002_rule_recursion.pl +2 -0
  160. package/test/eyelang/conformance/expected/003_terms_and_readback.pl +13 -0
  161. package/test/eyelang/conformance/expected/004_conjunction_and_parentheses.pl +1 -0
  162. package/test/eyelang/conformance/expected/005_list_deconstruction.pl +2 -0
  163. package/test/eyelang/conformance/expected/006_comma_formula_data.pl +1 -0
  164. package/test/eyelang/conformance/expected/007_anonymous_variables.pl +1 -0
  165. package/test/eyelang/conformance/expected/008_graphic_atoms.pl +3 -0
  166. package/test/eyelang/conformance/expected/009_comments_and_whitespace.pl +2 -0
  167. package/test/eyelang/conformance/expected/010_variable_scope_and_reuse.pl +2 -0
  168. package/test/eyelang/conformance/expected/011_predicate_arity.pl +2 -0
  169. package/test/eyelang/conformance/expected/012_nested_compound_unification.pl +2 -0
  170. package/test/eyelang/conformance/expected/013_multiple_clauses_order.pl +2 -0
  171. package/test/eyelang/conformance/expected/014_failure_filters_answers.pl +1 -0
  172. package/test/eyelang/conformance/expected/015_improper_list_unification.pl +3 -0
  173. package/test/eyelang/conformance/expected/016_zero_arity_compound.pl +1 -0
  174. package/test/eyelang/conformance/expected/017_three_step_recursion.pl +3 -0
  175. package/test/eyelang/conformance/expected/018_quoted_atom_readback.pl +3 -0
  176. package/test/eyelang/conformance/expected/019_parenthesized_three_conjuncts.pl +1 -0
  177. package/test/eyelang/conformance/expected/020_nested_list_terms.pl +2 -0
  178. package/test/eyelang/conformance/expected/021_repeated_variable_head.pl +2 -0
  179. package/test/eyelang/conformance/expected/022_rule_head_structure.pl +2 -0
  180. package/test/eyelang/conformance/expected/023_quoted_escapes_readback.pl +2 -0
  181. package/test/eyelang/conformance/expected/024_numeric_literal_readback.pl +3 -0
  182. package/test/eyelang/conformance/expected/025_body_parentheses_with_formula_data.pl +1 -0
  183. package/test/eyelang/conformance/expected/026_underscore_named_variable_reuse.pl +1 -0
  184. package/test/eyelang/conformance/expected/028_materialize_focus.pl +1 -0
  185. package/test/eyelang/conformance/expected/029_arithmetic_and_comparison.pl +9 -0
  186. package/test/eyelang/conformance/expected/030_strings_and_atoms.pl +2 -0
  187. package/test/eyelang/conformance/expected/031_lists_aggregation_ordering.pl +9 -0
  188. package/test/eyelang/conformance/expected/032_holds_parts.pl +3 -0
  189. package/test/eyelang/conformance/expected/033_negation_once_generators.pl +2 -0
  190. package/test/eyelang/conformance/expected/034_equality_and_inequality.pl +4 -0
  191. package/test/eyelang/conformance/expected/035_list_relations.pl +4 -0
  192. package/test/eyelang/conformance/expected/036_append_splits.pl +3 -0
  193. package/test/eyelang/conformance/expected/037_matching_and_comparison.pl +5 -0
  194. package/test/eyelang/conformance/expected/038_memoize_declaration.pl +2 -0
  195. package/test/eyelang/conformance/expected/039_numeric_functions.pl +7 -0
  196. package/test/eyelang/conformance/expected/040_between_enumeration.pl +3 -0
  197. package/test/eyelang/conformance/expected/041_smallest_divisor.pl +1 -0
  198. package/test/eyelang/conformance/expected/042_negation_filter.pl +2 -0
  199. package/test/eyelang/conformance/expected/043_once_user_predicate.pl +1 -0
  200. package/test/eyelang/conformance/expected/044_findall_user_goal.pl +1 -0
  201. package/test/eyelang/conformance/expected/045_sort_deduplicates_atoms.pl +1 -0
  202. package/test/eyelang/conformance/expected/046_append_bound_prefix_suffix.pl +2 -0
  203. package/test/eyelang/conformance/expected/047_nth0_index_generation.pl +1 -0
  204. package/test/eyelang/conformance/expected/048_set_nth0_edges.pl +2 -0
  205. package/test/eyelang/conformance/expected/049_select_duplicate_occurrences.pl +2 -0
  206. package/test/eyelang/conformance/expected/050_not_member_filter.pl +1 -0
  207. package/test/eyelang/conformance/expected/051_nested_holds_parts.pl +3 -0
  208. package/test/eyelang/conformance/expected/052_holds_member.pl +2 -0
  209. package/test/eyelang/conformance/expected/053_materialize_excludes_source_fact.pl +1 -0
  210. package/test/eyelang/conformance/expected/054_numeric_and_lexical_comparison.pl +3 -0
  211. package/test/eyelang/conformance/expected/055_string_matching_filters.pl +2 -0
  212. package/test/eyelang/conformance/expected/056_string_and_atom_concat.pl +1 -0
  213. package/test/eyelang/conformance/expected/057_countall_empty_and_nonempty.pl +1 -0
  214. package/test/eyelang/conformance/expected/058_sumall_numeric_template.pl +1 -0
  215. package/test/eyelang/conformance/expected/059_aggregate_min_template.pl +1 -0
  216. package/test/eyelang/conformance/expected/060_aggregate_max_compound_key.pl +1 -0
  217. package/test/eyelang/conformance/expected/061_date_difference.pl +2 -0
  218. package/test/eyelang/conformance/expected/062_reusable_numeric_builtins.pl +8 -0
  219. package/test/eyelang/conformance/expected/063_reusable_list_builtins.pl +9 -0
  220. package/test/eyelang/conformance/expected/064_reusable_string_builtins.pl +10 -0
  221. package/test/eyelang/conformance/expected/065_reusable_term_control_builtins.pl +6 -0
  222. package/test/eyelang/conformance/expected/066_numeric_edges.pl +12 -0
  223. package/test/eyelang/conformance/expected/067_list_edges.pl +8 -0
  224. package/test/eyelang/conformance/expected/068_list_generation_order.pl +10 -0
  225. package/test/eyelang/conformance/expected/069_list_summaries_and_sets.pl +7 -0
  226. package/test/eyelang/conformance/expected/070_matches_named_captures.pl +1 -0
  227. package/test/eyelang/conformance/expected/071_string_edges.pl +8 -0
  228. package/test/eyelang/conformance/expected/072_string_conversions.pl +8 -0
  229. package/test/eyelang/conformance/expected/073_term_introspection_edges.pl +8 -0
  230. package/test/eyelang/conformance/expected/074_forall_edges.pl +5 -0
  231. package/test/eyelang/conformance/expected/075_aggregation_edges.pl +7 -0
  232. package/test/eyelang/conformance/expected/076_composed_reusable_builtins.pl +5 -0
  233. package/test/eyelang/conformance/expected/077_recursive_path_with_lists.pl +3 -0
  234. package/test/eyelang/conformance/expected/078_mutual_recursion_with_arithmetic.pl +7 -0
  235. package/test/eyelang/conformance/expected/079_big_integer_arithmetic.pl +6 -0
  236. package/test/eyelang/conformance/expected/080_rounding_modes.pl +8 -0
  237. package/test/eyelang/conformance/expected/081_zero_safe_numeric_functions.pl +7 -0
  238. package/test/eyelang/conformance/expected/082_comparison_semantics.pl +8 -0
  239. package/test/eyelang/conformance/expected/083_between_modes_and_empty_ranges.pl +8 -0
  240. package/test/eyelang/conformance/expected/084_append_and_select_composition.pl +10 -0
  241. package/test/eyelang/conformance/expected/085_nth_and_update_edges.pl +8 -0
  242. package/test/eyelang/conformance/expected/086_slicing_pipeline.pl +7 -0
  243. package/test/eyelang/conformance/expected/087_sort_reverse_length.pl +6 -0
  244. package/test/eyelang/conformance/expected/088_list_summaries_failures.pl +6 -0
  245. package/test/eyelang/conformance/expected/089_string_split_join_pipeline.pl +4 -0
  246. package/test/eyelang/conformance/expected/090_string_substring_replace_edges.pl +7 -0
  247. package/test/eyelang/conformance/expected/091_string_case_and_trim.pl +5 -0
  248. package/test/eyelang/conformance/expected/092_scalar_string_conversions.pl +7 -0
  249. package/test/eyelang/conformance/expected/093_regex_named_captures_context.pl +5 -0
  250. package/test/eyelang/conformance/expected/094_context_holds_enumeration.pl +8 -0
  251. package/test/eyelang/conformance/expected/095_term_introspection_roundtrip.pl +6 -0
  252. package/test/eyelang/conformance/expected/096_functor_scalar_edges.pl +6 -0
  253. package/test/eyelang/conformance/expected/097_control_negation_once_forall.pl +5 -0
  254. package/test/eyelang/conformance/expected/098_aggregation_nested_templates.pl +5 -0
  255. package/test/eyelang/conformance/expected/099_materialize_multiple_arities.pl +4 -0
  256. package/test/eyelang/conformance/expected/100_reusable_builtin_workflow.pl +6 -0
  257. package/test/eyelang/run-conformance.mjs +20 -22
  258. package/test/packlist.test.js +0 -2
  259. package/test/run.js +0 -2
  260. package/docs/eyelang-guide.md +0 -535
  261. package/docs/eyelang-language-reference.md +0 -712
  262. package/examples/eyelang/access-control-policy.pl +0 -52
  263. package/examples/eyelang/ackermann.pl +0 -46
  264. package/examples/eyelang/age.pl +0 -28
  265. package/examples/eyelang/aliases-and-namespaces.pl +0 -22
  266. package/examples/eyelang/alignment-demo.pl +0 -44
  267. package/examples/eyelang/allen-interval-calculus.pl +0 -64
  268. package/examples/eyelang/ancestor.pl +0 -21
  269. package/examples/eyelang/animal.pl +0 -21
  270. package/examples/eyelang/annotation.pl +0 -34
  271. package/examples/eyelang/auroracare.pl +0 -309
  272. package/examples/eyelang/backward.pl +0 -12
  273. package/examples/eyelang/basic-monadic.pl +0 -10032
  274. package/examples/eyelang/bayes-diagnosis.pl +0 -108
  275. package/examples/eyelang/bayes-therapy.pl +0 -182
  276. package/examples/eyelang/beam-deflection.pl +0 -50
  277. package/examples/eyelang/blocks-world-planning.pl +0 -75
  278. package/examples/eyelang/bmi.pl +0 -232
  279. package/examples/eyelang/braking-safety-worlds.pl +0 -69
  280. package/examples/eyelang/buck-converter-design.pl +0 -78
  281. package/examples/eyelang/cache-performance.pl +0 -54
  282. package/examples/eyelang/canary-release.pl +0 -49
  283. package/examples/eyelang/cat-koko.pl +0 -24
  284. package/examples/eyelang/clinical-trial-screening.pl +0 -92
  285. package/examples/eyelang/combinatorics-findall-sort.pl +0 -37
  286. package/examples/eyelang/competitive-enzyme-kinetics.pl +0 -78
  287. package/examples/eyelang/complex.pl +0 -121
  288. package/examples/eyelang/composition-of-injective-functions-is-injective.pl +0 -50
  289. package/examples/eyelang/context-association.pl +0 -53
  290. package/examples/eyelang/context-schema-audit.pl +0 -46
  291. package/examples/eyelang/control-system.pl +0 -72
  292. package/examples/eyelang/cyclic-path.pl +0 -16
  293. package/examples/eyelang/d3-group.pl +0 -100
  294. package/examples/eyelang/dairy-energy-balance.pl +0 -65
  295. package/examples/eyelang/data-negotiation.pl +0 -39
  296. package/examples/eyelang/deep-taxonomy-10.pl +0 -115
  297. package/examples/eyelang/deep-taxonomy-100.pl +0 -385
  298. package/examples/eyelang/deep-taxonomy-1000.pl +0 -3085
  299. package/examples/eyelang/deep-taxonomy-10000.pl +0 -30094
  300. package/examples/eyelang/deep-taxonomy-100000.pl +0 -300184
  301. package/examples/eyelang/delfour.pl +0 -281
  302. package/examples/eyelang/deontic-logic.pl +0 -52
  303. package/examples/eyelang/derived-backward-rule.pl +0 -30
  304. package/examples/eyelang/derived-rule.pl +0 -27
  305. package/examples/eyelang/diamond-property.pl +0 -38
  306. package/examples/eyelang/dijkstra-findall-sort.pl +0 -44
  307. package/examples/eyelang/dijkstra-risk-path.pl +0 -86
  308. package/examples/eyelang/dijkstra.pl +0 -46
  309. package/examples/eyelang/dining-philosophers.pl +0 -140
  310. package/examples/eyelang/dog.pl +0 -25
  311. package/examples/eyelang/dpv-odrl-purpose-mapping.pl +0 -46
  312. package/examples/eyelang/drone-corridor-planner.pl +0 -51
  313. package/examples/eyelang/easter-computus.pl +0 -89
  314. package/examples/eyelang/electrical-rc-filter.pl +0 -36
  315. package/examples/eyelang/epidemic-policy.pl +0 -67
  316. package/examples/eyelang/equivalence-classes-overlap-implies-same-class.pl +0 -27
  317. package/examples/eyelang/eulerian-path.pl +0 -85
  318. package/examples/eyelang/ev-range-worlds.pl +0 -82
  319. package/examples/eyelang/existential-rule.pl +0 -18
  320. package/examples/eyelang/exoplanet-validation-worlds.pl +0 -88
  321. package/examples/eyelang/expression-eval.pl +0 -43
  322. package/examples/eyelang/family-cousins.pl +0 -65
  323. package/examples/eyelang/fastpow.pl +0 -53
  324. package/examples/eyelang/fft8-numeric.pl +0 -83
  325. package/examples/eyelang/fibonacci.pl +0 -53
  326. package/examples/eyelang/field-nitrogen-balance.pl +0 -70
  327. package/examples/eyelang/flandor.pl +0 -296
  328. package/examples/eyelang/floating-point.pl +0 -23
  329. package/examples/eyelang/four-color-map.pl +0 -127
  330. package/examples/eyelang/fundamental-theorem-arithmetic.pl +0 -113
  331. package/examples/eyelang/gd-step-certified.pl +0 -158
  332. package/examples/eyelang/gdpr-compliance.pl +0 -69
  333. package/examples/eyelang/good-cobbler.pl +0 -14
  334. package/examples/eyelang/gps.pl +0 -152
  335. package/examples/eyelang/graph-reachability.pl +0 -36
  336. package/examples/eyelang/gray-code-counter.pl +0 -48
  337. package/examples/eyelang/greatest-lower-bound-uniqueness.pl +0 -28
  338. package/examples/eyelang/group-inverse-uniqueness.pl +0 -34
  339. package/examples/eyelang/hamiltonian-path.pl +0 -49
  340. package/examples/eyelang/hamming-code.pl +0 -105
  341. package/examples/eyelang/hanoi.pl +0 -20
  342. package/examples/eyelang/heat-loss.pl +0 -51
  343. package/examples/eyelang/heron-theorem.pl +0 -36
  344. package/examples/eyelang/ideal-gas-law.pl +0 -37
  345. package/examples/eyelang/illegitimate-reasoning.pl +0 -88
  346. package/examples/eyelang/knowledge-engineering-alignment-flow.pl +0 -40
  347. package/examples/eyelang/law-of-cosines.pl +0 -31
  348. package/examples/eyelang/least-squares-regression.pl +0 -81
  349. package/examples/eyelang/list-collection.pl +0 -33
  350. package/examples/eyelang/lldm.pl +0 -78
  351. package/examples/eyelang/manufacturing-quality-control.pl +0 -73
  352. package/examples/eyelang/microgrid-dispatch.pl +0 -85
  353. package/examples/eyelang/monkey-bananas.pl +0 -45
  354. package/examples/eyelang/network-sla.pl +0 -48
  355. package/examples/eyelang/newton-raphson.pl +0 -49
  356. package/examples/eyelang/nixon-diamond.pl +0 -37
  357. package/examples/eyelang/observability-log-correlation.pl +0 -34
  358. package/examples/eyelang/odrl-dpv-fpv-trust-flow.pl +0 -43
  359. package/examples/eyelang/odrl-dpv-healthcare-risk-ranked.pl +0 -266
  360. package/examples/eyelang/odrl-dpv-risk-ranked.pl +0 -320
  361. package/examples/eyelang/orbital-transfer-design.pl +0 -113
  362. package/examples/eyelang/output/access-control-policy.pl +0 -2
  363. package/examples/eyelang/output/ackermann.pl +0 -12
  364. package/examples/eyelang/output/age.pl +0 -2
  365. package/examples/eyelang/output/aliases-and-namespaces.pl +0 -5
  366. package/examples/eyelang/output/alignment-demo.pl +0 -32
  367. package/examples/eyelang/output/allen-interval-calculus.pl +0 -154
  368. package/examples/eyelang/output/ancestor.pl +0 -6
  369. package/examples/eyelang/output/animal.pl +0 -4
  370. package/examples/eyelang/output/annotation.pl +0 -4
  371. package/examples/eyelang/output/auroracare.pl +0 -117
  372. package/examples/eyelang/output/backward.pl +0 -1
  373. package/examples/eyelang/output/basic-monadic.pl +0 -1518
  374. package/examples/eyelang/output/bayes-diagnosis.pl +0 -13
  375. package/examples/eyelang/output/bayes-therapy.pl +0 -23
  376. package/examples/eyelang/output/beam-deflection.pl +0 -5
  377. package/examples/eyelang/output/blocks-world-planning.pl +0 -4
  378. package/examples/eyelang/output/bmi.pl +0 -32
  379. package/examples/eyelang/output/braking-safety-worlds.pl +0 -18
  380. package/examples/eyelang/output/buck-converter-design.pl +0 -6
  381. package/examples/eyelang/output/cache-performance.pl +0 -4
  382. package/examples/eyelang/output/canary-release.pl +0 -5
  383. package/examples/eyelang/output/cat-koko.pl +0 -3
  384. package/examples/eyelang/output/clinical-trial-screening.pl +0 -9
  385. package/examples/eyelang/output/combinatorics-findall-sort.pl +0 -2
  386. package/examples/eyelang/output/competitive-enzyme-kinetics.pl +0 -6
  387. package/examples/eyelang/output/complex.pl +0 -1
  388. package/examples/eyelang/output/composition-of-injective-functions-is-injective.pl +0 -2
  389. package/examples/eyelang/output/context-association.pl +0 -3
  390. package/examples/eyelang/output/context-schema-audit.pl +0 -12
  391. package/examples/eyelang/output/control-system.pl +0 -6
  392. package/examples/eyelang/output/cyclic-path.pl +0 -16
  393. package/examples/eyelang/output/d3-group.pl +0 -2
  394. package/examples/eyelang/output/dairy-energy-balance.pl +0 -13
  395. package/examples/eyelang/output/data-negotiation.pl +0 -1
  396. package/examples/eyelang/output/deep-taxonomy-10.pl +0 -16
  397. package/examples/eyelang/output/deep-taxonomy-100.pl +0 -16
  398. package/examples/eyelang/output/deep-taxonomy-1000.pl +0 -16
  399. package/examples/eyelang/output/deep-taxonomy-10000.pl +0 -16
  400. package/examples/eyelang/output/deep-taxonomy-100000.pl +0 -16
  401. package/examples/eyelang/output/delfour.pl +0 -31
  402. package/examples/eyelang/output/deontic-logic.pl +0 -4
  403. package/examples/eyelang/output/derived-backward-rule.pl +0 -3
  404. package/examples/eyelang/output/derived-rule.pl +0 -2
  405. package/examples/eyelang/output/diamond-property.pl +0 -4
  406. package/examples/eyelang/output/dijkstra-findall-sort.pl +0 -2
  407. package/examples/eyelang/output/dijkstra-risk-path.pl +0 -29
  408. package/examples/eyelang/output/dijkstra.pl +0 -16
  409. package/examples/eyelang/output/dining-philosophers.pl +0 -350
  410. package/examples/eyelang/output/dog.pl +0 -1
  411. package/examples/eyelang/output/dpv-odrl-purpose-mapping.pl +0 -18
  412. package/examples/eyelang/output/drone-corridor-planner.pl +0 -17
  413. package/examples/eyelang/output/easter-computus.pl +0 -30
  414. package/examples/eyelang/output/electrical-rc-filter.pl +0 -3
  415. package/examples/eyelang/output/epidemic-policy.pl +0 -14
  416. package/examples/eyelang/output/equivalence-classes-overlap-implies-same-class.pl +0 -18
  417. package/examples/eyelang/output/eulerian-path.pl +0 -3
  418. package/examples/eyelang/output/ev-range-worlds.pl +0 -19
  419. package/examples/eyelang/output/existential-rule.pl +0 -2
  420. package/examples/eyelang/output/exoplanet-validation-worlds.pl +0 -22
  421. package/examples/eyelang/output/expression-eval.pl +0 -1
  422. package/examples/eyelang/output/family-cousins.pl +0 -28
  423. package/examples/eyelang/output/fastpow.pl +0 -6
  424. package/examples/eyelang/output/fft8-numeric.pl +0 -4
  425. package/examples/eyelang/output/fibonacci.pl +0 -6
  426. package/examples/eyelang/output/field-nitrogen-balance.pl +0 -21
  427. package/examples/eyelang/output/flandor.pl +0 -43
  428. package/examples/eyelang/output/floating-point.pl +0 -9
  429. package/examples/eyelang/output/four-color-map.pl +0 -3
  430. package/examples/eyelang/output/fundamental-theorem-arithmetic.pl +0 -9
  431. package/examples/eyelang/output/gd-step-certified.pl +0 -79
  432. package/examples/eyelang/output/gdpr-compliance.pl +0 -6
  433. package/examples/eyelang/output/good-cobbler.pl +0 -1
  434. package/examples/eyelang/output/gps.pl +0 -21
  435. package/examples/eyelang/output/graph-reachability.pl +0 -3
  436. package/examples/eyelang/output/gray-code-counter.pl +0 -1
  437. package/examples/eyelang/output/greatest-lower-bound-uniqueness.pl +0 -2
  438. package/examples/eyelang/output/group-inverse-uniqueness.pl +0 -2
  439. package/examples/eyelang/output/hamiltonian-path.pl +0 -121
  440. package/examples/eyelang/output/hamming-code.pl +0 -6
  441. package/examples/eyelang/output/hanoi.pl +0 -1
  442. package/examples/eyelang/output/heat-loss.pl +0 -5
  443. package/examples/eyelang/output/heron-theorem.pl +0 -4
  444. package/examples/eyelang/output/ideal-gas-law.pl +0 -3
  445. package/examples/eyelang/output/illegitimate-reasoning.pl +0 -15
  446. package/examples/eyelang/output/knowledge-engineering-alignment-flow.pl +0 -17
  447. package/examples/eyelang/output/law-of-cosines.pl +0 -3
  448. package/examples/eyelang/output/least-squares-regression.pl +0 -5
  449. package/examples/eyelang/output/list-collection.pl +0 -3
  450. package/examples/eyelang/output/lldm.pl +0 -6
  451. package/examples/eyelang/output/manufacturing-quality-control.pl +0 -6
  452. package/examples/eyelang/output/microgrid-dispatch.pl +0 -6
  453. package/examples/eyelang/output/monkey-bananas.pl +0 -5
  454. package/examples/eyelang/output/network-sla.pl +0 -4
  455. package/examples/eyelang/output/newton-raphson.pl +0 -3
  456. package/examples/eyelang/output/nixon-diamond.pl +0 -5
  457. package/examples/eyelang/output/observability-log-correlation.pl +0 -28
  458. package/examples/eyelang/output/odrl-dpv-fpv-trust-flow.pl +0 -9
  459. package/examples/eyelang/output/odrl-dpv-healthcare-risk-ranked.pl +0 -42
  460. package/examples/eyelang/output/odrl-dpv-risk-ranked.pl +0 -120
  461. package/examples/eyelang/output/orbital-transfer-design.pl +0 -7
  462. package/examples/eyelang/output/path-discovery.pl +0 -3
  463. package/examples/eyelang/output/peano-arithmetic.pl +0 -3
  464. package/examples/eyelang/output/peasant.pl +0 -10
  465. package/examples/eyelang/output/pendulum-period.pl +0 -4
  466. package/examples/eyelang/output/polynomial.pl +0 -14
  467. package/examples/eyelang/output/proof-contrapositive.pl +0 -3
  468. package/examples/eyelang/output/quadratic-formula.pl +0 -6
  469. package/examples/eyelang/output/radioactive-decay.pl +0 -5
  470. package/examples/eyelang/output/reusable-builtins.pl +0 -5
  471. package/examples/eyelang/output/riemann-hypothesis.pl +0 -12
  472. package/examples/eyelang/output/security-incident-correlation.pl +0 -3
  473. package/examples/eyelang/output/service-impact.pl +0 -11
  474. package/examples/eyelang/output/sieve.pl +0 -1
  475. package/examples/eyelang/output/skolem-functions.pl +0 -16
  476. package/examples/eyelang/output/socket-age.pl +0 -1
  477. package/examples/eyelang/output/socrates.pl +0 -2
  478. package/examples/eyelang/output/statistics-summary.pl +0 -4
  479. package/examples/eyelang/output/superdense-coding.pl +0 -6
  480. package/examples/eyelang/output/term-tools.pl +0 -6
  481. package/examples/eyelang/output/trust-flow-provenance-threshold.pl +0 -6
  482. package/examples/eyelang/output/turing.pl +0 -12
  483. package/examples/eyelang/output/vector-similarity.pl +0 -4
  484. package/examples/eyelang/output/vulnerability-impact.pl +0 -20
  485. package/examples/eyelang/output/witch.pl +0 -7
  486. package/examples/eyelang/output/wolf-goat-cabbage.pl +0 -3
  487. package/examples/eyelang/output/zebra.pl +0 -3
  488. package/examples/eyelang/path-discovery.pl +0 -45013
  489. package/examples/eyelang/peano-arithmetic.pl +0 -31
  490. package/examples/eyelang/peasant.pl +0 -30
  491. package/examples/eyelang/pendulum-period.pl +0 -50
  492. package/examples/eyelang/polynomial.pl +0 -124
  493. package/examples/eyelang/proof/age.pl +0 -71
  494. package/examples/eyelang/proof/aliases-and-namespaces.pl +0 -78
  495. package/examples/eyelang/proof/ancestor.pl +0 -140
  496. package/examples/eyelang/proof/animal.pl +0 -68
  497. package/examples/eyelang/proof/annotation.pl +0 -80
  498. package/examples/eyelang/proof/backward.pl +0 -22
  499. package/examples/eyelang/proof/cat-koko.pl +0 -86
  500. package/examples/eyelang/proof/data-negotiation.pl +0 -76
  501. package/examples/eyelang/proof/derived-rule.pl +0 -43
  502. package/examples/eyelang/proof/dog.pl +0 -31
  503. package/examples/eyelang/proof/electrical-rc-filter.pl +0 -105
  504. package/examples/eyelang/proof/existential-rule.pl +0 -40
  505. package/examples/eyelang/proof/floating-point.pl +0 -160
  506. package/examples/eyelang/proof/good-cobbler.pl +0 -16
  507. package/examples/eyelang/proof/group-inverse-uniqueness.pl +0 -84
  508. package/examples/eyelang/proof/list-collection.pl +0 -52
  509. package/examples/eyelang/proof/proof-contrapositive.pl +0 -78
  510. package/examples/eyelang/proof/socket-age.pl +0 -32
  511. package/examples/eyelang/proof/socket-family.pl +0 -59
  512. package/examples/eyelang/proof/socrates.pl +0 -38
  513. package/examples/eyelang/proof-contrapositive.pl +0 -27
  514. package/examples/eyelang/quadratic-formula.pl +0 -54
  515. package/examples/eyelang/radioactive-decay.pl +0 -56
  516. package/examples/eyelang/reusable-builtins.pl +0 -32
  517. package/examples/eyelang/riemann-hypothesis.pl +0 -110
  518. package/examples/eyelang/security-incident-correlation.pl +0 -69
  519. package/examples/eyelang/service-impact.pl +0 -41
  520. package/examples/eyelang/sieve.pl +0 -20
  521. package/examples/eyelang/skolem-functions.pl +0 -52
  522. package/examples/eyelang/socket-age.pl +0 -39
  523. package/examples/eyelang/socket-family.pl +0 -28
  524. package/examples/eyelang/socrates.pl +0 -19
  525. package/examples/eyelang/statistics-summary.pl +0 -54
  526. package/examples/eyelang/superdense-coding.pl +0 -84
  527. package/examples/eyelang/term-tools.pl +0 -23
  528. package/examples/eyelang/trust-flow-provenance-threshold.pl +0 -40
  529. package/examples/eyelang/turing.pl +0 -67
  530. package/examples/eyelang/vector-similarity.pl +0 -56
  531. package/examples/eyelang/vulnerability-impact.pl +0 -70
  532. package/examples/eyelang/witch.pl +0 -38
  533. package/examples/eyelang/wolf-goat-cabbage.pl +0 -56
  534. package/examples/eyelang/zebra.pl +0 -44
  535. package/eyelang.d.ts +0 -80
  536. package/lib/eyelang/bin.js +0 -7
  537. package/lib/eyelang/builtins/aggregation.js +0 -81
  538. package/lib/eyelang/builtins/arithmetic.js +0 -208
  539. package/lib/eyelang/builtins/context.js +0 -42
  540. package/lib/eyelang/builtins/control.js +0 -34
  541. package/lib/eyelang/builtins/core.js +0 -78
  542. package/lib/eyelang/builtins/lists.js +0 -283
  543. package/lib/eyelang/builtins/registry.js +0 -48
  544. package/lib/eyelang/builtins/strings.js +0 -234
  545. package/lib/eyelang/builtins/terms.js +0 -66
  546. package/lib/eyelang/cli.js +0 -180
  547. package/lib/eyelang/explain.js +0 -324
  548. package/lib/eyelang/hash.js +0 -294
  549. package/lib/eyelang/index.js +0 -47
  550. package/lib/eyelang/package.json +0 -3
  551. package/lib/eyelang/parser.js +0 -428
  552. package/lib/eyelang/program.js +0 -237
  553. package/lib/eyelang/solver.js +0 -237
  554. package/lib/eyelang/term.js +0 -328
  555. /package/{examples/eyelang/output/socket-family.pl → test/eyelang/conformance/expected/027_default_derived_output.pl} +0 -0
@@ -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).