This document collects the stability analysis, phase transition theory, lifecycle dynamics, and integrity monitoring that emerge from the nodal equation . Each section corresponds to a verified implementation in the codebase.
Status: CANONICAL — All results derived from the nodal equation and validated computationally.
The structural energy functional serves as a Lyapunov candidate:
For grammar-compliant evolution: (Lyapunov stability).
The structural energy functional above is emergent: it is built entirely from the tetrad fields and contains no or term. Measured directly: scaling the form or the capacity on every node leaves unchanged (), while the phase (through ) and the structural pressure (through ) do enter it. The coherence likewise responds to the pressure channel. Both Lyapunov candidates share one structural-pressure channel, .
Consequently each operator's Lyapunov role is its canonical grammar U2 role, derived from config.physics_derivation (the single source of truth, identical to the U2 stabiliser/destabiliser classification) — not a separate energy algebra. An operator contracts the Lyapunov functional iff it provides negative feedback on , and expands it iff it raises . The contraction/expansion rate is the operator's own structural-pressure factor.
| Operator | Pressure factor | Contraction rate |
|---|---|---|
| IL (Coherence) | (operational) | |
| THOL (Self-organization) | accel |
| Operator | Pressure factor | Expansion rate |
|---|---|---|
| OZ (Dissonance) | (operational) | |
| ZHIR (Mutation) | -shift | |
| VAL (Expansion) | -scale |
| Operators | Channel | Why neutral |
|---|---|---|
| AL, EN, RA, REMESH | EPI (the form, LHS) | Write the left-hand side of the nodal equation, absent from |
| UM | (phase) | Coupling via U3 phase sync; no net $ |
| SHA | (capacity) | Freezes , absent from |
| NUL | + | Pulls both levers; net role not a pure stabiliser/destabiliser |
| NAV | (controlled) | Controlled trajectory, excluded from the U2 destabiliser set |
Dual-lever vs Lyapunov role: The dual-lever structure (STRUCTURAL_OPERATORS.md §17.1) classifies operators by which right-hand-side factor of the nodal equation they modulate — the capacity lever (UM, SHA, VAL), the pressure lever (IL, OZ, THOL, ZHIR, NAV), both (NUL), or neither/the form on the LHS (AL, EN, RA, REMESH). The Lyapunov role above is the grammar U2 role (stabiliser/destabiliser), which depends on the sign of the feedback: VAL engages the capacity lever yet is a U2 destabiliser, while NAV engages the pressure lever yet is U2-neutral because its trajectory is controlled. The two classifications are related but distinct. See example 39 and src/tnfr/physics/lyapunov.py.
Grammar rule U2 (CONVERGENCE & BOUNDEDNESS) requires that every destabiliser be accompanied by a stabiliser. The formal proof shows that the net energy change across a grammar-compliant sequence is non-positive:
This confirms Lyapunov stability for the full 13-operator algebra.
Refinement: The formal bound is sufficient but not necessary for energy descent. Experimental observation (example 38) shows grammar-compliant sequences with cumulative Lyapunov product (formally non-contractive) that still achieve net energy decrease (). The multiplicative bound is conservative because operator interactions on the shared graph state are nonlinear.
The algebraic connectivity of the graph Laplacian controls the relaxation time:
| Quantity | Expression | Physical meaning |
|---|---|---|
| Relaxation time | Time for diffusive equilibration | |
| Mixing time | Time to reach near-equilibrium | |
| Cheeger bound | Lower bound from expansion |
Implementation: src/tnfr/physics/lyapunov.py — OperatorStabilityClass, OperatorEnergyBound, LyapunovPerOperator, analyze_spectral_gap().
The symmetry breaking field serves as the order parameter for phase transitions:
The phase is decided by the sampling-noise z-score of the symmetry breaking, with — the statistical significance measured from the system itself. The only cut is (one sampling sigma); likewise for the chirality field.
| Phase | Condition | Physical meaning |
|---|---|---|
| NON_LIFE | within sampling noise of zero (symmetric) | |
| LIFE | AND | significant symmetry breaking + homochirality |
| CRITICAL | AND | broken magnitude, no preferred handedness |
Near the critical point the order parameter follows a power law:
The exponent is an observable to be measured (fit_critical_exponent), not a derived universal constant. A measurement across sweep protocols gives protocol-dependent values, so there is no universal closed-form exponent. The constant is retained only as a calibrated reference / noise-floor scale (TIER-2), not a prediction of the nodal equation.
| Constant | Value | Status |
|---|---|---|
| Reference scale | Heuristic early-warning (operational, not a derived universal exponent) | |
| Noise floor | Calibrated detection threshold (operational) | |
| Chirality threshold | Calibrated TIER-2 reference (operational) |
The structural susceptibility diverges at the critical point:
For systems near the transition, the critical exponent can be fit from the scaling law . The theoretical prediction serves as validation.
Implementation: src/tnfr/physics/phase_transition.py — Phase enum, PhaseTransitionTelemetry, PhaseSnapshot, compute_order_parameter(), classify_phase(), detect_phase_transition(), fit_critical_exponent().
The autopoietic coefficient measures a system's capacity for self-generation relative to external driving:
where the self-generation function follows logistic growth:
When , the system generates more structural change through self-organisation than through external forcing — the defining property of autopoietic systems in the sense of Maturana & Varela.
| Index | Definition | Interpretation |
|---|---|---|
| Vitality | Self-generation capacity | |
| Self-Organisation | $\varepsilon, | \partial G/\partial|\mathrm{EPI}| |
| Stability Margin |
The threshold time is found by interpolation at the crossing. The LifeTelemetry dataclass records the complete trajectory .
Implementation: src/tnfr/physics/life.py — detect_life_emergence(), LifeTelemetry dataclass.
Each TNFR node passes through a sequence of canonical states determined by its structural attributes:
| State | Condition | Physical meaning |
|---|---|---|
| DORMANT | Below activation energy | |
| ACTIVATION | increasing, growing | Energy accumulation |
| STABILIZATION | High , low $ | \Delta\mathrm{NFR} |
| PROPAGATION | High phase coupling | Pattern spreading via UM/RA |
| MUTATION | High $ | \Delta\mathrm{NFR} |
| COLLAPSING | Losing coherence | Approaching dissolution |
| COLLAPSED | , EPI dissolved | Terminal state |
Priority order for classification: mutation > propagation > stabilization > activation > dormant. Collapse is checked first.
Four canonical collapse reasons, checked in priority order:
| Collapse reason | Condition | Physical basis |
|---|---|---|
| Frequency failure | Fundamental reorganisation capacity lost | |
| Extreme dissonance | $ | \Delta\mathrm{NFR} |
| Network decoupling | Phase coherence below minimum | Loss of resonance with neighbours |
| EPI dissolution | Form completely degraded |
| Parameter | Default | Source |
|---|---|---|
| Activation threshold | (min ) | Operational |
| Collapse threshold | (min ) | Operational |
| Bifurcation threshold | (max $ | \Delta\mathrm{NFR} |
| Stabilization | Operational | |
| Stabilization coherence | Operational | |
| Propagation coupling | Operational | |
| Mutation | Operational (ZHIR threshold, free parameter) |
Implementation: src/tnfr/operators/lifecycle.py — LifecycleState, CollapseReason, get_lifecycle_state(), check_collapse_conditions().
The internal Hamiltonian governs structural evolution:
Coherence potential (attractive interaction):
where is the coherence weight from structural similarity and (attractive).
Frequency operator (diagonal):
Each node's becomes its diagonal energy.
Coupling Hamiltonian (topology):
All components are Hermitian matrices ( = number of nodes).
The unitary time evolution operator:
Propagates states: .
The eigenvalue equation:
gives stationary states with energies (maximally stable configurations).
The operator follows from the Hamiltonian commutator:
Per-node: where .
Implementation: src/tnfr/operators/hamiltonian.py — InternalHamiltonian class with get_spectrum(), time_evolution_operator(), compute_delta_nfr_operator().
The integrity monitor verifies postconditions of all 13 canonical operators after each application. This closes the loop between theoretical contracts and runtime behaviour.
| Operator | Contract verified |
|---|---|
| AL (Emission) | not decreased () |
| EN (Reception) | not decreased |
| IL (Coherence) | not decreased (outside dissonance test) |
| OZ (Dissonance) | $ |
| UM (Coupling) | Phase compatibility $ |
| RA (Resonance) | EPI structural identity (sign/kind) preserved |
| SHA (Silence) | EPI preserved over time; frozen |
| VAL (Expansion) | not decreased (capacity added) |
| NUL (Contraction) | not increased (capacity removed) |
| THOL (Self-org) | Global form preserved; sub-EPIs created |
| ZHIR (Mutation) | Phase changed when |
| NAV (Transition) | Controlled trajectory; no coherence collapse |
| REMESH (Recursivity) | Nested structure maintained; parent identity preserved |
| Mode | Behaviour |
|---|---|
| OFF | No checking (production performance) |
| OBSERVE | Log violations without blocking |
| ENFORCE | Raise StructuralIntegrityViolation on failure |
When a violation is detected in OBSERVE or ENFORCE mode, the monitor provides corrective suggestions (e.g. "apply IL after OZ to restore convergence").
Implementation: src/tnfr/physics/integrity.py — IntegrityReport, IntegritySummary, MonitorMode, StructuralIntegrityViolation, POSTCONDITIONS registry.
Tests: tests/test_integrity.py
| Module | Content |
|---|---|
src/tnfr/physics/lyapunov.py | Per-operator energy bounds, spectral gap analysis |
src/tnfr/physics/phase_transition.py | Order parameter, phase classification, critical exponent |
src/tnfr/physics/life.py | Autopoietic coefficient, self-sustaining threshold detection |
src/tnfr/operators/lifecycle.py | Node states, collapse conditions |
src/tnfr/operators/hamiltonian.py | Internal Hamiltonian, time evolution, spectrum |
src/tnfr/physics/integrity.py | 13/13 postconditions, monitor modes |
from tnfr.sdk import TNFR
net = TNFR.create(20).ring().evolve(5)
report = net.integrity_check() # IntegrityReport (13/13 operators)| Example | Concept from this document |
|---|---|
| 29_lyapunov_stability_demo.py | All 13 operator Lyapunov bounds, energy class taxonomy, U2 net-contractivity proof, spectral gap, self-sustaining dynamics/autopoiesis |
src/tnfr/physics/integrity.py — Structural integrity monitor (13/13 operator postconditions)src/tnfr/physics/conservation.py — Energy functional (Lyapunov candidate)src/tnfr/physics/phase_transition.py — Phase transition detectionsrc/tnfr/operators/lifecycle.py — Node lifecycle management| Position relative to carrying capacity |