eyelang 1.7.7 → 1.7.8

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 (285) hide show
  1. package/conformance-report.md +18 -18
  2. package/package.json +1 -1
  3. package/test/conformance/cases/aggregation/extra_aggregate_max_iri_key.eye +4 -0
  4. package/test/conformance/cases/aggregation/extra_aggregate_min_tie_first.eye +5 -0
  5. package/test/conformance/cases/aggregation/extra_countall_with_filter.eye +5 -0
  6. package/test/conformance/cases/aggregation/extra_findall_repeated_template.eye +4 -0
  7. package/test/conformance/cases/aggregation/extra_sumall_float_template.eye +4 -0
  8. package/test/conformance/cases/arithmetic/extra_acos_one.eye +2 -0
  9. package/test/conformance/cases/arithmetic/extra_asin_zero.eye +2 -0
  10. package/test/conformance/cases/arithmetic/extra_atan2_axis.eye +2 -0
  11. package/test/conformance/cases/arithmetic/extra_difference_leap_day.eye +2 -0
  12. package/test/conformance/cases/arithmetic/extra_difference_same_day.eye +2 -0
  13. package/test/conformance/cases/arithmetic/extra_div_float_exact.eye +2 -0
  14. package/test/conformance/cases/arithmetic/extra_div_integer_trunc.eye +2 -0
  15. package/test/conformance/cases/arithmetic/extra_division_by_zero_fails.eye +2 -0
  16. package/test/conformance/cases/arithmetic/extra_exp_zero.eye +2 -0
  17. package/test/conformance/cases/arithmetic/extra_ge_equal_duration.eye +2 -0
  18. package/test/conformance/cases/arithmetic/extra_le_equal_string.eye +2 -0
  19. package/test/conformance/cases/arithmetic/extra_log_one.eye +2 -0
  20. package/test/conformance/cases/arithmetic/extra_mod_negative_right.eye +2 -0
  21. package/test/conformance/cases/arithmetic/extra_pow_large_integer.eye +2 -0
  22. package/test/conformance/cases/atoms/extra_graphic_backslash_atom.eye +2 -0
  23. package/test/conformance/cases/atoms/extra_iri_mailto_plus.eye +2 -0
  24. package/test/conformance/cases/atoms/extra_iri_uuid_scheme.eye +2 -0
  25. package/test/conformance/cases/atoms/extra_quoted_atom_with_quote_readback.eye +2 -0
  26. package/test/conformance/cases/builtins/extra_difference_end_before_start_fails.eye +2 -0
  27. package/test/conformance/cases/builtins/extra_difference_invalid_date_fails.eye +2 -0
  28. package/test/conformance/cases/builtins/extra_eq_binds_both_sides.eye +2 -0
  29. package/test/conformance/cases/builtins/extra_neq_different_iri_atoms.eye +2 -0
  30. package/test/conformance/cases/builtins/extra_neq_same_iri_fails.eye +2 -0
  31. package/test/conformance/cases/context/extra_holds_atom_parts.eye +2 -0
  32. package/test/conformance/cases/context/extra_holds_ignores_string_parts.eye +2 -0
  33. package/test/conformance/cases/context/extra_holds_list_parts.eye +2 -0
  34. package/test/conformance/cases/context/extra_holds_term_nested_order.eye +2 -0
  35. package/test/conformance/cases/control/extra_forall_bound_check.eye +2 -0
  36. package/test/conformance/cases/control/extra_forall_counterexample_fails.eye +2 -0
  37. package/test/conformance/cases/control/extra_not_unbound_existing_goal_fails.eye +3 -0
  38. package/test/conformance/cases/control/extra_not_unbound_unknown_goal_succeeds.eye +2 -0
  39. package/test/conformance/cases/control/extra_once_empty_fails.eye +2 -0
  40. package/test/conformance/cases/control/extra_once_preserves_binding.eye +2 -0
  41. package/test/conformance/cases/lists/extra_append_all_splits_three.eye +2 -0
  42. package/test/conformance/cases/lists/extra_append_to_improper_tail.eye +2 -0
  43. package/test/conformance/cases/lists/extra_drop_all.eye +2 -0
  44. package/test/conformance/cases/lists/extra_head_and_rest_improper.eye +2 -0
  45. package/test/conformance/cases/lists/extra_last_singleton.eye +2 -0
  46. package/test/conformance/cases/lists/extra_length_improper_fails.eye +2 -0
  47. package/test/conformance/cases/lists/extra_list_to_set_stable_order.eye +2 -0
  48. package/test/conformance/cases/lists/extra_member_repeated_nested.eye +2 -0
  49. package/test/conformance/cases/lists/extra_not_member_compound_fails.eye +2 -0
  50. package/test/conformance/cases/lists/extra_not_member_compound_success.eye +2 -0
  51. package/test/conformance/cases/lists/extra_nth0_duplicate_indexes.eye +2 -0
  52. package/test/conformance/cases/lists/extra_reverse_nested_terms.eye +2 -0
  53. package/test/conformance/cases/lists/extra_select_structured_duplicate.eye +2 -0
  54. package/test/conformance/cases/lists/extra_slice_end.eye +2 -0
  55. package/test/conformance/cases/lists/extra_sort_iri_atoms.eye +2 -0
  56. package/test/conformance/cases/lists/extra_take_all.eye +2 -0
  57. package/test/conformance/cases/materialize/extra_materialize_derived_only_with_same_source.eye +4 -0
  58. package/test/conformance/cases/materialize/extra_materialize_selects_arity.eye +4 -0
  59. package/test/conformance/cases/negation/extra_not_with_bound_fails.eye +3 -0
  60. package/test/conformance/cases/negation/extra_not_with_bound_success.eye +3 -0
  61. package/test/conformance/cases/rules/extra_left_to_right_multiple_bindings.eye +5 -0
  62. package/test/conformance/cases/rules/extra_structured_head_rule.eye +3 -0
  63. package/test/conformance/cases/strings/extra_atom_string_number_input.eye +2 -0
  64. package/test/conformance/cases/strings/extra_join_empty_list.eye +2 -0
  65. package/test/conformance/cases/strings/extra_join_iri_and_atom.eye +2 -0
  66. package/test/conformance/cases/strings/extra_lowercase_iri_atom.eye +2 -0
  67. package/test/conformance/cases/strings/extra_matches_invalid_pattern_fails.eye +2 -0
  68. package/test/conformance/cases/strings/extra_named_regex_optional_missing.eye +2 -0
  69. package/test/conformance/cases/strings/extra_number_string_atom_input.eye +2 -0
  70. package/test/conformance/cases/strings/extra_replace_multiple.eye +2 -0
  71. package/test/conformance/cases/strings/extra_split_empty_separator.eye +2 -0
  72. package/test/conformance/cases/strings/extra_substring_last_char.eye +2 -0
  73. package/test/conformance/cases/strings/extra_term_string_iri_list.eye +2 -0
  74. package/test/conformance/cases/strings/extra_uppercase_mixed_string.eye +2 -0
  75. package/test/conformance/cases/syntax/extra_comments_after_terms.eye +3 -0
  76. package/test/conformance/cases/syntax/extra_nested_parenthesized_body.eye +2 -0
  77. package/test/conformance/cases/table/extra_table_bound_cycle.eye +7 -0
  78. package/test/conformance/cases/table/extra_table_open_call_fallback.eye +5 -0
  79. package/test/conformance/cases/terms/extra_arg_atom_fails.eye +2 -0
  80. package/test/conformance/cases/terms/extra_arg_first_last.eye +2 -0
  81. package/test/conformance/cases/terms/extra_arg_zero_fails.eye +2 -0
  82. package/test/conformance/cases/terms/extra_compound_name_arguments_bad_args_fails.eye +2 -0
  83. package/test/conformance/cases/terms/extra_compound_name_arguments_construct_atom_zero.eye +2 -0
  84. package/test/conformance/cases/terms/extra_compound_name_arguments_construct_iri.eye +2 -0
  85. package/test/conformance/cases/terms/extra_compound_name_arguments_decompose_list.eye +2 -0
  86. package/test/conformance/cases/terms/extra_functor_list_cons.eye +2 -0
  87. package/test/conformance/cases/terms/extra_functor_number_scalar.eye +2 -0
  88. package/test/conformance/cases/terms/extra_functor_string_scalar.eye +2 -0
  89. package/test/conformance/cases/unification/extra_eq_iri_and_quoted_atom.eye +2 -0
  90. package/test/conformance/cases/unification/extra_eq_list_tail_binding.eye +2 -0
  91. package/test/conformance/cases/unification/extra_eq_nested_repeated_fails.eye +2 -0
  92. package/test/conformance/cases/unification/extra_eq_nested_repeated_success.eye +2 -0
  93. package/test/conformance/cases/unification/extra_eq_scalar_number_atom.eye +2 -0
  94. package/test/conformance/cases/unification/extra_eq_scalar_string_number.eye +2 -0
  95. package/test/conformance/cases/unification/extra_neq_compound_arity_mismatch.eye +2 -0
  96. package/test/conformance/cases/unification/extra_neq_scalar_same_lexical_fails.eye +2 -0
  97. package/test/conformance/cases/unification/extra_variable_clause_locality.eye +4 -0
  98. package/test/conformance/cases/variables/extra_anonymous_not_reused.eye +2 -0
  99. package/test/conformance/cases/variables/extra_named_variable_reused.eye +2 -0
  100. package/test/conformance/cases/variables/extra_question_underscore_named_distinct.eye +2 -0
  101. package/test/conformance/cases/variables/extra_question_uppercase_named.eye +2 -0
  102. package/test/conformance/errors/atoms/extra_angle_iri_backslash_rejected.eye +1 -0
  103. package/test/conformance/errors/atoms/extra_angle_iri_pipe_rejected.eye +1 -0
  104. package/test/conformance/errors/atoms/extra_angle_iri_quote_rejected.eye +1 -0
  105. package/test/conformance/errors/lists/extra_missing_tail_after_bar.eye +1 -0
  106. package/test/conformance/errors/lists/extra_unclosed_list_tail.eye +1 -0
  107. package/test/conformance/errors/rules/extra_empty_head_with_body.eye +1 -0
  108. package/test/conformance/errors/rules/extra_rule_without_body.eye +1 -0
  109. package/test/conformance/errors/syntax/extra_bad_backtick_character.eye +1 -0
  110. package/test/conformance/errors/syntax/extra_bad_iri_empty_body.eye +1 -0
  111. package/test/conformance/errors/syntax/extra_bad_list_double_comma.eye +1 -0
  112. package/test/conformance/errors/syntax/extra_bad_list_double_tail.eye +1 -0
  113. package/test/conformance/errors/syntax/extra_bad_number_two_decimal_points.eye +1 -0
  114. package/test/conformance/errors/syntax/extra_double_period_rejected.eye +1 -0
  115. package/test/conformance/errors/syntax/extra_extra_closing_paren.eye +1 -0
  116. package/test/conformance/errors/syntax/extra_missing_closing_rule_body.eye +1 -0
  117. package/test/conformance/errors/syntax/extra_missing_head_rejected.eye +1 -0
  118. package/test/conformance/errors/terms/extra_empty_nested_compound.eye +1 -0
  119. package/test/conformance/errors/terms/extra_empty_top_level_compound.eye +1 -0
  120. package/test/conformance/errors/variables/extra_bare_underscore_in_rule_head.eye +1 -0
  121. package/test/conformance/errors/variables/extra_question_dash_variable.eye +1 -0
  122. package/test/conformance/errors/variables/extra_uppercase_in_list.eye +1 -0
  123. package/test/conformance/expected/aggregation/extra_aggregate_max_iri_key.eye +1 -0
  124. package/test/conformance/expected/aggregation/extra_aggregate_min_tie_first.eye +1 -0
  125. package/test/conformance/expected/aggregation/extra_countall_with_filter.eye +1 -0
  126. package/test/conformance/expected/aggregation/extra_findall_repeated_template.eye +1 -0
  127. package/test/conformance/expected/aggregation/extra_sumall_float_template.eye +1 -0
  128. package/test/conformance/expected/arithmetic/extra_acos_one.eye +1 -0
  129. package/test/conformance/expected/arithmetic/extra_asin_zero.eye +1 -0
  130. package/test/conformance/expected/arithmetic/extra_atan2_axis.eye +1 -0
  131. package/test/conformance/expected/arithmetic/extra_difference_leap_day.eye +1 -0
  132. package/test/conformance/expected/arithmetic/extra_difference_same_day.eye +1 -0
  133. package/test/conformance/expected/arithmetic/extra_div_float_exact.eye +1 -0
  134. package/test/conformance/expected/arithmetic/extra_div_integer_trunc.eye +1 -0
  135. package/test/conformance/expected/arithmetic/extra_division_by_zero_fails.eye +0 -0
  136. package/test/conformance/expected/arithmetic/extra_exp_zero.eye +1 -0
  137. package/test/conformance/expected/arithmetic/extra_ge_equal_duration.eye +1 -0
  138. package/test/conformance/expected/arithmetic/extra_le_equal_string.eye +1 -0
  139. package/test/conformance/expected/arithmetic/extra_log_one.eye +1 -0
  140. package/test/conformance/expected/arithmetic/extra_mod_negative_right.eye +1 -0
  141. package/test/conformance/expected/arithmetic/extra_pow_large_integer.eye +1 -0
  142. package/test/conformance/expected/atoms/extra_graphic_backslash_atom.eye +0 -0
  143. package/test/conformance/expected/atoms/extra_iri_mailto_plus.eye +0 -0
  144. package/test/conformance/expected/atoms/extra_iri_uuid_scheme.eye +0 -0
  145. package/test/conformance/expected/atoms/extra_quoted_atom_with_quote_readback.eye +0 -0
  146. package/test/conformance/expected/builtins/extra_difference_end_before_start_fails.eye +0 -0
  147. package/test/conformance/expected/builtins/extra_difference_invalid_date_fails.eye +0 -0
  148. package/test/conformance/expected/builtins/extra_eq_binds_both_sides.eye +1 -0
  149. package/test/conformance/expected/builtins/extra_neq_different_iri_atoms.eye +1 -0
  150. package/test/conformance/expected/builtins/extra_neq_same_iri_fails.eye +0 -0
  151. package/test/conformance/expected/context/extra_holds_atom_parts.eye +2 -0
  152. package/test/conformance/expected/context/extra_holds_ignores_string_parts.eye +0 -0
  153. package/test/conformance/expected/context/extra_holds_list_parts.eye +2 -0
  154. package/test/conformance/expected/context/extra_holds_term_nested_order.eye +3 -0
  155. package/test/conformance/expected/control/extra_forall_bound_check.eye +1 -0
  156. package/test/conformance/expected/control/extra_forall_counterexample_fails.eye +0 -0
  157. package/test/conformance/expected/control/extra_not_unbound_existing_goal_fails.eye +0 -0
  158. package/test/conformance/expected/control/extra_not_unbound_unknown_goal_succeeds.eye +1 -0
  159. package/test/conformance/expected/control/extra_once_empty_fails.eye +0 -0
  160. package/test/conformance/expected/control/extra_once_preserves_binding.eye +1 -0
  161. package/test/conformance/expected/lists/extra_append_all_splits_three.eye +4 -0
  162. package/test/conformance/expected/lists/extra_append_to_improper_tail.eye +1 -0
  163. package/test/conformance/expected/lists/extra_drop_all.eye +1 -0
  164. package/test/conformance/expected/lists/extra_head_and_rest_improper.eye +1 -0
  165. package/test/conformance/expected/lists/extra_last_singleton.eye +1 -0
  166. package/test/conformance/expected/lists/extra_length_improper_fails.eye +0 -0
  167. package/test/conformance/expected/lists/extra_list_to_set_stable_order.eye +1 -0
  168. package/test/conformance/expected/lists/extra_member_repeated_nested.eye +2 -0
  169. package/test/conformance/expected/lists/extra_not_member_compound_fails.eye +0 -0
  170. package/test/conformance/expected/lists/extra_not_member_compound_success.eye +1 -0
  171. package/test/conformance/expected/lists/extra_nth0_duplicate_indexes.eye +2 -0
  172. package/test/conformance/expected/lists/extra_reverse_nested_terms.eye +1 -0
  173. package/test/conformance/expected/lists/extra_select_structured_duplicate.eye +2 -0
  174. package/test/conformance/expected/lists/extra_slice_end.eye +1 -0
  175. package/test/conformance/expected/lists/extra_sort_iri_atoms.eye +1 -0
  176. package/test/conformance/expected/lists/extra_take_all.eye +1 -0
  177. package/test/conformance/expected/materialize/extra_materialize_derived_only_with_same_source.eye +1 -0
  178. package/test/conformance/expected/materialize/extra_materialize_selects_arity.eye +0 -0
  179. package/test/conformance/expected/negation/extra_not_with_bound_fails.eye +0 -0
  180. package/test/conformance/expected/negation/extra_not_with_bound_success.eye +1 -0
  181. package/test/conformance/expected/rules/extra_left_to_right_multiple_bindings.eye +2 -0
  182. package/test/conformance/expected/rules/extra_structured_head_rule.eye +1 -0
  183. package/test/conformance/expected/strings/extra_atom_string_number_input.eye +1 -0
  184. package/test/conformance/expected/strings/extra_join_empty_list.eye +1 -0
  185. package/test/conformance/expected/strings/extra_join_iri_and_atom.eye +1 -0
  186. package/test/conformance/expected/strings/extra_lowercase_iri_atom.eye +1 -0
  187. package/test/conformance/expected/strings/extra_matches_invalid_pattern_fails.eye +0 -0
  188. package/test/conformance/expected/strings/extra_named_regex_optional_missing.eye +1 -0
  189. package/test/conformance/expected/strings/extra_number_string_atom_input.eye +1 -0
  190. package/test/conformance/expected/strings/extra_replace_multiple.eye +1 -0
  191. package/test/conformance/expected/strings/extra_split_empty_separator.eye +1 -0
  192. package/test/conformance/expected/strings/extra_substring_last_char.eye +1 -0
  193. package/test/conformance/expected/strings/extra_term_string_iri_list.eye +1 -0
  194. package/test/conformance/expected/strings/extra_uppercase_mixed_string.eye +1 -0
  195. package/test/conformance/expected/syntax/extra_comments_after_terms.eye +0 -0
  196. package/test/conformance/expected/syntax/extra_nested_parenthesized_body.eye +1 -0
  197. package/test/conformance/expected/table/extra_table_bound_cycle.eye +2 -0
  198. package/test/conformance/expected/table/extra_table_open_call_fallback.eye +2 -0
  199. package/test/conformance/expected/terms/extra_arg_atom_fails.eye +0 -0
  200. package/test/conformance/expected/terms/extra_arg_first_last.eye +1 -0
  201. package/test/conformance/expected/terms/extra_arg_zero_fails.eye +0 -0
  202. package/test/conformance/expected/terms/extra_compound_name_arguments_bad_args_fails.eye +0 -0
  203. package/test/conformance/expected/terms/extra_compound_name_arguments_construct_atom_zero.eye +1 -0
  204. package/test/conformance/expected/terms/extra_compound_name_arguments_construct_iri.eye +1 -0
  205. package/test/conformance/expected/terms/extra_compound_name_arguments_decompose_list.eye +1 -0
  206. package/test/conformance/expected/terms/extra_functor_list_cons.eye +1 -0
  207. package/test/conformance/expected/terms/extra_functor_number_scalar.eye +1 -0
  208. package/test/conformance/expected/terms/extra_functor_string_scalar.eye +1 -0
  209. package/test/conformance/expected/unification/extra_eq_iri_and_quoted_atom.eye +1 -0
  210. package/test/conformance/expected/unification/extra_eq_list_tail_binding.eye +1 -0
  211. package/test/conformance/expected/unification/extra_eq_nested_repeated_fails.eye +0 -0
  212. package/test/conformance/expected/unification/extra_eq_nested_repeated_success.eye +1 -0
  213. package/test/conformance/expected/unification/extra_eq_scalar_number_atom.eye +1 -0
  214. package/test/conformance/expected/unification/extra_eq_scalar_string_number.eye +1 -0
  215. package/test/conformance/expected/unification/extra_neq_compound_arity_mismatch.eye +1 -0
  216. package/test/conformance/expected/unification/extra_neq_scalar_same_lexical_fails.eye +0 -0
  217. package/test/conformance/expected/unification/extra_variable_clause_locality.eye +2 -0
  218. package/test/conformance/expected/variables/extra_anonymous_not_reused.eye +1 -0
  219. package/test/conformance/expected/variables/extra_named_variable_reused.eye +1 -0
  220. package/test/conformance/expected/variables/extra_question_underscore_named_distinct.eye +1 -0
  221. package/test/conformance/expected/variables/extra_question_uppercase_named.eye +1 -0
  222. package/test/conformance/expected-errors/atoms/extra_angle_iri_backslash_rejected.txt +1 -0
  223. package/test/conformance/expected-errors/atoms/extra_angle_iri_pipe_rejected.txt +1 -0
  224. package/test/conformance/expected-errors/atoms/extra_angle_iri_quote_rejected.txt +1 -0
  225. package/test/conformance/expected-errors/lists/extra_missing_tail_after_bar.txt +1 -0
  226. package/test/conformance/expected-errors/lists/extra_unclosed_list_tail.txt +1 -0
  227. package/test/conformance/expected-errors/rules/extra_empty_head_with_body.txt +1 -0
  228. package/test/conformance/expected-errors/rules/extra_rule_without_body.txt +1 -0
  229. package/test/conformance/expected-errors/syntax/extra_bad_backtick_character.txt +1 -0
  230. package/test/conformance/expected-errors/syntax/extra_bad_iri_empty_body.txt +1 -0
  231. package/test/conformance/expected-errors/syntax/extra_bad_list_double_comma.txt +1 -0
  232. package/test/conformance/expected-errors/syntax/extra_bad_list_double_tail.txt +1 -0
  233. package/test/conformance/expected-errors/syntax/extra_bad_number_two_decimal_points.txt +1 -0
  234. package/test/conformance/expected-errors/syntax/extra_double_period_rejected.txt +1 -0
  235. package/test/conformance/expected-errors/syntax/extra_extra_closing_paren.txt +1 -0
  236. package/test/conformance/expected-errors/syntax/extra_missing_closing_rule_body.txt +1 -0
  237. package/test/conformance/expected-errors/syntax/extra_missing_head_rejected.txt +1 -0
  238. package/test/conformance/expected-errors/terms/extra_empty_nested_compound.txt +1 -0
  239. package/test/conformance/expected-errors/terms/extra_empty_top_level_compound.txt +1 -0
  240. package/test/conformance/expected-errors/variables/extra_bare_underscore_in_rule_head.txt +1 -0
  241. package/test/conformance/expected-errors/variables/extra_question_dash_variable.txt +1 -0
  242. package/test/conformance/expected-errors/variables/extra_uppercase_in_list.txt +1 -0
  243. package/test/conformance/expected-proofs/proofs/extra_aggregate_min.eye +16 -0
  244. package/test/conformance/expected-proofs/proofs/extra_compound_name_arguments.eye +16 -0
  245. package/test/conformance/expected-proofs/proofs/extra_eq_builtin.eye +16 -0
  246. package/test/conformance/expected-proofs/proofs/extra_findall_builtin.eye +16 -0
  247. package/test/conformance/expected-proofs/proofs/extra_forall_builtin.eye +15 -0
  248. package/test/conformance/expected-proofs/proofs/extra_holds_parts.eye +32 -0
  249. package/test/conformance/expected-proofs/proofs/extra_iri_join.eye +16 -0
  250. package/test/conformance/expected-proofs/proofs/extra_negation_success.eye +15 -0
  251. package/test/conformance/expected-proofs/proofs/extra_nested_list_binding.eye +16 -0
  252. package/test/conformance/expected-proofs/proofs/extra_once_member.eye +22 -0
  253. package/test/conformance/expected-proofs/proofs/extra_recursive_path.eye +59 -0
  254. package/test/conformance/expected-proofs/proofs/extra_table_path_bound.eye +57 -0
  255. package/test/conformance/expected-warnings/negation/extra_stratified_multiple_negations_quiet.eye +1 -0
  256. package/test/conformance/expected-warnings/negation/extra_stratified_multiple_negations_quiet.txt +0 -0
  257. package/test/conformance/expected-warnings/negation/extra_stratified_negation_with_table_quiet.eye +1 -0
  258. package/test/conformance/expected-warnings/negation/extra_stratified_negation_with_table_quiet.txt +0 -0
  259. package/test/conformance/expected-warnings/negation/extra_unstratified_indirect_self_with_fact.eye +0 -0
  260. package/test/conformance/expected-warnings/negation/extra_unstratified_indirect_self_with_fact.txt +2 -0
  261. package/test/conformance/expected-warnings/negation/extra_unstratified_positive_negative_loop.eye +0 -0
  262. package/test/conformance/expected-warnings/negation/extra_unstratified_positive_negative_loop.txt +2 -0
  263. package/test/conformance/expected-warnings/negation/extra_unstratified_three_cycle_all_negative.eye +0 -0
  264. package/test/conformance/expected-warnings/negation/extra_unstratified_three_cycle_all_negative.txt +4 -0
  265. package/test/conformance/expected-warnings/negation/extra_warning_preserves_empty_stdout.eye +0 -0
  266. package/test/conformance/expected-warnings/negation/extra_warning_preserves_empty_stdout.txt +3 -0
  267. package/test/conformance/proofs/proofs/extra_aggregate_min.eye +4 -0
  268. package/test/conformance/proofs/proofs/extra_compound_name_arguments.eye +2 -0
  269. package/test/conformance/proofs/proofs/extra_eq_builtin.eye +2 -0
  270. package/test/conformance/proofs/proofs/extra_findall_builtin.eye +4 -0
  271. package/test/conformance/proofs/proofs/extra_forall_builtin.eye +2 -0
  272. package/test/conformance/proofs/proofs/extra_holds_parts.eye +2 -0
  273. package/test/conformance/proofs/proofs/extra_iri_join.eye +2 -0
  274. package/test/conformance/proofs/proofs/extra_negation_success.eye +3 -0
  275. package/test/conformance/proofs/proofs/extra_nested_list_binding.eye +2 -0
  276. package/test/conformance/proofs/proofs/extra_once_member.eye +2 -0
  277. package/test/conformance/proofs/proofs/extra_recursive_path.eye +5 -0
  278. package/test/conformance/proofs/proofs/extra_table_path_bound.eye +7 -0
  279. package/test/conformance/warnings/negation/extra_stratified_multiple_negations_quiet.eye +4 -0
  280. package/test/conformance/warnings/negation/extra_stratified_negation_with_table_quiet.eye +6 -0
  281. package/test/conformance/warnings/negation/extra_unstratified_indirect_self_with_fact.eye +5 -0
  282. package/test/conformance/warnings/negation/extra_unstratified_positive_negative_loop.eye +5 -0
  283. package/test/conformance/warnings/negation/extra_unstratified_three_cycle_all_negative.eye +5 -0
  284. package/test/conformance/warnings/negation/extra_warning_preserves_empty_stdout.eye +3 -0
  285. package/test/run-regression.mjs +1 -1
@@ -4,22 +4,22 @@ This report summarizes the file-based conformance corpus under `test/conformance
4
4
 
5
5
  | Category | Positive | Errors | Warnings | Proofs | Total |
6
6
  |---|---:|---:|---:|---:|---:|
7
- | aggregation | 12 | 0 | 0 | 0 | 12 |
8
- | arithmetic | 26 | 0 | 0 | 0 | 26 |
9
- | atoms | 18 | 5 | 0 | 0 | 23 |
10
- | builtins | 5 | 0 | 0 | 0 | 5 |
11
- | context | 7 | 0 | 0 | 0 | 7 |
12
- | control | 9 | 0 | 0 | 0 | 9 |
7
+ | aggregation | 17 | 0 | 0 | 0 | 17 |
8
+ | arithmetic | 40 | 0 | 0 | 0 | 40 |
9
+ | atoms | 22 | 8 | 0 | 0 | 30 |
10
+ | builtins | 10 | 0 | 0 | 0 | 10 |
11
+ | context | 11 | 0 | 0 | 0 | 11 |
12
+ | control | 15 | 0 | 0 | 0 | 15 |
13
13
  | declarations | 6 | 0 | 0 | 0 | 6 |
14
- | lists | 38 | 1 | 0 | 0 | 39 |
15
- | materialize | 6 | 0 | 0 | 0 | 6 |
16
- | negation | 6 | 0 | 13 | 0 | 19 |
17
- | proofs | 0 | 0 | 0 | 8 | 8 |
18
- | rules | 10 | 1 | 0 | 0 | 11 |
19
- | strings | 28 | 0 | 0 | 0 | 28 |
20
- | syntax | 9 | 19 | 0 | 0 | 28 |
21
- | table | 4 | 0 | 0 | 0 | 4 |
22
- | terms | 15 | 1 | 0 | 0 | 16 |
23
- | unification | 7 | 0 | 0 | 0 | 7 |
24
- | variables | 12 | 8 | 0 | 0 | 20 |
25
- | **Total** | **218** | **35** | **13** | **8** | **274** |
14
+ | lists | 54 | 3 | 0 | 0 | 57 |
15
+ | materialize | 8 | 0 | 0 | 0 | 8 |
16
+ | negation | 8 | 0 | 19 | 0 | 27 |
17
+ | proofs | 0 | 0 | 0 | 20 | 20 |
18
+ | rules | 12 | 3 | 0 | 0 | 15 |
19
+ | strings | 40 | 0 | 0 | 0 | 40 |
20
+ | syntax | 11 | 28 | 0 | 0 | 39 |
21
+ | table | 6 | 0 | 0 | 0 | 6 |
22
+ | terms | 25 | 3 | 0 | 0 | 28 |
23
+ | unification | 16 | 0 | 0 | 0 | 16 |
24
+ | variables | 16 | 11 | 0 | 0 | 27 |
25
+ | **Total** | **317** | **56** | **19** | **20** | **412** |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eyelang",
3
- "version": "1.7.7",
3
+ "version": "1.7.8",
4
4
  "description": "A small Prolog-like logic programming language for rules, goals, answers, and proofs.",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -0,0 +1,4 @@
1
+ materialize(answer, 3).
2
+ rank(<urn:example:a>, low).
3
+ rank(<urn:example:z>, high).
4
+ answer(aggregate_max_iri_key, ?key, ?value) :- aggregate_max(?k, ?v, rank(?k, ?v), ?key, ?value).
@@ -0,0 +1,5 @@
1
+ materialize(answer, 3).
2
+ score(2, first).
3
+ score(1, keep).
4
+ score(1, also).
5
+ answer(aggregate_min_tie_first, ?key, ?value) :- aggregate_min(?k, ?v, score(?k, ?v), ?key, ?value).
@@ -0,0 +1,5 @@
1
+ materialize(answer, 2).
2
+ num(1).
3
+ num(2).
4
+ num(3).
5
+ answer(countall_with_filter, ?n) :- countall((num(?x), gt(?x, 1)), ?n).
@@ -0,0 +1,4 @@
1
+ materialize(answer, 2).
2
+ item(a).
3
+ item(b).
4
+ answer(findall_repeated_template, ?bag) :- findall(pair(?x, ?x), item(?x), ?bag).
@@ -0,0 +1,4 @@
1
+ materialize(answer, 2).
2
+ val(1.5).
3
+ val(2.25).
4
+ answer(sumall_float_template, ?sum) :- sumall(?x, val(?x), ?sum).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(acos_one, ?x) :- acos(1, ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(asin_zero, ?x) :- asin(0, ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(atan2_axis, ?x) :- atan2(0, 1, ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(difference_leap_day, ?x) :- difference("2024-03-01", "2024-02-28", ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(difference_same_day, ?x) :- difference("2026-06-23", "2026-06-23", ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(div_float_exact, ?x) :- div(7.5, 2.5, ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(div_integer_trunc, ?x) :- div(7, 2, ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(division_by_zero_fails) :- div(1, 0, ?_).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(exp_zero, ?x) :- exp(0, ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(ge_equal_duration) :- ge("P1Y2M3D", "P1Y2M3D").
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(le_equal_string) :- le("abc", "abc").
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(log_one, ?x) :- log(1, ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(mod_negative_right, ?x) :- mod(7, -3, ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(pow_large_integer, ?x) :- pow(2, 10, ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(graphic_backslash_atom, \).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(iri_mailto_plus, <mailto:jos+eyelang@example.org>).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(iri_uuid_scheme, <urn:uuid:123e4567-e89b-12d3-a456-426614174000>).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(quoted_atom_with_quote_readback, 'can''t').
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(difference_end_before_start_fails) :- difference("2024-01-01", "2024-01-02", ?_).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(difference_invalid_date_fails) :- difference("2024-02-30", "2024-02-01", ?_).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 3).
2
+ answer(eq_binds_both_sides, ?x, ?y) :- eq(pair(?x, b), pair(a, ?y)).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(neq_different_iri_atoms) :- neq(<urn:example:a>, <urn:example:b>).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(neq_same_iri_fails) :- neq(<urn:example:a>, 'urn:example:a').
@@ -0,0 +1,2 @@
1
+ materialize(answer, 3).
2
+ answer(holds_atom_parts, ?name, ?args) :- holds((ready, box(a)), ?name, ?args).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(holds_ignores_string_parts) :- holds("not a term", ?_, ?_).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 3).
2
+ answer(holds_list_parts, ?name, ?args) :- holds(([a, b], tail), ?name, ?args).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(holds_term_nested_order, ?x) :- holds((a, (b, c)), ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(forall_bound_check) :- forall(member(?x, [1, 2, 3]), lt(?x, 4)).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(forall_counterexample_fails) :- forall(member(?x, [1, 2, 3]), lt(?x, 3)).
@@ -0,0 +1,3 @@
1
+ materialize(answer, 1).
2
+ p(a).
3
+ answer(not_unbound_existing_goal_fails) :- not(p(?x)).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(not_unbound_unknown_goal_succeeds) :- not(missing(?x)).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(once_empty_fails) :- once(missing).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(once_preserves_binding, ?x) :- once(member(?x, [a, b])).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(append_split, pair(?left, ?right)) :- append(?left, ?right, [a, b, c]).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(append_to_improper_tail, ?x) :- append([a, b], tail, ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(drop_all, ?x) :- drop(3, [a, b, c], ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 3).
2
+ answer(head_and_rest_improper, ?h, ?r) :- head([a | b], ?h), rest([a | b], ?r).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(last_singleton, ?x) :- last([only], ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(length_improper_fails) :- length([a | b], ?_).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(list_to_set_stable_order, ?x) :- list_to_set([b, a, b, c, a], ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(member_repeated_nested, ?x) :- member(pair(?x, ?x), [pair(a, a), pair(a, b), pair(b, b)]).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(not_member_compound_fails) :- not_member(box(a), [box(a), box(b)]).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(not_member_compound_success) :- not_member(box(c), [box(a), box(b)]).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(nth0_duplicate_index, ?i) :- nth0(?i, [a, b, a], a).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(reverse_nested_terms, ?x) :- reverse([box(a), [b, c], <urn:example:d>], ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(select_structured_duplicate, ?rest) :- select(box(a), [box(a), box(b), box(a)], ?rest).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(slice_end, ?x) :- slice(2, 2, [a, b, c, d], ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(sort_iri_atoms, ?x) :- sort([<urn:example:b>, <urn:example:a>], ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(take_all, ?x) :- take(3, [a, b, c], ?x).
@@ -0,0 +1,4 @@
1
+ materialize(answer, 1).
2
+ base(ok).
3
+ answer(source).
4
+ answer(derived) :- base(ok).
@@ -0,0 +1,4 @@
1
+ materialize(item, 2).
2
+ item(a).
3
+ item(a, b).
4
+ item(c, d).
@@ -0,0 +1,3 @@
1
+ materialize(answer, 1).
2
+ known(a).
3
+ answer(not_with_bound_fails) :- not(known(a)).
@@ -0,0 +1,3 @@
1
+ materialize(answer, 2).
2
+ known(a).
3
+ answer(not_with_bound_success, b) :- not(known(b)).
@@ -0,0 +1,5 @@
1
+ materialize(answer, 3).
2
+ left(a).
3
+ right(a, one).
4
+ right(a, two).
5
+ answer(left_to_right_multiple_bindings, ?x, ?y) :- left(?x), right(?x, ?y).
@@ -0,0 +1,3 @@
1
+ materialize(answer, 2).
2
+ pair_key(pair(a, b)).
3
+ answer(structured_head_rule, ?x) :- pair_key(pair(?x, b)).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(atom_string_number_input, ?x) :- atom_string(?x, 42).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(join_empty_list, ?x) :- join([], ",", ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(join_iri_and_atom, ?x) :- join([<urn:example:a>, path, 7], "/", ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(lowercase_iri_atom, ?x) :- lowercase(<URN:EXAMPLE:ABC>, ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(matches_invalid_pattern_fails) :- matches("abc", "[").
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(named_regex_optional_missing, ?x) :- matches("abc", "(?<first>a)(?<missing>z)?", ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(number_string_atom_input, ?x) :- number_string(?x, '42').
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(replace_multiple, ?x) :- replace("banana", "na", "NA", ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(split_empty_separator, ?x) :- split("ab", "", ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(substring_last_char, ?x) :- substring("abcd", 3, 1, ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(term_string_iri_list, ?x) :- term_string([<urn:example:a>, box("B")], ?x).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(uppercase_mixed_string, ?x) :- uppercase("aBc-1", ?x).
@@ -0,0 +1,3 @@
1
+ % Leading comment
2
+ materialize(answer, 2). % declaration comment
3
+ answer(comments_after_terms, ok). % fact comment
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(nested_parenthesized_body) :- ((eq(a, a), eq(b, b))).
@@ -0,0 +1,7 @@
1
+ materialize(reach, 2).
2
+ table(path, 2).
3
+ edge(a, b).
4
+ edge(b, a).
5
+ path(?x, ?y) :- edge(?x, ?y).
6
+ path(?x, ?z) :- edge(?x, ?y), path(?y, ?z).
7
+ reach(a, ?x) :- path(a, ?x).
@@ -0,0 +1,5 @@
1
+ materialize(answer, 2).
2
+ table(edge, 2).
3
+ edge(a, b).
4
+ edge(b, c).
5
+ answer(table_open_call_fallback, pair(?x, ?y)) :- edge(?x, ?y).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(arg_atom_fails) :- arg(1, atom, ?_).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 3).
2
+ answer(arg_first_last, ?first, ?last) :- arg(1, triple(a, b, c), ?first), arg(3, triple(a, b, c), ?last).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(arg_zero_fails) :- arg(0, pair(a, b), ?_).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(compound_name_arguments_bad_args_fails) :- compound_name_arguments(?_, pair, not_a_list).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(compound_name_arguments_construct_atom_zero, ?x) :- compound_name_arguments(?x, nil, []).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(compound_name_arguments_construct_iri, ?x) :- compound_name_arguments(?x, <urn:example:pair>, [a, b]).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 3).
2
+ answer(compound_name_arguments_decompose_list, ?name, ?args) :- compound_name_arguments([a | b], ?name, ?args).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 3).
2
+ answer(functor_list_cons, ?name, ?arity) :- functor([a, b], ?name, ?arity).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 3).
2
+ answer(functor_number_scalar, ?name, ?arity) :- functor(123, ?name, ?arity).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 3).
2
+ answer(functor_string_scalar, ?name, ?arity) :- functor("hello", ?name, ?arity).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(eq_iri_and_quoted_atom) :- eq(<urn:example:a>, 'urn:example:a').
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(eq_list_tail_binding, ?tail) :- eq([a, b | ?tail], [a, b, c, d]).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(eq_nested_repeated_fails) :- eq(pair(?x, ?x), pair(a, b)).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(eq_nested_repeated_success, ?x) :- eq(pair(?x, ?x), pair(a, a)).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(eq_scalar_number_atom) :- eq(7, '7').
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(eq_scalar_string_number) :- eq("7", 7).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(neq_compound_arity_mismatch) :- neq(f(a), f(a, b)).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(neq_scalar_same_lexical_fails) :- neq("7", 7).
@@ -0,0 +1,4 @@
1
+ materialize(answer, 2).
2
+ answer(variable_clause_locality, ?x) :- one(?x).
3
+ one(a).
4
+ one(b).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(anonymous_not_reused) :- eq(pair(?_, ?_), pair(a, b)).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 1).
2
+ answer(named_variable_reused) :- eq(pair(?x, ?x), pair(a, a)).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 3).
2
+ answer(question_underscore_named_distinct, ?_x, ?_y) :- eq(?_x, a), eq(?_y, b).
@@ -0,0 +1,2 @@
1
+ materialize(answer, 2).
2
+ answer(question_uppercase_named, ?X) :- eq(?X, ok).
@@ -0,0 +1 @@
1
+ p(<urn:example:\bad>).
@@ -0,0 +1 @@
1
+ p(<urn:example:|bad>).
@@ -0,0 +1 @@
1
+ p(<urn:example:"bad">).
@@ -0,0 +1 @@
1
+ p(<urn:example:bad{}>).
@@ -0,0 +1 @@
1
+ answer(aggregate_max_iri_key, <urn:example:z>, high).
@@ -0,0 +1 @@
1
+ answer(aggregate_min_tie_first, 1, keep).
@@ -0,0 +1 @@
1
+ answer(countall_with_filter, 2).