eyeprolog 1.5.20 → 1.5.21

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.
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.5.20",
6
+ "version": "1.5.21",
7
7
  "description": "EyeProlog turns facts and rules into answers and proofs.",
8
8
  "type": "module",
9
9
  "main": "./index.js",
@@ -5547,6 +5547,21 @@ and document the command line; the conformance corpus fixes success, failure,
5547
5547
  mode, and error behavior. Use this part for working practice and those chapters
5548
5548
  for exact reference.
5549
5549
 
5550
+ ### Historical note: the practical language becomes portable
5551
+
5552
+ By the late 1970s and 1980s, Prolog had spread from its Marseille origins into
5553
+ several implementation traditions. The Edinburgh and DECsystem-10 lineage in
5554
+ particular helped establish a practical programming vocabulary around ordered
5555
+ control, term inspection, dynamic clauses, operators, and streams. These
5556
+ facilities made Prolog useful far beyond theorem-proving examples, but
5557
+ differences between systems also made portability a recurring concern.
5558
+
5559
+ ISO/IEC 13211-1:1995 gave that accumulated practice a common core. It did not
5560
+ freeze the language: constraints, modules, tabling, coroutining, and other
5561
+ facilities continued to develop in implementations and later standardization
5562
+ work. What the standard supplied was a stable shared account of ordinary Prolog
5563
+ terms, control, state, errors, and I/O against which extensions could be named.
5564
+
5550
5565
  # Part IX — Reference as practice
5551
5566
 
5552
5567
  Reference is useful only when the route into it is clear. Begin with the task
@@ -10594,6 +10609,22 @@ variables. Variant recognition is important for tabling and cycle analysis.
10594
10609
  **Witness.** A constructed ground term demonstrating an existential result,
10595
10610
  such as a path, assignment, factorization, schedule, or proof-relevant object.
10596
10611
 
10612
+ ### Historical note: manuals become specifications
10613
+
10614
+ Early Prolog programmers learned from implementation manuals, examples, and
10615
+ books whose descriptions were often inseparable from one particular system. As
10616
+ the language spread, reference writing acquired a second task: distinguish the
10617
+ portable language from implementation convention. Predicate indexes, precise
10618
+ mode and error descriptions, and standards documents became tools for comparing
10619
+ systems rather than merely operating one of them.
10620
+
10621
+ ISO standardization made that distinction explicit, while conformance tests and
10622
+ cross-processor corpora made many disagreements executable. A mature reference
10623
+ therefore joins several forms of evidence: normative prose, named predicates
10624
+ and flags, examples, implementation boundaries, and reproducible tests. The
10625
+ result is not a substitute for programming practice; it is a map from a
10626
+ concrete question to the exact contract that governs it.
10627
+
10597
10628
  # Part X — Laboratories
10598
10629
 
10599
10630
  ## 44. Twelve laboratories
@@ -10858,6 +10889,21 @@ A beautiful program is not merely short. It makes the reason for its
10858
10889
  correctness, the shape of its search, and the boundary of its trust available
10859
10890
  to the next reader.
10860
10891
 
10892
+ ### Historical note: logic programming grows through exercises
10893
+
10894
+ Logic programming has long been taught by construction. Lists, family
10895
+ relations, puzzles, grammars, interpreters, search problems, and small expert
10896
+ systems became recurring exercises because each exposes both a logical relation
10897
+ and the control needed to compute with it. Texts such as *The Art of Prolog*
10898
+ made this dual reading central: an exercise was not finished when a clause
10899
+ parsed, but when its meaning, modes, and behavior could be explained.
10900
+
10901
+ Laboratory practice later absorbed regression testing, property-oriented
10902
+ checking, benchmark corpora, and reproducible command-line runs. These tools
10903
+ fit logic programming unusually well because a small change can be examined at
10904
+ several levels at once: answers, failures, witnesses, proofs, and search. The
10905
+ laboratory is where a declarative claim becomes an executable experiment.
10906
+
10861
10907
  # Part XI — Review
10862
10908
 
10863
10909
  ## 45. Checkpoint notes and selected answers
@@ -10982,3 +11028,17 @@ unbounded theorem.
10982
11028
 
10983
11029
  For laboratory checkpoints, leave an artifact. A useful completion is not merely a paragraph: it is a small source file, predicted output, actual output, and one sentence explaining any difference.
10984
11030
 
11031
+ ### Historical note: review becomes explanation
11032
+
11033
+ The declarative reading of logic programs encouraged debugging methods that ask
11034
+ what a relation was intended to mean, not only which machine step came next. In
11035
+ the early 1980s, Ehud Shapiro's work on algorithmic debugging used computation
11036
+ trees together with a programmer's judgments about intended results to narrow a
11037
+ fault to the clause responsible for it. Declarative debugging developed this
11038
+ idea alongside, rather than instead of, ordinary tracing.
11039
+
11040
+ That tradition gives review a distinctive role in logic programming. A worked
11041
+ answer is useful when it can be reconstructed from the relation, the calling
11042
+ mode, and the evidence, and when a disagreement can be turned into a smaller
11043
+ question about meaning or control. Review then becomes another pass through the
11044
+ same discipline as programming: predict, execute, explain, and revise.