TNFR Logo
TheoryLearnSoftwareResearch

On this page

TNFR

Resonant Fractal Nature Theory — a mathematical framework for coherent patterns on graph-coupled networks.

About
  • Project history
  • Editorial policy
  • Contact
Resources
  • GitHub
  • PyPI
  • DOI · Zenodo
Legal
  • MIT License
  • Citation
© 2026 TNFR project — MIT licensed.DOI 10.5281/zenodo.17602860
docs
grammar
PHYSICS_VERIFICATION.md
API_CONTRACTS.mdCANONICAL_OZ_SEQUENCES.mdEMPIRICAL_CONFRONTATION_EEG.mdREADME.mdSTRUCTURAL_FIELDS_TETRAD.mdSTRUCTURAL_INTERFACE_THEORY.md
theory
APPLIED_STRUCTURAL_ANALYSIS.mdCATALOG_TYPE_HYGIENE_PROGRAMME.mdDISSIPATIVE_AND_OPEN_SYSTEMS.mdEMERGENT_ONTOLOGY.mdEXTENDED_FIELDS_AND_DERIVED_QUANTITIES.mdFUNDAMENTAL_THEORY.mdGAUGE_SYMMETRY_AND_UNIFICATION.mdGLOSSARY.mdMATHEMATICAL_DYNAMICS_BASIS.mdMINIMAL_STRUCTURAL_DEGREES.mdNUCLEUS_A_PRIME_LADDER_ATLAS.mdNUCLEUS_B_EQUIVARIANCE_OBSTRUCTIONS.mdPHYSICAL_REGIME_CORRESPONDENCES.mdREADME.mdREMESH_INFINITY_DERIVATION.mdSTRUCTURAL_CONSERVATION_THEOREM.mdSTRUCTURAL_OPERATORS.mdSTRUCTURAL_STABILITY_AND_DYNAMICS.mdTNFR_BSD_RESEARCH_NOTES.mdTNFR_HODGE_RESEARCH_NOTES.mdTNFR_NAVIER_STOKES_RESEARCH_NOTES.mdTNFR_NUMBER_THEORY.mdTNFR_P_VS_NP_RESEARCH_NOTES.mdTNFR_RIEMANN_RESEARCH_NOTES.mdTNFR_VARIATIONAL_PRINCIPLE.mdTNFR_YANG_MILLS_RESEARCH_NOTES.mdTNFR.pdfUNIFIED_GRAMMAR_RULES.md
factorization-lab
analysis
analyze_patterns.pycertificate_manifest.py
benchmarks
benchmark_analysis.pybenchmark_expansion_suite.pyfull_spectrum_factorization.pypaley_gap_extended.pypaley_gap_smoke.pytest_benchmark_suite.py
demos
experiment_contexts
exp_0b1663cd19b7.jsonexp_0bf0054b7474.jsonexp_75a4c8ca616a.jsonexp_848ee0fd1857.jsonexp_f6fe00562193.jsonexp_fdf3da424e1e.json
failure_telemetry_batch.pyfeedback_integration_demo.pyintegration_demo_snapshots.dbseed_management_integration_demo.pysnapshot_integration_demo.pytrajectory_143.jsontrajectory_77.jsontrajectory_89.jsontrajectory_91.jsontrajectory_97.json
docs
FACTORING_PLAYBOOK.mdFALSE_POSITIVE_TEST_SUITE.mdOPERATOR_CERTIFICATES.mdROADMAP.mdSPECTRAL_ROUTE.md
experiment_contexts
exp_cebe1d9e7d8e.json
notebooks
spectral_history.ipynb
scripts
run_false_positive_tests.py
tests
run_false_positive_test_suite.pytest_cli.pytest_false_positive_methodology.pytest_false_positive_verifier.pytest_feedback_integration.pytest_partitioning.pytest_seed_management.pytest_self_opt_support.pytest_snapshot_system.pytest_spectral_paley.pytest_verification_robustness.py
tnfr_factorization
__init__.pyapi.pycli.pyfailure_telemetry.pyfeedback_adapter.pyfeedback_integration.pypartitioning.pyself_opt_support.pyspectral_paley.py
demo_snapshots.dbLICENSE_SNAPSHOT.mdPACKAGE_SUMMARY.mdREADME.mdseed_management.pysnapshot_system.pytest_certificate_hashing.pytest_installation.pyverification_trajectory_77.json
benchmarks
analyze_tetrad_universality.pyb0star_alpha_canonical_product_graphs.pybenchmark_optimization_tracks.pybenchmark_utils.pyboundary_vibration.pybridge_primes_riemann.pychiral_involution.pycli_utils.pycoherence_projector_sense_index.pycommutant_bridge.pycomposition_arithmetic.pyconfinement_zones_test.pyconservation_law_validation.pydirected_paley_bridge.pyemergent_arithmetic_pulse.pyemergent_atom_dynamics.pyemergent_atomic_shells.pyemergent_base_dimension.pyemergent_dimension_dynamics.pyemergent_fractal_pulse.pyemergent_fractal_simplex_dimension.pyemergent_integers_symmetry.pyemergent_musical_nfr.pyemergent_nfr_geometry.pyemergent_nfr_where.pyemergent_rationals.pyemergent_rhythm.pyemergent_screening.pyemergent_shell_cardinals.pyemergent_shell_ordering.pyemergent_simplex_dimension.pyemergent_substrate_symmetry.pyequivariance_wall.pyexternal_phase_gate_validation.pyfield_methods_battery.pygolden_residue_remesh_bridge.pyintegrated_force_regime_study.pyinverse_spectrum_to_symmetry.pyk_phi_safety_demo.pykuramoto_farey_bridge.pymissing_piece_bridge.pymultichannel_interface_benchmark.pynavier_stokes_recipe_bridge.pynodal_propagator_residue_bridge.pyns_moment_hierarchy_cascade.pyoperational_irreducibility.pypaley_bridge.pyphase_curvature_investigation.pyphase_wall.pyphi_s_confinement_investigation.pyprimes_as_consequence.pypulse_phase_coherence_budget.pyREADME.mdremesh_infinity_riemann_baseline.pyremesh_infinity_riemann_composed.pyremesh_infinity_riemann_modified_graph.pyremesh_infinity_riemann_operator.pyremesh_infinity_riemann_spectral_basis.pyremesh_infinity_riemann_spectral_robustness.pyremesh_infinity_riemann_spectral.pyresidue_phase_vs_riemann.pystructural_interface_benchmark.pytemporal_interface_benchmark.pytetrad_results_aggregate.pyu2_destabilization_irreversibility.pyuniversality_clusters.pyxi_c_fast_experiment.py
primality-test
benchmarks
comprehensive_benchmark.py
docs
ADVANCED_INTEGRATION.mdmathematical_foundation.mdperformance_analysis.md
examples
advanced_examples.pybasic_usage.py
tnfr_primality
__init__.py__main__.pyadvanced_cli.pyadvanced_core.pycli.pyconstants.pycore.pyoptimized.py
MANIFEST.inPACKAGE_SUMMARY.mdREADME.mdRELEASE_NOTES_v1.0.mdsetup.pytest_installation.py
tests
core_physics
__init__.pytest_conservation_laws.pytest_delta_nfr_computation_paths.pytest_delta_nfr.pytest_dispersion_coherence_sign_invariance.pytest_emergent_constants_guard.pytest_lyapunov_operators.pytest_nodal_equation.pytest_structural_triad.py
data
replay_manifests
sample_run
_manifest_summary.json_manifest.json_partition_files.txt.gz
self_opt_validation
seed_alpha
paley.json
seed_beta
integration.json
seed_gamma
unknown.json
self_optimization
test_run
partitioned
test_run
test_run_p0.jsontest_run_p1.json
_manifest_summary.json_manifest.json
engines
test_pattern_discovery_manifest.pytest_self_optimization_engine.py
mathematics
__init__.pytest_autodiff.pytest_backends.pytest_dissipative_dynamics.pytest_epi.pytest_factory_patterns.pytest_metrics.pytest_navier_stokes_refounded.pytest_number_theory_canonical.pytest_operators.pytest_residue_networks.pytest_riemann_nodal_pulse.pytest_riemann_pulse_coherence.pytest_spaces.pytest_transforms.pytest_validator.py
operators
test_canonical_operators_modern.pytest_grammar_canon.pytest_grammar_canonical_consistency.pytest_grammar_dynamics.pytest_operator_contracts.pytest_operator_strategies.py
parallel
test_fractal_partition_manifest.py
physics
test_conservation_gauge_unification.pytest_dissipative_conservation.pytest_emergent_chemistry.pytest_field_cache_invalidation.pytest_gauge.pytest_phase_transition.pytest_signatures.pytest_spectral_conservation.pytest_structural_diffusion.pytest_structural_integrity.pytest_symplectic_substrate.pytest_tetrad_bounds.pytest_variational.pytest_yang_mills_closure.pytest_yang_mills_derivability.pytest_yang_mills_scaling.pytest_yang_mills_structural_gap.pytest_yang_mills_u6_sweep.py
scripts
test_run_self_opt_validation.pytest_run_self_optimization.py
sdk
__init__.pytest_simple_advanced.py
__init__.pyconftest.pyREADME.mdtest_breast_cancer_phase_gate_demo.pytest_classical_mechanics.pytest_distributed_fft.pytest_external_phase_gate_validation.pytest_factorization_entrypoint.pytest_multichannel_interface.pytest_nodal_optimizer.pytest_phase_gate_api.pytest_replay_register_manifest.pytest_signal_confrontation.pytest_structural_interface_api.pytest_structural_interface_baselines.pytest_structural_interface_benchmark.pytest_temporal_interface.pytest_vectorized_coherence_length_regression.pytest_wine_quality_phase_gate_demo.pyutils.py
examples
01_foundations
01_hello_world.py02_musical_resonance.py03_network_formation.py04_operator_sequences.py05_coherence_evolution.py06_network_topologies.py07_phase_transitions.py08_emergent_phenomena.py09_visualization_suite.py10_simplified_sdk_showcase.py
02_physics_regimes
11_classical_limit_comparison.py115_operator_contract_audit.py12_classical_mechanics_demo.py13_quantum_mechanics_demo.py14_uncertainty_and_interference.py15_train_crossing_demo.py17_conservation_law_demo.py26_gauge_structure_demo.py27_variational_principle_demo.py28_dissipative_systems_demo.py29_lyapunov_stability_demo.py30_self_optimization_demo.py31_mathematical_constants_basis.py33_complex_field_unification.py34_conservation_protocol_suite.py35_tetrad_irreducibility.py36_grammar_violation_detector.py37_operator_tetrad_synergy.py38_grammar_energy_landscape.py39_nodal_equation_decomposition.py
03_riemann_zeta
157_nodal_pulse_phase_attack.py41_von_mangoldt_zeta_demo.py42_riemann_zeros_as_resonances.py43_prime_ladder_hamiltonian_demo.py44_weil_explicit_formula_demo.py45_li_keiper_demo.py46_weil_tnfr_positivity_demo.py47_alpha_sweep_demo.py48_admissible_family_sweep_demo.py49_nodeaware_gauge_sweep_demo.py50_uniform_coercivity_demo.py51_adaptive_coercivity_demo.py52_paley_gap_coercivity_demo.py53_lyapunov_spectral_positivity_demo.py54_hilbert_polya_demo.py55_structural_zero_density_demo.py56_spectral_emergence_demo.py57_admissible_rescaling_demo.py58_oscillatory_correction_demo.py
04_riemann_L_twisted
59_dirichlet_l_function_demo.py60_dirichlet_l_continuation_demo.py61_dirichlet_l_hamiltonian_demo.py62_dirichlet_weil_explicit_formula_demo.py63_dirichlet_li_keiper_demo.py64_twisted_weil_positivity_demo.py65_twisted_alpha_sweep_demo.py66_twisted_admissible_family_sweep_demo.py67_twisted_nodeaware_gauge_sweep_demo.py68_twisted_hermite_family_demo.py69_twisted_coercivity_uniform_demo.py70_twisted_paley_gap_coercivity_demo.py71_twisted_lyapunov_spectral_demo.py72_twisted_hilbert_polya_demo.py73_twisted_structural_zero_density_demo.py74_twisted_spectral_emergence_demo.py75_twisted_admissible_rescaling_demo.py76_twisted_oscillatory_correction_demo.py
05_type_hygiene
77_remesh_infinity_residue_split_demo.py78_nuf_type_signature_demo.py79_epi_type_signature_demo.py80_phi_type_signature_demo.py81_dnfr_type_signature_demo.py82_remesh_window_type_signature_demo.py83_delta_phi_max_type_signature_demo.py84_coupling_weights_type_signature_demo.py85_tetrad_closure_signature_demo.py86_currents_closure_signature_demo.py87_aggregates_closure_signature_demo.py88_urules_consistency_signature_demo.py89_operator_catalog_discipline_signature_demo.py
06_navier_stokes
158_navier_stokes_two_face_refounded.py
07_number_theory
100_prime_families_orbits.py101_numbers_as_coupled_network.py102_nodal_flow_primes_equilibria.py116_nuf_emergent_prime_visibility.py146_primality_grammatical_inertness.py147_numbers_as_free_monoid_words.py148_capacity_arm_carries_von_mangoldt.py149_p14_is_the_capacity_arm_operator.py153_structural_frequency_rank_cyclotomy.py40_arithmetic_number_theory.py94_generative_number_construction.py95_primes_from_spectral_waves.py96_spectral_vibration_of_coherence.py97_goldbach_additive_multiplicative.pyemergent_chemistry_particles_demo.py
08_emergent_geometry
103_emergent_substrate_meets_riemann.py106_per_node_polarization_geometry.py107_orthogonal_structure_emergent_geometry.py108_emergent_field_generating_structure.py112_structure_predicts_coherence_flow.py113_overdamped_projection_bridge.py114_substrate_conserved_quantities.py117_emergent_geometry_residue_graph.py118_emergent_vs_classical_operator.py119_phase_sector_directed_residue.py120_symmetry_wall_substrate_vs_spectrum.py121_canonical_symmetry_break_negative.py122_factorization_phase_sector.py123_symmetry_sector_decomposition.py124_emergent_metric_fractal_consistency.py125_node_is_the_emergent_substrate.py126_two_layers_base_fiber.py127_base_is_emergent_not_imposed.py128_base_substrate_coemergence.py129_spectral_gap_base_fiber_clock.py130_operators_break_substrate_charges.py131_coemergent_loop_convergence.py132_geometric_phase_holonomy.py133_psi_topological_defects.py134_spectral_dimension_heat_kernel.py135_arrow_of_time_h_theorem.py136_heat_kernel_coefficients.py137_synchronization_transition.py138_structure_frequency_synchronization.py139_grammar_formal_language.py140_grammar_automaton.py141_grammar_rule_decomposition.py142_grammar_operator_quotient.py143_glyphic_function_sublanguage.py144_branching_combinator.py145_syntactic_monoid_starfree.py150_emergent_grammatical_pattern_parry.py151_grammar_in_emergent_geometry.py152_operator_contract_tetrahedron.py154_conductor_annotated_qr_spectrum.py155_ontological_position_of_numbers.py156_emergence_directness_law.py98_emergent_symplectic_substrate.py99_structural_diffusion.pyunified_fields_showcase.py
09_millennium
109_p_vs_np_coherence_synthesis.py110_bsd_rank_structural_pressure.py111_hodge_discrete_and_honest_gap.py
10_applications
159_empirical_confrontation_pipeline.py90_phase_gate_monitor_demo.py91_breast_cancer_phase_gate_demo.py92_wine_quality_phase_gate_demo.py93_structural_interface_demo.pypytorch_cuda_demo.py
README.md
scripts
replay
__init__.pyregister_manifest.py
__init__.pyREADME.mdrebuild_failure_manifest.pyrun_reproducible_benchmarks.pyrun_self_opt_validation.pyrun_self_optimization.pytnfr_is_prime.pyvalidate_conservation_law.pyverify_internal_references.py
src
core
__init__.pyevaluation.py
tnfr
backends
__init__.pyjax_backend.pynumpy_backend.pyoptimized_numpy.pyREADME.mdtorch_backend.py
cli
__init__.py__init__.pyiarguments.pyarguments.pyiexecution.pyexecution.pyiinteractive_validator.pyREADME.mdutils.pyutils.pyi
compat
__init__.pydataclass.pyjsonschema_stub.pymatplotlib_stub.pynumpy_stub.pyREADME.md
config
__init__.py__init__.pyiconstants.pyconstants.pyidefaults_core.pydefaults_init.pydefaults_metric.pydefaults.pyfeature_flags.pyfeature_flags.pyiglyph_constants.pyoperator_names.pyoperator_names.pyiphysics_derivation.pyprecision_modes.pypresets.pypresets.pyiREADME.mdsecurity.pythresholds.pytnfr_config.py
constants
__init__.py__init__.pyialiases.pyaliases.pyicanonical.pymetric.pymetric.pyioperational.py
core
__init__.pycontainer.pydefault_implementations.pyexceptions.pyinterfaces.pyREADME.md
dynamics
__init__.py__init__.pyiadaptation.pyadaptation.pyiadaptive_sequences.pyadaptive_sequences.pyiadelic.pyadvanced_cache_optimizer.pyadvanced_fft_arithmetic.pyaliases.pyaliases.pyibifurcation.pycache_aware_fft_engine.pycanonical.pycanonical.pyicomputational_hub.pycoordination.pycoordination.pyidistributed_fft.pydnfr.pydnfr.pyidynamic_limits.pyemergent_centralization.pyemergent_integration_engine.pyfeedback.pyfeedback.pyifft_backend.pyfft_cache_coordinator.pyfft_dispatchers.pyfft_engine.pyfft_workers.pyfused_dnfr.pyhomeostasis.pyhomeostasis.pyiintegrators.pyintegrators.pyilearning.pylearning.pyimetabolism.pymulti_modal_cache.pynbody_tnfr.pynbody.pynodal_optimizer.pyoptimization_orchestrator.pypropagation.pyREADME.mdruntime.pyruntime.pyisampling.pysampling.pyiselectors.pyselectors.pyiself_optimizing_engine.pyspectral_structural_fusion.pystructural_cache.pystructural_clip.pysymplectic.pyunified_backend.pyunified_mathematical_cache_orchestrator.py
engines
computation
__init__.pyfft_engine.pyunified_fft_engine.pyunified_gpu_system.py
constants
__init__.pycanonical.pyoperational.py
integration
__init__.pyemergent_integration.py
pattern_discovery
__init__.pymathematical_patterns.pymulti_modal_cache.py
self_optimization
__init__.pyengine.py
__init__.pyREADME.md
errors
__init__.pycontextual.py
factorization
__init__.py
flatten
README.md
gamma
README.md
glyph_history
README.md
glyph_runtime
README.md
immutable
README.md
initialization
README.md
io
README.md
math
__init__.pyfields_symbolic.pygrammar_validators.pyoptimizer.pyREADME.mdsymbolic.py
mathematics
__init__.pybackend.pybackend.pyidynamics.pydynamics.pyiepi.pyepi.pyigenerators.pygenerators.pyiliouville.pymetrics.pymetrics.pyinumber_theory.pyoperators_factory.pyoperators_factory.pyioperators.pyoperators.pyioptimized_primality.pyprojection.pyprojection.pyiREADME.mdruntime.pyruntime.pyispaces.pyspaces.pyispectral.pytransforms.pytransforms.pyiunified_cache.pyunified_numerical.pyzeta.py
metrics
__init__.py__init__.pyibuffer_cache.pybuffer_cache.pyicache_utils.pycoherence.pycoherence.pyicommon.pycommon.pyicore.pycore.pyidiagnosis.pydiagnosis.pyiemergence.pyexport.pyexport.pyiglyph_timing.pyglyph_timing.pyilearning_metrics.pylearning_metrics.pyilocal_coherence.pyphase_coherence.pyphase_compatibility.pyREADME.mdreporting.pyreporting.pyisense_index.pysense_index.pyitelemetry.pytetrad.pytrig_cache.pytrig_cache.pyitrig.pytrig.pyi
multiscale
__init__.pyhierarchical.pyREADME.md
navier_stokes
__init__.pyconservative_face.pyoperator.py
node
README.md
observers
README.md
operators
network_analysis
__init__.pysource_detection.py
postconditions
__init__.pymutation.py
preconditions
__init__.pycoherence.pydissonance.pyemission.pymutation.pyreception.pyresonance.py
strategies
__init__.pydefaults.pygpu_strategies.pystrategy.py
__init__.py__init__.pyialgebra.pycanonical_patterns.pycascade.pycoherence.pycontraction.pycoupling.pycycle_detection.pydefinitions_base.pydefinitions.pydefinitions.pyidissonance.pyemission.pyexpansion.pygrammar_application.pygrammar_canon.pygrammar_context.pygrammar_core.pygrammar_dynamics.pygrammar_error_factory.pygrammar_memoization.pygrammar_patterns.pygrammar_telemetry.pygrammar_types.pygrammar_u6.pygrammar_validate.pygrammar.pygrammar.pyihamiltonian.pyhealth_analyzer.pyintrospection.pyjitter.pyjitter.pyilifecycle.pymetabolism.pymetrics_basic.pymetrics_core.pymetrics_network.pymetrics_structural.pymetrics_u6.pymetrics.pymutation.pynodal_equation.pyoperator_contracts.pypattern_detection.pypatterns.pyREADME.mdreception.pyrecursivity.pyregistry.pyregistry.pyiremesh.pyremesh.pyiresonance.pyself_organization.pysilence.pystructural_units.pytransition.py
parallel
__init__.pyauto_scaler.pydistributed.pyengine.pymonitoring.pypartitioner.pyREADME.md
performance
guardrails.py
physics
__init__.py_helpers.pycalibration.pycanonical.pycell.pyclassical_mechanics.pyconservation_gauge_unification.pyconservation.pydissipative_conservation.pyemergent_chemistry.pyemergent_particles.pyextended.pyfields.pygauge.pyintegrity.pyinteractions.pylife.pylyapunov.pypatterns.pyphase_transition.pyquantum_mechanics.pyREADME.mdsignatures.pyspectral_conservation.pyspectral_metrics.pystructural_diffusion.pysymplectic_substrate.pytelemetry.pyunified.pyvariational.pyvectorized_ops.py
primality
__init__.py
recipes
__init__.pycookbook.pyREADME.md
riemann
__init__.pyadmissible_family_sweep.pyadmissible_rescaling.pyaggregates_closure_signature.pyalpha_sweep.pyanalytic_continuation_dirichlet.pyanalytic_continuation.pycoercivity_uniform.pycoupling_weights_type_signature.pycurrents_closure_signature.pydelta_phi_max_type_signature.pydirichlet_l.pydnfr_type_signature.pyepi_type_signature.pyhilbert_polya.pyli_keiper.pylyapunov_spectral_positivity.pynodal_pulse.pynodeaware_gauge_sweep.pynuf_type_signature.pyoperator_catalog_discipline_signature.pyoperator.pyoscillatory_correction.pypaley_gap_coercivity.pyphi_type_signature.pyprime_ladder_hamiltonian.pypulse_coherence.pyremesh_infinity_residue_split.pyremesh_window_type_signature.pyspectral_emergence.pystructural_zero_density.pytelemetry.pytetrad_closure_signature.pytwisted_admissible_family_sweep.pytwisted_admissible_rescaling.pytwisted_alpha_sweep.pytwisted_coercivity_uniform.pytwisted_hermite_family.pytwisted_hilbert_polya.pytwisted_li_keiper.pytwisted_lyapunov_spectral_positivity.pytwisted_nodeaware_gauge_sweep.pytwisted_oscillatory_correction.pytwisted_paley_gap_coercivity.pytwisted_prime_ladder_hamiltonian.pytwisted_spectral_emergence.pytwisted_structural_zero_density.pytwisted_weil_explicit_formula.pytwisted_weil_positivity.pyurules_consistency_signature.pyvon_mangoldt.pyweil_explicit_formula.pyweil_positivity.py
schemas
__init__.pygrammar.jsonREADME.md
sdk
__init__.py__init__.pyiadaptive_system.pyadaptive_system.pyibuilders.pybuilders.pyifluent.pyfluent.pyiREADME.mdself_opt.pysimple.pytemplates.pytemplates.pyiutils.py
security
__init__.pycrypto.pydatabase.pyREADME.mdsubprocess.pyvalidation.py
sequencing
__init__.pypatterns.pyREADME.md
services
__init__.pyorchestrator.pyREADME.md
sparse
__init__.pyREADME.mdrepresentations.py
structural
README.md
telemetry
__init__.pycache_metrics.pycache_metrics.pyiconstants.pynu_f.pynu_f.pyiREADME.mdunified_telemetry_system.pyverbosity.pyverbosity.pyi
tools
__init__.pydomain_templates.pyREADME.mdsequence_generator.pytnfr_is_prime_cli_optimized.pytnfr_is_prime_cli.py
topology
__init__.pyasymmetry.pyREADME.md
utils
cache_layers.pycache.pycache.pyicallbacks.pycallbacks.pyichunks.pychunks.pyidata.pydata.pyifast_diameter.pygraph.pygraph.pyiinit.pyinit.pyiio.pyio.pyinumeric.pynumeric.pyiREADME.mdtopology.pyunified_cache.py
validation
__init__.py__init__.pyiaggregator.pybase.pycompatibility.pycompatibility.pyiconfig.pygraph.pygraph.pyihealth.pyinput_validation.pyinterface_baselines.pyinvariants.pymultichannel_interface.pyphase_gate.pyREADME.mdrules.pyrules.pyiruntime.pyruntime.pyisequence_validator.pysignal_confrontation.pysoft_filters.pysoft_filters.pyispectral.pyspectral.pyistructural_interface.pytemporal_interface.pyunified_validation_system.pyvalidator.pywindow.pywindow.pyi
visualization
__init__.pycascade_viz.pyhierarchy.pyREADME.mdsequence_plotter.py
yang_mills
__init__.pyclosure.pyderivability.pyscaling.pystructural_gap.pyu6_sweep.py
__init__.py__init__.pyi_compat.py_version.py_version.pyialias.pyalias.pyibackend_config.pycache.pycache.pyiexecution.pyexecution.pyiflatten.pyflatten.pyigamma.pygamma.pyiglyph_history.pyglyph_history.pyiglyph_runtime.pyglyph_runtime.pyiimmutable.pyimmutable.pyiinitialization.pyinitialization.pyiio.pyio.pyilocking.pylocking.pyinode.pynode.pyiobservers.pyobservers.pyiontosim.pyontosim.pyipy.typedrng.pyrng.pyisecure_config.pyselector.pyselector.pyisense.pysense.pyistructural.pystructural.pyitokens.pytokens.pyitrace.pytrace.pyitypes.pytypes.pyiunits.pyunits.pyi
tetrad_evaluator.py
.pre-commit-config.yaml.semgrep.yaml.zenodo.jsonARCHITECTURE.mdbandit.yamlCHANGELOG.mdCITATION.cffCONTRIBUTING.mdEMERGENT_CANON_AUDIT.mdEMERGENT_DERIVATION_PLAN.mdLICENSE.mdMakefileMANIFEST.inpyproject.tomlpyrightconfig.jsonPYTORCH_CUDA_INTEGRATION.mdREADME.mdSECURITY.mdTESTING.mdTNFR_Website_Content_Brief.md
FILE: src/tnfr/operators/preconditions/mutation.py

mutation.py

Canonical precondition validators for ZHIR (Mutation) operator.

Implements comprehensive validation of mutation prerequisites including threshold verification, grammar U4b compliance, and structural readiness.

This module provides strict, modular validation for the Mutation (ZHIR) operator, aligning with the architectural pattern used by Coherence (IL) and Dissonance (OZ).

Source Code

python
"""Canonical precondition validators for ZHIR (Mutation) operator.

Implements comprehensive validation of mutation prerequisites including
threshold verification, grammar U4b compliance, and structural readiness.

This module provides strict, modular validation for the Mutation (ZHIR) operator,
aligning with the architectural pattern used by Coherence (IL) and Dissonance (OZ).
"""

from __future__ import annotations

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from ...types import NodeId, TNFRGraph
    import logging

from ...alias import get_attr
from ...config.operator_names import (
    BIFURCATION_WINDOW,
    DESTABILIZERS,
)
from ...constants.aliases import ALIAS_VF
from . import OperatorPreconditionError

__all__ = [
    "validate_mutation_strict",
    "validate_threshold_crossing",
    "validate_grammar_u4b",
    "record_destabilizer_context",
    "diagnose_mutation_readiness",
]


def validate_mutation_strict(G: TNFRGraph, node: NodeId) -> None:
    """Comprehensive canonical validation for ZHIR.

    Validates all TNFR requirements for mutation (AGENTS.md §11, TNFR.pdf §2.2.11):

    1. **Minimum νf**: Reorganization capacity for phase transformation
    2. **Threshold crossing**: ∂EPI/∂t > ξ (structural velocity sufficient)
    3. **Grammar U4b Part 1**: Prior IL (Coherence) for stable base
    4. **Grammar U4b Part 2**: Recent destabilizer (~3 ops) for threshold energy
    5. **Sufficient history**: EPI history for velocity calculation

    Parameters
    ----------
    G : TNFRGraph
        Graph containing the node
    node : NodeId
        Node to validate

    Raises
    ------
    OperatorPreconditionError
        If any canonical requirement not met

    Notes
    -----
    This function implements strict validation when:
    - ``VALIDATE_OPERATOR_PRECONDITIONS=True`` (global strict mode)
    - Individual flags enabled (ZHIR_REQUIRE_IL_PRECEDENCE, etc.)

    For backward compatibility, threshold and U4b checks may be soft
    (warnings only) when strict validation disabled.

    Examples
    --------
    >>> from tnfr.structural import create_nfr
    >>> from tnfr.operators.preconditions.mutation import validate_mutation_strict
    >>> G, node = create_nfr("test", epi=0.5, vf=1.0)
    >>> G.nodes[node]["epi_history"] = [0.4, 0.5]
    >>> G.graph["VALIDATE_OPERATOR_PRECONDITIONS"] = True
    >>> # This would raise if U4b not satisfied
    >>> # validate_mutation_strict(G, node)  # doctest: +SKIP
    """
    import logging

    logger = logging.getLogger(__name__)

    # 1. Minimum νf validation
    _validate_minimum_vf(G, node)

    # 2. Threshold crossing validation (∂EPI/∂t > ξ)
    validate_threshold_crossing(G, node, logger)

    # 3. Grammar U4b validation
    strict_validation = bool(G.graph.get("VALIDATE_OPERATOR_PRECONDITIONS", False))
    if strict_validation:
        validate_grammar_u4b(G, node, logger)

    # 4. History length validation
    _validate_history_length(G, node)


def _validate_minimum_vf(G: TNFRGraph, node: NodeId) -> None:
    """Validate minimum structural frequency for phase transformation."""
    vf = float(get_attr(G.nodes[node], ALIAS_VF, 0.0))
    min_vf = float(G.graph.get("ZHIR_MIN_VF", 0.05))

    if vf < min_vf:
        raise OperatorPreconditionError(
            "Mutation",
            f"Structural frequency too low for mutation (νf={vf:.3f} < {min_vf:.3f})",
        )


def _validate_history_length(G: TNFRGraph, node: NodeId) -> None:
    """Validate sufficient EPI history for velocity calculation."""
    epi_history = G.nodes[node].get("epi_history") or G.nodes[node].get(
        "_epi_history", []
    )
    min_length = int(G.graph.get("ZHIR_MIN_HISTORY_LENGTH", 2))

    if len(epi_history) < min_length:
        import logging

        logger = logging.getLogger(__name__)
        logger.warning(
            f"Node {node}: ZHIR applied without sufficient EPI history "
            f"(need ≥{min_length} points, have {len(epi_history)}). "
            f"Threshold verification may be inaccurate."
        )


def validate_threshold_crossing(
    G: TNFRGraph, node: NodeId, logger: logging.Logger | None = None
) -> None:
    """Validate ∂EPI/∂t > ξ requirement for phase transformation.

    ZHIR is a phase transformation that requires sufficient structural reorganization
    velocity to justify the transition. The threshold ξ represents the minimum rate
    of structural change needed for a phase shift to be physically meaningful.

    Parameters
    ----------
    G : TNFRGraph
        Graph containing the node
    node : NodeId
        Node to validate
    logger : logging.Logger, optional
        Logger for telemetry output

    Notes
    -----
    - If ∂EPI/∂t < ξ: Logs warning (soft check for backward compatibility)
    - If ∂EPI/∂t ≥ ξ: Logs success, sets validation flag
    - If insufficient history: Logs warning, cannot verify

    The check is soft (warning only) unless ZHIR_STRICT_THRESHOLD_CHECK=True,
    maintaining backward compatibility with existing code.

    Examples
    --------
    >>> from tnfr.structural import create_nfr
    >>> G, node = create_nfr("test", epi=0.5, vf=1.0)
    >>> G.nodes[node]["epi_history"] = [0.3, 0.5]  # velocity = 0.2
    >>> G.graph["ZHIR_THRESHOLD_XI"] = 0.1
    >>> validate_threshold_crossing(G, node)  # Should pass (0.2 > 0.1)
    """
    if logger is None:
        import logging

        logger = logging.getLogger(__name__)

    # Get EPI history - check both keys for compatibility
    epi_history = G.nodes[node].get("epi_history") or G.nodes[node].get(
        "_epi_history", []
    )

    if len(epi_history) < 2:
        # Insufficient history - cannot verify threshold
        logger.warning(
            f"Node {node}: ZHIR applied without sufficient EPI history "
            f"(need ≥2 points, have {len(epi_history)}). Cannot verify threshold."
        )
        G.nodes[node]["_zhir_threshold_unknown"] = True
        return

    # Compute ∂EPI/∂t (discrete approximation using last two points)
    # For discrete operator applications with Δt=1: ∂EPI/∂t ≈ EPI_t - EPI_{t-1}
    depi_dt = abs(epi_history[-1] - epi_history[-2])

    # Get threshold from configuration
    xi_threshold = float(G.graph.get("ZHIR_THRESHOLD_XI", 0.1))

    # Verify threshold crossed
    if depi_dt < xi_threshold:
        # Allow mutation but log warning (soft check for backward compatibility)
        logger.warning(
            f"Node {node}: ZHIR applied with ∂EPI/∂t={depi_dt:.3f} < ξ={xi_threshold}. "
            f"Mutation may lack structural justification. "
            f"Consider increasing dissonance (OZ) first."
        )
        G.nodes[node]["_zhir_threshold_warning"] = True

        # Strict check if configured
        if bool(G.graph.get("ZHIR_STRICT_THRESHOLD_CHECK", False)):
            raise OperatorPreconditionError(
                "Mutation",
                f"Threshold not crossed: ∂EPI/∂t={depi_dt:.3f} < ξ={xi_threshold}. "
                f"Apply Dissonance (OZ) or Expansion (VAL) to increase structural velocity first.",
            )
    else:
        # Threshold met - log success
        logger.info(
            f"Node {node}: ZHIR threshold crossed (∂EPI/∂t={depi_dt:.3f} > ξ={xi_threshold})"
        )
        G.nodes[node]["_zhir_threshold_met"] = True


def validate_grammar_u4b(
    G: TNFRGraph, node: NodeId, logger: logging.Logger | None = None
) -> None:
    """Validate U4b: IL precedence + recent destabilizer.

    Grammar rule U4b (BIFURCATION DYNAMICS - Transformers Need Context) requires:

    1. **Prior IL (Coherence)**: Stable base for transformation
    2. **Recent destabilizer**: OZ/VAL/etc within ~3 operations for threshold energy

    This is a STRONG canonicity rule derived from bifurcation theory - phase
    transformations need both stability (IL) and elevated energy (destabilizer).

    Parameters
    ----------
    G : TNFRGraph
        Graph containing the node
    node : NodeId
        Node to validate
    logger : logging.Logger, optional
        Logger for telemetry output

    Raises
    ------
    OperatorPreconditionError
        If U4b requirements not met when strict validation enabled

    Notes
    -----
    Validation is strict when:
    - ``VALIDATE_OPERATOR_PRECONDITIONS=True`` (global)
    - ``ZHIR_REQUIRE_IL_PRECEDENCE=True`` (Part 1)
    - ``ZHIR_REQUIRE_DESTABILIZER=True`` (Part 2)

    Examples
    --------
    >>> from tnfr.structural import create_nfr
    >>> from tnfr.operators import Coherence, Dissonance
    >>> G, node = create_nfr("test", epi=0.5, vf=1.0)
    >>> G.graph["VALIDATE_OPERATOR_PRECONDITIONS"] = True
    >>> # Apply required sequence
    >>> Coherence()(G, node)  # IL for stable base
    >>> Dissonance()(G, node)  # OZ for destabilization
    >>> # Now validate_grammar_u4b would pass
    """
    if logger is None:
        import logging

        logger = logging.getLogger(__name__)

    # Get glyph history
    glyph_history = G.nodes[node].get("glyph_history", [])
    if not glyph_history:
        # No history - cannot validate U4b
        logger.warning(
            f"Node {node}: No glyph history available. Cannot verify U4b compliance."
        )
        return

    # Import glyph_function_name to convert glyphs to operator names
    from ..grammar import glyph_function_name

    # Convert history to operator names
    history_names = [glyph_function_name(g) for g in glyph_history]

    # Part 1: Check for prior IL (Coherence)
    require_il = bool(G.graph.get("ZHIR_REQUIRE_IL_PRECEDENCE", False))
    il_found = "coherence" in history_names

    if require_il and not il_found:
        raise OperatorPreconditionError(
            "Mutation",
            "U4b violation: ZHIR requires prior IL (Coherence) for stable transformation base. "
            "Apply Coherence before mutation sequence. "
            f"Recent history: {history_names[-5:] if len(history_names) > 5 else history_names}",
        )

    if il_found:
        logger.debug(
            f"Node {node}: ZHIR IL precedence satisfied (prior Coherence found)"
        )

    # Part 2: Check for recent destabilizer
    # This also records destabilizer context for telemetry
    context = record_destabilizer_context(G, node, logger)

    require_destabilizer = bool(G.graph.get("ZHIR_REQUIRE_DESTABILIZER", False))
    destabilizer_found = context.get("destabilizer_operator")

    if require_destabilizer and destabilizer_found is None:
        recent_history = context.get("recent_history", [])
        raise OperatorPreconditionError(
            "Mutation",
            "U4b violation: ZHIR requires recent destabilizer (OZ/VAL/etc) within ~3 ops. "
            f"Recent history: {recent_history}. "
            "Apply Dissonance or Expansion to elevate ΔNFR first.",
        )


def record_destabilizer_context(
    G: TNFRGraph, node: NodeId, logger: logging.Logger | None = None
) -> dict:
    """Detect and record which destabilizer enabled the current mutation.

    This implements R4 Extended telemetry by analyzing the glyph_history
    to find the most recent destabilizer (DESTABILIZERS = {OZ, ZHIR, VAL})
    within the single structural-relaxation window BIFURCATION_WINDOW.

    Parameters
    ----------
    G : TNFRGraph
        Graph containing the node
    node : NodeId
        Node being mutated
    logger : logging.Logger, optional
        Logger for telemetry output

    Returns
    -------
    dict
        Destabilizer context with keys:
        - destabilizer_operator: Name of destabilizer glyph (or None)
        - destabilizer_distance: Operations since destabilizer (or None)
        - recent_history: Last N operator names

    Notes
    -----
    The destabilizer context is stored in node['_mutation_context'] for
    structural tracing and post-hoc analysis. This enables understanding
    of bifurcation pathways without breaking TNFR structural invariants.

    The reach is a SINGLE emergent window (BIFURCATION_WINDOW): the
    structural-pressure relaxation time is topology-independent (the mean
    L_rw eigenvalue is exactly trace/N = 1), so the earlier graduated
    strong/moderate/weak split does not survive the dynamics.

    Examples
    --------
    >>> from tnfr.structural import create_nfr
    >>> from tnfr.operators import Dissonance
    >>> G, node = create_nfr("test", epi=0.5, vf=1.0)
    >>> Dissonance()(G, node)  # Apply OZ (a destabilizer)
    >>> context = record_destabilizer_context(G, node)
    >>> context["destabilizer_operator"]  # doctest: +SKIP
    'dissonance'
    """
    if logger is None:
        import logging

        logger = logging.getLogger(__name__)

    # Get glyph history from node
    history = G.nodes[node].get("glyph_history", [])
    if not history:
        # No history available, mutation enabled by external factors
        context = {
            "destabilizer_operator": None,
            "destabilizer_distance": None,
            "recent_history": [],
        }
        G.nodes[node]["_mutation_context"] = context
        return context

    # Import glyph_function_name to convert glyphs to operator names
    from ..grammar import glyph_function_name

    # Get recent history within the single structural-relaxation window
    recent = (
        list(history)[-BIFURCATION_WINDOW:]
        if len(history) > BIFURCATION_WINDOW
        else list(history)
    )
    recent_names = [glyph_function_name(g) for g in recent]

    # Search backwards for any destabilizer ({OZ, ZHIR, VAL}) within the window
    destabilizer_found = None
    destabilizer_distance = None

    for i, op_name in enumerate(reversed(recent_names)):
        distance = i + 1  # Distance from mutation (1 = immediate predecessor)
        if op_name in DESTABILIZERS and distance <= BIFURCATION_WINDOW:
            destabilizer_found = op_name
            destabilizer_distance = distance
            break

    # Store context in node metadata for telemetry
    context = {
        "destabilizer_operator": destabilizer_found,
        "destabilizer_distance": destabilizer_distance,
        "recent_history": recent_names,
    }
    G.nodes[node]["_mutation_context"] = context

    # Log telemetry for structural tracing
    if destabilizer_found:
        logger.info(
            f"Node {node}: ZHIR enabled by destabilizer "
            f"({destabilizer_found}) at distance {destabilizer_distance}"
        )
    else:
        logger.warning(
            f"Node {node}: ZHIR without detectable destabilizer in history. "
            f"Recent operators: {recent_names}"
        )

    return context


def diagnose_mutation_readiness(G: TNFRGraph, node: NodeId) -> dict:
    """Comprehensive diagnostic for ZHIR readiness.

    Analyzes node state and returns detailed readiness report with:
    - Overall readiness boolean
    - Individual check results
    - Recommendations for corrections

    Parameters
    ----------
    G : TNFRGraph
        Graph containing the node
    node : NodeId
        Node to diagnose

    Returns
    -------
    dict
        Diagnostic report with structure:
        {
            "ready": bool,
            "checks": {
                "minimum_vf": {"passed": bool, "value": float, "threshold": float},
                "threshold_crossing": {"passed": bool, "depi_dt": float, "xi": float},
                "il_precedence": {"passed": bool, "found": bool},
                "recent_destabilizer": {"passed": bool, "operator": str|None, "distance": int|None},
                "history_length": {"passed": bool, "length": int, "required": int},
            },
            "recommendations": [str, ...]
        }

    Examples
    --------
    >>> from tnfr.structural import create_nfr
    >>> G, node = create_nfr("test", epi=0.5, vf=1.0)
    >>> report = diagnose_mutation_readiness(G, node)
    >>> report["ready"]  # doctest: +SKIP
    False
    >>> report["recommendations"]  # doctest: +SKIP
    ['Apply IL (Coherence) for stable base', 'Apply OZ (Dissonance) to elevate ΔNFR', ...]
    """
    import logging

    checks = {}
    recommendations = []

    # Check 1: Minimum νf
    vf = float(get_attr(G.nodes[node], ALIAS_VF, 0.0))
    min_vf = float(G.graph.get("ZHIR_MIN_VF", 0.05))
    vf_passed = vf >= min_vf
    checks["minimum_vf"] = {
        "passed": vf_passed,
        "value": vf,
        "threshold": min_vf,
    }
    if not vf_passed:
        recommendations.append(
            f"Increase νf: current={vf:.3f}, required={min_vf:.3f}. "
            f"Apply AL (Emission) or NAV (Transition) to boost structural frequency."
        )

    # Check 2: Threshold crossing
    epi_history = G.nodes[node].get("epi_history") or G.nodes[node].get(
        "_epi_history", []
    )
    xi_threshold = float(G.graph.get("ZHIR_THRESHOLD_XI", 0.1))

    if len(epi_history) >= 2:
        depi_dt = abs(epi_history[-1] - epi_history[-2])
        threshold_passed = depi_dt >= xi_threshold
        checks["threshold_crossing"] = {
            "passed": threshold_passed,
            "depi_dt": depi_dt,
            "xi": xi_threshold,
        }
        if not threshold_passed:
            recommendations.append(
                f"Increase structural velocity: ∂EPI/∂t={depi_dt:.3f} < ξ={xi_threshold}. "
                f"Apply OZ (Dissonance) or VAL (Expansion) to elevate reorganization."
            )
    else:
        checks["threshold_crossing"] = {
            "passed": False,
            "depi_dt": None,
            "xi": xi_threshold,
            "reason": "Insufficient history",
        }
        recommendations.append(
            f"Build EPI history: only {len(epi_history)} points available (need ≥2). "
            f"Apply several operators to establish history."
        )

    # Check 3: IL precedence
    glyph_history = G.nodes[node].get("glyph_history", [])
    if glyph_history:
        from ..grammar import glyph_function_name

        history_names = [glyph_function_name(g) for g in glyph_history]
        il_found = "coherence" in history_names
    else:
        il_found = False
        history_names = []

    checks["il_precedence"] = {
        "passed": il_found,
        "found": il_found,
    }
    if not il_found:
        recommendations.append(
            "Apply IL (Coherence) for stable transformation base (U4b Part 1)."
        )

    # Check 4: Recent destabilizer
    logger = logging.getLogger(__name__)
    context = record_destabilizer_context(G, node, logger)
    destabilizer_found = context.get("destabilizer_operator") is not None

    checks["recent_destabilizer"] = {
        "passed": destabilizer_found,
        "distance": context.get("destabilizer_distance"),
        "operator": context.get("destabilizer_operator"),
    }
    if not destabilizer_found:
        recommendations.append(
            "Apply destabilizer (OZ/VAL) within last ~3 operations to elevate ΔNFR (U4b Part 2)."
        )

    # Check 5: History length
    min_history = int(G.graph.get("ZHIR_MIN_HISTORY_LENGTH", 2))
    history_passed = len(epi_history) >= min_history
    checks["history_length"] = {
        "passed": history_passed,
        "length": len(epi_history),
        "required": min_history,
    }
    # Already covered by threshold check recommendations

    # Overall readiness
    all_passed = all(check.get("passed", False) for check in checks.values())

    return {
        "ready": all_passed,
        "checks": checks,
        "recommendations": recommendations,
    }