universal-physics-tensor 0.47.0 → 1.0.1
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/LICENSE +21 -21
- package/README.md +396 -383
- package/bin/upt.mjs +28 -22
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts +108 -0
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -0
- package/dist/atlas/benchmark/hybrid-retrieval.js +241 -0
- package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -0
- package/dist/atlas/catalog-formal-ref.d.ts +24 -0
- package/dist/atlas/catalog-formal-ref.d.ts.map +1 -0
- package/dist/atlas/catalog-formal-ref.js +36 -0
- package/dist/atlas/catalog-formal-ref.js.map +1 -0
- package/dist/atlas/composition-table.d.ts +11 -46
- package/dist/atlas/composition-table.d.ts.map +1 -1
- package/dist/atlas/composition-table.js +7 -124
- package/dist/atlas/composition-table.js.map +1 -1
- package/dist/atlas/conventions.d.ts +4 -58
- package/dist/atlas/conventions.d.ts.map +1 -1
- package/dist/atlas/conventions.js +3 -88
- package/dist/atlas/conventions.js.map +1 -1
- package/dist/atlas/derive-evidence.d.ts +50 -3
- package/dist/atlas/derive-evidence.d.ts.map +1 -1
- package/dist/atlas/derive-evidence.js +73 -4
- package/dist/atlas/derive-evidence.js.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.js +5 -1
- package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
- package/dist/atlas/index.d.ts +9 -7
- package/dist/atlas/index.d.ts.map +1 -1
- package/dist/atlas/index.js +6 -5
- package/dist/atlas/index.js.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.js +6 -0
- package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.d.ts +2 -0
- package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.js +20 -19
- package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
- package/dist/atlas/oscillators/limit-witnesses.d.ts +93 -0
- package/dist/atlas/oscillators/limit-witnesses.d.ts.map +1 -0
- package/dist/atlas/oscillators/limit-witnesses.js +152 -0
- package/dist/atlas/oscillators/limit-witnesses.js.map +1 -0
- package/dist/atlas/oscillators/models.d.ts +2 -1
- package/dist/atlas/oscillators/models.d.ts.map +1 -1
- package/dist/atlas/oscillators/models.js +4 -3
- package/dist/atlas/oscillators/models.js.map +1 -1
- package/dist/atlas/oscillators/norm-transport-witness.d.ts +37 -0
- package/dist/atlas/oscillators/norm-transport-witness.d.ts.map +1 -0
- package/dist/atlas/oscillators/norm-transport-witness.js +58 -0
- package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -0
- package/dist/atlas/oscillators/norm-transport.d.ts +44 -0
- package/dist/atlas/oscillators/norm-transport.d.ts.map +1 -0
- package/dist/atlas/oscillators/norm-transport.js +66 -0
- package/dist/atlas/oscillators/norm-transport.js.map +1 -0
- package/dist/atlas/oscillators/norms.d.ts +11 -0
- package/dist/atlas/oscillators/norms.d.ts.map +1 -0
- package/dist/atlas/oscillators/norms.js +11 -0
- package/dist/atlas/oscillators/norms.js.map +1 -0
- package/dist/atlas/oscillators/pendulum-motion.d.ts +38 -0
- package/dist/atlas/oscillators/pendulum-motion.d.ts.map +1 -0
- package/dist/atlas/oscillators/pendulum-motion.js +122 -0
- package/dist/atlas/oscillators/pendulum-motion.js.map +1 -0
- package/dist/atlas/oscillators/phase-carriage.d.ts +38 -0
- package/dist/atlas/oscillators/phase-carriage.d.ts.map +1 -0
- package/dist/atlas/oscillators/phase-carriage.js +96 -0
- package/dist/atlas/oscillators/phase-carriage.js.map +1 -0
- package/dist/atlas/oscillators/phase-translation.d.ts +46 -0
- package/dist/atlas/oscillators/phase-translation.d.ts.map +1 -0
- package/dist/atlas/oscillators/phase-translation.js +178 -0
- package/dist/atlas/oscillators/phase-translation.js.map +1 -0
- package/dist/atlas/oscillators/position-translation.d.ts +59 -0
- package/dist/atlas/oscillators/position-translation.d.ts.map +1 -0
- package/dist/atlas/oscillators/position-translation.js +254 -0
- package/dist/atlas/oscillators/position-translation.js.map +1 -0
- package/dist/atlas/path-bound.d.ts +126 -9
- package/dist/atlas/path-bound.d.ts.map +1 -1
- package/dist/atlas/path-bound.js +372 -23
- package/dist/atlas/path-bound.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +112 -0
- package/dist/atlas/physjs-ref.d.ts.map +1 -0
- package/dist/atlas/physjs-ref.js +842 -0
- package/dist/atlas/physjs-ref.js.map +1 -0
- package/dist/atlas/regime.d.ts +12 -136
- package/dist/atlas/regime.d.ts.map +1 -1
- package/dist/atlas/regime.js +8 -254
- package/dist/atlas/regime.js.map +1 -1
- package/dist/atlas/serialize.d.ts.map +1 -1
- package/dist/atlas/serialize.js +25 -0
- package/dist/atlas/serialize.js.map +1 -1
- package/dist/atlas/translation-registry.d.ts +22 -0
- package/dist/atlas/translation-registry.d.ts.map +1 -0
- package/dist/atlas/translation-registry.js +31 -0
- package/dist/atlas/translation-registry.js.map +1 -0
- package/dist/atlas/translation.d.ts +116 -0
- package/dist/atlas/translation.d.ts.map +1 -0
- package/dist/atlas/translation.js +34 -0
- package/dist/atlas/translation.js.map +1 -0
- package/dist/atlas/types.d.ts +74 -240
- package/dist/atlas/types.d.ts.map +1 -1
- package/dist/atlas/types.js +5 -37
- package/dist/atlas/types.js.map +1 -1
- package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/waves/bridges-closure.js +4 -0
- package/dist/atlas/waves/bridges-closure.js.map +1 -1
- package/dist/atlas/waves/bridges.d.ts.map +1 -1
- package/dist/atlas/waves/bridges.js +3 -0
- package/dist/atlas/waves/bridges.js.map +1 -1
- package/dist/atlas/waves/models.js +1 -1
- package/dist/atlas/waves/models.js.map +1 -1
- package/dist/atlas/witness-dominance.d.ts +50 -0
- package/dist/atlas/witness-dominance.d.ts.map +1 -0
- package/dist/atlas/witness-dominance.js +86 -0
- package/dist/atlas/witness-dominance.js.map +1 -0
- package/dist/atlas/witness-specs.d.ts +30 -0
- package/dist/atlas/witness-specs.d.ts.map +1 -1
- package/dist/atlas/witness-specs.js +107 -0
- package/dist/atlas/witness-specs.js.map +1 -1
- package/dist/bridges/be53-yang-mills-confrontation.d.ts +81 -0
- package/dist/bridges/be53-yang-mills-confrontation.d.ts.map +1 -0
- package/dist/bridges/be53-yang-mills-confrontation.js +110 -0
- package/dist/bridges/be53-yang-mills-confrontation.js.map +1 -0
- package/dist/bridges/confrontations.d.ts +1 -1
- package/dist/bridges/confrontations.d.ts.map +1 -1
- package/dist/bridges/confrontations.js +291 -3
- package/dist/bridges/confrontations.js.map +1 -1
- package/dist/bridges/equations/be-13-einstein-trace.d.ts +2 -3
- package/dist/bridges/equations/be-13-einstein-trace.d.ts.map +1 -1
- package/dist/bridges/equations/be-13-einstein-trace.js +2 -3
- package/dist/bridges/equations/be-13-einstein-trace.js.map +1 -1
- package/dist/bridges/equations/be-38-mond.d.ts +7 -5
- package/dist/bridges/equations/be-38-mond.d.ts.map +1 -1
- package/dist/bridges/equations/be-38-mond.js +7 -5
- package/dist/bridges/equations/be-38-mond.js.map +1 -1
- package/dist/bridges/equations/be-53-yang-mills-beta.d.ts +21 -0
- package/dist/bridges/equations/be-53-yang-mills-beta.d.ts.map +1 -1
- package/dist/bridges/equations/be-53-yang-mills-beta.js +12 -0
- package/dist/bridges/equations/be-53-yang-mills-beta.js.map +1 -1
- package/dist/bridges/evaluator-inputs.d.ts +21 -0
- package/dist/bridges/evaluator-inputs.d.ts.map +1 -0
- package/dist/bridges/evaluator-inputs.js +75 -0
- package/dist/bridges/evaluator-inputs.js.map +1 -0
- package/dist/bridges/evaluators.d.ts +38 -0
- package/dist/bridges/evaluators.d.ts.map +1 -1
- package/dist/bridges/evaluators.js +41 -15
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/gravitational-lensing.d.ts +1 -1
- package/dist/bridges/gravitational-lensing.js +1 -1
- package/dist/bridges/index.d.ts +1 -1
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +13 -13
- package/dist/bridges/index.js.map +1 -1
- package/dist/bridges/observations/types.d.ts +110 -2
- package/dist/bridges/observations/types.d.ts.map +1 -1
- package/dist/bridges/observations/types.js +29 -0
- package/dist/bridges/observations/types.js.map +1 -1
- package/dist/bridges/perihelion-precession.d.ts +1 -1
- package/dist/bridges/perihelion-precession.js +1 -1
- package/dist/canonical/canonical-equation.d.ts +1 -1
- package/dist/canonical/canonical-equation.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.js +32 -10
- package/dist/canonical/entries/atomic.js.map +1 -1
- package/dist/canonical/entries/dimensional-classics.js +2 -2
- package/dist/canonical/entries/dimensional-classics.js.map +1 -1
- package/dist/canonical/entries/mechanics.d.ts.map +1 -1
- package/dist/canonical/entries/mechanics.js +10 -6
- package/dist/canonical/entries/mechanics.js.map +1 -1
- package/dist/canonical/entries/relativity.d.ts.map +1 -1
- package/dist/canonical/entries/relativity.js +41 -8
- package/dist/canonical/entries/relativity.js.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.js +5 -5
- package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
- package/dist/canonical/linkage.d.ts.map +1 -1
- package/dist/canonical/linkage.js +14 -8
- package/dist/canonical/linkage.js.map +1 -1
- package/dist/canonical/normal-form.d.ts +17 -0
- package/dist/canonical/normal-form.d.ts.map +1 -1
- package/dist/canonical/normal-form.js +21 -4
- package/dist/canonical/normal-form.js.map +1 -1
- package/dist/cases/brownian-sphere.d.ts +68 -0
- package/dist/cases/brownian-sphere.d.ts.map +1 -0
- package/dist/cases/brownian-sphere.js +353 -0
- package/dist/cases/brownian-sphere.js.map +1 -0
- package/dist/cases/damped-resonator.d.ts +23 -0
- package/dist/cases/damped-resonator.d.ts.map +1 -0
- package/dist/cases/damped-resonator.js +224 -0
- package/dist/cases/damped-resonator.js.map +1 -0
- package/dist/cases/index.d.ts +11 -0
- package/dist/cases/index.d.ts.map +1 -0
- package/dist/cases/index.js +29 -0
- package/dist/cases/index.js.map +1 -0
- package/dist/cases/kepler-rv.d.ts +13 -0
- package/dist/cases/kepler-rv.d.ts.map +1 -0
- package/dist/cases/kepler-rv.js +168 -0
- package/dist/cases/kepler-rv.js.map +1 -0
- package/dist/cases/lumped-cooling.d.ts +46 -0
- package/dist/cases/lumped-cooling.d.ts.map +1 -0
- package/dist/cases/lumped-cooling.js +261 -0
- package/dist/cases/lumped-cooling.js.map +1 -0
- package/dist/cases/quadrature.d.ts +14 -0
- package/dist/cases/quadrature.d.ts.map +1 -0
- package/dist/cases/quadrature.js +41 -0
- package/dist/cases/quadrature.js.map +1 -0
- package/dist/cases/resistor-noise.d.ts +14 -0
- package/dist/cases/resistor-noise.d.ts.map +1 -0
- package/dist/cases/resistor-noise.js +210 -0
- package/dist/cases/resistor-noise.js.map +1 -0
- package/dist/cases/skin-depth.d.ts +21 -0
- package/dist/cases/skin-depth.d.ts.map +1 -0
- package/dist/cases/skin-depth.js +174 -0
- package/dist/cases/skin-depth.js.map +1 -0
- package/dist/cases/types.d.ts +115 -0
- package/dist/cases/types.d.ts.map +1 -0
- package/dist/cases/types.js +20 -0
- package/dist/cases/types.js.map +1 -0
- package/dist/cli/commands/_atlas-map.d.ts +409 -0
- package/dist/cli/commands/_atlas-map.d.ts.map +1 -0
- package/dist/cli/commands/_atlas-map.js +1014 -0
- package/dist/cli/commands/_atlas-map.js.map +1 -0
- package/dist/cli/commands/_atlas-route.d.ts +111 -0
- package/dist/cli/commands/_atlas-route.d.ts.map +1 -0
- package/dist/cli/commands/_atlas-route.js +140 -0
- package/dist/cli/commands/_atlas-route.js.map +1 -0
- package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
- package/dist/cli/commands/_discovery-opts.js +10 -1
- package/dist/cli/commands/_discovery-opts.js.map +1 -1
- package/dist/cli/commands/atlas.d.ts +20 -0
- package/dist/cli/commands/atlas.d.ts.map +1 -1
- package/dist/cli/commands/atlas.js +333 -19
- package/dist/cli/commands/atlas.js.map +1 -1
- package/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/audit.js +14 -5
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/axes.js +4 -4
- package/dist/cli/commands/candidates.d.ts.map +1 -1
- package/dist/cli/commands/candidates.js +6 -5
- package/dist/cli/commands/candidates.js.map +1 -1
- package/dist/cli/commands/canonical.d.ts.map +1 -1
- package/dist/cli/commands/canonical.js +41 -12
- package/dist/cli/commands/canonical.js.map +1 -1
- package/dist/cli/commands/confront.d.ts.map +1 -1
- package/dist/cli/commands/confront.js +210 -28
- package/dist/cli/commands/confront.js.map +1 -1
- package/dist/cli/commands/connectors.d.ts.map +1 -1
- package/dist/cli/commands/connectors.js +11 -10
- package/dist/cli/commands/connectors.js.map +1 -1
- package/dist/cli/commands/coverage.js +3 -3
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +22 -10
- 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 +149 -32
- package/dist/cli/commands/discover.js.map +1 -1
- package/dist/cli/commands/eval.d.ts.map +1 -1
- package/dist/cli/commands/eval.js +76 -17
- package/dist/cli/commands/eval.js.map +1 -1
- package/dist/cli/commands/evaluate.d.ts +30 -0
- package/dist/cli/commands/evaluate.d.ts.map +1 -1
- package/dist/cli/commands/evaluate.js +440 -25
- 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 +38 -11
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/frontier.d.ts +3 -0
- package/dist/cli/commands/frontier.d.ts.map +1 -0
- package/dist/cli/commands/frontier.js +28 -0
- package/dist/cli/commands/frontier.js.map +1 -0
- package/dist/cli/commands/ground.d.ts.map +1 -1
- package/dist/cli/commands/ground.js +37 -12
- package/dist/cli/commands/ground.js.map +1 -1
- package/dist/cli/commands/index.d.ts +5 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +5 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/map.d.ts +8 -0
- package/dist/cli/commands/map.d.ts.map +1 -1
- package/dist/cli/commands/map.js +401 -64
- package/dist/cli/commands/map.js.map +1 -1
- package/dist/cli/commands/metric.d.ts +3 -0
- package/dist/cli/commands/metric.d.ts.map +1 -0
- package/dist/cli/commands/metric.js +136 -0
- package/dist/cli/commands/metric.js.map +1 -0
- package/dist/cli/commands/path.d.ts +109 -1
- package/dist/cli/commands/path.d.ts.map +1 -1
- package/dist/cli/commands/path.js +1019 -109
- package/dist/cli/commands/path.js.map +1 -1
- package/dist/cli/commands/predict.d.ts.map +1 -1
- package/dist/cli/commands/predict.js +6 -5
- package/dist/cli/commands/predict.js.map +1 -1
- package/dist/cli/commands/priority.d.ts.map +1 -1
- package/dist/cli/commands/priority.js +4 -3
- package/dist/cli/commands/priority.js.map +1 -1
- package/dist/cli/commands/probe.d.ts +7 -0
- package/dist/cli/commands/probe.d.ts.map +1 -1
- package/dist/cli/commands/probe.js +234 -52
- 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 +17 -6
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/regime.d.ts +1 -1
- package/dist/cli/commands/regime.d.ts.map +1 -1
- package/dist/cli/commands/regime.js +134 -33
- package/dist/cli/commands/regime.js.map +1 -1
- package/dist/cli/commands/retrieve.d.ts +3 -0
- package/dist/cli/commands/retrieve.d.ts.map +1 -0
- package/dist/cli/commands/retrieve.js +65 -0
- package/dist/cli/commands/retrieve.js.map +1 -0
- package/dist/cli/commands/search.d.ts +3 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +70 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/symbolic.d.ts.map +1 -1
- package/dist/cli/commands/symbolic.js +112 -21
- package/dist/cli/commands/symbolic.js.map +1 -1
- package/dist/cli/commands/testplan.d.ts +3 -0
- package/dist/cli/commands/testplan.d.ts.map +1 -0
- package/dist/cli/commands/testplan.js +131 -0
- package/dist/cli/commands/testplan.js.map +1 -0
- package/dist/cli/conventions.d.ts +22 -0
- package/dist/cli/conventions.d.ts.map +1 -0
- package/dist/cli/conventions.js +48 -0
- package/dist/cli/conventions.js.map +1 -0
- package/dist/cli/euler-guard.d.ts +9 -0
- package/dist/cli/euler-guard.d.ts.map +1 -0
- package/dist/cli/euler-guard.js +11 -0
- package/dist/cli/euler-guard.js.map +1 -0
- package/dist/cli/eval-numbers.d.ts +26 -0
- package/dist/cli/eval-numbers.d.ts.map +1 -0
- package/dist/cli/eval-numbers.js +49 -0
- package/dist/cli/eval-numbers.js.map +1 -0
- package/dist/cli/expr-print.d.ts +25 -0
- package/dist/cli/expr-print.d.ts.map +1 -0
- package/dist/cli/expr-print.js +123 -0
- package/dist/cli/expr-print.js.map +1 -0
- package/dist/cli/graphs.d.ts +26 -0
- package/dist/cli/graphs.d.ts.map +1 -1
- package/dist/cli/graphs.js +19 -0
- package/dist/cli/graphs.js.map +1 -1
- package/dist/cli/main.d.ts +4 -10
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +370 -167
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/map-evidence.d.ts +47 -0
- package/dist/cli/map-evidence.d.ts.map +1 -0
- package/dist/cli/map-evidence.js +53 -0
- package/dist/cli/map-evidence.js.map +1 -0
- package/dist/cli/output.d.ts +21 -1
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +5 -1
- package/dist/cli/output.js.map +1 -1
- package/dist/{composition → cli}/poster-source.d.ts +3 -2
- package/dist/cli/poster-source.d.ts.map +1 -0
- package/dist/{composition → cli}/poster-source.js +2 -1
- package/dist/cli/poster-source.js.map +1 -0
- package/dist/cli/record-reach.d.ts +44 -0
- package/dist/cli/record-reach.d.ts.map +1 -0
- package/dist/cli/record-reach.js +228 -0
- package/dist/cli/record-reach.js.map +1 -0
- package/dist/cli/record-tables.d.ts +38 -0
- package/dist/cli/record-tables.d.ts.map +1 -0
- package/dist/cli/record-tables.js +110 -0
- package/dist/cli/record-tables.js.map +1 -0
- package/dist/cli/record.d.ts +141 -0
- package/dist/cli/record.d.ts.map +1 -0
- package/dist/cli/record.js +612 -0
- package/dist/cli/record.js.map +1 -0
- package/dist/cli/search-index.d.ts +56 -0
- package/dist/cli/search-index.d.ts.map +1 -0
- package/dist/cli/search-index.js +190 -0
- package/dist/cli/search-index.js.map +1 -0
- package/dist/cli/statuses.d.ts +25 -0
- package/dist/cli/statuses.d.ts.map +1 -0
- package/dist/cli/statuses.js +276 -0
- package/dist/cli/statuses.js.map +1 -0
- package/dist/cli/version.d.ts +8 -0
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +32 -1
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +33 -15
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +31 -11
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +2 -1
- package/dist/composition/bridge-analysis.js.map +1 -1
- package/dist/composition/canonical-compare.d.ts +36 -11
- package/dist/composition/canonical-compare.d.ts.map +1 -1
- package/dist/composition/canonical-compare.js +424 -56
- package/dist/composition/canonical-compare.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +2 -2
- package/dist/composition/canonical-graph.js +3 -3
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-prefactors.d.ts +24 -1
- package/dist/composition/canonical-prefactors.d.ts.map +1 -1
- package/dist/composition/canonical-prefactors.js +97 -1
- package/dist/composition/canonical-prefactors.js.map +1 -1
- package/dist/composition/compose-symbolic.js +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 +17 -9
- package/dist/composition/compose.js.map +1 -1
- package/dist/composition/composition-recovery.d.ts +47 -0
- package/dist/composition/composition-recovery.d.ts.map +1 -0
- package/dist/composition/composition-recovery.js +77 -0
- package/dist/composition/composition-recovery.js.map +1 -0
- package/dist/composition/consequence.d.ts +39 -0
- package/dist/composition/consequence.d.ts.map +1 -1
- package/dist/composition/consequence.js +37 -0
- package/dist/composition/consequence.js.map +1 -1
- package/dist/composition/discovery.d.ts +20 -0
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +27 -5
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +1 -1
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js.map +1 -1
- package/dist/composition/edges/_catalog-helpers.d.ts +4 -0
- package/dist/composition/edges/_catalog-helpers.d.ts.map +1 -1
- package/dist/composition/edges/_catalog-helpers.js +15 -0
- package/dist/composition/edges/_catalog-helpers.js.map +1 -1
- package/dist/composition/edges/calibration.d.ts.map +1 -1
- package/dist/composition/edges/calibration.js +57 -0
- package/dist/composition/edges/calibration.js.map +1 -1
- package/dist/composition/edges/catalog-fields.d.ts.map +1 -1
- package/dist/composition/edges/catalog-fields.js +2 -1
- package/dist/composition/edges/catalog-fields.js.map +1 -1
- package/dist/composition/edges/catalog-gravitation-cosmology.d.ts.map +1 -1
- package/dist/composition/edges/catalog-gravitation-cosmology.js +2 -1
- package/dist/composition/edges/catalog-gravitation-cosmology.js.map +1 -1
- package/dist/composition/edges/catalog-quantum.d.ts.map +1 -1
- package/dist/composition/edges/catalog-quantum.js +26 -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 +2 -1
- package/dist/composition/edges/catalog-tranche.js.map +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js +4 -1
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.js +1 -1
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/frontier-account.d.ts +78 -0
- package/dist/composition/frontier-account.d.ts.map +1 -0
- package/dist/composition/frontier-account.js +127 -0
- package/dist/composition/frontier-account.js.map +1 -0
- package/dist/composition/graph-viz.d.ts +7 -22
- package/dist/composition/graph-viz.d.ts.map +1 -1
- package/dist/composition/graph-viz.js +4 -27
- package/dist/composition/graph-viz.js.map +1 -1
- package/dist/composition/grounding.d.ts +49 -0
- package/dist/composition/grounding.d.ts.map +1 -1
- package/dist/composition/grounding.js +38 -0
- package/dist/composition/grounding.js.map +1 -1
- package/dist/composition/index.d.ts +0 -2
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +1 -1
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/probe/expression-gaps.d.ts +27 -0
- package/dist/composition/probe/expression-gaps.d.ts.map +1 -0
- package/dist/composition/probe/expression-gaps.js +47 -0
- package/dist/composition/probe/expression-gaps.js.map +1 -0
- package/dist/composition/probe/frontier.d.ts +2 -1
- package/dist/composition/probe/frontier.d.ts.map +1 -1
- package/dist/composition/probe/frontier.js +3 -2
- package/dist/composition/probe/frontier.js.map +1 -1
- package/dist/composition/probe/index.d.ts +4 -1
- package/dist/composition/probe/index.d.ts.map +1 -1
- package/dist/composition/probe/index.js +3 -1
- package/dist/composition/probe/index.js.map +1 -1
- package/dist/composition/probe/pipeline.d.ts +2 -0
- package/dist/composition/probe/pipeline.d.ts.map +1 -1
- package/dist/composition/probe/pipeline.js +6 -2
- package/dist/composition/probe/pipeline.js.map +1 -1
- package/dist/composition/probe/problem.d.ts +7 -0
- package/dist/composition/probe/problem.d.ts.map +1 -1
- package/dist/composition/probe/problem.js +15 -5
- package/dist/composition/probe/problem.js.map +1 -1
- package/dist/composition/probe/search-budget.d.ts.map +1 -1
- package/dist/composition/probe/search-budget.js +6 -2
- package/dist/composition/probe/search-budget.js.map +1 -1
- package/dist/composition/probe/study.d.ts +340 -0
- package/dist/composition/probe/study.d.ts.map +1 -0
- package/dist/composition/probe/study.js +1519 -0
- package/dist/composition/probe/study.js.map +1 -0
- package/dist/composition/proposed-bridges.js +1 -1
- package/dist/composition/proposed-bridges.js.map +1 -1
- package/dist/composition/quantities.d.ts +4 -16
- package/dist/composition/quantities.d.ts.map +1 -1
- package/dist/composition/quantities.js +4 -16
- package/dist/composition/quantities.js.map +1 -1
- package/dist/composition/retrodiction.d.ts.map +1 -1
- package/dist/composition/retrodiction.js +6 -2
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/uncertainty.d.ts +1 -1
- package/dist/composition/uncertainty.d.ts.map +1 -1
- package/dist/composition/user-equation.d.ts +87 -14
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/composition/user-equation.js +266 -59
- package/dist/composition/user-equation.js.map +1 -1
- package/dist/core/constants.d.ts +9 -4
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +9 -4
- package/dist/core/constants.js.map +1 -1
- package/dist/core/types.d.ts +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +2 -1
- package/dist/core/types.js.map +1 -1
- package/dist/dimensional/curvature.d.ts +7 -56
- package/dist/dimensional/curvature.d.ts.map +1 -1
- package/dist/dimensional/curvature.js +7 -76
- package/dist/dimensional/curvature.js.map +1 -1
- package/dist/dimensional/dimension-spec.d.ts +7 -1
- package/dist/dimensional/dimension-spec.d.ts.map +1 -1
- package/dist/dimensional/dimension-spec.js +131 -3
- package/dist/dimensional/dimension-spec.js.map +1 -1
- package/dist/dimensional/formula-names.d.ts +30 -0
- package/dist/dimensional/formula-names.d.ts.map +1 -0
- package/dist/dimensional/formula-names.js +37 -0
- package/dist/dimensional/formula-names.js.map +1 -0
- package/dist/dimensional/natural-units.d.ts +33 -0
- package/dist/dimensional/natural-units.d.ts.map +1 -0
- package/dist/dimensional/natural-units.js +58 -0
- package/dist/dimensional/natural-units.js.map +1 -0
- package/dist/{composition → dimensional}/symbolic-constants.d.ts +21 -2
- package/dist/dimensional/symbolic-constants.d.ts.map +1 -0
- package/dist/dimensional/symbolic-constants.js +116 -0
- package/dist/dimensional/symbolic-constants.js.map +1 -0
- package/dist/dimensional/unit-convention.d.ts +30 -0
- package/dist/dimensional/unit-convention.d.ts.map +1 -0
- package/dist/dimensional/unit-convention.js +60 -0
- package/dist/dimensional/unit-convention.js.map +1 -0
- package/dist/dimensional/units.d.ts +43 -0
- package/dist/dimensional/units.d.ts.map +1 -0
- package/dist/dimensional/units.js +197 -0
- package/dist/dimensional/units.js.map +1 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/numerical/bianchi-residual.d.ts +55 -0
- package/dist/numerical/bianchi-residual.d.ts.map +1 -0
- package/dist/numerical/bianchi-residual.js +79 -0
- package/dist/numerical/bianchi-residual.js.map +1 -0
- package/dist/numerical/binding-value.d.ts +67 -0
- package/dist/numerical/binding-value.d.ts.map +1 -0
- package/dist/numerical/binding-value.js +347 -0
- package/dist/numerical/binding-value.js.map +1 -0
- package/dist/numerical/connection-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/connection-lowering-helpers.js +13 -26
- package/dist/numerical/connection-lowering-helpers.js.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +9 -0
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
- package/dist/numerical/float64-engine.d.ts.map +1 -1
- package/dist/numerical/float64-engine.js +23 -16
- package/dist/numerical/float64-engine.js.map +1 -1
- package/dist/numerical/formula-dimension.d.ts +7 -0
- package/dist/numerical/formula-dimension.d.ts.map +1 -1
- package/dist/numerical/formula-dimension.js +23 -6
- package/dist/numerical/formula-dimension.js.map +1 -1
- package/dist/numerical/formula-mathts.d.ts.map +1 -1
- package/dist/numerical/formula-mathts.js +68 -6
- package/dist/numerical/formula-mathts.js.map +1 -1
- package/dist/numerical/formula.d.ts +27 -0
- package/dist/numerical/formula.d.ts.map +1 -1
- package/dist/numerical/formula.js +68 -6
- package/dist/numerical/formula.js.map +1 -1
- package/dist/numerical/spacetime-metrics.d.ts +243 -0
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -0
- package/dist/numerical/spacetime-metrics.js +1056 -0
- package/dist/numerical/spacetime-metrics.js.map +1 -0
- package/dist/relations/composition-table.d.ts +61 -0
- package/dist/relations/composition-table.d.ts.map +1 -0
- package/dist/relations/composition-table.js +140 -0
- package/dist/relations/composition-table.js.map +1 -0
- package/dist/relations/conventions.d.ts +63 -0
- package/dist/relations/conventions.d.ts.map +1 -0
- package/dist/relations/conventions.js +93 -0
- package/dist/relations/conventions.js.map +1 -0
- package/dist/relations/regime.d.ts +159 -0
- package/dist/relations/regime.d.ts.map +1 -0
- package/dist/relations/regime.js +304 -0
- package/dist/relations/regime.js.map +1 -0
- package/dist/relations/types.d.ts +259 -0
- package/dist/relations/types.d.ts.map +1 -0
- package/dist/relations/types.js +37 -0
- package/dist/relations/types.js.map +1 -0
- package/package.json +166 -163
- package/dist/composition/poster-source.d.ts.map +0 -1
- package/dist/composition/poster-source.js.map +0 -1
- package/dist/composition/symbolic-constants.d.ts.map +0 -1
- package/dist/composition/symbolic-constants.js +0 -65
- package/dist/composition/symbolic-constants.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbolic.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/symbolic.ts"],"names":[],"mappings":"AAOA,OAAO,EAAmB,KAAK,OAAO,EAAmB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"symbolic.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/symbolic.ts"],"names":[],"mappings":"AAOA,OAAO,EAAmB,KAAK,OAAO,EAAmB,MAAM,eAAe,CAAC;AA0N/E,eAAO,MAAM,OAAO,EAAE,OAMrB,CAAC"}
|
|
@@ -1,32 +1,109 @@
|
|
|
1
1
|
import { registerCommand } from '../command.js';
|
|
2
2
|
import { emitJson } from '../output.js';
|
|
3
|
+
import { EVAL_STUBS, printDisplay, printEval, printLatex, latexName, siUnitOf } from '../expr-print.js';
|
|
3
4
|
const FLAGS = [
|
|
4
5
|
{ name: '--simplify', valueStyle: 'none' },
|
|
5
6
|
{ name: '--json', valueStyle: 'none' },
|
|
6
7
|
];
|
|
7
|
-
const HELP = `upt symbolic [--simplify]
|
|
8
|
-
Compose bridges' SYMBOLIC (AST) forms, not just their numeric
|
|
9
|
-
evaluators (the Observable contract). Shows the CT-1 / CT-1b chains
|
|
10
|
-
composed by substitution, dimensionally validated and evaluable.
|
|
11
|
-
With --simplify, folds the composed AST via MathTS (k_B cancels),
|
|
12
|
-
re-validated dimensionally + numerically
|
|
8
|
+
const HELP = `upt symbolic [--simplify]
|
|
9
|
+
Compose bridges' SYMBOLIC (AST) forms, not just their numeric
|
|
10
|
+
evaluators (the Observable contract). Shows the CT-1 / CT-1b chains
|
|
11
|
+
composed by substitution, dimensionally validated and evaluable.
|
|
12
|
+
With --simplify, folds the composed AST via MathTS (k_B cancels),
|
|
13
|
+
re-validated dimensionally + numerically. Each chain also prints an
|
|
14
|
+
'eval form': a runnable \`upt eval\` command, fully grouped, that
|
|
15
|
+
reproduces the printed value, a LaTeX form (\\frac for every
|
|
16
|
+
division) and a symbol table: each symbol's meaning, value, SI unit
|
|
17
|
+
and the source of a constant or the point an input is evaluated at.`;
|
|
13
18
|
function exprToString(n) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
return printDisplay(n) ?? `⟨${n.kind}⟩`;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The composed formula as a runnable `upt eval` input, with every constant
|
|
23
|
+
* and leaf bound, so copying it reproduces the printed value. `null` when the
|
|
24
|
+
* AST holds a node the scalar evaluator cannot take.
|
|
25
|
+
*/
|
|
26
|
+
function evalFormOf(n, constants, point) {
|
|
27
|
+
const formula = printEval(n);
|
|
28
|
+
if (formula === null)
|
|
29
|
+
return null;
|
|
30
|
+
const names = [];
|
|
31
|
+
const collect = (e) => {
|
|
32
|
+
if (e.kind === 'symbol') {
|
|
33
|
+
if (!names.includes(e.name))
|
|
34
|
+
names.push(e.name);
|
|
35
|
+
}
|
|
36
|
+
else if (e.kind === 'op')
|
|
37
|
+
e.args.forEach(collect);
|
|
38
|
+
};
|
|
39
|
+
collect(n);
|
|
40
|
+
const bindings = [];
|
|
41
|
+
for (const name of names) {
|
|
42
|
+
if (name in EVAL_STUBS || Number.isFinite(Number(name)))
|
|
43
|
+
continue;
|
|
44
|
+
const value = constants[name]?.value ?? point[name];
|
|
45
|
+
if (value === undefined)
|
|
46
|
+
return null;
|
|
47
|
+
bindings.push(`${name}=${value}`);
|
|
48
|
+
}
|
|
49
|
+
return { formula, bindings };
|
|
50
|
+
}
|
|
51
|
+
const showEvalForm = (f) => f === null ? 'none (a node the scalar evaluator cannot take)' : `upt eval "${f.formula}" ${f.bindings.join(' ')}`;
|
|
52
|
+
const SOLAR_MASS_SOURCE = 'evaluation point: the solar mass 1.989e30 kg, the rounded value the repository uses (core/constants.ts M_SUN_SI)';
|
|
53
|
+
/**
|
|
54
|
+
* Every named symbol of the formula, in order of first use: a registered constant with its meaning,
|
|
55
|
+
* unit and source; an input with its quantity and the point it is evaluated at. Numeric literals are
|
|
56
|
+
* not symbols. `null` when a name is neither, so no row is ever invented.
|
|
57
|
+
*/
|
|
58
|
+
function symbolTable(n, api, inputs, point) {
|
|
59
|
+
const names = [];
|
|
60
|
+
const collect = (e) => {
|
|
61
|
+
if (e.kind === 'symbol') {
|
|
62
|
+
if (!names.includes(e.name) && !Number.isFinite(Number(e.name)))
|
|
63
|
+
names.push(e.name);
|
|
64
|
+
}
|
|
65
|
+
else if (e.kind === 'op')
|
|
66
|
+
e.args.forEach(collect);
|
|
67
|
+
};
|
|
68
|
+
collect(n);
|
|
69
|
+
const rows = [];
|
|
70
|
+
for (const name of names) {
|
|
71
|
+
const c = api.CONSTANTS[name];
|
|
72
|
+
const info = api.CONSTANT_PROVENANCE[name];
|
|
73
|
+
if (c !== undefined && info !== undefined) {
|
|
74
|
+
rows.push({ symbol: name, meaning: info.meaning, value: c.value, unit: info.unit, source: info.source });
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const q = inputs.find((i) => i.name === name);
|
|
78
|
+
const v = point[name];
|
|
79
|
+
if (q === undefined || v === undefined)
|
|
80
|
+
return null;
|
|
81
|
+
rows.push({
|
|
82
|
+
symbol: name,
|
|
83
|
+
meaning: `input quantity ${q.name} (symbol ${q.symbol}), ${api.format(q.dim)}`,
|
|
84
|
+
value: v,
|
|
85
|
+
unit: siUnitOf(q.dim),
|
|
86
|
+
source: name === 'mass' && v === api.M_SUN_KG ? SOLAR_MASS_SOURCE : 'evaluation point',
|
|
87
|
+
});
|
|
27
88
|
}
|
|
28
|
-
return
|
|
89
|
+
return rows;
|
|
29
90
|
}
|
|
91
|
+
function showSymbolTable(rows, out) {
|
|
92
|
+
if (rows === null) {
|
|
93
|
+
out(' symbols: none (a name is neither a registered constant nor an input)');
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
out(' symbols:');
|
|
97
|
+
const w = (k) => Math.max(...rows.map((r) => String(r[k]).length));
|
|
98
|
+
const [ws, wm, wv, wu] = [w('symbol'), w('meaning'), w('value'), w('unit')];
|
|
99
|
+
for (const r of rows) {
|
|
100
|
+
out(` ${r.symbol.padEnd(ws)} ${r.meaning.padEnd(wm)} ${String(r.value).padEnd(wv)} ${r.unit.padEnd(wu)} ${r.source}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const latexOf = (name, leaves, n) => {
|
|
104
|
+
const rhs = printLatex(n);
|
|
105
|
+
return rhs === null ? null : `${latexName(name)}(${leaves.map(latexName).join(', ')}) = ${rhs}`;
|
|
106
|
+
};
|
|
30
107
|
async function run(ctx) {
|
|
31
108
|
const { args, api, out } = ctx;
|
|
32
109
|
const doSimplify = args.flags.has('simplify');
|
|
@@ -46,7 +123,9 @@ async function run(ctx) {
|
|
|
46
123
|
}
|
|
47
124
|
for (const { first, second, label } of chains) {
|
|
48
125
|
const obs = api.composeSymbolic(first, second);
|
|
49
|
-
const
|
|
126
|
+
const point = { mass: api.M_SUN_KG };
|
|
127
|
+
const num = obs.evaluate(point);
|
|
128
|
+
const inputs = [...first.sources, ...second.sources];
|
|
50
129
|
if (!isJson) {
|
|
51
130
|
out(` ● ${label}`);
|
|
52
131
|
out(` composed: ${obs.name}(${obs.leaves.join(',')}) = ${exprToString(obs.expr)}`);
|
|
@@ -60,6 +139,9 @@ async function run(ctx) {
|
|
|
60
139
|
name: s.name,
|
|
61
140
|
leaves: s.leaves,
|
|
62
141
|
expr: exprToString(s.expr),
|
|
142
|
+
latex: latexOf(s.name, s.leaves, s.expr),
|
|
143
|
+
evalForm: evalFormOf(s.expr, api.CONSTANTS, point),
|
|
144
|
+
symbols: symbolTable(s.expr, api, inputs, point),
|
|
63
145
|
dim: api.format(s.dim),
|
|
64
146
|
value: sNum,
|
|
65
147
|
simplified: true,
|
|
@@ -68,6 +150,9 @@ async function run(ctx) {
|
|
|
68
150
|
else {
|
|
69
151
|
const tag = s.expr === obs.expr ? ' (unchanged — minimal, MathTS absent, or not reducible here)' : '';
|
|
70
152
|
out(` simplified: ${s.name}(${s.leaves.join(',')}) = ${exprToString(s.expr)}${tag}`);
|
|
153
|
+
out(` latex: ${latexOf(s.name, s.leaves, s.expr) ?? 'none (a node the printer cannot take)'}`);
|
|
154
|
+
out(` eval form: ${showEvalForm(evalFormOf(s.expr, api.CONSTANTS, point))}`);
|
|
155
|
+
showSymbolTable(symbolTable(s.expr, api, inputs, point), out);
|
|
71
156
|
out(` value @ mass = M_sun: ${sNum.toExponential(4)} (= composed, ${api.format(s.dim)})`);
|
|
72
157
|
}
|
|
73
158
|
}
|
|
@@ -77,11 +162,17 @@ async function run(ctx) {
|
|
|
77
162
|
name: obs.name,
|
|
78
163
|
leaves: obs.leaves,
|
|
79
164
|
expr: exprToString(obs.expr),
|
|
165
|
+
latex: latexOf(obs.name, obs.leaves, obs.expr),
|
|
166
|
+
evalForm: evalFormOf(obs.expr, api.CONSTANTS, point),
|
|
167
|
+
symbols: symbolTable(obs.expr, api, inputs, point),
|
|
80
168
|
dim: api.format(obs.dim),
|
|
81
169
|
value: num,
|
|
82
170
|
});
|
|
83
171
|
}
|
|
84
172
|
else {
|
|
173
|
+
out(` latex: ${latexOf(obs.name, obs.leaves, obs.expr) ?? 'none (a node the printer cannot take)'}`);
|
|
174
|
+
out(` eval form: ${showEvalForm(evalFormOf(obs.expr, api.CONSTANTS, point))}`);
|
|
175
|
+
showSymbolTable(symbolTable(obs.expr, api, inputs, point), out);
|
|
85
176
|
out(` dimension: ${api.format(obs.dim)} (validated on the composed AST)`);
|
|
86
177
|
out(` value @ mass = M_sun: ${num.toExponential(4)}`);
|
|
87
178
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbolic.js","sourceRoot":"","sources":["../../../src/cli/commands/symbolic.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAiC,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"symbolic.js","sourceRoot":"","sources":["../../../src/cli/commands/symbolic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testplan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/testplan.ts"],"names":[],"mappings":"AAQA,OAAO,EAAmB,KAAK,OAAO,EAAmB,MAAM,eAAe,CAAC;AAyJ/E,eAAO,MAAM,OAAO,EAAE,OAA0E,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { registerCommand } from '../command.js';
|
|
2
|
+
import { emitJson } from '../output.js';
|
|
3
|
+
import { UsageError, CliError } from '../errors.js';
|
|
4
|
+
const FLAGS = [{ name: '--json', valueStyle: 'none' }];
|
|
5
|
+
const HELP = `upt testplan <be-NN | case-id> [--json]
|
|
6
|
+
The measurement plan for one bridge confrontation or one applied case:
|
|
7
|
+
the observable, the confirm and falsify criteria the record already
|
|
8
|
+
states, what is not included, and the links. Markdown by default,
|
|
9
|
+
JSON with --json. \`upt help testplan\` describes every flag.
|
|
10
|
+
e.g. upt testplan be-58
|
|
11
|
+
upt testplan case-brownian-sphere
|
|
12
|
+
upt testplan case-skin-depth --json`;
|
|
13
|
+
function linesOf(outcome) {
|
|
14
|
+
if (outcome.kind === 'value') {
|
|
15
|
+
return {
|
|
16
|
+
confirm: [
|
|
17
|
+
`predicted ${outcome.predicted} ${outcome.units}, observed ${outcome.observed} ± ${outcome.sigma} ${outcome.units}`,
|
|
18
|
+
`within the stated comparison: ${outcome.withinObserved}`,
|
|
19
|
+
],
|
|
20
|
+
falsify: [
|
|
21
|
+
outcome.withinObserved
|
|
22
|
+
? 'a later measurement outside that comparison falsifies the recorded agreement'
|
|
23
|
+
: 'the recorded comparison is already outside the stated band',
|
|
24
|
+
],
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (outcome.kind === 'upper-bound') {
|
|
28
|
+
return {
|
|
29
|
+
confirm: [`predicted ${outcome.predicted}, observed bound ${outcome.bound}, satisfied: ${outcome.satisfied}`],
|
|
30
|
+
falsify: ['an observed bound that fails the recorded comparison falsifies it'],
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (outcome.kind === 'table') {
|
|
34
|
+
return {
|
|
35
|
+
confirm: outcome.rows.map((r) => `${r.label}: predicted ${r.predicted}, observed ${r.observed} ± ${r.sigma} ${outcome.units}`),
|
|
36
|
+
falsify: ['a row whose residual leaves the recorded comparison falsifies that row'],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
confirm: [
|
|
41
|
+
`predicted ${outcome.predicted}, approaches ${outcome.approaches}, fractional gap ${outcome.fractionalGap} (${outcome.fractionalGapIs})`,
|
|
42
|
+
],
|
|
43
|
+
falsify: ['a fractional gap outside the record\'s stated comparison falsifies it'],
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function fromCase(api, c) {
|
|
47
|
+
const { inputs } = api.resolveEvaluatorInputs(c.parameters, c.examples.valid.args);
|
|
48
|
+
const result = api.runAppliedCase(c.id, inputs);
|
|
49
|
+
const held = result.checks.filter((k) => k.holds).map((k) => `${k.id}: ${k.quantity} ${k.op} ${k.bound} — ${k.premise}`);
|
|
50
|
+
const broken = result.checks.filter((k) => !k.holds).map((k) => `${k.id} violated at the worked point`);
|
|
51
|
+
return {
|
|
52
|
+
id: c.id,
|
|
53
|
+
title: c.title,
|
|
54
|
+
observable: `${c.observable} — ${c.outputs.find((o) => o.key === c.observable)?.meaning ?? ''}`,
|
|
55
|
+
confirm: [`worked point: ${c.examples.valid.args.join(' ')} (${c.examples.valid.note})`, ...held],
|
|
56
|
+
falsify: [
|
|
57
|
+
...c.examples.failures.map((f) => `${f.args.join(' ')} fails ${f.fails.join(', ')} — ${f.note}`),
|
|
58
|
+
...broken,
|
|
59
|
+
],
|
|
60
|
+
notIncluded: [...c.notIncluded],
|
|
61
|
+
measurement: [...c.measurement],
|
|
62
|
+
links: c.links.map((l) => `${l.id}: ${l.role}`),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function fromConfrontation(api, id) {
|
|
66
|
+
const entry = api.CONFRONTATIONS.get(id);
|
|
67
|
+
if (entry === undefined)
|
|
68
|
+
throw new CliError(`upt testplan: no confrontation be-${id}`);
|
|
69
|
+
const outcome = entry.run();
|
|
70
|
+
const { confirm, falsify } = linesOf(outcome);
|
|
71
|
+
return {
|
|
72
|
+
id: `be-${id}`,
|
|
73
|
+
title: entry.title,
|
|
74
|
+
observable: `${outcome.kind} comparison`,
|
|
75
|
+
confirm,
|
|
76
|
+
falsify,
|
|
77
|
+
notIncluded: [],
|
|
78
|
+
measurement: [],
|
|
79
|
+
links: [`be-${id}`],
|
|
80
|
+
preprocessing: outcome.preprocessing.state === 'recorded' ? outcome.preprocessing.statement : 'preprocessing: not-recorded',
|
|
81
|
+
independence: outcome.independence.state === 'not-recorded' ? 'independence: not-recorded' : outcome.independence.statement,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function markdown(plan) {
|
|
85
|
+
const block = (title, rows) => [`## ${title}`, ...(rows.length === 0 ? ['- (none recorded)'] : rows.map((r) => `- ${r}`))].join('\n');
|
|
86
|
+
return [
|
|
87
|
+
`# Test plan: ${plan.id}`,
|
|
88
|
+
plan.title,
|
|
89
|
+
'',
|
|
90
|
+
`Observable: ${plan.observable}`,
|
|
91
|
+
'',
|
|
92
|
+
block('Confirm', plan.confirm),
|
|
93
|
+
'',
|
|
94
|
+
block('Falsify', plan.falsify),
|
|
95
|
+
'',
|
|
96
|
+
block('Not included', plan.notIncluded),
|
|
97
|
+
'',
|
|
98
|
+
block('Measurement', plan.measurement),
|
|
99
|
+
'',
|
|
100
|
+
block('Links', plan.links),
|
|
101
|
+
...(plan.preprocessing === undefined ? [] : ['', `Preprocessing: ${plan.preprocessing}`]),
|
|
102
|
+
...(plan.independence === undefined ? [] : [`Independence: ${plan.independence}`]),
|
|
103
|
+
'',
|
|
104
|
+
].join('\n');
|
|
105
|
+
}
|
|
106
|
+
async function run(ctx) {
|
|
107
|
+
const { args, api, out } = ctx;
|
|
108
|
+
const target = args.positionals[0];
|
|
109
|
+
if (!target)
|
|
110
|
+
throw new UsageError('upt testplan needs a be-NN id or a case id. See `upt help testplan`.');
|
|
111
|
+
const caseHit = api.APPLIED_CASES.get(target);
|
|
112
|
+
let plan;
|
|
113
|
+
if (caseHit !== undefined)
|
|
114
|
+
plan = fromCase(api, caseHit);
|
|
115
|
+
else {
|
|
116
|
+
const m = /^(?:be-)?(\d+)$/.exec(target);
|
|
117
|
+
if (m === null || !api.CONFRONTATIONS.has(Number(m[1]))) {
|
|
118
|
+
throw new CliError(`upt testplan: '${target}' is not a case (${[...api.APPLIED_CASES.keys()].join(', ')}) or a confrontation id.`);
|
|
119
|
+
}
|
|
120
|
+
plan = fromConfrontation(api, Number(m[1]));
|
|
121
|
+
}
|
|
122
|
+
if (args.flags.has('json')) {
|
|
123
|
+
emitJson({ command: 'testplan', result: plan }, ctx.write);
|
|
124
|
+
return 0;
|
|
125
|
+
}
|
|
126
|
+
out(markdown(plan));
|
|
127
|
+
return 0;
|
|
128
|
+
}
|
|
129
|
+
export const command = { name: 'testplan', aliases: [], flags: FLAGS, help: HELP, run };
|
|
130
|
+
registerCommand(command);
|
|
131
|
+
//# sourceMappingURL=testplan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testplan.js","sourceRoot":"","sources":["../../../src/cli/commands/testplan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convention lines the CLI prints beside a comparison.
|
|
3
|
+
*
|
|
4
|
+
* @module cli/conventions
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* A factor or form difference is a failed check, except the Compton pair:
|
|
9
|
+
* both entries answer to `compton-wavelength` and differ by 2π, so a formula
|
|
10
|
+
* that agrees with one of them has matched that convention. The other
|
|
11
|
+
* difference is still printed. A formula that matches neither still fails.
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export declare function canonicalCheckFailed(comparisons: readonly {
|
|
15
|
+
readonly id: string;
|
|
16
|
+
readonly kind: string;
|
|
17
|
+
}[]): boolean;
|
|
18
|
+
/** One line per convention a listed comparison is ambiguous about. @internal */
|
|
19
|
+
export declare function conventionLines(ids: readonly string[]): string[];
|
|
20
|
+
/** Printed beside be-65. The number is the coded formula; the 5 is convention-dependent. */
|
|
21
|
+
export declare const JEANS_FORMULA_NOTE: string;
|
|
22
|
+
//# sourceMappingURL=conventions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conventions.d.ts","sourceRoot":"","sources":["../../src/cli/conventions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,SAAS;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GACrE,OAAO,CAKT;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CA+BhE;AAED,4FAA4F;AAC5F,eAAO,MAAM,kBAAkB,QAEgF,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convention lines the CLI prints beside a comparison.
|
|
3
|
+
*
|
|
4
|
+
* @module cli/conventions
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
const COMPTON_PAIR = new Set(['CE-compton-wavelength', 'CE-compton-wavelength-full']);
|
|
8
|
+
/**
|
|
9
|
+
* A factor or form difference is a failed check, except the Compton pair:
|
|
10
|
+
* both entries answer to `compton-wavelength` and differ by 2π, so a formula
|
|
11
|
+
* that agrees with one of them has matched that convention. The other
|
|
12
|
+
* difference is still printed. A formula that matches neither still fails.
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export function canonicalCheckFailed(comparisons) {
|
|
16
|
+
const hard = comparisons.filter((c) => c.kind === 'factor' || c.kind === 'form');
|
|
17
|
+
if (hard.length === 0)
|
|
18
|
+
return false;
|
|
19
|
+
const agreed = comparisons.some((c) => COMPTON_PAIR.has(c.id) && c.kind === 'agrees');
|
|
20
|
+
return !(agreed && hard.every((c) => COMPTON_PAIR.has(c.id)));
|
|
21
|
+
}
|
|
22
|
+
/** One line per convention a listed comparison is ambiguous about. @internal */
|
|
23
|
+
export function conventionLines(ids) {
|
|
24
|
+
const has = new Set(ids);
|
|
25
|
+
const lines = [];
|
|
26
|
+
if (has.has('CE-compton-wavelength') || has.has('CE-compton-wavelength-full')) {
|
|
27
|
+
lines.push('convention: CE-compton-wavelength is the reduced wavelength λ̄ = ħ/(m c), prefactor checked. ' +
|
|
28
|
+
'CE-compton-wavelength-full is λ = h/(m c). The Compton-shift entry uses h/(m c) (1−cos θ). h does not alias ħ.');
|
|
29
|
+
}
|
|
30
|
+
if (has.has('CE-rydberg-energy')) {
|
|
31
|
+
lines.push('convention: the Rydberg latex is E_R = m_e e^4 / (32 π² ε0² ħ²), which is m e^4 / (8 ε0² h²). The prefactor is in the scalar AST.');
|
|
32
|
+
}
|
|
33
|
+
if (has.has('CE-gravitational-potential-energy')) {
|
|
34
|
+
lines.push('convention: gravitational potential energy is U = −G m1 m2/r. The minus is in the scalar AST; a positive formula differs by the factor −1.');
|
|
35
|
+
}
|
|
36
|
+
if (has.has('CE-hooke-law')) {
|
|
37
|
+
lines.push("convention: Hooke's law is F = −kx. The minus is in the scalar AST; a positive formula differs by the factor −1.");
|
|
38
|
+
}
|
|
39
|
+
if (has.has('CE-einstein-field-eq')) {
|
|
40
|
+
lines.push('convention: the Einstein-equation metric node is mostly-plus (−,+,+,+), the same signature as upt metric. ' +
|
|
41
|
+
'The 8π is in the scalar AST, so a comparison checks it.');
|
|
42
|
+
}
|
|
43
|
+
return lines;
|
|
44
|
+
}
|
|
45
|
+
/** Printed beside be-65. The number is the coded formula; the 5 is convention-dependent. */
|
|
46
|
+
export const JEANS_FORMULA_NOTE = 'formula: M_J = (5 k_B T / (G μ m_u))^{3/2} · (3/(4π ρ))^{1/2}. ' +
|
|
47
|
+
'The leading 5 is convention-dependent; the number above is this formula, not a checked universal prefactor.';
|
|
48
|
+
//# sourceMappingURL=conventions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/cli/conventions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,uBAAuB,EAAE,4BAA4B,CAAC,CAAC,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAsE;IAEtE,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACjF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACtF,OAAO,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAC,GAAsB;IACpD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,CAAC;QAC9E,KAAK,CAAC,IAAI,CACR,+FAA+F;YAC7F,gHAAgH,CACnH,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CACR,mIAAmI,CACpI,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,CAAC,mCAAmC,CAAC,EAAE,CAAC;QACjD,KAAK,CAAC,IAAI,CACR,4IAA4I,CAC7I,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CACR,kHAAkH,CACnH,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CACR,4GAA4G;YAC1G,yDAAyD,CAC5D,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4FAA4F;AAC5F,MAAM,CAAC,MAAM,kBAAkB,GAC7B,iEAAiE;IACjE,6GAA6G,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Name the active formula parser on an error a script can read.
|
|
3
|
+
*
|
|
4
|
+
* @module cli/euler-guard
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
/** Name the active parser on a formula error a script can read. @internal */
|
|
8
|
+
export declare function withParser(message: string, kind: 'mathts' | 'builtin'): string;
|
|
9
|
+
//# sourceMappingURL=euler-guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"euler-guard.d.ts","sourceRoot":"","sources":["../../src/cli/euler-guard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAE9E"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Name the active formula parser on an error a script can read.
|
|
3
|
+
*
|
|
4
|
+
* @module cli/euler-guard
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
/** Name the active parser on a formula error a script can read. @internal */
|
|
8
|
+
export function withParser(message, kind) {
|
|
9
|
+
return message.includes('(formula parser:') ? message : `${message} (formula parser: ${kind})`;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=euler-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"euler-guard.js","sourceRoot":"","sources":["../../src/cli/euler-guard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6EAA6E;AAC7E,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,IAA0B;IACpE,OAAO,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,qBAAqB,IAAI,GAAG,CAAC;AACjG,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Numbers `upt eval` understands: a bare numeral, a numeral with a unit, and
|
|
3
|
+
* the CODATA names a script should not have to paste.
|
|
4
|
+
*
|
|
5
|
+
* Bare `e` is the elementary charge, taken from the constant registry.
|
|
6
|
+
* Euler's number is `euler`. `E` is energy and is not filled in.
|
|
7
|
+
*
|
|
8
|
+
* @module cli/eval-numbers
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
import type { UnitMode } from '../dimensional/natural-units.js';
|
|
12
|
+
/** ħ in eval is the exact quotient H_SI/(2π). */
|
|
13
|
+
export declare const HBAR_TRUNCATION_NOTE: string;
|
|
14
|
+
/**
|
|
15
|
+
* Registered constants an eval may omit, taken from {@link CONSTANTS} so a
|
|
16
|
+
* new registry leaf is a formula name without a second list. Aliases below
|
|
17
|
+
* are spellings that are not registry keys. Bare `sigma` is not an alias of
|
|
18
|
+
* `sigma_sb`. Explicit `name=` wins over these.
|
|
19
|
+
*
|
|
20
|
+
* `2pi`, `4pi` and `8pi` are in the scope. The MathTS parser reads those
|
|
21
|
+
* spellings as n·pi before the scope is consulted; the builtin parser
|
|
22
|
+
* tokenizes a leading digit as a number. The values match either way.
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export declare function codataScope(mode: UnitMode): Record<string, number>;
|
|
26
|
+
//# sourceMappingURL=eval-numbers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval-numbers.d.ts","sourceRoot":"","sources":["../../src/cli/eval-numbers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAEhE,iDAAiD;AACjD,eAAO,MAAM,oBAAoB,QAEiE,CAAC;AAEnG;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBlE"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Numbers `upt eval` understands: a bare numeral, a numeral with a unit, and
|
|
3
|
+
* the CODATA names a script should not have to paste.
|
|
4
|
+
*
|
|
5
|
+
* Bare `e` is the elementary charge, taken from the constant registry.
|
|
6
|
+
* Euler's number is `euler`. `E` is energy and is not filled in.
|
|
7
|
+
*
|
|
8
|
+
* @module cli/eval-numbers
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
import { E_SI, M_E_SI, M_SUN_SI } from '../core/constants.js';
|
|
12
|
+
import { MU0_SI } from '../dimensional/formula-names.js';
|
|
13
|
+
import { CONSTANTS } from '../dimensional/symbolic-constants.js';
|
|
14
|
+
/** ħ in eval is the exact quotient H_SI/(2π). */
|
|
15
|
+
export const HBAR_TRUNCATION_NOTE = 'note: hbar is HBAR_SI = H_SI/(2π), the exact reduced Planck constant. ' +
|
|
16
|
+
'The CODATA display 1.054571817e-34 is that quotient truncated (relative difference 6.127e-10).';
|
|
17
|
+
/**
|
|
18
|
+
* Registered constants an eval may omit, taken from {@link CONSTANTS} so a
|
|
19
|
+
* new registry leaf is a formula name without a second list. Aliases below
|
|
20
|
+
* are spellings that are not registry keys. Bare `sigma` is not an alias of
|
|
21
|
+
* `sigma_sb`. Explicit `name=` wins over these.
|
|
22
|
+
*
|
|
23
|
+
* `2pi`, `4pi` and `8pi` are in the scope. The MathTS parser reads those
|
|
24
|
+
* spellings as n·pi before the scope is consulted; the builtin parser
|
|
25
|
+
* tokenizes a leading digit as a number. The values match either way.
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export function codataScope(mode) {
|
|
29
|
+
const scope = {};
|
|
30
|
+
for (const [name, c] of Object.entries(CONSTANTS))
|
|
31
|
+
scope[name] = c.value;
|
|
32
|
+
scope.e_charge = E_SI;
|
|
33
|
+
scope.euler = Math.E;
|
|
34
|
+
scope.m_e = M_E_SI;
|
|
35
|
+
scope.eps0 = CONSTANTS.epsilon_0.value;
|
|
36
|
+
scope.mu0 = MU0_SI;
|
|
37
|
+
scope.mu_0 = MU0_SI;
|
|
38
|
+
scope.kB = CONSTANTS.k_B.value;
|
|
39
|
+
scope.M_sun = M_SUN_SI;
|
|
40
|
+
if (mode !== 'si') {
|
|
41
|
+
scope.c = 1;
|
|
42
|
+
scope.hbar = 1;
|
|
43
|
+
scope.h = 2 * Math.PI;
|
|
44
|
+
}
|
|
45
|
+
if (mode === 'geometrized')
|
|
46
|
+
scope.G = 1;
|
|
47
|
+
return scope;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=eval-numbers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval-numbers.js","sourceRoot":"","sources":["../../src/cli/eval-numbers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAGjE,iDAAiD;AACjD,MAAM,CAAC,MAAM,oBAAoB,GAC/B,wEAAwE;IACxE,gGAAgG,CAAC;AAEnG;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IACzE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;IACrB,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC;IACnB,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;IACvC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC;IACnB,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC/B,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC;IACvB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;QACZ,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QACf,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IACxB,CAAC;IACD,IAAI,IAAI,KAAK,aAAa;QAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The three printed forms of a scalar composed AST (`upt symbolic`, audit F12 and I10):
|
|
3
|
+
*
|
|
4
|
+
* - DISPLAY: plain text for the reader, `·` for a product.
|
|
5
|
+
* - EVAL: a formula `upt eval` parses, every named factor spelled so it evaluates (`8pi` → `(8*pi)`).
|
|
6
|
+
* - LATEX: `\frac` for every division, `\cdot` for a product, braces for every exponent.
|
|
7
|
+
*
|
|
8
|
+
* Only `symbol` and `op` nodes are printed; any other node gives `null`, never a guess.
|
|
9
|
+
*/
|
|
10
|
+
import type { ExprNode } from '../dimensional/validator.js';
|
|
11
|
+
import type { Dimension } from '../dimensional/types.js';
|
|
12
|
+
/** Named numeric stubs spelled so `upt eval` parses them. */
|
|
13
|
+
export declare const EVAL_STUBS: Readonly<Record<string, string>>;
|
|
14
|
+
export declare const printDisplay: (n: ExprNode) => string | null;
|
|
15
|
+
export declare const printEval: (n: ExprNode) => string | null;
|
|
16
|
+
/** A name in LaTeX: one letter or a number as is, a hyphenated name as text, otherwise upright. */
|
|
17
|
+
export declare function latexName(name: string): string;
|
|
18
|
+
/** The AST in LaTeX; `null` for a node other than `symbol` or `op`. */
|
|
19
|
+
export declare function printLatex(n: ExprNode): string | null;
|
|
20
|
+
/**
|
|
21
|
+
* A dimension as SI base units, numerator before one `/` (`m^3/(kg*s^2)`), a bare denominator as
|
|
22
|
+
* negative powers (`s^-1`), and `1` when dimensionless: the forms `parseUnit` reads back.
|
|
23
|
+
*/
|
|
24
|
+
export declare function siUnitOf(dim: Dimension): string;
|
|
25
|
+
//# sourceMappingURL=expr-print.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expr-print.d.ts","sourceRoot":"","sources":["../../src/cli/expr-print.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAUzD,6DAA6D;AAC7D,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKvD,CAAC;AAkCF,eAAO,MAAM,YAAY,MAAO,QAAQ,KAAG,MAAM,GAAG,IAA8B,CAAC;AACnF,eAAO,MAAM,SAAS,MAAO,QAAQ,KAAG,MAAM,GAAG,IAA2B,CAAC;AAe7E,mGAAmG;AACnG,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9C;AAED,uEAAuE;AACvE,wBAAgB,UAAU,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CA4BrD;AAYD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAQ/C"}
|