universal-physics-tensor 0.20.0 → 0.22.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/bin/upt.mjs +75 -4
- package/dist/bridges/equations/be-26-dna-tunneling.d.ts +15 -5
- package/dist/bridges/equations/be-26-dna-tunneling.d.ts.map +1 -1
- package/dist/bridges/equations/be-26-dna-tunneling.js +26 -7
- package/dist/bridges/equations/be-26-dna-tunneling.js.map +1 -1
- 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 +128 -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 +114 -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 +25 -0
- package/dist/canonical/normal-form.d.ts.map +1 -0
- package/dist/canonical/normal-form.js +107 -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 +40 -6
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +56 -7
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/representative-values.d.ts +46 -0
- package/dist/composition/representative-values.d.ts.map +1 -0
- package/dist/composition/representative-values.js +69 -0
- package/dist/composition/representative-values.js.map +1 -0
- 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/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,19 @@ 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
|
+
console.log(` ${(r.a + ' ≟ ' + r.b).padEnd(52)} ~${r.ordersApart.toFixed(1)} orders apart`);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
390
416
|
if (contra.length) {
|
|
391
417
|
console.log(`\n CONTRADICTORY (the identification falsifies itself numerically):`);
|
|
392
418
|
for (const r of contra) {
|
|
393
419
|
console.log(` ${(r.a + ' ≟ ' + r.b).padEnd(52)} disagreeing node(s): ${r.inconsistentNodes.join(', ')}`);
|
|
394
420
|
}
|
|
395
421
|
}
|
|
396
|
-
console.log('\n (
|
|
422
|
+
console.log('\n (magnitude gate abstains where a representative value is unknown; weak priors on dimension.)');
|
|
397
423
|
}
|
|
398
424
|
|
|
399
425
|
// ── coverage (empirical-spine audit) ──────────────────────────────────────
|
|
@@ -481,6 +507,49 @@ function connectorsCmd() {
|
|
|
481
507
|
console.log(' docs/research/Orphan-Connector-Analysis.md and proposed in spec Part-IX §9.');
|
|
482
508
|
}
|
|
483
509
|
|
|
510
|
+
// ── canonical (the standard-physics L-layer registry) ─────────────────────
|
|
511
|
+
function canonicalCmd() {
|
|
512
|
+
const fidelity = (e) => (e.fieldEquation ? 'L2' : e.scalarAst ? 'L1' : 'L0');
|
|
513
|
+
console.log('\nCanonical-equation registry — the standard-physics L-layer (Π = L + B + E)');
|
|
514
|
+
console.log('the textbook "answer key" bridge equations are validated against.\n');
|
|
515
|
+
console.log(` ${CANONICAL_EQUATIONS.length} entries:\n`);
|
|
516
|
+
console.log(' fid domain id partners');
|
|
517
|
+
console.log(' ─────────────────────────────────────────────────────────────────');
|
|
518
|
+
for (const e of CANONICAL_EQUATIONS) {
|
|
519
|
+
const partners = [...e.partnerBridges, ...(e.restatesBridge ? [`=${e.restatesBridge}`] : [])].join(',') || '—';
|
|
520
|
+
console.log(` ${fidelity(e).padEnd(3)} ${e.domain.padEnd(19)} ${e.id.padEnd(24)} ${partners}`);
|
|
521
|
+
}
|
|
522
|
+
const gap = bridgesWithoutCanonicalPartner();
|
|
523
|
+
console.log(`\n coverage: ${gap.length} catalog bridges have no canonical partner yet`);
|
|
524
|
+
console.log(` (fidelity: L0 dimensional · L1 scalar-AST · L2 field-equation; "=NN" = restatesBridge)`);
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
// ── recover (bridge↔canonical linkage; the F4 circularity guard) ──────────
|
|
528
|
+
function recoverCmd() {
|
|
529
|
+
const all = scanLinkages();
|
|
530
|
+
const by = (c) => all.filter((r) => r.classification === c);
|
|
531
|
+
const restates = by('restates-canonical'), recovers = by('recovers'), dimOnly = by('dimensional-only');
|
|
532
|
+
console.log('\nBridge↔canonical recovery — validating bridges against standard physics');
|
|
533
|
+
console.log('⚠ structural match is "same relation UP TO a dimensionless factor"; that factor');
|
|
534
|
+
console.log(' may itself be physically substantive (e.g. ⟨e^-βW⟩). A review surface.\n');
|
|
535
|
+
console.log(` ${all.length} non-unrelated links → ${restates.length} restates-canonical ` +
|
|
536
|
+
`· ${recovers.length} recovers · ${dimOnly.length} dimensional-only\n`);
|
|
537
|
+
if (restates.length) {
|
|
538
|
+
console.log(' RESTATES-CANONICAL (the bridge IS the canonical law — F4: NOT a discovery):');
|
|
539
|
+
for (const r of restates) {
|
|
540
|
+
const rec = r.recovery && r.recovery.tested ? ` (recovery exact, err ${r.recovery.maxRelErr.toExponential(0)})` : '';
|
|
541
|
+
console.log(` ${r.canonicalId.padEnd(26)} ≡ bridge ${r.bridgeId}${rec}`);
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
if (recovers.length) {
|
|
545
|
+
console.log('\n RECOVERS (undeclared structural correspondence — worth a physicist\'s look):');
|
|
546
|
+
for (const r of recovers) {
|
|
547
|
+
console.log(` ${r.canonicalId.padEnd(26)} ~ bridge ${r.bridgeId} (same form up to a dimensionless factor)`);
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
console.log(`\n (${dimOnly.length} dimensional-only: same dimension, different form. Run \`upt canonical\` for the registry.)`);
|
|
551
|
+
}
|
|
552
|
+
|
|
484
553
|
// ── dispatch ──────────────────────────────────────────────────────────────
|
|
485
554
|
const [cmd, ...rest] = process.argv.slice(2);
|
|
486
555
|
switch (cmd) {
|
|
@@ -493,6 +562,8 @@ switch (cmd) {
|
|
|
493
562
|
case 'discover': case 'discovery': discoverCmd(); break;
|
|
494
563
|
case 'connectors': case 'orphans': connectorsCmd(); break;
|
|
495
564
|
case 'coverage': case 'grounding': coverageCmd(); break;
|
|
565
|
+
case 'canonical': case 'laws': canonicalCmd(); break;
|
|
566
|
+
case 'recover': case 'recovery': case 'validate': recoverCmd(); break;
|
|
496
567
|
case 'symbolic': case 'compose-symbolic': await symbolicCmd(rest); break;
|
|
497
568
|
case 'eval': case 'calc': await evalCmd(rest); break;
|
|
498
569
|
case 'derive': case 'dim': await derive(rest); break;
|
|
@@ -35,14 +35,24 @@
|
|
|
35
35
|
*/
|
|
36
36
|
import type { ExprNode, DimensionValidationReport } from '../../dimensional/validator.js';
|
|
37
37
|
/**
|
|
38
|
-
* Lemma AST: the WKB exponent (2/ℏ) · ∫ √(2m(V−E)) dx,
|
|
39
|
-
*
|
|
38
|
+
* Lemma AST: the WKB exponent (2/ℏ) · ∫_{x₁}^{x₂} √(2m(V−E)) dx, dimensionless.
|
|
39
|
+
*
|
|
40
|
+
* v0.21: the integral carries explicit barrier-endpoint bounds x₁, x₂ (a definite
|
|
41
|
+
* integral) — faithful to this bridge's rectangular-barrier model, since the
|
|
42
|
+
* integrand √(2m(V−E)) is constant in x (V_minus_E is a constant ENERGY symbol,
|
|
43
|
+
* not V(x)), so 16-pt Gauss–Legendre is EXACT and equals √(2m(V−E))·(x₂−x₁).
|
|
44
|
+
* This exposes m, V_minus_E, x₁, x₂ to differentiation (Adam+Eve GREEN). Domain
|
|
45
|
+
* guards (caller's): V_minus_E ≥ 0, m > 0, x₂ ≥ x₁.
|
|
40
46
|
*/
|
|
41
47
|
export declare const DNA_TUNNELING_WKB_ARG: ExprNode;
|
|
42
48
|
/**
|
|
43
|
-
* RHS of the WKB tunneling rate: `ν₀ ·
|
|
44
|
-
*
|
|
45
|
-
*
|
|
49
|
+
* RHS of the WKB tunneling rate: `ν₀ · exp(−WKB) · f`. The Gamow exponential is
|
|
50
|
+
* encoded faithfully (v0.21) as `transcendental(exp, −1 · DNA_TUNNELING_WKB_ARG)`
|
|
51
|
+
* — a definite integral under the exp — so m, V_minus_E, and the barrier
|
|
52
|
+
* endpoints x₁, x₂ are visible to differentiation. `exp` of the DIMENSIONLESS
|
|
53
|
+
* WKB exponent is DIMENSIONLESS, so the round-trip dimensional_signature
|
|
54
|
+
* ([frequency]) is unchanged from the former symbol stub. The f(T, pH, EM)
|
|
55
|
+
* prefactor remains an opaque interpolation stub (no closed form).
|
|
46
56
|
*/
|
|
47
57
|
export declare const DNA_TUNNELING_RHS: ExprNode;
|
|
48
58
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"be-26-dna-tunneling.d.ts","sourceRoot":"","sources":["../../../src/bridges/equations/be-26-dna-tunneling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAY1F
|
|
1
|
+
{"version":3,"file":"be-26-dna-tunneling.d.ts","sourceRoot":"","sources":["../../../src/bridges/equations/be-26-dna-tunneling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAY1F;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAkCnC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAc/B,CAAC;AAOF;;GAEG;AACH,UAAU,kBAAkB;IAC1B,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,CAAC,EAAE,MAAM,CAAC;IACV,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAkBtE;AAID;;;GAGG;AACH,gBAAgB;AAChB,wBAAgB,8BAA8B,IAAI,yBAAyB,CAE1E"}
|
|
@@ -38,8 +38,14 @@ import { hbar as DIM_hbar } from '../../dimensional/constants.js';
|
|
|
38
38
|
import { PhysicalConstants } from '../../core/types.js';
|
|
39
39
|
import { sym, validateFiniteInputs, validateBEDimensions } from './_be-helpers.js';
|
|
40
40
|
/**
|
|
41
|
-
* Lemma AST: the WKB exponent (2/ℏ) · ∫ √(2m(V−E)) dx,
|
|
42
|
-
*
|
|
41
|
+
* Lemma AST: the WKB exponent (2/ℏ) · ∫_{x₁}^{x₂} √(2m(V−E)) dx, dimensionless.
|
|
42
|
+
*
|
|
43
|
+
* v0.21: the integral carries explicit barrier-endpoint bounds x₁, x₂ (a definite
|
|
44
|
+
* integral) — faithful to this bridge's rectangular-barrier model, since the
|
|
45
|
+
* integrand √(2m(V−E)) is constant in x (V_minus_E is a constant ENERGY symbol,
|
|
46
|
+
* not V(x)), so 16-pt Gauss–Legendre is EXACT and equals √(2m(V−E))·(x₂−x₁).
|
|
47
|
+
* This exposes m, V_minus_E, x₁, x₂ to differentiation (Adam+Eve GREEN). Domain
|
|
48
|
+
* guards (caller's): V_minus_E ≥ 0, m > 0, x₂ ≥ x₁.
|
|
43
49
|
*/
|
|
44
50
|
export const DNA_TUNNELING_WKB_ARG = {
|
|
45
51
|
kind: 'op', op: '*',
|
|
@@ -53,9 +59,11 @@ export const DNA_TUNNELING_WKB_ARG = {
|
|
|
53
59
|
],
|
|
54
60
|
},
|
|
55
61
|
{
|
|
56
|
-
// ∫ √(2m(V−E)) dx
|
|
62
|
+
// ∫_{x₁}^{x₂} √(2m(V−E)) dx
|
|
57
63
|
kind: 'integral',
|
|
58
64
|
over: sym('x', LENGTH),
|
|
65
|
+
lower: sym('x_1', LENGTH),
|
|
66
|
+
upper: sym('x_2', LENGTH),
|
|
59
67
|
integrand: {
|
|
60
68
|
// √(2m(V−E)) = (2m(V−E))^{1/2}
|
|
61
69
|
kind: 'op', op: '^',
|
|
@@ -75,15 +83,26 @@ export const DNA_TUNNELING_WKB_ARG = {
|
|
|
75
83
|
],
|
|
76
84
|
};
|
|
77
85
|
/**
|
|
78
|
-
* RHS of the WKB tunneling rate: `ν₀ ·
|
|
79
|
-
*
|
|
80
|
-
*
|
|
86
|
+
* RHS of the WKB tunneling rate: `ν₀ · exp(−WKB) · f`. The Gamow exponential is
|
|
87
|
+
* encoded faithfully (v0.21) as `transcendental(exp, −1 · DNA_TUNNELING_WKB_ARG)`
|
|
88
|
+
* — a definite integral under the exp — so m, V_minus_E, and the barrier
|
|
89
|
+
* endpoints x₁, x₂ are visible to differentiation. `exp` of the DIMENSIONLESS
|
|
90
|
+
* WKB exponent is DIMENSIONLESS, so the round-trip dimensional_signature
|
|
91
|
+
* ([frequency]) is unchanged from the former symbol stub. The f(T, pH, EM)
|
|
92
|
+
* prefactor remains an opaque interpolation stub (no closed form).
|
|
81
93
|
*/
|
|
82
94
|
export const DNA_TUNNELING_RHS = {
|
|
83
95
|
kind: 'op', op: '*',
|
|
84
96
|
args: [
|
|
85
97
|
sym('nu_0', FREQUENCY),
|
|
86
|
-
|
|
98
|
+
{
|
|
99
|
+
kind: 'transcendental',
|
|
100
|
+
fn: 'exp',
|
|
101
|
+
arg: {
|
|
102
|
+
kind: 'op', op: '*',
|
|
103
|
+
args: [sym('-1', DIMENSIONLESS), DNA_TUNNELING_WKB_ARG],
|
|
104
|
+
},
|
|
105
|
+
},
|
|
87
106
|
sym('f(T,pH,EM)', DIMENSIONLESS),
|
|
88
107
|
],
|
|
89
108
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"be-26-dna-tunneling.js","sourceRoot":"","sources":["../../../src/bridges/equations/be-26-dna-tunneling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,EACL,aAAa,EACb,SAAS,EACT,IAAI,EACJ,MAAM,EACN,MAAM,GACP,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAEnF
|
|
1
|
+
{"version":3,"file":"be-26-dna-tunneling.js","sourceRoot":"","sources":["../../../src/bridges/equations/be-26-dna-tunneling.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|