NACE Deep Dive
NACE (Non-Axiomatic Causal Explorer) is a pure-Python research agent by Patrick Hammer that extends Berick Cook's AIRIS reinforcement-learning apparatus to harder settings — partial observability, nondeterminism, nonstationarity, and external change — and adds Non-Axiomatic Logic (NAL) frequency/confidence evidence tracking. It is a real, maintained implementation, not a paper sketch. In short: an implementation-backed, AIRIS-derived, NAL-adjacent causal-learning agent — not a NARS reasoner, not an AIRIS clone, and only partially connected to Hyperon (through a MeTTa bridge).
Last verified: 2026-06-04 (at repo HEAD 361fddf, 2025-05-06).
NACE is a real implementation, not a paper sketch — pure-Python at HEAD 361fddf (2025-05-06): the tree lists 13 .py files + 4 .metta files, with no src/ directory and no C++ sources (the Qt support noted in recent commits is via PyQt bindings in gui.py, not C++ Qt). The repo extends Cook's AIRIS apparatus with partial observability, nondeterminism, nonstationarity, external changes, and NAL frequency/confidence evidence tracking. It is distinct from AIRIS (which it extends) and from MeTTa-NARS (which it bridges to, but is not).
Core Mechanisms
The implementation is centered in nace.py:
- Causal-rule learning. Cognitive schematics of the form
(precondition, operation) => consequence, learned through direct interaction with the environment (README.md:5-9). - AIRIS confidence inheritance.
nace.py:49returnsairis_scorefrom_Plan;nace.py:189annotates the score as "AIRIS confidence";nace.py:198describes planning that searches for the highest reward, "or absent that, biggest AIRIS uncertainty". This is direct use of an AIRIS-derived signal, not a paraphrase. - Curiosity-driven exploration.
nace.py:69-85usesairis_scoreto choose between exploration and exploitation, including a printedCURIOUSbehavior label atnace.py:84;nace.py:71-72applies thresholds (airis_score >= 0.9) and revisit conditions (airis_score == 1.0) for goal-directed action selection. - NAL frequency/confidence truth-values. Hypothesis truth values use NAL (frequency, confidence) pairs (README.md:5-9 plus the planner). These are paradigm-distinct from PLN's (strength, count) — the same distinction noted for AIRIS.
- AIRIS comparison anchors.
nace.py:403,:408,:442contain explicit comparison-to-classical-AIRIS code paths — confirming NACE positions itself as an extension and comparison study, not a re-implementation. - MeTTa bridge surface.
bridge.pyplusspaces.metta/knowledge.metta/tasks.metta/input.mettaconnect NACE to a MeTTa runtime via the ONA (OpenNARS for Applications) bridge surface — one of the world-interaction paths, not the whole engine.
Implementation Surface
| Repository | HEAD | Date | Character |
|---|---|---|---|
| patham9/NACE | 361fddf | 2025-05-06 | Primary maintained line; implementation-backed core; pure-Python (100% per language breakdown); MIT licensed; 22 stars / 5 forks / 9 releases. |
How NACE Relates to Its Neighbors
- vs AIRIS: Inheritance and extension, not identity. NACE explicitly extends AIRIS to partial-observability, nonstationary, and external-change settings, and adds NAL evidence revision. The paradigm distinctions established for AIRIS carry forward: NACE's curiosity is not ECAN attention, its confidence is not a PLN truth value, and its state graph is not an AtomSpace.
- vs MeTTa-NARS: Shared author (patham9) and shared NAL truth-value semantics (frequency/confidence), but different paradigms: NACE is a causal-rule learning agent that uses NAL evidence, whereas MeTTa-NARS is a faithful NAL-1..NAL-5 reasoner ported to MeTTa. NACE bridges to MeTTa-NARS / ONA via
bridge.py; it is not itself a NARS implementation. - vs PLN: Paradigm-distinct. NAL frequency/confidence is not PLN strength/count. Treat the cross-link as a boundary, not an alternative implementation.
- vs ECAN: Paradigm-distinct. NACE's curiosity drives exploration locally via
airis_score; ECAN attention is a global economic STI/LTI dynamic. Not the same mechanism. - vs MOSES, AI-DSL, Concept Blending, Pattern Mining: Adjacent but non-integrated; no cross-imports at HEAD.
What This Card Is Not
- Not a NARS implementation. See MeTTa-NARS for that. NACE uses NAL evidence values but does not implement the NAL-N inference rules.
- Not an AIRIS clone. See AIRIS. NACE extends AIRIS to a strictly larger problem class; the original AIRIS apparatus is referenced and compared, not re-implemented.
- Not C++. The repo is 100% Python at HEAD. Any "C++" /
src/main.cpp/NACE.cppclaim is mistaken — it originates from a pre-review reviewer error, corrected on direct inspection of the repository. - Not part of the Hyperon-core stack. NACE is a standalone Hammer-lineage research engine. Its MeTTa connection is the
bridge.pyONA bridge surface, not deep AtomSpace/PLN integration.
Status and Sources
Implementation status: Active, maintained research line. The recent commit theme is Qt/Wayland support (a PyQt GUI). NACE demonstrates AIRIS-derived control on grid-world environments with Non-Axiomatic evidence tracking.
Primary sources:
- Hammer, P. (n.d.). NACE: Non-Axiomatic Causal Explorer. README + repository at patham9/NACE.
- Cook, B. & Hammer, P. (2024). AIRIS: Autonomous Intelligent Reinforcement Inferred Symbolism. KTH/DiVA diva2:1890142. The source paper for the AIRIS apparatus that NACE extends.
- Wang, P. (2013). Non-Axiomatic Logic: A Model of Intelligent Reasoning. World Scientific. The source for the NAL frequency/confidence semantics NACE uses for evidence tracking.
Provenance: the verdicts on this card come from a 2026-05-07 source-code review; the extraction archive is at scripts/archive/non_clustered_haa_pilot/source5_NACE_AIDSL_MOSES_MeTTaNARS/.