universal-physics-tensor 0.45.2 → 0.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -66
- package/bin/upt.mjs +22 -22
- package/dist/atlas/applicability.d.ts +108 -0
- package/dist/atlas/applicability.d.ts.map +1 -0
- package/dist/atlas/applicability.js +301 -0
- package/dist/atlas/applicability.js.map +1 -0
- package/dist/atlas/association.d.ts +92 -0
- package/dist/atlas/association.d.ts.map +1 -0
- package/dist/atlas/association.js +112 -0
- package/dist/atlas/association.js.map +1 -0
- package/dist/atlas/benchmark/backend-shapes.d.ts +47 -0
- package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -0
- package/dist/atlas/benchmark/backend-shapes.js +58 -0
- package/dist/atlas/benchmark/backend-shapes.js.map +1 -0
- package/dist/atlas/benchmark/baselines.d.ts +64 -0
- package/dist/atlas/benchmark/baselines.d.ts.map +1 -0
- package/dist/atlas/benchmark/baselines.js +112 -0
- package/dist/atlas/benchmark/baselines.js.map +1 -0
- package/dist/atlas/benchmark/leakage.d.ts +56 -0
- package/dist/atlas/benchmark/leakage.d.ts.map +1 -0
- package/dist/atlas/benchmark/leakage.js +100 -0
- package/dist/atlas/benchmark/leakage.js.map +1 -0
- package/dist/atlas/benchmark/loader.d.ts +56 -0
- package/dist/atlas/benchmark/loader.d.ts.map +1 -0
- package/dist/atlas/benchmark/loader.js +104 -0
- package/dist/atlas/benchmark/loader.js.map +1 -0
- package/dist/atlas/benchmark/run-atlas.d.ts +72 -0
- package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -0
- package/dist/atlas/benchmark/run-atlas.js +210 -0
- package/dist/atlas/benchmark/run-atlas.js.map +1 -0
- package/dist/atlas/benchmark/stats.d.ts +90 -0
- package/dist/atlas/benchmark/stats.d.ts.map +1 -0
- package/dist/atlas/benchmark/stats.js +159 -0
- package/dist/atlas/benchmark/stats.js.map +1 -0
- package/dist/atlas/benchmark/study.d.ts +120 -0
- package/dist/atlas/benchmark/study.d.ts.map +1 -0
- package/dist/atlas/benchmark/study.js +192 -0
- package/dist/atlas/benchmark/study.js.map +1 -0
- package/dist/atlas/benchmark/types.d.ts +79 -0
- package/dist/atlas/benchmark/types.d.ts.map +1 -0
- package/dist/atlas/benchmark/types.js +46 -0
- package/dist/atlas/benchmark/types.js.map +1 -0
- package/dist/atlas/composition-table.d.ts +55 -0
- package/dist/atlas/composition-table.d.ts.map +1 -0
- package/dist/atlas/composition-table.js +133 -0
- package/dist/atlas/composition-table.js.map +1 -0
- package/dist/atlas/conventions.d.ts +63 -0
- package/dist/atlas/conventions.d.ts.map +1 -0
- package/dist/atlas/conventions.js +93 -0
- package/dist/atlas/conventions.js.map +1 -0
- package/dist/atlas/coverage.d.ts +93 -0
- package/dist/atlas/coverage.d.ts.map +1 -0
- package/dist/atlas/coverage.js +69 -0
- package/dist/atlas/coverage.js.map +1 -0
- package/dist/atlas/derivation.d.ts +137 -0
- package/dist/atlas/derivation.d.ts.map +1 -0
- package/dist/atlas/derivation.js +190 -0
- package/dist/atlas/derivation.js.map +1 -0
- package/dist/atlas/derive-evidence.d.ts +218 -0
- package/dist/atlas/derive-evidence.d.ts.map +1 -0
- package/dist/atlas/derive-evidence.js +225 -0
- package/dist/atlas/derive-evidence.js.map +1 -0
- package/dist/atlas/diffusion/bridges-closure.d.ts +63 -0
- package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -0
- package/dist/atlas/diffusion/bridges-closure.js +350 -0
- package/dist/atlas/diffusion/bridges-closure.js.map +1 -0
- package/dist/atlas/diffusion/bridges.d.ts +36 -0
- package/dist/atlas/diffusion/bridges.d.ts.map +1 -0
- package/dist/atlas/diffusion/bridges.js +226 -0
- package/dist/atlas/diffusion/bridges.js.map +1 -0
- package/dist/atlas/diffusion/dimensions.d.ts +21 -0
- package/dist/atlas/diffusion/dimensions.d.ts.map +1 -0
- package/dist/atlas/diffusion/dimensions.js +21 -0
- package/dist/atlas/diffusion/dimensions.js.map +1 -0
- package/dist/atlas/diffusion/index.d.ts +16 -0
- package/dist/atlas/diffusion/index.d.ts.map +1 -0
- package/dist/atlas/diffusion/index.js +23 -0
- package/dist/atlas/diffusion/index.js.map +1 -0
- package/dist/atlas/diffusion/models.d.ts +24 -0
- package/dist/atlas/diffusion/models.d.ts.map +1 -0
- package/dist/atlas/diffusion/models.js +139 -0
- package/dist/atlas/diffusion/models.js.map +1 -0
- package/dist/atlas/diffusion/numerics.d.ts +181 -0
- package/dist/atlas/diffusion/numerics.d.ts.map +1 -0
- package/dist/atlas/diffusion/numerics.js +251 -0
- package/dist/atlas/diffusion/numerics.js.map +1 -0
- package/dist/atlas/error-algebra.d.ts +52 -0
- package/dist/atlas/error-algebra.d.ts.map +1 -0
- package/dist/atlas/error-algebra.js +55 -0
- package/dist/atlas/error-algebra.js.map +1 -0
- package/dist/atlas/export.d.ts +48 -0
- package/dist/atlas/export.d.ts.map +1 -0
- package/dist/atlas/export.js +106 -0
- package/dist/atlas/export.js.map +1 -0
- package/dist/atlas/families.d.ts +14 -0
- package/dist/atlas/families.d.ts.map +1 -0
- package/dist/atlas/families.js +20 -0
- package/dist/atlas/families.js.map +1 -0
- package/dist/atlas/index.d.ts +90 -0
- package/dist/atlas/index.d.ts.map +1 -0
- package/dist/atlas/index.js +69 -0
- package/dist/atlas/index.js.map +1 -0
- package/dist/atlas/link-prediction.d.ts +71 -0
- package/dist/atlas/link-prediction.d.ts.map +1 -0
- package/dist/atlas/link-prediction.js +128 -0
- package/dist/atlas/link-prediction.js.map +1 -0
- package/dist/atlas/model.d.ts +70 -0
- package/dist/atlas/model.d.ts.map +1 -0
- package/dist/atlas/model.js +26 -0
- package/dist/atlas/model.js.map +1 -0
- package/dist/atlas/oscillators/bridges-coarse.d.ts +71 -0
- package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -0
- package/dist/atlas/oscillators/bridges-coarse.js +146 -0
- package/dist/atlas/oscillators/bridges-coarse.js.map +1 -0
- package/dist/atlas/oscillators/bridges-exact.d.ts +70 -0
- package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -0
- package/dist/atlas/oscillators/bridges-exact.js +230 -0
- package/dist/atlas/oscillators/bridges-exact.js.map +1 -0
- package/dist/atlas/oscillators/bridges-limits.d.ts +118 -0
- package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -0
- package/dist/atlas/oscillators/bridges-limits.js +345 -0
- package/dist/atlas/oscillators/bridges-limits.js.map +1 -0
- package/dist/atlas/oscillators/dimensions.d.ts +34 -0
- package/dist/atlas/oscillators/dimensions.d.ts.map +1 -0
- package/dist/atlas/oscillators/dimensions.js +34 -0
- package/dist/atlas/oscillators/dimensions.js.map +1 -0
- package/dist/atlas/oscillators/index.d.ts +38 -0
- package/dist/atlas/oscillators/index.d.ts.map +1 -0
- package/dist/atlas/oscillators/index.js +37 -0
- package/dist/atlas/oscillators/index.js.map +1 -0
- package/dist/atlas/oscillators/models.d.ts +25 -0
- package/dist/atlas/oscillators/models.d.ts.map +1 -0
- package/dist/atlas/oscillators/models.js +160 -0
- package/dist/atlas/oscillators/models.js.map +1 -0
- package/dist/atlas/oscillators/rejections.d.ts +21 -0
- package/dist/atlas/oscillators/rejections.d.ts.map +1 -0
- package/dist/atlas/oscillators/rejections.js +54 -0
- package/dist/atlas/oscillators/rejections.js.map +1 -0
- package/dist/atlas/path-bound.d.ts +143 -0
- package/dist/atlas/path-bound.d.ts.map +1 -0
- package/dist/atlas/path-bound.js +268 -0
- package/dist/atlas/path-bound.js.map +1 -0
- package/dist/atlas/poster/associations.d.ts +66 -0
- package/dist/atlas/poster/associations.d.ts.map +1 -0
- package/dist/atlas/poster/associations.js +90 -0
- package/dist/atlas/poster/associations.js.map +1 -0
- package/dist/atlas/poster/derivations.d.ts +156 -0
- package/dist/atlas/poster/derivations.d.ts.map +1 -0
- package/dist/atlas/poster/derivations.js +430 -0
- package/dist/atlas/poster/derivations.js.map +1 -0
- package/dist/atlas/poster/statements.d.ts +198 -0
- package/dist/atlas/poster/statements.d.ts.map +1 -0
- package/dist/atlas/poster/statements.js +365 -0
- package/dist/atlas/poster/statements.js.map +1 -0
- package/dist/atlas/public.d.ts +26 -0
- package/dist/atlas/public.d.ts.map +1 -0
- package/dist/atlas/public.js +21 -0
- package/dist/atlas/public.js.map +1 -0
- package/dist/atlas/regime.d.ts +171 -0
- package/dist/atlas/regime.d.ts.map +1 -0
- package/dist/atlas/regime.js +309 -0
- package/dist/atlas/regime.js.map +1 -0
- package/dist/atlas/serialize.d.ts +50 -0
- package/dist/atlas/serialize.d.ts.map +1 -0
- package/dist/atlas/serialize.js +180 -0
- package/dist/atlas/serialize.js.map +1 -0
- package/dist/atlas/statement.d.ts +165 -0
- package/dist/atlas/statement.d.ts.map +1 -0
- package/dist/atlas/statement.js +176 -0
- package/dist/atlas/statement.js.map +1 -0
- package/dist/atlas/types.d.ts +325 -0
- package/dist/atlas/types.d.ts.map +1 -0
- package/dist/atlas/types.js +61 -0
- package/dist/atlas/types.js.map +1 -0
- package/dist/atlas/waves/bridges-closure.d.ts +39 -0
- package/dist/atlas/waves/bridges-closure.d.ts.map +1 -0
- package/dist/atlas/waves/bridges-closure.js +226 -0
- package/dist/atlas/waves/bridges-closure.js.map +1 -0
- package/dist/atlas/waves/bridges.d.ts +49 -0
- package/dist/atlas/waves/bridges.d.ts.map +1 -0
- package/dist/atlas/waves/bridges.js +266 -0
- package/dist/atlas/waves/bridges.js.map +1 -0
- package/dist/atlas/waves/index.d.ts +16 -0
- package/dist/atlas/waves/index.d.ts.map +1 -0
- package/dist/atlas/waves/index.js +23 -0
- package/dist/atlas/waves/index.js.map +1 -0
- package/dist/atlas/waves/models.d.ts +29 -0
- package/dist/atlas/waves/models.d.ts.map +1 -0
- package/dist/atlas/waves/models.js +127 -0
- package/dist/atlas/waves/models.js.map +1 -0
- package/dist/atlas/waves/numerics.d.ts +149 -0
- package/dist/atlas/waves/numerics.d.ts.map +1 -0
- package/dist/atlas/waves/numerics.js +218 -0
- package/dist/atlas/waves/numerics.js.map +1 -0
- package/dist/atlas/witness-artifact.d.ts +65 -0
- package/dist/atlas/witness-artifact.d.ts.map +1 -0
- package/dist/atlas/witness-artifact.js +78 -0
- package/dist/atlas/witness-artifact.js.map +1 -0
- package/dist/atlas/witness-numeric.d.ts +81 -0
- package/dist/atlas/witness-numeric.d.ts.map +1 -0
- package/dist/atlas/witness-numeric.js +105 -0
- package/dist/atlas/witness-numeric.js.map +1 -0
- package/dist/atlas/witness-result.d.ts +77 -0
- package/dist/atlas/witness-result.d.ts.map +1 -0
- package/dist/atlas/witness-result.js +39 -0
- package/dist/atlas/witness-result.js.map +1 -0
- package/dist/atlas/witness-specs.d.ts +110 -0
- package/dist/atlas/witness-specs.d.ts.map +1 -0
- package/dist/atlas/witness-specs.js +372 -0
- package/dist/atlas/witness-specs.js.map +1 -0
- package/dist/atlas/witness-symbolic.d.ts +79 -0
- package/dist/atlas/witness-symbolic.d.ts.map +1 -0
- package/dist/atlas/witness-symbolic.js +140 -0
- package/dist/atlas/witness-symbolic.js.map +1 -0
- package/dist/atlas/witnesses/quantum-support.d.ts +50 -0
- package/dist/atlas/witnesses/quantum-support.d.ts.map +1 -0
- package/dist/atlas/witnesses/quantum-support.js +48 -0
- package/dist/atlas/witnesses/quantum-support.js.map +1 -0
- package/dist/bridges/be11-decoherence-confrontation.js.map +1 -1
- package/dist/bridges/be21-kss-confrontation.js.map +1 -1
- package/dist/bridges/be23-planckian-confrontation.js.map +1 -1
- package/dist/bridges/be35-bootstrap-confrontation.js.map +1 -1
- package/dist/bridges/be36-gw170817-confrontation.js.map +1 -1
- package/dist/bridges/be37-cassini-confrontation.js.map +1 -1
- package/dist/bridges/be48-collapse-confrontation.js.map +1 -1
- package/dist/bridges/be51-lensing-confrontation.d.ts.map +1 -1
- package/dist/bridges/be51-lensing-confrontation.js +5 -3
- package/dist/bridges/be51-lensing-confrontation.js.map +1 -1
- package/dist/bridges/be52-mercury-confrontation.d.ts.map +1 -1
- package/dist/bridges/be52-mercury-confrontation.js +4 -1
- package/dist/bridges/be52-mercury-confrontation.js.map +1 -1
- package/dist/bridges/be55-quantum-hall-confrontation.js.map +1 -1
- package/dist/bridges/be56-casimir-confrontation.js.map +1 -1
- package/dist/bridges/be58-johnson-nyquist-confrontation.js.map +1 -1
- package/dist/bridges/be59-ac-josephson-confrontation.js.map +1 -1
- package/dist/bridges/be60-fractional-qh-confrontation.js.map +1 -1
- package/dist/bridges/be61-wiedemann-franz-confrontation.js.map +1 -1
- package/dist/bridges/be62-bcs-gap-confrontation.js.map +1 -1
- package/dist/bridges/be63-chandrasekhar-mass-confrontation.js.map +1 -1
- package/dist/bridges/be64-eddington-luminosity-confrontation.js.map +1 -1
- package/dist/bridges/be65-jeans-mass-confrontation.js.map +1 -1
- package/dist/bridges/bridge-equations.d.ts +2 -2
- package/dist/bridges/bridge-equations.d.ts.map +1 -1
- package/dist/bridges/bridge-equations.js +2 -2
- package/dist/bridges/bridge-equations.js.map +1 -1
- package/dist/bridges/catalog-adapter.d.ts.map +1 -1
- package/dist/bridges/catalog-adapter.js.map +1 -1
- package/dist/bridges/confrontations.d.ts.map +1 -1
- package/dist/bridges/confrontations.js +7 -0
- package/dist/bridges/confrontations.js.map +1 -1
- package/dist/bridges/equations/_be-helpers.d.ts +2 -2
- package/dist/bridges/equations/_be-helpers.js +2 -2
- package/dist/bridges/equations/be-20-vacuum-energy.js.map +1 -1
- package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts +59 -72
- package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts.map +1 -1
- package/dist/bridges/equations/be-35-conformal-bootstrap.js +66 -98
- package/dist/bridges/equations/be-35-conformal-bootstrap.js.map +1 -1
- package/dist/bridges/equations/be-48-grw-localization.d.ts +9 -8
- package/dist/bridges/equations/be-48-grw-localization.d.ts.map +1 -1
- package/dist/bridges/equations/be-48-grw-localization.js +9 -8
- package/dist/bridges/equations/be-48-grw-localization.js.map +1 -1
- package/dist/bridges/gravitational-lensing.d.ts +10 -0
- package/dist/bridges/gravitational-lensing.d.ts.map +1 -1
- package/dist/bridges/gravitational-lensing.js.map +1 -1
- package/dist/bridges/index.d.ts +125 -7
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +483 -20
- package/dist/bridges/index.js.map +1 -1
- package/dist/bridges/observations/types.d.ts +14 -0
- package/dist/bridges/observations/types.d.ts.map +1 -1
- package/dist/bridges/observations/types.js.map +1 -1
- package/dist/bridges/perihelion-precession.d.ts +10 -0
- package/dist/bridges/perihelion-precession.d.ts.map +1 -1
- package/dist/bridges/perihelion-precession.js.map +1 -1
- package/dist/bridges/rhs-registry.js +2 -2
- package/dist/canonical/canonical-equation.d.ts +15 -0
- package/dist/canonical/canonical-equation.d.ts.map +1 -1
- package/dist/canonical/entries/_l1-build.d.ts +1 -1
- package/dist/canonical/entries/_l1-build.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.js +23 -0
- package/dist/canonical/entries/atomic.js.map +1 -1
- package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
- package/dist/canonical/entries/nonmonomial.js +93 -0
- package/dist/canonical/entries/nonmonomial.js.map +1 -1
- package/dist/canonical/normal-form.js.map +1 -1
- package/dist/canonical/residual.d.ts +28 -0
- package/dist/canonical/residual.d.ts.map +1 -0
- package/dist/canonical/residual.js +31 -0
- package/dist/canonical/residual.js.map +1 -0
- package/dist/cli/command.d.ts +8 -0
- package/dist/cli/command.d.ts.map +1 -1
- package/dist/cli/command.js +10 -0
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/commands/atlas.d.ts +3 -0
- package/dist/cli/commands/atlas.d.ts.map +1 -0
- package/dist/cli/commands/atlas.js +158 -0
- package/dist/cli/commands/atlas.js.map +1 -0
- package/dist/cli/commands/audit.js +3 -3
- package/dist/cli/commands/candidates.js +3 -3
- package/dist/cli/commands/canonical.js +3 -3
- package/dist/cli/commands/confront.d.ts.map +1 -1
- package/dist/cli/commands/confront.js +8 -1
- package/dist/cli/commands/confront.js.map +1 -1
- package/dist/cli/commands/connectors.js +7 -7
- package/dist/cli/commands/coverage.js +3 -3
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +40 -9
- package/dist/cli/commands/derive.js.map +1 -1
- package/dist/cli/commands/discover.d.ts.map +1 -1
- package/dist/cli/commands/discover.js +46 -27
- package/dist/cli/commands/discover.js.map +1 -1
- package/dist/cli/commands/evaluate.d.ts.map +1 -1
- package/dist/cli/commands/evaluate.js +2 -1
- package/dist/cli/commands/evaluate.js.map +1 -1
- package/dist/cli/commands/explain.d.ts.map +1 -1
- package/dist/cli/commands/explain.js +19 -6
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/index.d.ts +3 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +3 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/map.d.ts.map +1 -1
- package/dist/cli/commands/map.js +187 -36
- package/dist/cli/commands/map.js.map +1 -1
- package/dist/cli/commands/path.d.ts +3 -0
- package/dist/cli/commands/path.d.ts.map +1 -0
- package/dist/cli/commands/path.js +228 -0
- package/dist/cli/commands/path.js.map +1 -0
- package/dist/cli/commands/predict.js +4 -4
- package/dist/cli/commands/priority.js +2 -2
- package/dist/cli/commands/probe.d.ts.map +1 -1
- package/dist/cli/commands/probe.js +59 -2
- package/dist/cli/commands/probe.js.map +1 -1
- package/dist/cli/commands/recover.d.ts.map +1 -1
- package/dist/cli/commands/recover.js +25 -6
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/regime.d.ts +41 -0
- package/dist/cli/commands/regime.d.ts.map +1 -0
- package/dist/cli/commands/regime.js +243 -0
- package/dist/cli/commands/regime.js.map +1 -0
- package/dist/cli/commands/symbolic.js +5 -5
- package/dist/cli/errors.d.ts +13 -1
- package/dist/cli/errors.d.ts.map +1 -1
- package/dist/cli/errors.js +13 -1
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/graphs.d.ts.map +1 -1
- package/dist/cli/graphs.js +5 -1
- package/dist/cli/graphs.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +29 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/output.d.ts +6 -1
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +21 -1
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +23 -1
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/axis-audit.js.map +1 -1
- package/dist/composition/bridge-prediction.d.ts.map +1 -1
- package/dist/composition/bridge-prediction.js +0 -0
- package/dist/composition/bridge-prediction.js.map +1 -1
- package/dist/composition/canonical-compare.d.ts +65 -0
- package/dist/composition/canonical-compare.d.ts.map +1 -0
- package/dist/composition/canonical-compare.js +237 -0
- package/dist/composition/canonical-compare.js.map +1 -0
- package/dist/composition/canonical-graph.d.ts +2 -2
- package/dist/composition/canonical-graph.js +2 -2
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-prefactors.d.ts +32 -0
- package/dist/composition/canonical-prefactors.d.ts.map +1 -0
- package/dist/composition/canonical-prefactors.js +80 -0
- package/dist/composition/canonical-prefactors.js.map +1 -0
- package/dist/composition/compose-symbolic.d.ts.map +1 -1
- package/dist/composition/compose-symbolic.js.map +1 -1
- package/dist/composition/compose.d.ts.map +1 -1
- package/dist/composition/compose.js +80 -1
- package/dist/composition/compose.js.map +1 -1
- package/dist/composition/consequence.js.map +1 -1
- package/dist/composition/discovery.d.ts +20 -3
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +30 -4
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +64 -0
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +29 -0
- package/dist/composition/edge.js.map +1 -1
- package/dist/composition/edges/calibration.d.ts.map +1 -1
- package/dist/composition/edges/calibration.js +46 -0
- package/dist/composition/edges/calibration.js.map +1 -1
- package/dist/composition/edges/catalog-quantum.d.ts.map +1 -1
- package/dist/composition/edges/catalog-quantum.js +9 -0
- package/dist/composition/edges/catalog-quantum.js.map +1 -1
- package/dist/composition/edges/catalog-tranche.d.ts.map +1 -1
- package/dist/composition/edges/catalog-tranche.js +18 -0
- package/dist/composition/edges/catalog-tranche.js.map +1 -1
- package/dist/composition/enumerate.js.map +1 -1
- package/dist/composition/explain.d.ts +9 -1
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +34 -8
- package/dist/composition/explain.js.map +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.d.ts +13 -0
- package/dist/composition/expr-simplify.d.ts.map +1 -1
- package/dist/composition/expr-simplify.js +25 -0
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/expr-subst.js.map +1 -1
- package/dist/composition/graph-viz-svg.d.ts.map +1 -1
- package/dist/composition/graph-viz.d.ts +118 -1
- package/dist/composition/graph-viz.d.ts.map +1 -1
- package/dist/composition/graph-viz.js +189 -6
- package/dist/composition/graph-viz.js.map +1 -1
- package/dist/composition/grounding.d.ts.map +1 -1
- package/dist/composition/grounding.js +6 -1
- package/dist/composition/grounding.js.map +1 -1
- package/dist/composition/identifiability.js.map +1 -1
- package/dist/composition/index.d.ts +4 -2
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +2 -1
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/poster-source.d.ts +153 -0
- package/dist/composition/poster-source.d.ts.map +1 -0
- package/dist/composition/poster-source.js +183 -0
- package/dist/composition/poster-source.js.map +1 -0
- package/dist/composition/probe/backend-protocol.d.ts +34 -1
- package/dist/composition/probe/backend-protocol.d.ts.map +1 -1
- package/dist/composition/probe/backend-protocol.js +9 -2
- package/dist/composition/probe/backend-protocol.js.map +1 -1
- package/dist/composition/probe/candidate-store.d.ts.map +1 -1
- package/dist/composition/probe/corpus.d.ts +12 -0
- package/dist/composition/probe/corpus.d.ts.map +1 -1
- package/dist/composition/probe/corpus.js +100 -0
- package/dist/composition/probe/corpus.js.map +1 -1
- package/dist/composition/probe/generator.d.ts +14 -0
- package/dist/composition/probe/generator.d.ts.map +1 -1
- package/dist/composition/probe/generator.js +24 -2
- package/dist/composition/probe/generator.js.map +1 -1
- package/dist/composition/probe/limits.js.map +1 -1
- package/dist/composition/probe/pipeline.d.ts +5 -0
- package/dist/composition/probe/pipeline.d.ts.map +1 -1
- package/dist/composition/probe/pipeline.js +20 -3
- package/dist/composition/probe/pipeline.js.map +1 -1
- package/dist/composition/probe/problem.js.map +1 -1
- package/dist/composition/probe/report.d.ts.map +1 -1
- package/dist/composition/probe/report.js +2 -0
- package/dist/composition/probe/report.js.map +1 -1
- package/dist/composition/probe/residual.d.ts.map +1 -1
- package/dist/composition/probe/residual.js.map +1 -1
- package/dist/composition/probe/search-budget.js.map +1 -1
- package/dist/composition/proposed-bridges.d.ts +2 -2
- package/dist/composition/proposed-bridges.d.ts.map +1 -1
- package/dist/composition/proposed-bridges.js +1 -1
- package/dist/composition/proposed-bridges.js.map +1 -1
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/uncertainty.d.ts +52 -2
- package/dist/composition/uncertainty.d.ts.map +1 -1
- package/dist/composition/uncertainty.js +38 -2
- package/dist/composition/uncertainty.js.map +1 -1
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/core/constants.d.ts +13 -0
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +13 -0
- package/dist/core/constants.js.map +1 -1
- package/dist/core/flux-rules.d.ts.map +1 -1
- package/dist/core/flux-rules.js.map +1 -1
- package/dist/core/labeled-tensor.d.ts.map +1 -1
- package/dist/core/regime-registry.d.ts.map +1 -1
- package/dist/core/regime-rule-install.js.map +1 -1
- package/dist/core/tensor.d.ts.map +1 -1
- package/dist/core/tensor.js.map +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/diff/bridge-ast-gradient.js.map +1 -1
- package/dist/diff/bridge-gradient.d.ts +1 -1
- package/dist/diff/bridge-gradient.js +1 -1
- package/dist/dimensional/ast-types.d.ts +31 -1
- package/dist/dimensional/ast-types.d.ts.map +1 -1
- package/dist/dimensional/bridge-check.d.ts +1 -1
- package/dist/dimensional/bridge-check.js +1 -1
- package/dist/dimensional/buckingham.d.ts.map +1 -1
- package/dist/dimensional/connection.d.ts +2 -0
- package/dist/dimensional/connection.d.ts.map +1 -1
- package/dist/dimensional/connection.js +2 -0
- package/dist/dimensional/connection.js.map +1 -1
- package/dist/dimensional/curvature-composite.d.ts +5 -3
- package/dist/dimensional/curvature-composite.d.ts.map +1 -1
- package/dist/dimensional/curvature-composite.js +1 -0
- package/dist/dimensional/curvature-composite.js.map +1 -1
- package/dist/dimensional/curvature-invariants.d.ts +2 -0
- package/dist/dimensional/curvature-invariants.d.ts.map +1 -1
- package/dist/dimensional/curvature-invariants.js +2 -0
- package/dist/dimensional/curvature-invariants.js.map +1 -1
- package/dist/dimensional/dimension-spec.d.ts.map +1 -1
- package/dist/dimensional/einstein-equation.d.ts +3 -3
- package/dist/dimensional/einstein-equation.js +3 -3
- package/dist/dimensional/errors.d.ts.map +1 -1
- package/dist/dimensional/metric.d.ts +5 -2
- package/dist/dimensional/metric.d.ts.map +1 -1
- package/dist/dimensional/metric.js +5 -2
- package/dist/dimensional/metric.js.map +1 -1
- package/dist/dimensional/tensor-trace.js.map +1 -1
- package/dist/dimensional/validator-registry.js.map +1 -1
- package/dist/dimensional/validator.d.ts +3 -2
- package/dist/dimensional/validator.d.ts.map +1 -1
- package/dist/dimensional/validator.js +23 -4
- package/dist/dimensional/validator.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +104 -0
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
- package/dist/numerical/errors.d.ts.map +1 -1
- package/dist/numerical/errors.js.map +1 -1
- package/dist/numerical/float64-engine.d.ts.map +1 -1
- package/dist/numerical/float64-engine.js +51 -24
- package/dist/numerical/float64-engine.js.map +1 -1
- package/dist/numerical/formula-dimension.d.ts.map +1 -1
- package/dist/numerical/formula-dimension.js.map +1 -1
- package/dist/numerical/formula.d.ts.map +1 -1
- package/dist/numerical/formula.js.map +1 -1
- package/dist/numerical/geometrized.d.ts.map +1 -1
- package/dist/numerical/gl4-integrator.d.ts +3 -3
- package/dist/numerical/gl4-integrator.js +3 -3
- package/dist/numerical/killing.d.ts +47 -5
- package/dist/numerical/killing.d.ts.map +1 -1
- package/dist/numerical/killing.js +41 -3
- package/dist/numerical/killing.js.map +1 -1
- package/dist/numerical/klein-gordon.d.ts +2 -2
- package/dist/numerical/klein-gordon.js +2 -2
- package/dist/numerical/lowering.d.ts +2 -2
- package/dist/numerical/lowering.d.ts.map +1 -1
- package/dist/numerical/lowering.js +5 -3
- package/dist/numerical/lowering.js.map +1 -1
- package/dist/numerical/mathts-engine.d.ts.map +1 -1
- package/dist/numerical/mathts-engine.js.map +1 -1
- package/dist/numerical/metric-inverse.js.map +1 -1
- package/dist/numerical/perihelion-finder.d.ts +15 -13
- package/dist/numerical/perihelion-finder.d.ts.map +1 -1
- package/dist/numerical/perihelion-finder.js +15 -13
- package/dist/numerical/perihelion-finder.js.map +1 -1
- package/dist/numerical/weyl-lowering.d.ts.map +1 -1
- package/dist/numerical/weyl-lowering.js +90 -40
- package/dist/numerical/weyl-lowering.js.map +1 -1
- package/package.json +163 -104
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regime derivation — π-groups as the coordinates a regime is written in.
|
|
3
|
+
*
|
|
4
|
+
* Dimensionless inputs are passed INTO `buckinghamPi` as zero-dimension
|
|
5
|
+
* variables and come back as their own trivial groups, keyed by their own
|
|
6
|
+
* names in `PiGroup.formula`. Nothing is synthesized here. (Measured in
|
|
7
|
+
* design note §10 Q1 by executing `buckinghamPi`; the implementation plan's
|
|
8
|
+
* "plus one trivial group per dimensionless input" would double-add.)
|
|
9
|
+
*
|
|
10
|
+
* @module atlas/regime
|
|
11
|
+
*/
|
|
12
|
+
import { buckinghamPi } from '../dimensional/buckingham.js';
|
|
13
|
+
import { DIMENSIONLESS } from '../dimensional/types.js';
|
|
14
|
+
import { MissingDeltaAtError, MissingHorizonError } from './types.js';
|
|
15
|
+
/**
|
|
16
|
+
* Derive the regime coordinates of a family, keyed by `PiGroup.formula`.
|
|
17
|
+
*
|
|
18
|
+
* A dimensionally-independent set has no groups and yields an empty record.
|
|
19
|
+
*
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
export function deriveRegimeGroups(family, parameters, dimensionlessInputs) {
|
|
23
|
+
const variables = [
|
|
24
|
+
...parameters,
|
|
25
|
+
...dimensionlessInputs.map((name) => ({ name, dim: DIMENSIONLESS })),
|
|
26
|
+
];
|
|
27
|
+
if (variables.length === 0) {
|
|
28
|
+
throw new Error(`deriveRegimeGroups(${family}) requires at least one variable`);
|
|
29
|
+
}
|
|
30
|
+
// buckinghamPi rejects duplicate names itself; the message is clearer here.
|
|
31
|
+
const names = variables.map((v) => v.name);
|
|
32
|
+
if (new Set(names).size !== names.length) {
|
|
33
|
+
throw new Error(`deriveRegimeGroups(${family}) requires unique names across parameters and ` +
|
|
34
|
+
`dimensionless inputs; got [${names.join(', ')}]`);
|
|
35
|
+
}
|
|
36
|
+
const groups = {};
|
|
37
|
+
for (const group of buckinghamPi(variables).piGroups)
|
|
38
|
+
groups[group.formula] = group;
|
|
39
|
+
return groups;
|
|
40
|
+
}
|
|
41
|
+
function satisfies(value, ineq) {
|
|
42
|
+
switch (ineq.op) {
|
|
43
|
+
case '<':
|
|
44
|
+
return value < ineq.bound;
|
|
45
|
+
case '<=':
|
|
46
|
+
return value <= ineq.bound;
|
|
47
|
+
case '>':
|
|
48
|
+
return value > ineq.bound;
|
|
49
|
+
case '>=':
|
|
50
|
+
return value >= ineq.bound;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check a regime against measured group values.
|
|
55
|
+
*
|
|
56
|
+
* A group with no supplied value, or a non-finite one, is UNCHECKED — not
|
|
57
|
+
* violated and not satisfied. See {@link RegimeCheck} for why the distinction
|
|
58
|
+
* is load-bearing. A regime with no inequalities returns `true`: there was
|
|
59
|
+
* nothing to check and nothing went unchecked, so the claim "every inequality
|
|
60
|
+
* was checked and satisfied" is vacuously true rather than unknown.
|
|
61
|
+
*
|
|
62
|
+
* A violation outranks an absence: once one inequality is CHECKED and fails,
|
|
63
|
+
* the regime does not hold, whatever the unmeasured coordinates would say.
|
|
64
|
+
*
|
|
65
|
+
* @public
|
|
66
|
+
*/
|
|
67
|
+
export function regimeHolds(regime, groupValues) {
|
|
68
|
+
const violated = [];
|
|
69
|
+
const unchecked = [];
|
|
70
|
+
for (const ineq of regime.inequalities) {
|
|
71
|
+
const value = groupValues[ineq.group];
|
|
72
|
+
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
73
|
+
unchecked.push(ineq);
|
|
74
|
+
}
|
|
75
|
+
else if (!satisfies(value, ineq)) {
|
|
76
|
+
violated.push(ineq);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const ok = violated.length > 0 ? false : unchecked.length > 0 ? 'unknown' : true;
|
|
80
|
+
return { ok, violated, unchecked };
|
|
81
|
+
}
|
|
82
|
+
// ── Sprint 2: regime algebra and admission ──────────────────────────────────
|
|
83
|
+
/**
|
|
84
|
+
* Merge two regimes into the regime that holds where BOTH hold.
|
|
85
|
+
*
|
|
86
|
+
* The conjunction is the whole operation: an inequality from either side is an
|
|
87
|
+
* inequality of the intersection, so the list is concatenated rather than
|
|
88
|
+
* reduced. No attempt is made to simplify `x < 1` and `x < 2` into one
|
|
89
|
+
* inequality — the redundant one is still true, and a simplifier that dropped
|
|
90
|
+
* the wrong one would be a silent change of claim.
|
|
91
|
+
*
|
|
92
|
+
* `groupDefinitions` are merged and CHECKED, not overwritten. Two regimes that
|
|
93
|
+
* key the same `PiGroup.formula` to different exponent vectors are not
|
|
94
|
+
* traceable to one dimension matrix, and quietly keeping one would hand the
|
|
95
|
+
* caller a regime whose group definitions no longer describe its inequalities.
|
|
96
|
+
*
|
|
97
|
+
* @throws Error if the families differ, or if a shared group name carries
|
|
98
|
+
* conflicting definitions.
|
|
99
|
+
* @internal
|
|
100
|
+
*/
|
|
101
|
+
export function intersectRegimes(a, b) {
|
|
102
|
+
if (a.family !== b.family) {
|
|
103
|
+
throw new Error(`intersectRegimes: families differ ('${a.family}' vs '${b.family}'); ` +
|
|
104
|
+
'a regime is stated in the groups of its own family');
|
|
105
|
+
}
|
|
106
|
+
const groupDefinitions = { ...a.groupDefinitions };
|
|
107
|
+
for (const [name, group] of Object.entries(b.groupDefinitions)) {
|
|
108
|
+
const existing = groupDefinitions[name];
|
|
109
|
+
if (existing !== undefined && !samePiGroup(existing, group)) {
|
|
110
|
+
throw new Error(`intersectRegimes: group '${name}' is defined differently in the two regimes`);
|
|
111
|
+
}
|
|
112
|
+
groupDefinitions[name] = group;
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
family: a.family,
|
|
116
|
+
inequalities: [...a.inequalities, ...b.inequalities],
|
|
117
|
+
groupDefinitions,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
function samePiGroup(x, y) {
|
|
121
|
+
const names = new Set([...Object.keys(x.exponents), ...Object.keys(y.exponents)]);
|
|
122
|
+
for (const name of names) {
|
|
123
|
+
if ((x.exponents[name] ?? 0) !== (y.exponents[name] ?? 0))
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
function fullInterval() {
|
|
129
|
+
return { lo: -Infinity, loOpen: true, hi: Infinity, hiOpen: true };
|
|
130
|
+
}
|
|
131
|
+
/** Narrow `iv` in place by one inequality. */
|
|
132
|
+
function narrow(iv, ineq) {
|
|
133
|
+
switch (ineq.op) {
|
|
134
|
+
case '<':
|
|
135
|
+
case '<=': {
|
|
136
|
+
const open = ineq.op === '<';
|
|
137
|
+
if (ineq.bound < iv.hi || (ineq.bound === iv.hi && open)) {
|
|
138
|
+
iv.hi = ineq.bound;
|
|
139
|
+
iv.hiOpen = open;
|
|
140
|
+
}
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
case '>':
|
|
144
|
+
case '>=': {
|
|
145
|
+
const open = ineq.op === '>';
|
|
146
|
+
if (ineq.bound > iv.lo || (ineq.bound === iv.lo && open)) {
|
|
147
|
+
iv.lo = ineq.bound;
|
|
148
|
+
iv.loOpen = open;
|
|
149
|
+
}
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/** The per-group intervals the inequalities of a regime carve out. */
|
|
155
|
+
function intervalsOf(regime) {
|
|
156
|
+
const out = new Map();
|
|
157
|
+
for (const ineq of regime.inequalities) {
|
|
158
|
+
let iv = out.get(ineq.group);
|
|
159
|
+
if (iv === undefined) {
|
|
160
|
+
iv = fullInterval();
|
|
161
|
+
out.set(ineq.group, iv);
|
|
162
|
+
}
|
|
163
|
+
narrow(iv, ineq);
|
|
164
|
+
}
|
|
165
|
+
return out;
|
|
166
|
+
}
|
|
167
|
+
function isEmpty(iv) {
|
|
168
|
+
if (iv.lo > iv.hi)
|
|
169
|
+
return true;
|
|
170
|
+
return iv.lo === iv.hi && (iv.loOpen || iv.hiOpen);
|
|
171
|
+
}
|
|
172
|
+
function intersectIntervals(x, y) {
|
|
173
|
+
const lo = Math.max(x.lo, y.lo);
|
|
174
|
+
const hi = Math.min(x.hi, y.hi);
|
|
175
|
+
return {
|
|
176
|
+
lo,
|
|
177
|
+
loOpen: (x.lo === lo && x.loOpen) || (y.lo === lo && y.loOpen),
|
|
178
|
+
hi,
|
|
179
|
+
hiOpen: (x.hi === hi && x.hiOpen) || (y.hi === hi && y.hiOpen),
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
/** Is every point of `inner` a point of `outer`? */
|
|
183
|
+
function contains(outer, inner) {
|
|
184
|
+
if (isEmpty(inner))
|
|
185
|
+
return true;
|
|
186
|
+
const loOk = outer.lo < inner.lo || (outer.lo === inner.lo && (!outer.loOpen || inner.loOpen));
|
|
187
|
+
const hiOk = outer.hi > inner.hi || (outer.hi === inner.hi && (!outer.hiOpen || inner.hiOpen));
|
|
188
|
+
return loOk && hiOk;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Classify two regimes on the group names they SHARE.
|
|
192
|
+
*
|
|
193
|
+
* Shared names only, and that restriction is the whole subtlety. A group one
|
|
194
|
+
* regime constrains and the other says nothing about cannot separate them:
|
|
195
|
+
* silence is not a constraint, so treating the unconstrained side as empty
|
|
196
|
+
* would report `'disjoint'` for two regimes that genuinely overlap. The answer
|
|
197
|
+
* is therefore about the shared coordinates, and says nothing about the
|
|
198
|
+
* private ones.
|
|
199
|
+
*
|
|
200
|
+
* - `'disjoint'` — some shared group has intervals that cannot both hold.
|
|
201
|
+
* - `'nested'` — the shared box of one regime contains the other (equal boxes,
|
|
202
|
+
* and the no-shared-group case, are nested: each contains the other).
|
|
203
|
+
* - `'overlap'` — they meet, and neither contains the other.
|
|
204
|
+
*
|
|
205
|
+
* @internal
|
|
206
|
+
*/
|
|
207
|
+
export function regimeOverlap(a, b) {
|
|
208
|
+
const ia = intervalsOf(a);
|
|
209
|
+
const ib = intervalsOf(b);
|
|
210
|
+
const shared = [...ia.keys()].filter((name) => ib.has(name));
|
|
211
|
+
for (const name of shared) {
|
|
212
|
+
if (isEmpty(intersectIntervals(ia.get(name), ib.get(name))))
|
|
213
|
+
return 'disjoint';
|
|
214
|
+
}
|
|
215
|
+
const aInB = shared.every((name) => contains(ib.get(name), ia.get(name)));
|
|
216
|
+
const bInA = shared.every((name) => contains(ia.get(name), ib.get(name)));
|
|
217
|
+
return aInB || bInA ? 'nested' : 'overlap';
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Grid-sample a group box and list the cells no regime covers.
|
|
221
|
+
*
|
|
222
|
+
* `samples` IS the box: one explicit axis of values per π-group name. The box
|
|
223
|
+
* is not derived from the bounds the regimes themselves carry, and that is
|
|
224
|
+
* deliberate — a synthesized box would report coverage against an extent this
|
|
225
|
+
* library invented, so "uncovered" would measure the guess rather than the
|
|
226
|
+
* atlas. The caller states where it wants to know about.
|
|
227
|
+
*
|
|
228
|
+
* COVERED means some regime returned `true`. An `'unknown'` is NOT coverage,
|
|
229
|
+
* by the same rule that makes {@link regimeHolds} tri-state: a regime whose
|
|
230
|
+
* groups the sample axes never mention has not been shown to apply anywhere.
|
|
231
|
+
*
|
|
232
|
+
* Records of another family are skipped, so a mixed list is safe to pass.
|
|
233
|
+
*
|
|
234
|
+
* @internal
|
|
235
|
+
*/
|
|
236
|
+
export function uncoveredRegions(family, models, samples) {
|
|
237
|
+
const inFamily = models.filter((m) => m.regime.family === family);
|
|
238
|
+
const uncovered = [];
|
|
239
|
+
for (const point of gridPoints(samples)) {
|
|
240
|
+
const coveredBy = inFamily
|
|
241
|
+
.filter((m) => regimeHolds(m.regime, point).ok === true)
|
|
242
|
+
.map((m) => m.id);
|
|
243
|
+
if (coveredBy.length === 0)
|
|
244
|
+
uncovered.push({ point, coveredBy });
|
|
245
|
+
}
|
|
246
|
+
return uncovered;
|
|
247
|
+
}
|
|
248
|
+
/** Cartesian product of the named axes. An axis with no values yields nothing. */
|
|
249
|
+
function gridPoints(samples) {
|
|
250
|
+
let points = [{}];
|
|
251
|
+
for (const [group, axis] of Object.entries(samples)) {
|
|
252
|
+
const next = [];
|
|
253
|
+
for (const base of points) {
|
|
254
|
+
for (const value of axis)
|
|
255
|
+
next.push({ ...base, [group]: value });
|
|
256
|
+
}
|
|
257
|
+
points = next;
|
|
258
|
+
}
|
|
259
|
+
return points;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Admit a bridge, refusing an approximation whose horizon is missing.
|
|
263
|
+
*
|
|
264
|
+
* The gate is at ADMISSION, matching the existing throw in `makeApproximation`,
|
|
265
|
+
* and for the same reason: a validator that runs "later" can be skipped, and an
|
|
266
|
+
* unhorizoned bound that reached the atlas would be a bound claiming to hold
|
|
267
|
+
* everywhere. The move-the-gate-to-use argument of design note §2 applies to
|
|
268
|
+
* `uniformity` — a field whose absence is a legitimate NOT-YET-ANALYSED state
|
|
269
|
+
* — and NOT to `horizon`, which `ApproximationBound` already mandates.
|
|
270
|
+
*
|
|
271
|
+
* Any relation may carry a `bound`; every bound present is checked, so a
|
|
272
|
+
* `coarse-graining` cannot smuggle in an unhorizoned one.
|
|
273
|
+
*
|
|
274
|
+
* @returns the bridge, unchanged, so this can wrap a record at its definition.
|
|
275
|
+
* The same argument applies to `deltaAt`, the machine form of `delta`, and is
|
|
276
|
+
* why it is checked here beside the horizon. `delta` alone is a single number
|
|
277
|
+
* for a whole domain: an implementer whose bound depends on a parameter can
|
|
278
|
+
* only freeze it at one point, and a frozen point reads exactly like a
|
|
279
|
+
* supremum. Requiring the machine form makes the dependence SAYABLE, so the
|
|
280
|
+
* scalar can be held to its stated meaning. It is required only of an
|
|
281
|
+
* `approximation`, matching `bound` itself; a `coarse-graining` may still
|
|
282
|
+
* carry a constant bound with no `deltaAt`.
|
|
283
|
+
*
|
|
284
|
+
* @throws MissingHorizonError if an `approximation` has no bound, or if a
|
|
285
|
+
* present bound has an empty `horizon` or no `horizonHolds`.
|
|
286
|
+
* @throws MissingDeltaAtError if an `approximation` bound has no `deltaAt`.
|
|
287
|
+
* @internal
|
|
288
|
+
*/
|
|
289
|
+
export function admitApproximation(bridge) {
|
|
290
|
+
const { bound } = bridge;
|
|
291
|
+
if (bound === undefined) {
|
|
292
|
+
if (bridge.relation === 'approximation') {
|
|
293
|
+
throw new MissingHorizonError(`${bridge.id}: an approximation requires a bound carrying a horizon`);
|
|
294
|
+
}
|
|
295
|
+
return bridge;
|
|
296
|
+
}
|
|
297
|
+
if (bound.horizon.trim() === '') {
|
|
298
|
+
throw new MissingHorizonError(`${bridge.id}: an approximation bound requires a non-empty prose horizon`);
|
|
299
|
+
}
|
|
300
|
+
if (typeof bound.horizonHolds !== 'function') {
|
|
301
|
+
throw new MissingHorizonError(`${bridge.id}: an approximation bound requires a machine horizonHolds beside its prose horizon`);
|
|
302
|
+
}
|
|
303
|
+
if (bridge.relation === 'approximation' && typeof bound.deltaAt !== 'function') {
|
|
304
|
+
throw new MissingDeltaAtError(`${bridge.id}: an approximation bound requires a machine deltaAt beside its scalar delta, ` +
|
|
305
|
+
'which must be the supremum over the whole declared domain');
|
|
306
|
+
}
|
|
307
|
+
return bridge;
|
|
308
|
+
}
|
|
309
|
+
//# sourceMappingURL=regime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regime.js","sourceRoot":"","sources":["../../src/atlas/regime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON projection of an atlas family (Atlas Phase 0, S0.6).
|
|
3
|
+
*
|
|
4
|
+
* The in-memory record is not JSON. Two fields make that true, and both are
|
|
5
|
+
* handled here rather than left to `JSON.stringify`:
|
|
6
|
+
*
|
|
7
|
+
* 1. `AtlasBridge.evidence` is a `ReadonlySet<EvidenceTag>`, and a `Set`
|
|
8
|
+
* stringifies to `{}` — the artifact would be silently empty exactly where
|
|
9
|
+
* the evidence lives. Design note §7 requires the emitter to serialize it
|
|
10
|
+
* explicitly; it is emitted as a SORTED array so the artifact is stable
|
|
11
|
+
* under insertion-order changes.
|
|
12
|
+
* 2. `ApproximationBound.horizonHolds` is a function, which stringifies to
|
|
13
|
+
* nothing at all. Only the `horizon` PROSE crosses into JSON; the machine
|
|
14
|
+
* predicate stays in TypeScript, as `data/schemas/atlas-record.v0.json`
|
|
15
|
+
* states.
|
|
16
|
+
*
|
|
17
|
+
* Every record key order and every `Record<>` key order is fixed here, so two
|
|
18
|
+
* calls on the same family produce byte-identical output. That is what lets
|
|
19
|
+
* `tests/atlas/atlas-json.test.ts` pin the committed artifact against the live
|
|
20
|
+
* family the way `catalog-json.test.ts` pins the bridge catalog.
|
|
21
|
+
*
|
|
22
|
+
* @module atlas/serialize
|
|
23
|
+
*/
|
|
24
|
+
import type { AtlasFamily } from './oscillators/index.js';
|
|
25
|
+
/** Record major version of the emitted artifact. @internal */
|
|
26
|
+
export declare const ATLAS_RECORD_SCHEMA_VERSION = "0";
|
|
27
|
+
/** A JSON value, as emitted. @internal */
|
|
28
|
+
export type JsonValue = string | number | boolean | null | readonly JsonValue[] | {
|
|
29
|
+
readonly [k: string]: JsonValue;
|
|
30
|
+
};
|
|
31
|
+
/** The emitted artifact. @internal */
|
|
32
|
+
export interface AtlasRecordJson {
|
|
33
|
+
readonly $schema: string;
|
|
34
|
+
readonly schemaVersion: string;
|
|
35
|
+
readonly packageVersion: string;
|
|
36
|
+
readonly family: string;
|
|
37
|
+
readonly models: readonly JsonValue[];
|
|
38
|
+
readonly bridges: readonly JsonValue[];
|
|
39
|
+
readonly rejections: readonly JsonValue[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Project an atlas family into the shape of
|
|
43
|
+
* `data/schemas/atlas-record.v0.json`.
|
|
44
|
+
*
|
|
45
|
+
* Deterministic: equal inputs give byte-identical `JSON.stringify` output.
|
|
46
|
+
*
|
|
47
|
+
* @internal
|
|
48
|
+
*/
|
|
49
|
+
export declare function toAtlasJson(family: AtlasFamily, packageVersion: string): AtlasRecordJson;
|
|
50
|
+
//# sourceMappingURL=serialize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/atlas/serialize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAUH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,8DAA8D;AAC9D,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C,0CAA0C;AAC1C,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,SAAS,EAAE,GACpB;IAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAExC,sCAAsC;AACtC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;CAC3C;AAmJD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,WAAW,EACnB,cAAc,EAAE,MAAM,GACrB,eAAe,CAUjB"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON projection of an atlas family (Atlas Phase 0, S0.6).
|
|
3
|
+
*
|
|
4
|
+
* The in-memory record is not JSON. Two fields make that true, and both are
|
|
5
|
+
* handled here rather than left to `JSON.stringify`:
|
|
6
|
+
*
|
|
7
|
+
* 1. `AtlasBridge.evidence` is a `ReadonlySet<EvidenceTag>`, and a `Set`
|
|
8
|
+
* stringifies to `{}` — the artifact would be silently empty exactly where
|
|
9
|
+
* the evidence lives. Design note §7 requires the emitter to serialize it
|
|
10
|
+
* explicitly; it is emitted as a SORTED array so the artifact is stable
|
|
11
|
+
* under insertion-order changes.
|
|
12
|
+
* 2. `ApproximationBound.horizonHolds` is a function, which stringifies to
|
|
13
|
+
* nothing at all. Only the `horizon` PROSE crosses into JSON; the machine
|
|
14
|
+
* predicate stays in TypeScript, as `data/schemas/atlas-record.v0.json`
|
|
15
|
+
* states.
|
|
16
|
+
*
|
|
17
|
+
* Every record key order and every `Record<>` key order is fixed here, so two
|
|
18
|
+
* calls on the same family produce byte-identical output. That is what lets
|
|
19
|
+
* `tests/atlas/atlas-json.test.ts` pin the committed artifact against the live
|
|
20
|
+
* family the way `catalog-json.test.ts` pins the bridge catalog.
|
|
21
|
+
*
|
|
22
|
+
* @module atlas/serialize
|
|
23
|
+
*/
|
|
24
|
+
/** Record major version of the emitted artifact. @internal */
|
|
25
|
+
export const ATLAS_RECORD_SCHEMA_VERSION = '0';
|
|
26
|
+
/** Rebuild a record with its keys in sorted order, so emission is stable. */
|
|
27
|
+
const sortedRecord = (source) => {
|
|
28
|
+
const out = {};
|
|
29
|
+
for (const key of Object.keys(source).sort())
|
|
30
|
+
out[key] = source[key];
|
|
31
|
+
return out;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Normalize negative zero. `buckinghamPi` produces `-0` exponents (a `-1 * 0`
|
|
35
|
+
* in the null-space arithmetic), and `JSON.stringify(-0)` is `"0"` — so a
|
|
36
|
+
* record holding `-0` does NOT survive its own round-trip. Collapsing it here
|
|
37
|
+
* makes the projection genuinely JSON-faithful instead of nearly so.
|
|
38
|
+
*/
|
|
39
|
+
const zeroSafe = (n) => (n === 0 ? 0 : n);
|
|
40
|
+
const serializePiGroup = (group) => {
|
|
41
|
+
const exponents = {};
|
|
42
|
+
const sorted = sortedRecord(group.exponents);
|
|
43
|
+
for (const key of Object.keys(sorted))
|
|
44
|
+
exponents[key] = zeroSafe(sorted[key]);
|
|
45
|
+
return { exponents, formula: group.formula };
|
|
46
|
+
};
|
|
47
|
+
const serializeRegime = (regime) => {
|
|
48
|
+
const definitions = {};
|
|
49
|
+
for (const key of Object.keys(regime.groupDefinitions).sort()) {
|
|
50
|
+
definitions[key] = serializePiGroup(regime.groupDefinitions[key]);
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
family: regime.family,
|
|
54
|
+
inequalities: regime.inequalities.map((i) => ({
|
|
55
|
+
group: i.group,
|
|
56
|
+
op: i.op,
|
|
57
|
+
bound: zeroSafe(i.bound),
|
|
58
|
+
...(i.alias === undefined ? {} : { alias: i.alias }),
|
|
59
|
+
})),
|
|
60
|
+
groupDefinitions: definitions,
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* `horizonHolds` and `deltaAt` are deliberately absent: a predicate is not
|
|
65
|
+
* data, and a serialized function would be a claim no reader could check.
|
|
66
|
+
* `uniformity` IS data. `null` is the not-yet-analysed state and must be
|
|
67
|
+
* present in the artifact, not dropped.
|
|
68
|
+
*/
|
|
69
|
+
const serializeBound = (bound) => ({
|
|
70
|
+
K: zeroSafe(bound.K),
|
|
71
|
+
delta: zeroSafe(bound.delta),
|
|
72
|
+
norm: bound.norm,
|
|
73
|
+
domain: bound.domain,
|
|
74
|
+
horizon: bound.horizon,
|
|
75
|
+
...(bound.parameterRange === undefined ? {} : { parameterRange: bound.parameterRange }),
|
|
76
|
+
limitCharacter: bound.limitCharacter,
|
|
77
|
+
uniformity: bound.uniformity === null ? null : [...bound.uniformity],
|
|
78
|
+
});
|
|
79
|
+
/**
|
|
80
|
+
* Fields are enumerated EXPLICITLY, never spread: a new optional field stays
|
|
81
|
+
* invisible to the artifact until it is added here, so a model that records
|
|
82
|
+
* none of the Phase 3 additions serializes byte-identically to the committed
|
|
83
|
+
* `data/atlas/oscillators.json` that `tests/atlas/atlas-json.test.ts`
|
|
84
|
+
* deep-equals against.
|
|
85
|
+
*/
|
|
86
|
+
const serializeModel = (model) => ({
|
|
87
|
+
id: model.id,
|
|
88
|
+
family: model.family,
|
|
89
|
+
stateSpace: model.stateSpace,
|
|
90
|
+
dynamics: model.dynamics,
|
|
91
|
+
observables: [...model.observables],
|
|
92
|
+
parameters: model.parameters.map((p) => ({
|
|
93
|
+
name: p.name,
|
|
94
|
+
dim: { ...p.dim },
|
|
95
|
+
})),
|
|
96
|
+
dimensionlessInputs: [...model.dimensionlessInputs],
|
|
97
|
+
canonicalRefs: [...model.canonicalRefs],
|
|
98
|
+
regime: serializeRegime(model.regime),
|
|
99
|
+
...(model.boundaryData === undefined ? {} : { boundaryData: [...model.boundaryData] }),
|
|
100
|
+
...(model.initialData === undefined ? {} : { initialData: [...model.initialData] }),
|
|
101
|
+
...(model.symmetryGroup === undefined ? {} : { symmetryGroup: model.symmetryGroup }),
|
|
102
|
+
});
|
|
103
|
+
const serializeWitnesses = (witnesses) => witnesses.map((w) => ({
|
|
104
|
+
id: w.id,
|
|
105
|
+
kind: w.kind,
|
|
106
|
+
test: w.test,
|
|
107
|
+
...(w.tolerance === undefined ? {} : { tolerance: w.tolerance }),
|
|
108
|
+
}));
|
|
109
|
+
const serializeBridge = (bridge) => ({
|
|
110
|
+
id: bridge.id,
|
|
111
|
+
relation: bridge.relation,
|
|
112
|
+
premises: [...bridge.premises],
|
|
113
|
+
conclusion: bridge.conclusion,
|
|
114
|
+
transformation: bridge.transformation,
|
|
115
|
+
...(bridge.inverse === undefined ? {} : { inverse: bridge.inverse }),
|
|
116
|
+
preserves: [...bridge.preserves],
|
|
117
|
+
doesNotPreserve: [...bridge.doesNotPreserve],
|
|
118
|
+
sideConditions: [...bridge.sideConditions],
|
|
119
|
+
...(bridge.bound === undefined ? {} : { bound: serializeBound(bridge.bound) }),
|
|
120
|
+
regime: serializeRegime(bridge.regime),
|
|
121
|
+
counterexamples: bridge.counterexamples.map((c) => ({
|
|
122
|
+
description: c.description,
|
|
123
|
+
witness: c.witness,
|
|
124
|
+
})),
|
|
125
|
+
// The Set, explicitly — sorted, so the artifact does not churn on
|
|
126
|
+
// insertion order.
|
|
127
|
+
evidence: [...bridge.evidence].sort(),
|
|
128
|
+
witnesses: serializeWitnesses(bridge.witnesses),
|
|
129
|
+
citations: [...bridge.citations],
|
|
130
|
+
reviewStatus: bridge.reviewStatus,
|
|
131
|
+
// Omitted, never emptied, when absent (Phase 4 S4.6): an absent reference is
|
|
132
|
+
// the honest default, and `{}` would read as a reference with no content.
|
|
133
|
+
...(bridge.formalRef === undefined
|
|
134
|
+
? {}
|
|
135
|
+
: {
|
|
136
|
+
formalRef: {
|
|
137
|
+
system: bridge.formalRef.system,
|
|
138
|
+
statement: bridge.formalRef.statement,
|
|
139
|
+
version: bridge.formalRef.version,
|
|
140
|
+
axioms: [...bridge.formalRef.axioms],
|
|
141
|
+
fidelity: bridge.formalRef.fidelity,
|
|
142
|
+
},
|
|
143
|
+
}),
|
|
144
|
+
});
|
|
145
|
+
/**
|
|
146
|
+
* `claimed` is emitted as `claimedRelation`, and `reason` is ALSO emitted as
|
|
147
|
+
* `counterexample.description`, because the schema's rejection record names
|
|
148
|
+
* those two keys. The description is the refutation itself restated under the
|
|
149
|
+
* key the schema requires — no new claim is introduced.
|
|
150
|
+
*/
|
|
151
|
+
const serializeRejection = (rejection) => ({
|
|
152
|
+
id: rejection.id,
|
|
153
|
+
claimedRelation: rejection.claimed,
|
|
154
|
+
premises: [...rejection.premises],
|
|
155
|
+
conclusion: rejection.conclusion,
|
|
156
|
+
reason: rejection.reason,
|
|
157
|
+
survivingGroup: rejection.survivingGroup,
|
|
158
|
+
counterexample: { description: rejection.reason },
|
|
159
|
+
witnesses: serializeWitnesses(rejection.witnesses),
|
|
160
|
+
});
|
|
161
|
+
/**
|
|
162
|
+
* Project an atlas family into the shape of
|
|
163
|
+
* `data/schemas/atlas-record.v0.json`.
|
|
164
|
+
*
|
|
165
|
+
* Deterministic: equal inputs give byte-identical `JSON.stringify` output.
|
|
166
|
+
*
|
|
167
|
+
* @internal
|
|
168
|
+
*/
|
|
169
|
+
export function toAtlasJson(family, packageVersion) {
|
|
170
|
+
return {
|
|
171
|
+
$schema: '../schemas/atlas-record.v0.json',
|
|
172
|
+
schemaVersion: ATLAS_RECORD_SCHEMA_VERSION,
|
|
173
|
+
packageVersion,
|
|
174
|
+
family: family.family,
|
|
175
|
+
models: family.models.map(serializeModel),
|
|
176
|
+
bridges: family.bridges.map(serializeBridge),
|
|
177
|
+
rejections: family.rejections.map(serializeRejection),
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=serialize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/atlas/serialize.ts"],"names":[],"mappings":"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"}
|