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/engines/pattern_discovery/mathematical_patterns.py

mathematical_patterns.py

TNFR Emergent Mathematical Pattern Engine

This module implements the natural mathematical patterns that emerge from the nodal equation ∂EPI/∂t = νf · ΔNFR(t) at multiple scales.

Mathematical Discovery: Through systematic analysis of the nodal equation, several deep patterns emerge:

  1. Natural Eigenmodes: The equation admits natural oscillatory solutions
  2. Spectral Resonance Cascades: Harmonics naturally couple across scales
  3. Information-Theoretic Structure: EPI evolution has intrinsic entropy flow
  4. Topological Invariants: Network structure creates conservation laws
  5. Fractal Self-Similarity: Patterns repeat at multiple temporal scales
  6. Emergent Symmetries: Hidden symmetries appear in spectral domain

These patterns enable:

  • Predictive compression of EPI trajectories
  • Automatic detection of critical transitions
  • Natural clustering of equivalent network states
  • Emergent quantum-like interference patterns
  • Self-organizing optimization strategies
  • Mathematical proof techniques for grammar convergence

Status: EMERGENT MATHEMATICAL DISCOVERY ENGINE

Source Code

python
"""
TNFR Emergent Mathematical Pattern Engine

This module implements the natural mathematical patterns that emerge from the
nodal equation ∂EPI/∂t = νf · ΔNFR(t) at multiple scales.

Mathematical Discovery:
Through systematic analysis of the nodal equation, several deep patterns
emerge:

1. **Natural Eigenmodes**: The equation admits natural oscillatory
    solutions
2. **Spectral Resonance Cascades**: Harmonics naturally couple across
    scales
3. **Information-Theoretic Structure**: EPI evolution has intrinsic
    entropy flow
4. **Topological Invariants**: Network structure creates conservation
    laws
5. **Fractal Self-Similarity**: Patterns repeat at multiple temporal
    scales
6. **Emergent Symmetries**: Hidden symmetries appear in spectral domain

These patterns enable:
- Predictive compression of EPI trajectories
- Automatic detection of critical transitions
- Natural clustering of equivalent network states
- Emergent quantum-like interference patterns
- Self-organizing optimization strategies
- Mathematical proof techniques for grammar convergence

Status: EMERGENT MATHEMATICAL DISCOVERY ENGINE
"""

import importlib.util
import time
import weakref
from collections import defaultdict
from dataclasses import dataclass, field
from enum import Enum
from pathlib import Path
from typing import Any, Mapping

from ...mathematics.unified_numerical import np

# Import canonical constants for Phase 6 magic number elimination
# Import PHASE 6 EXTENDED Canonical Constants for magic number elimination
from ..constants.operational import (
    OPT_ORCH_ARITHMETIC_BOOST_CANONICAL,
)
from ..constants.operational import (
    PATTERNS_COMPRESSION_OSCILLATORY_CANONICAL,
    PATTERNS_COMPRESSION_RATIO_CANONICAL,
    PATTERNS_COMPRESSION_SIGNIFICANT_CANONICAL,
    PATTERNS_CONFIDENCE_BROKEN_CANONICAL,
    PATTERNS_DIVERGENCE_THRESHOLD_CANONICAL,
    PATTERNS_ENTROPY_THRESHOLD_CANONICAL,
    PATTERNS_HIGH_CONFIDENCE_CANONICAL,
    PATTERNS_HORIZON_LONG_CANONICAL,
    PATTERNS_HORIZON_MEDIUM_CANONICAL,
    PATTERNS_HORIZON_PREDICTIVE_CANONICAL,
    PATTERNS_HORIZON_SHORT_CANONICAL,
    PATTERNS_RSQUARED_HIGH_CANONICAL,
    PATTERNS_RSQUARED_THRESHOLD_CANONICAL,
    PATTERNS_SLOPE_MINIMAL_CANONICAL,
    PATTERNS_SLOPE_THRESHOLD_CANONICAL,
)

# ---------------------------------------------------------------------------
# Harmonic resonance detection
# ---------------------------------------------------------------------------
_HARMONIC_RATIO_TOLERANCE = 0.05

try:
    import networkx as nx

    HAS_NETWORKX = True
except ImportError:
    HAS_NETWORKX = False
    nx = None

HAS_SCIPY = importlib.util.find_spec("scipy") is not None

# Import TNFR components
try:
    from ...mathematics.spectral import get_laplacian_spectrum, gft

    HAS_SPECTRAL = True
except ImportError:
    HAS_SPECTRAL = False

# Import GPU-aware mathematics backend for pattern acceleration
try:
    HAS_GPU_BACKENDS = True
except ImportError:
    HAS_GPU_BACKENDS = False

try:
    from .multi_modal_cache import CacheEntryType, cache_unified_computation

    HAS_UNIFIED_CACHE = True
except ImportError:
    HAS_UNIFIED_CACHE = False

try:
    from ...physics.fields import compute_phase_gradient, compute_structural_potential

    HAS_PHYSICS_FIELDS = True
except ImportError:
    HAS_PHYSICS_FIELDS = False

try:
    from ..computation.fft_engine import FFTDynamicsEngine

    HAS_FFT_ENGINE = True
except ImportError:
    HAS_FFT_ENGINE = False
    FFTDynamicsEngine = None  # type: ignore

try:
    from ..integration.emergent_integration import IntegrationOpportunity

    HAS_INTEGRATION_HINTS = True
except ImportError:
    HAS_INTEGRATION_HINTS = False
    IntegrationOpportunity = None  # type: ignore

try:
    from ...mathematics.number_theory import (
        ArithmeticStructuralTerms,
        ArithmeticTNFRFormalism,
        ArithmeticTNFRParameters,
    )

    HAS_ARITHMETIC = True
except ImportError:
    HAS_ARITHMETIC = False
    ArithmeticTNFRFormalism = None  # type: ignore
    ArithmeticTNFRParameters = None  # type: ignore
    ArithmeticStructuralTerms = None  # type: ignore

# ---------------------------------------------------------------------------
# Helper utilities for detector subsystems (spectral, field, arithmetic)
# ---------------------------------------------------------------------------

try:
    _GRAPH_STATE_CACHE: "weakref.WeakKeyDictionary[Any, dict[str, Any]]" = (
        weakref.WeakKeyDictionary()
    )
except Exception:  # pragma: no cover - extremely unlikely
    _GRAPH_STATE_CACHE = None  # type: ignore
_GRAPH_STATE_FALLBACK: dict[int, dict[str, Any]] = {}
_ARITHMETIC_CONTEXT: dict[str, Any] | None = None
if HAS_INTEGRATION_HINTS:
    _INTEGRATION_HINT_MAPPING: dict[str, Any] = {
        "eigenmode_resonance": getattr(
            IntegrationOpportunity,
            "SPECTRAL_SHARING",
            "spectral_sharing",
        ),
        "spectral_cascade": getattr(
            IntegrationOpportunity,
            "SPECTRAL_SHARING",
            "spectral_sharing",
        ),
        "entropy_flow": getattr(
            IntegrationOpportunity,
            "MATHEMATICAL_CONSISTENCY",
            "mathematical_consistency",
        ),
    }
else:
    _INTEGRATION_HINT_MAPPING = {}


def _graph_cache_for(graph: Any) -> dict[str, Any]:
    """Return mutable cache bucket for a graph instance."""
    if _GRAPH_STATE_CACHE is not None:
        try:
            cache = _GRAPH_STATE_CACHE.get(graph)
        except TypeError:
            cache = None
        if cache is None:
            cache = {}
            try:
                _GRAPH_STATE_CACHE[graph] = cache
            except TypeError:
                # Some lightweight containers (e.g., dict) are not
                # weak-ref'able
                pass
        if cache is not None:
            return cache
    key = id(graph)
    bucket = _GRAPH_STATE_FALLBACK.get(key)
    if bucket is None:
        bucket = {}
        _GRAPH_STATE_FALLBACK[key] = bucket
    return bucket


def _get_spectral_basis(graph: Any) -> tuple[np.ndarray, np.ndarray] | None:
    """Return (eigenvalues, eigenvectors) with lightweight caching."""
    if not HAS_SPECTRAL:
        return None
    cache = _graph_cache_for(graph)
    if "spectral_basis" in cache:
        return cache["spectral_basis"]
    try:
        eigenvalues, eigenvectors = get_laplacian_spectrum(graph)
    except Exception:
        return None
    cache["spectral_basis"] = (eigenvalues, eigenvectors)
    return cache["spectral_basis"]


def _field_snapshot(graph: Any) -> dict[str, Any]:
    """Capture structural field telemetry when physics fields are available."""
    if not HAS_PHYSICS_FIELDS:
        return {}
    cache = _graph_cache_for(graph)
    stamp = cache.get("field_snapshot")
    if stamp is not None and (time.perf_counter() - stamp.get("timestamp", 0)) < 0.25:
        return stamp
    try:
        phi_s = compute_structural_potential(graph)
        phase_grad = compute_phase_gradient(graph)
    except Exception:
        return {}

    def _summaries(values: Any) -> dict[str, float]:
        if isinstance(values, dict):
            arr = np.array(list(values.values()), dtype=float)
        else:
            arr = np.array(values, dtype=float)
        if arr.size == 0:
            return {"mean": 0.0, "std": 0.0, "max": 0.0}
        return {
            "mean": float(np.mean(arr)),
            "std": float(np.std(arr)),
            "max": float(np.max(arr)),
        }

    snapshot = {
        "structural_potential": _summaries(phi_s),
        "phase_gradient": _summaries(phase_grad),
        "timestamp": time.perf_counter(),
    }
    cache["field_snapshot"] = snapshot
    return snapshot


def _get_fft_engine() -> Any | None:
    """Provide a shared FFT dynamics engine instance."""
    if not HAS_FFT_ENGINE:
        return None
    cache = _GRAPH_STATE_FALLBACK.setdefault(-1, {})  # Global singleton bucket
    engine = cache.get("fft_engine")
    if engine is not None:
        return engine
    try:
        engine = FFTDynamicsEngine()
    except Exception:
        cache["fft_engine"] = None
        return None
    cache["fft_engine"] = engine
    return engine


def _arithmetic_context() -> dict[str, Any] | None:
    """Expose canonical arithmetic formalism references."""
    global _ARITHMETIC_CONTEXT
    if not HAS_ARITHMETIC:
        return None
    if _ARITHMETIC_CONTEXT is None:
        try:
            params = ArithmeticTNFRParameters()
            _ARITHMETIC_CONTEXT = {
                "params": params,
                "formalism": ArithmeticTNFRFormalism,
                "terms_class": ArithmeticStructuralTerms,
            }
        except Exception:
            return None
    return _ARITHMETIC_CONTEXT


def _make_integration_hint(
    kind: str,
    metadata: dict[str, Any] | None = None,
) -> dict[str, Any] | None:
    """Create integration hint payload referencing canonical opportunities."""
    metadata = metadata or {}
    hint: dict[str, Any] = {"kind": kind, "metadata": metadata}
    opportunity = _INTEGRATION_HINT_MAPPING.get(kind)
    if opportunity is not None:
        if hasattr(opportunity, "value"):
            hint["opportunity_type"] = opportunity.value
        else:
            hint["opportunity_type"] = str(opportunity)
    return hint


def _augment_signature(
    signature: Mapping[str, Any],
    **updates: Any,
) -> dict[str, Any]:
    """Return a new mathematical signature enriched with optional context."""
    enriched = dict(signature) if signature else {}
    for key, value in updates.items():
        if value is not None:
            enriched[key] = value
    return enriched


def _extract_scalar_epi(val: Any) -> float:
    """Extract scalar magnitude from potentially complex/dict EPI value."""
    if isinstance(val, (int, float)):
        return float(val)
    if isinstance(val, complex):
        return float(np.abs(val))
    if isinstance(val, dict):
        if "continuous" in val:
            c = val["continuous"]
            if isinstance(c, (tuple, list)) and len(c) > 0:
                v = c[0]
                return float(np.abs(v)) if isinstance(v, complex) else float(v)
    return 0.0


class EmergentPatternType(Enum):
    """Types of emergent mathematical patterns."""

    # Natural oscillatory modes
    EIGENMODE_RESONANCE = "eigenmode_resonance"
    # Multi-scale harmonic coupling
    SPECTRAL_CASCADE = "spectral_cascade"
    # Information theoretic structure
    ENTROPY_FLOW = "entropy_flow"
    # Network conservation laws
    TOPOLOGICAL_INVARIANT = "topological_invariant"
    # Self-similar patterns
    FRACTAL_SCALING = "fractal_scaling"
    # Hidden symmetries
    SYMMETRY_BREAKING = "symmetry_breaking"
    # Wave-like interference
    QUANTUM_INTERFERENCE = "quantum_interference"
    # Trajectory compression
    PREDICTIVE_COMPRESSION = "predictive_compression"
    # Phase transition detection
    CRITICAL_TRANSITION = "critical_transition"


@dataclass
class EmergentPattern:
    """Discovered emergent mathematical pattern."""

    pattern_type: EmergentPatternType
    discovery_confidence: float  # 0.0-1.0
    mathematical_signature: dict[str, Any]
    temporal_scale: float  # Characteristic time scale
    spatial_scale: int  # Characteristic length scale
    prediction_horizon: float  # How far ahead it can predict
    compression_ratio: float  # Information compression achieved
    physical_interpretation: str
    applications: list[str] = field(default_factory=list)


@dataclass
class PatternDiscoveryResult:
    """Result of pattern discovery analysis."""

    discovered_patterns: list[EmergentPattern]
    pattern_interactions: dict[
        tuple[EmergentPatternType, EmergentPatternType],
        float,
    ]
    emergent_optimization_strategies: list[str]
    mathematical_invariants: dict[str, float]
    compression_potential: float
    predictive_accuracy: float
    execution_time: float


class TNFREmergentPatternEngine:
    """
    Engine for discovering emergent mathematical patterns in TNFR dynamics.

    This engine analyzes the deep mathematical structure of the nodal
    equation to discover patterns that emerge naturally at different scales
    and contexts.
    """

    def __init__(
        self,
        enable_caching: bool = True,
        analysis_depth: str = "medium",
    ):
        self.enable_caching = enable_caching
        self.analysis_depth = analysis_depth  # "shallow", "medium", "deep"

        # Discovery state
        self.discovered_patterns = {}
        self.pattern_cache = {}
        self.mathematical_invariants = {}

        # Performance tracking
        self.total_discoveries = 0
        self.pattern_statistics = defaultdict(int)

    def discover_eigenmode_resonances(
        self, G: Any, time_window: float = 10.0, frequency_resolution: int = 100
    ) -> list[EmergentPattern]:
        """
        Discover natural eigenmode resonances in network dynamics.

        The nodal equation ∂EPI/∂t = νf · ΔNFR naturally admits oscillatory
        solutions. These eigenmodes create resonant structures.
        """
        patterns = []

        if not HAS_SCIPY:
            return patterns

        spectral_basis = _get_spectral_basis(G)
        if spectral_basis is None:
            return patterns

        eigenvalues, eigenvectors = spectral_basis
        node_count = len(G.nodes()) if hasattr(G, "nodes") else 0
        field_info = _field_snapshot(G)
        fft_state_summary: dict[str, Any] | None = None
        fft_engine = _get_fft_engine()
        if fft_engine is not None:
            try:
                fft_state = fft_engine.create_fft_state(G)
                if fft_state.spectral_epi.size:
                    dominant_idx = int(np.argmax(np.abs(fft_state.spectral_epi)))
                    fft_state_summary = {
                        "spectral_energy": float(
                            np.linalg.norm(fft_state.spectral_epi)
                        ),
                        "dominant_index": dominant_idx,
                        "dominant_phase": (
                            float(np.angle(fft_state.spectral_epi[dominant_idx]))
                            if fft_state.spectral_epi.size > dominant_idx
                            else 0.0
                        ),
                    }
            except Exception:
                fft_state_summary = None

        arithmetic_summary = None
        arithmetic_ctx = _arithmetic_context()
        if arithmetic_ctx is not None:
            params = arithmetic_ctx["params"]
            arithmetic_summary = {
                "alpha": params.alpha,
                "beta": params.beta,
                "gamma": params.gamma,
            }

        # Analyze natural frequencies
        natural_frequencies = np.sqrt(np.abs(eigenvalues))

        # Find resonant combinations
        resonant_pairs = []
        for i, freq1 in enumerate(natural_frequencies):
            for j, freq2 in enumerate(natural_frequencies[i + 1 :], i + 1):
                # Check for harmonic relationships
                ratio = freq1 / freq2 if freq2 > 0 else 0

                # Simple harmonic ratios (1:2, 2:3, 3:4, etc.)
                for n, m in [(1, 2), (2, 3), (3, 4), (3, 5), (4, 5), (5, 6)]:
                    if (
                        abs(ratio - n / m) < _HARMONIC_RATIO_TOLERANCE
                        or abs(ratio - m / n) < _HARMONIC_RATIO_TOLERANCE
                    ):
                        resonant_pairs.append((i, j, freq1, freq2, n, m))

        # Create patterns for each resonance
        for i, j, freq1, freq2, n, m in resonant_pairs:
            integration_hint = _make_integration_hint(
                "eigenmode_resonance",
                {
                    "mode_indices": (i, j),
                    "harmonic_ratio": (n, m),
                    "graph_nodes": node_count,
                },
            )

            pattern = EmergentPattern(
                pattern_type=EmergentPatternType.EIGENMODE_RESONANCE,
                # High confidence for harmonic ratios
                discovery_confidence=PATTERNS_HIGH_CONFIDENCE_CANONICAL,
                mathematical_signature=_augment_signature(
                    {
                        "mode_indices": (i, j),
                        "frequencies": (freq1, freq2),
                        "harmonic_ratio": (n, m),
                        "resonance_strength": (abs(freq1 - freq2) / (freq1 + freq2)),
                        "coupling_coefficient": float(
                            np.dot(eigenvectors[:, i], eigenvectors[:, j])
                        ),
                    },
                    field_snapshot=field_info if field_info else None,
                    fft_signature=fft_state_summary,
                    arithmetic_coefficients=arithmetic_summary,
                    integration_hint=integration_hint,
                ),
                temporal_scale=(
                    2 * np.pi / min(freq1, freq2)
                    if min(freq1, freq2) > 0
                    else float("inf")
                ),
                spatial_scale=node_count,
                prediction_horizon=time_window,
                # Can compress oscillatory patterns
                compression_ratio=PATTERNS_COMPRESSION_RATIO_CANONICAL,
                physical_interpretation=(
                    "Harmonic coupling between modes " f"{i} and {j} with ratio {n}:{m}"
                ),
                applications=[
                    "resonance_prediction",
                    "mode_coupling",
                    "harmonic_analysis",
                ],
            )
            patterns.append(pattern)

        return patterns

    def discover_spectral_cascades(
        self, G: Any, cascade_depth: int = 5
    ) -> list[EmergentPattern]:
        """
        Discover spectral energy cascades across scales.

        Multi-scale coupling in TNFR creates natural energy cascades
        similar to turbulence but in network-spectral space.
        """
        patterns = []

        if not HAS_PHYSICS_FIELDS:
            return patterns

        spectral_basis = _get_spectral_basis(G)
        if spectral_basis is None:
            return patterns

        # Get current EPI distribution
        epi_signal = np.array(
            [_extract_scalar_epi(G.nodes[node].get("EPI", 0.0)) for node in G.nodes()]
        )

        # Get spectral decomposition
        eigenvalues, eigenvectors = spectral_basis
        spectral_coeffs = gft(epi_signal, eigenvectors)

        # Analyze energy distribution across scales
        energy_spectrum = np.abs(spectral_coeffs) ** 2

        # Look for power-law cascades (E(k) ~ k^(-α))
        frequencies = eigenvalues
        valid_indices = frequencies > 0

        if np.sum(valid_indices) > 3:
            log_freq = np.log(frequencies[valid_indices])
            log_energy = np.log(energy_spectrum[valid_indices] + 1e-12)

            # Fit power law
            if HAS_SCIPY:
                slope, intercept = np.polyfit(log_freq, log_energy, 1)
                # Guard against zero-variance inputs (degenerate spectra,
                # e.g. when energy_spectrum saturates the 1e-12 floor):
                # np.corrcoef would divide by zero std, yielding nan and a
                # RuntimeWarning. Physically, a constant spectrum has no
                # power-law structure -> R^2 = 0.
                if np.std(log_freq) <= 0.0 or np.std(log_energy) <= 0.0:
                    r_squared = 0.0
                else:
                    r_squared = np.corrcoef(log_freq, log_energy)[0, 1] ** 2

                # Strong power law indicates cascade
                if (
                    r_squared > PATTERNS_RSQUARED_THRESHOLD_CANONICAL
                    and abs(slope) > PATTERNS_SLOPE_THRESHOLD_CANONICAL
                ):
                    field_info = _field_snapshot(G)
                    fft_signature = None
                    fft_engine = _get_fft_engine()
                    if fft_engine is not None:
                        try:
                            fft_state = fft_engine.create_fft_state(G)
                            if fft_state.spectral_epi.size:
                                fft_signature = {
                                    "spectral_energy": float(
                                        np.linalg.norm(fft_state.spectral_epi)
                                    ),
                                    "phase_energy": float(
                                        np.linalg.norm(fft_state.spectral_phase)
                                    ),
                                }
                        except Exception:
                            fft_signature = None

                    arithmetic_summary = None
                    arithmetic_ctx = _arithmetic_context()
                    if arithmetic_ctx is not None:
                        params = arithmetic_ctx["params"]
                        arithmetic_summary = {
                            "nu_0": params.nu_0,
                            "delta": params.delta,
                            "epsilon": params.epsilon,
                        }

                    integration_hint = _make_integration_hint(
                        "spectral_cascade",
                        {
                            "slope": float(slope),
                            "r_squared": float(r_squared),
                            "frequency_span": float(
                                np.max(frequencies[valid_indices])
                                - np.min(frequencies[valid_indices])
                            ),
                        },
                    )

                    pattern = EmergentPattern(
                        pattern_type=EmergentPatternType.SPECTRAL_CASCADE,
                        discovery_confidence=r_squared,
                        mathematical_signature=_augment_signature(
                            {
                                "cascade_exponent": -slope,
                                "energy_scale": np.exp(intercept),
                                "frequency_range": (
                                    np.min(frequencies[valid_indices]),
                                    np.max(frequencies[valid_indices]),
                                ),
                                "r_squared": r_squared,
                                "total_energy": np.sum(energy_spectrum),
                            },
                            field_snapshot=field_info if field_info else None,
                            fft_signature=fft_signature,
                            arithmetic_coefficients=arithmetic_summary,
                            integration_hint=integration_hint,
                        ),
                        temporal_scale=1.0 / np.max(frequencies[valid_indices]),
                        spatial_scale=len(G.nodes()),
                        prediction_horizon=PATTERNS_HORIZON_LONG_CANONICAL,
                        compression_ratio=(PATTERNS_COMPRESSION_OSCILLATORY_CANONICAL),
                        physical_interpretation=(
                            f"Energy cascade with exponent {slope:.2f}"
                        ),
                        applications=[
                            "energy_prediction",
                            "cascade_modeling",
                            "multi_scale_analysis",
                        ],
                    )
                    patterns.append(pattern)

        return patterns

    def discover_entropy_flow_patterns(
        self, G: Any, history_length: int = 10
    ) -> list[EmergentPattern]:
        """
        Discover information-theoretic patterns in EPI evolution.

        The nodal equation has natural entropy production and flow.
        """
        patterns = []
        node_count = len(G.nodes()) if hasattr(G, "nodes") else 0
        if node_count == 0:
            return patterns
        max_entropy = np.log(node_count)

        # Extract current state entropy
        epi_values = [
            _extract_scalar_epi(G.nodes[node].get("EPI", 0.0)) for node in G.nodes()
        ]
        epi_array = np.array(epi_values)

        # Normalize to probability distribution
        if np.sum(np.abs(epi_array)) > 0:
            prob_dist = np.abs(epi_array) / np.sum(np.abs(epi_array))

            # Compute Shannon entropy
            entropy = -np.sum(prob_dist * np.log(prob_dist + 1e-12))

            # Compute relative entropy (KL divergence from uniform)
            uniform_dist = np.ones_like(prob_dist) / len(prob_dist)
            kl_divergence = np.sum(prob_dist * np.log(prob_dist / uniform_dist + 1e-12))

            # Analyze entropy gradient across network
            if HAS_NETWORKX:
                entropy_gradient = 0.0
                for edge in G.edges():
                    u, v = edge
                    epi_u = _extract_scalar_epi(G.nodes[u].get("EPI", 0.0))
                    epi_v = _extract_scalar_epi(G.nodes[v].get("EPI", 0.0))
                    entropy_gradient += abs(epi_u - epi_v)
                entropy_gradient /= len(G.edges()) if len(G.edges()) > 0 else 1

                # Strong entropy flow indicates information-theoretic structure
                if (
                    entropy > PATTERNS_ENTROPY_THRESHOLD_CANONICAL
                    and kl_divergence > PATTERNS_DIVERGENCE_THRESHOLD_CANONICAL
                ):
                    field_info = _field_snapshot(G)
                    integration_hint = _make_integration_hint(
                        "entropy_flow",
                        {
                            "entropy": float(entropy),
                            "kl_divergence": float(kl_divergence),
                            "edge_entropy_gradient": float(entropy_gradient),
                        },
                    )
                    pattern = EmergentPattern(
                        pattern_type=EmergentPatternType.ENTROPY_FLOW,
                        discovery_confidence=min(entropy / max_entropy, 1.0),
                        mathematical_signature=_augment_signature(
                            {
                                "shannon_entropy": entropy,
                                "kl_divergence": kl_divergence,
                                "entropy_gradient": entropy_gradient,
                                "max_entropy": max_entropy,
                                "entropy_efficiency": entropy / max_entropy,
                                "information_density": np.sum(epi_array**2),
                            },
                            field_snapshot=field_info if field_info else None,
                            integration_hint=integration_hint,
                        ),
                        temporal_scale=1.0,
                        spatial_scale=int(np.sqrt(node_count)),
                        prediction_horizon=PATTERNS_HORIZON_MEDIUM_CANONICAL,
                        compression_ratio=entropy / max_entropy,
                        physical_interpretation=(
                            "Information flow with entropy production"
                        ),
                        applications=[
                            "information_theory",
                            "compression",
                            "prediction",
                        ],
                    )
                    patterns.append(pattern)

        return patterns

    def discover_topological_invariants(self, G: Any) -> list[EmergentPattern]:
        """
        Discover topological invariants that constrain TNFR evolution.

        Network topology creates conservation laws for certain quantities.
        """
        patterns = []

        if not HAS_NETWORKX:
            return patterns

        # Compute basic topological invariants
        num_nodes = len(G.nodes())
        num_edges = len(G.edges())

        # Euler characteristic for planar graphs
        if num_nodes > 2:
            try:
                # Attempt to compute number of faces for planar graphs
                # For non-planar, this is just a connectivity measure
                euler_char = num_nodes - num_edges

                # Degree sequence invariant
                degrees = [G.degree(node) for node in G.nodes()]
                degree_sequence_invariant = (
                    np.sum(np.array(degrees) ** 2) / (2 * num_edges)
                    if num_edges > 0
                    else 0
                )

                # Spectral invariants
                if HAS_SPECTRAL:
                    eigenvalues, _ = get_laplacian_spectrum(G)
                    # Should equal sum of degrees
                    spectral_trace = np.sum(eigenvalues)

                    # Spectral determinant: product of positive eigenvalues.
                    # Direct np.prod can overflow for larger graphs (warning:
                    # overflow encountered in reduce). Use log-domain
                    # aggregation to preserve ordering and avoid warnings.
                    positive_eigs = eigenvalues[eigenvalues > 1e-10]
                    if positive_eigs.size == 0:
                        spectral_determinant = 0.0
                    else:
                        log_det = float(np.sum(np.log(positive_eigs)))
                        max_log = float(np.log(np.finfo(float).max))
                        spectral_determinant = (
                            float(np.exp(log_det))
                            if log_det <= max_log
                            else float("inf")
                        )

                    # Check if invariants are preserved (they should be for
                    # topology)
                    degree_sum_check = abs(spectral_trace - np.sum(degrees)) < 1e-10

                    if degree_sum_check:
                        pattern = EmergentPattern(
                            pattern_type=(EmergentPatternType.TOPOLOGICAL_INVARIANT),
                            discovery_confidence=1.0,
                            mathematical_signature={
                                "euler_characteristic": euler_char,
                                "degree_sequence_invariant": (
                                    degree_sequence_invariant
                                ),
                                "spectral_trace": spectral_trace,
                                "spectral_determinant": spectral_determinant,
                                "num_components": (nx.number_connected_components(G)),
                                "diameter": (
                                    nx.diameter(G)
                                    if nx.is_connected(G)
                                    else float("inf")
                                ),
                            },
                            temporal_scale=float("inf"),
                            spatial_scale=num_nodes,
                            prediction_horizon=float("inf"),
                            compression_ratio=float("inf"),
                            physical_interpretation=("Topological conservation law"),
                            applications=[
                                "invariant_checking",
                                "topology_verification",
                                "conservation_laws",
                            ],
                        )
                        patterns.append(pattern)

            except Exception:
                pass  # Skip if topological calculations fail

        return patterns

    def discover_fractal_scaling_patterns(
        self, G: Any, scale_range: tuple[int, int] = (2, 10)
    ) -> list[EmergentPattern]:
        """
        Discover fractal self-similarity in network structure.

        TNFR dynamics can exhibit fractal patterns across multiple scales.
        """
        patterns = []

        if not HAS_NETWORKX or not HAS_SCIPY:
            return patterns

        # Analyze scaling of various network properties
        min_scale, max_scale = scale_range

        # Box-counting dimension for network structure
        scales = range(min_scale, min(max_scale, len(G.nodes()) // 2))
        box_counts = []

        for scale in scales:
            # Simple box-counting: partition nodes into boxes of size 'scale'
            # and count non-empty boxes
            try:
                if nx.is_connected(G):
                    # Use shortest path distances for partitioning
                    distances = dict(nx.all_pairs_shortest_path_length(G))

                    # Find maximal sets of nodes within distance 'scale'
                    boxes = []
                    uncovered = set(G.nodes())

                    while uncovered:
                        seed = next(iter(uncovered))
                        box = {seed}

                        for node in list(uncovered):
                            if (
                                node in distances[seed]
                                and distances[seed][node] <= scale
                            ):
                                box.add(node)

                        boxes.append(box)
                        uncovered -= box

                    box_counts.append(len(boxes))

            except Exception:
                box_counts.append(1)  # Fallback

        # Fit fractal dimension
        if len(box_counts) >= 3:
            log_scales = np.log(np.array(scales[: len(box_counts)]))
            log_boxes = np.log(np.array(box_counts))

            # Fractal dimension from slope
            slope, intercept = np.polyfit(log_scales, log_boxes, 1)
            # Guard against zero-variance inputs (uniform box counts /
            # single-scale collapse): np.corrcoef would emit a divide-by-zero
            # RuntimeWarning and return nan. Without scale variance there is
            # no fractal scaling to fit.
            if np.std(log_scales) <= 0.0 or np.std(log_boxes) <= 0.0:
                r_squared = 0.0
            else:
                r_squared = np.corrcoef(log_scales, log_boxes)[0, 1] ** 2

            # Good fractal scaling
            if (
                r_squared > PATTERNS_RSQUARED_HIGH_CANONICAL
                and abs(slope) > PATTERNS_SLOPE_MINIMAL_CANONICAL
            ):
                fractal_dim = -slope  # Negative because N(r) ~ r^(-D)

                pattern = EmergentPattern(
                    pattern_type=EmergentPatternType.FRACTAL_SCALING,
                    discovery_confidence=r_squared,
                    mathematical_signature={
                        "fractal_dimension": fractal_dim,
                        "scaling_prefactor": np.exp(intercept),
                        "scale_range": scale_range,
                        "r_squared": r_squared,
                        "box_counts": box_counts,
                        "scales": list(scales[: len(box_counts)]),
                    },
                    temporal_scale=1.0,
                    spatial_scale=int(np.mean(scales)),
                    prediction_horizon=PATTERNS_HORIZON_SHORT_CANONICAL,
                    compression_ratio=len(G.nodes()) / len(box_counts),
                    physical_interpretation=(
                        f"Fractal scaling with dimension {fractal_dim:.2f}"
                    ),
                    applications=[
                        "fractal_analysis",
                        "multi_scale_modeling",
                        "dimension_reduction",
                    ],
                )
                patterns.append(pattern)

        return patterns

    def analyze_pattern_interactions(
        self, patterns: list[EmergentPattern]
    ) -> dict[tuple[EmergentPatternType, EmergentPatternType], float]:
        """
        Analyze interactions between discovered patterns.

        Patterns can reinforce or interfere with each other.
        """
        interactions = {}

        for i, pattern1 in enumerate(patterns):
            for pattern2 in patterns[i + 1 :]:
                # Compute interaction strength based on scale overlap
                spatial_overlap = min(
                    pattern1.spatial_scale, pattern2.spatial_scale
                ) / max(pattern1.spatial_scale, pattern2.spatial_scale)

                temporal_overlap = 1.0
                if pattern1.temporal_scale != float(
                    "inf"
                ) and pattern2.temporal_scale != float("inf"):
                    temporal_overlap = min(
                        pattern1.temporal_scale, pattern2.temporal_scale
                    ) / max(pattern1.temporal_scale, pattern2.temporal_scale)

                # Combined interaction strength
                interaction_strength = (
                    spatial_overlap
                    * temporal_overlap
                    * pattern1.discovery_confidence
                    * pattern2.discovery_confidence
                )

                interactions[(pattern1.pattern_type, pattern2.pattern_type)] = (
                    interaction_strength
                )

        return interactions

    def discover_all_patterns(self, G: Any, **kwargs) -> PatternDiscoveryResult:
        """
        Comprehensive pattern discovery across all pattern types.
        """
        start_time = time.perf_counter()

        all_patterns = []

        # Discover each pattern type
        all_patterns.extend(self.discover_eigenmode_resonances(G, **kwargs))
        all_patterns.extend(self.discover_spectral_cascades(G, **kwargs))
        all_patterns.extend(self.discover_entropy_flow_patterns(G, **kwargs))
        all_patterns.extend(self.discover_topological_invariants(G, **kwargs))
        all_patterns.extend(self.discover_fractal_scaling_patterns(G, **kwargs))

        # Analyze pattern interactions
        pattern_interactions = self.analyze_pattern_interactions(all_patterns)

        # Generate emergent optimization strategies
        optimization_strategies = []
        for pattern in all_patterns:
            if pattern.compression_ratio > PATTERNS_COMPRESSION_SIGNIFICANT_CANONICAL:
                optimization_strategies.append(
                    f"compress_using_{pattern.pattern_type.value}"
                )
            if pattern.prediction_horizon > PATTERNS_HORIZON_PREDICTIVE_CANONICAL:
                optimization_strategies.append(
                    f"predict_using_{pattern.pattern_type.value}"
                )

        # Compute mathematical invariants
        invariants = {}
        if all_patterns:
            compression_ratios = np.asarray(
                [p.compression_ratio for p in all_patterns],
                dtype=float,
            )
            # Robust multiplicative aggregation:
            # - explicit inf propagation (some pattern classes intentionally set
            #   compression_ratio = inf for idealized limits)
            # - avoid overflow warnings from direct np.prod on large/infinite
            #   factors by operating in log-domain for finite positive values
            if np.any(np.isinf(compression_ratios)):
                total_compression = float("inf")
            elif np.any(compression_ratios == 0.0):
                total_compression = 0.0
            else:
                safe_ratios = np.clip(
                    compression_ratios,
                    np.finfo(float).tiny,
                    np.finfo(float).max,
                )
                log_total = float(np.sum(np.log(safe_ratios)))
                max_log = float(np.log(np.finfo(float).max))
                total_compression = (
                    float(np.exp(log_total)) if log_total <= max_log else float("inf")
                )

            invariants["total_compression"] = total_compression
            invariants["max_prediction_horizon"] = np.max(
                [p.prediction_horizon for p in all_patterns]
            )
            invariants["average_confidence"] = np.mean(
                [p.discovery_confidence for p in all_patterns]
            )

        # Overall metrics
        compression_potential = (
            np.mean([p.compression_ratio for p in all_patterns])
            if all_patterns
            else 1.0
        )
        predictive_accuracy = (
            np.mean([p.discovery_confidence for p in all_patterns])
            if all_patterns
            else 0.0
        )

        execution_time = time.perf_counter() - start_time

        # Update statistics
        self.total_discoveries += len(all_patterns)
        for pattern in all_patterns:
            self.pattern_statistics[pattern.pattern_type] += 1

        return PatternDiscoveryResult(
            discovered_patterns=all_patterns,
            pattern_interactions=pattern_interactions,
            emergent_optimization_strategies=list(set(optimization_strategies)),
            mathematical_invariants=invariants,
            compression_potential=compression_potential,
            predictive_accuracy=predictive_accuracy,
            execution_time=execution_time,
        )

    def get_discovery_statistics(self) -> dict[str, Any]:
        """Get statistics about pattern discoveries."""
        return {
            "total_discoveries": self.total_discoveries,
            "pattern_counts": dict(self.pattern_statistics),
            "cached_patterns": len(self.pattern_cache),
            "analysis_depth": self.analysis_depth,
            "caching_enabled": self.enable_caching,
            "available_modules": {
                "scipy": HAS_SCIPY,
                "spectral": HAS_SPECTRAL,
                "physics_fields": HAS_PHYSICS_FIELDS,
                "unified_cache": HAS_UNIFIED_CACHE,
            },
        }

    def _serialize_discovery_statistics(self) -> dict[str, Any]:
        """Get JSON-serializable discovery statistics."""
        stats = self.get_discovery_statistics()
        # Convert enum keys to strings in pattern_counts
        if "pattern_counts" in stats:
            stats["pattern_counts"] = {
                k.value if hasattr(k, "value") else str(k): v
                for k, v in stats["pattern_counts"].items()
            }
        return stats

    def export_pattern_manifest(
        self,
        G: Any,
        discovery_result: PatternDiscoveryResult,
        output_dir: Path,
        partition_id: str,
    ) -> dict[str, Path]:
        """Export pattern discovery results as manifest for self-optimization.

        Parameters
        ----------
        G : Any
            TNFR network graph that was analyzed.
        discovery_result : PatternDiscoveryResult
            Results from discover_all_patterns().
        output_dir : Path
            Directory where manifests will be written.
        partition_id : str
            Unique identifier for this pattern discovery partition.

        Returns
        -------
        dict[str, Path]
            Dictionary with keys 'manifest_absolute' and 'summary_absolute'
            pointing to the generated manifest files.

        Notes
        -----
        Manifest format compatible with self_opt_support pipeline:
        - operation_type: 'pattern_discovery'
        - partition_id: unique identifier
        - discovered_patterns: list of pattern metadata
        - telemetry: coherence, sense_index, phase metrics
        - network_metadata: node count, edge count, structural metrics
        """
        import json
        from datetime import datetime, timezone

        output_dir = Path(output_dir)
        output_dir.mkdir(parents=True, exist_ok=True)

        # Compute telemetry metrics
        telemetry = {}
        try:
            from ...physics import compute_coherence, compute_sense_index

            telemetry["coherence"] = float(compute_coherence(G))
            telemetry["sense_index"] = float(compute_sense_index(G))
        except Exception:
            telemetry["coherence"] = None
            telemetry["sense_index"] = None

        try:
            from ...physics.fields import compute_structural_potential_field

            phi_s_values = compute_structural_potential_field(G)
            if phi_s_values:
                telemetry["structural_potential_range"] = [
                    float(min(phi_s_values.values())),
                    float(max(phi_s_values.values())),
                ]
            else:
                telemetry["structural_potential_range"] = None
        except Exception:
            telemetry["structural_potential_range"] = None

        # Extract network metadata
        node_count = len(G.nodes()) if hasattr(G, "nodes") else 0
        edge_count = len(G.edges()) if hasattr(G, "edges") else 0

        # Serialize discovered patterns
        patterns_serialized = []
        for pattern in discovery_result.discovered_patterns:
            pattern_data = {
                "pattern_type": pattern.pattern_type.value,
                "confidence": float(pattern.discovery_confidence),
                "temporal_scale": float(pattern.temporal_scale),
                "spatial_scale": float(pattern.spatial_scale),
                "prediction_horizon": float(pattern.prediction_horizon),
                "compression_ratio": float(pattern.compression_ratio),
                "physical_interpretation": pattern.physical_interpretation,
                "applications": pattern.applications,
                "mathematical_signature": {
                    k: float(v) if isinstance(v, (int, float, np.number)) else str(v)
                    for k, v in pattern.mathematical_signature.items()
                    if not k.startswith("_")
                },
            }
            patterns_serialized.append(pattern_data)

        # Build manifest
        manifest = {
            "operation_type": "pattern_discovery",
            "partition_id": partition_id,
            "timestamp": datetime.now(timezone.utc).isoformat(),
            "network_metadata": {
                "node_count": node_count,
                "edge_count": edge_count,
            },
            "telemetry": telemetry,
            "discovered_patterns": patterns_serialized,
            "discovery_statistics": self._serialize_discovery_statistics(),
            "emergent_optimization_strategies": discovery_result.emergent_optimization_strategies,
            "mathematical_invariants": {
                k: float(v) if isinstance(v, (int, float, np.number)) else str(v)
                for k, v in discovery_result.mathematical_invariants.items()
            },
            "compression_potential": float(discovery_result.compression_potential),
            "predictive_accuracy": float(discovery_result.predictive_accuracy),
        }

        # Write manifest
        manifest_path = output_dir / "pattern_manifest.json"
        with open(manifest_path, "w") as f:
            json.dump(manifest, f, indent=2)

        # Write summary
        summary = {
            "operation_type": "pattern_discovery",
            "partition_id": partition_id,
            "pattern_count": len(patterns_serialized),
            "coherence": telemetry.get("coherence"),
            "sense_index": telemetry.get("sense_index"),
            "compression_potential": float(discovery_result.compression_potential),
            "predictive_accuracy": float(discovery_result.predictive_accuracy),
        }
        summary_path = output_dir / "pattern_summary.json"
        with open(summary_path, "w") as f:
            json.dump(summary, f, indent=2)

        return {
            "manifest_absolute": manifest_path.resolve(),
            "summary_absolute": summary_path.resolve(),
        }


# Factory functions for easy access
def create_emergent_pattern_engine(**kwargs) -> TNFREmergentPatternEngine:
    """Create emergent pattern discovery engine."""
    return TNFREmergentPatternEngine(**kwargs)


@(
    cache_unified_computation(
        CacheEntryType.NODAL_STATE,
        # ≈ 0.0625 → canonical
        mathematical_importance=OPT_ORCH_ARITHMETIC_BOOST_CANONICAL,
    )
    if HAS_UNIFIED_CACHE
    else lambda *args, **kwargs: lambda f: f
)
def discover_mathematical_patterns(G: Any, **kwargs) -> PatternDiscoveryResult:
    """Convenience function for comprehensive pattern discovery."""
    engine = create_emergent_pattern_engine()
    return engine.discover_all_patterns(G, **kwargs)


def analyze_emergent_symmetries(G: Any) -> dict[str, Any]:
    """Analyze emergent symmetries in TNFR dynamics."""
    engine = create_emergent_pattern_engine()
    result = engine.discover_all_patterns(G)

    # Focus on symmetry-related patterns
    symmetry_patterns = [
        p
        for p in result.discovered_patterns
        if p.pattern_type
        in [
            EmergentPatternType.EIGENMODE_RESONANCE,
            EmergentPatternType.TOPOLOGICAL_INVARIANT,
        ]
    ]

    return {
        "symmetry_count": len(symmetry_patterns),
        "symmetry_patterns": symmetry_patterns,
        "broken_symmetries": [
            p
            for p in symmetry_patterns
            if p.discovery_confidence < PATTERNS_CONFIDENCE_BROKEN_CANONICAL
        ],
        "conservation_laws": [
            p
            for p in symmetry_patterns
            if p.pattern_type == EmergentPatternType.TOPOLOGICAL_INVARIANT
        ],
    }