universal-physics-tensor 0.46.0 → 0.47.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.
Files changed (125) hide show
  1. package/README.md +61 -43
  2. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
  3. package/dist/atlas/diffusion/bridges-closure.js +34 -8
  4. package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
  5. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
  6. package/dist/atlas/oscillators/bridges-exact.js +6 -3
  7. package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
  8. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
  9. package/dist/atlas/oscillators/bridges-limits.js +13 -1
  10. package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
  11. package/dist/atlas/types.d.ts +18 -1
  12. package/dist/atlas/types.d.ts.map +1 -1
  13. package/dist/atlas/types.js.map +1 -1
  14. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
  15. package/dist/atlas/waves/bridges-closure.js +7 -4
  16. package/dist/atlas/waves/bridges-closure.js.map +1 -1
  17. package/dist/atlas/waves/bridges.d.ts.map +1 -1
  18. package/dist/atlas/waves/bridges.js +2 -1
  19. package/dist/atlas/waves/bridges.js.map +1 -1
  20. package/dist/bridges/be51-lensing-confrontation.d.ts.map +1 -1
  21. package/dist/bridges/be51-lensing-confrontation.js +5 -3
  22. package/dist/bridges/be51-lensing-confrontation.js.map +1 -1
  23. package/dist/bridges/be52-mercury-confrontation.d.ts.map +1 -1
  24. package/dist/bridges/be52-mercury-confrontation.js +4 -1
  25. package/dist/bridges/be52-mercury-confrontation.js.map +1 -1
  26. package/dist/bridges/bridge-equations.d.ts +1 -2
  27. package/dist/bridges/bridge-equations.d.ts.map +1 -1
  28. package/dist/bridges/bridge-equations.js +1 -2
  29. package/dist/bridges/bridge-equations.js.map +1 -1
  30. package/dist/bridges/confrontations.d.ts.map +1 -1
  31. package/dist/bridges/confrontations.js +7 -0
  32. package/dist/bridges/confrontations.js.map +1 -1
  33. package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts +2 -45
  34. package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts.map +1 -1
  35. package/dist/bridges/equations/be-35-conformal-bootstrap.js +2 -74
  36. package/dist/bridges/equations/be-35-conformal-bootstrap.js.map +1 -1
  37. package/dist/bridges/index.js +1 -1
  38. package/dist/bridges/index.js.map +1 -1
  39. package/dist/bridges/observations/types.d.ts +14 -0
  40. package/dist/bridges/observations/types.d.ts.map +1 -1
  41. package/dist/bridges/observations/types.js.map +1 -1
  42. package/dist/cli/commands/confront.d.ts.map +1 -1
  43. package/dist/cli/commands/confront.js +8 -1
  44. package/dist/cli/commands/confront.js.map +1 -1
  45. package/dist/cli/commands/derive.d.ts.map +1 -1
  46. package/dist/cli/commands/derive.js +40 -9
  47. package/dist/cli/commands/derive.js.map +1 -1
  48. package/dist/cli/commands/discover.d.ts.map +1 -1
  49. package/dist/cli/commands/discover.js +46 -27
  50. package/dist/cli/commands/discover.js.map +1 -1
  51. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  52. package/dist/cli/commands/evaluate.js +2 -1
  53. package/dist/cli/commands/evaluate.js.map +1 -1
  54. package/dist/cli/commands/explain.d.ts.map +1 -1
  55. package/dist/cli/commands/explain.js +19 -6
  56. package/dist/cli/commands/explain.js.map +1 -1
  57. package/dist/cli/commands/map.d.ts.map +1 -1
  58. package/dist/cli/commands/map.js +46 -20
  59. package/dist/cli/commands/map.js.map +1 -1
  60. package/dist/cli/commands/path.d.ts.map +1 -1
  61. package/dist/cli/commands/path.js +90 -7
  62. package/dist/cli/commands/path.js.map +1 -1
  63. package/dist/cli/commands/probe.d.ts.map +1 -1
  64. package/dist/cli/commands/probe.js +59 -2
  65. package/dist/cli/commands/probe.js.map +1 -1
  66. package/dist/cli/commands/regime.d.ts +27 -0
  67. package/dist/cli/commands/regime.d.ts.map +1 -1
  68. package/dist/cli/commands/regime.js +57 -3
  69. package/dist/cli/commands/regime.js.map +1 -1
  70. package/dist/cli/errors.d.ts +13 -1
  71. package/dist/cli/errors.d.ts.map +1 -1
  72. package/dist/cli/errors.js +13 -1
  73. package/dist/cli/errors.js.map +1 -1
  74. package/dist/cli/main.d.ts.map +1 -1
  75. package/dist/cli/main.js +10 -5
  76. package/dist/cli/main.js.map +1 -1
  77. package/dist/cli-api.d.ts +5 -1
  78. package/dist/cli-api.d.ts.map +1 -1
  79. package/dist/cli-api.js +5 -1
  80. package/dist/cli-api.js.map +1 -1
  81. package/dist/composition/canonical-compare.d.ts +77 -0
  82. package/dist/composition/canonical-compare.d.ts.map +1 -0
  83. package/dist/composition/canonical-compare.js +309 -0
  84. package/dist/composition/canonical-compare.js.map +1 -0
  85. package/dist/composition/canonical-prefactors.d.ts +32 -0
  86. package/dist/composition/canonical-prefactors.d.ts.map +1 -0
  87. package/dist/composition/canonical-prefactors.js +80 -0
  88. package/dist/composition/canonical-prefactors.js.map +1 -0
  89. package/dist/composition/discovery.d.ts +20 -3
  90. package/dist/composition/discovery.d.ts.map +1 -1
  91. package/dist/composition/discovery.js +30 -4
  92. package/dist/composition/discovery.js.map +1 -1
  93. package/dist/composition/explain.d.ts +9 -1
  94. package/dist/composition/explain.d.ts.map +1 -1
  95. package/dist/composition/explain.js +34 -8
  96. package/dist/composition/explain.js.map +1 -1
  97. package/dist/composition/grounding.d.ts.map +1 -1
  98. package/dist/composition/grounding.js +6 -1
  99. package/dist/composition/grounding.js.map +1 -1
  100. package/dist/composition/probe/corpus.d.ts +12 -0
  101. package/dist/composition/probe/corpus.d.ts.map +1 -1
  102. package/dist/composition/probe/corpus.js +100 -0
  103. package/dist/composition/probe/corpus.js.map +1 -1
  104. package/dist/composition/probe/generator.d.ts +14 -0
  105. package/dist/composition/probe/generator.d.ts.map +1 -1
  106. package/dist/composition/probe/generator.js +24 -2
  107. package/dist/composition/probe/generator.js.map +1 -1
  108. package/dist/composition/probe/pipeline.d.ts +5 -0
  109. package/dist/composition/probe/pipeline.d.ts.map +1 -1
  110. package/dist/composition/probe/pipeline.js +20 -3
  111. package/dist/composition/probe/pipeline.js.map +1 -1
  112. package/dist/composition/probe/report.d.ts.map +1 -1
  113. package/dist/composition/probe/report.js +2 -0
  114. package/dist/composition/probe/report.js.map +1 -1
  115. package/dist/composition/user-equation.d.ts +8 -6
  116. package/dist/composition/user-equation.d.ts.map +1 -1
  117. package/dist/composition/user-equation.js +44 -29
  118. package/dist/composition/user-equation.js.map +1 -1
  119. package/dist/core/constants.d.ts +13 -0
  120. package/dist/core/constants.d.ts.map +1 -1
  121. package/dist/core/constants.js +13 -0
  122. package/dist/core/constants.js.map +1 -1
  123. package/dist/diff/bridge-gradient.d.ts +1 -1
  124. package/dist/diff/bridge-gradient.js +1 -1
  125. package/package.json +45 -3
@@ -5,7 +5,9 @@
5
5
  * name→value), it composes:
6
6
  *
7
7
  * 1. the identifiability classifier — CAN the graph compute the target
8
- * from the knowns, and via how many independent derivations?
8
+ * from the knowns, and via how many derivations? Independence is
9
+ * counted by catalog bridge (`beId`): two routes that restate one bridge
10
+ * agree by algebra, and the summary says so.
9
11
  * 2. the retrodiction harness — when values are supplied, RECOVER the
10
12
  * value via each derivation and (for over-determined targets) check
11
13
  * they agree;
@@ -31,6 +33,12 @@ import type { DimensionalDeterminationResult } from '../dimensional/buckingham.j
31
33
  * ground-truth values were supplied. @public */
32
34
  export interface DerivationExplanation {
33
35
  readonly edge: string;
36
+ /**
37
+ * The catalog bridge the last edge encodes (`BridgeEdge.beId`), `null` for a
38
+ * law or an uncatalogued edge. Two routes with the same `beId` are one
39
+ * bridge restated, so their agreement is algebra, not a check.
40
+ */
41
+ readonly beId: number | null;
34
42
  readonly label: string;
35
43
  /** The edge's immediate (last-hop) source quantities. */
36
44
  readonly sources: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../src/composition/explain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAGnF;iDACiD;AACjD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE;QACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACpD,4EAA4E;QAC5E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC7D,mEAAmE;IACnE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;CAChE;AAED,uDAAuD;AACvD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,mEAAmE;IACnE,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC;IAChD,iEAAiE;IACjE,QAAQ,CAAC,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACvD,wEAAwE;IACxE,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C,2EAA2E;IAC3E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC;8DAC0D;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,8BAA8B,CAAC;IACtD,0EAA0E;IAC1E,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAmID;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC3D,IAAI,GAAE,cAAmB,GACxB,mBAAmB,CAoHrB"}
1
+ {"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../src/composition/explain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAGnF;iDACiD;AACjD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE;QACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACpD,4EAA4E;QAC5E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC7D,mEAAmE;IACnE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;CAChE;AAED,uDAAuD;AACvD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,mEAAmE;IACnE,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC;IAChD,iEAAiE;IACjE,QAAQ,CAAC,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACvD,wEAAwE;IACxE,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C,2EAA2E;IAC3E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC;8DAC0D;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,8BAA8B,CAAC;IACtD,0EAA0E;IAC1E,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAsJD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC3D,IAAI,GAAE,cAAmB,GACxB,mBAAmB,CAqHrB"}
@@ -5,7 +5,9 @@
5
5
  * name→value), it composes:
6
6
  *
7
7
  * 1. the identifiability classifier — CAN the graph compute the target
8
- * from the knowns, and via how many independent derivations?
8
+ * from the knowns, and via how many derivations? Independence is
9
+ * counted by catalog bridge (`beId`): two routes that restate one bridge
10
+ * agree by algebra, and the summary says so.
9
11
  * 2. the retrodiction harness — when values are supplied, RECOVER the
10
12
  * value via each derivation and (for over-determined targets) check
11
13
  * they agree;
@@ -106,7 +108,7 @@ function buildSummary(target, id, derivations, consistency, recoveredValue, dime
106
108
  }
107
109
  break;
108
110
  case 'under-determined':
109
- s = `'${target}' cannot be determined from ${known}: the graph has no derivation path.`;
111
+ s = `'${target}' is in the graph, but cannot be determined from ${known}: the graph has no derivation path.`;
110
112
  if (id.blockingFrontier.length) {
111
113
  s += ` Knowing one of {${id.blockingFrontier.join(', ')}} would unblock it.`;
112
114
  }
@@ -118,13 +120,35 @@ function buildSummary(target, id, derivations, consistency, recoveredValue, dime
118
120
  }
119
121
  break;
120
122
  case 'over-determined':
121
- default:
122
- s = `'${target}' is over-determined from ${known}: ${derivations.length} independent derivations (${ids}).`;
123
+ default: {
124
+ // Independence is counted by BRIDGE, not by edge: be-42 and be-42-via-rs
125
+ // are one bridge written in M and in r_s, and agree by algebra.
126
+ const bridges = [...new Set(derivations.map((d) => (d.beId === null ? d.edge : `BE-${d.beId}`)))];
127
+ const oneBridge = bridges.length === 1 && derivations.length > 1;
128
+ if (bridges.length === derivations.length) {
129
+ s = `'${target}' is over-determined from ${known}: ${derivations.length} independent derivations (${ids}).`;
130
+ }
131
+ else if (oneBridge) {
132
+ s = `'${target}' is over-determined from ${known}: ${derivations.length} derivation routes (${ids}) restate ONE bridge (${bridges[0]}).`;
133
+ }
134
+ else {
135
+ s = `'${target}' is over-determined from ${known}: ${derivations.length} derivation routes (${ids}) over ${bridges.length} distinct bridges (${bridges.join(', ')}).`;
136
+ }
123
137
  if (consistency) {
124
- s +=
125
- consistency.outcome === 'consistent'
126
- ? ` They agree (relative spread ${consistency.relativeSpread.toExponential(1)}) — a passing consistency check.`
127
- : ` They DISAGREE (relative spread ${consistency.relativeSpread.toExponential(1)}) — a falsification.`;
138
+ const spread = consistency.relativeSpread.toExponential(1);
139
+ if (consistency.outcome === 'consistent') {
140
+ s += oneBridge
141
+ ? ` They agree (relative spread ${spread}) — agreement by construction, not an independent check.`
142
+ : ` They agree (relative spread ${spread}) — a passing consistency check.`;
143
+ }
144
+ else {
145
+ s += oneBridge
146
+ ? ` They DISAGREE (relative spread ${spread}) — two forms of one bridge disagree: an encoding error.`
147
+ : ` They DISAGREE (relative spread ${spread}) — a falsification.`;
148
+ }
149
+ }
150
+ else if (oneBridge) {
151
+ s += ` The routes restate one bridge, so they carry no independent constraint.`;
128
152
  }
129
153
  else {
130
154
  s += ` The ${id.surplusConstraints} surplus derivation(s) are falsifiable consistency constraints (supply values to check them).`;
@@ -133,6 +157,7 @@ function buildSummary(target, id, derivations, consistency, recoveredValue, dime
133
157
  s += ` Recovered value: ${recoveredValue.toExponential(4)}.`;
134
158
  }
135
159
  break;
160
+ }
136
161
  }
137
162
  if (dimensional?.determined && dimensional.monomial) {
138
163
  s += ` Dimensionally, ${known} fix it up to a dimensionless constant: ${target} ∝ ${formatMonomial(dimensional.monomial)}.`;
@@ -212,6 +237,7 @@ export function explainQuantity(edges, target, known, opts = {}) {
212
237
  }
213
238
  return {
214
239
  edge: eid,
240
+ beId: e?.beId ?? null,
215
241
  label: e?.label ?? eid,
216
242
  sources,
217
243
  leafInputs,
@@ -1 +1 @@
1
- {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../src/composition/explain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../src/composition/explain.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"grounding.d.ts","sourceRoot":"","sources":["../../src/composition/grounding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,0EAA0E;AAC1E,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,oFAAoF;IACpF,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC;IAChC;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,eAAe,EAClB,WAAW,CAAC,EAAE,iBAAiB,GAC9B,kBAAkB,CAqCpB"}
1
+ {"version":3,"file":"grounding.d.ts","sourceRoot":"","sources":["../../src/composition/grounding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,0EAA0E;AAC1E,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,oFAAoF;IACpF,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC;IAChC;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,eAAe,EAClB,WAAW,CAAC,EAAE,iBAAiB,GAC9B,kBAAkB,CA2CpB"}
@@ -18,7 +18,12 @@ export function describeGrounding(c, consequence) {
18
18
  if (c.numericallyConsistent)
19
19
  passed.push('numerical-consistency');
20
20
  // Magnitude gate: ran only when both endpoints had a representative value.
21
- if (c.magnitudeChecked) {
21
+ // An anchor-invariant ratio is fixed by the graph at every anchor, so its
22
+ // agreement is an identity, not a survived test (persona finding L3).
23
+ if (c.magnitudeChecked && c.magnitudeAnchorInvariant === true) {
24
+ gaps.push('magnitude (anchor-invariant: the graph fixes this ratio at every anchor, so the match is an identity, not evidence)');
25
+ }
26
+ else if (c.magnitudeChecked) {
22
27
  const parts = [];
23
28
  if (c.ordersApart != null)
24
29
  parts.push(`${c.ordersApart.toFixed(1)} orders`);
@@ -1 +1 @@
1
- {"version":3,"file":"grounding.js","sourceRoot":"","sources":["../../src/composition/grounding.ts"],"names":[],"mappings":"AA2DA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,CAAkB,EAClB,WAA+B;IAE/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,6EAA6E;IAC7E,8EAA8E;IAC9E,8EAA8E;IAC9E,IAAI,CAAC,CAAC,qBAAqB;QAAE,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAElE,2EAA2E;IAC3E,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACvB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5E,IAAI,CAAC,CAAC,mBAAmB;YAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACnD,CAAC;IAED,+EAA+E;IAC/E,8EAA8E;IAC9E,4EAA4E;IAC5E,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;SAAM,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACnD,CAAC;IAED,0EAA0E;IAC1E,8EAA8E;IAC9E,6EAA6E;IAC7E,gFAAgF;IAChF,IAAI,WAAW,KAAK,UAAU;QAAE,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;SAChE,IAAI,WAAW,KAAK,mBAAmB;QAAE,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;SACzF,IAAI,WAAW,KAAK,cAAc;QAAE,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAEhF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"grounding.js","sourceRoot":"","sources":["../../src/composition/grounding.ts"],"names":[],"mappings":"AA2DA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,CAAkB,EAClB,WAA+B;IAE/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,6EAA6E;IAC7E,8EAA8E;IAC9E,8EAA8E;IAC9E,IAAI,CAAC,CAAC,qBAAqB;QAAE,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAElE,2EAA2E;IAC3E,0EAA0E;IAC1E,sEAAsE;IACtE,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,wBAAwB,KAAK,IAAI,EAAE,CAAC;QAC9D,IAAI,CAAC,IAAI,CACP,qHAAqH,CACtH,CAAC;IACJ,CAAC;SAAM,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5E,IAAI,CAAC,CAAC,mBAAmB;YAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACnD,CAAC;IAED,+EAA+E;IAC/E,8EAA8E;IAC9E,4EAA4E;IAC5E,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;SAAM,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACnD,CAAC;IAED,0EAA0E;IAC1E,8EAA8E;IAC9E,6EAA6E;IAC7E,gFAAgF;IAChF,IAAI,WAAW,KAAK,UAAU;QAAE,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;SAChE,IAAI,WAAW,KAAK,mBAAmB;QAAE,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;SACzF,IAAI,WAAW,KAAK,cAAc;QAAE,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAEhF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACrE,CAAC"}
@@ -18,6 +18,18 @@ export interface CorpusComparisonResult {
18
18
  }
19
19
  /** Compare an expression to the in-repo L- and B-layers. @internal */
20
20
  export declare function compareToCorpus(expr: ExprNode, corpusVersion: string): CorpusComparisonResult;
21
+ /**
22
+ * Compare a FITTED prefactor with the prefactor of each corpus relation the
23
+ * candidate is algebraically equivalent to. `normalForm` matches up to a
24
+ * constant, so an equivalent candidate can still carry the wrong constant: a
25
+ * pendulum fitted on finite-amplitude data gives ĉ = 7.39, not 2π. Only a fully
26
+ * quantitative canonical entry records a prefactor; for any other match the
27
+ * note says the fitted value is not compared. `tolerance` is relative (the
28
+ * holdout tolerance of the run).
29
+ *
30
+ * @internal
31
+ */
32
+ export declare function corpusPrefactorNotes(result: CorpusComparisonResult, candidate: ExprNode, fitted: number, tolerance: number): string[];
21
33
  /** Allowed automated novelty sentence. @internal */
22
34
  export declare function corpusRelativeWording(result: CorpusComparisonResult): string;
23
35
  //# sourceMappingURL=corpus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"corpus.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/corpus.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAM/D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,QAAQ,CAAC;CACxC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,SAAS,WAAW,EAAE,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAID,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,GAAG,sBAAsB,CA4B7F;AAED,oDAAoD;AACpD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAM5E"}
1
+ {"version":3,"file":"corpus.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/corpus.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAU/D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,QAAQ,CAAC;CACxC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,SAAS,WAAW,EAAE,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAID,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,GAAG,sBAAsB,CA4B7F;AA+CD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,sBAAsB,EAC9B,SAAS,EAAE,QAAQ,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,MAAM,EAAE,CAoCV;AAED,oDAAoD;AACpD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAM5E"}
@@ -8,6 +8,9 @@ import { CANONICAL_EQUATIONS } from '../../canonical/registry.js';
8
8
  import { normalForm } from '../../canonical/normal-form.js';
9
9
  import { BRIDGE_RHS_BY_ID } from '../../bridges/rhs-registry.js';
10
10
  import { monomialToExpr } from './generator.js';
11
+ import { evalExpr } from '../expr-eval.js';
12
+ import { equals } from '../../dimensional/algebra.js';
13
+ import { canonicalPrefactor } from '../canonical-prefactors.js';
11
14
  const CORPUS_ID = 'upt-l-layer+b-layer';
12
15
  /** Compare an expression to the in-repo L- and B-layers. @internal */
13
16
  export function compareToCorpus(expr, corpusVersion) {
@@ -40,6 +43,103 @@ export function compareToCorpus(expr, corpusVersion) {
40
43
  searchedAt: new Date().toISOString(),
41
44
  };
42
45
  }
46
+ /**
47
+ * The symbols of an AST that carry a dimension, with that dimension. Numeric
48
+ * literals and named numbers (`8pi`) are dimensionless and left out; so is a
49
+ * dimensionless variable, which then makes the ratio vary and returns no prefactor.
50
+ */
51
+ function dimensionedSymbols(node, out) {
52
+ if (node.kind === 'symbol') {
53
+ if (Object.values(node.dim).some((e) => e !== 0))
54
+ out.set(node.name, node.dim);
55
+ return out;
56
+ }
57
+ for (const a of node.args ?? [])
58
+ dimensionedSymbols(a, out);
59
+ return out;
60
+ }
61
+ /**
62
+ * The corpus prefactor k of a fully quantitative canonical entry against a
63
+ * candidate body: `scalarAst / candidate`, which must be constant. Symbols align
64
+ * by name, then by a dimension exactly one candidate symbol carries. Evaluated at
65
+ * three points where variable i takes (1.7 + i)^p, p = 1, 1.3, 1.6. `null` when
66
+ * the symbols do not align or the ratio is not constant.
67
+ */
68
+ function corpusPrefactor(ast, candidate) {
69
+ const astSyms = dimensionedSymbols(ast, new Map());
70
+ const candSyms = dimensionedSymbols(candidate, new Map());
71
+ if (astSyms.size !== candSyms.size)
72
+ return null;
73
+ const toCand = new Map();
74
+ const free = new Set(candSyms.keys());
75
+ for (const s of astSyms.keys())
76
+ if (free.has(s))
77
+ (toCand.set(s, s), free.delete(s));
78
+ for (const [s, d] of astSyms) {
79
+ if (toCand.has(s))
80
+ continue;
81
+ const hits = [...free].filter((c) => equals(candSyms.get(c), d));
82
+ if (hits.length !== 1)
83
+ return null;
84
+ toCand.set(s, hits[0]);
85
+ free.delete(hits[0]);
86
+ }
87
+ const names = [...candSyms.keys()].sort();
88
+ const ratios = [1, 1.3, 1.6].map((p) => {
89
+ const vals = Object.fromEntries(names.map((n, i) => [n, Math.pow(1.7 + i, p)]));
90
+ const astVals = Object.fromEntries([...toCand].map(([s, c]) => [s, vals[c]]));
91
+ return evalExpr(ast, astVals) / evalExpr(candidate, vals);
92
+ });
93
+ const k = ratios[0];
94
+ return Number.isFinite(k) && ratios.every((r) => Math.abs(r / k - 1) <= 1e-9) ? k : null;
95
+ }
96
+ /**
97
+ * Compare a FITTED prefactor with the prefactor of each corpus relation the
98
+ * candidate is algebraically equivalent to. `normalForm` matches up to a
99
+ * constant, so an equivalent candidate can still carry the wrong constant: a
100
+ * pendulum fitted on finite-amplitude data gives ĉ = 7.39, not 2π. Only a fully
101
+ * quantitative canonical entry records a prefactor; for any other match the
102
+ * note says the fitted value is not compared. `tolerance` is relative (the
103
+ * holdout tolerance of the run).
104
+ *
105
+ * @internal
106
+ */
107
+ export function corpusPrefactorNotes(result, candidate, fitted, tolerance) {
108
+ const c = fitted.toPrecision(4);
109
+ return result.algebraicMatches.map((m) => {
110
+ const entry = m.layer === 'canonical' ? CANONICAL_EQUATIONS.find((e) => e.id === m.id) : undefined;
111
+ let k = null;
112
+ // Fully quantitative entries carry their prefactor; others may take it from
113
+ // the sourced table, applied to the entry's AST or, lacking one, its monomial.
114
+ const tabled = entry && entry.epistemicStatus !== 'fully-quantitative' ? canonicalPrefactor(entry.id) : undefined;
115
+ const body = entry?.epistemicStatus === 'fully-quantitative'
116
+ ? entry.scalarAst
117
+ : tabled === undefined
118
+ ? undefined
119
+ : (entry?.scalarAst ??
120
+ (entry?.dimensional.monomial
121
+ ? monomialToExpr(entry.dimensional.monomial, [entry.dimensional.target, ...entry.dimensional.governing])
122
+ : undefined));
123
+ if (body !== undefined) {
124
+ try {
125
+ const base = corpusPrefactor(body, candidate);
126
+ k = base === null ? null : (tabled ?? 1) * base;
127
+ }
128
+ catch {
129
+ k = null;
130
+ }
131
+ }
132
+ if (k === null)
133
+ return `${m.id} records no prefactor, so the fitted ĉ=${c} is not compared with it`;
134
+ const rel = fitted / k - 1;
135
+ if (Math.abs(rel) <= tolerance) {
136
+ return `fitted ĉ=${c} agrees with ${m.id}'s prefactor ${k.toPrecision(4)} (within the holdout tolerance ${tolerance})`;
137
+ }
138
+ const pct = `${rel > 0 ? '+' : ''}${Math.round(rel * 100)}%`;
139
+ return (`fitted ĉ=${c} contradicts ${m.id}'s prefactor ${k.toPrecision(4)} (${pct}): ` +
140
+ "the data may lie outside that relation's regime");
141
+ });
142
+ }
43
143
  /** Allowed automated novelty sentence. @internal */
44
144
  export function corpusRelativeWording(result) {
45
145
  if (result.algebraicMatches.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"corpus.js","sourceRoot":"","sources":["../../../src/composition/probe/corpus.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAehD,MAAM,SAAS,GAAG,qBAAqB,CAAC;AAExC,sEAAsE;AACtE,MAAM,UAAU,eAAe,CAAC,IAAc,EAAE,aAAqB;IACnE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAkB,EAAE,CAAC;IACpC,KAAK,MAAM,EAAE,IAAI,mBAAmB,EAAE,CAAC;QACrC,IAAI,EAAE,CAAC,SAAS,IAAI,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;YACtD,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE;gBACnD,EAAE,CAAC,WAAW,CAAC,MAAM;gBACrB,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS;aAC5B,CAAC,CAAC;YACH,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC9B,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;QACnD,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,SAAS;QACnB,aAAa;QACb,YAAY,EAAE,EAAE;QAChB,gBAAgB,EAAE,SAAS;QAC3B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;AACJ,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,qBAAqB,CAAC,MAA8B;IAClE,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,OAAO,wCAAwC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,aAAa,KAAK,GAAG,EAAE,CAAC;IACnG,CAAC;IACD,OAAO,qCAAqC,MAAM,CAAC,QAAQ,YAAY,MAAM,CAAC,aAAa,iFAAiF,CAAC;AAC/K,CAAC"}
1
+ {"version":3,"file":"corpus.js","sourceRoot":"","sources":["../../../src/composition/probe/corpus.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  * @module composition/probe/generator
6
6
  */
7
7
  import type { ExprNode } from '../../dimensional/ast-types.js';
8
+ import { type DimensionalDeterminationResult } from '../../dimensional/buckingham.js';
8
9
  import type { DimensionalVariableRef, SearchBudget, SearchProblem } from './types.js';
9
10
  import { type BudgetState } from './search-budget.js';
10
11
  export interface RawCandidate {
@@ -21,6 +22,19 @@ export declare function monomialToExpr(monomial: Readonly<Record<string, number>
21
22
  * @internal
22
23
  */
23
24
  export declare function generateNative(problem: SearchProblem, state: BudgetState): Iterable<RawCandidate>;
25
+ /**
26
+ * The monomial the native enumerator searches, and the dimensionless inputs it
27
+ * leaves out (persona finding C2). A dimensionless input makes the monomial
28
+ * non-unique, since any f(θ0) can multiply it, and the enumerator used to
29
+ * produce nothing. When the monomial over ALL inputs is not unique, it is taken
30
+ * from the DIMENSIONED inputs; `unsearched` names the dimensionless ones whose
31
+ * function is not searched.
32
+ * @internal
33
+ */
34
+ export declare function nativeDetermination(problem: SearchProblem): {
35
+ det: DimensionalDeterminationResult;
36
+ unsearched: string[];
37
+ };
24
38
  /** Expose budget type for callers. @internal */
25
39
  export type { SearchBudget };
26
40
  //# sourceMappingURL=generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAK/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAExE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,0DAA0D;AAC1D,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC1C,IAAI,EAAE,SAAS,sBAAsB,EAAE,GACtC,QAAQ,CAqBV;AAQD;;;;;GAKG;AACH,wBAAiB,cAAc,CAC7B,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,WAAW,GACjB,QAAQ,CAAC,YAAY,CAAC,CA4BxB;AAyCD,gDAAgD;AAChD,YAAY,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAG/D,OAAO,EAA2B,KAAK,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AAE/G,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAExE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,0DAA0D;AAC1D,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC1C,IAAI,EAAE,SAAS,sBAAsB,EAAE,GACtC,QAAQ,CAqBV;AAQD;;;;;GAKG;AACH,wBAAiB,cAAc,CAC7B,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,WAAW,GACjB,QAAQ,CAAC,YAAY,CAAC,CA4BxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG;IAC3D,GAAG,EAAE,8BAA8B,CAAC;IACpC,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAaA;AAyCD,gDAAgD;AAChD,YAAY,EAAE,YAAY,EAAE,CAAC"}
@@ -49,7 +49,7 @@ function* extraPrefactors(base) {
49
49
  * @internal
50
50
  */
51
51
  export function* generateNative(problem, state) {
52
- const det = dimensionallyDetermines(problem.target, problem.governing);
52
+ const { det } = nativeDetermination(problem);
53
53
  if (!det.determined || !det.monomial)
54
54
  return;
55
55
  const expr = monomialToExpr(det.monomial, [problem.target, ...problem.governing]);
@@ -81,6 +81,28 @@ export function* generateNative(problem, state) {
81
81
  yield* generateCorrections(problem, state, seen);
82
82
  }
83
83
  }
84
+ /**
85
+ * The monomial the native enumerator searches, and the dimensionless inputs it
86
+ * leaves out (persona finding C2). A dimensionless input makes the monomial
87
+ * non-unique, since any f(θ0) can multiply it, and the enumerator used to
88
+ * produce nothing. When the monomial over ALL inputs is not unique, it is taken
89
+ * from the DIMENSIONED inputs; `unsearched` names the dimensionless ones whose
90
+ * function is not searched.
91
+ * @internal
92
+ */
93
+ export function nativeDetermination(problem) {
94
+ const det = dimensionallyDetermines(problem.target, problem.governing);
95
+ if (det.determined)
96
+ return { det, unsearched: [] };
97
+ const isDimensionless = (g) => Object.values(g.dim).every((e) => e === 0);
98
+ const dimless = problem.governing.filter(isDimensionless);
99
+ if (dimless.length === 0)
100
+ return { det, unsearched: [] };
101
+ const reduced = dimensionallyDetermines(problem.target, problem.governing.filter((g) => !isDimensionless(g)));
102
+ return reduced.determined
103
+ ? { det: reduced, unsearched: dimless.map((g) => g.name) }
104
+ : { det, unsearched: [] };
105
+ }
84
106
  function astDepth(node) {
85
107
  if (node.kind === 'op')
86
108
  return 1 + Math.max(0, ...node.args.map(astDepth));
@@ -101,7 +123,7 @@ function* generateCorrections(problem, state, seen) {
101
123
  const kind = problem.discrepancy.kind;
102
124
  if (kind !== 'additive' && kind !== 'relative' && kind !== 'standardized')
103
125
  return;
104
- const det = dimensionallyDetermines(problem.target, problem.governing);
126
+ const { det } = nativeDetermination(problem);
105
127
  if (!det.determined || !det.monomial)
106
128
  return;
107
129
  if (!canEmitCandidate(state))
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/composition/probe/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/composition/probe/generator.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,11 @@ export interface ProbeSearchResult {
30
30
  readonly fits: Readonly<Record<string, FitResult>>;
31
31
  readonly falsifications: Readonly<Record<string, FalsifyResult>>;
32
32
  readonly corpus: Readonly<Record<string, CorpusComparisonResult>>;
33
+ /**
34
+ * For a candidate equivalent to a corpus relation, the fitted prefactor
35
+ * against that relation's prefactor (see `corpusPrefactorNotes`).
36
+ */
37
+ readonly prefactorNotes: Readonly<Record<string, readonly string[]>>;
33
38
  readonly wording: readonly string[];
34
39
  readonly stopReason: SearchStopReason;
35
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAKpB,OAAO,EAA0C,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAClG,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAIpE,OAAO,EAA8B,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAGhF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACrD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAClE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;CACvC;AA6GD;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,EACtB,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CAkR5B"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAKpB,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAIpE,OAAO,EAA8B,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAGhF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACrD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAClE;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;IACrE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;CACvC;AA8GD;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,EACtB,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CA2S5B"}
@@ -12,9 +12,9 @@ import { validate } from '../../dimensional/validator.js';
12
12
  import { equals } from '../../dimensional/algebra.js';
13
13
  import { DEFAULT_SEARCH_BUDGET, SCHEMA_VERSION } from './types.js';
14
14
  import { openBudget, budgetStopReason } from './search-budget.js';
15
- import { generateNative } from './generator.js';
15
+ import { generateNative, nativeDetermination } from './generator.js';
16
16
  import { fingerprintExpr, complexityOf, bodyExpression } from './fingerprint.js';
17
- import { compareToCorpus, corpusRelativeWording } from './corpus.js';
17
+ import { compareToCorpus, corpusPrefactorNotes, corpusRelativeWording, } from './corpus.js';
18
18
  import { fitPrefactor } from './fit.js';
19
19
  import { runFalsification } from './falsify.js';
20
20
  import { applyStatus, ProbeCandidateStore } from './candidate-store.js';
@@ -41,6 +41,7 @@ function abstain(problem, opts, reason, wording) {
41
41
  fits: {},
42
42
  falsifications: {},
43
43
  corpus: {},
44
+ prefactorNotes: {},
44
45
  wording,
45
46
  stopReason: reason,
46
47
  };
@@ -129,10 +130,16 @@ export async function runProbeSearch(problem, opts = {}) {
129
130
  const fits = {};
130
131
  const falsifications = {};
131
132
  const corpus = {};
133
+ const prefactorNotes = {};
132
134
  const wording = [];
133
135
  const seenHash = new Set();
134
136
  let seq = 0;
135
137
  const raws = [];
138
+ const { unsearched } = nativeDetermination(problem);
139
+ if (unsearched.length > 0) {
140
+ wording.push(`the monomial is taken from the dimensioned inputs; an unknown function of the ` +
141
+ `dimensionless input(s) {${unsearched.join(', ')}} is not searched`);
142
+ }
136
143
  for (const raw of generateNative(problem, state)) {
137
144
  raws.push(raw);
138
145
  const stop = budgetStopReason(state);
@@ -285,6 +292,9 @@ export async function runProbeSearch(problem, opts = {}) {
285
292
  rec = applyStatus(rec, 'heldout-supported', `holdout RMSE ${fit.holdoutRmse}`, runId, at);
286
293
  store.replace(rec);
287
294
  if (known) {
295
+ // Equivalent up to a constant is not equal: compare the fitted constant
296
+ // with the corpus one where the corpus records it (persona finding L7).
297
+ prefactorNotes[rec.id] = corpusPrefactorNotes(corp, bodyExpression(rec.body), fit.prefactor, opts.holdoutTol ?? 0.15);
288
298
  rec = applyStatus(rec, 'equivalent-known', corpusRelativeWording(corp), runId, at);
289
299
  store.replace(rec);
290
300
  continue;
@@ -327,7 +337,13 @@ export async function runProbeSearch(problem, opts = {}) {
327
337
  }
328
338
  else if (all.length === 0) {
329
339
  stopReason = 'no-credible-candidate';
330
- wording.push('enumerator produced no dimensionally valid candidates');
340
+ // Say WHY (persona finding C2): "no dimensionally valid candidates" was
341
+ // printed even when the real reason was a non-unique monomial.
342
+ const { det } = nativeDetermination(problem);
343
+ wording.push(det.determined
344
+ ? 'enumerator produced no dimensionally valid candidates'
345
+ : `the target is not a unique monomial of the inputs (${det.reason}); ` +
346
+ 'the native enumerator searches unique monomials only');
331
347
  }
332
348
  else if (hasAnyData(problem) &&
333
349
  all.every((c) => c.status === 'rejected' ||
@@ -347,6 +363,7 @@ export async function runProbeSearch(problem, opts = {}) {
347
363
  fits,
348
364
  falsifications,
349
365
  corpus,
366
+ prefactorNotes,
350
367
  wording,
351
368
  stopReason,
352
369
  };