universal-physics-tensor 0.21.0 → 0.23.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 +13 -12
- package/bin/upt.mjs +83 -4
- package/dist/canonical/canonical-equation.d.ts +79 -0
- package/dist/canonical/canonical-equation.d.ts.map +1 -0
- package/dist/canonical/canonical-equation.js +2 -0
- package/dist/canonical/canonical-equation.js.map +1 -0
- package/dist/canonical/dimensional-fields.d.ts +7 -0
- package/dist/canonical/dimensional-fields.d.ts.map +1 -0
- package/dist/canonical/dimensional-fields.js +31 -0
- package/dist/canonical/dimensional-fields.js.map +1 -0
- package/dist/canonical/entries/_l1-build.d.ts +22 -0
- package/dist/canonical/entries/_l1-build.d.ts.map +1 -0
- package/dist/canonical/entries/_l1-build.js +26 -0
- package/dist/canonical/entries/_l1-build.js.map +1 -0
- package/dist/canonical/entries/dimensional-classics.d.ts +11 -0
- package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -0
- package/dist/canonical/entries/dimensional-classics.js +194 -0
- package/dist/canonical/entries/dimensional-classics.js.map +1 -0
- package/dist/canonical/entries/l1-gravity-thermo.d.ts +12 -0
- package/dist/canonical/entries/l1-gravity-thermo.d.ts.map +1 -0
- package/dist/canonical/entries/l1-gravity-thermo.js +165 -0
- package/dist/canonical/entries/l1-gravity-thermo.js.map +1 -0
- package/dist/canonical/entries/l1-quantum-em.d.ts +10 -0
- package/dist/canonical/entries/l1-quantum-em.d.ts.map +1 -0
- package/dist/canonical/entries/l1-quantum-em.js +141 -0
- package/dist/canonical/entries/l1-quantum-em.js.map +1 -0
- package/dist/canonical/entries/relativity.d.ts +14 -0
- package/dist/canonical/entries/relativity.d.ts.map +1 -0
- package/dist/canonical/entries/relativity.js +188 -0
- package/dist/canonical/entries/relativity.js.map +1 -0
- package/dist/canonical/linkage.d.ts +27 -0
- package/dist/canonical/linkage.d.ts.map +1 -0
- package/dist/canonical/linkage.js +139 -0
- package/dist/canonical/linkage.js.map +1 -0
- package/dist/canonical/normal-form.d.ts +31 -0
- package/dist/canonical/normal-form.d.ts.map +1 -0
- package/dist/canonical/normal-form.js +137 -0
- package/dist/canonical/normal-form.js.map +1 -0
- package/dist/canonical/registry.d.ts +26 -0
- package/dist/canonical/registry.d.ts.map +1 -0
- package/dist/canonical/registry.js +46 -0
- package/dist/canonical/registry.js.map +1 -0
- package/dist/canonical/seed-l-layer.d.ts +20 -0
- package/dist/canonical/seed-l-layer.d.ts.map +1 -0
- package/dist/canonical/seed-l-layer.js +39 -0
- package/dist/canonical/seed-l-layer.js.map +1 -0
- package/dist/composition/discovery.d.ts +50 -6
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +102 -10
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/representative-values.d.ts +52 -0
- package/dist/composition/representative-values.d.ts.map +1 -0
- package/dist/composition/representative-values.js +91 -0
- package/dist/composition/representative-values.js.map +1 -0
- package/dist/composition/retrodiction.d.ts +13 -0
- package/dist/composition/retrodiction.d.ts.map +1 -1
- package/dist/composition/retrodiction.js +7 -1
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/symbolic-constants.d.ts.map +1 -1
- package/dist/composition/symbolic-constants.js +15 -1
- package/dist/composition/symbolic-constants.js.map +1 -1
- package/dist/core/constants.d.ts +6 -0
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +6 -0
- package/dist/core/constants.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -236,26 +236,27 @@ delivered a measured **5-6× RK4 geodesic-integrator speedup** (see [CHANGELOG](
|
|
|
236
236
|
|
|
237
237
|
## Development Status
|
|
238
238
|
|
|
239
|
-
**Current version:** v0.
|
|
240
|
-
([`universal-physics-tensor`](https://www.npmjs.com/package/universal-physics-tensor)
|
|
241
|
-
the
|
|
242
|
-
GW170817 / BE-23 data confrontations + catalog adjudication, Part-IX
|
|
243
|
-
the full catalog→graph migration, the bridge-inference +
|
|
244
|
-
tooling, the G-9 geometrized-units adapters,
|
|
245
|
-
variational grammar primitives, the
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
239
|
+
**Current version:** v0.22.0 on npm
|
|
240
|
+
([`universal-physics-tensor`](https://www.npmjs.com/package/universal-physics-tensor),
|
|
241
|
+
published 2026-06-18) — the rollup of the **v0.8.0 → v0.22.0** arc (composition
|
|
242
|
+
graph + GW170817 / BE-23 data confrontations + catalog adjudication, Part-IX
|
|
243
|
+
Phase C/D, the full catalog→graph migration, the bridge-inference +
|
|
244
|
+
symbolic-composition tooling, the G-9 geometrized-units adapters, the
|
|
245
|
+
distributional/variational grammar primitives, the AST bridge-gradient path, and
|
|
246
|
+
the **canonical-equation L-layer** with bridge↔canonical linkage). The working
|
|
247
|
+
branch carries unreleased post-0.22.0 refinements (the canonical GR tranche + a
|
|
248
|
+
Jarzynski partner, discovery-funnel hardening, and normal-form stub-identity
|
|
249
|
+
tagging) in the [CHANGELOG](CHANGELOG.md) `[Unreleased]` block.
|
|
249
250
|
|
|
250
251
|
| Metric | Value |
|
|
251
252
|
|---|---|
|
|
252
253
|
| Bridge catalog | **44** (IDs 11-54) — 8 established · 33 speculative · 3 highly-speculative · 0 invalid; membership-adjudicated **36 bridges · 5 not-a-bridge · 3 contested**; **41-edge composition graph** (full migration, 131 centralized quantity nodes) with a bridge-inference suite — **identifiability classifier**, **retrodiction harness**, **Buckingham-π enumerator**, unified by an **`explainQuantity`** entry point, plus (v0.12) the candidate-vetting **discovery loop**, regime-prediction map, empirical-coverage audit, and **symbolic composition** (the Observable contract + MathTS simplification) |
|
|
253
|
-
| Test suite | **
|
|
254
|
+
| Test suite | **2796** passing (4 skipped, 1 todo; incl. property-based algebra tests) across 274 files — gated by CI |
|
|
254
255
|
| `tsc --noEmit` | clean (src + strict `tsc -p tsconfig.tests.json`) |
|
|
255
256
|
| GR validation anchors | BE-52 Mercury perihelion relErr 1.8×10⁻⁷ · BE-37 Shapiro delay relErr ~2×10⁻⁸ |
|
|
256
257
|
| First derived relation | E_min(M) = ℏc³ln2/(8πGM) from BE-42 ∘ BE-16, relErr ≤ 10⁻¹² (pre-registered CT-1) |
|
|
257
258
|
| First data confrontation | GW170817 → BE-36: recomputed bounds +6.5×10⁻¹⁶ / −3.1×10⁻¹⁵ vs published +7×10⁻¹⁶ / −3×10⁻¹⁵ |
|
|
258
|
-
| Core capability | Dimensional AST validator (23 node kinds; valence-homogeneity + symbolic-exponent grammar, v0.13; distributional/variational primitives, v0.14) · curvature + Einstein-field-equation layers · GL4 symplectic geodesic integrator · composition graph (`composeEdges` + symbolic `composeSymbolic`) · geometrized-units adapters (G-9 increment 1, v0.13) |
|
|
259
|
+
| Core capability | Dimensional AST validator (23 node kinds; valence-homogeneity + symbolic-exponent grammar, v0.13; distributional/variational primitives, v0.14) · curvature + Einstein-field-equation layers · GL4 symplectic geodesic integrator · composition graph (`composeEdges` + symbolic `composeSymbolic`) · geometrized-units adapters (G-9 increment 1, v0.13) · canonical-equation **L-layer** + bridge↔canonical linkage / F4 guard (v0.22) |
|
|
259
260
|
|
|
260
261
|
Release history lives in the **[CHANGELOG](CHANGELOG.md)** — from the v0.1.0
|
|
261
262
|
catalog-closure milestone (40/40 AST encodings via the Wave A→Z encoding arc,
|
package/bin/upt.mjs
CHANGED
|
@@ -11,13 +11,16 @@
|
|
|
11
11
|
* Run from a built checkout (`npm run build`) via `npm run upt -- <cmd>`,
|
|
12
12
|
* or as an installed command (`npx universal-physics-tensor <cmd>`).
|
|
13
13
|
*/
|
|
14
|
-
import { fileURLToPath } from 'node:url';
|
|
14
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
15
15
|
import { dirname, join } from 'node:path';
|
|
16
16
|
|
|
17
17
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
18
|
-
|
|
18
|
+
// Return a file:// URL, not a bare path: Node's ESM dynamic import() rejects
|
|
19
|
+
// absolute Windows paths ("protocol 'c:'") — it only accepts file/data/node URLs.
|
|
20
|
+
const dist = (...p) => pathToFileURL(join(here, '..', 'dist', ...p)).href;
|
|
19
21
|
|
|
20
22
|
let api, analysis, formulaReg, dimSpecMod, prediction, discovery, coverage, simplifyMod;
|
|
23
|
+
let canonicalReg, linkageMod;
|
|
21
24
|
try {
|
|
22
25
|
api = await import(dist('index.js'));
|
|
23
26
|
analysis = await import(dist('composition', 'bridge-analysis.js'));
|
|
@@ -27,6 +30,8 @@ try {
|
|
|
27
30
|
discovery = await import(dist('composition', 'discovery.js'));
|
|
28
31
|
coverage = await import(dist('bridges', 'confrontation-coverage.js'));
|
|
29
32
|
simplifyMod = await import(dist('composition', 'expr-simplify.js'));
|
|
33
|
+
canonicalReg = await import(dist('canonical', 'registry.js'));
|
|
34
|
+
linkageMod = await import(dist('canonical', 'linkage.js'));
|
|
30
35
|
} catch (err) {
|
|
31
36
|
console.error('Could not load the built package. Run `npm run build` first.');
|
|
32
37
|
console.error(String(err.message || err));
|
|
@@ -42,6 +47,8 @@ const { predictMissingBridges } = prediction;
|
|
|
42
47
|
const { rankDiscoveries } = discovery;
|
|
43
48
|
const { auditCoverage } = coverage;
|
|
44
49
|
const { simplifyObservable } = simplifyMod;
|
|
50
|
+
const { CANONICAL_EQUATIONS, bridgesWithoutCanonicalPartner } = canonicalReg;
|
|
51
|
+
const { scanLinkages } = linkageMod;
|
|
45
52
|
|
|
46
53
|
const GRAPH = CATALOG_GRAPH;
|
|
47
54
|
|
|
@@ -97,6 +104,17 @@ Usage:
|
|
|
97
104
|
data-confronted vs graph-computable vs encoded-only vs thin — to
|
|
98
105
|
target the physicist review. Fabricates nothing.
|
|
99
106
|
|
|
107
|
+
upt canonical
|
|
108
|
+
List the canonical-equation registry — the standard-physics L-layer
|
|
109
|
+
(textbook "answer key") with each entry's fidelity (L0/L1/L2),
|
|
110
|
+
domain, and bridge partners, plus the coverage gap.
|
|
111
|
+
|
|
112
|
+
upt recover
|
|
113
|
+
Validate bridges against standard physics: classify each bridge↔
|
|
114
|
+
canonical link as restates-canonical (F4 circularity — NOT a
|
|
115
|
+
discovery), recovers (undeclared structural match), or
|
|
116
|
+
dimensional-only.
|
|
117
|
+
|
|
100
118
|
upt symbolic [--simplify]
|
|
101
119
|
Compose bridges' SYMBOLIC (AST) forms, not just their numeric
|
|
102
120
|
evaluators (the Observable contract). Shows the CT-1 / CT-1b chains
|
|
@@ -373,11 +391,13 @@ function discoverCmd() {
|
|
|
373
391
|
const ranked = rankDiscoveries(GRAPH);
|
|
374
392
|
const by = (v) => ranked.filter((r) => r.verdict === v);
|
|
375
393
|
const promising = by('promising'), inert = by('inert'), contra = by('contradictory');
|
|
394
|
+
const clash = by('magnitude-clash');
|
|
376
395
|
console.log('\nDiscovery — link candidates VETTED through the inference suite');
|
|
377
396
|
console.log('⚠ a REVIEW SURFACE: `promising` means "worth a physicist\'s minute", not "true".');
|
|
378
397
|
console.log(' Each candidate hypothesises an identification a≡b and tests its consequences.\n');
|
|
379
398
|
console.log(` funnel: ${ranked.length} candidates → ${promising.length} promising ` +
|
|
380
|
-
`· ${inert.length} inert · ${
|
|
399
|
+
`· ${inert.length} inert · ${clash.length} magnitude-clash ` +
|
|
400
|
+
`· ${contra.length} contradictory (falsified)\n`);
|
|
381
401
|
if (promising.length) {
|
|
382
402
|
console.log(' PROMISING (merges disconnected physics, unlocks quantities, stays consistent):');
|
|
383
403
|
for (const r of promising) {
|
|
@@ -387,13 +407,27 @@ function discoverCmd() {
|
|
|
387
407
|
} else {
|
|
388
408
|
console.log(' no candidate is `promising` from the default {mass} anchor.');
|
|
389
409
|
}
|
|
410
|
+
if (clash.length) {
|
|
411
|
+
console.log(`\n MAGNITUDE-CLASH (representative values differ by > N orders — a falsifier):`);
|
|
412
|
+
for (const r of clash) {
|
|
413
|
+
const basis = r.magnitudeUsedAnchor ? ' (anchor-derived)' : '';
|
|
414
|
+
console.log(` ${(r.a + ' ≟ ' + r.b).padEnd(52)} ~${r.ordersApart.toFixed(1)} orders apart${basis}`);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
const subsumed = inert.filter((r) => r.subsuming);
|
|
418
|
+
if (subsumed.length) {
|
|
419
|
+
console.log(`\n SUBSUMING (generic ≟ specialization — tautological, barred from promising):`);
|
|
420
|
+
for (const r of subsumed) {
|
|
421
|
+
console.log(` ${(r.a + ' ≟ ' + r.b).padEnd(52)} [${r.dim}]`);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
390
424
|
if (contra.length) {
|
|
391
425
|
console.log(`\n CONTRADICTORY (the identification falsifies itself numerically):`);
|
|
392
426
|
for (const r of contra) {
|
|
393
427
|
console.log(` ${(r.a + ' ≟ ' + r.b).padEnd(52)} disagreeing node(s): ${r.inconsistentNodes.join(', ')}`);
|
|
394
428
|
}
|
|
395
429
|
}
|
|
396
|
-
console.log('\n (
|
|
430
|
+
console.log('\n (magnitude gate abstains where a representative value is unknown; weak priors on dimension.)');
|
|
397
431
|
}
|
|
398
432
|
|
|
399
433
|
// ── coverage (empirical-spine audit) ──────────────────────────────────────
|
|
@@ -481,6 +515,49 @@ function connectorsCmd() {
|
|
|
481
515
|
console.log(' docs/research/Orphan-Connector-Analysis.md and proposed in spec Part-IX §9.');
|
|
482
516
|
}
|
|
483
517
|
|
|
518
|
+
// ── canonical (the standard-physics L-layer registry) ─────────────────────
|
|
519
|
+
function canonicalCmd() {
|
|
520
|
+
const fidelity = (e) => (e.fieldEquation ? 'L2' : e.scalarAst ? 'L1' : 'L0');
|
|
521
|
+
console.log('\nCanonical-equation registry — the standard-physics L-layer (Π = L + B + E)');
|
|
522
|
+
console.log('the textbook "answer key" bridge equations are validated against.\n');
|
|
523
|
+
console.log(` ${CANONICAL_EQUATIONS.length} entries:\n`);
|
|
524
|
+
console.log(' fid domain id partners');
|
|
525
|
+
console.log(' ─────────────────────────────────────────────────────────────────');
|
|
526
|
+
for (const e of CANONICAL_EQUATIONS) {
|
|
527
|
+
const partners = [...e.partnerBridges, ...(e.restatesBridge ? [`=${e.restatesBridge}`] : [])].join(',') || '—';
|
|
528
|
+
console.log(` ${fidelity(e).padEnd(3)} ${e.domain.padEnd(19)} ${e.id.padEnd(24)} ${partners}`);
|
|
529
|
+
}
|
|
530
|
+
const gap = bridgesWithoutCanonicalPartner();
|
|
531
|
+
console.log(`\n coverage: ${gap.length} catalog bridges have no canonical partner yet`);
|
|
532
|
+
console.log(` (fidelity: L0 dimensional · L1 scalar-AST · L2 field-equation; "=NN" = restatesBridge)`);
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
// ── recover (bridge↔canonical linkage; the F4 circularity guard) ──────────
|
|
536
|
+
function recoverCmd() {
|
|
537
|
+
const all = scanLinkages();
|
|
538
|
+
const by = (c) => all.filter((r) => r.classification === c);
|
|
539
|
+
const restates = by('restates-canonical'), recovers = by('recovers'), dimOnly = by('dimensional-only');
|
|
540
|
+
console.log('\nBridge↔canonical recovery — validating bridges against standard physics');
|
|
541
|
+
console.log('⚠ structural match is "same relation UP TO a dimensionless factor"; that factor');
|
|
542
|
+
console.log(' may itself be physically substantive (e.g. ⟨e^-βW⟩). A review surface.\n');
|
|
543
|
+
console.log(` ${all.length} non-unrelated links → ${restates.length} restates-canonical ` +
|
|
544
|
+
`· ${recovers.length} recovers · ${dimOnly.length} dimensional-only\n`);
|
|
545
|
+
if (restates.length) {
|
|
546
|
+
console.log(' RESTATES-CANONICAL (the bridge IS the canonical law — F4: NOT a discovery):');
|
|
547
|
+
for (const r of restates) {
|
|
548
|
+
const rec = r.recovery && r.recovery.tested ? ` (recovery exact, err ${r.recovery.maxRelErr.toExponential(0)})` : '';
|
|
549
|
+
console.log(` ${r.canonicalId.padEnd(26)} ≡ bridge ${r.bridgeId}${rec}`);
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
if (recovers.length) {
|
|
553
|
+
console.log('\n RECOVERS (undeclared structural correspondence — worth a physicist\'s look):');
|
|
554
|
+
for (const r of recovers) {
|
|
555
|
+
console.log(` ${r.canonicalId.padEnd(26)} ~ bridge ${r.bridgeId} (same form up to a dimensionless factor)`);
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
console.log(`\n (${dimOnly.length} dimensional-only: same dimension, different form. Run \`upt canonical\` for the registry.)`);
|
|
559
|
+
}
|
|
560
|
+
|
|
484
561
|
// ── dispatch ──────────────────────────────────────────────────────────────
|
|
485
562
|
const [cmd, ...rest] = process.argv.slice(2);
|
|
486
563
|
switch (cmd) {
|
|
@@ -493,6 +570,8 @@ switch (cmd) {
|
|
|
493
570
|
case 'discover': case 'discovery': discoverCmd(); break;
|
|
494
571
|
case 'connectors': case 'orphans': connectorsCmd(); break;
|
|
495
572
|
case 'coverage': case 'grounding': coverageCmd(); break;
|
|
573
|
+
case 'canonical': case 'laws': canonicalCmd(); break;
|
|
574
|
+
case 'recover': case 'recovery': case 'validate': recoverCmd(); break;
|
|
496
575
|
case 'symbolic': case 'compose-symbolic': await symbolicCmd(rest); break;
|
|
497
576
|
case 'eval': case 'calc': await evalCmd(rest); break;
|
|
498
577
|
case 'derive': case 'dim': await derive(rest); break;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical (textbook) physics equations — the ground-truth L-layer of the
|
|
3
|
+
* universal tensor (Π = L + B + E). A `CanonicalEquation` is the *answer key*
|
|
4
|
+
* that bridge equations (the B-layer) are validated against; it is NOT a
|
|
5
|
+
* speculative claim.
|
|
6
|
+
*
|
|
7
|
+
* Entries carry whichever FIDELITY LEVELS they can:
|
|
8
|
+
* - L0 (mandatory) — `dimensional`: target dim + governing vars (+ monomial
|
|
9
|
+
* when dimensionally determined). Reproduced by the Buckingham-π engine.
|
|
10
|
+
* - L1 (optional) — `scalarAst`: an `ExprNode` RHS, validated dimensionally.
|
|
11
|
+
* - L2 (optional) — `fieldEquation`: a tensor/PDE predicate node.
|
|
12
|
+
*
|
|
13
|
+
* Epistemic honesty (review finding F1): an L0-only entry must never read as
|
|
14
|
+
* more than "dimensionally consistent". `epistemicStatus` is the highest claim
|
|
15
|
+
* the entry supports; `freeDimensionlessGroups > 0` means dimensions cannot pin
|
|
16
|
+
* the form. Consumers must not use an entry above its `epistemicStatus`.
|
|
17
|
+
*
|
|
18
|
+
* See `docs/planning/Canonical-Equation-Registry-A-Design.md`.
|
|
19
|
+
*
|
|
20
|
+
* @module canonical/canonical-equation
|
|
21
|
+
*/
|
|
22
|
+
import type { ExprNode } from '../dimensional/validator.js';
|
|
23
|
+
import type { DimensionalVariable } from '../dimensional/buckingham.js';
|
|
24
|
+
import type { TensorIndices } from '../core/types.js';
|
|
25
|
+
import type { EinsteinFieldEquationNode } from '../dimensional/einstein-equation.js';
|
|
26
|
+
/** Physics domain — indexes the registry and (later) the discovery kind filter. */
|
|
27
|
+
export type CanonicalDomain = 'mechanics' | 'gravitation' | 'general-relativity' | 'cosmology' | 'electromagnetism' | 'quantum' | 'thermodynamics' | 'statistical' | 'information';
|
|
28
|
+
/**
|
|
29
|
+
* The strongest claim an entry supports:
|
|
30
|
+
* - `dimensional` — only the dimensional signature (L0).
|
|
31
|
+
* - `scalar-up-to-constant`— the algebraic form, leading constant aside (L1).
|
|
32
|
+
* - `fully-quantitative` — the complete relation incl. the constant.
|
|
33
|
+
*/
|
|
34
|
+
export type EpistemicStatus = 'dimensional' | 'scalar-up-to-constant' | 'fully-quantitative';
|
|
35
|
+
/** A field-equation predicate node (L2). Concrete node kinds live in the
|
|
36
|
+
* dimensional layer; widen this union as Maxwell/Klein–Gordon nodes land. */
|
|
37
|
+
export type FieldEquationNode = EinsteinFieldEquationNode;
|
|
38
|
+
/** Disambiguators for forms that share a dimensional signature (finding F3). */
|
|
39
|
+
export interface CanonicalForms {
|
|
40
|
+
/** Bekenstein–Hawking depends on horizon AREA, not radius. */
|
|
41
|
+
readonly areaOrRadius?: 'area' | 'radius';
|
|
42
|
+
/** Landauer uses the NATURAL log. */
|
|
43
|
+
readonly logBase?: 'e' | '2' | '10';
|
|
44
|
+
/** Stefan–Boltzmann `j=σT⁴` is a FLUX; luminosity `L=σAT⁴` changes σ. */
|
|
45
|
+
readonly quantityKind?: 'flux' | 'power' | 'energy';
|
|
46
|
+
}
|
|
47
|
+
/** A canonical (textbook) physics equation. */
|
|
48
|
+
export interface CanonicalEquation {
|
|
49
|
+
/** Stable id, e.g. 'CE-newton-gravitation'. */
|
|
50
|
+
readonly id: string;
|
|
51
|
+
readonly name: string;
|
|
52
|
+
readonly domain: CanonicalDomain;
|
|
53
|
+
/** LaTeX rendering (display only). */
|
|
54
|
+
readonly formula_latex: string;
|
|
55
|
+
readonly epistemicStatus: EpistemicStatus;
|
|
56
|
+
/** 0 ⇒ the L0 monomial is fully determined; ≥1 ⇒ dimensions can't pin it. */
|
|
57
|
+
readonly freeDimensionlessGroups: number;
|
|
58
|
+
readonly dimensional: {
|
|
59
|
+
readonly target: DimensionalVariable;
|
|
60
|
+
readonly governing: readonly DimensionalVariable[];
|
|
61
|
+
/** Textbook monomial exponents, or null when there are free groups. */
|
|
62
|
+
readonly monomial: Readonly<Record<string, number>> | null;
|
|
63
|
+
};
|
|
64
|
+
readonly scalarAst?: ExprNode;
|
|
65
|
+
readonly fieldEquation?: FieldEquationNode;
|
|
66
|
+
readonly forms?: CanonicalForms;
|
|
67
|
+
/** L-layer cell coordinates. */
|
|
68
|
+
readonly regime: TensorIndices;
|
|
69
|
+
/** Implicit regime assumptions (e.g. 'blackbody equilibrium'). */
|
|
70
|
+
readonly assumptions: readonly string[];
|
|
71
|
+
readonly references: readonly string[];
|
|
72
|
+
/** Bridges this law is the intended correspondence partner for (advisory;
|
|
73
|
+
* the check itself is Sub-project B). */
|
|
74
|
+
readonly partnerBridges: readonly string[];
|
|
75
|
+
/** Set when this law is LITERALLY a bridge's own relation (BH≡BE-21, …);
|
|
76
|
+
* Sub-project B uses it to discount the trivial X≡X match (finding F4). */
|
|
77
|
+
readonly restatesBridge?: string;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=canonical-equation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical-equation.d.ts","sourceRoot":"","sources":["../../src/canonical/canonical-equation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAErF,mFAAmF;AACnF,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,aAAa,GACb,oBAAoB,GACpB,WAAW,GACX,kBAAkB,GAClB,SAAS,GACT,gBAAgB,GAChB,aAAa,GACb,aAAa,CAAC;AAElB;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GACvB,aAAa,GACb,uBAAuB,GACvB,oBAAoB,CAAC;AAEzB;8EAC8E;AAC9E,MAAM,MAAM,iBAAiB,GAAG,yBAAyB,CAAC;AAE1D,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1C,qCAAqC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;IACpC,yEAAyE;IACzE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;CACrD;AAED,+CAA+C;AAC/C,MAAM,WAAW,iBAAiB;IAChC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,sCAAsC;IACtC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAG/B,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,6EAA6E;IAC7E,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IAGzC,QAAQ,CAAC,WAAW,EAAE;QACpB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;QACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;QACnD,uEAAuE;QACvE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;KAC5D,CAAC;IAEF,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAG3C,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC;IAGhC,gCAAgC;IAChC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC;8CAC0C;IAC1C,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C;gFAC4E;IAC5E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical-equation.js","sourceRoot":"","sources":["../../src/canonical/canonical-equation.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { DimensionalVariable } from '../dimensional/buckingham.js';
|
|
2
|
+
/** L0 dimensional fields derived from the engine. */
|
|
3
|
+
export declare function dimensionalFields(target: DimensionalVariable, governing: readonly DimensionalVariable[]): {
|
|
4
|
+
monomial: Record<string, number> | null;
|
|
5
|
+
freeDimensionlessGroups: number;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=dimensional-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dimensional-fields.d.ts","sourceRoot":"","sources":["../../src/canonical/dimensional-fields.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExE,qDAAqD;AACrD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,SAAS,mBAAmB,EAAE,GACxC;IACD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACxC,uBAAuB,EAAE,MAAM,CAAC;CACjC,CAaA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute the L0 dimensional fields of a canonical entry FROM the Buckingham-π
|
|
3
|
+
* engine, so `monomial` and `freeDimensionlessGroups` are always mutually
|
|
4
|
+
* consistent and never hand-asserted (HonestClaude).
|
|
5
|
+
*
|
|
6
|
+
* The two are consistent by construction: the target monomial is unique iff the
|
|
7
|
+
* governing set has no free dimensionless group, so
|
|
8
|
+
* `monomial !== null ⟺ freeDimensionlessGroups === 0`.
|
|
9
|
+
* Equations whose form dimensions CANNOT pin (Newton `F=Gm₁m₂/r²` — a free
|
|
10
|
+
* mass-ratio group; Bekenstein–Hawking — a free `c³A/Għ` group) get
|
|
11
|
+
* `monomial: null, freeDimensionlessGroups ≥ 1`; their scalar-AST (L1) carries
|
|
12
|
+
* the form dimensions can't.
|
|
13
|
+
*
|
|
14
|
+
* @module canonical/dimensional-fields
|
|
15
|
+
*/
|
|
16
|
+
import { dimensionallyDetermines, buckinghamPi, } from '../dimensional/buckingham.js';
|
|
17
|
+
/** L0 dimensional fields derived from the engine. */
|
|
18
|
+
export function dimensionalFields(target, governing) {
|
|
19
|
+
const det = dimensionallyDetermines(target, governing);
|
|
20
|
+
const gPi = governing.length > 0 ? buckinghamPi([...governing]).piGroupCount : 0;
|
|
21
|
+
// Keep the invariant `monomial !== null ⟺ freeDimensionlessGroups === 0`
|
|
22
|
+
// UNCONDITIONALLY true: when the target is not in the governing span,
|
|
23
|
+
// `determined` is false yet `gPi` may be 0 — force ≥1 so null monomial always
|
|
24
|
+
// reports a free group.
|
|
25
|
+
const freeDimensionlessGroups = det.determined ? gPi : Math.max(1, gPi);
|
|
26
|
+
return {
|
|
27
|
+
monomial: det.determined ? { ...det.monomial } : null,
|
|
28
|
+
freeDimensionlessGroups,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=dimensional-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dimensional-fields.js","sourceRoot":"","sources":["../../src/canonical/dimensional-fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,uBAAuB,EACvB,YAAY,GACb,MAAM,8BAA8B,CAAC;AAGtC,qDAAqD;AACrD,MAAM,UAAU,iBAAiB,CAC/B,MAA2B,EAC3B,SAAyC;IAKzC,MAAM,GAAG,GAAG,uBAAuB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvD,MAAM,GAAG,GACP,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,yEAAyE;IACzE,sEAAsE;IACtE,8EAA8E;IAC9E,wBAAwB;IACxB,MAAM,uBAAuB,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxE,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,QAAS,EAAE,CAAC,CAAC,CAAC,IAAI;QACtD,uBAAuB;KACxB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared builders for L1 (scalar-AST) canonical entries. Keeps the entry files
|
|
3
|
+
* declarative: `op`/`pow` assemble the `ExprNode`, and `l1` derives the L0
|
|
4
|
+
* fields from the Buckingham engine so `monomial` and `freeDimensionlessGroups`
|
|
5
|
+
* are always consistent.
|
|
6
|
+
*
|
|
7
|
+
* @module canonical/entries/_l1-build
|
|
8
|
+
*/
|
|
9
|
+
import type { CanonicalEquation } from '../canonical-equation.js';
|
|
10
|
+
import type { ExprNode } from '../../dimensional/validator.js';
|
|
11
|
+
import type { Dimension } from '../../dimensional/types.js';
|
|
12
|
+
import type { DimensionalVariable } from '../../dimensional/buckingham.js';
|
|
13
|
+
/** Dimension builder. Arg order is (L, M, T, **I**, **Θ**) — note I precedes Θ. */
|
|
14
|
+
export declare const dim: (L?: number, M?: number, T?: number, I?: number, Theta?: number) => Dimension;
|
|
15
|
+
export declare const op: (o: "+" | "-" | "*" | "/" | "^", args: ExprNode[]) => ExprNode;
|
|
16
|
+
/** `base` raised to the numeric-literal power `n` (a dimensionless exponent). */
|
|
17
|
+
export declare const pow: (base: ExprNode, n: string) => ExprNode;
|
|
18
|
+
/** Everything an L1 entry declares except the engine-derived L0 fields. */
|
|
19
|
+
export type L1Rest = Omit<CanonicalEquation, 'freeDimensionlessGroups' | 'dimensional'>;
|
|
20
|
+
/** Build an L1 entry; L0 fields are derived from the engine for consistency. */
|
|
21
|
+
export declare const l1: (target: DimensionalVariable, governing: readonly DimensionalVariable[], rest: L1Rest) => CanonicalEquation;
|
|
22
|
+
//# sourceMappingURL=_l1-build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_l1-build.d.ts","sourceRoot":"","sources":["../../../src/canonical/entries/_l1-build.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAK3E,mFAAmF;AACnF,eAAO,MAAM,GAAG,GAAI,UAAK,EAAE,UAAK,EAAE,UAAK,EAAE,UAAK,EAAE,cAAS,KAAG,SAQ1D,CAAC;AAEH,eAAO,MAAM,EAAE,GACb,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAC9B,MAAM,QAAQ,EAAE,KACf,QAAyC,CAAC;AAE7C,iFAAiF;AACjF,eAAO,MAAM,GAAG,GAAI,MAAM,QAAQ,EAAE,GAAG,MAAM,KAAG,QACR,CAAC;AAEzC,2EAA2E;AAC3E,MAAM,MAAM,MAAM,GAAG,IAAI,CACvB,iBAAiB,EACjB,yBAAyB,GAAG,aAAa,CAC1C,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,EAAE,GACb,QAAQ,mBAAmB,EAC3B,WAAW,SAAS,mBAAmB,EAAE,EACzC,MAAM,MAAM,KACX,iBAUF,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DIMENSIONLESS } from '../../dimensional/types.js';
|
|
2
|
+
import { sym } from '../../bridges/equations/_be-helpers.js';
|
|
3
|
+
import { dimensionalFields } from '../dimensional-fields.js';
|
|
4
|
+
/** Dimension builder. Arg order is (L, M, T, **I**, **Θ**) — note I precedes Θ. */
|
|
5
|
+
export const dim = (L = 0, M = 0, T = 0, I = 0, Theta = 0) => ({
|
|
6
|
+
L,
|
|
7
|
+
M,
|
|
8
|
+
T,
|
|
9
|
+
I,
|
|
10
|
+
Theta,
|
|
11
|
+
N: 0,
|
|
12
|
+
J: 0,
|
|
13
|
+
});
|
|
14
|
+
export const op = (o, args) => ({ kind: 'op', op: o, args });
|
|
15
|
+
/** `base` raised to the numeric-literal power `n` (a dimensionless exponent). */
|
|
16
|
+
export const pow = (base, n) => op('^', [base, sym(n, DIMENSIONLESS)]);
|
|
17
|
+
/** Build an L1 entry; L0 fields are derived from the engine for consistency. */
|
|
18
|
+
export const l1 = (target, governing, rest) => {
|
|
19
|
+
const { monomial, freeDimensionlessGroups } = dimensionalFields(target, governing);
|
|
20
|
+
return {
|
|
21
|
+
...rest,
|
|
22
|
+
freeDimensionlessGroups,
|
|
23
|
+
dimensional: { target, governing, monomial },
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=_l1-build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_l1-build.js","sourceRoot":"","sources":["../../../src/canonical/entries/_l1-build.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,MAAM,wCAAwC,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,mFAAmF;AACnF,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAa,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;IACD,KAAK;IACL,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;CACL,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,EAAE,GAAG,CAChB,CAA8B,EAC9B,IAAgB,EACN,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAE7C,iFAAiF;AACjF,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,IAAc,EAAE,CAAS,EAAY,EAAE,CACzD,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AAQzC,gFAAgF;AAChF,MAAM,CAAC,MAAM,EAAE,GAAG,CAChB,MAA2B,EAC3B,SAAyC,EACzC,IAAY,EACO,EAAE;IACrB,MAAM,EAAE,QAAQ,EAAE,uBAAuB,EAAE,GAAG,iBAAiB,CAC7D,MAAM,EACN,SAAS,CACV,CAAC;IACF,OAAO;QACL,GAAG,IAAI;QACP,uBAAuB;QACvB,WAAW,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE;KAC7C,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* L0 (dimensional) canonical entries — the 9 textbook equations recovered by
|
|
3
|
+
* the Buckingham-π engine (promoted from the dimensional-derivation benchmark).
|
|
4
|
+
* Dimensions give the monomial exponents only, never the leading constant, so
|
|
5
|
+
* every entry here is `epistemicStatus: 'dimensional'`.
|
|
6
|
+
*
|
|
7
|
+
* @module canonical/entries/dimensional-classics
|
|
8
|
+
*/
|
|
9
|
+
import type { CanonicalEquation } from '../canonical-equation.js';
|
|
10
|
+
export declare const DIMENSIONAL_CLASSICS: readonly CanonicalEquation[];
|
|
11
|
+
//# sourceMappingURL=dimensional-classics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dimensional-classics.d.ts","sourceRoot":"","sources":["../../../src/canonical/entries/dimensional-classics.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAiDlE,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EA6K5D,CAAC"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { LENGTH, TIME, MASS, VELOCITY, ACCELERATION, FORCE, ACTION, ENTROPY, TEMPERATURE, } from '../../dimensional/types.js';
|
|
2
|
+
/** Local builder for composite dims not exported as named constants. */
|
|
3
|
+
const dim = (L = 0, M = 0, T = 0, I = 0, Theta = 0) => ({
|
|
4
|
+
L,
|
|
5
|
+
M,
|
|
6
|
+
T,
|
|
7
|
+
I,
|
|
8
|
+
Theta,
|
|
9
|
+
N: 0,
|
|
10
|
+
J: 0,
|
|
11
|
+
});
|
|
12
|
+
const G = dim(3, -1, -2); // Newton's constant [L³ M⁻¹ T⁻²]
|
|
13
|
+
const LIN_DENSITY = dim(-1, 1, 0); // mass per length [L⁻¹ M]
|
|
14
|
+
/** Shared shape for an L0 classic (no L1/L2, fully dimensionally determined). */
|
|
15
|
+
const l0 = (e) => ({
|
|
16
|
+
epistemicStatus: 'dimensional',
|
|
17
|
+
freeDimensionlessGroups: 0,
|
|
18
|
+
...e,
|
|
19
|
+
});
|
|
20
|
+
export const DIMENSIONAL_CLASSICS = [
|
|
21
|
+
l0({
|
|
22
|
+
id: 'CE-pendulum-period',
|
|
23
|
+
name: 'Pendulum period',
|
|
24
|
+
domain: 'mechanics',
|
|
25
|
+
formula_latex: 'T = 2\\pi\\sqrt{L/g}',
|
|
26
|
+
dimensional: {
|
|
27
|
+
target: { name: 'period', dim: TIME },
|
|
28
|
+
governing: [
|
|
29
|
+
{ name: 'length', dim: LENGTH },
|
|
30
|
+
{ name: 'gravity', dim: ACCELERATION },
|
|
31
|
+
],
|
|
32
|
+
monomial: { length: 0.5, gravity: -0.5 },
|
|
33
|
+
},
|
|
34
|
+
regime: { scale: 'classical', force: 'gravitational' },
|
|
35
|
+
assumptions: ['small-angle', 'point mass', 'rigid massless rod'],
|
|
36
|
+
references: ['Taylor, Classical Mechanics §1'],
|
|
37
|
+
partnerBridges: [],
|
|
38
|
+
}),
|
|
39
|
+
l0({
|
|
40
|
+
id: 'CE-kepler-third',
|
|
41
|
+
name: "Kepler's third law",
|
|
42
|
+
domain: 'gravitation',
|
|
43
|
+
formula_latex: 'T^2 = 4\\pi^2 a^3/(GM)',
|
|
44
|
+
dimensional: {
|
|
45
|
+
target: { name: 'period', dim: TIME },
|
|
46
|
+
governing: [
|
|
47
|
+
{ name: 'semi-major-axis', dim: LENGTH },
|
|
48
|
+
{ name: 'G', dim: G },
|
|
49
|
+
{ name: 'mass', dim: MASS },
|
|
50
|
+
],
|
|
51
|
+
monomial: { 'semi-major-axis': 1.5, G: -0.5, mass: -0.5 },
|
|
52
|
+
},
|
|
53
|
+
regime: { scale: 'classical', force: 'gravitational' },
|
|
54
|
+
assumptions: ['two-body', 'M ≫ m'],
|
|
55
|
+
references: ['Kepler 1619; any celestial-mechanics text'],
|
|
56
|
+
partnerBridges: [],
|
|
57
|
+
}),
|
|
58
|
+
l0({
|
|
59
|
+
id: 'CE-schwarzschild-radius',
|
|
60
|
+
name: 'Schwarzschild radius',
|
|
61
|
+
domain: 'general-relativity',
|
|
62
|
+
formula_latex: 'r_s = 2GM/c^2',
|
|
63
|
+
dimensional: {
|
|
64
|
+
target: { name: 'radius', dim: LENGTH },
|
|
65
|
+
governing: [
|
|
66
|
+
{ name: 'mass', dim: MASS },
|
|
67
|
+
{ name: 'G', dim: G },
|
|
68
|
+
{ name: 'c', dim: VELOCITY },
|
|
69
|
+
],
|
|
70
|
+
monomial: { mass: 1, G: 1, c: -2 },
|
|
71
|
+
},
|
|
72
|
+
regime: { force: 'gravitational' },
|
|
73
|
+
assumptions: ['static', 'spherically symmetric', 'vacuum'],
|
|
74
|
+
references: ['Schwarzschild 1916'],
|
|
75
|
+
partnerBridges: [],
|
|
76
|
+
}),
|
|
77
|
+
l0({
|
|
78
|
+
id: 'CE-string-wave-speed',
|
|
79
|
+
name: 'Wave speed on a string',
|
|
80
|
+
domain: 'mechanics',
|
|
81
|
+
formula_latex: 'v = \\sqrt{F/\\mu}',
|
|
82
|
+
dimensional: {
|
|
83
|
+
target: { name: 'speed', dim: VELOCITY },
|
|
84
|
+
governing: [
|
|
85
|
+
{ name: 'tension', dim: FORCE },
|
|
86
|
+
{ name: 'linear-density', dim: LIN_DENSITY },
|
|
87
|
+
],
|
|
88
|
+
monomial: { tension: 0.5, 'linear-density': -0.5 },
|
|
89
|
+
},
|
|
90
|
+
regime: { scale: 'classical' },
|
|
91
|
+
assumptions: ['ideal flexible string', 'small amplitude'],
|
|
92
|
+
references: ['Any waves/mechanics text'],
|
|
93
|
+
partnerBridges: [],
|
|
94
|
+
}),
|
|
95
|
+
l0({
|
|
96
|
+
id: 'CE-planck-length',
|
|
97
|
+
name: 'Planck length',
|
|
98
|
+
domain: 'quantum',
|
|
99
|
+
formula_latex: '\\ell_P = \\sqrt{\\hbar G/c^3}',
|
|
100
|
+
dimensional: {
|
|
101
|
+
target: { name: 'planck-length', dim: LENGTH },
|
|
102
|
+
governing: [
|
|
103
|
+
{ name: 'hbar', dim: ACTION },
|
|
104
|
+
{ name: 'G', dim: G },
|
|
105
|
+
{ name: 'c', dim: VELOCITY },
|
|
106
|
+
],
|
|
107
|
+
monomial: { hbar: 0.5, G: 0.5, c: -1.5 },
|
|
108
|
+
},
|
|
109
|
+
regime: { scale: 'quantum', force: 'gravitational' },
|
|
110
|
+
assumptions: [],
|
|
111
|
+
references: ['Planck 1899'],
|
|
112
|
+
partnerBridges: [],
|
|
113
|
+
}),
|
|
114
|
+
l0({
|
|
115
|
+
id: 'CE-planck-mass',
|
|
116
|
+
name: 'Planck mass',
|
|
117
|
+
domain: 'quantum',
|
|
118
|
+
formula_latex: 'm_P = \\sqrt{\\hbar c/G}',
|
|
119
|
+
dimensional: {
|
|
120
|
+
target: { name: 'planck-mass', dim: MASS },
|
|
121
|
+
governing: [
|
|
122
|
+
{ name: 'hbar', dim: ACTION },
|
|
123
|
+
{ name: 'c', dim: VELOCITY },
|
|
124
|
+
{ name: 'G', dim: G },
|
|
125
|
+
],
|
|
126
|
+
monomial: { hbar: 0.5, c: 0.5, G: -0.5 },
|
|
127
|
+
},
|
|
128
|
+
regime: { scale: 'quantum', force: 'gravitational' },
|
|
129
|
+
assumptions: [],
|
|
130
|
+
references: ['Planck 1899'],
|
|
131
|
+
partnerBridges: ['41'], // 41 = Swampland Distance Conjecture ([mass])
|
|
132
|
+
}),
|
|
133
|
+
l0({
|
|
134
|
+
id: 'CE-planck-time',
|
|
135
|
+
name: 'Planck time',
|
|
136
|
+
domain: 'quantum',
|
|
137
|
+
formula_latex: 't_P = \\sqrt{\\hbar G/c^5}',
|
|
138
|
+
dimensional: {
|
|
139
|
+
target: { name: 'planck-time', dim: TIME },
|
|
140
|
+
governing: [
|
|
141
|
+
{ name: 'hbar', dim: ACTION },
|
|
142
|
+
{ name: 'G', dim: G },
|
|
143
|
+
{ name: 'c', dim: VELOCITY },
|
|
144
|
+
],
|
|
145
|
+
monomial: { hbar: 0.5, G: 0.5, c: -2.5 },
|
|
146
|
+
},
|
|
147
|
+
regime: { scale: 'quantum', force: 'gravitational' },
|
|
148
|
+
assumptions: [],
|
|
149
|
+
references: ['Planck 1899'],
|
|
150
|
+
partnerBridges: [],
|
|
151
|
+
}),
|
|
152
|
+
l0({
|
|
153
|
+
id: 'CE-compton-wavelength',
|
|
154
|
+
name: 'Compton wavelength',
|
|
155
|
+
domain: 'quantum',
|
|
156
|
+
formula_latex: '\\lambda_C = \\hbar/(mc)',
|
|
157
|
+
dimensional: {
|
|
158
|
+
target: { name: 'compton-wavelength', dim: LENGTH },
|
|
159
|
+
governing: [
|
|
160
|
+
{ name: 'hbar', dim: ACTION },
|
|
161
|
+
{ name: 'mass', dim: MASS },
|
|
162
|
+
{ name: 'c', dim: VELOCITY },
|
|
163
|
+
],
|
|
164
|
+
monomial: { hbar: 1, mass: -1, c: -1 },
|
|
165
|
+
},
|
|
166
|
+
regime: { scale: 'quantum' },
|
|
167
|
+
assumptions: [],
|
|
168
|
+
references: ['Compton 1923'],
|
|
169
|
+
partnerBridges: [],
|
|
170
|
+
}),
|
|
171
|
+
l0({
|
|
172
|
+
id: 'CE-thermal-de-broglie',
|
|
173
|
+
name: 'Thermal de Broglie wavelength',
|
|
174
|
+
domain: 'statistical',
|
|
175
|
+
formula_latex: '\\lambda \\propto \\hbar/\\sqrt{m k_B T}',
|
|
176
|
+
dimensional: {
|
|
177
|
+
target: { name: 'thermal-wavelength', dim: LENGTH },
|
|
178
|
+
governing: [
|
|
179
|
+
{ name: 'hbar', dim: ACTION },
|
|
180
|
+
{ name: 'mass', dim: MASS },
|
|
181
|
+
{ name: 'boltzmann', dim: ENTROPY },
|
|
182
|
+
{ name: 'temperature', dim: TEMPERATURE },
|
|
183
|
+
],
|
|
184
|
+
monomial: { hbar: 1, mass: -0.5, boltzmann: -0.5, temperature: -0.5 },
|
|
185
|
+
},
|
|
186
|
+
regime: { scale: 'quantum' },
|
|
187
|
+
assumptions: ['non-relativistic', 'ideal gas'],
|
|
188
|
+
references: ['Any statistical-mechanics text'],
|
|
189
|
+
// 12 = Caldeira-Leggett dephasing length: same [length] target, a candidate
|
|
190
|
+
// correspondence — NOT a literal restatement, so no restatesBridge.
|
|
191
|
+
partnerBridges: ['12'],
|
|
192
|
+
}),
|
|
193
|
+
];
|
|
194
|
+
//# sourceMappingURL=dimensional-classics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dimensional-classics.js","sourceRoot":"","sources":["../../../src/canonical/entries/dimensional-classics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* L1 (scalar-AST) canonical entries — gravitation + thermodynamics. Each
|
|
3
|
+
* carries a dimensionally-validated `ExprNode` form; L0 fields are derived from
|
|
4
|
+
* the engine via `dimensionalFields`. Forms with a free dimensionless group
|
|
5
|
+
* (Newton, Bekenstein–Hawking) have `monomial: null` — the scalar-AST is what
|
|
6
|
+
* pins them, which is exactly the point of the L1 layer.
|
|
7
|
+
*
|
|
8
|
+
* @module canonical/entries/l1-gravity-thermo
|
|
9
|
+
*/
|
|
10
|
+
import type { CanonicalEquation } from '../canonical-equation.js';
|
|
11
|
+
export declare const L1_GRAVITY_THERMO: readonly CanonicalEquation[];
|
|
12
|
+
//# sourceMappingURL=l1-gravity-thermo.d.ts.map
|