EyeProlog turns portable ISO Prolog programs into answers and inspectable proofs.
Click the cover to read The Art of EyeProlog.
The single implementation reference is The Art of EyeProlog. It documents the language, built-ins, libraries, command line, JavaScript API, examples, proofs, conformance profile, and implementation.
The Euler project began in 2001 and became EYE, a Prolog-based reasoner, in 2006; it is still alive in 2026. In a symbolic way, EYE remembers Leonhard Euler, who lost sight in one eye. The Retina project began in 2021 and became EyeProlog in 2026; we hope to keep it growing for the next twenty years. That continuation offers a second quiet remembrance of Euler, who later lost sight in his other eye—while the project keeps trying to see farther through logic, proof, and reasoning.
EyeProlog requires Node.js 18 or newer:
node --version
If necessary, upgrade through a Node version manager or the official Node.js download.
Run EyeProlog without installing it globally:
npx --yes eyeprolog
?- member(X, [prolog, logic]).
X = prolog
; X = logic.
?- halt.
For a persistent command, use a user-owned npm prefix:
npm install --global --prefix "$HOME/.local" eyeprolog
export PATH="$HOME/.local/bin:$PATH"
eyeprolog
Add the PATH export to your shell startup file. Do not use sudo npm install;
npm’s EACCES guidance
also recommends a Node version manager or a user-owned prefix.
Run a program non-interactively:
printf 'human(socrates).\nmortal(X) :- human(X).\n' |
npx --yes eyeprolog --proof --goal 'mortal(socrates)' -
EyeProlog can sit behind an RDF knowledge graph without inventing a private graph representation. rdf-prolog-interchange converts RDF 1.2 datasets to ordinary rdf(Subject, Predicate, Object, Graph) facts, EyeProlog applies portable rules, and ground rdf/4 results can be converted back to RDF.
The checked Symbiotic Knowledge Graphs example uses named graphs and RDF 1.2 triple terms to distinguish trusted knowledge, AI-proposed statements, and human review. Its wide-audience companion explains why this is a useful present-day software model for human/AI/KG co-evolution: RDF supplies shared semantic memory, Prolog supplies explicit deliberation, AI supplies new hypotheses, and people remain participants in meaning and judgment.
The same RDF → Prolog → RDF boundary is exercised by five additional checked scenarios: cross-organization data sharing, explainable EV-depot configuration, operational incident response, software supply-chain vulnerability response, and a scientific evidence graph. Together they cover policy decisions, reversible configuration reasoning, dependency-graph diagnosis, transitive SBOM exposure, and evidence aggregation with explicit disagreement.
EyeProlog does not carry a separate wall-clock benchmark harness. npm test’s own elapsed time, run across thousands of conformance, regression, and example programs, is the coarse performance indicator instead — a real slowdown shows up there. OpenRuleBench remains a dedicated, checked correctness-and-scale benchmark for the Datalog rule-engine profile specifically.
For the project policy on post-ISO-standard and WG17 compatibility features such as digit separators, see ISO/WG17 compatibility extensions.
git clone https://github.com/eyereasoner/eyeprolog.git
cd eyeprolog
npm install
npm test
The npm command list is deliberately small:
npm test (or npm run test): run the release gate, including live upstream conformity checks (WG17 syntax among them).Use npm test -- --offline for a network-free local pass (this also skips the live-discovered WG17 syntax check, since it has no offline snapshot). Focused checks remain available directly, for example node test/run-regression.mjs docs; see test runners. The automatic version hooks rebuild generated library and book files, run the release gate, refresh and stage conformance reports, and push the release. Detailed upstream report maintenance is documented in the conformance guide.
EyeProlog is released under the MIT License.