eyeprolog 1.1.13 → 1.1.15

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 (123) hide show
  1. package/README.md +8 -8
  2. package/examples/age.pl +1 -1
  3. package/examples/aliases-and-namespaces.pl +1 -1
  4. package/examples/binomial-vandermonde.pl +2 -1
  5. package/examples/book/README.md +1 -0
  6. package/examples/book/chapter-02/02-measurement.pl +0 -1
  7. package/examples/book/chapter-03/01-eligible.pl +0 -1
  8. package/examples/book/chapter-03/02-adult.pl +0 -1
  9. package/examples/book/chapter-04/02-path.pl +0 -1
  10. package/examples/book/chapter-06/01-next.pl +0 -1
  11. package/examples/book/chapter-06/03-square.pl +1 -1
  12. package/examples/book/chapter-08/01-findall.pl +1 -1
  13. package/examples/book/chapter-08/02-outgoing_costs.pl +1 -1
  14. package/examples/book/chapter-08/03-best_route.pl +1 -1
  15. package/examples/book/chapter-09/02-normalized.pl +1 -1
  16. package/examples/book/chapter-09/03-message.pl +0 -1
  17. package/examples/book/chapter-10/02-plan.pl +0 -1
  18. package/examples/book/chapter-11/01-why.pl +0 -1
  19. package/examples/book/chapter-17/01-path.pl +0 -1
  20. package/examples/book/chapter-17/02-adult.pl +0 -1
  21. package/examples/book/chapter-17/03-bad_member.pl +0 -1
  22. package/examples/book/chapter-18/01-routeable.pl +0 -1
  23. package/examples/book/chapter-18/02-routeable-2.pl +0 -1
  24. package/examples/book/chapter-21/03-loop_edge.pl +0 -1
  25. package/examples/book/chapter-21/04-eligible.pl +0 -1
  26. package/examples/book/chapter-22/02-tree_member.pl +0 -1
  27. package/examples/book/chapter-22/06-lookup.pl +0 -1
  28. package/examples/book/chapter-23/01-adult.pl +0 -1
  29. package/examples/book/chapter-23/02-adult-2.pl +0 -1
  30. package/examples/book/chapter-23/03-can_board.pl +0 -1
  31. package/examples/book/chapter-23/04-traveler_in_good_standing.pl +0 -1
  32. package/examples/book/chapter-24/02-simple_path.pl +0 -1
  33. package/examples/book/chapter-24/03-reachable.pl +0 -1
  34. package/examples/book/chapter-24/04-best_plan.pl +1 -1
  35. package/examples/book/chapter-25/01-person.pl +0 -1
  36. package/examples/book/chapter-25/02-active_badge.pl +0 -1
  37. package/examples/book/chapter-25/04-permit.pl +0 -1
  38. package/examples/book/chapter-26/02-triple.pl +1 -1
  39. package/examples/book/chapter-26/03-triple-2.pl +0 -1
  40. package/examples/book/chapter-26/04-edge.pl +0 -1
  41. package/examples/book/chapter-27/02-list_length.pl +0 -1
  42. package/examples/book/chapter-28/02-triangle.pl +1 -1
  43. package/examples/book/chapter-28/03-rectangle.pl +0 -1
  44. package/examples/book/chapter-28/04-integer_rectangle.pl +1 -1
  45. package/examples/book/chapter-28/05-preserves_combine.pl +0 -1
  46. package/examples/book/chapter-29/01-counterexample_to_odd_square.pl +1 -1
  47. package/examples/book/chapter-31/01-edge.pl +0 -1
  48. package/examples/book/chapter-31/03-double.pl +1 -1
  49. package/examples/book/chapter-32/01-eligible.pl +0 -1
  50. package/examples/book/chapter-32/02-eligible-2.pl +0 -1
  51. package/examples/book/chapter-32/03-candidate_debug.pl +0 -1
  52. package/examples/book/chapter-32/04-reference_square.pl +1 -1
  53. package/examples/book/chapter-33/01-assigned_badge.pl +0 -1
  54. package/examples/book/chapter-33/02-source_role.pl +1 -1
  55. package/examples/book/chapter-33/03-chosen_pair.pl +1 -1
  56. package/examples/book/chapter-33/04-path.pl +0 -1
  57. package/examples/book/chapter-33/09-invalid_badge_assignment.pl +0 -1
  58. package/examples/book/chapter-34/03-regional_total.pl +0 -1
  59. package/examples/book/chapter-38/01-city.pl +0 -1
  60. package/examples/book/chapter-39/01-answer.pl +3 -1
  61. package/examples/book/chapter-39/02-answer-2.pl +0 -1
  62. package/examples/book/chapter-39/03-answer-3.pl +1 -1
  63. package/examples/book/chapter-39/04-cost.pl +1 -1
  64. package/examples/book/chapter-39/05-message.pl +0 -1
  65. package/examples/book/chapter-39/06-task.pl +18 -0
  66. package/examples/catalan-convolution.pl +2 -1
  67. package/examples/collatz-1000.pl +1 -1
  68. package/examples/continued-fraction-sqrt2.pl +2 -1
  69. package/examples/critical-path-schedule.pl +1 -1
  70. package/examples/delfour.pl +1 -1
  71. package/examples/easter-computus.pl +1 -1
  72. package/examples/enigma1225.pl +1 -1
  73. package/examples/equality-saturation.pl +3 -2
  74. package/examples/flandor.pl +1 -1
  75. package/examples/fundamental-theorem-arithmetic.pl +2 -2
  76. package/examples/goldbach.pl +2 -1
  77. package/examples/integer-partitions.pl +2 -1
  78. package/examples/iso-extensions.pl +29 -0
  79. package/examples/job-shop-scheduling.pl +2 -1
  80. package/examples/knapsack-optimization.pl +1 -1
  81. package/examples/markov-logic-network.pl +1 -1
  82. package/examples/matrix-chain-order.pl +2 -1
  83. package/examples/missionaries-cannibals.pl +1 -1
  84. package/examples/observability-log-correlation.pl +1 -1
  85. package/examples/output/iso-extensions.pl +6 -0
  86. package/examples/path-discovery.pl +1 -1
  87. package/examples/pell-equation.pl +2 -1
  88. package/examples/polynomial.pl +1 -1
  89. package/examples/prime-range.pl +1 -1
  90. package/examples/register-allocation.pl +1 -1
  91. package/examples/reusable-builtins.pl +1 -1
  92. package/examples/sat-solver-dpll.pl +1 -1
  93. package/examples/stirling-bell-numbers.pl +2 -1
  94. package/examples/sudoku.pl +1 -1
  95. package/examples/term-tools.pl +1 -1
  96. package/examples/totient-summatory.pl +2 -1
  97. package/examples/uuid.pl +1 -1
  98. package/examples/weighted-interval-scheduling.pl +1 -1
  99. package/index.d.ts +5 -0
  100. package/package.json +1 -1
  101. package/playground.html +1 -0
  102. package/src/cli.js +10 -0
  103. package/src/iso.js +20 -3
  104. package/src/lib/aggregate.pl +33 -0
  105. package/src/lib/comparison.pl +107 -0
  106. package/src/lib/dates.pl +112 -0
  107. package/src/lib/iso_ext.pl +84 -0
  108. package/src/lib/lists.pl +57 -31
  109. package/src/lib/primes.pl +79 -0
  110. package/src/lib/prologue.pl +4 -0
  111. package/src/lib/random.pl +24 -0
  112. package/src/lib/strings.pl +411 -0
  113. package/src/lib/uuid.pl +54 -0
  114. package/src/quads.js +28 -6
  115. package/src/solver.js +38 -2
  116. package/src/standard-library.js +16 -7
  117. package/src/term.js +20 -0
  118. package/test/fixtures/length_quad.pl +94 -0
  119. package/test/run-conformance.mjs +10 -1
  120. package/test/run-playground.mjs +9 -1
  121. package/test/run-regression.mjs +77 -19
  122. package/the-art-of-eyeprolog.md +149 -96
  123. package/src/lib/eyeprolog.pl +0 -772
package/README.md CHANGED
@@ -91,14 +91,14 @@ noun --> [world] | [prolog].
91
91
  %% goal: phrase(sentence, Words)
92
92
  ```
93
93
 
94
- EyeProlog also adds 57 public library predicate indicators to its 129-entry ISO
95
- profile. **56 are implemented entirely as ordinary Prolog clauses** in
96
- `src/lib/eyeprolog.pl`, `src/lib/lists.pl`, and `src/lib/prologue.pl`; the
97
- `call_nth/2` module clause uses one private host adapter to number solutions.
98
- They are ISO/IEC 13211-2 modules,
99
- loaded explicitly with `use_module(library(eyeprolog))`,
100
- `use_module(library(lists))`, or `use_module(library(prologue))`. Portable text
101
- predicates use ISO atoms or character lists.
94
+ EyeProlog also adds 62 public library predicate indicators to its 129-entry ISO
95
+ profile. **60 are implemented entirely as ordinary Prolog clauses** in focused
96
+ modules under `src/lib/`; `call_nth/2` and `freeze/2` use private host adapters
97
+ for their control behavior.
98
+ They are ISO/IEC 13211-2 modules loaded explicitly by purpose, such as
99
+ `library(lists)`, `library(strings)`, or `library(aggregate)`. Portable text
100
+ predicates use ISO atoms or character lists. The old catch-all
101
+ `library(eyeprolog)` module is no longer needed.
102
102
 
103
103
  ## Development
104
104
 
package/examples/age.pl CHANGED
@@ -1,4 +1,4 @@
1
- :- use_module(library(eyeprolog)).
1
+ :- use_module(library(dates)).
2
2
 
3
3
  % Age checker adapted from Eyeling.
4
4
  % The example combines date literals, ISO-8601 duration values, an explicit
@@ -1,4 +1,4 @@
1
- :- use_module(library(eyeprolog)).
1
+ :- use_module(library(strings)).
2
2
 
3
3
  % Built-ins use one native spelling each, while vocabulary-style predicate names
4
4
  % remain ordinary user predicates.
@@ -1,4 +1,5 @@
1
- :- use_module(library(eyeprolog)).
1
+ :- use_module(library(aggregate)).
2
+ :- use_module(library(prologue), [between/3]).
2
3
 
3
4
  % Binomial coefficients and Vandermonde's identity.
4
5
  %
@@ -242,6 +242,7 @@ npm run generate
242
242
  - [03-answer-3.pl](chapter-39/03-answer-3.pl)
243
243
  - [04-cost.pl](chapter-39/04-cost.pl)
244
244
  - [05-message.pl](chapter-39/05-message.pl)
245
+ - [06-task.pl](chapter-39/06-task.pl)
245
246
 
246
247
  ## Chapter 40: Running EyeProlog: command line and corpus
247
248
 
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 2.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  measurement(battery_1, sample(17, volts(28.4), amps(12.1))).
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 3.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  eligible(Person) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 3.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  adult(Person) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 4 — Constructing the recursive argument.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  path(X, Y, [X, Y]) :- edge(X, Y).
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 6.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  next(X, Y) :- (Y is X + 1).
@@ -1,5 +1,5 @@
1
1
  % From The Art of EyeProlog, Chapter 6.
2
- :- use_module(library(eyeprolog)).
2
+ :- use_module(library(prologue), [between/3]).
3
3
  :- use_module(library(lists)).
4
4
 
5
5
  square(N, Square) :-
@@ -1,5 +1,5 @@
1
1
  % From The Art of EyeProlog, Chapter 8.
2
- :- use_module(library(eyeprolog)).
2
+ :- use_module(library(aggregate)).
3
3
  :- use_module(library(lists)).
4
4
 
5
5
  findall(Template, Goal, List).
@@ -1,5 +1,5 @@
1
1
  % From The Art of EyeProlog, Chapter 8.
2
- :- use_module(library(eyeprolog)).
2
+ :- use_module(library(aggregate)).
3
3
  :- use_module(library(lists)).
4
4
 
5
5
  outgoing_costs(Node, Costs) :-
@@ -1,5 +1,5 @@
1
1
  % From The Art of EyeProlog, Chapter 8.
2
- :- use_module(library(eyeprolog)).
2
+ :- use_module(library(aggregate)).
3
3
  :- use_module(library(lists)).
4
4
 
5
5
  best_route(From, To, Route, Cost) :-
@@ -1,5 +1,5 @@
1
1
  % From The Art of EyeProlog, Chapter 9.
2
- :- use_module(library(eyeprolog)).
2
+ :- use_module(library(strings)).
3
3
  :- use_module(library(lists)).
4
4
 
5
5
  normalized(Input, Words) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 9.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  message(event_17, (severity(high), source(sensor_3), reading(temp, 91))).
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 10.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  plan(State, State, _, []).
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 11.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  why(
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 17.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  path(X, Y) :- edge(X, Y).
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 17 — The same relation, a different computation.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  adult(Person) :- person(Person), age(Person, Age), (Age >= 18).
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 17.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  % Poor control: recursion starts before one list cell is exposed.
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 18 — Begin with ground sentences.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  routeable(parcel_7, hub_north).
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 18.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  routeable(Parcel, Hub) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 21.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  loop_edge(Node) :- edge(Node, Node).
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 21 — Failure rewinds choices, not facts.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  eligible(Person) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 22.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  tree_member(X, tree(X, _, _)).
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 22.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  lookup(Name, [binding(Name, Value) | _], Value).
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 23 — Unfolding and folding.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  adult(Person) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 23.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  adult(Person) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 23.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  can_board(Person) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 23.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  traveler_in_good_standing(Person) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 24 — Search over states.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  simple_path(From, To, Path) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 24 — Existence, one witness, and all witnesses.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  reachable(From, To).
@@ -1,5 +1,5 @@
1
1
  % From The Art of EyeProlog, Chapter 24 — Optimization is search plus an order.
2
- :- use_module(library(eyeprolog)).
2
+ :- use_module(library(aggregate)).
3
3
  :- use_module(library(lists)).
4
4
 
5
5
  best_plan(Request, Plan, Cost) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 25 — Source and concept layers.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  person(ada).
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 25.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  active_badge(Person, Badge) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 25 — Decision, reasons, and proof.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  permit(Person, Zone) :-
@@ -1,5 +1,5 @@
1
1
  % From The Art of EyeProlog, Chapter 26 — Answers are existential witnesses.
2
- :- use_module(library(eyeprolog)).
2
+ :- use_module(library(prologue), [between/3]).
3
3
  :- use_module(library(lists)).
4
4
 
5
5
  triple(A, B, C) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 26 — Proof objects and proof checking.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  triple(3, 4, 5).
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 26 — The least model as mathematical closure.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  edge(a, b).
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 27 — Structural induction and data design.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  list_length([], 0).
@@ -1,5 +1,5 @@
1
1
  % From The Art of EyeProlog, Chapter 28 — Symmetry reduces search.
2
- :- use_module(library(eyeprolog)).
2
+ :- use_module(library(prologue), [between/3]).
3
3
  :- use_module(library(lists)).
4
4
 
5
5
  triangle(A, B, C) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 28 — Relations reveal inverse problems.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  rectangle(W, H, Area) :- (Area is W * H).
@@ -1,5 +1,5 @@
1
1
  % From The Art of EyeProlog, Chapter 28.
2
- :- use_module(library(eyeprolog)).
2
+ :- use_module(library(prologue), [between/3]).
3
3
  :- use_module(library(lists)).
4
4
 
5
5
  integer_rectangle(Area, W, H) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 28 — Composition, homomorphism, and reusable laws.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  preserves_combine(X, Y) :-
@@ -1,5 +1,5 @@
1
1
  % From The Art of EyeProlog, Chapter 29 — Examples suggest; proofs compel.
2
- :- use_module(library(eyeprolog)).
2
+ :- use_module(library(prologue), [between/3]).
3
3
  :- use_module(library(lists)).
4
4
 
5
5
  counterexample_to_odd_square(N) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 31 — Positive and negative observers.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  edge(a, b).
@@ -1,5 +1,5 @@
1
1
  % From The Art of EyeProlog, Chapter 31 — Properties over finite domains.
2
- :- use_module(library(eyeprolog)).
2
+ :- use_module(library(prologue), [between/3]).
3
3
  :- use_module(library(lists)).
4
4
 
5
5
  double(N, D) :- (D is N + N).
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 32 — Follow bindings from left to right.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  eligible(Person) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 32.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  eligible(Person) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 32 — Create diagnostic relations.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  candidate_debug(Person, Age) :-
@@ -1,5 +1,5 @@
1
1
  % From The Art of EyeProlog, Chapter 32 — Compare specification and implementation.
2
- :- use_module(library(eyeprolog)).
2
+ :- use_module(library(prologue), [between/3]).
3
3
  :- use_module(library(lists)).
4
4
 
5
5
  reference_square(N, S) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 33 — Pattern 1: Ground sentence first.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  assigned_badge(alex, badge_17).
@@ -1,5 +1,5 @@
1
1
  % From The Art of EyeProlog, Chapter 33 — Pattern 2: Normalize at the boundary.
2
- :- use_module(library(eyeprolog)).
2
+ :- use_module(library(strings)).
3
3
  :- use_module(library(lists)).
4
4
 
5
5
  source_role(person_7, 'Doctor').
@@ -1,5 +1,5 @@
1
1
  % From The Art of EyeProlog, Chapter 33 — Pattern 3: Generate, constrain, describe.
2
- :- use_module(library(eyeprolog)).
2
+ :- use_module(library(prologue), [between/3]).
3
3
  :- use_module(library(lists)).
4
4
 
5
5
  chosen_pair(pair(X, Y), reason(sum_is_ten)) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 33 — Pattern 4: Carry the witness.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  path(X, Y, [X, Y]) :- edge(X, Y).
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 33 — Pattern 9: Integrity before inference.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  invalid_badge_assignment(Badge, PersonA, PersonB) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 34.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  regional_total(Region, Total) :-
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 38.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  city('München').
@@ -1,5 +1,7 @@
1
1
  % From The Art of EyeProlog, Chapter 39 — The EyeProlog library.
2
- :- use_module(library(eyeprolog)).
2
+ :- use_module(library(dates)).
3
+ :- use_module(library(prologue), [between/3]).
4
+ :- use_module(library(random)).
3
5
  :- use_module(library(lists)).
4
6
 
5
7
  answer(square, S) :- (S is 12 * 12).
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 39.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  answer(split, pair(Prefix, Suffix)) :-
@@ -1,5 +1,5 @@
1
1
  % From The Art of EyeProlog, Chapter 39.
2
- :- use_module(library(eyeprolog)).
2
+ :- use_module(library(strings)).
3
3
  :- use_module(library(lists)).
4
4
 
5
5
  answer(words, Words) :-
@@ -1,5 +1,5 @@
1
1
  % From The Art of EyeProlog, Chapter 39.
2
- :- use_module(library(eyeprolog)).
2
+ :- use_module(library(aggregate)).
3
3
  :- use_module(library(lists)).
4
4
 
5
5
  cost(a, 8).
@@ -1,5 +1,4 @@
1
1
  % From The Art of EyeProlog, Chapter 39.
2
- :- use_module(library(eyeprolog)).
3
2
  :- use_module(library(lists)).
4
3
 
5
4
  message(event_17,
@@ -0,0 +1,18 @@
1
+ % From The Art of EyeProlog, Chapter 39.
2
+ :- use_module(library(iso_ext)).
3
+
4
+ task(parse).
5
+ task(check).
6
+ task(report).
7
+
8
+ extension_answer(all_tasks_are_atoms, true) :-
9
+ forall(task(Task), atom(Task)).
10
+
11
+ extension_answer(numbered, Pairs) :-
12
+ findall(N-S, (cfor(1, 3, N), succ(N, S)), Pairs).
13
+
14
+ extension_answer(with_tail, Tasks) :-
15
+ findall(Task, task(Task), Tasks, [done]).
16
+
17
+ extension_answer(same_shape, true) :-
18
+ variant(node(X, X), node(Y, Y)).
@@ -1,4 +1,5 @@
1
- :- use_module(library(eyeprolog)).
1
+ :- use_module(library(aggregate)).
2
+ :- use_module(library(prologue), [between/3]).
2
3
 
3
4
  % Catalan numbers by automatically tabled convolution.
4
5
  %
@@ -1,4 +1,4 @@
1
- :- use_module(library(eyeprolog)).
1
+ :- use_module(library(prologue), [between/3]).
2
2
 
3
3
  % Collatz conjecture suite translated from Eyeling's examples/collatz-1000.n3.
4
4
  % It enumerates starts N = 1000, 999, ..., 1 by deriving N = 1000 - N0
@@ -1,4 +1,5 @@
1
- :- use_module(library(eyeprolog)).
1
+ :- use_module(library(aggregate)).
2
+ :- use_module(library(prologue), [between/3]).
2
3
 
3
4
  % Convergents of sqrt(2) by automatically tabled recurrence.
4
5
  %
@@ -1,4 +1,4 @@
1
- :- use_module(library(eyeprolog)).
1
+ :- use_module(library(aggregate)).
2
2
 
3
3
  % Critical-path scheduling for a small project network.
4
4
  %
@@ -1,4 +1,4 @@
1
- :- use_module(library(eyeprolog)).
1
+ :- use_module(library(strings)).
2
2
  :- use_module(library(lists)).
3
3
 
4
4
  % Delfour insight-economy case adapted from Eyeling delfour.n3.
@@ -1,4 +1,4 @@
1
- :- use_module(library(eyeprolog)).
1
+ :- use_module(library(prologue), [between/3]).
2
2
 
3
3
  % Gregorian Easter computus adapted from Eyeling's easter.n3.
4
4
  % Each case is a year in a sample decade. The rules derive the Meeus/Jones/
@@ -1,4 +1,4 @@
1
- :- use_module(library(eyeprolog)).
1
+ :- use_module(library(aggregate)).
2
2
  :- use_module(library(lists)).
3
3
 
4
4
  % New Scientist puzzle Enigma 1225
@@ -1,4 +1,5 @@
1
- :- use_module(library(eyeprolog)).
1
+ :- use_module(library(aggregate)).
2
+ :- use_module(library(prologue), [between/3]).
2
3
  :- use_module(library(lists)).
3
4
 
4
5
  % Bounded equality saturation over tiny arithmetic expression terms.
@@ -62,7 +63,7 @@ candidate_expression(Candidate) :-
62
63
  % their children. The numeric range is deliberately bounded for the generated
63
64
  % constants in this example.
64
65
  expr_cost(x, 1).
65
- expr_cost(N, 1) :- between(0, 20, N).
66
+ expr_cost(N, 1) :- integer(N), between(0, 20, N).
66
67
  expr_cost(add(A, B), Cost) :-
67
68
  expr_cost(A, A_cost),
68
69
  expr_cost(B, B_cost),
@@ -1,4 +1,4 @@
1
- :- use_module(library(eyeprolog)).
1
+ :- use_module(library(strings)).
2
2
 
3
3
  % Flandor insight-economy case adapted from Eyeling flandor.n3.
4
4
  % The original N3 renders a Markdown ARC report. This eyeprolog translation keeps
@@ -1,4 +1,4 @@
1
- :- use_module(library(eyeprolog)).
1
+ :- use_module(library(primes)).
2
2
  :- use_module(library(lists)).
3
3
 
4
4
  % Adapted from Eyeling's fundamental-theorem-arithmetic.n3.
@@ -40,7 +40,7 @@ divides(A, B) :-
40
40
  (B > 0),
41
41
  (0 is B mod A).
42
42
 
43
- % smallest_divisor_from/3 is exported by library(eyeprolog). Its
43
+ % smallest_divisor_from/3 is exported by library(primes). Its
44
44
  % implementation is plain Prolog and avoids repeating a long trial scan for
45
45
  % values that are prime.
46
46
 
@@ -1,4 +1,5 @@
1
- :- use_module(library(eyeprolog)).
1
+ :- use_module(library(primes)).
2
+ :- use_module(library(prologue), [between/3]).
2
3
 
3
4
  % Goldbach's_conjecture
4
5
  % See https://en.wikipedia.org/wiki/Goldbach%27s_conjecture:
@@ -1,4 +1,5 @@
1
- :- use_module(library(eyeprolog)).
1
+ :- use_module(library(aggregate)).
2
+ :- use_module(library(prologue), [between/3]).
2
3
 
3
4
  % Integer partition counts by tabled dynamic programming.
4
5
  %