V0.4 Scope#
Summary#
v0.4 is the first Lie-algebra span, symbolic reporting, algebra diagnostics, and visual inspection release for PDELie.
It does not:
introduce a new numerical regime
add weak-form methods
add operator methods
add neural generators as stable API
add broad dataset adapters
add a stable 2D PDE pipeline
add stable multi-generator PDE fitting
Instead, it asks a narrower and more important question:
Can PDELie represent, normalize, compare, diagnose, and visually inspect a small polynomial Lie-generator family under controlled stable conditions?
v0.4 is therefore the first generator-family and algebra-inspection release, not the first weak-form, operator, or broad downstream release.
Stable Scope#
uniform rectilinear grids only
synthetic PDE data only
polynomial Lie point generators only
Heat/Burgers stable paths remain regression-protected
multi-generator
GeneratorFamilyrepresentationsymbolic generator normalization and display
span comparison diagnostics
Lie bracket / closure diagnostics
minimal optional visualization
no new stable canonical object unless absolutely necessary
Stable canonical objects#
Stable in v0.4:
FieldBatchDerivativeBatchResidualBatchResidualEvaluatorGeneratorFamilyInvariantMapSpecVerificationReport
Runtime-only, not canonical:
symbolic rendering helpers
optional basis simplification helpers
span-diagnostics helpers
closure-diagnostics helpers
visualization helpers
existing
InvariantApplierexisting downstream bridge helpers
GeneratorFamily Contract#
Canonical core#
Canonical meaning depends only on:
schema_versionparameterizationcoefficientsbasis_specnormalizationoptional
generator_names
diagnostics is optional and non-authoritative.
Rule:
GeneratorFamilystores enough information to reproduce analysis reportssymbolic/span/closure/viz helpers compute runtime reports
attached diagnostics are summaries or provenance, not the contract itself
Schema policy#
schema_versionis an object-schema epoch, not a package versionGeneratorFamily.schema_version = "0.2"means “post-family-semantics GeneratorFamily”other canonical objects may remain at
"0.1"until their schemas actually changeschema versions advance independently per canonical object family as needed
Canonical family form#
Canonical v0.4 output must always be:
schema_version = "0.2"coefficients.shape == (num_generators, num_coefficients_per_generator)explicit
basis_spec
Required basis_spec fields:
variablescomponent_namesbasis_termscomponent_orderingterm_orderinglayout
Freeze:
layout = "component_major"
Freeze one concrete example:
{
"variables": ["t", "x", "u"],
"component_names": ["tau", "xi", "phi"],
"basis_terms": [
{"label": "1", "powers": [0, 0, 0]},
{"label": "t", "powers": [1, 0, 0]},
{"label": "x", "powers": [0, 1, 0]},
{"label": "u", "powers": [0, 0, 1]}
],
"component_ordering": ["tau", "xi", "phi"],
"term_ordering": ["1", "t", "x", "u"],
"layout": "component_major"
}
Coefficient interpretation rule:
for each generator row
iterate
component_namesin orderwithin each component, iterate
basis_termsin ordereach scalar coefficient multiplies that component-term pair
Legacy compatibility and canonical serialization#
direct construction without
basis_specis invalid inv0.4legacy
0.1single-generator translation payloads remain accepted only viaGeneratorFamily.from_dict()legacy payloads without
basis_specare accepted only when they match the frozen translation parameterizationthose payloads are upgraded in memory to canonical
0.2family formto_dict()always emits canonical0.2outputcanonical output always includes explicit
basis_specmissing
basis_specoutside the explicit legacy translation case is a typed validation errorround-trip tests must cover:
legacy input -> canonical in-memory form -> canonical output
canonical input -> canonical output
Frozen canonical translation compatibility target:
{
"schema_version": "0.2",
"parameterization": "polynomial_translation_affine",
"coefficients": [[1.0, 0.0, 0.0, 0.0]],
"basis_spec": {
"variables": ["t", "x", "u"],
"component_names": ["xi"],
"basis_terms": [
{"label": "1", "powers": [0, 0, 0]},
{"label": "t", "powers": [1, 0, 0]},
{"label": "x", "powers": [0, 1, 0]},
{"label": "u", "powers": [0, 0, 1]}
],
"component_ordering": ["xi"],
"term_ordering": ["1", "t", "x", "u"],
"layout": "component_major"
},
"normalization": "l2_unit"
}
Normalization And Reports#
Numerical vs display normalization#
Numerical normalization:
canonical meaning only
default row-wise
l2_unitused for fitting/comparison/diagnostics
Display normalization:
runtime-only
default
anchornever mutates canonical coefficients
used only for human-readable output
Symbolic display promise#
deterministic symbolic display for the given basis
no promise of canonical algebra-basis recovery
span equivalence remains primary
optional runtime-only sparse/anchor basis simplification helper may try to find a nicer displayed basis
simplification is heuristic and not part of stable equivalence semantics
Span And Closure Diagnostics#
Span diagnostics policy#
Primary metric:
principal angles
Paired derived metric:
projection residual
Comparison precondition:
compared families must have structurally equivalent
basis_specsemantics
Freeze one default inner-product policy:
normalized variable domain
default algebraic-fixture domain
[-1, 1]^nPDE-associated variables are affine-mapped to
[-1, 1]uniform component weights after normalization
Preferred computation mode:
exact polynomial inner product for the current algebraic/runtime polynomial scope
Deferred later work:
field-aware scaling for PDE-associated learned spans
deterministic sampled fallback modes for broader comparison settings
Required core span report fields:
inner_product
evaluation_mode
domain
component_weights
reference_rank
candidate_rank
comparison_rank
principal_angles_radians
projection_residual
conditioning
Additional runtime diagnostic fields may be included, but are not frozen in v0.4 Milestone 3 unless promoted later.
Closure / structure-constant policy#
Preferred mode:
exact polynomial Lie brackets for the current monomial algebraic/runtime polynomial scope
Fallback mode:
deterministic sampled/projection closure only when exact mode is unavailable or explicitly forced
Exact-mode policy:
closure diagnostics use raw vector-field brackets
exact brackets may use an internal expanded polynomial representation when bracket monomials leave the stored family basis
that expanded bracket representation is runtime-only and not a canonical object or stable basis contract
projected brackets determine reported structure constants and closure diagnostics
exact mode is available only for the current monomial basis-term encoding; richer or noncanonical term encodings must reject exact mode or downgrade to fallback
Interpretation rule:
symmetry_algebra_diagnosticsmeans closure diagnostics on a family with supplied symmetry-validity evidenceit does not claim a full family symmetry proof or full per-generator coverage in
v0.4symmetry_algebra_diagnosticsrequires non-empty supplied verification evidence whose classifications are allexactorapproximateotherwise the label is
vector_field_algebra_diagnosticsclosure is interpretive support, never primary evidence
finite-flow validity, residual validity, and held-out verification remain primary
Required core closure report fields:
interpretation_label
verification_classifications
inner_product
computation_mode
domain
component_weights
component_targets
family_rank
structure_constants
closure
antisymmetry
jacobi
conditioning
Controlled Targets#
Freeze two target classes:
algebraic family fixtures with exact known coefficients and brackets
regression protection on existing Heat/Burgers stable paths
Allowed algebraic fixtures:
translation-style
scaling-style
mixed affine
rotation-style for symbolic/span/bracket tests only
Rotation-style fixtures must be coefficient-level algebra fixtures, not PDE/data fixtures.
Frozen Milestones#
Milestone 1 — GeneratorFamily representation semantics#
Status: Complete
freeze family-shaped
GeneratorFamilyadd required
basis_specfreeze canonical serialization and migration policy
no symbolic display
no fitting
no visualization
Milestone 2 — Symbolic normalization and display#
Status: Complete
deterministic symbolic rendering
runtime-only display normalization
optional SymPy output
no heuristic basis simplification helper in the completed M2 slice
Milestone 3 — Span diagnostics#
Status: Complete
principal angles
projection residual
frozen inner-product policy
controlled algebraic fixtures
Milestone 4 — Closure diagnostics#
Status: Complete
exact polynomial Lie brackets where supported
deterministic fallback where needed and kept minimal
structure constants
closure / antisymmetry / Jacobi diagnostics
verification-aware interpretation labels
Milestone 5 — Minimal visualization#
Status: Complete
optional
[viz]extra onlyvisualization consumes existing canonical objects and runtime reports only
no visualization-specific contracts
coefficient-bar renderer for
GeneratorFamilysymbolic summary renderer using the frozen M2 symbolic display
verification-curve renderer for
VerificationReportspan-diagnostics renderer for the frozen M3 report shape
closure-diagnostics renderer for the frozen M4 report shape
no transformed-field plots, rollout heatmaps, animation, or interactive backends
explicitly deferrable first if M1–M4 take longer than expected
Milestone 6 — Algebra-span release gate#
Status: Complete
one focused pytest release-gate module over the already-implemented M1–M5 behavior
one dedicated CI visibility job running only that release-gate module
migration / canonical serialization checks for the translation slice
symbolic determinism checks for canonical and legacy-upgraded translation families
tolerant span reproducibility checks on representative exact multi-rank fixtures
tolerant closure reproducibility checks on representative nontrivial closed fixtures
compact Heat/Burgers stable translation regression checks
optional-viz smoke tests using a non-interactive backend with figure cleanup
no downstream or SymPy behavior in the gate itself
the CI job may still use the standard
.[test]environment; this milestone does not claim total optional-dependency isolationthe dedicated CI job supplements, and does not replace, the full editable/full-suite job
Release Gate#
v0.4 is releasable only if:
Heat and Burgers still pass unchanged
GeneratorFamilybackward compatibility is preserved for the current translation slicecanonical family serialization is stable and tested
symbolic rendering is deterministic for a given basis
span diagnostics are reproducible under the frozen inner-product policy
closure diagnostics are reproducible and condition-aware
release-gate numeric assertions use tolerant checks for floating outputs
visualization remains optional and outside the core install
visualization smoke does not require an interactive/display backend and closes figures cleanly
no weak-form, operator, neural, broad-adapter, or manuscript-facing feature is required
Explicit Non-goals#
weak-form methods
operator methods
neural generators as stable API
representative-loss or research-loss code
broad dataset adapters
broad downstream benchmark expansion
stable 2D PDE fitting or data pipeline
stable multi-generator PDE fitting
full algebra-basis canonicalization as a stable promise
polished plotting library
paper-specific or manuscript-facing logic