eyelang 1.7.7 → 1.7.9

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 (305) hide show
  1. package/README.md +1 -1
  2. package/conformance-report.md +18 -18
  3. package/docs/guide.md +2 -1
  4. package/docs/language-reference.md +12 -0
  5. package/examples/existential-rule.eye +8 -15
  6. package/examples/herbrand-witnesses.eye +31 -0
  7. package/examples/output/existential-rule.eye +2 -2
  8. package/examples/output/herbrand-witnesses.eye +7 -0
  9. package/examples/proof/existential-rule.eye +10 -18
  10. package/package.json +1 -1
  11. package/playground.html +1 -0
  12. package/src/builtins/terms.js +1 -0
  13. package/test/conformance/cases/aggregation/extra_aggregate_max_iri_key.eye +4 -0
  14. package/test/conformance/cases/aggregation/extra_aggregate_min_tie_first.eye +5 -0
  15. package/test/conformance/cases/aggregation/extra_countall_with_filter.eye +5 -0
  16. package/test/conformance/cases/aggregation/extra_findall_repeated_template.eye +4 -0
  17. package/test/conformance/cases/aggregation/extra_sumall_float_template.eye +4 -0
  18. package/test/conformance/cases/arithmetic/extra_acos_one.eye +2 -0
  19. package/test/conformance/cases/arithmetic/extra_asin_zero.eye +2 -0
  20. package/test/conformance/cases/arithmetic/extra_atan2_axis.eye +2 -0
  21. package/test/conformance/cases/arithmetic/extra_difference_leap_day.eye +2 -0
  22. package/test/conformance/cases/arithmetic/extra_difference_same_day.eye +2 -0
  23. package/test/conformance/cases/arithmetic/extra_div_float_exact.eye +2 -0
  24. package/test/conformance/cases/arithmetic/extra_div_integer_trunc.eye +2 -0
  25. package/test/conformance/cases/arithmetic/extra_division_by_zero_fails.eye +2 -0
  26. package/test/conformance/cases/arithmetic/extra_exp_zero.eye +2 -0
  27. package/test/conformance/cases/arithmetic/extra_ge_equal_duration.eye +2 -0
  28. package/test/conformance/cases/arithmetic/extra_le_equal_string.eye +2 -0
  29. package/test/conformance/cases/arithmetic/extra_log_one.eye +2 -0
  30. package/test/conformance/cases/arithmetic/extra_mod_negative_right.eye +2 -0
  31. package/test/conformance/cases/arithmetic/extra_pow_large_integer.eye +2 -0
  32. package/test/conformance/cases/atoms/extra_graphic_backslash_atom.eye +2 -0
  33. package/test/conformance/cases/atoms/extra_iri_mailto_plus.eye +2 -0
  34. package/test/conformance/cases/atoms/extra_iri_uuid_scheme.eye +2 -0
  35. package/test/conformance/cases/atoms/extra_quoted_atom_with_quote_readback.eye +2 -0
  36. package/test/conformance/cases/builtins/extra_difference_end_before_start_fails.eye +2 -0
  37. package/test/conformance/cases/builtins/extra_difference_invalid_date_fails.eye +2 -0
  38. package/test/conformance/cases/builtins/extra_eq_binds_both_sides.eye +2 -0
  39. package/test/conformance/cases/builtins/extra_neq_different_iri_atoms.eye +2 -0
  40. package/test/conformance/cases/builtins/extra_neq_same_iri_fails.eye +2 -0
  41. package/test/conformance/cases/context/extra_holds_atom_parts.eye +2 -0
  42. package/test/conformance/cases/context/extra_holds_ignores_string_parts.eye +2 -0
  43. package/test/conformance/cases/context/extra_holds_list_parts.eye +2 -0
  44. package/test/conformance/cases/context/extra_holds_term_nested_order.eye +2 -0
  45. package/test/conformance/cases/control/extra_forall_bound_check.eye +2 -0
  46. package/test/conformance/cases/control/extra_forall_counterexample_fails.eye +2 -0
  47. package/test/conformance/cases/control/extra_not_unbound_existing_goal_fails.eye +3 -0
  48. package/test/conformance/cases/control/extra_not_unbound_unknown_goal_succeeds.eye +2 -0
  49. package/test/conformance/cases/control/extra_once_empty_fails.eye +2 -0
  50. package/test/conformance/cases/control/extra_once_preserves_binding.eye +2 -0
  51. package/test/conformance/cases/lists/extra_append_all_splits_three.eye +2 -0
  52. package/test/conformance/cases/lists/extra_append_to_improper_tail.eye +2 -0
  53. package/test/conformance/cases/lists/extra_drop_all.eye +2 -0
  54. package/test/conformance/cases/lists/extra_head_and_rest_improper.eye +2 -0
  55. package/test/conformance/cases/lists/extra_last_singleton.eye +2 -0
  56. package/test/conformance/cases/lists/extra_length_improper_fails.eye +2 -0
  57. package/test/conformance/cases/lists/extra_list_to_set_stable_order.eye +2 -0
  58. package/test/conformance/cases/lists/extra_member_repeated_nested.eye +2 -0
  59. package/test/conformance/cases/lists/extra_not_member_compound_fails.eye +2 -0
  60. package/test/conformance/cases/lists/extra_not_member_compound_success.eye +2 -0
  61. package/test/conformance/cases/lists/extra_nth0_duplicate_indexes.eye +2 -0
  62. package/test/conformance/cases/lists/extra_reverse_nested_terms.eye +2 -0
  63. package/test/conformance/cases/lists/extra_select_structured_duplicate.eye +2 -0
  64. package/test/conformance/cases/lists/extra_slice_end.eye +2 -0
  65. package/test/conformance/cases/lists/extra_sort_iri_atoms.eye +2 -0
  66. package/test/conformance/cases/lists/extra_take_all.eye +2 -0
  67. package/test/conformance/cases/materialize/extra_materialize_derived_only_with_same_source.eye +4 -0
  68. package/test/conformance/cases/materialize/extra_materialize_selects_arity.eye +4 -0
  69. package/test/conformance/cases/negation/extra_not_with_bound_fails.eye +3 -0
  70. package/test/conformance/cases/negation/extra_not_with_bound_success.eye +3 -0
  71. package/test/conformance/cases/rules/extra_left_to_right_multiple_bindings.eye +5 -0
  72. package/test/conformance/cases/rules/extra_structured_head_rule.eye +3 -0
  73. package/test/conformance/cases/strings/extra_atom_string_number_input.eye +2 -0
  74. package/test/conformance/cases/strings/extra_join_empty_list.eye +2 -0
  75. package/test/conformance/cases/strings/extra_join_iri_and_atom.eye +2 -0
  76. package/test/conformance/cases/strings/extra_lowercase_iri_atom.eye +2 -0
  77. package/test/conformance/cases/strings/extra_matches_invalid_pattern_fails.eye +2 -0
  78. package/test/conformance/cases/strings/extra_named_regex_optional_missing.eye +2 -0
  79. package/test/conformance/cases/strings/extra_number_string_atom_input.eye +2 -0
  80. package/test/conformance/cases/strings/extra_replace_multiple.eye +2 -0
  81. package/test/conformance/cases/strings/extra_split_empty_separator.eye +2 -0
  82. package/test/conformance/cases/strings/extra_substring_last_char.eye +2 -0
  83. package/test/conformance/cases/strings/extra_term_string_iri_list.eye +2 -0
  84. package/test/conformance/cases/strings/extra_uppercase_mixed_string.eye +2 -0
  85. package/test/conformance/cases/syntax/extra_comments_after_terms.eye +3 -0
  86. package/test/conformance/cases/syntax/extra_nested_parenthesized_body.eye +2 -0
  87. package/test/conformance/cases/table/extra_table_bound_cycle.eye +7 -0
  88. package/test/conformance/cases/table/extra_table_open_call_fallback.eye +5 -0
  89. package/test/conformance/cases/terms/extra_arg_atom_fails.eye +2 -0
  90. package/test/conformance/cases/terms/extra_arg_first_last.eye +2 -0
  91. package/test/conformance/cases/terms/extra_arg_zero_fails.eye +2 -0
  92. package/test/conformance/cases/terms/extra_compound_name_arguments_bad_args_fails.eye +2 -0
  93. package/test/conformance/cases/terms/extra_compound_name_arguments_construct_atom_zero.eye +2 -0
  94. package/test/conformance/cases/terms/extra_compound_name_arguments_construct_iri.eye +2 -0
  95. package/test/conformance/cases/terms/extra_compound_name_arguments_decompose_list.eye +2 -0
  96. package/test/conformance/cases/terms/extra_functor_list_cons.eye +2 -0
  97. package/test/conformance/cases/terms/extra_functor_number_scalar.eye +2 -0
  98. package/test/conformance/cases/terms/extra_functor_string_scalar.eye +2 -0
  99. package/test/conformance/cases/terms/herbrand_witness_different_inputs_distinct.eye +2 -0
  100. package/test/conformance/cases/terms/herbrand_witness_one_input.eye +5 -0
  101. package/test/conformance/cases/terms/herbrand_witness_same_inputs_same_term.eye +2 -0
  102. package/test/conformance/cases/terms/herbrand_witness_two_inputs.eye +5 -0
  103. package/test/conformance/cases/unification/extra_eq_iri_and_quoted_atom.eye +2 -0
  104. package/test/conformance/cases/unification/extra_eq_list_tail_binding.eye +2 -0
  105. package/test/conformance/cases/unification/extra_eq_nested_repeated_fails.eye +2 -0
  106. package/test/conformance/cases/unification/extra_eq_nested_repeated_success.eye +2 -0
  107. package/test/conformance/cases/unification/extra_eq_scalar_number_atom.eye +2 -0
  108. package/test/conformance/cases/unification/extra_eq_scalar_string_number.eye +2 -0
  109. package/test/conformance/cases/unification/extra_neq_compound_arity_mismatch.eye +2 -0
  110. package/test/conformance/cases/unification/extra_neq_scalar_same_lexical_fails.eye +2 -0
  111. package/test/conformance/cases/unification/extra_variable_clause_locality.eye +4 -0
  112. package/test/conformance/cases/variables/extra_anonymous_not_reused.eye +2 -0
  113. package/test/conformance/cases/variables/extra_named_variable_reused.eye +2 -0
  114. package/test/conformance/cases/variables/extra_question_underscore_named_distinct.eye +2 -0
  115. package/test/conformance/cases/variables/extra_question_uppercase_named.eye +2 -0
  116. package/test/conformance/errors/atoms/extra_angle_iri_backslash_rejected.eye +1 -0
  117. package/test/conformance/errors/atoms/extra_angle_iri_pipe_rejected.eye +1 -0
  118. package/test/conformance/errors/atoms/extra_angle_iri_quote_rejected.eye +1 -0
  119. package/test/conformance/errors/lists/extra_missing_tail_after_bar.eye +1 -0
  120. package/test/conformance/errors/lists/extra_unclosed_list_tail.eye +1 -0
  121. package/test/conformance/errors/rules/extra_empty_head_with_body.eye +1 -0
  122. package/test/conformance/errors/rules/extra_rule_without_body.eye +1 -0
  123. package/test/conformance/errors/syntax/extra_bad_backtick_character.eye +1 -0
  124. package/test/conformance/errors/syntax/extra_bad_iri_empty_body.eye +1 -0
  125. package/test/conformance/errors/syntax/extra_bad_list_double_comma.eye +1 -0
  126. package/test/conformance/errors/syntax/extra_bad_list_double_tail.eye +1 -0
  127. package/test/conformance/errors/syntax/extra_bad_number_two_decimal_points.eye +1 -0
  128. package/test/conformance/errors/syntax/extra_double_period_rejected.eye +1 -0
  129. package/test/conformance/errors/syntax/extra_extra_closing_paren.eye +1 -0
  130. package/test/conformance/errors/syntax/extra_missing_closing_rule_body.eye +1 -0
  131. package/test/conformance/errors/syntax/extra_missing_head_rejected.eye +1 -0
  132. package/test/conformance/errors/terms/extra_empty_nested_compound.eye +1 -0
  133. package/test/conformance/errors/terms/extra_empty_top_level_compound.eye +1 -0
  134. package/test/conformance/errors/variables/extra_bare_underscore_in_rule_head.eye +1 -0
  135. package/test/conformance/errors/variables/extra_question_dash_variable.eye +1 -0
  136. package/test/conformance/errors/variables/extra_uppercase_in_list.eye +1 -0
  137. package/test/conformance/expected/aggregation/extra_aggregate_max_iri_key.eye +1 -0
  138. package/test/conformance/expected/aggregation/extra_aggregate_min_tie_first.eye +1 -0
  139. package/test/conformance/expected/aggregation/extra_countall_with_filter.eye +1 -0
  140. package/test/conformance/expected/aggregation/extra_findall_repeated_template.eye +1 -0
  141. package/test/conformance/expected/aggregation/extra_sumall_float_template.eye +1 -0
  142. package/test/conformance/expected/arithmetic/extra_acos_one.eye +1 -0
  143. package/test/conformance/expected/arithmetic/extra_asin_zero.eye +1 -0
  144. package/test/conformance/expected/arithmetic/extra_atan2_axis.eye +1 -0
  145. package/test/conformance/expected/arithmetic/extra_difference_leap_day.eye +1 -0
  146. package/test/conformance/expected/arithmetic/extra_difference_same_day.eye +1 -0
  147. package/test/conformance/expected/arithmetic/extra_div_float_exact.eye +1 -0
  148. package/test/conformance/expected/arithmetic/extra_div_integer_trunc.eye +1 -0
  149. package/test/conformance/expected/arithmetic/extra_division_by_zero_fails.eye +0 -0
  150. package/test/conformance/expected/arithmetic/extra_exp_zero.eye +1 -0
  151. package/test/conformance/expected/arithmetic/extra_ge_equal_duration.eye +1 -0
  152. package/test/conformance/expected/arithmetic/extra_le_equal_string.eye +1 -0
  153. package/test/conformance/expected/arithmetic/extra_log_one.eye +1 -0
  154. package/test/conformance/expected/arithmetic/extra_mod_negative_right.eye +1 -0
  155. package/test/conformance/expected/arithmetic/extra_pow_large_integer.eye +1 -0
  156. package/test/conformance/expected/atoms/extra_graphic_backslash_atom.eye +0 -0
  157. package/test/conformance/expected/atoms/extra_iri_mailto_plus.eye +0 -0
  158. package/test/conformance/expected/atoms/extra_iri_uuid_scheme.eye +0 -0
  159. package/test/conformance/expected/atoms/extra_quoted_atom_with_quote_readback.eye +0 -0
  160. package/test/conformance/expected/builtins/extra_difference_end_before_start_fails.eye +0 -0
  161. package/test/conformance/expected/builtins/extra_difference_invalid_date_fails.eye +0 -0
  162. package/test/conformance/expected/builtins/extra_eq_binds_both_sides.eye +1 -0
  163. package/test/conformance/expected/builtins/extra_neq_different_iri_atoms.eye +1 -0
  164. package/test/conformance/expected/builtins/extra_neq_same_iri_fails.eye +0 -0
  165. package/test/conformance/expected/context/extra_holds_atom_parts.eye +2 -0
  166. package/test/conformance/expected/context/extra_holds_ignores_string_parts.eye +0 -0
  167. package/test/conformance/expected/context/extra_holds_list_parts.eye +2 -0
  168. package/test/conformance/expected/context/extra_holds_term_nested_order.eye +3 -0
  169. package/test/conformance/expected/control/extra_forall_bound_check.eye +1 -0
  170. package/test/conformance/expected/control/extra_forall_counterexample_fails.eye +0 -0
  171. package/test/conformance/expected/control/extra_not_unbound_existing_goal_fails.eye +0 -0
  172. package/test/conformance/expected/control/extra_not_unbound_unknown_goal_succeeds.eye +1 -0
  173. package/test/conformance/expected/control/extra_once_empty_fails.eye +0 -0
  174. package/test/conformance/expected/control/extra_once_preserves_binding.eye +1 -0
  175. package/test/conformance/expected/lists/extra_append_all_splits_three.eye +4 -0
  176. package/test/conformance/expected/lists/extra_append_to_improper_tail.eye +1 -0
  177. package/test/conformance/expected/lists/extra_drop_all.eye +1 -0
  178. package/test/conformance/expected/lists/extra_head_and_rest_improper.eye +1 -0
  179. package/test/conformance/expected/lists/extra_last_singleton.eye +1 -0
  180. package/test/conformance/expected/lists/extra_length_improper_fails.eye +0 -0
  181. package/test/conformance/expected/lists/extra_list_to_set_stable_order.eye +1 -0
  182. package/test/conformance/expected/lists/extra_member_repeated_nested.eye +2 -0
  183. package/test/conformance/expected/lists/extra_not_member_compound_fails.eye +0 -0
  184. package/test/conformance/expected/lists/extra_not_member_compound_success.eye +1 -0
  185. package/test/conformance/expected/lists/extra_nth0_duplicate_indexes.eye +2 -0
  186. package/test/conformance/expected/lists/extra_reverse_nested_terms.eye +1 -0
  187. package/test/conformance/expected/lists/extra_select_structured_duplicate.eye +2 -0
  188. package/test/conformance/expected/lists/extra_slice_end.eye +1 -0
  189. package/test/conformance/expected/lists/extra_sort_iri_atoms.eye +1 -0
  190. package/test/conformance/expected/lists/extra_take_all.eye +1 -0
  191. package/test/conformance/expected/materialize/extra_materialize_derived_only_with_same_source.eye +1 -0
  192. package/test/conformance/expected/materialize/extra_materialize_selects_arity.eye +0 -0
  193. package/test/conformance/expected/negation/extra_not_with_bound_fails.eye +0 -0
  194. package/test/conformance/expected/negation/extra_not_with_bound_success.eye +1 -0
  195. package/test/conformance/expected/rules/extra_left_to_right_multiple_bindings.eye +2 -0
  196. package/test/conformance/expected/rules/extra_structured_head_rule.eye +1 -0
  197. package/test/conformance/expected/strings/extra_atom_string_number_input.eye +1 -0
  198. package/test/conformance/expected/strings/extra_join_empty_list.eye +1 -0
  199. package/test/conformance/expected/strings/extra_join_iri_and_atom.eye +1 -0
  200. package/test/conformance/expected/strings/extra_lowercase_iri_atom.eye +1 -0
  201. package/test/conformance/expected/strings/extra_matches_invalid_pattern_fails.eye +0 -0
  202. package/test/conformance/expected/strings/extra_named_regex_optional_missing.eye +1 -0
  203. package/test/conformance/expected/strings/extra_number_string_atom_input.eye +1 -0
  204. package/test/conformance/expected/strings/extra_replace_multiple.eye +1 -0
  205. package/test/conformance/expected/strings/extra_split_empty_separator.eye +1 -0
  206. package/test/conformance/expected/strings/extra_substring_last_char.eye +1 -0
  207. package/test/conformance/expected/strings/extra_term_string_iri_list.eye +1 -0
  208. package/test/conformance/expected/strings/extra_uppercase_mixed_string.eye +1 -0
  209. package/test/conformance/expected/syntax/extra_comments_after_terms.eye +0 -0
  210. package/test/conformance/expected/syntax/extra_nested_parenthesized_body.eye +1 -0
  211. package/test/conformance/expected/table/extra_table_bound_cycle.eye +2 -0
  212. package/test/conformance/expected/table/extra_table_open_call_fallback.eye +2 -0
  213. package/test/conformance/expected/terms/extra_arg_atom_fails.eye +0 -0
  214. package/test/conformance/expected/terms/extra_arg_first_last.eye +1 -0
  215. package/test/conformance/expected/terms/extra_arg_zero_fails.eye +0 -0
  216. package/test/conformance/expected/terms/extra_compound_name_arguments_bad_args_fails.eye +0 -0
  217. package/test/conformance/expected/terms/extra_compound_name_arguments_construct_atom_zero.eye +1 -0
  218. package/test/conformance/expected/terms/extra_compound_name_arguments_construct_iri.eye +1 -0
  219. package/test/conformance/expected/terms/extra_compound_name_arguments_decompose_list.eye +1 -0
  220. package/test/conformance/expected/terms/extra_functor_list_cons.eye +1 -0
  221. package/test/conformance/expected/terms/extra_functor_number_scalar.eye +1 -0
  222. package/test/conformance/expected/terms/extra_functor_string_scalar.eye +1 -0
  223. package/test/conformance/expected/terms/herbrand_witness_different_inputs_distinct.eye +1 -0
  224. package/test/conformance/expected/terms/herbrand_witness_one_input.eye +2 -0
  225. package/test/conformance/expected/terms/herbrand_witness_same_inputs_same_term.eye +1 -0
  226. package/test/conformance/expected/terms/herbrand_witness_two_inputs.eye +2 -0
  227. package/test/conformance/expected/unification/extra_eq_iri_and_quoted_atom.eye +1 -0
  228. package/test/conformance/expected/unification/extra_eq_list_tail_binding.eye +1 -0
  229. package/test/conformance/expected/unification/extra_eq_nested_repeated_fails.eye +0 -0
  230. package/test/conformance/expected/unification/extra_eq_nested_repeated_success.eye +1 -0
  231. package/test/conformance/expected/unification/extra_eq_scalar_number_atom.eye +1 -0
  232. package/test/conformance/expected/unification/extra_eq_scalar_string_number.eye +1 -0
  233. package/test/conformance/expected/unification/extra_neq_compound_arity_mismatch.eye +1 -0
  234. package/test/conformance/expected/unification/extra_neq_scalar_same_lexical_fails.eye +0 -0
  235. package/test/conformance/expected/unification/extra_variable_clause_locality.eye +2 -0
  236. package/test/conformance/expected/variables/extra_anonymous_not_reused.eye +1 -0
  237. package/test/conformance/expected/variables/extra_named_variable_reused.eye +1 -0
  238. package/test/conformance/expected/variables/extra_question_underscore_named_distinct.eye +1 -0
  239. package/test/conformance/expected/variables/extra_question_uppercase_named.eye +1 -0
  240. package/test/conformance/expected-errors/atoms/extra_angle_iri_backslash_rejected.txt +1 -0
  241. package/test/conformance/expected-errors/atoms/extra_angle_iri_pipe_rejected.txt +1 -0
  242. package/test/conformance/expected-errors/atoms/extra_angle_iri_quote_rejected.txt +1 -0
  243. package/test/conformance/expected-errors/lists/extra_missing_tail_after_bar.txt +1 -0
  244. package/test/conformance/expected-errors/lists/extra_unclosed_list_tail.txt +1 -0
  245. package/test/conformance/expected-errors/rules/extra_empty_head_with_body.txt +1 -0
  246. package/test/conformance/expected-errors/rules/extra_rule_without_body.txt +1 -0
  247. package/test/conformance/expected-errors/syntax/extra_bad_backtick_character.txt +1 -0
  248. package/test/conformance/expected-errors/syntax/extra_bad_iri_empty_body.txt +1 -0
  249. package/test/conformance/expected-errors/syntax/extra_bad_list_double_comma.txt +1 -0
  250. package/test/conformance/expected-errors/syntax/extra_bad_list_double_tail.txt +1 -0
  251. package/test/conformance/expected-errors/syntax/extra_bad_number_two_decimal_points.txt +1 -0
  252. package/test/conformance/expected-errors/syntax/extra_double_period_rejected.txt +1 -0
  253. package/test/conformance/expected-errors/syntax/extra_extra_closing_paren.txt +1 -0
  254. package/test/conformance/expected-errors/syntax/extra_missing_closing_rule_body.txt +1 -0
  255. package/test/conformance/expected-errors/syntax/extra_missing_head_rejected.txt +1 -0
  256. package/test/conformance/expected-errors/terms/extra_empty_nested_compound.txt +1 -0
  257. package/test/conformance/expected-errors/terms/extra_empty_top_level_compound.txt +1 -0
  258. package/test/conformance/expected-errors/variables/extra_bare_underscore_in_rule_head.txt +1 -0
  259. package/test/conformance/expected-errors/variables/extra_question_dash_variable.txt +1 -0
  260. package/test/conformance/expected-errors/variables/extra_uppercase_in_list.txt +1 -0
  261. package/test/conformance/expected-proofs/proofs/extra_aggregate_min.eye +16 -0
  262. package/test/conformance/expected-proofs/proofs/extra_compound_name_arguments.eye +16 -0
  263. package/test/conformance/expected-proofs/proofs/extra_eq_builtin.eye +16 -0
  264. package/test/conformance/expected-proofs/proofs/extra_findall_builtin.eye +16 -0
  265. package/test/conformance/expected-proofs/proofs/extra_forall_builtin.eye +15 -0
  266. package/test/conformance/expected-proofs/proofs/extra_holds_parts.eye +32 -0
  267. package/test/conformance/expected-proofs/proofs/extra_iri_join.eye +16 -0
  268. package/test/conformance/expected-proofs/proofs/extra_negation_success.eye +15 -0
  269. package/test/conformance/expected-proofs/proofs/extra_nested_list_binding.eye +16 -0
  270. package/test/conformance/expected-proofs/proofs/extra_once_member.eye +22 -0
  271. package/test/conformance/expected-proofs/proofs/extra_recursive_path.eye +59 -0
  272. package/test/conformance/expected-proofs/proofs/extra_table_path_bound.eye +57 -0
  273. package/test/conformance/expected-proofs/proofs/herbrand_witness.eye +16 -0
  274. package/test/conformance/expected-warnings/negation/extra_stratified_multiple_negations_quiet.eye +1 -0
  275. package/test/conformance/expected-warnings/negation/extra_stratified_multiple_negations_quiet.txt +0 -0
  276. package/test/conformance/expected-warnings/negation/extra_stratified_negation_with_table_quiet.eye +1 -0
  277. package/test/conformance/expected-warnings/negation/extra_stratified_negation_with_table_quiet.txt +0 -0
  278. package/test/conformance/expected-warnings/negation/extra_unstratified_indirect_self_with_fact.eye +0 -0
  279. package/test/conformance/expected-warnings/negation/extra_unstratified_indirect_self_with_fact.txt +2 -0
  280. package/test/conformance/expected-warnings/negation/extra_unstratified_positive_negative_loop.eye +0 -0
  281. package/test/conformance/expected-warnings/negation/extra_unstratified_positive_negative_loop.txt +2 -0
  282. package/test/conformance/expected-warnings/negation/extra_unstratified_three_cycle_all_negative.eye +0 -0
  283. package/test/conformance/expected-warnings/negation/extra_unstratified_three_cycle_all_negative.txt +4 -0
  284. package/test/conformance/expected-warnings/negation/extra_warning_preserves_empty_stdout.eye +0 -0
  285. package/test/conformance/expected-warnings/negation/extra_warning_preserves_empty_stdout.txt +3 -0
  286. package/test/conformance/proofs/proofs/extra_aggregate_min.eye +4 -0
  287. package/test/conformance/proofs/proofs/extra_compound_name_arguments.eye +2 -0
  288. package/test/conformance/proofs/proofs/extra_eq_builtin.eye +2 -0
  289. package/test/conformance/proofs/proofs/extra_findall_builtin.eye +4 -0
  290. package/test/conformance/proofs/proofs/extra_forall_builtin.eye +2 -0
  291. package/test/conformance/proofs/proofs/extra_holds_parts.eye +2 -0
  292. package/test/conformance/proofs/proofs/extra_iri_join.eye +2 -0
  293. package/test/conformance/proofs/proofs/extra_negation_success.eye +3 -0
  294. package/test/conformance/proofs/proofs/extra_nested_list_binding.eye +2 -0
  295. package/test/conformance/proofs/proofs/extra_once_member.eye +2 -0
  296. package/test/conformance/proofs/proofs/extra_recursive_path.eye +5 -0
  297. package/test/conformance/proofs/proofs/extra_table_path_bound.eye +7 -0
  298. package/test/conformance/proofs/proofs/herbrand_witness.eye +3 -0
  299. package/test/conformance/warnings/negation/extra_stratified_multiple_negations_quiet.eye +4 -0
  300. package/test/conformance/warnings/negation/extra_stratified_negation_with_table_quiet.eye +6 -0
  301. package/test/conformance/warnings/negation/extra_unstratified_indirect_self_with_fact.eye +5 -0
  302. package/test/conformance/warnings/negation/extra_unstratified_positive_negative_loop.eye +5 -0
  303. package/test/conformance/warnings/negation/extra_unstratified_three_cycle_all_negative.eye +5 -0
  304. package/test/conformance/warnings/negation/extra_warning_preserves_empty_stdout.eye +3 -0
  305. package/test/run-regression.mjs +1 -1
@@ -0,0 +1 @@
1
+ parse line 1: expected ), got .
@@ -0,0 +1 @@
1
+ parse line 1: expected ., got )
@@ -0,0 +1 @@
1
+ parse line 1: expected ), got .
@@ -0,0 +1 @@
1
+ parse line 1: zero-arity compound syntax is not supported; use atom "f" for arity zero data
@@ -0,0 +1 @@
1
+ parse line 1: zero-arity compound syntax is not supported; use atom "p" for arity zero data
@@ -0,0 +1 @@
1
+ parse line 1: bad character "_"
@@ -0,0 +1 @@
1
+ parse line 1: expected ), got -
@@ -0,0 +1 @@
1
+ parse line 1: bad character "A"
@@ -0,0 +1,16 @@
1
+ answer(aggregate_min, 1, a).
2
+ why(
3
+ answer(aggregate_min, 1, a),
4
+ proof(
5
+ goal(answer(aggregate_min, 1, a)),
6
+ by(rule("<stdin>", clause(4))),
7
+ bindings([binding("?key", 1), binding("?value", a)]),
8
+ uses([
9
+ proof(
10
+ goal(aggregate_min(?k, ?v, score(?k, ?v), 1, a)),
11
+ by(builtin(aggregate_min, 5))
12
+ )
13
+ ])
14
+ )
15
+ ).
16
+
@@ -0,0 +1,16 @@
1
+ answer(compound_name_arguments, box, [a, b]).
2
+ why(
3
+ answer(compound_name_arguments, box, [a, b]),
4
+ proof(
5
+ goal(answer(compound_name_arguments, box, [a, b])),
6
+ by(rule("<stdin>", clause(2))),
7
+ bindings([binding("?name", box), binding("?args", [a, b])]),
8
+ uses([
9
+ proof(
10
+ goal(compound_name_arguments(box(a, b), box, [a, b])),
11
+ by(builtin(compound_name_arguments, 3))
12
+ )
13
+ ])
14
+ )
15
+ ).
16
+
@@ -0,0 +1,16 @@
1
+ answer(eq_builtin, a).
2
+ why(
3
+ answer(eq_builtin, a),
4
+ proof(
5
+ goal(answer(eq_builtin, a)),
6
+ by(rule("<stdin>", clause(2))),
7
+ bindings([binding("?x", a)]),
8
+ uses([
9
+ proof(
10
+ goal(eq(pair(a, b), pair(a, b))),
11
+ by(builtin(eq, 2))
12
+ )
13
+ ])
14
+ )
15
+ ).
16
+
@@ -0,0 +1,16 @@
1
+ answer(findall_builtin, [a, b]).
2
+ why(
3
+ answer(findall_builtin, [a, b]),
4
+ proof(
5
+ goal(answer(findall_builtin, [a, b])),
6
+ by(rule("<stdin>", clause(4))),
7
+ bindings([binding("?bag", [a, b])]),
8
+ uses([
9
+ proof(
10
+ goal(findall(?x, item(?x), [a, b])),
11
+ by(builtin(findall, 3))
12
+ )
13
+ ])
14
+ )
15
+ ).
16
+
@@ -0,0 +1,15 @@
1
+ answer(forall_builtin).
2
+ why(
3
+ answer(forall_builtin),
4
+ proof(
5
+ goal(answer(forall_builtin)),
6
+ by(rule("<stdin>", clause(2))),
7
+ uses([
8
+ proof(
9
+ goal(forall(member(?x, [1, 2]), lt(?x, 3))),
10
+ by(builtin(forall, 2))
11
+ )
12
+ ])
13
+ )
14
+ ).
15
+
@@ -0,0 +1,32 @@
1
+ answer(holds_parts, alpha, []).
2
+ why(
3
+ answer(holds_parts, alpha, []),
4
+ proof(
5
+ goal(answer(holds_parts, alpha, [])),
6
+ by(rule("<stdin>", clause(2))),
7
+ bindings([binding("?name", alpha), binding("?args", [])]),
8
+ uses([
9
+ proof(
10
+ goal(holds((alpha, beta(2)), alpha, [])),
11
+ by(builtin(holds, 3))
12
+ )
13
+ ])
14
+ )
15
+ ).
16
+
17
+ answer(holds_parts, beta, [2]).
18
+ why(
19
+ answer(holds_parts, beta, [2]),
20
+ proof(
21
+ goal(answer(holds_parts, beta, [2])),
22
+ by(rule("<stdin>", clause(2))),
23
+ bindings([binding("?name", beta), binding("?args", [2])]),
24
+ uses([
25
+ proof(
26
+ goal(holds((alpha, beta(2)), beta, [2])),
27
+ by(builtin(holds, 3))
28
+ )
29
+ ])
30
+ )
31
+ ).
32
+
@@ -0,0 +1,16 @@
1
+ answer(iri_join, <urn:example:alice>).
2
+ why(
3
+ answer(iri_join, <urn:example:alice>),
4
+ proof(
5
+ goal(answer(iri_join, <urn:example:alice>)),
6
+ by(rule("<stdin>", clause(2))),
7
+ bindings([binding("?who", <urn:example:alice>)]),
8
+ uses([
9
+ proof(
10
+ goal(eq(<urn:example:alice>, <urn:example:alice>)),
11
+ by(builtin(eq, 2))
12
+ )
13
+ ])
14
+ )
15
+ ).
16
+
@@ -0,0 +1,15 @@
1
+ answer(ok).
2
+ why(
3
+ answer(ok),
4
+ proof(
5
+ goal(answer(ok)),
6
+ by(rule("<stdin>", clause(3))),
7
+ uses([
8
+ proof(
9
+ goal(not(known(b))),
10
+ by(builtin(not, 1))
11
+ )
12
+ ])
13
+ )
14
+ ).
15
+
@@ -0,0 +1,16 @@
1
+ answer(nested_list_binding, [c]).
2
+ why(
3
+ answer(nested_list_binding, [c]),
4
+ proof(
5
+ goal(answer(nested_list_binding, [c])),
6
+ by(rule("<stdin>", clause(2))),
7
+ bindings([binding("?tail", [c])]),
8
+ uses([
9
+ proof(
10
+ goal(eq([a, b, c], [a, b, c])),
11
+ by(builtin(eq, 2))
12
+ )
13
+ ])
14
+ )
15
+ ).
16
+
@@ -0,0 +1,22 @@
1
+ answer(once_member, a).
2
+ why(
3
+ answer(once_member, a),
4
+ proof(
5
+ goal(answer(once_member, a)),
6
+ by(rule("<stdin>", clause(2))),
7
+ bindings([binding("?x", a)]),
8
+ uses([
9
+ proof(
10
+ goal(once(member(a, [a, b, c]))),
11
+ by(builtin(once, 1)),
12
+ uses([
13
+ proof(
14
+ goal(member(a, [a, b, c])),
15
+ by(builtin(member, 2))
16
+ )
17
+ ])
18
+ )
19
+ ])
20
+ )
21
+ ).
22
+
@@ -0,0 +1,59 @@
1
+ path(a, b).
2
+ why(
3
+ path(a, b),
4
+ proof(
5
+ goal(path(a, b)),
6
+ by(rule("<stdin>", clause(4))),
7
+ bindings([binding("?x", a), binding("?y", b)]),
8
+ uses([
9
+ proof(
10
+ goal(edge(a, b)),
11
+ by(fact("<stdin>", clause(2)))
12
+ )
13
+ ])
14
+ )
15
+ ).
16
+
17
+ path(b, c).
18
+ why(
19
+ path(b, c),
20
+ proof(
21
+ goal(path(b, c)),
22
+ by(rule("<stdin>", clause(4))),
23
+ bindings([binding("?x", b), binding("?y", c)]),
24
+ uses([
25
+ proof(
26
+ goal(edge(b, c)),
27
+ by(fact("<stdin>", clause(3)))
28
+ )
29
+ ])
30
+ )
31
+ ).
32
+
33
+ path(a, c).
34
+ why(
35
+ path(a, c),
36
+ proof(
37
+ goal(path(a, c)),
38
+ by(rule("<stdin>", clause(5))),
39
+ bindings([binding("?x", a), binding("?z", c), binding("?y", b)]),
40
+ uses([
41
+ proof(
42
+ goal(edge(a, b)),
43
+ by(fact("<stdin>", clause(2)))
44
+ ),
45
+ proof(
46
+ goal(path(b, c)),
47
+ by(rule("<stdin>", clause(4))),
48
+ bindings([binding("?x", b), binding("?y", c)]),
49
+ uses([
50
+ proof(
51
+ goal(edge(b, c)),
52
+ by(fact("<stdin>", clause(3)))
53
+ )
54
+ ])
55
+ )
56
+ ])
57
+ )
58
+ ).
59
+
@@ -0,0 +1,57 @@
1
+ answer(table_path_bound, b).
2
+ why(
3
+ answer(table_path_bound, b),
4
+ proof(
5
+ goal(answer(table_path_bound, b)),
6
+ by(rule("<stdin>", clause(7))),
7
+ bindings([binding("?x", b)]),
8
+ uses([
9
+ proof(
10
+ goal(path(a, b)),
11
+ by(rule("<stdin>", clause(5))),
12
+ bindings([binding("?x", a), binding("?y", b)]),
13
+ uses([
14
+ proof(
15
+ goal(edge(a, b)),
16
+ by(fact("<stdin>", clause(3)))
17
+ )
18
+ ])
19
+ )
20
+ ])
21
+ )
22
+ ).
23
+
24
+ answer(table_path_bound, c).
25
+ why(
26
+ answer(table_path_bound, c),
27
+ proof(
28
+ goal(answer(table_path_bound, c)),
29
+ by(rule("<stdin>", clause(7))),
30
+ bindings([binding("?x", c)]),
31
+ uses([
32
+ proof(
33
+ goal(path(a, c)),
34
+ by(rule("<stdin>", clause(6))),
35
+ bindings([binding("?x", a), binding("?z", c), binding("?y", b)]),
36
+ uses([
37
+ proof(
38
+ goal(edge(a, b)),
39
+ by(fact("<stdin>", clause(3)))
40
+ ),
41
+ proof(
42
+ goal(path(b, c)),
43
+ by(rule("<stdin>", clause(5))),
44
+ bindings([binding("?x", b), binding("?y", c)]),
45
+ uses([
46
+ proof(
47
+ goal(edge(b, c)),
48
+ by(fact("<stdin>", clause(4)))
49
+ )
50
+ ])
51
+ )
52
+ ])
53
+ )
54
+ ])
55
+ )
56
+ ).
57
+
@@ -0,0 +1,16 @@
1
+ has_parent(alice, parent_of(alice)).
2
+ why(
3
+ has_parent(alice, parent_of(alice)),
4
+ proof(
5
+ goal(has_parent(alice, parent_of(alice))),
6
+ by(rule("<stdin>", clause(2))),
7
+ bindings([binding("?child", alice)]),
8
+ uses([
9
+ proof(
10
+ goal(person(alice)),
11
+ by(fact("<stdin>", clause(1)))
12
+ )
13
+ ])
14
+ )
15
+ ).
16
+
@@ -0,0 +1,2 @@
1
+ eyelang warning: unstratified negation
2
+ p/1 depends negatively on blocked/1
@@ -0,0 +1,2 @@
1
+ eyelang warning: unstratified negation
2
+ p/1 depends negatively on r/1
@@ -0,0 +1,4 @@
1
+ eyelang warning: unstratified negation
2
+ p/1 depends negatively on q/1
3
+ q/1 depends negatively on r/1
4
+ r/1 depends negatively on p/1
@@ -0,0 +1,3 @@
1
+ eyelang warning: unstratified negation
2
+ p/1 depends negatively on q/1
3
+ q/1 depends negatively on p/1
@@ -0,0 +1,4 @@
1
+ materialize(answer, 3).
2
+ score(2, b).
3
+ score(1, a).
4
+ answer(aggregate_min, ?key, ?value) :- aggregate_min(?k, ?v, score(?k, ?v), ?key, ?value).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 3).
2
+ answer(compound_name_arguments, ?name, ?args) :- compound_name_arguments(box(a, b), ?name, ?args).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(eq_builtin, ?x) :- eq(pair(?x, b), pair(a, b)).
@@ -0,0 +1,4 @@
1
+ materialize(answer, 2).
2
+ item(a).
3
+ item(b).
4
+ answer(findall_builtin, ?bag) :- findall(?x, item(?x), ?bag).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(forall_builtin) :- forall(member(?x, [1, 2]), lt(?x, 3)).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 3).
2
+ answer(holds_parts, ?name, ?args) :- holds((alpha, beta(2)), ?name, ?args).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(iri_join, ?who) :- eq(?who, <urn:example:alice>).
@@ -0,0 +1,3 @@
1
+ materialize(answer, 1).
2
+ known(a).
3
+ answer(ok) :- not(known(b)).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(nested_list_binding, ?tail) :- eq([a, b | ?tail], [a, b, c]).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(once_member, ?x) :- once(member(?x, [a, b, c])).
@@ -0,0 +1,5 @@
1
+ materialize(path, 2).
2
+ edge(a, b).
3
+ edge(b, c).
4
+ path(?x, ?y) :- edge(?x, ?y).
5
+ path(?x, ?z) :- edge(?x, ?y), path(?y, ?z).
@@ -0,0 +1,7 @@
1
+ materialize(answer, 2).
2
+ table(path, 2).
3
+ edge(a, b).
4
+ edge(b, c).
5
+ path(?x, ?y) :- edge(?x, ?y).
6
+ path(?x, ?z) :- edge(?x, ?y), path(?y, ?z).
7
+ answer(table_path_bound, ?x) :- path(a, ?x).
@@ -0,0 +1,3 @@
1
+ person(alice).
2
+ has_parent(?child, parent_of(?child)) :- person(?child).
3
+ materialize(has_parent, 2).
@@ -0,0 +1,4 @@
1
+ materialize(answer, 1).
2
+ p(a).
3
+ r(c).
4
+ answer(ok) :- not(q(a)), not(r(b)).
@@ -0,0 +1,6 @@
1
+ materialize(open, 1).
2
+ table(path, 2).
3
+ edge(a, b).
4
+ path(?x, ?y) :- edge(?x, ?y).
5
+ closed(c).
6
+ open(?x) :- path(a, ?x), not(closed(?x)).
@@ -0,0 +1,5 @@
1
+ materialize(answer, 1).
2
+ seed(a).
3
+ p(?x) :- seed(?x), not(blocked(?x)).
4
+ blocked(?x) :- p(?x).
5
+ answer(ok).
@@ -0,0 +1,5 @@
1
+ materialize(answer, 1).
2
+ p(?x) :- q(?x), not(r(?x)).
3
+ q(a).
4
+ r(?x) :- p(?x).
5
+ answer(ok).
@@ -0,0 +1,5 @@
1
+ materialize(answer, 1).
2
+ p(a) :- not(q(a)).
3
+ q(a) :- not(r(a)).
4
+ r(a) :- not(p(a)).
5
+ answer(ok).
@@ -0,0 +1,3 @@
1
+ materialize(answer, 1).
2
+ p(a) :- not(q(a)).
3
+ q(a) :- not(p(a)).
@@ -371,7 +371,7 @@ function documentationSyncCases() {
371
371
  run: () => {
372
372
  const report = buildConformanceReport();
373
373
  assertArrayEqual(report.issues, [], 'conformance report issues');
374
- assertEqual(report.total.total >= 250, true, 'conformance case count');
374
+ assertEqual(report.total.total >= 400, true, 'conformance case count');
375
375
  assertEqual(report.total.positive + report.total.errors + report.total.warnings + report.total.proofs, report.total.total, 'conformance total');
376
376
  assertEqual(report.rows.some((row) => row.category === 'legacy-numbered'), false, 'legacy-numbered category');
377
377
  const text = formatConformanceReport(report);