universal-physics-tensor 1.0.4 → 2.0.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.
Files changed (168) hide show
  1. package/README.md +6 -8
  2. package/dist/atlas/chain-pipeline.d.ts +37 -0
  3. package/dist/atlas/chain-pipeline.d.ts.map +1 -1
  4. package/dist/atlas/chain-pipeline.js +95 -79
  5. package/dist/atlas/chain-pipeline.js.map +1 -1
  6. package/dist/atlas/proof-target.d.ts +28 -2
  7. package/dist/atlas/proof-target.d.ts.map +1 -1
  8. package/dist/atlas/proof-target.js +25 -16
  9. package/dist/atlas/proof-target.js.map +1 -1
  10. package/dist/cli/commands/_atlas-route.d.ts +1 -1
  11. package/dist/cli/commands/atlas.d.ts.map +1 -1
  12. package/dist/cli/commands/atlas.js +1 -2
  13. package/dist/cli/commands/atlas.js.map +1 -1
  14. package/dist/cli/commands/eval.d.ts.map +1 -1
  15. package/dist/cli/commands/eval.js +7 -10
  16. package/dist/cli/commands/eval.js.map +1 -1
  17. package/dist/cli/commands/evaluate.d.ts +7 -3
  18. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  19. package/dist/cli/commands/evaluate.js +53 -32
  20. package/dist/cli/commands/evaluate.js.map +1 -1
  21. package/dist/cli/commands/map.d.ts +1 -1
  22. package/dist/cli/commands/map.d.ts.map +1 -1
  23. package/dist/cli/commands/map.js.map +1 -1
  24. package/dist/cli/commands/metric.d.ts.map +1 -1
  25. package/dist/cli/commands/metric.js +10 -11
  26. package/dist/cli/commands/metric.js.map +1 -1
  27. package/dist/cli/commands/path.d.ts +2 -2
  28. package/dist/cli/commands/path.d.ts.map +1 -1
  29. package/dist/cli/commands/path.js +10 -11
  30. package/dist/cli/commands/path.js.map +1 -1
  31. package/dist/cli/commands/recover.d.ts.map +1 -1
  32. package/dist/cli/commands/recover.js +1 -2
  33. package/dist/cli/commands/recover.js.map +1 -1
  34. package/dist/cli/commands/regime.d.ts +2 -2
  35. package/dist/cli/commands/regime.d.ts.map +1 -1
  36. package/dist/cli/commands/regime.js +3 -4
  37. package/dist/cli/commands/regime.js.map +1 -1
  38. package/dist/cli/eval-numbers.d.ts +2 -2
  39. package/dist/cli/eval-numbers.js +2 -2
  40. package/dist/cli/version.d.ts +6 -2
  41. package/dist/cli/version.d.ts.map +1 -1
  42. package/dist/cli/version.js +11 -3
  43. package/dist/cli/version.js.map +1 -1
  44. package/dist/cli-api.d.ts +50 -0
  45. package/dist/cli-api.d.ts.map +1 -1
  46. package/dist/cli-api.js +42 -0
  47. package/dist/cli-api.js.map +1 -1
  48. package/dist/composition/chain-result.d.ts +55 -0
  49. package/dist/composition/chain-result.d.ts.map +1 -0
  50. package/dist/composition/chain-result.js +57 -0
  51. package/dist/composition/chain-result.js.map +1 -0
  52. package/dist/composition/compose-symbolic.d.ts.map +1 -1
  53. package/dist/composition/compose-symbolic.js +4 -39
  54. package/dist/composition/compose-symbolic.js.map +1 -1
  55. package/dist/composition/compose.d.ts.map +1 -1
  56. package/dist/composition/compose.js +11 -4
  57. package/dist/composition/compose.js.map +1 -1
  58. package/dist/composition/enumerate.d.ts +46 -5
  59. package/dist/composition/enumerate.d.ts.map +1 -1
  60. package/dist/composition/enumerate.js +37 -8
  61. package/dist/composition/enumerate.js.map +1 -1
  62. package/dist/composition/expr-simplify.d.ts.map +1 -1
  63. package/dist/composition/expr-simplify.js +3 -11
  64. package/dist/composition/expr-simplify.js.map +1 -1
  65. package/dist/composition/mathts-scalar-symbols.d.ts +48 -0
  66. package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -0
  67. package/dist/composition/mathts-scalar-symbols.js +150 -0
  68. package/dist/composition/mathts-scalar-symbols.js.map +1 -0
  69. package/dist/composition/probe/study.js +1 -1
  70. package/dist/composition/probe/study.js.map +1 -1
  71. package/dist/composition/uncertainty.d.ts +2 -2
  72. package/dist/composition/uncertainty.d.ts.map +1 -1
  73. package/dist/composition/uncertainty.js +14 -13
  74. package/dist/composition/uncertainty.js.map +1 -1
  75. package/dist/diff/bridge-gradient.d.ts +5 -8
  76. package/dist/diff/bridge-gradient.d.ts.map +1 -1
  77. package/dist/diff/bridge-gradient.js +5 -8
  78. package/dist/diff/bridge-gradient.js.map +1 -1
  79. package/dist/dimensional/buckingham.d.ts.map +1 -1
  80. package/dist/dimensional/buckingham.js +19 -91
  81. package/dist/dimensional/buckingham.js.map +1 -1
  82. package/dist/dimensional/units.d.ts +13 -0
  83. package/dist/dimensional/units.d.ts.map +1 -1
  84. package/dist/dimensional/units.js +78 -1
  85. package/dist/dimensional/units.js.map +1 -1
  86. package/dist/index.d.ts +1 -1
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +4 -4
  89. package/dist/index.js.map +1 -1
  90. package/dist/numerical/binding-value.d.ts +3 -3
  91. package/dist/numerical/binding-value.d.ts.map +1 -1
  92. package/dist/numerical/binding-value.js +60 -31
  93. package/dist/numerical/binding-value.js.map +1 -1
  94. package/dist/numerical/einstein-equation.js +3 -3
  95. package/dist/numerical/einstein-equation.js.map +1 -1
  96. package/dist/numerical/engine-registry.d.ts +12 -27
  97. package/dist/numerical/engine-registry.d.ts.map +1 -1
  98. package/dist/numerical/engine-registry.js +10 -65
  99. package/dist/numerical/engine-registry.js.map +1 -1
  100. package/dist/numerical/errors.d.ts +1 -2
  101. package/dist/numerical/errors.d.ts.map +1 -1
  102. package/dist/numerical/errors.js +1 -2
  103. package/dist/numerical/errors.js.map +1 -1
  104. package/dist/numerical/formula-contract.d.ts +60 -0
  105. package/dist/numerical/formula-contract.d.ts.map +1 -0
  106. package/dist/numerical/formula-contract.js +107 -0
  107. package/dist/numerical/formula-contract.js.map +1 -0
  108. package/dist/numerical/formula-dimension.d.ts +33 -10
  109. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  110. package/dist/numerical/formula-dimension.js +48 -35
  111. package/dist/numerical/formula-dimension.js.map +1 -1
  112. package/dist/numerical/formula-mathts.d.ts +15 -17
  113. package/dist/numerical/formula-mathts.d.ts.map +1 -1
  114. package/dist/numerical/formula-mathts.js +34 -36
  115. package/dist/numerical/formula-mathts.js.map +1 -1
  116. package/dist/numerical/formula-registry.d.ts +11 -19
  117. package/dist/numerical/formula-registry.d.ts.map +1 -1
  118. package/dist/numerical/formula-registry.js +16 -79
  119. package/dist/numerical/formula-registry.js.map +1 -1
  120. package/dist/numerical/geodesic-integrator.d.ts.map +1 -1
  121. package/dist/numerical/geodesic-integrator.js +19 -31
  122. package/dist/numerical/geodesic-integrator.js.map +1 -1
  123. package/dist/numerical/gl4-integrator.d.ts +12 -51
  124. package/dist/numerical/gl4-integrator.d.ts.map +1 -1
  125. package/dist/numerical/gl4-integrator.js +103 -565
  126. package/dist/numerical/gl4-integrator.js.map +1 -1
  127. package/dist/numerical/index.d.ts +0 -2
  128. package/dist/numerical/index.d.ts.map +1 -1
  129. package/dist/numerical/index.js +0 -2
  130. package/dist/numerical/index.js.map +1 -1
  131. package/dist/numerical/kretschmann.d.ts +2 -2
  132. package/dist/numerical/kretschmann.js +2 -2
  133. package/dist/numerical/mathts-engine.d.ts +7 -8
  134. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  135. package/dist/numerical/mathts-engine.js +19 -27
  136. package/dist/numerical/mathts-engine.js.map +1 -1
  137. package/dist/numerical/null-ray-integrator.d.ts.map +1 -1
  138. package/dist/numerical/null-ray-integrator.js +11 -28
  139. package/dist/numerical/null-ray-integrator.js.map +1 -1
  140. package/dist/numerical/quadrature.d.ts +2 -17
  141. package/dist/numerical/quadrature.d.ts.map +1 -1
  142. package/dist/numerical/quadrature.js +9 -20
  143. package/dist/numerical/quadrature.js.map +1 -1
  144. package/dist/numerical/strides.d.ts +1 -2
  145. package/dist/numerical/strides.d.ts.map +1 -1
  146. package/dist/numerical/strides.js +1 -2
  147. package/dist/numerical/strides.js.map +1 -1
  148. package/dist/numerical/tensor-engine.d.ts +2 -3
  149. package/dist/numerical/tensor-engine.d.ts.map +1 -1
  150. package/dist/numerical/tensor-engine.js +1 -2
  151. package/dist/numerical/tensor-engine.js.map +1 -1
  152. package/dist/relations/category.d.ts +8 -2
  153. package/dist/relations/category.d.ts.map +1 -1
  154. package/dist/relations/category.js +10 -2
  155. package/dist/relations/category.js.map +1 -1
  156. package/dist/relations/regime-vocabularies.d.ts +40 -0
  157. package/dist/relations/regime-vocabularies.d.ts.map +1 -0
  158. package/dist/relations/regime-vocabularies.js +19 -0
  159. package/dist/relations/regime-vocabularies.js.map +1 -0
  160. package/package.json +12 -46
  161. package/dist/numerical/float64-engine.d.ts +0 -55
  162. package/dist/numerical/float64-engine.d.ts.map +0 -1
  163. package/dist/numerical/float64-engine.js +0 -675
  164. package/dist/numerical/float64-engine.js.map +0 -1
  165. package/dist/numerical/formula.d.ts +0 -106
  166. package/dist/numerical/formula.d.ts.map +0 -1
  167. package/dist/numerical/formula.js +0 -348
  168. package/dist/numerical/formula.js.map +0 -1
package/README.md CHANGED
@@ -54,13 +54,11 @@ pins `bun@1.4.2`). Node does not install it: `corepack prepare bun@1.4.2 --activ
54
54
  `bun install` and `bun run build`. On a machine that has Node and not Bun, the clone path is
55
55
  `npm install`, `npm run build`, then `node bin/upt.mjs <command>`.
56
56
 
57
- A clone install uses the MathTS parser. A published `npm install` does not install the optional
58
- peers and uses the builtin parser. The two are not the same language: MathTS accepts `factorial`,
59
- `erf`, `gamma()`, and juxtaposition such as `2pi`; the builtin parser does not. Both read a bare
60
- `e` as the elementary charge, `E` as energy, and Euler's number only as `exp(x)`, for example
61
- `exp(1)`. The name `euler` is refused. `upt eval --debug` names the parser. `upt version` stays a
62
- bare semver line. `@danielsimonjr/mathts-functions` and `@viz-js/viz` (`upt map --format=svg`) are
63
- optional peers. The package keeps zero hard dependencies.
57
+ The library requires the published `@danielsimonjr/mathts-*` packages. There is no
58
+ second parser. MathTS accepts `factorial`, `erf`, `gamma()`, and juxtaposition such as `2pi`.
59
+ A bare `e` is the elementary charge, `E` is energy, and Euler's number is only `exp(x)`, for
60
+ example `exp(1)`. The name `euler` is refused. `upt eval --debug` names the parser. `upt version`
61
+ stays a bare semver line. `@viz-js/viz` (`upt map --format=svg`) stays an optional peer.
64
62
 
65
63
  ## First five minutes
66
64
 
@@ -373,7 +371,7 @@ The current machine-checked state is:
373
371
  | Empirical spine | **19 committed confrontations**, exposed through `upt confront` with rigor/caveat metadata |
374
372
  | Composition layer | **46 bridge edges** plus the canonical L-layer graph; dimensional, symbolic, discovery, consequence, and visualization tooling |
375
373
  | Canonical reference layer | **109 canonical equations** used as the non-speculative answer-key layer for bridge recovery/linkage |
376
- | Architecture | Generated dependency graph reports **0 circular dependencies**. The unused-analysis report lists **1** file and **79** exports with no importer. Both reports are regenerated by `bun run docs:deps`, and the `docs-fresh` job fails when they are stale |
374
+ | Architecture | Generated dependency graph reports **0 circular dependencies**. The unused-analysis report lists **1** file and **78** exports with no importer. Both reports are regenerated by `bun run docs:deps`, and the `docs-fresh` job fails when they are stale |
377
375
  | Quality gates | Build, strict source+test TypeScript checks, full Vitest suite, active-plan audit, package-content smoke test, and nightly long-horizon GL4/Shapiro accuracy tests |
378
376
  | Formal references | **10** atlas bridges derive `formally-proved` from a reviewed `lean4-physjs` reference. **16** catalog equations carry a counted reference and do not light that tag. **14** state the catalogued equation, so the kind is `bridge` while the covers line still begins with `derivation-step`; passing one to `deriveEvidence` lights `formally-proved`, and the catalog path still omits it. **3** carry a cross-check and **2** carry a property, and `be-28` is a property whose covers line begins with `derivation-step`. Nested statements are not second references. The pin and the split are [`NOTES.md`](https://github.com/danielsimonjr/universal-physics-tensor/blob/master/NOTES.md) |
379
377
  <!-- /readme-status:table -->
@@ -13,7 +13,11 @@
13
13
  *
14
14
  * @module atlas/chain-pipeline
15
15
  */
16
+ import type { ExprNode } from '../dimensional/validator.js';
17
+ import type { Dimension } from '../dimensional/types.js';
16
18
  import type { BridgeEdge } from '../composition/edge.js';
19
+ import type { CompositionResult } from '../relations/composition-table.js';
20
+ import { type ChainRecord } from '../composition/chain-result.js';
17
21
  import { type ChainRegimeMismatch } from '../composition/chain-regime.js';
18
22
  /** A chain whose normal form matches a catalog equation. Nothing was written. @internal */
19
23
  export interface ChainConfirmationRecord {
@@ -37,6 +41,39 @@ export interface ChainStubRecord {
37
41
  }
38
42
  /** One ordered survivor, or a recorded regime rejection. @internal */
39
43
  export type ChainPipelineResult = ChainConfirmationRecord | ChainRestatementRecord | ChainStubRecord | ChainRegimeMismatch;
44
+ /**
45
+ * Dimensioned leaves of the composed formula, excluding the target name.
46
+ * The names are the MathTS symbol filter. A dimensionless constant is not
47
+ * a governing symbol. The elementary charge is, because its dimension is
48
+ * charge.
49
+ *
50
+ * @internal
51
+ */
52
+ export declare function governingOf(expr: ExprNode, targetName: string): {
53
+ name: string;
54
+ dim: Dimension;
55
+ }[];
56
+ /**
57
+ * The category claim recorded for two quantity edges.
58
+ *
59
+ * A quantity edge stores a quantity name, not a category object id.
60
+ * This step does not invent that id, so the recorded result is unset
61
+ * even when both edges store a relation. The pair is not dropped.
62
+ *
63
+ * @internal
64
+ */
65
+ export declare function categoryCompositionForChain(first: BridgeEdge, second: BridgeEdge): CompositionResult | undefined;
66
+ /**
67
+ * The orchestrator view of one {@link ChainRecord}.
68
+ *
69
+ * A confirmation and a restatement ignore `mismatch`. A provisional
70
+ * record with a mismatch is that rejection. Any other provisional record
71
+ * is a stub whose id and theorem come from the same record the order key
72
+ * reads.
73
+ *
74
+ * @internal
75
+ */
76
+ export declare function renderChainRecord(record: ChainRecord, seedTheorems?: readonly string[]): ChainPipelineResult;
40
77
  /**
41
78
  * Run the pipeline on `edges`.
42
79
  *
@@ -1 +1 @@
1
- {"version":3,"file":"chain-pipeline.d.ts","sourceRoot":"","sources":["../../src/atlas/chain-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAUzD,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,gCAAgC,CAAC;AAKxC,2FAA2F;AAC3F,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,6FAA6F;AAC7F,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,sEAAsE;AACtE,MAAM,MAAM,mBAAmB,GAC3B,uBAAuB,GACvB,sBAAsB,GACtB,eAAe,GACf,mBAAmB,CAAC;AA6HxB;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,mBAAmB,EAAE,CA2B7F"}
1
+ {"version":3,"file":"chain-pipeline.d.ts","sourceRoot":"","sources":["../../src/atlas/chain-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAIzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAI3E,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAsB,KAAK,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAK9F,2FAA2F;AAC3F,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,6FAA6F;AAC7F,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,sEAAsE;AACtE,MAAM,MAAM,mBAAmB,GAC3B,uBAAuB,GACvB,sBAAsB,GACtB,eAAe,GACf,mBAAmB,CAAC;AAYxB;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,SAAS,CAAA;CAAE,EAAE,CASlG;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,UAAU,GACjB,iBAAiB,GAAG,SAAS,CAI/B;AAyCD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,YAAY,GAAE,SAAS,MAAM,EAAO,GACnC,mBAAmB,CAyBrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,mBAAmB,EAAE,CAwC7F"}
@@ -19,10 +19,12 @@ import { CONSTANTS } from '../dimensional/symbolic-constants.js';
19
19
  import { enumerateCompositions } from '../composition/enumerate.js';
20
20
  import { buckinghamFilter } from '../composition/buckingham-filter.js';
21
21
  import { matchChain } from '../composition/chain-match.js';
22
- import { compareChainEdgeIds, orderChainCandidates, } from '../composition/chain-candidate.js';
23
- import { joinRegimeMismatch, } from '../composition/chain-regime.js';
22
+ import { compareChainEdgeIds } from '../composition/chain-candidate.js';
23
+ import { chainOrderKey, orderChainRecords, } from '../composition/chain-result.js';
24
+ import { joinRegimeMismatch } from '../composition/chain-regime.js';
24
25
  import { bridgeSeedKeys, physjsTheorem } from './physjs-ref.js';
25
26
  import { emitProofTarget } from './proof-target.js';
27
+ import { scalarSymbolsFromMathTs } from '../composition/mathts-scalar-symbols.js';
26
28
  function isNumericName(name) {
27
29
  return /^\d+(\.\d+)?$/.test(name);
28
30
  }
@@ -32,110 +34,113 @@ function isDimensionlessConstant(name) {
32
34
  const registered = CONSTANTS[name];
33
35
  return registered !== undefined && equals(registered.dim, DIMENSIONLESS);
34
36
  }
35
- function collectSymbols(expr, out) {
36
- switch (expr.kind) {
37
- case 'symbol':
38
- out.set(expr.name, expr.dim);
39
- return;
40
- case 'op':
41
- for (const arg of expr.args)
42
- collectSymbols(arg, out);
43
- return;
44
- case 'integral':
45
- collectSymbols(expr.over, out);
46
- collectSymbols(expr.integrand, out);
47
- return;
48
- case 'derivative':
49
- collectSymbols(expr.of, out);
50
- collectSymbols(expr.wrt, out);
51
- return;
52
- case 'transcendental':
53
- case 'abs':
54
- case 'dirac-delta':
55
- collectSymbols(expr.arg, out);
56
- return;
57
- default:
58
- return;
59
- }
60
- }
61
- /** Dimensioned leaves of the composed formula, excluding the target name. */
62
- function governingOf(expr, targetName) {
63
- const dims = new Map();
64
- collectSymbols(expr, dims);
37
+ /**
38
+ * Dimensioned leaves of the composed formula, excluding the target name.
39
+ * The names are the MathTS symbol filter. A dimensionless constant is not
40
+ * a governing symbol. The elementary charge is, because its dimension is
41
+ * charge.
42
+ *
43
+ * @internal
44
+ */
45
+ export function governingOf(expr, targetName) {
65
46
  const vars = [];
66
- for (const [name, dim] of dims) {
67
- if (name === targetName)
47
+ for (const leaf of scalarSymbolsFromMathTs(expr)) {
48
+ if (leaf.name === targetName)
68
49
  continue;
69
- if (isNumericName(name) || isDimensionlessConstant(name))
50
+ if (isNumericName(leaf.name) || isDimensionlessConstant(leaf.name))
70
51
  continue;
71
- vars.push({ name, dim });
52
+ vars.push(leaf);
72
53
  }
73
54
  vars.sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0));
74
55
  return vars;
75
56
  }
76
- function toCandidate(classification, filter) {
77
- const theorem = filter.theorem ?? undefined;
57
+ /**
58
+ * The category claim recorded for two quantity edges.
59
+ *
60
+ * A quantity edge stores a quantity name, not a category object id.
61
+ * This step does not invent that id, so the recorded result is unset
62
+ * even when both edges store a relation. The pair is not dropped.
63
+ *
64
+ * @internal
65
+ */
66
+ export function categoryCompositionForChain(first, second) {
67
+ const relationsAreStored = first.relation !== undefined && second.relation !== undefined;
68
+ if (!relationsAreStored)
69
+ return undefined;
70
+ return undefined;
71
+ }
72
+ function theoremsFor(edgeIds) {
73
+ return edgeIds.map((id) => {
74
+ const name = physjsTheorem(id);
75
+ if (name === undefined) {
76
+ throw new Error(`chain pipeline: manifest copy has no theorem for seed '${id}'`);
77
+ }
78
+ return name;
79
+ });
80
+ }
81
+ function proofCandidate(record) {
82
+ const kind = chainOrderKey(record);
83
+ const theorem = record.theorem ?? undefined;
78
84
  const carried = theorem === undefined ? {} : { theorem };
79
- if (classification.kind === 'confirmation') {
85
+ if (record.classification.kind === 'confirmation') {
80
86
  return {
81
- kind: 'confirmation',
82
- edgeIds: classification.edgeIds,
83
- catalogId: classification.catalogId,
87
+ kind,
88
+ edgeIds: record.edgeIds,
89
+ catalogId: record.classification.catalogId,
84
90
  ...carried,
85
91
  };
86
92
  }
87
- if (classification.kind === 'restatement') {
93
+ if (record.classification.kind === 'restatement') {
88
94
  return {
89
- kind: 'restatement',
90
- edgeIds: classification.edgeIds,
91
- canonicalId: classification.canonicalId,
92
- restatesBridge: classification.restatesBridge,
95
+ kind,
96
+ edgeIds: record.edgeIds,
97
+ canonicalId: record.classification.canonicalId,
98
+ restatesBridge: record.classification.restatesBridge,
93
99
  ...carried,
94
100
  };
95
101
  }
96
- const kind = filter.theorem === 'PhysJS.Dimensional.monomial_form'
97
- ? 'unique-monomial'
98
- : 'unfixed-shape';
99
102
  return {
100
103
  kind,
101
- edgeIds: classification.edgeIds,
102
- id: classification.id,
104
+ edgeIds: record.edgeIds,
105
+ id: record.classification.id,
103
106
  ...carried,
104
107
  };
105
108
  }
106
- function theoremsFor(edgeIds) {
107
- return edgeIds.map((id) => {
108
- const name = physjsTheorem(id);
109
- if (name === undefined) {
110
- throw new Error(`chain pipeline: manifest copy has no theorem for seed '${id}'`);
111
- }
112
- return name;
113
- });
114
- }
115
- function emit(candidate) {
116
- if (candidate.kind === 'confirmation' && candidate.catalogId !== undefined) {
109
+ /**
110
+ * The orchestrator view of one {@link ChainRecord}.
111
+ *
112
+ * A confirmation and a restatement ignore `mismatch`. A provisional
113
+ * record with a mismatch is that rejection. Any other provisional record
114
+ * is a stub whose id and theorem come from the same record the order key
115
+ * reads.
116
+ *
117
+ * @internal
118
+ */
119
+ export function renderChainRecord(record, seedTheorems = []) {
120
+ if (record.classification.kind === 'confirmation') {
117
121
  return {
118
122
  kind: 'confirmation',
119
- catalogId: candidate.catalogId,
120
- edgeIds: candidate.edgeIds,
123
+ catalogId: record.classification.catalogId,
124
+ edgeIds: record.edgeIds,
121
125
  };
122
126
  }
123
- if (candidate.kind === 'restatement' &&
124
- candidate.canonicalId !== undefined &&
125
- candidate.restatesBridge !== undefined) {
127
+ if (record.classification.kind === 'restatement') {
126
128
  return {
127
129
  kind: 'restatement',
128
- canonicalId: candidate.canonicalId,
129
- restatesBridge: candidate.restatesBridge,
130
- edgeIds: candidate.edgeIds,
130
+ canonicalId: record.classification.canonicalId,
131
+ restatesBridge: record.classification.restatesBridge,
132
+ edgeIds: record.edgeIds,
131
133
  };
132
134
  }
133
- const id = candidate.id ?? `chain-${candidate.edgeIds.join('-')}`;
135
+ if (record.mismatch !== undefined)
136
+ return record.mismatch;
137
+ const candidate = proofCandidate(record);
138
+ const id = candidate.id ?? `chain-${record.edgeIds.join('-')}`;
134
139
  return {
135
140
  kind: 'stub',
136
141
  id,
137
- edgeIds: candidate.edgeIds,
138
- text: emitProofTarget({ ...candidate, id }, theoremsFor(candidate.edgeIds)),
142
+ edgeIds: record.edgeIds,
143
+ text: emitProofTarget({ ...candidate, id }, seedTheorems),
139
144
  };
140
145
  }
141
146
  /**
@@ -152,25 +157,36 @@ function emit(candidate) {
152
157
  export function runChainPipeline(edges) {
153
158
  const seedIds = new Set(bridgeSeedKeys());
154
159
  const report = enumerateCompositions(edges, { seedIds });
155
- const candidates = [];
160
+ const records = [];
156
161
  const rejections = [];
157
162
  for (const target of report.proofTargets) {
158
163
  const filtered = buckinghamFilter({ name: target.second.target.name, dim: target.second.target.dim }, governingOf(target.expr, target.second.target.name));
159
164
  if (filtered === undefined)
160
165
  continue;
161
166
  const classification = matchChain(target.expr, [target.first.id, target.second.id]);
167
+ const edgeIds = [target.first.id, target.second.id];
168
+ const record = {
169
+ edgeIds,
170
+ classification,
171
+ theorem: filtered.theorem,
172
+ mismatch: undefined,
173
+ categoryComposition: categoryCompositionForChain(target.first, target.second),
174
+ };
162
175
  if (classification.kind === 'confirmation' || classification.kind === 'restatement') {
163
- candidates.push(toCandidate(classification, filtered));
176
+ records.push(record);
164
177
  continue;
165
178
  }
166
179
  const mismatch = joinRegimeMismatch(target.first, target.second);
167
180
  if (mismatch !== undefined) {
168
- rejections.push(mismatch);
181
+ rejections.push({ ...record, mismatch });
169
182
  continue;
170
183
  }
171
- candidates.push(toCandidate(classification, filtered));
184
+ records.push(record);
172
185
  }
173
186
  const orderedRejections = [...rejections].sort((a, b) => compareChainEdgeIds(a.edgeIds, b.edgeIds));
174
- return [...orderChainCandidates(candidates).map(emit), ...orderedRejections];
187
+ return [
188
+ ...orderChainRecords(records).map((record) => renderChainRecord(record, theoremsFor(record.edgeIds))),
189
+ ...orderedRejections.map((record) => renderChainRecord(record)),
190
+ ];
175
191
  }
176
192
  //# sourceMappingURL=chain-pipeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chain-pipeline.js","sourceRoot":"","sources":["../../src/atlas/chain-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GAErB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,kBAAkB,GAEnB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAgCpD,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAY;IAC3C,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,cAAc,CAAC,IAAc,EAAE,GAA2B;IACjE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO;QACT,KAAK,IAAI;YACP,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI;gBAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACtD,OAAO;QACT,KAAK,UAAU;YACb,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC/B,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACpC,OAAO;QACT,KAAK,YAAY;YACf,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC7B,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO;QACT,KAAK,gBAAgB,CAAC;QACtB,KAAK,KAAK,CAAC;QACX,KAAK,aAAa;YAChB,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO;QACT;YACE,OAAO;IACX,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,SAAS,WAAW,CAAC,IAAc,EAAE,UAAkB;IACrD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC1C,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAuC,EAAE,CAAC;IACpD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC/B,IAAI,IAAI,KAAK,UAAU;YAAE,SAAS;QAClC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC;YAAE,SAAS;QACnE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAClB,cAAmC,EACnC,MAA8B;IAE9B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;IAC5C,MAAM,OAAO,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;IACzD,IAAI,cAAc,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAC3C,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,cAAc,CAAC,OAAO;YAC/B,SAAS,EAAE,cAAc,CAAC,SAAS;YACnC,GAAG,OAAO;SACX,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC1C,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,cAAc,CAAC,OAAO;YAC/B,WAAW,EAAE,cAAc,CAAC,WAAW;YACvC,cAAc,EAAE,cAAc,CAAC,cAAc;YAC7C,GAAG,OAAO;SACX,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,KAAK,kCAAkC;QAChE,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,eAAe,CAAC;IACpB,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,cAAc,CAAC,OAAO;QAC/B,EAAE,EAAE,cAAc,CAAC,EAAE;QACrB,GAAG,OAAO;KACX,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,OAA0B;IAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,0DAA0D,EAAE,GAAG,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,IAAI,CAAC,SAAyB;IACrC,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC3E,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,OAAO,EAAE,SAAS,CAAC,OAAO;SAC3B,CAAC;IACJ,CAAC;IACD,IACE,SAAS,CAAC,IAAI,KAAK,aAAa;QAChC,SAAS,CAAC,WAAW,KAAK,SAAS;QACnC,SAAS,CAAC,cAAc,KAAK,SAAS,EACtC,CAAC;QACD,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,OAAO,EAAE,SAAS,CAAC,OAAO;SAC3B,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,IAAI,SAAS,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAClE,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,EAAE;QACF,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,IAAI,EAAE,eAAe,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;KAC5E,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACzD,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,MAAM,UAAU,GAA0B,EAAE,CAAC;IAC7C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,gBAAgB,CAC/B,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAClE,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CACpD,CAAC;QACF,IAAI,QAAQ,KAAK,SAAS;YAAE,SAAS;QACrC,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACpF,IAAI,cAAc,CAAC,IAAI,KAAK,cAAc,IAAI,cAAc,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACpF,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;YACvD,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,iBAAiB,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACtD,mBAAmB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAC1C,CAAC;IACF,OAAO,CAAC,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,iBAAiB,CAAC,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"chain-pipeline.js","sourceRoot":"","sources":["../../src/atlas/chain-pipeline.ts"],"names":[],"mappings":"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"}
@@ -20,11 +20,37 @@ export declare const PROOF_TARGET_DRAFT_BEGIN = "PROOF-TARGET-DRAFT-BEGIN";
20
20
  /** Marker after the draft object. @internal */
21
21
  export declare const PROOF_TARGET_DRAFT_END = "PROOF-TARGET-DRAFT-END";
22
22
  /**
23
- * Lean 4 statement skeleton and the theorem chain it would compose.
23
+ * The draft the comment block renders.
24
+ *
25
+ * The fields are the ones the comment's JSON already carries.
26
+ * `leanProof` stays `absent`. This value is not a manifest entry.
27
+ *
28
+ * @internal
29
+ */
30
+ export interface ProofTargetDraft {
31
+ readonly key: string;
32
+ readonly bridgeId: string;
33
+ readonly theorem: string;
34
+ readonly covers: string;
35
+ readonly coverage: string;
36
+ readonly leanProof: 'absent';
37
+ readonly axioms: readonly string[];
38
+ }
39
+ /**
40
+ * The draft `emitProofTarget` renders into the comment block.
24
41
  *
25
42
  * `seedTheorems` is one PhysJS theorem name per seed step, in chain order.
26
43
  * A name that disagrees with the compiled manifest copy is refused.
27
- * The returned text is not written anywhere.
44
+ * The object is not written anywhere.
45
+ *
46
+ * @internal
47
+ */
48
+ export declare function proofTargetDraft(candidate: ChainCandidate, seedTheorems: readonly string[]): ProofTargetDraft;
49
+ /**
50
+ * Lean 4 statement skeleton and the theorem chain it would compose.
51
+ *
52
+ * The comment lines and the JSON between the markers are
53
+ * {@link proofTargetDraft}. The returned text is not written anywhere.
28
54
  *
29
55
  * @internal
30
56
  */
@@ -1 +1 @@
1
- {"version":3,"file":"proof-target.d.ts","sourceRoot":"","sources":["../../src/atlas/proof-target.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGxE,8EAA8E;AAC9E,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AAEnE,+CAA+C;AAC/C,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AA0F/D;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,cAAc,EACzB,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,MAAM,CAyCR"}
1
+ {"version":3,"file":"proof-target.d.ts","sourceRoot":"","sources":["../../src/atlas/proof-target.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGxE,8EAA8E;AAC9E,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AAEnE,+CAA+C;AAC/C,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AA0F/D;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,cAAc,EACzB,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,gBAAgB,CAYlB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,cAAc,EACzB,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,MAAM,CA6BR"}
@@ -91,20 +91,38 @@ function assertTheorems(candidate, seedTheorems) {
91
91
  }
92
92
  }
93
93
  /**
94
- * Lean 4 statement skeleton and the theorem chain it would compose.
94
+ * The draft `emitProofTarget` renders into the comment block.
95
95
  *
96
96
  * `seedTheorems` is one PhysJS theorem name per seed step, in chain order.
97
97
  * A name that disagrees with the compiled manifest copy is refused.
98
- * The returned text is not written anywhere.
98
+ * The object is not written anywhere.
99
99
  *
100
100
  * @internal
101
101
  */
102
- export function emitProofTarget(candidate, seedTheorems) {
102
+ export function proofTargetDraft(candidate, seedTheorems) {
103
103
  assertTheorems(candidate, seedTheorems);
104
104
  const key = targetKey(candidate);
105
- const covers = coversLine(candidate);
105
+ return {
106
+ key,
107
+ bridgeId: key,
108
+ theorem: leanIdent(key),
109
+ covers: coversLine(candidate),
110
+ coverage: 'statement skeleton only',
111
+ leanProof: 'absent',
112
+ axioms: [],
113
+ };
114
+ }
115
+ /**
116
+ * Lean 4 statement skeleton and the theorem chain it would compose.
117
+ *
118
+ * The comment lines and the JSON between the markers are
119
+ * {@link proofTargetDraft}. The returned text is not written anywhere.
120
+ *
121
+ * @internal
122
+ */
123
+ export function emitProofTarget(candidate, seedTheorems) {
124
+ const draft = proofTargetDraft(candidate, seedTheorems);
106
125
  const theorem = dimensionalTheorem(candidate);
107
- const statement = leanIdent(key);
108
126
  const lines = [
109
127
  '-- PROOF TARGET',
110
128
  '-- statement skeleton only',
@@ -120,20 +138,11 @@ export function emitProofTarget(candidate, seedTheorems) {
120
138
  for (const name of seedTheorems) {
121
139
  lines.push(`-- theorem: ${name}`);
122
140
  }
123
- lines.push('', `-- covers: ${covers}`, '');
141
+ lines.push('', `-- covers: ${draft.covers}`, '');
124
142
  if (theorem !== undefined) {
125
143
  lines.push('-- Dim : Fin 7 → ℚ', '-- base order: L, M, T, I, Theta, N, J', '');
126
144
  }
127
- lines.push(`-- target id: ${key}`, `-- statement: ${statement} : Prop`, '');
128
- const draft = {
129
- key,
130
- bridgeId: key,
131
- theorem: statement,
132
- covers,
133
- coverage: 'statement skeleton only',
134
- leanProof: 'absent',
135
- axioms: [],
136
- };
145
+ lines.push(`-- target id: ${draft.key}`, `-- statement: ${draft.theorem} : Prop`, '');
137
146
  lines.push(PROOF_TARGET_DRAFT_BEGIN, JSON.stringify(draft, null, 2), PROOF_TARGET_DRAFT_END, '');
138
147
  return lines.join('\n');
139
148
  }
@@ -1 +1 @@
1
- {"version":3,"file":"proof-target.js","sourceRoot":"","sources":["../../src/atlas/proof-target.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proof-target.js","sourceRoot":"","sources":["../../src/atlas/proof-target.ts"],"names":[],"mappings":"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"}
@@ -80,7 +80,7 @@ export declare function claimReport(claim: RouteClaim): import("../../cli-api.js
80
80
  kind: 'bound';
81
81
  bound: import("../../atlas/error-algebra.js").BoundPair;
82
82
  terminal: boolean;
83
- relation: import("../../atlas/types.js").RelationType;
83
+ relation: import("../../cli-api.js").RelationType;
84
84
  norm: string | null;
85
85
  transports: {
86
86
  index: number;
@@ -1 +1 @@
1
- {"version":3,"file":"atlas.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/atlas.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAmB,KAAK,OAAO,EAAmB,MAAM,eAAe,CAAC;AA0B/E,0DAA0D;AAC1D,UAAU,UAAU;IAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,GAAG;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAIA;AAgfD,eAAO,MAAM,OAAO,EAAE,OASrB,CAAC"}
1
+ {"version":3,"file":"atlas.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/atlas.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAmB,KAAK,OAAO,EAAmB,MAAM,eAAe,CAAC;AAyB/E,0DAA0D;AAC1D,UAAU,UAAU;IAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,GAAG;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAIA;AAgfD,eAAO,MAAM,OAAO,EAAE,OASrB,CAAC"}
@@ -2,7 +2,6 @@ import { registerCommand } from '../command.js';
2
2
  import { commandHelp, JSON_FLAG } from '../flag-help.js';
3
3
  import { CliError, EXIT_CHECK_FAILED } from '../errors.js';
4
4
  import { emitJson } from '../output.js';
5
- import { catalogFormalRef } from '../../atlas/catalog-formal-ref.js';
6
5
  import { atlasEvidenceText, buildAtlasEvidenceView, loadStoredResults, runResults } from './_atlas-map.js';
7
6
  const FLAGS = [
8
7
  {
@@ -91,7 +90,7 @@ function catalogEquationNumber(raw) {
91
90
  * `formally-proved` tag.
92
91
  */
93
92
  function emitCatalogFormalRef(entry, wantJson, ctx) {
94
- const ref = catalogFormalRef(entry.id);
93
+ const ref = ctx.api.catalogFormalRef(entry.id);
95
94
  if (ref === undefined) {
96
95
  throw new CliError(`upt atlas: be-${entry.id} is a catalog equation and has no formalRef (\`upt atlas\` lists atlas bridges)`);
97
96
  }