Changelog

All significant changes to the JLNN project will be documented in this file. The project adheres to semantic versioning.

[0.1.3] - 2026-06-14

This minor release brings a fundamental mathematical extension to the logical apparatus of the JLNN framework. It implements a complete set of traditional n-ary t-norms and t-conorms, limits drastic logic, and introduces a completely new concept of space-time curved physical fuzzy logic (PFL) governed by local Shannon entropy.

Added

  • Spatio-temporal Curved Fuzzy Logic (PFL):

    • Introduced advanced physics activations and kernels (entropy_raw, get_entropic_weight, gravitational_bend_activation) that warp the space of truth potentials proportional to local chaos.

    • Added physical implications (implies_physical_kleene_dienes, implies_physical_reichenbach, implies_physical_gravitational_lukasiewicz) which eliminate the vanishing gradient problem in high uncertainty regions.

    • Implemented parameterless state gates (PhysicalAnd, PhysicalOr, PhysicalImplication, etc.) and PhysicalPredicate grounding layer with support for gravitational attraction of unstable states to the center (0.5).

  • Extension of logical kernels (Kernels):

    • Product (probabilistic) logic: Added algebraic operators (including Reichenbach and Goguen implication) for smooth polynomial progression of gradients.

    • Gödel logic: Implemented strict min-max operators and Kleene-Dienes implications.

    • Drastic Logic: Added absolute mathematical bottom of t-norms (and_drastic_pure, or_drastic_pure) for boundary barrier modeling.

  • Bulk reductions (Bulk Gates):

    • Introduced stateless operators BulkAnd and BulkOr for vectorized aggregation of large tensors along any axis, used for native representation of \(\forall\) and \(\exists\) quantifiers.

  • Test suite:

    • Created comprehensive unit tests (test_functional.py, test_gates.py, test_predicates.py) verifying stability on GPU/TPU, behavior around entropic singularity and NNX ellipsoid parameter access syntax.

Changed

  • Flax NNX Architecture: All state gates (gates) and predicates (predicates) have been fully rewritten into modern JAX-native syntax with ellipsis (eg self.weights[...]) for error-free field injection and integration with optimizers.

  • Axiomatic fuses: Strict constraint consistency enforcement (intervals.ensure_interval) has been integrated into the functional API (functional.py) and grounding layers, preventing negative uncertainty widths from occurring during optimization.

Fixed

  • Fixed gradient collapse bug when dividing by zero in residual R-implications (Goguen) by introducing numerically safe division in JAX.

  • Fixed behavior of multi-level hierarchical structures in WeightedXor gates when processing extremely narrow truth intervals.

[0.1.2] - 2026-06-01

This release completely overhauls the deployment and hardware compatibility ecosystem, resolving critical import conflicts in environments like Google Colab (T4/V100/A100) and optimizing performance across CPU, GPU, and TPU.

Added

  • Hardware-Specific Extras: Introduced modular install targets ([cpu], [gpu], [tpu]) in pyproject.toml to decouple core logic from heavy, environment-sensitive hardware runtimes.

  • TPU Acceleration Support: Added explicit configuration for Google Cloud TPUs via jax[tpu].

Changed

  • Dependency Decoupling (TensorFlow Removal): Replaced the monolithic orbax package with orbax-checkpoint in auxiliary dependencies. This entirely removes the hidden dependency on TensorFlow/TFLite, eliminating C++ symbol collision issues (undefined symbol: Wrapped_PyInit…) and circular import bugs in PyTorch.

  • Modern JAX Baseline: Upgraded minimum JAX ecosystem requirements to >=0.8.2 across all target backends to support latest compiler optimizations.

Fixed

  • Google Colab Disconnections: Fixed a fatal issue where unhandled automated install scripts forced hard kernel drops (os.kill), which triggered browser WebSocket disconnections ([object CloseEvent]) on premium hardware (A100 instances).

  • Pip vs UV Resolver Conflicts: Restructured package optional dependencies to allow clean, side-effect-free installation using both traditional pip and high-speed uv package managers.

[1.0.0.post1] - 2026-03-09

Fixes:

  • Fixed missing metadata and dependencies in the distribution package.

  • Resolved installation issues on Windows systems where requirements were not being pulled correctly.

Technical changes:

  • Updated pyproject.toml to properly include project dependencies.

  • Verified build distribution (sdist and wheel) for cross-platform compatibility.

[1.0.0] - 2026-03-07

First stable version (Production-Ready). This version concludes the phase of intensive tuning on real bioinformatics data and brings a robust API for neuro-symbolic learning.

Added

  • Basic tutorials: A set of educational materials has been created (including toxicity screening on the ToxCast dataset) that demonstrate the practical use of JLNN from data processing to interpretation of results.

  • Validation on real data: The core of the library has been successfully tested on massive datasets using GPU/TPU acceleration.

  • Improved gradient stability: Implemented forced preservation of structural keys in NNX modules, which ensures the stability of jax.grad even for complex logical formulas.

Fixed

  • Symbolic Initialization: Fixed an error (KeyError) where dynamically defined symbols in formulas were not correctly mapped to input grounding dictionaries.

  • Logical Integrity: Fixed edge states in the implementation of Łukasiewicz logic that could cause numerical instability at very narrow intervals.

  • Shape Resolution: Fixed the mechanism for deriving dimensions (shapes) in hierarchical graphs, which solves problems with tensor incompatibility during visualization and export.

Changed

  • API Stabilization: Tested on tutorials

[0.1.rc2] - 2026-02-15

  • Pre-release version brings a major fix to the export pipeline and refines the core logical consistency of the framework.

[0.1.rc1] - 2026-02-10

  • Pre-release version, significant improvements in negation logic, crisp mode support, and documentation.

[0.1.rc2] - 2026-02-15

This Release Candidate brings a major fix to the export pipeline and refines the core logical consistency of the framework.

Added

  • FixedPredicate: Introduced a non-trainable identity predicate specifically for crisp (exact 0/1) logic examples.

  • Robust PyTree Support: The export pipeline now fully supports dictionary-based predicate inputs (e.g., {“A”: tensor, “B”: tensor}) using jax.tree.map.

  • Metadata Resolution: Added get_representative_shape helper to ensure correct ONNX value_info metadata generation even for complex nested inputs.

Changed

  • Export Pipeline Refactoring: Updated export_to_stablehlo and export_to_onnx to handle structured PyTrees instead of requiring flat jnp.ndarray inputs.

  • Negation Axiom (weighted_not): Corrected the order of operations to apply pure negation ([1-U, 1-L]) before weight scaling.

  • Workflow Consistency: The export_workflow_example now demonstrates end-to-end StableHLO and ONNX export using dictionary-based inputs.

  • Interval Enforcement: Ensured consistent L≤U after every logical operation via the ensure_interval mechanism.

Fixed

  • AttributeError in Export: Resolved the critical error where the exporter attempted to call .shape on dictionary objects.

  • AttributeError in Visualization: Fixed key handling for fuzzy inputs within visualization loops.

  • Crisp Negation Logic: Fixed incorrect output values for crisp negation (e.g., \(\sim 0 \rightarrow [1,1]\) and \(\sim 1 \rightarrow [0,0]\)).

  • Uncertainty Preservation: Negation now correctly transfers uncertainty widths in fuzzy inputs (e.g., \([0.95, 1.0] \rightarrow [0.0, 0.05]\)).

[0.1.rc1] - 2026-02-10

Release Candidate 1 – significant improvements in negation logic, crisp mode support, and documentation.

Added

  • FixedPredicate – non-trainable identity predicate for crisp (exact 0/1) logic examples

  • Two new tutorials: - Introductory Example (training + checkpoint demo) - Basic Boolean Gates (AND/OR/NOT/NAND/NOR/XOR with crisp vs fuzzy comparison)

  • Visualization of uncertainty propagation (width U-L) in boolean operations

  • Support for crisp logic mode (bypassing LearnedPredicate ramps)

Changed

  • weighted_not – corrected negation axiom: pure negation first ([1-U, 1-L]), then weight scaling

  • Ensured consistent L ≤ U after every logical operation (via ensure_interval)

  • Improved documentation structure with dedicated Tutorials section

Fixed

  • Negation width preservation – fuzzy inputs now correctly transfer uncertainty (e.g. [0.95,1.0] → ~ = [0.0,0.05])

  • AttributeError in visualization loop (fixed key handling for fuzzy inputs)

  • Incorrect output for crisp negation (~0 → [1,1], ~1 → [0,0])

[0.1.0] - 2026-02-06

First public release (Alpha Release). Implementation of the core framework built on JAX and Flax NNX.

Added

  • Example Notebooks: Added Jupyter notebooks demonstrating basic usage, training, and reasoning with JLNN.

  • README: Created a comprehensive README with installation instructions and quickstart guide.

Changed

  • Updated documentation structure to include user guide and tutorials.

[0.0.2] - 2026-01-27

First public release (Alpha Release). Implementation of the core framework built on JAX and Flax NNX.

Added

  • Core Engine: Implementation of Łukasiewicz logic for interval arithmetic \([L, U]\).

  • Symbolic Compiler: Parser for logical formulas (Lark) and automatic compiler to hierarchical NNX modules.

  • Temporal Logic: Support for operators Always (G) and Eventually (F) for time series analysis.

  • Constraint System: Mechanismus Projected Gradient Descent for maintaining weights \(w \ge 1\).

  • Export Pipeline: Ability to export models to StableHLO and ONNX formats.

  • Visualizer: Tools for visualizing truth intervals and gate weights using Matplotlib and Seaborn.

  • Xarray Integration: Support for scientific data formats and labeled outputs.

Changed

  • Created on the basis of modern Flax NNX.

  • Optimization of recursive graph traversal for full compatibility with jax.jit.

Fixed

  • Fix numeric instability in XOR gate when intervals are very narrow.

  • Add base documentation.

[0.0.1] - 2026-01-17

  • Create a project

  • Basic framework concept