{
 "generated": "2026-10-16T12:32:09.866640Z",
 "about": "Hand-curated correspondence between the numbered statements of PAPER_v2_narrative.md and the Lean declarations of the unified SurfaceBlowup codebase. build.py resolves every Lean name below against the sources (file, line range, docstring, statement, Prove2Me node) and writes data/paper_lean_map.json. Relations: exact = the Lean statement says the same thing (up to encoding); definition = the paper's construction is the Lean definition (and, where listed, the theorem that it means what the paper says); specialization = proved in a special setting (e.g. only on the concrete surfaces O[[T,X]]/(pi - u T^a X^b), or only for a = b = 1); covered = no single Lean statement, the listed declarations jointly establish the content, often in a restructured form; check = only particular instances are machine-checked; none = not formalized (declarations listed, if any, are ingredients only). Confidence is the curator's confidence in the correspondence, not in the mathematics.",
 "sources": {
  "paper": "../PAPER_v2_narrative.md",
  "paper_sha256": "3a036cc5e61bebf756ed3fad4eea72663da5c89262a5e1b4c20ad2bd17206ea1",
  "lean_root": "~/prove2me_workspace/final/unified",
  "lean_files": 66,
  "prove2me_catalog": "../blueprint/catalog.json"
 },
 "prove2me": {
  "url_template": "https://prove2.me/theorems/{theorem_id}",
  "url_template_status": "UNVERIFIED: the API documents only https://prove2.me/api/v1/theorems/{theorem_id}; the public page pattern is a guess (OWNER: confirm)",
  "tree_visibility": "PRIVATE",
  "note": "The SurfaceBlowupV2 tree (1201 nodes, incl. main_field_form N660 and recip_main N1319) is published PRIVATE on Prove2Me; links resolve only for the owner's account until it is made public. main_dvr (the general-DVR theorem) and the unified SurfaceBlowup codebase are not on Prove2Me."
 },
 "relations": {
  "exact": "exact",
  "definition": "definition",
  "specialization": "specialization",
  "covered": "covered by lemmas",
  "check": "instances checked",
  "none": "not formalized"
 },
 "stats": {
  "total": 82,
  "with_lean_counterpart": 70,
  "exact": 32,
  "partial": 38,
  "not_formalized": 12,
  "by_relation": {
   "exact": 14,
   "definition": 18,
   "specialization": 8,
   "covered": 28,
   "check": 2,
   "none": 12
  },
  "labelled_statements": {
   "total": 32,
   "by_relation": {
    "exact": 6,
    "definition": 0,
    "specialization": 7,
    "covered": 14,
    "check": 1,
    "none": 4
   }
  }
 },
 "entries": [
  {
   "id": "eq-1.1",
   "kind": "display",
   "relation": "covered",
   "confidence": "high",
   "summary": "The monic half, Pr(ramified) = 1/(q+1) over every complete DVR, is the Lean corollary monicDensity_two_ramified (derived from main_dvr). The cluster half, q/(q+1), is the (2a,1)-coefficient of the law of S(a;2) (private regression lemma single_two_law, at a = 1) combined with root_cell_law, which identifies that law with the X² coefficient model; no single Lean statement states it as a probability.",
   "label": "(1.3)",
   "title": "the reciprocal pair of quadratic probabilities",
   "anchor": {
    "eq": "1.3"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.Tests.monicDensity_two_ramified",
     "role": "monic half, as a density over every complete DVR",
     "kind": "theorem",
     "private": false,
     "file": "Tests/Regression.lean",
     "line_start": 1947,
     "line_end": 1953,
     "decl_line": 1949,
     "docstring": "Over any complete DVR with finite residue field of cardinality `q`, a random monic quadratic\nis ramified (type `(2,1)`) with probability `1 / (q + 1)`.",
     "statement": "theorem monicDensity_two_ramified (htop : IsAdic (maximalIdeal O)) :\n    monicDensity O 2 {(2,1)} = ENNReal.ofReal (1 / (Nat.card (ResidueField O) + 1))",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n  [IsAdicComplete (maximalIdeal O) O] [Finite (ResidueField O)] [TopologicalSpace O]\n  [IsTopologicalRing O] [CompactSpace O] [T2Space O] [SecondCountableTopology O]\n  [MeasurableSpace O] [BorelSpace O]",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.Tests.monicExpr_two_eval",
     "role": "A_2 for every q > 1",
     "kind": "theorem",
     "private": false,
     "file": "Tests/Regression.lean",
     "line_start": 1143,
     "line_end": 1157,
     "decl_line": 1146,
     "docstring": "**Quadratic monic densities.** For every `q > 1`, the universal monic expressions of degree `2`\ntake the values `q / (2(q + 1))` (split and inert types) and `1 / (q + 1)` (ramified type), and\nvanish on every other type.",
     "statement": "theorem monicExpr_two_eval (q : ℚ) (hq : 1 < q) (σ : FactorType) :\n    (monicExpr 2 σ).eval q =\n      (if σ = {(1,1), (1,1)} then q / (2 * (q + 1)) else 0) +\n      (if σ = {(1,2)} then q / (2 * (q + 1)) else 0) +\n      (if σ = {(2,1)} then 1 / (q + 1) else 0)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N094",
       "theorem_name": "SurfaceBlowupV2.quadratic_monic_formula",
       "kind": "theorem",
       "theorem_id": "2a69eb14-993d-4d76-894c-c70e5bbf74ea",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2a69eb14-993d-4d76-894c-c70e5bbf74ea",
       "blueprint_source": "§1 table and §10.1"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.Tests.single_two_law",
     "role": "law of S(a;2): the X² half at a = 1 (private)",
     "kind": "theorem",
     "private": true,
     "file": "Tests/Regression.lean",
     "line_start": 1018,
     "line_end": 1113,
     "decl_line": 1020,
     "docstring": "The tangent-point patterns of `S(a;2)`: a transverse tangent with a node, a double point, a\npoint of contact two (a self pattern) and a point of degree two.",
     "statement": "private theorem single_two_law (a : ℕ) (ha : 0 < a) (q : ℚ) (hq : 1 < q) (σ : FactorType) :\n    coeffAt q (stateLaw (.single a 2)) σ = (if σ = {(2*a,1)} then q/(q+1) else 0) +\n      (if σ = {(a,1),(a,1)} then 1/(2*(q+1)) else 0) +\n      (if σ = {(a,2)} then 1/(2*(q+1)) else 0)",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.root_cell_law",
     "role": "the X^r coefficient model has law F_{S(1;r)}",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/RootCellLaw.lean",
     "line_start": 1361,
     "line_end": 1363,
     "decl_line": 1362,
     "docstring": "**The root cell law** holds unconditionally.",
     "statement": "theorem root_cell_law : RootCellLaw",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1109",
       "theorem_name": "SurfaceBlowupV2.root_cell_law",
       "kind": "theorem",
       "theorem_id": "38c7bdb6-1562-4e52-83b8-82c7e26fc1cc",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/38c7bdb6-1562-4e52-83b8-82c7e26fc1cc",
       "blueprint_source": "Lemma 9.1 (the repeated-root cell) on the concrete surface O[[x]] with Theorem 8.1; cycle 8"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "def-type",
   "kind": "definition",
   "relation": "definition",
   "confidence": "high",
   "summary": "A type is a multiset of pairs (e,f); its degree is Σ e·f. ValidType requires e, f ≥ 1.",
   "label": "Type of degree n",
   "title": "factorization types",
   "anchor": {
    "bold": "type"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.FactorType",
     "role": "types",
     "kind": "abbrev",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 51,
     "line_end": 53,
     "decl_line": 53,
     "docstring": "A factorization type: a multiset of pairs `(e, f)` (ramification index, residue degree), one per\nirreducible factor.",
     "statement": "abbrev FactorType := Multiset (ℕ × ℕ)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N001",
       "theorem_name": "SurfaceBlowupV2.Types",
       "kind": "definition",
       "theorem_id": "2789af69-8e3f-4e25-9dfd-28fa41b1365c",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2789af69-8e3f-4e25-9dfd-28fa41b1365c",
       "blueprint_source": "§1 and (8.1)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.typeDegree",
     "role": "degree Σ e f",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 55,
     "line_end": 56,
     "decl_line": 56,
     "docstring": "The degree `∑ e·f` of a factorization type.",
     "statement": "def typeDegree (σ : FactorType) : ℕ := (σ.map fun z => z.1 * z.2).sum",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N001",
       "theorem_name": "SurfaceBlowupV2.Types",
       "kind": "definition",
       "theorem_id": "2789af69-8e3f-4e25-9dfd-28fa41b1365c",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2789af69-8e3f-4e25-9dfd-28fa41b1365c",
       "blueprint_source": "§1 and (8.1)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.ValidType",
     "role": "positivity of the pairs",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 58,
     "line_end": 59,
     "decl_line": 59,
     "docstring": "A type is valid if all its pairs have `e, f ≥ 1`.",
     "statement": "def ValidType (σ : FactorType) : Prop := ∀ z ∈ σ, 0 < z.1 ∧ 0 < z.2",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N001",
       "theorem_name": "SurfaceBlowupV2.Types",
       "kind": "definition",
       "theorem_id": "2789af69-8e3f-4e25-9dfd-28fa41b1365c",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2789af69-8e3f-4e25-9dfd-28fa41b1365c",
       "blueprint_source": "§1 and (8.1)"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "def-monic-model",
   "kind": "definition",
   "relation": "definition",
   "confidence": "high",
   "summary": "monicDensity O n σ is the normalized Haar measure of the coefficient vectors a ∈ Oⁿ for which X^n + Σ aᵢXⁱ is a product of distinct monic irreducibles over Frac O whose invariants form σ. The invariant (e,f) of a factor is read from the integral closure of O in its root field (factorInvariant). This is the trust boundary: the definitions are owner-signed.",
   "label": "Monic model",
   "title": "monic type probability",
   "anchor": {
    "eq": "1.1"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.monicDensity",
     "role": "the monic density",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 425,
     "line_end": 427,
     "decl_line": 426,
     "docstring": "The probability that a random monic polynomial of degree `n` over `O` has type `σ`.",
     "statement": "noncomputable def monicDensity (n : ℕ) (σ : FactorType) : ℝ≥0∞ :=\n  coefficientMeasure O n {a | HasPolynomialType O (monicPolynomial O a) σ}",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]\n  [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n  [SecondCountableTopology O]\n  [MeasurableSpace O] [BorelSpace O]",
     "prove2me": [
      {
       "node": "N008",
       "theorem_name": "SurfaceBlowupV2.Density",
       "kind": "definition",
       "theorem_id": "3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "blueprint_source": "§1, §9.1; explicit integral-closure convention"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.coefficientMeasure",
     "role": "normalized Haar measure on Oⁿ",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 421,
     "line_end": 423,
     "decl_line": 422,
     "docstring": "The normalized Haar (probability) measure on `Oⁿ`.",
     "statement": "noncomputable def coefficientMeasure (n : ℕ) : Measure (Fin n → O) :=\n  (Measure.addHaar (G := Fin n → O) Set.univ)⁻¹ • Measure.addHaar (G := Fin n → O)",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]\n  [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n  [SecondCountableTopology O]\n  [MeasurableSpace O] [BorelSpace O]",
     "prove2me": [
      {
       "node": "N008",
       "theorem_name": "SurfaceBlowupV2.Density",
       "kind": "definition",
       "theorem_id": "3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "blueprint_source": "§1, §9.1; explicit integral-closure convention"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.monicPolynomial",
     "role": "X^n + Σ aᵢ Xⁱ",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 392,
     "line_end": 395,
     "decl_line": 393,
     "docstring": "The monic polynomial `X^n + ∑ aᵢ Xⁱ`.",
     "statement": "def monicPolynomial {n : ℕ} (a : Fin n → O) : Polynomial (BaseField O) :=\n  Polynomial.X^n + ∑ i : Fin n,\n    Polynomial.C (algebraMap O (BaseField O) (a i)) * Polynomial.X^i.val",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]",
     "prove2me": [
      {
       "node": "N008",
       "theorem_name": "SurfaceBlowupV2.Density",
       "kind": "definition",
       "theorem_id": "3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "blueprint_source": "§1, §9.1; explicit integral-closure convention"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.HasPolynomialType",
     "role": "type of a squarefree polynomial",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 386,
     "line_end": 390,
     "decl_line": 387,
     "docstring": "`F` is the product of distinct monic irreducibles whose invariants form the type `σ`.",
     "statement": "def HasPolynomialType (F : Polynomial (BaseField O)) (σ : FactorType) : Prop :=\n  ∃ gs : List (Polynomial (BaseField O)),\n    (∀ g ∈ gs, g.Monic ∧ Irreducible g) ∧ gs.Pairwise (fun g h => g ≠ h) ∧\n    F=gs.prod ∧ σ=(gs.map (factorInvariant O) : Multiset (ℕ × ℕ))",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]",
     "prove2me": [
      {
       "node": "N008",
       "theorem_name": "SurfaceBlowupV2.Density",
       "kind": "definition",
       "theorem_id": "3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "blueprint_source": "§1, §9.1; explicit integral-closure convention"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.factorInvariant",
     "role": "(e,f) of an irreducible factor",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 375,
     "line_end": 384,
     "decl_line": 378,
     "docstring": "The invariant `(e, f)` of an irreducible `g`: ramification index and inertia degree of the\nmaximal ideal of the integral closure of `O` in `Frac(O)[X]/(g)` when that closure is local (junk\nvalue `(0, 0)` otherwise).",
     "statement": "noncomputable def factorInvariant (g : Polynomial (BaseField O)) : ℕ × ℕ := by\n  classical\n  let B := integralClosure O (AdjoinRoot g)\n  exact if h : IsLocalRing B then\n    letI : IsLocalRing B := h\n    ((maximalIdeal B).ramificationIdx O, (maximalIdeal B).inertiaDeg O)\n  else (0,0)",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]",
     "prove2me": [
      {
       "node": "N008",
       "theorem_name": "SurfaceBlowupV2.Density",
       "kind": "definition",
       "theorem_id": "3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "blueprint_source": "§1, §9.1; explicit integral-closure convention"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "def-projective-model",
   "kind": "definition",
   "relation": "definition",
   "confidence": "high",
   "summary": "projectiveDensity O n σ is the conditional Haar measure of type σ among primitive vectors of O^{n+1}. A drop in degree contributes the point at infinity with type (1,1) (HasBinaryType). The paper's remark that unrestricted coefficients give the same law is not formalized.",
   "label": "Projective model",
   "title": "binary-form type probability",
   "anchor": {
    "para": "For $n\\ge1$, put"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.projectiveDensity",
     "role": "the projective density",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 429,
     "line_end": 432,
     "decl_line": 430,
     "docstring": "The probability that a random primitive binary form of degree `n` over `O` has type `σ`.",
     "statement": "noncomputable def projectiveDensity (n : ℕ) (σ : FactorType) : ℝ≥0∞ :=\n  coefficientMeasure O (n+1) {a | primitive O a ∧ HasBinaryType O a σ} /\n    coefficientMeasure O (n+1) {a | primitive O a}",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]\n  [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n  [SecondCountableTopology O]\n  [MeasurableSpace O] [BorelSpace O]",
     "prove2me": [
      {
       "node": "N008",
       "theorem_name": "SurfaceBlowupV2.Density",
       "kind": "definition",
       "theorem_id": "3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "blueprint_source": "§1, §9.1; explicit integral-closure convention"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.primitive",
     "role": "some coefficient is a unit",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 401,
     "line_end": 402,
     "decl_line": 402,
     "docstring": "Some coefficient is a unit.",
     "statement": "def primitive {n : ℕ} (a : Fin (n + 1) → O) : Prop := ∃ i, IsUnit (a i)",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]",
     "prove2me": [
      {
       "node": "N008",
       "theorem_name": "SurfaceBlowupV2.Density",
       "kind": "definition",
       "theorem_id": "3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "blueprint_source": "§1, §9.1; explicit integral-closure convention"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.HasBinaryType",
     "role": "type of a binary form",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 404,
     "line_end": 410,
     "decl_line": 406,
     "docstring": "The binary form with coefficients `a` has type `σ` (a missing top degree contributes the point\nat infinity, of type `(1, 1)`).",
     "statement": "def HasBinaryType {n : ℕ} (a : Fin (n + 1) → O) (σ : FactorType) : Prop :=\n  let F := affinePolynomial O a\n  F≠0 ∧ F.natDegree≤n ∧ n-F.natDegree≤1 ∧\n    ∃ τ, HasPolynomialType O (Polynomial.C F.leadingCoeff⁻¹ * F) τ ∧\n      σ=τ+Multiset.replicate (n-F.natDegree) (1,1)",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]",
     "prove2me": [
      {
       "node": "N008",
       "theorem_name": "SurfaceBlowupV2.Density",
       "kind": "definition",
       "theorem_id": "3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "blueprint_source": "§1, §9.1; explicit integral-closure convention"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.affinePolynomial",
     "role": "dehomogenized form",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 397,
     "line_end": 399,
     "decl_line": 398,
     "docstring": "The polynomial `∑ aᵢ Xⁱ` (the dehomogenized binary form).",
     "statement": "def affinePolynomial {n : ℕ} (a : Fin (n + 1) → O) : Polynomial (BaseField O) :=\n  ∑ i : Fin (n+1), Polynomial.C (algebraMap O (BaseField O) (a i)) * Polynomial.X^i.val",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]",
     "prove2me": [
      {
       "node": "N008",
       "theorem_name": "SurfaceBlowupV2.Density",
       "kind": "definition",
       "theorem_id": "3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3ca3196e-a775-4dcd-a219-a21d4e38b1a8",
       "blueprint_source": "§1, §9.1; explicit integral-closure convention"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "def-Z",
   "kind": "definition",
   "relation": "definition",
   "confidence": "high",
   "summary": "A law is a finite formal sum of types with rational-expression coefficients (Law); in the reciprocity part laws are read in Coef = ℚ(q)[Z_{e,f}] (lawCoef). Products of laws add types (lawMul).",
   "label": "Type variables Z_{e,f}",
   "title": "laws as polynomials in type variables",
   "anchor": {
    "para": "For $e,f\\ge1$, give commuting"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.Law",
     "role": "laws",
     "kind": "abbrev",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 148,
     "line_end": 149,
     "decl_line": 149,
     "docstring": "A law: a finite formal sum of factorization types with expression coefficients.",
     "statement": "abbrev Law := List (FactorType × Expr)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N004",
       "theorem_name": "SurfaceBlowupV2.Law",
       "kind": "definition",
       "theorem_id": "51563bd6-45f2-4b26-bd29-74eab08c2b24",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/51563bd6-45f2-4b26-bd29-74eab08c2b24",
       "blueprint_source": "(8.1), (8.5)–(8.6)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.lawMul",
     "role": "product of laws",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 160,
     "line_end": 161,
     "decl_line": 161,
     "docstring": "The product of laws (types add, coefficients multiply).",
     "statement": "def lawMul (L M : Law) : Law := L.flatMap fun z => M.map fun w => (z.1+w.1,.mul z.2 w.2)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N004",
       "theorem_name": "SurfaceBlowupV2.Law",
       "kind": "definition",
       "theorem_id": "51563bd6-45f2-4b26-bd29-74eab08c2b24",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/51563bd6-45f2-4b26-bd29-74eab08c2b24",
       "blueprint_source": "(8.1), (8.5)–(8.6)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.lawCoeff",
     "role": "coefficient of a type",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 166,
     "line_end": 168,
     "decl_line": 167,
     "docstring": "The total coefficient of the type `σ` in a law.",
     "statement": "def lawCoeff (L : Law) (σ : FactorType) : Expr :=\n  Expr.sum (L.map fun z => if z.1=σ then z.2 else .const 0)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N004",
       "theorem_name": "SurfaceBlowupV2.Law",
       "kind": "definition",
       "theorem_id": "51563bd6-45f2-4b26-bd29-74eab08c2b24",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/51563bd6-45f2-4b26-bd29-74eab08c2b24",
       "blueprint_source": "(8.1), (8.5)–(8.6)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.Coef",
     "role": "ℚ(q)[Z_{e,f}]",
     "kind": "abbrev",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 113,
     "line_end": 116,
     "decl_line": 116,
     "docstring": "The coefficient algebra ℚ(q)[Z_{e,f}]: finitely supported functions on types, multiplied by\nadding the multisets (the product of Z-monomials). A law becomes an element of this commutative\nring.",
     "statement": "abbrev Coef := AddMonoidAlgebra (RatFunc ℚ) FactorType",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1145",
       "theorem_name": "SurfaceBlowupV2.RecipCoef",
       "kind": "definition",
       "theorem_id": "3b42ea2d-4800-4d8c-aa95-00cc4e99f8af",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3b42ea2d-4800-4d8c-aa95-00cc4e99f8af",
       "blueprint_source": "RECIPROCITY_round1.md §1 (the algebra 𝒞) — restructured for Lean"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.lawCoef",
     "role": "a law as an element of Coef",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 121,
     "line_end": 122,
     "decl_line": 122,
     "docstring": "A law as an element of Coef: the sum over its entries of (rational value) · Z^{type}.",
     "statement": "def lawCoef (L : Law) : Coef := (L.map fun z ↦ AddMonoidAlgebra.single z.1 z.2.rational).sum",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1145",
       "theorem_name": "SurfaceBlowupV2.RecipCoef",
       "kind": "definition",
       "theorem_id": "3b42ea2d-4800-4d8c-aa95-00cc4e99f8af",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3b42ea2d-4800-4d8c-aa95-00cc4e99f8af",
       "blueprint_source": "RECIPROCITY_round1.md §1 (the algebra 𝒞) — restructured for Lean"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.Expr",
     "role": "rational expressions in q",
     "kind": "inductive",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 67,
     "line_end": 74,
     "decl_line": 68,
     "docstring": "Syntactic rational expressions in one variable (the residue cardinality `q`).",
     "statement": "inductive Expr where\n  | const (r : ℚ)\n  | var\n  | add (x y : Expr)\n  | mul (x y : Expr)\n  | inv (x : Expr)\n  deriving Repr, DecidableEq",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N003",
       "theorem_name": "SurfaceBlowupV2.Expressions",
       "kind": "definition",
       "theorem_id": "759c84ea-2abb-4a16-a4aa-feba0e1814ed",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/759c84ea-2abb-4a16-a4aa-feba0e1814ed",
       "blueprint_source": "restructured — explicit computation and denominator certificates for §§7–9"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "thm-1.1",
   "kind": "theorem",
   "relation": "covered",
   "confidence": "high",
   "summary": "Monic and projective clauses: exactly main_dvr — for every complete DVR O with finite residue field (any characteristic, any ramification; adic topology, Borel σ-algebra, normalized Haar measure), monicDensity O n σ and projectiveDensity O n σ are the values at q = |k| of the explicit expressions monicExpr n σ and projectiveExpr n σ, whose rational functions are A_σ and R_σ; regularity at every prime power is global_formula_regular, packaged with the ∃ A R form in main_field_form. Cluster clause: root_cell_law gives the cluster-model probability of every type as the coefficient of the law of S(1;n), but with the route-F type predicate (finite integral closures), which agrees with the étale convention off a Haar-null set; no Lean theorem states the cluster clause with the published density definitions (the paper's Remark 1.3 also restricts the formal claim to the monic and projective laws). The hypotheses 0 < n, ValidType σ, typeDegree σ = n of main_dvr are unused (frozen statement). Non-vacuity in equal characteristic: main_dvr_powerSeries.",
   "label": "Theorem 1.1",
   "title": "universal type laws",
   "paper_line": 96,
   "anchor": {
    "statement": "thm-1.1"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.main_dvr",
     "role": "the theorem, every complete DVR",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Main.lean",
     "line_start": 31,
     "line_end": 51,
     "decl_line": 40,
     "docstring": "**Main theorem.** Let `O` be a complete discrete valuation ring with finite residue field `k`\n(any characteristic, any ramification), with its maximal-ideal-adic compact topology, Borel\nσ-algebra and normalized Haar measure. For every degree `n` and every factorization type `σ`,\nthe probability that a random monic polynomial of degree `n` over `O` (resp. a random primitive\nbinary form of degree `n`) has type `σ` is the value at `q = |k|` of the universal rational\nexpression `monicExpr n σ` (resp. `projectiveExpr n σ`).\n\nThe statement carries no hypotheses on `n` and `σ`: the certified form assumed `0 < n`,\n`ValidType σ` and `typeDegree σ = n`, none of which the proof uses.",
     "statement": "theorem main_dvr (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] [TopologicalSpace O] [IsTopologicalRing O]\n    [CompactSpace O] [T2Space O] [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]\n    (htop : IsAdic (IsLocalRing.maximalIdeal O))\n    (n : ℕ) (σ : FactorType) :\n    SurfaceBlowup.monicDensity O n σ =\n        densityValue (monicExpr n σ) (Nat.card (IsLocalRing.ResidueField O)) ∧\n    SurfaceBlowup.projectiveDensity O n σ =\n        densityValue (projectiveExpr n σ) (Nat.card (IsLocalRing.ResidueField O))",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.main_field_form",
     "role": "rational-function form for unramified K/ℚ_p (the published, owner-signed statement)",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Main.lean",
     "line_start": 53,
     "line_end": 91,
     "decl_line": 56,
     "docstring": "**Field form** (unramified `K/ℚ_p`): the densities are values of explicit rational functions\n`A = (monicExpr n σ).rational`, `R = (projectiveExpr n σ).rational`, regular at every prime power,\nevaluated at the residue cardinality of the ring of integers.",
     "statement": "theorem main_field_form (n : ℕ) (σ : FactorType) :\n    ∃ A R : RatFunc ℚ, A = (monicExpr n σ).rational ∧ R = (projectiveExpr n σ).rational ∧\n      (∀ q : ℕ, PrimePower q → RegularAt A q ∧ RegularAt R q) ∧\n      (∀ q : ℕ, PrimePower q → RatFunc.eval (RingHom.id ℚ) q A = (monicExpr n σ).eval q ∧\n        RatFunc.eval (RingHom.id ℚ) q R = (projectiveExpr n σ).eval q) ∧\n      ∀ (p : ℕ) [Fact p.Prime] (K : Type) [Field K] [Algebra ℚ_[p] K] [Algebra ℤ_[p] K]\n        [IsScalarTower ℤ_[p] ℚ_[p] K] [FiniteDimensional ℚ_[p] K]\n        [TopologicalSpace (padicIntegers p K)] [IsTopologicalRing (padicIntegers p K)]\n        [CompactSpace (padicIntegers p K)] [T2Space (padicIntegers p K)]\n        [SecondCountableTopology (padicIntegers p K)] [MeasurableSpace (padicIntegers p K)]\n        [BorelSpace (padicIntegers p K)],\n        PadicUnramified p K → IsAdic (Ideal.span {(p : padicIntegers p K)}) →\n          monicDensity (padicIntegers p K) n σ = densityValue (monicExpr n σ)\n            (Nat.card (padicIntegers p K ⧸ Ideal.span {(p : padicIntegers p K)})) ∧\n          projectiveDensity (padicIntegers p K) n σ = densityValue (projectiveExpr n σ)\n            (Nat.card (padicIntegers p K ⧸ Ideal.span {(p : padicIntegers p K)})) ∧\n          monicDensity (padicIntegers p K) n σ = ENNReal.ofReal ((RatFunc.eval (RingHom.id ℚ)\n            ((Nat.card (padicIntegers p K ⧸ Ideal.span {(p : padicIntegers p K)}) : ℕ) : ℚ) A :\n              ℚ) : ℝ) ∧\n          projectiveDensity (padicIntegers p K) n σ = ENNReal.ofReal ((RatFunc.eval (RingHom.id ℚ)\n            ((Nat.card (padicIntegers p K ⧸ Ideal.span {(p : padicIntegers p K)}) : ℕ) : ℚ) R :\n              ℚ) : ℝ)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N660",
       "theorem_name": "SurfaceBlowupV2.main_field_form",
       "kind": "theorem",
       "theorem_id": "fac4c0bb-38cc-48fb-98ca-2c2f1ccb0e34",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/fac4c0bb-38cc-48fb-98ca-2c2f1ccb0e34",
       "blueprint_source": "Theorem 1.1 — paper quantifiers over finite unramified K/Q_p; derived from N114 through the G0 transport nodes; literal A_σ(q) clauses since review round 2"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.main_field_form_ramified",
     "role": "rational-function form for every finite K/ℚ_p",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Main.lean",
     "line_start": 93,
     "line_end": 118,
     "decl_line": 97,
     "docstring": "**Field form, arbitrary finite `K/ℚ_p`** (ramified allowed): with the maximal-ideal-adic compact\ntopology on the ring of integers `𝒪_K = padicIntegers p K`, the monic and projective type densities\nare the values at `q = |𝒪_K/𝔪|` of the rational functions `(monicExpr n σ).rational`,\n`(projectiveExpr n σ).rational`.",
     "statement": "theorem main_field_form_ramified (n : ℕ) (σ : FactorType) (p : ℕ) [Fact p.Prime] (K : Type)\n    [Field K] [Algebra ℚ_[p] K] [Algebra ℤ_[p] K] [IsScalarTower ℤ_[p] ℚ_[p] K]\n    [FiniteDimensional ℚ_[p] K]\n    [TopologicalSpace (padicIntegers p K)] [IsTopologicalRing (padicIntegers p K)]\n    [CompactSpace (padicIntegers p K)] [T2Space (padicIntegers p K)]\n    [SecondCountableTopology (padicIntegers p K)] [MeasurableSpace (padicIntegers p K)]\n    [BorelSpace (padicIntegers p K)]\n    (had : letI := padicIntegers_isDVR p K; IsAdic (IsLocalRing.maximalIdeal (padicIntegers p K))) :\n    letI",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.global_formula_regular",
     "role": "regularity at prime powers",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Formula/StateCombinatorics.lean",
     "line_start": 575,
     "line_end": 581,
     "decl_line": 576,
     "docstring": "The global formula is regular at every prime power.",
     "statement": "theorem global_formula_regular (n : ℕ) (σ : FactorType) :\n    FormulaRegular n σ",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N060",
       "theorem_name": "SurfaceBlowupV2.global_formula_regular",
       "kind": "theorem",
       "theorem_id": "8bfbfcfe-0e52-4eb6-b9e0-12acde5a18db",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/8bfbfcfe-0e52-4eb6-b9e0-12acde5a18db",
       "blueprint_source": "Theorem 1.1 — regularity of the algorithm outputs"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.root_cell_law",
     "role": "cluster clause (route-F types)",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/RootCellLaw.lean",
     "line_start": 1361,
     "line_end": 1363,
     "decl_line": 1362,
     "docstring": "**The root cell law** holds unconditionally.",
     "statement": "theorem root_cell_law : RootCellLaw",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1109",
       "theorem_name": "SurfaceBlowupV2.root_cell_law",
       "kind": "theorem",
       "theorem_id": "38c7bdb6-1562-4e52-83b8-82c7e26fc1cc",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/38c7bdb6-1562-4e52-83b8-82c7e26fc1cc",
       "blueprint_source": "Lemma 9.1 (the repeated-root cell) on the concrete surface O[[x]] with Theorem 8.1; cycle 8"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.monicExpr",
     "role": "A_σ",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 360,
     "line_end": 361,
     "decl_line": 361,
     "docstring": "The universal monic density expression `A_n,σ(q)`.",
     "statement": "noncomputable def monicExpr (n : ℕ) (σ : FactorType) : Expr := lawCoeff (globalLaw false n) σ",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N007",
       "theorem_name": "SurfaceBlowupV2.Recursion",
       "kind": "definition",
       "theorem_id": "2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "blueprint_source": "(8.4), (8.6)–(8.7), (9.6)–(9.7)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.projectiveExpr",
     "role": "R_σ",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 363,
     "line_end": 364,
     "decl_line": 364,
     "docstring": "The universal projective density expression `B_n,σ(q)`.",
     "statement": "noncomputable def projectiveExpr (n : ℕ) (σ : FactorType) : Expr := lawCoeff (globalLaw true n) σ",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N007",
       "theorem_name": "SurfaceBlowupV2.Recursion",
       "kind": "definition",
       "theorem_id": "2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "blueprint_source": "(8.4), (8.6)–(8.7), (9.6)–(9.7)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.Tests.main_dvr_powerSeries",
     "role": "non-vacuity: O = k⟦X⟧",
     "kind": "theorem",
     "private": false,
     "file": "Tests/NonVacuity.lean",
     "line_start": 90,
     "line_end": 97,
     "decl_line": 93,
     "docstring": "`main_dvr` instantiated at `O = k⟦X⟧` for a finite field `k` with the discrete topology: the\ntype densities of monic polynomials and primitive binary forms over `k⟦X⟧` are the universal\nexpressions evaluated at `q = |k|`.",
     "statement": "theorem main_dvr_powerSeries [Finite k] (n : ℕ) (σ : FactorType) :\n    monicDensity k⟦X⟧ n σ = densityValue (monicExpr n σ) (Nat.card k) ∧\n      projectiveDensity k⟦X⟧ n σ = densityValue (projectiveExpr n σ) (Nat.card k)",
     "section_variables": "variable (k : Type) [Field k] [TopologicalSpace k] [DiscreteTopology k]",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": [
    {
     "node": "N114",
     "theorem_name": "SurfaceBlowupV2.main",
     "kind": "theorem",
     "theorem_id": "36985855-933f-40c7-ac55-99cf6b29ce38",
     "status": "PUBLISHED",
     "url": "https://prove2.me/theorems/36985855-933f-40c7-ac55-99cf6b29ce38",
     "blueprint_source": "Theorem 1.1 — intrinsic presentation; the K/Q_p transport is N660"
    }
   ]
  },
  {
   "id": "eq-1.2",
   "kind": "display",
   "relation": "definition",
   "confidence": "high",
   "summary": "The complete laws are the global laws globalLaw false n (A_n, monic) and globalLaw true n (R_n, projective), and rootLaw n = stateLaw S(1;n) (B_n, cluster); A_σ, B_σ, R_σ are their σ-coefficients.",
   "label": "(1.5)",
   "title": "complete laws A_n, R_n",
   "anchor": {
    "eq": "1.5"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.globalLaw",
     "role": "A_n (false) and R_n (true)",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 352,
     "line_end": 358,
     "decl_line": 353,
     "docstring": "The global law: average over residue divisors of the products of descended child laws.",
     "statement": "noncomputable def globalLaw (projective : Bool) (n : ℕ) : Law :=\n  lawScale (.inv (if projective then projectiveNormalizer n else .pow .var n))\n    ((residuePatterns n).toList.flatMap fun m =>\n      lawScale (divisorCount (if projective then 1 else 0) m)\n        (lawProd ((otherChildren 1 m).map fun z =>\n          lawDescend z.1 (stateLaw z.2))))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N007",
       "theorem_name": "SurfaceBlowupV2.Recursion",
       "kind": "definition",
       "theorem_id": "2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "blueprint_source": "(8.4), (8.6)–(8.7), (9.6)–(9.7)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.monicExpr",
     "role": "A_σ = coefficient of A_n",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 360,
     "line_end": 361,
     "decl_line": 361,
     "docstring": "The universal monic density expression `A_n,σ(q)`.",
     "statement": "noncomputable def monicExpr (n : ℕ) (σ : FactorType) : Expr := lawCoeff (globalLaw false n) σ",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N007",
       "theorem_name": "SurfaceBlowupV2.Recursion",
       "kind": "definition",
       "theorem_id": "2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "blueprint_source": "(8.4), (8.6)–(8.7), (9.6)–(9.7)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.projectiveExpr",
     "role": "R_σ = coefficient of R_n",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 363,
     "line_end": 364,
     "decl_line": 364,
     "docstring": "The universal projective density expression `B_n,σ(q)`.",
     "statement": "noncomputable def projectiveExpr (n : ℕ) (σ : FactorType) : Expr := lawCoeff (globalLaw true n) σ",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N007",
       "theorem_name": "SurfaceBlowupV2.Recursion",
       "kind": "definition",
       "theorem_id": "2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "blueprint_source": "(8.4), (8.6)–(8.7), (9.6)–(9.7)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.rootLaw",
     "role": "B_n",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 345,
     "line_end": 346,
     "decl_line": 346,
     "docstring": "The law of the root cell `S(1;r)` (`lawOne` for `r = 0`).",
     "statement": "noncomputable def rootLaw (r : ℕ) : Law := if r=0 then lawOne else stateLaw (.single 1 r)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N007",
       "theorem_name": "SurfaceBlowupV2.Recursion",
       "kind": "definition",
       "theorem_id": "2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "blueprint_source": "(8.4), (8.6)–(8.7), (9.6)–(9.7)"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "def-single-cluster",
   "kind": "definition",
   "relation": "definition",
   "confidence": "high",
   "summary": "The cluster model draws the nonleading coefficients from πO. Its law B_n is rootLaw n = stateLaw (S(1;n)); root_cell_law proves that this is the type law of X^n + π·(z_{n-1}X^{n-1} + … + z_0) with z uniform in Oⁿ (in the route-F type convention).",
   "label": "Cluster model and cluster law B_n",
   "title": "the X^n model",
   "anchor": {
    "eq": "1.2"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.rootLaw",
     "role": "B_n",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 345,
     "line_end": 346,
     "decl_line": 346,
     "docstring": "The law of the root cell `S(1;r)` (`lawOne` for `r = 0`).",
     "statement": "noncomputable def rootLaw (r : ℕ) : Law := if r=0 then lawOne else stateLaw (.single 1 r)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N007",
       "theorem_name": "SurfaceBlowupV2.Recursion",
       "kind": "definition",
       "theorem_id": "2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "blueprint_source": "(8.4), (8.6)–(8.7), (9.6)–(9.7)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.RootCellLaw",
     "role": "the statement 'B_r is the X^r coefficient law'",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Assembly/NullBridges.lean",
     "line_start": 339,
     "line_end": 352,
     "decl_line": 344,
     "docstring": "`RootCellLaw`: for every complete DVR `O` with finite residue field and a compact adic\nBorel structure, every uniformizer `pi`, every `r ≥ 1` and every type `σ`, the event\n`{z : Fin r → O | X^r + ∑ (pi z_i) X^i has type σ}` is measurable and has normalized\ncoefficient Haar mass `coeff_σ(stateLaw (S(1;r)))(q)`, `q = |k|`. It is the interface between the\nmeasured recursion (which proves it) and the polynomial/projective assembly (which consumes it).",
     "statement": "def RootCellLaw : Prop :=\n  ∀ (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n    [IsAdicComplete (maximalIdeal O) O] [Finite (ResidueField O)] [TopologicalSpace O]\n    [IsTopologicalRing O] [CompactSpace O] [T2Space O] [SecondCountableTopology O]\n    [MeasurableSpace O] [BorelSpace O],\n    IsAdic (maximalIdeal O) → ∀ (pi : O), Irreducible pi → ∀ (r : ℕ), 0 < r → ∀ (σ : FactorType),\n      MeasurableSet {z : Fin r → O | HasPolynomialTypeF O (monicPolynomial O (pi • z)) σ} ∧\n      coefficientMeasure O r {z : Fin r → O | HasPolynomialTypeF O (monicPolynomial O (pi • z)) σ} =\n        densityValue (lawCoeff (stateLaw (State.single 1 r)) σ) (Nat.card (ResidueField O))",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.root_cell_law",
     "role": "its proof",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/RootCellLaw.lean",
     "line_start": 1361,
     "line_end": 1363,
     "decl_line": 1362,
     "docstring": "**The root cell law** holds unconditionally.",
     "statement": "theorem root_cell_law : RootCellLaw",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1109",
       "theorem_name": "SurfaceBlowupV2.root_cell_law",
       "kind": "theorem",
       "theorem_id": "38c7bdb6-1562-4e52-83b8-82c7e26fc1cc",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/38c7bdb6-1562-4e52-83b8-82c7e26fc1cc",
       "blueprint_source": "Lemma 9.1 (the repeated-root cell) on the concrete surface O[[x]] with Theorem 8.1; cycle 8"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "thm-1.2",
   "kind": "theorem",
   "relation": "exact",
   "confidence": "high",
   "summary": "recip_main states, for n > 0 and every type σ, the identities of rational functions (monicExpr n σ).rational = (B_{n,σ} with q ↦ 1/q).rational, where B_{n,σ} = lawCoeff (rootLaw n) σ, and (projectiveExpr n σ) is invariant under q ↦ 1/q. These are the coefficientwise forms of A_n = B_n^∨ and R_n^∨ = R_n. The hypotheses ValidType σ and typeDegree σ = n are unused.",
   "label": "Theorem 1.2",
   "title": "reciprocity",
   "paper_line": 104,
   "anchor": {
    "statement": "thm-1.2"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.recip_main",
     "role": "Theorem 1.2",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Main.lean",
     "line_start": 278,
     "line_end": 299,
     "decl_line": 286,
     "docstring": "**Theorem R (reciprocity).** For `n > 0` and every factorization type `σ`:\nthe universal monic density is the root-law coefficient with `q ↦ 1/q` substituted,\n`A_{n,σ}(q) = B_{n,σ}(1/q)` (where `B_{n,σ}` is the coefficient of `σ` in the root law\n`rootLaw n`), and the universal projective density is self-reciprocal,\n`R_{n,σ}(1/q) = R_{n,σ}(q)`; both as identities of rational functions in `q`.\n\nThe certified form also assumed `ValidType σ` and `typeDegree σ = n`, which the proof does not use.\nThe hypothesis `0 < n` is used (`rootLaw 0` is defined separately).",
     "statement": "theorem recip_main (n : ℕ) (hn : 0 < n) (σ : FactorType) :\n    (monicExpr n σ).rational =\n      ((lawCoeff (rootLaw n) σ).subst (.inv .var)).rational ∧\n    (projectiveExpr n σ).rational =\n      ((projectiveExpr n σ).subst (.inv .var)).rational",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1319",
       "theorem_name": "SurfaceBlowupV2.recip_main",
       "kind": "theorem",
       "theorem_id": "d2e6cc1d-4b22-4600-ab89-1f7ce617408d",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/d2e6cc1d-4b22-4600-ab89-1f7ce617408d",
       "blueprint_source": "RECIPROCITY_round1.md §1 Theorem 1; §7–§8"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.lawCoef_globalLaw_false_eq_recipCoef",
     "role": "A_n = B_n^∨ as elements of ℚ(q)[Z]",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Main.lean",
     "line_start": 221,
     "line_end": 234,
     "decl_line": 223,
     "docstring": "**Affine reciprocity.** The global monic law is the reciprocal of the root law:\n`F_global(q) = F_{S(1;n)}(1/q)` as elements of `Coef`.",
     "statement": "theorem lawCoef_globalLaw_false_eq_recipCoef (n : ℕ) (hn : 0 < n) :\n    lawCoef (globalLaw false n) = recipCoef (lawCoef (rootLaw n))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1317",
       "theorem_name": "SurfaceBlowupV2.recip_affine_coef",
       "kind": "theorem",
       "theorem_id": "e24b89f4-cb42-433a-87c1-78db1732abae",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/e24b89f4-cb42-433a-87c1-78db1732abae",
       "blueprint_source": "RECIPROCITY_round1.md §7 (affine identity in (14))"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.recipCoef_lawCoef_globalLaw_true",
     "role": "R_n^∨ = R_n as elements of ℚ(q)[Z]",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Main.lean",
     "line_start": 236,
     "line_end": 276,
     "decl_line": 238,
     "docstring": "**Projective self-reciprocity.** The normalised global projective law `R_n` is invariant\nunder reciprocal substitution: `R_n(1/q) = R_n(q)` as elements of `Coef`.",
     "statement": "theorem recipCoef_lawCoef_globalLaw_true (n : ℕ) :\n    recipCoef (lawCoef (globalLaw true n)) = lawCoef (globalLaw true n)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1318",
       "theorem_name": "SurfaceBlowupV2.recip_projective_coef",
       "kind": "theorem",
       "theorem_id": "0399bdfe-70cc-456b-9f89-9ccbbfb0143f",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/0399bdfe-70cc-456b-9f89-9ccbbfb0143f",
       "blueprint_source": "RECIPROCITY_round1.md §8 Lemma 13 (projective form)"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "rem-1.3",
   "kind": "remark",
   "relation": "covered",
   "confidence": "high",
   "summary": "The claims of the remark are checked by tools/release_check.sh: build with no sorry, and #print axioms of main_dvr, main_field_form, main_field_form_ramified and recip_main = [propext, Classical.choice, Quot.sound]. The finite-integral-closure convention is the route-F predicate HasPolynomialTypeF, and the agreement off a Haar-null set is orig_monicDensity_eq / orig_projectiveDensity_eq.",
   "label": "Remark 1.3",
   "title": "formalization",
   "paper_line": 206,
   "anchor": {
    "statement": "rem-1.3"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.main_dvr",
     "role": "Theorem 1.1",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Main.lean",
     "line_start": 31,
     "line_end": 51,
     "decl_line": 40,
     "docstring": "**Main theorem.** Let `O` be a complete discrete valuation ring with finite residue field `k`\n(any characteristic, any ramification), with its maximal-ideal-adic compact topology, Borel\nσ-algebra and normalized Haar measure. For every degree `n` and every factorization type `σ`,\nthe probability that a random monic polynomial of degree `n` over `O` (resp. a random primitive\nbinary form of degree `n`) has type `σ` is the value at `q = |k|` of the universal rational\nexpression `monicExpr n σ` (resp. `projectiveExpr n σ`).\n\nThe statement carries no hypotheses on `n` and `σ`: the certified form assumed `0 < n`,\n`ValidType σ` and `typeDegree σ = n`, none of which the proof uses.",
     "statement": "theorem main_dvr (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] [TopologicalSpace O] [IsTopologicalRing O]\n    [CompactSpace O] [T2Space O] [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]\n    (htop : IsAdic (IsLocalRing.maximalIdeal O))\n    (n : ℕ) (σ : FactorType) :\n    SurfaceBlowup.monicDensity O n σ =\n        densityValue (monicExpr n σ) (Nat.card (IsLocalRing.ResidueField O)) ∧\n    SurfaceBlowup.projectiveDensity O n σ =\n        densityValue (projectiveExpr n σ) (Nat.card (IsLocalRing.ResidueField O))",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.recip_main",
     "role": "Theorem 1.2",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Main.lean",
     "line_start": 278,
     "line_end": 299,
     "decl_line": 286,
     "docstring": "**Theorem R (reciprocity).** For `n > 0` and every factorization type `σ`:\nthe universal monic density is the root-law coefficient with `q ↦ 1/q` substituted,\n`A_{n,σ}(q) = B_{n,σ}(1/q)` (where `B_{n,σ}` is the coefficient of `σ` in the root law\n`rootLaw n`), and the universal projective density is self-reciprocal,\n`R_{n,σ}(1/q) = R_{n,σ}(q)`; both as identities of rational functions in `q`.\n\nThe certified form also assumed `ValidType σ` and `typeDegree σ = n`, which the proof does not use.\nThe hypothesis `0 < n` is used (`rootLaw 0` is defined separately).",
     "statement": "theorem recip_main (n : ℕ) (hn : 0 < n) (σ : FactorType) :\n    (monicExpr n σ).rational =\n      ((lawCoeff (rootLaw n) σ).subst (.inv .var)).rational ∧\n    (projectiveExpr n σ).rational =\n      ((projectiveExpr n σ).subst (.inv .var)).rational",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1319",
       "theorem_name": "SurfaceBlowupV2.recip_main",
       "kind": "theorem",
       "theorem_id": "d2e6cc1d-4b22-4600-ab89-1f7ce617408d",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/d2e6cc1d-4b22-4600-ab89-1f7ce617408d",
       "blueprint_source": "RECIPROCITY_round1.md §1 Theorem 1; §7–§8"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.HasPolynomialTypeF",
     "role": "route-F type predicate (finite integral closures)",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 473,
     "line_end": 478,
     "decl_line": 474,
     "docstring": "`HasPolynomialType` together with finiteness of the integral closure in each root field.",
     "statement": "def HasPolynomialTypeF (F : Polynomial (BaseField O)) (σ : FactorType) : Prop :=\n  ∃ gs : List (Polynomial (BaseField O)),\n    (∀ g ∈ gs, g.Monic ∧ Irreducible g) ∧ gs.Pairwise (fun g h => g ≠ h) ∧\n    F=gs.prod ∧ σ=(gs.map (factorInvariant O) : Multiset (ℕ × ℕ)) ∧\n    ∀ g ∈ gs, Module.Finite O (integralClosure O (AdjoinRoot g))",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.orig_monicDensity_eq",
     "role": "bridge: inseparable locus is Haar-null",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Assembly/NullBridges.lean",
     "line_start": 465,
     "line_end": 470,
     "decl_line": 467,
     "docstring": "The original monic density equals the separable-type monic density: the two events agree\noff the Haar-null inseparable locus.",
     "statement": "theorem orig_monicDensity_eq (htop : IsAdic (IsLocalRing.maximalIdeal O)) (n : ℕ) (σ : FactorType) :\n    monicDensity O n σ = monicDensityF O n σ",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]\nvariable [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n  [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O] [IsDiscreteValuationRing O]\n  [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.orig_projectiveDensity_eq",
     "role": "projective bridge",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Assembly/NullBridges.lean",
     "line_start": 472,
     "line_end": 486,
     "decl_line": 474,
     "docstring": "The original projective density equals the route-F one: the two numerator events differ\nonly inside `{a_n = 0} ∪ {disc = 0}`, which is Haar-null.",
     "statement": "theorem orig_projectiveDensity_eq (htop : IsAdic (IsLocalRing.maximalIdeal O)) (n : ℕ)\n    (σ : FactorType) :\n    SurfaceBlowup.projectiveDensity O n σ = projectiveDensityF O n σ",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]\nvariable [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n  [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O] [IsDiscreteValuationRing O]\n  [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-1.4",
   "kind": "display",
   "relation": "specialization",
   "confidence": "medium",
   "summary": "The overview form of Theorem 5.1; formalized on the concrete surfaces as member_cell_box_measure (measure of a fixed-tangent cell box = q^{-tri d} times the product of child measures).",
   "label": "(1.7)",
   "title": "the Gaussian measure identity (overview)",
   "anchor": {
    "eq": "1.7"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.member_cell_box_measure",
     "role": "dμ_parent = q^{-C(d+1,2)} ∏ dμ_P on boxes",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/MemberBoxes.lean",
     "line_start": 524,
     "line_end": 597,
     "decl_line": 526,
     "docstring": "The measure of the set of ideals in a cell whose strict transforms lie in a box `Π G_j` is\n  `q^(-tri(cellDegree))` times the product of the child state measures of the `G_j`.",
     "statement": "theorem member_cell_box_measure :\n    (letI : ∀ j, MeasurableSpace (Ideal (mc j).toMeasured.R) :=\n      fun j => (mc j).toMeasured.measurableSpaceIdeal;\n      letI : MeasurableSpace (Ideal ℛ) := m.toMeasured.measurableSpaceIdeal;\n      ∀ (G : ∀ j, Set (Ideal (mc j).toMeasured.R)), (∀ j, MeasurableSet (G j)) →\n      m.toMeasured.μ (m.toMeasured.cell c ∩ (fun (J : Ideal ℛ) (j : 𝒥) =>\n        strictTransformIdeal (alpha j) (e j) 𝔡 J) ⁻¹' Set.pi Set.univ G) =\n      𝐪⁻¹ ^ tri 𝔡 * ∏ j, (mc j).toMeasured.μ (G j))",
     "section_variables": "variable (m : ConcreteMember) (c : m.toMeasured.cellIndex)\n    (mc : m.toMeasured.childIdx c → ConcreteMember)\nvariable [∀ j, Algebra m.toMeasured.O (mc j).toMeasured.O]\n    [∀ j, Algebra m.toMeasured.O (mc j).toMeasured.R]\n    [∀ j, IsScalarTower m.toMeasured.O (mc j).toMeasured.O (mc j).toMeasured.R]\n    (pc : ∀ j, (mc j).toMeasured.O ≃ₗ[m.toMeasured.O]\n      (Fin (m.toMeasured.childDelta c j) → m.toMeasured.O))\n    (hpc : ∀ j, Measurable (pc j)) (hpc' : ∀ j, Measurable (pc j).symm)\n    (hcard : ∀ j, (mc j).toMeasured.q = m.toMeasured.q ^ m.toMeasured.childDelta c j)\n    (hpiO : ∀ j, algebraMap m.toMeasured.O (mc j).toMeasured.O m.toMeasured.S.pi =\n      (mc j).toMeasured.S.pi)\n    (hdeg : ∑ j, m.toMeasured.childDelta c j * (mc j).toMeasured.s.degree = m.toMeasured.s.degree)\n    (alpha : ∀ j, m.toMeasured.R →ₐ[m.toMeasured.O] (mc j).toMeasured.R)\n    (e : ∀ j, (mc j).toMeasured.R) (he : ∀ j, e j = (mc j).toMeasured.S.t)\n    (hvert : ∀ j, ∃ (s : ℕ) (cj : (mc j).toMeasured.R),\n      algebraMap m.toMeasured.O (mc j).toMeasured.R m.toMeasured.S.pi ^ s =\n      e j ^ m.toMeasured.cellDegree c * cj)\n    (hbij : Set.BijOn\n      (fun (J : Ideal m.toMeasured.R) (j : m.toMeasured.childIdx c) => strictTransformIdeal\n      (alpha j) (e j) (m.toMeasured.cellDegree c) J) (m.toMeasured.cell c)\n      (Set.pi Set.univ fun j => (mc j).toMeasured.stateSet))\n    (hstrict : ∀ f : m.toMeasured.R, Ideal.span {f} ∈ m.toMeasured.cell c →\n      ∃ g : (∀ j, (mc j).toMeasured.R), ∀ j, alpha j f = e j ^ m.toMeasured.cellDegree c * g j)\n    (hindex : ∀ f : m.toMeasured.R, Ideal.span {f} ∈ m.toMeasured.cell c →\n      ∀ g : (∀ j, (mc j).toMeasured.R), (∀ j, alpha j f = e j ^ m.toMeasured.cellDegree c * g j) →\n      ∀ iota : (m.toMeasured.R ⧸ Ideal.span {f}) →ₗ[m.toMeasured.O]\n      ((∀ j, (mc j).toMeasured.R) ⧸ Ideal.span {g}),\n      (∀ h : m.toMeasured.R, iota (Ideal.Quotient.mk (Ideal.span {f}) h) =\n      Ideal.Quotient.mk (Ideal.span {g}) (fun j => alpha j h)) → Function.Injective iota ∧\n      Module.length m.toMeasured.O\n      (((∀ j, (mc j).toMeasured.R) ⧸ Ideal.span {g}) ⧸ LinearMap.range iota) =\n      (chooseTwo (m.toMeasured.cellDegree c) : ℕ∞))\n    (hsum : ∑ j, m.toMeasured.childDelta c j * (mc j).toMeasured.s.firstContact =\n      m.toMeasured.cellDegree c)",
     "prove2me": [
      {
       "node": "N1066",
       "theorem_name": "SurfaceBlowupV2.member_cell_box_measure",
       "kind": "theorem",
       "theorem_id": "12e8501e-2bff-427b-8b49-4fe62a2b00fb",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/12e8501e-2bff-427b-8b49-4fe62a2b00fb",
       "blueprint_source": "Theorem 6.1, equation (6.1) on the fixed-tangent cell of one concrete member — the fields Φ_measurable and Φ_measure of the recursion record (N532); restructured (cycle 8, draft MEAS)"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "def-standard-facts",
   "kind": "definition",
   "relation": "covered",
   "confidence": "medium",
   "summary": "Cited in the paper, proved in the Lean development from Mathlib (no literature axioms): integral closures in finite extensions are finite free of rank [L:K] when finite and are complete DVRs; unramified extensions O_δ = O[X]/(Φ) are complete DVRs with a Frobenius whose fixed ring is O. Analytic inversion / change of variables is not used: the Lean proof replaces it by finite-digit congruence arguments.",
   "label": "Standard facts",
   "title": "cited background",
   "anchor": {
    "bold": "Standard facts."
   },
   "lean": [
    {
     "name": "SurfaceBlowup.integral_closure_finite_free",
     "role": "free of rank [L:K]",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Algebra/AlgebraType.lean",
     "line_start": 455,
     "line_end": 472,
     "decl_line": 457,
     "docstring": "If the integral closure of a DVR `O` in a finite extension `L/K` is finite over `O`, it is\nfree of rank `[L : K]`.",
     "statement": "theorem integral_closure_finite_free (O K L : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [Field K] [Algebra O K] [IsFractionRing O K] [Field L]\n    [Algebra K L] [Algebra O L] [IsScalarTower O K L] [FiniteDimensional K L]\n    [hfin : Module.Finite O (integralClosure O L)] :\n    Module.Finite O (integralClosure O L) ∧ Module.Free O (integralClosure O L) ∧\n      Module.finrank O (integralClosure O L) = Module.finrank K L",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N176",
       "theorem_name": "SurfaceBlowupV2.integral_closure_finite_free",
       "kind": "theorem",
       "theorem_id": "f41d9dff-ed74-4ef0-86c2-f11a2cd35979",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/f41d9dff-ed74-4ef0-86c2-f11a2cd35979",
       "blueprint_source": "restructured — G1, integral-closure bridge for Lemma 2.1 and Theorem 1.1"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.integral_closure_is_dvr",
     "role": "complete DVR integer ring",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/PrimitiveLocus.lean",
     "line_start": 233,
     "line_end": 244,
     "decl_line": 235,
     "docstring": "The integral closure of a complete DVR with finite residue field in a finite extension\n(assumed `O`-finite) is a DVR.",
     "statement": "theorem integral_closure_is_dvr (O K L : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n    [Field K] [Algebra O K] [IsFractionRing O K] [Field L] [Algebra K L] [Algebra O L]\n    [IsScalarTower O K L] [FiniteDimensional K L] [Module.Finite O (integralClosure O L)]\n    [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)] :\n    IsDiscreteValuationRing (integralClosure O L)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N182",
       "theorem_name": "SurfaceBlowupV2.integral_closure_is_dvr",
       "kind": "theorem",
       "theorem_id": "e7abf282-126a-40ba-8387-a9ae18226a70",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/e7abf282-126a-40ba-8387-a9ae18226a70",
       "blueprint_source": "restructured — G1, integral-closure bridge for Lemma 2.1 and Theorem 1.1"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.unramified_is_dvr",
     "role": "O_δ is a complete DVR, residue size q^δ",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Unramified/FrobeniusDescent.lean",
     "line_start": 801,
     "line_end": 837,
     "decl_line": 804,
     "docstring": "For an unramified lift `Φ`, `O[X]/(Φ)` is a complete DVR with maximal ideal `𝔪 O[X]/(Φ)`, in\nwhich every uniformizer of `O` stays a uniformizer, with finite residue field of cardinality\n`q ^ deg Φ`.",
     "statement": "theorem unramified_is_dvr (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n    [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]\n    (Φ : Polynomial O) (hΦ : IsUnramifiedLift O Φ) :\n    ∃ (_ : IsDomain (AdjoinRoot Φ)) (_ : IsLocalRing (AdjoinRoot Φ)),\n      IsDiscreteValuationRing (AdjoinRoot Φ) ∧\n      IsLocalRing.maximalIdeal (AdjoinRoot Φ) = baseIdeal O Φ ∧\n      (∀ ϖ : O, Irreducible ϖ → Irreducible (algebraMap O (AdjoinRoot Φ) ϖ)) ∧\n      IsAdicComplete (IsLocalRing.maximalIdeal (AdjoinRoot Φ)) (AdjoinRoot Φ) ∧\n      Finite (IsLocalRing.ResidueField (AdjoinRoot Φ)) ∧\n      Nat.card (IsLocalRing.ResidueField (AdjoinRoot Φ)) = residueCard O ^ Φ.natDegree",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N589",
       "theorem_name": "SurfaceBlowupV2.unramified_is_dvr",
       "kind": "theorem",
       "theorem_id": "7f87aebd-08c5-49b1-aecf-539db160c0ad",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/7f87aebd-08c5-49b1-aecf-539db160c0ad",
       "blueprint_source": "restructured — G7, unramified extension O_δ and Frobenius for Lemma 9.2"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.frobenius_fixed_ring",
     "role": "Frobenius-fixed ring is O",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Unramified/FrobeniusDescent.lean",
     "line_start": 511,
     "line_end": 539,
     "decl_line": 512,
     "docstring": "The elements of `O[X]/(Φ)` fixed by the Frobenius are exactly the elements of `O`.",
     "statement": "theorem frobenius_fixed_ring (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n    [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]\n    (Φ : Polynomial O) (hΦ : IsUnramifiedLift O Φ) (a : AdjoinRoot Φ)\n    (ha : unramifiedFrobenius O Φ a = a) :\n    ∃ c : O, algebraMap O (AdjoinRoot Φ) c = a",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N599",
       "theorem_name": "SurfaceBlowupV2.frobenius_fixed_ring",
       "kind": "theorem",
       "theorem_id": "66746fc6-aeb0-494d-b602-d060d79dd933",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/66746fc6-aeb0-494d-b602-d060d79dd933",
       "blueprint_source": "restructured — G7, unramified extension O_δ and Frobenius for Lemma 9.2"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-2.1",
   "kind": "display",
   "relation": "definition",
   "confidence": "high",
   "summary": "State.single a c is S(a;c), State.crossing a b c h is T(a,b;c,h), with degree N = ac resp. ac + bh. On a surface, the ideals in a state are surfaceStateSet; the concrete surfaces used throughout the formal proof are ConcreteSurface O π u a b = O⟦T,X⟧/(π − u T^a X^b).",
   "label": "(2.1)",
   "title": "the two kinds of local state",
   "anchor": {
    "eq": "2.1"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.State",
     "role": "states",
     "kind": "inductive",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 179,
     "line_end": 184,
     "decl_line": 181,
     "docstring": "Recursion states: `single a c` is `S(a;c)` (one boundary component of multiplicity `a`, contact\n`c`), `crossing a b c h` is `T(a,b;c,h)` (two crossing boundary components).",
     "statement": "inductive State where\n  | single (a c : ℕ)\n  | crossing (a b c h : ℕ)\n  deriving DecidableEq, Repr",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N002",
       "theorem_name": "SurfaceBlowupV2.State",
       "kind": "definition",
       "theorem_id": "2b9eac46-2d27-4bcc-bd94-3c889bee93c7",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2b9eac46-2d27-4bcc-bd94-3c889bee93c7",
       "blueprint_source": "(2.2)–(2.3), §8.1; rank restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.State.degree",
     "role": "N",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 193,
     "line_end": 196,
     "decl_line": 194,
     "docstring": "The degree `a·c` (resp. `a·c + b·h`).",
     "statement": "def degree : State → ℕ\n  | .single a c => a*c\n  | .crossing a b c h => a*c+b*h",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N002",
       "theorem_name": "SurfaceBlowupV2.State",
       "kind": "definition",
       "theorem_id": "2b9eac46-2d27-4bcc-bd94-3c889bee93c7",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2b9eac46-2d27-4bcc-bd94-3c889bee93c7",
       "blueprint_source": "(2.2)–(2.3), §8.1; rank restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.State.Valid",
     "role": "positivity",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 188,
     "line_end": 191,
     "decl_line": 189,
     "docstring": "All parameters are positive.",
     "statement": "def Valid : State → Prop\n  | .single a c => 0 < a ∧ 0 < c\n  | .crossing a b c h => 0 < a ∧ 0 < b ∧ 0 < c ∧ 0 < h",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N002",
       "theorem_name": "SurfaceBlowupV2.State",
       "kind": "definition",
       "theorem_id": "2b9eac46-2d27-4bcc-bd94-3c889bee93c7",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2b9eac46-2d27-4bcc-bd94-3c889bee93c7",
       "blueprint_source": "(2.2)–(2.3), §8.1; rank restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.SurfaceData",
     "role": "surface with vertical equation π = u t^a x^b",
     "kind": "structure",
     "private": false,
     "file": "SurfaceBlowup/Surfaces/Lengths.lean",
     "line_start": 225,
     "line_end": 243,
     "decl_line": 227,
     "docstring": "Data of a regular complete two-dimensional local `O`-algebra `R` with parameters `t, x`,\nresidue field identified with that of `O`, and vertical equation `π = unit · t^a x^b`.",
     "statement": "structure SurfaceData where\n  pi : O\n  pi_irreducible : Irreducible pi\n  t : R\n  x : R\n  unit : Rˣ\n  a : ℕ\n  b : ℕ\n  a_pos : 0 < a\n  parameters : Ideal.span {t,x} = IsLocalRing.maximalIdeal R\n  dimension : ringKrullDim R = 2\n  complete : IsAdicComplete (IsLocalRing.maximalIdeal R) R\n  base_injective : Function.Injective (algebraMap O R)\n  residueEquiv : IsLocalRing.ResidueField O ≃+* IsLocalRing.ResidueField R\n  residue_compat : ∀ c : O, residueEquiv (IsLocalRing.residue O c) =\n    IsLocalRing.residue R (algebraMap O R c)\n  vertical : algebraMap O R pi = (unit : R) * t^a * x^b",
     "section_variables": "variable (O R : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n  [CommRing R] [IsDomain R] [Algebra O R] [IsRegularLocalRing R]",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.surfaceStateSet",
     "role": "ideals in a state",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Surfaces/Lengths.lean",
     "line_start": 247,
     "line_end": 253,
     "decl_line": 248,
     "docstring": "The principal ideals of `R` realising the combinatorial state `s` relative to `S`.",
     "statement": "def surfaceStateSet (S : SurfaceData O R) (s : State) : Set (Ideal R) :=\n  {J | (∃ f : R, J = Ideal.span {f}) ∧ s.Valid ∧\n    match s with\n    | .single a c => S.a = a ∧ S.b = 0 ∧ idealContact R J S.t = c\n    | .crossing a b c h => S.a = a ∧ S.b = b ∧\n      idealContact R J S.t = c ∧ idealContact R J S.x = h}",
     "section_variables": "variable (O R : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n  [CommRing R] [IsDomain R] [Algebra O R] [IsRegularLocalRing R]",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.ConcreteSurface",
     "role": "the concrete surfaces",
     "kind": "abbrev",
     "private": false,
     "file": "SurfaceBlowup/Surfaces/Lengths.lean",
     "line_start": 94,
     "line_end": 96,
     "decl_line": 95,
     "docstring": "The concrete surface `O[[T,X]] / (π - u T^a X^b)`.",
     "statement": "abbrev ConcreteSurface (pi : O) (u : (TwoSeries O)ˣ) (a b : ℕ) :=\n  TwoSeries O ⧸ surfaceIdeal O pi u a b",
     "section_variables": "variable (O : Type) [CommRing O]",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "lem-2.1",
   "kind": "lemma",
   "relation": "specialization",
   "confidence": "high",
   "summary": "Formalized for the concrete surfaces O⟦T,X⟧/(π − u T^a X^b): the special fibre is k⟦T,X⟧/(T^a X^b) (concrete_surface_special_fiber_equiv), principal quotients have length ac resp. ac + bh (single/crossing_special_fiber_length), finite-contact elements are nonzerodivisors, and the curve order R/(f) is free of rank N (concrete_surface_curve_free_of_length, concrete_member_curve_order_free). The paper states it for every complete regular local ring with the given vertical equation.",
   "label": "Lemma 2.1",
   "title": "degree and flatness",
   "paper_line": 228,
   "anchor": {
    "statement": "lem-2.1"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.concrete_surface_special_fiber_equiv",
     "role": "R/πR ≅ k⟦T,X⟧/(T^aX^b)",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Surfaces/PowerSeries.lean",
     "line_start": 794,
     "line_end": 837,
     "decl_line": 796,
     "docstring": "The special fiber of the concrete surface is `k[[T,X]]/(T^a X^b)`, compatibly with\nreduction of coefficients.",
     "statement": "theorem concrete_surface_special_fiber_equiv (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] (pi : O) (hpi : Irreducible pi) (u : (TwoSeries O)ˣ) (a b : ℕ) :\n    ∃ e : (ConcreteSurface O pi u a b ⧸ Ideal.span {algebraMap O (ConcreteSurface O pi u a b) pi})\n    ≃+* SpecialFiber (IsLocalRing.ResidueField O) a b, ∀ s :\n    TwoSeries O, e\n    (Ideal.Quotient.mk (Ideal.span {algebraMap O (ConcreteSurface O pi u a b) pi})\n      (surfaceMk O pi u a b s)) =\n    Ideal.Quotient.mk (monomialIdeal (IsLocalRing.ResidueField O) a b) (residueSeries O s)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N471",
       "theorem_name": "SurfaceBlowupV2.concrete_surface_special_fiber_equiv",
       "kind": "theorem",
       "theorem_id": "1a3cbd73-e340-4fc4-ba02-a25a2e65f94f",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/1a3cbd73-e340-4fc4-ba02-a25a2e65f94f",
       "blueprint_source": "Lemma 2.1, equation (2.4) — the special fibre; restructured through coefficient reduction"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.single_special_fiber_length",
     "role": "length ac",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Unramified/LocalDescent.lean",
     "line_start": 80,
     "line_end": 90,
     "decl_line": 82,
     "docstring": "A principal quotient of `k[[T,X]]/(T^a)` (with `a > 0`) by `f` has length `a c`, where `c` is\nthe contact of `f` with `T`.",
     "statement": "theorem single_special_fiber_length (k : Type) [Field k] (a c : ℕ) (ha : 0 < a)\n    (f : SpecialFiber k a 0) (hf : contact f (fiberT k a 0) = c) :\n    Module.length (SpecialFiber k a 0) ((SpecialFiber k a 0) ⧸ Ideal.span {f}) = a * c",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N063",
       "theorem_name": "SurfaceBlowupV2.single_special_fiber_length",
       "kind": "theorem",
       "theorem_id": "11d8cf4f-1d4d-4f13-8c46-ce1c7b73ddf8",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/11d8cf4f-1d4d-4f13-8c46-ce1c7b73ddf8",
       "blueprint_source": "Lemma 2.1 — single-boundary length; decomposed into N674–N679"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.crossing_special_fiber_length",
     "role": "length ac + bh",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Unramified/LocalDescent.lean",
     "line_start": 64,
     "line_end": 78,
     "decl_line": 66,
     "docstring": "A principal quotient of `k[[T,X]]/(T^a X^b)` (with `a, b > 0`) by `f` has length `a c + b h`,\nwhere `c` and `h` are the contacts of `f` with `T` and with `X`.",
     "statement": "theorem crossing_special_fiber_length (k : Type) [Field k] (a b c h : ℕ) (ha : 0 < a) (hb : 0 < b)\n    (f : SpecialFiber k a b) (ht : contact f (fiberT k a b) = c)\n    (hx : contact f (fiberX k a b) = h) :\n    Module.length (SpecialFiber k a b) ((SpecialFiber k a b) ⧸ Ideal.span {f}) = a * c + b * h",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N064",
       "theorem_name": "SurfaceBlowupV2.crossing_special_fiber_length",
       "kind": "theorem",
       "theorem_id": "29beed4d-c25c-46f5-9304-eeab32295c12",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/29beed4d-c25c-46f5-9304-eeab32295c12",
       "blueprint_source": "Lemma 2.1 — crossing length; decomposed into N674–N679"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.special_fiber_single_contact_regular",
     "role": "f̄ is a nonzerodivisor (single)",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/StrictNormalizer.lean",
     "line_start": 652,
     "line_end": 671,
     "decl_line": 654,
     "docstring": "On the single special fiber `k⟦t, x⟧ ⧸ (tᵃ)` with `a > 0`, a function of finite contact with\nthe axis `t = 0` is a nonzerodivisor.",
     "statement": "theorem special_fiber_single_contact_regular (k : Type) [Field k] (a c : ℕ) (ha : 0 < a)\n    (f : SpecialFiber k a 0) (hf : contact f (fiberT k a 0) = c) :\n    Function.Injective (fun w : SpecialFiber k a 0 => f * w)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N506",
       "theorem_name": "SurfaceBlowupV2.special_fiber_single_contact_regular",
       "kind": "theorem",
       "theorem_id": "1a200d94-bf60-4df1-847e-08e1198d3b79",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/1a200d94-bf60-4df1-847e-08e1198d3b79",
       "blueprint_source": "Lemma 2.1 — regularity of the reduced equation and the curve order of an actual finite-contact curve"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.special_fiber_crossing_contact_regular",
     "role": "f̄ is a nonzerodivisor (crossing)",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/StrictNormalizer.lean",
     "line_start": 615,
     "line_end": 650,
     "decl_line": 617,
     "docstring": "On the crossing special fiber `k⟦t, x⟧ ⧸ (tᵃ xᵇ)` with `a, b > 0`, a function of finite\ncontact with both axes is a nonzerodivisor.",
     "statement": "theorem special_fiber_crossing_contact_regular (k : Type) [Field k] (a b c h : ℕ) (ha : 0 < a)\n    (hb : 0 < b) (f : SpecialFiber k a b) (ht : contact f (fiberT k a b) = c)\n    (hx : contact f (fiberX k a b) = h) :\n    Function.Injective (fun w : SpecialFiber k a b => f * w)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N507",
       "theorem_name": "SurfaceBlowupV2.special_fiber_crossing_contact_regular",
       "kind": "theorem",
       "theorem_id": "ca20b04c-ca6e-40dc-86b5-086664f350c3",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/ca20b04c-ca6e-40dc-86b5-086664f350c3",
       "blueprint_source": "Lemma 2.1 — regularity of the reduced equation and the curve order of an actual finite-contact curve"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.concrete_surface_curve_free_of_length",
     "role": "A_f free of rank length R/(π,f)",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Surfaces/Regularity.lean",
     "line_start": 520,
     "line_end": 578,
     "decl_line": 522,
     "docstring": "For `f` regular modulo `π`, the curve ring `R/(f)` is free over `O` of rank\nequal to the length of `R/(π, f)`.",
     "statement": "theorem concrete_surface_curve_free_of_length (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O] (pi : O)\n    (hpi : Irreducible pi) (u : (TwoSeries O)ˣ) (a b : ℕ) (ha : 0 < a)\n    (f : ConcreteSurface O pi u a b)\n    (hf : Function.Injective\n      (fun w : ConcreteSurface O pi u a b ⧸ Ideal.span\n      {algebraMap O (ConcreteSurface O pi u a b) pi} => Ideal.Quotient.mk\n      (Ideal.span {algebraMap O (ConcreteSurface O pi u a b) pi}) f * w)) (N : ℕ)\n    (hN : Module.length (ConcreteSurface O pi u a b)\n      (ConcreteSurface O pi u a b ⧸ Ideal.span {algebraMap O (ConcreteSurface O pi u a b) pi, f}) =\n      N) :\n    Module.Free O (ConcreteSurface O pi u a b ⧸ Ideal.span {f}) ∧ Module.Finite O\n      (ConcreteSurface O pi u a b ⧸ Ideal.span {f}) ∧ Module.finrank O\n      (ConcreteSurface O pi u a b ⧸ Ideal.span {f}) = N",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N505",
       "theorem_name": "SurfaceBlowupV2.concrete_surface_curve_free_of_length",
       "kind": "theorem",
       "theorem_id": "00e86bcf-9a9f-42db-b167-b00027d0ce0f",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/00e86bcf-9a9f-42db-b167-b00027d0ce0f",
       "blueprint_source": "Lemma 2.1 — “the indicated lengths are also dimensions over k”; restructured as residue-basis families"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.concrete_member_curve_order_free",
     "role": "A_f ≅ O^N on every recursion member",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/Members.lean",
     "line_start": 1188,
     "line_end": 1217,
     "decl_line": 1190,
     "docstring": "The curve order `R/J` of an ideal `J` in the state set of a concrete member is a free `O`-module\nof rank the degree of the state.",
     "statement": "theorem concrete_member_curve_order_free (m : ConcreteMember) (J : Ideal m.R)\n    (hJ : J ∈ m.toMeasured.stateSet) :\n    Module.Free m.O (m.R ⧸ J) ∧ Module.Finite m.O (m.R ⧸ J) ∧ Module.finrank m.O (m.R ⧸ J) =\n      m.s.degree",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1081",
       "theorem_name": "SurfaceBlowupV2.concrete_member_curve_order_free",
       "kind": "theorem",
       "theorem_id": "e2f49a96-0281-46f0-bb36-df59c28df79d",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/e2f49a96-0281-46f0-bb36-df59c28df79d",
       "blueprint_source": "Lemma 2.1 — R/(f) is finite free of rank N = ac or ac + bh; on a concrete member (cycle 8)"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "def-reduced-type",
   "kind": "definition",
   "relation": "definition",
   "confidence": "medium",
   "summary": "HasAlgebraType O B σ: the generic fibre of B is a finite product of fields whose O-integral closures are finite, with invariants σ. The Lean development uses this route-F convention (finite integral closures) everywhere in the recursion, and transfers to the published étale densities through the Haar-null bridges.",
   "label": "Reduced-algebra type convention",
   "title": "types of reduced algebras",
   "anchor": {
    "bold": "reduced-algebra type convention"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.HasAlgebraType",
     "role": "algebra types",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Algebra/AlgebraType.lean",
     "line_start": 66,
     "line_end": 75,
     "decl_line": 69,
     "docstring": "`HasAlgebraType O B σ`: the generic fibre K ⊗_O B (K = FractionRing O) is isomorphic as a\nK-algebra to a finite product of finite field extensions L_i of K whose O-integral closures are\nfinite O-modules, and σ is the multiset of their invariants.",
     "statement": "def HasAlgebraType (B : Type) [CommRing B] [Algebra O B] (σ : FactorType) : Prop :=\n  ∃ (ι : Type) (_ : Fintype ι) (L : ι → Type) (_ : ∀ i, Field (L i))\n    (_ : ∀ i, Algebra (BaseField O) (L i)) (_ : ∀ i, Algebra O (L i))\n    (_ : ∀ i, IsScalarTower O (BaseField O) (L i)) (_ : ∀ i, FiniteDimensional (BaseField O) (L i))\n    (_ : (BaseField O ⊗[O] B) ≃ₐ[BaseField O] (∀ i, L i)),\n    σ = ∑ i, ({fieldInvariant O (L i)} : FactorType) ∧\n      ∀ i, Module.Finite O (integralClosure O (L i))",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.fieldInvariant",
     "role": "(e,f) of a field via its integral closure",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Algebra/AlgebraType.lean",
     "line_start": 56,
     "line_end": 64,
     "decl_line": 58,
     "docstring": "The invariants (e,f) of the maximal ideal of the integral closure of O in an O-algebra L (a\nfield in the applications), with the junk value (0,0) when that closure is not local.",
     "statement": "noncomputable def fieldInvariant (L : Type) [CommRing L] [Algebra O L] : ℕ × ℕ := by\n  classical\n  let B := integralClosure O L\n  exact if h : IsLocalRing B then\n    letI : IsLocalRing B := h\n    ((maximalIdeal B).ramificationIdx O, (maximalIdeal B).inertiaDeg O)\n  else (0,0)",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.HasPolynomialTypeF",
     "role": "polynomial types with finite closures",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 473,
     "line_end": 478,
     "decl_line": 474,
     "docstring": "`HasPolynomialType` together with finiteness of the integral closure in each root field.",
     "statement": "def HasPolynomialTypeF (F : Polynomial (BaseField O)) (σ : FactorType) : Prop :=\n  ∃ gs : List (Polynomial (BaseField O)),\n    (∀ g ∈ gs, g.Monic ∧ Irreducible g) ∧ gs.Pairwise (fun g h => g ≠ h) ∧\n    F=gs.prod ∧ σ=(gs.map (factorInvariant O) : Multiset (ℕ × ℕ)) ∧\n    ∀ g ∈ gs, Module.Finite O (integralClosure O (AdjoinRoot g))",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "lem-2.2",
   "kind": "lemma",
   "relation": "covered",
   "confidence": "medium",
   "summary": "Single-boundary case: F_{S(a;1)} = Z_{a,1} is part of the definition of stateLaw (terminal_law), and its meaning is proved on the concrete surfaces (the curve order is a DVR with field invariant (a,1): terminal_curve_order_dvr, terminal_field_invariant, concrete_member_terminal_type). Crossing cases: in Lean only S(a;1) is terminal; the laws of T(a,b;1,h) and T(a,b;c,1) are computed from the recursion in the private regression lemmas crossing_left_one_law / crossing_right_one_law (for rational q > 1), matching Z_{a+bh,1} and Z_{ac+b,1}.",
   "label": "Lemma 2.2",
   "title": "contact one",
   "paper_line": 265,
   "anchor": {
    "statement": "lem-2.2"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.terminal_law",
     "role": "F_{S(a;1)} = Z_{a,1}",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Formula/StateCombinatorics.lean",
     "line_start": 391,
     "line_end": 394,
     "decl_line": 392,
     "docstring": "The law of the terminal state `S(a; 1)` is the atom `[(a, 1)]`.",
     "statement": "theorem terminal_law (a : ℕ) :\n    stateLaw (State.single a 1) = lawAtom a 1",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N054",
       "theorem_name": "SurfaceBlowupV2.terminal_law",
       "kind": "theorem",
       "theorem_id": "fdaaa2c0-1cc2-4616-ae36-6588d60c55fd",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/fdaaa2c0-1cc2-4616-ae36-6588d60c55fd",
       "blueprint_source": "(8.4), computational clause only"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.terminal_curve_order_dvr",
     "role": "R/(f) is a DVR with uniformizer t",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/ChildMembers.lean",
     "line_start": 608,
     "line_end": 638,
     "decl_line": 610,
     "docstring": "In the terminal state `single a 1`, the curve order `R/J` is a DVR with uniformizer `t`, and\nthe maximal ideal of `O` extends to the `a`-th power of its maximal ideal.",
     "statement": "theorem terminal_curve_order_dvr (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n    [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)] (pi : O)\n    (hpi : Irreducible pi) (u : (TwoSeries O)ˣ) (a b : ℕ) (ha : 0 < a)\n    [IsDomain (ConcreteSurface O pi u a b)] [IsRegularLocalRing (ConcreteSurface O pi u a b)]\n    (S : SurfaceData O (ConcreteSurface O pi u a b)) (hSpi : S.pi = pi)\n    (hSt : S.t = (surfaceT O pi u a b)) (hSx : S.x = (surfaceX O pi u a b)) (hSa : S.a = a)\n    (hSb : S.b = b) (J : Ideal (ConcreteSurface O pi u a b))\n    (hJ : J ∈ surfaceStateSet O (ConcreteSurface O pi u a b) S (State.single a 1))\n    (f : (ConcreteSurface O pi u a b)) (hf : J = Ideal.span {f}) :\n    ∃ (_ : IsDomain ((ConcreteSurface O pi u a b) ⧸ J)) (_ : IsLocalRing\n        ((ConcreteSurface O pi u a b) ⧸ J)),\n    IsDiscreteValuationRing ((ConcreteSurface O pi u a b) ⧸ J) ∧\n    Irreducible (Ideal.Quotient.mk J (surfaceT O pi u a b)) ∧\n    Ideal.map (algebraMap O ((ConcreteSurface O pi u a b) ⧸ J) : O →+*\n        ((ConcreteSurface O pi u a b) ⧸ J)) (IsLocalRing.maximalIdeal O) =\n        (IsLocalRing.maximalIdeal ((ConcreteSurface O pi u a b) ⧸ J))^a",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1071",
       "theorem_name": "SurfaceBlowupV2.terminal_curve_order_dvr",
       "kind": "theorem",
       "theorem_id": "ec870e7f-d384-4406-8973-35eef1c59556",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/ec870e7f-d384-4406-8973-35eef1c59556",
       "blueprint_source": "§8.1, equation (8.4) — the terminal state S(a;1): R/(f) is a complete DVR with uniformizer t, of type {(a,1)}; restructured (cycle 8)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.terminal_field_invariant",
     "role": "field invariant (a,1)",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/ChildMembers.lean",
     "line_start": 744,
     "line_end": 764,
     "decl_line": 746,
     "docstring": "In the terminal state `single a 1`, the generic fibre of the curve order has field invariant\n`(a, 1)`: ramification index `a` and residue degree `1`.",
     "statement": "theorem terminal_field_invariant (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n    [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)] (pi : O)\n    (hpi : Irreducible pi) (u : (TwoSeries O)ˣ) (a b : ℕ) (ha : 0 < a)\n    [IsDomain (ConcreteSurface O pi u a b)] [IsRegularLocalRing (ConcreteSurface O pi u a b)]\n    (S : SurfaceData O (ConcreteSurface O pi u a b)) (hSpi : S.pi = pi)\n    (hSt : S.t = (surfaceT O pi u a b)) (hSx : S.x = (surfaceX O pi u a b)) (hSa : S.a = a)\n    (hSb : S.b = b) (J : Ideal (ConcreteSurface O pi u a b))\n    (hJ : J ∈ surfaceStateSet O (ConcreteSurface O pi u a b) S (State.single a 1))\n    (f : (ConcreteSurface O pi u a b)) (hf : J = Ideal.span {f}) (B : Type) [CommRing B]\n    [Algebra O B] (eB : B ≃ₐ[O] ((ConcreteSurface O pi u a b) ⧸ J)) :\n    fieldInvariant O (TensorProduct O (BaseField O) B) = (a, 1)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1073",
       "theorem_name": "SurfaceBlowupV2.terminal_field_invariant",
       "kind": "theorem",
       "theorem_id": "c9f43e73-6b3b-4569-9dfc-9610ddd76552",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/c9f43e73-6b3b-4569-9dfc-9610ddd76552",
       "blueprint_source": "§8.1, equation (8.4) — the terminal state S(a;1): R/(f) is a complete DVR with uniformizer t, of type {(a,1)}; restructured (cycle 8)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.concrete_member_terminal_type",
     "role": "type {(a,1)} for every ideal of the state",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/ChildMembers.lean",
     "line_start": 766,
     "line_end": 797,
     "decl_line": 767,
     "docstring": "In the terminal state `single a 1`, every ideal of the state set has algebra type `{(a, 1)}`.",
     "statement": "theorem concrete_member_terminal_type (m : ConcreteMember) (a : ℕ) (hs : m.s = State.single a 1)\n    (J : Ideal m.R) (hJ : J ∈ m.toMeasured.stateSet) :\n    HasAlgebraType m.O (m.R ⧸ J) {(a, 1)}",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1074",
       "theorem_name": "SurfaceBlowupV2.concrete_member_terminal_type",
       "kind": "theorem",
       "theorem_id": "e2f11698-36af-4368-ae9b-cedb17a8ff7c",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/e2f11698-36af-4368-ae9b-cedb17a8ff7c",
       "blueprint_source": "§8.1, equation (8.4) — the terminal state S(a;1): R/(f) is a complete DVR with uniformizer t, of type {(a,1)}; restructured (cycle 8)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.Tests.crossing_left_one_law",
     "role": "law of T(a,b;1,h) (private)",
     "kind": "theorem",
     "private": true,
     "file": "Tests/Regression.lean",
     "line_start": 976,
     "line_end": 990,
     "decl_line": 977,
     "docstring": "`T(a,b;1,h)` has the law of the terminal state `S(a+hb;1)`.",
     "statement": "private theorem crossing_left_one_law (a b h : ℕ) (ha : 0 < a) (hb : 0 < b) (hh : 0 < h) (q : ℚ)\n    (hq : 1 < q) (σ : FactorType) :\n    coeffAt q (stateLaw (.crossing a b 1 h)) σ = if σ = {(a+h*b, 1)} then 1 else 0",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.Tests.crossing_right_one_law",
     "role": "law of T(a,b;c,1) (private)",
     "kind": "theorem",
     "private": true,
     "file": "Tests/Regression.lean",
     "line_start": 992,
     "line_end": 1006,
     "decl_line": 993,
     "docstring": "`T(a,b;c,1)` has the law of the terminal state `S(ca+b;1)`.",
     "statement": "private theorem crossing_right_one_law (a b c : ℕ) (ha : 0 < a) (hb : 0 < b) (hc : 0 < c) (q : ℚ)\n    (hq : 1 < q) (σ : FactorType) :\n    coeffAt q (stateLaw (.crossing a b c 1)) σ = if σ = {(c*a+b, 1)} then 1 else 0",
     "section_variables": "",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "def-cells",
   "kind": "definition",
   "relation": "definition",
   "confidence": "medium",
   "summary": "Residue ideals of the special fibre with prescribed contacts (singleResidueIdeals, crossingResidueIdeals); a cell is the set of ideals with fixed order d and tangent divisor (HasTangentDivisor); tangent patterns record the combinatorics of a divisor (TangentPattern, Allowed).",
   "label": "Allowed residue ideals, cells, occupied points",
   "title": "geometric terms",
   "anchor": {
    "bold": "allowed residue ideal"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.singleResidueIdeals",
     "role": "allowed residue ideals, single",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Surfaces/Lengths.lean",
     "line_start": 78,
     "line_end": 80,
     "decl_line": 79,
     "docstring": "Principal ideals of `k[[T,X]]/(T^a)` with contact `c` against `T`.",
     "statement": "def singleResidueIdeals (k : Type) [CommRing k] (a c : ℕ) :=\n  {I : Ideal (SpecialFiber k a 0) // ∃ f, I=Ideal.span {f} ∧ contact f (fiberT k a 0)=c}",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.crossingResidueIdeals",
     "role": "allowed residue ideals, crossing",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Surfaces/Lengths.lean",
     "line_start": 81,
     "line_end": 84,
     "decl_line": 82,
     "docstring": "Principal ideals of `k[[T,X]]/(T^a X^b)` with contacts `c` against `T` and `h` against `X`.",
     "statement": "def crossingResidueIdeals (k : Type) [CommRing k] (a b c h : ℕ) :=\n  {I : Ideal (SpecialFiber k a b) // ∃ f, I=Ideal.span {f} ∧\n    contact f (fiberT k a b)=c ∧ contact f (fiberX k a b)=h}",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.HasTangentDivisor",
     "role": "cell membership",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Blowup/Charts.lean",
     "line_start": 414,
     "line_end": 420,
     "decl_line": 416,
     "docstring": "The principal ideal `J` has tangent cone of degree `d` with divisor `D` on the\nexceptional line.",
     "statement": "def HasTangentDivisor (S : SurfaceData O R) (J : Ideal R) (d : ℕ)\n    (D : ExceptionalDivisor (IsLocalRing.ResidueField R)) : Prop :=\n  ∃ f : R, ∃ H : Polynomial (IsLocalRing.ResidueField R),\n    J = Ideal.span {f} ∧ HasHomogeneousDivisor (IsLocalRing.ResidueField R) d H D ∧\n      f - tangentLift O R S d H ∈ (IsLocalRing.maximalIdeal R)^(d+1)",
     "section_variables": "variable (O R : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n  [CommRing R] [IsDomain R] [Algebra O R] [IsRegularLocalRing R]",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.TangentPattern",
     "role": "tangent patterns",
     "kind": "structure",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 226,
     "line_end": 233,
     "decl_line": 228,
     "docstring": "A tangent pattern of a state of degree `n`: the tangent degree `d`, the boundary contacts\n`rt`, `rx`, and the pattern of the other points.",
     "statement": "structure TangentPattern (n : ℕ) where\n  d : Fin (n+1)\n  rt : Fin (n+1)\n  rx : Fin (n+1)\n  other : Pattern n\n  deriving DecidableEq, Fintype",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N005",
       "theorem_name": "SurfaceBlowupV2.Patterns",
       "kind": "definition",
       "theorem_id": "6011b793-793d-4101-ab56-b15c9a1fe56f",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/6011b793-793d-4101-ab56-b15c9a1fe56f",
       "blueprint_source": "(7.1)–(7.2), (7.6)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.Allowed",
     "role": "admissible patterns",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 235,
     "line_end": 241,
     "decl_line": 236,
     "docstring": "The admissible tangent patterns of a state (Proposition 5.1).",
     "statement": "def Allowed (s : State) (P : TangentPattern s.degree) : Prop :=\n  0<P.d.val ∧ P.rt.val+P.rx.val+patternWeight P.other=P.d.val ∧\n  match s with\n  | .single _ c => P.d.val≤c ∧ P.rx.val=0 ∧ (0<P.rt.val ↔ P.d.val<c)\n  | .crossing _ _ c h => P.d.val≤c ∧ P.d.val≤h ∧\n      (0<P.rt.val ↔ P.d.val<c) ∧ (0<P.rx.val ↔ P.d.val<h)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N005",
       "theorem_name": "SurfaceBlowupV2.Patterns",
       "kind": "definition",
       "theorem_id": "6011b793-793d-4101-ab56-b15c9a1fe56f",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/6011b793-793d-4101-ab56-b15c9a1fe56f",
       "blueprint_source": "(7.1)–(7.2), (7.6)"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "def-contact-order",
   "kind": "definition",
   "relation": "covered",
   "confidence": "high",
   "summary": "Lean uses a different well-founded measure, State.rank = 2N² + 2(N − w) + tag, and proves that every non-self child has strictly smaller rank (nonself_child_rank_lt); this plays the role of the paper's contact-size order in every induction.",
   "label": "Contact-size order",
   "title": "induction order on states",
   "anchor": {
    "bold": "contact size"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.State.rank",
     "role": "the numerical rank",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 208,
     "line_end": 209,
     "decl_line": 209,
     "docstring": "The well-founded rank `2d² + 2(d - w) + tag` driving the recursion.",
     "statement": "def rank (s : State) : ℕ := 2*s.degree*s.degree + 2*(s.degree-s.weight) + s.tag",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N002",
       "theorem_name": "SurfaceBlowupV2.State",
       "kind": "definition",
       "theorem_id": "2b9eac46-2d27-4bcc-bd94-3c889bee93c7",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2b9eac46-2d27-4bcc-bd94-3c889bee93c7",
       "blueprint_source": "(2.2)–(2.3), §8.1; rank restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.nonself_child_rank_lt",
     "role": "children decrease the rank",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Formula/StateCombinatorics.lean",
     "line_start": 254,
     "line_end": 293,
     "decl_line": 255,
     "docstring": "Every child of a non-self allowed pattern has strictly smaller rank than its parent.",
     "statement": "theorem nonself_child_rank_lt (s : State) (hs : s.Valid) (P : TangentPattern s.degree)\n    (hP : Allowed s P) (hself : ¬ SelfPattern s P) (z : ℕ × State) (hz : z ∈ children s P) :\n    z.2.rank < s.rank",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N053",
       "theorem_name": "SurfaceBlowupV2.nonself_child_rank_lt",
       "kind": "theorem",
       "theorem_id": "3cc054a5-af1f-41bd-9350-18930d6e9727",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3cc054a5-af1f-41bd-9350-18930d6e9727",
       "blueprint_source": "§8.1 — finite computation order"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "lem-3.1",
   "kind": "lemma",
   "relation": "covered",
   "confidence": "medium",
   "summary": "The division maps (3.1) are division_linear_equivalence (from a lifted basis of R/(f)) and the unique factorization (3.2) is unique_scaled_generator_normalization: every f + πh is uniquely (1 + πu)(f + π Σ zᵢbᵢ). The analytic-dependence part (3.3)–(3.4) is not formalized; the formal proof uses instead that the normalization preserves π-adic congruences (normalizer_preserves_adic_congruence, coordinate_transition_congruence).",
   "label": "Lemma 3.1",
   "title": "bounded division and normalization",
   "paper_line": 289,
   "anchor": {
    "statement": "lem-3.1"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.division_linear_equivalence",
     "role": "rem/quo division (3.1)",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/AdicCylinders.lean",
     "line_start": 895,
     "line_end": 914,
     "decl_line": 897,
     "docstring": "If `b` lifts an `O`-basis of `R/(f)` with `f ≠ 0` in a domain, the division map is the\ninverse of an `O`-linear equivalence `R ≃ O^n × R`.",
     "statement": "theorem division_linear_equivalence (O R : Type) [CommRing O] [CommRing R] [Algebra O R] (n : ℕ)\n    (f : R) (B : Module.Basis (Fin n) O (R ⧸ Ideal.span {f})) (b : Fin n → R)\n    (hb : ∀ i, Ideal.Quotient.mk (Ideal.span {f}) (b i) = B i) [IsDomain R] (hf : f ≠ 0) :\n    ∃ E : R ≃ₗ[O] ((Fin n → O) × R), ∀ s, E.symm s = divisionMap f b s",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N163",
       "theorem_name": "SurfaceBlowupV2.division_linear_equivalence",
       "kind": "theorem",
       "theorem_id": "448fbdf9-5670-4f1f-a200-14f21d01c0a4",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/448fbdf9-5670-4f1f-a200-14f21d01c0a4",
       "blueprint_source": "restructured — G3, finite-digit proof of Lemmas 3.1–3.2"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.unique_scaled_generator_normalization",
     "role": "unique factorization (3.2)",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/Normalizer.lean",
     "line_start": 103,
     "line_end": 126,
     "decl_line": 104,
     "docstring": "Every `f + π h` is uniquely of the form `(1 + π u) (f + π Σ zᵢ bᵢ)`.",
     "statement": "theorem unique_scaled_generator_normalization (O R : Type) [CommRing O] [CommRing R] [Algebra O R]\n    (n : ℕ) [IsDomain R] (pi : O) (hpi : algebraMap O R pi ≠ 0) (f : R) (b : Fin n → R)\n    (E : R ≃ₗ[O] ((Fin n → O) × R)) (hE : ∀ s, E.symm s = divisionMap f b s)\n    [IsAdicComplete (Ideal.span {pi}) ((Fin n → O) × R)] (h : R) :\n    ∃! s : (Fin n → O) × R, (1 + pi • s.2) * (f + pi • coordinateLift b s.1) = f + pi • h",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N167",
       "theorem_name": "SurfaceBlowupV2.unique_scaled_generator_normalization",
       "kind": "theorem",
       "theorem_id": "79eafd16-7510-424c-89f7-ff8bd17e83f8",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/79eafd16-7510-424c-89f7-ff8bd17e83f8",
       "blueprint_source": "restructured — G3, finite-digit proof of Lemmas 3.1–3.2"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.scaled_normalization_identity",
     "role": "the fixed-point form",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/PrimitiveLocus.lean",
     "line_start": 77,
     "line_end": 87,
     "decl_line": 79,
     "docstring": "The normalization identity `(1 + π v)(f + π ∑ zᵢ bᵢ) = f + π E⁻¹(s + remainder s)` for a\ndivision chart.",
     "statement": "theorem scaled_normalization_identity (O R : Type) [CommRing O] [CommRing R] [Algebra O R] (n : ℕ)\n    (pi : O) (f : R) (b : Fin n → R) (E : R ≃ₗ[O] ((Fin n → O) × R))\n    (hE : ∀ s, E.symm s = divisionMap f b s) (s : (Fin n → O) × R) :\n    (1 + pi • s.2) * (f + pi • coordinateLift b s.1) =\n      f + pi • E.symm (adicPerturb (coordinateRemainder pi b E) s)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N166",
       "theorem_name": "SurfaceBlowupV2.scaled_normalization_identity",
       "kind": "theorem",
       "theorem_id": "962cba00-ce84-4815-928d-908bd8be0d68",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/962cba00-ce84-4815-928d-908bd8be0d68",
       "blueprint_source": "restructured — G3, finite-digit proof of Lemmas 3.1–3.2"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.normalizer_preserves_adic_congruence",
     "role": "replacement for analyticity",
     "kind": "theorem",
     "private": true,
     "file": "SurfaceBlowup/Measure/Normalizer.lean",
     "line_start": 59,
     "line_end": 74,
     "decl_line": 60,
     "docstring": "The generator normal form preserves congruence modulo `(π)^j`.",
     "statement": "private theorem normalizer_preserves_adic_congruence (O R : Type) [CommRing O] [CommRing R]\n    [Algebra O R]\n    (n : ℕ) (pi : O) (b : Fin n → R) (E : R ≃ₗ[O] ((Fin n → O) × R))\n    [IsAdicComplete (Ideal.span {pi}) ((Fin n → O) × R)] (j : ℕ) (h k : R)\n    (hhk : adicCongr (Ideal.span {pi}) j h k) :\n    adicCongr (Ideal.span {pi}) j (generatorNormalForm pi b E h)\n      (generatorNormalForm pi b E k)",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.coordinate_transition_congruence",
     "role": "transitions preserve congruences",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/Normalizer.lean",
     "line_start": 76,
     "line_end": 101,
     "decl_line": 78,
     "docstring": "The transition between the coordinates of two normalizations preserves congruence modulo\n  `(π)^j`.",
     "statement": "theorem coordinate_transition_congruence (O R : Type) [CommRing O] [CommRing R] [Algebra O R]\n    (n : ℕ) (pi : O) (b : Fin n → R)\n    [IsAdicComplete (Ideal.span {pi}) ((Fin n → O) × R)] (c : Fin n → R)\n    (F : R ≃ₗ[O] ((Fin n → O) × R)) (h0 : R) (j : ℕ) (z w : Fin n → O)\n    (hzw : adicCongr (Ideal.span {pi}) j z w) :\n    adicCongr (Ideal.span {pi}) j (idealTransition pi b c F h0 z)\n      (idealTransition pi b c F h0 w)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N210",
       "theorem_name": "SurfaceBlowupV2.coordinate_transition_congruence",
       "kind": "theorem",
       "theorem_id": "249201ec-9ed3-485c-b7b0-c045bc4fd80a",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/249201ec-9ed3-485c-b7b0-c045bc4fd80a",
       "blueprint_source": "restructured — G3, finite-precision ideal atlas in Proposition 3.3"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "prop-3.2",
   "kind": "proposition",
   "relation": "covered",
   "confidence": "medium",
   "summary": "The chart (3.5) is a bijection onto its residue-ideal cell (coordinate_ideal_cell_bijection); chart transitions preserve Haar measure (ideal_chart_transition_haar, the formal counterpart of 'unit Jacobian'), so the pushed-forward chart measures and the state measure of an atlas are independent of choices (ideal_chart_pushforward_independent, state_measure_atlas_independent). The tangent-lattice statement is not formalized.",
   "label": "Proposition 3.2",
   "title": "intrinsic measure",
   "paper_line": 319,
   "anchor": {
    "statement": "prop-3.2"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.coordinate_ideal_cell_bijection",
     "role": "charts parametrize the lifts uniquely",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/Atlas.lean",
     "line_start": 123,
     "line_end": 139,
     "decl_line": 125,
     "docstring": "The coordinate-ideal map of a division chart is a bijection onto the residue-ideal cell of\n`f`.",
     "statement": "theorem coordinate_ideal_cell_bijection (O R : Type) [CommRing O] [CommRing R] [Algebra O R] (n : ℕ)\n    (pi : O) (b : Fin n → R) (E : R ≃ₗ[O] ((Fin n → O) × R))\n    [IsAdicComplete (Ideal.span {pi}) ((Fin n → O) × R)] [IsDomain R] [IsLocalRing R]\n    (hp0 : algebraMap O R pi ≠ 0) (hpm : algebraMap O R pi ∈ IsLocalRing.maximalIdeal R) (f : R)\n    (hE : ∀ s, E.symm s = divisionMap f b s)\n    (hf : Function.Injective\n      (fun x : R ⧸ Ideal.span {algebraMap O R pi} => x *\n      Ideal.Quotient.mk (Ideal.span {algebraMap O R pi}) f))\n    :\n    Function.Injective (coordinateIdeal pi f b) ∧ Set.range (coordinateIdeal pi f b) =\n      residueIdealCell (algebraMap O R pi) f",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N208",
       "theorem_name": "SurfaceBlowupV2.coordinate_ideal_cell_bijection",
       "kind": "theorem",
       "theorem_id": "a1a617c2-2055-4b5d-9adb-308ab1cb6a25",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/a1a617c2-2055-4b5d-9adb-308ab1cb6a25",
       "blueprint_source": "restructured — G3, finite-precision ideal atlas in Proposition 3.3"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.ideal_chart_transition_haar",
     "role": "transitions are measure preserving",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/Atlas.lean",
     "line_start": 215,
     "line_end": 226,
     "decl_line": 216,
     "docstring": "The coordinate transition map preserves the Haar probability measure on `O^n`.",
     "statement": "theorem ideal_chart_transition_haar (htop : IsAdic (IsLocalRing.maximalIdeal O))\n    (hpi : Irreducible pi) :\n    MeasureTheory.MeasurePreserving (idealTransition pi b c F h0) (coefficientMeasure O n)\n      (coefficientMeasure O n)",
     "section_variables": "variable (O R : Type) [CommRing O] [CommRing R] [Algebra O R] (n : ℕ) (pi : O) (b : Fin n → R)\n  (E : R ≃ₗ[O] ((Fin n → O) × R)) [IsAdicComplete (Ideal.span {pi}) ((Fin n → O) × R)]\n  [IsDomain R] [IsLocalRing R] (hp0 : algebraMap O R pi ≠ 0)\n  (hpm : algebraMap O R pi ∈ IsLocalRing.maximalIdeal R) (f : R)\n  (hE : ∀ s, E.symm s = divisionMap f b s)\n  (hf : Function.Injective (fun x : R ⧸ Ideal.span {algebraMap O R pi} =>\n    x * Ideal.Quotient.mk (Ideal.span {algebraMap O R pi}) f))\n  (g : R) (c : Fin n → R) (F : R ≃ₗ[O] ((Fin n → O) × R)) (hF : ∀ s, F.symm s = divisionMap g c s)\n  (hg : Function.Injective (fun x : R ⧸ Ideal.span {algebraMap O R pi} =>\n    x * Ideal.Quotient.mk (Ideal.span {algebraMap O R pi}) g))\n  (h0 : R) (hfg : f = g + pi • h0)\nvariable [IsDomain O] [IsDiscreteValuationRing O]\n  [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]\n  [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n  [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]",
     "prove2me": [
      {
       "node": "N221",
       "theorem_name": "SurfaceBlowupV2.ideal_chart_transition_haar",
       "kind": "theorem",
       "theorem_id": "2197f63d-698f-4f20-a52a-763d18584088",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2197f63d-698f-4f20-a52a-763d18584088",
       "blueprint_source": "restructured — G3, Proposition 3.3 by finite-precision chart transitions"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.ideal_chart_pushforward_independent",
     "role": "chart measures agree",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/Atlas.lean",
     "line_start": 228,
     "line_end": 237,
     "decl_line": 230,
     "docstring": "Two division charts of the same residue-ideal cell push Haar measure forward to the same measure\n  on ideals.",
     "statement": "theorem ideal_chart_pushforward_independent (htop : IsAdic (IsLocalRing.maximalIdeal O))\n    (hpi : Irreducible pi) [MeasurableSpace (Ideal R)] (hc : Measurable (coordinateIdeal pi g c)) :\n    (coefficientMeasure O n).map (coordinateIdeal pi f b) =\n      (coefficientMeasure O n).map (coordinateIdeal pi g c)",
     "section_variables": "variable (O R : Type) [CommRing O] [CommRing R] [Algebra O R] (n : ℕ) (pi : O) (b : Fin n → R)\n  (E : R ≃ₗ[O] ((Fin n → O) × R)) [IsAdicComplete (Ideal.span {pi}) ((Fin n → O) × R)]\n  [IsDomain R] [IsLocalRing R] (hp0 : algebraMap O R pi ≠ 0)\n  (hpm : algebraMap O R pi ∈ IsLocalRing.maximalIdeal R) (f : R)\n  (hE : ∀ s, E.symm s = divisionMap f b s)\n  (hf : Function.Injective (fun x : R ⧸ Ideal.span {algebraMap O R pi} =>\n    x * Ideal.Quotient.mk (Ideal.span {algebraMap O R pi}) f))\n  (g : R) (c : Fin n → R) (F : R ≃ₗ[O] ((Fin n → O) × R)) (hF : ∀ s, F.symm s = divisionMap g c s)\n  (hg : Function.Injective (fun x : R ⧸ Ideal.span {algebraMap O R pi} =>\n    x * Ideal.Quotient.mk (Ideal.span {algebraMap O R pi}) g))\n  (h0 : R) (hfg : f = g + pi • h0)\nvariable [IsDomain O] [IsDiscreteValuationRing O]\n  [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]\n  [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n  [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]",
     "prove2me": [
      {
       "node": "N222",
       "theorem_name": "SurfaceBlowupV2.ideal_chart_pushforward_independent",
       "kind": "theorem",
       "theorem_id": "9ae8dd62-1192-4936-9d00-e3eae2d76489",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/9ae8dd62-1192-4936-9d00-e3eae2d76489",
       "blueprint_source": "restructured — G3, Proposition 3.3 by finite-precision chart transitions"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.state_measure_atlas_independent",
     "role": "intrinsic state measure",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/Atlas.lean",
     "line_start": 277,
     "line_end": 313,
     "decl_line": 278,
     "docstring": "The state measure does not depend on the ideal atlas used to define it.",
     "statement": "theorem state_measure_atlas_independent (O R : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] [TopologicalSpace O] [IsTopologicalRing O]\n    [CompactSpace O] [T2Space O] [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]\n    (htop : IsAdic (IsLocalRing.maximalIdeal O)) [CommRing R] [Algebra O R]\n    [MeasurableSpace (Ideal R)] (pi : O) (hpi : Irreducible pi) (n : ℕ) (X : Set (Ideal R))\n    (A B : IdealAtlas O R pi n X)\n    (hB : ∀ j, Measurable (coordinateIdeal pi (B.chart j).f (B.chart j).b)) (e : A.ι ≃ B.ι)\n    (hcell : ∀ i, residueIdealCell (algebraMap O R pi) (A.chart i).f =\n      residueIdealCell (algebraMap O R pi) (B.chart (e i)).f)\n    [IsAdicComplete (Ideal.span {pi}) ((Fin n → O) × R)] [IsDomain R] [IsLocalRing R]\n    (hp0 : algebraMap O R pi ≠ 0) (hpm : algebraMap O R pi ∈ IsLocalRing.maximalIdeal R) :\n    stateMeasure O R pi n (Nat.card (IsLocalRing.ResidueField O)) A =\n      stateMeasure O R pi n (Nat.card (IsLocalRing.ResidueField O)) B",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N413",
       "theorem_name": "SurfaceBlowupV2.state_measure_atlas_independent",
       "kind": "theorem",
       "theorem_id": "654ecc15-3005-4251-8c7e-407aec65a4dd",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/654ecc15-3005-4251-8c7e-407aec65a4dd",
       "blueprint_source": "Propositions 3.3–3.4 — the state measure and its total mass, restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.idealChartSigma",
     "role": "the intrinsic σ-algebra",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Measure/AdicCylinders.lean",
     "line_start": 193,
     "line_end": 198,
     "decl_line": 195,
     "docstring": "The intrinsic σ-algebra on curve ideals: generated by the images of the Borel sets of `O^n`\nunder all division charts of all ranks `n`.",
     "statement": "def idealChartSigma [MeasurableSpace O] (pi : O) : MeasurableSpace (Ideal R) :=\n  MeasurableSpace.generateFrom\n    {T : Set (Ideal R) | ∃ (n : ℕ) (f : R) (b : Fin n → R) (S : Set (Fin n → O)),\n      IsDivisionChart O R pi f b ∧ MeasurableSet S ∧ T = coordinateIdeal pi f b '' S}",
     "section_variables": "variable (O R : Type) [CommRing O] [CommRing R] [Algebra O R]\nvariable {O R} in",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.IdealChart",
     "role": "division charts",
     "kind": "structure",
     "private": false,
     "file": "SurfaceBlowup/Measure/AdicCylinders.lean",
     "line_start": 152,
     "line_end": 163,
     "decl_line": 154,
     "docstring": "A division chart of rank `n`: a generator `f` regular modulo `π` with representatives `b`\nand an `O`-linear equivalence `E` inverse to the division map.",
     "statement": "structure IdealChart (pi : O) (n : ℕ) where\n  /-- The centre generator. -/\n  f : R\n  /-- The coordinate representatives. -/\n  b : Fin n → R\n  /-- The division equivalence. -/\n  E : R ≃ₗ[O] ((Fin n → O) × R)\n  division : ∀ s, E.symm s = divisionMap f b s\n  regular : Function.Injective (fun y : R ⧸ Ideal.span {algebraMap O R pi} =>\n    y * Ideal.Quotient.mk (Ideal.span {algebraMap O R pi}) f)",
     "section_variables": "variable (O R : Type) [CommRing O] [CommRing R] [Algebra O R]",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "prop-3.3",
   "kind": "proposition",
   "relation": "specialization",
   "confidence": "high",
   "summary": "State volumes q^{-c} and (q−1)q^{-c-h} are proved for any ideal atlas indexed by the residue ideals (single_state_volume, crossing_state_volume), from the residue-ideal counts q^{ac−c} and (q−1)q^{ac+bh−c−h}; the concrete surfaces admit such atlases (concrete_single/crossing_state_volume). The volumes appear in the recursion as the definition stateVolume.",
   "label": "Proposition 3.3",
   "title": "state volumes",
   "paper_line": 332,
   "anchor": {
    "statement": "prop-3.3"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.single_state_volume",
     "role": "V_{S(a;c)} = q^{-c}",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/StateVolumes.lean",
     "line_start": 76,
     "line_end": 103,
     "decl_line": 78,
     "docstring": "The total state measure of a single state with contact `c` is `q^(-c)`, where `q` is the residue\n  cardinality.",
     "statement": "theorem single_state_volume (O R : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n    [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]\n    [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n    [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]\n    (htop : IsAdic (IsLocalRing.maximalIdeal O)) [CommRing R] [Algebra O R]\n    [MeasurableSpace (Ideal R)] (pi : O) (X : Set (Ideal R))\n    (a c : ℕ) (ha : 0 < a) (A : IdealAtlas O R pi (a * c) X)\n    (hA : ∀ i, Measurable (coordinateIdeal pi (A.chart i).f (A.chart i).b))\n    (hcount : Nonempty (A.ι ≃ singleResidueIdeals (IsLocalRing.ResidueField O) a c)) :\n    stateMeasure O R pi (a*c) (Nat.card (IsLocalRing.ResidueField O)) A Set.univ =\n      (Nat.card (IsLocalRing.ResidueField O) : ℝ≥0∞)⁻¹^c",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N414",
       "theorem_name": "SurfaceBlowupV2.single_state_volume",
       "kind": "theorem",
       "theorem_id": "51eeaf90-4304-4e91-9b1e-8d4899ea1b35",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/51eeaf90-4304-4e91-9b1e-8d4899ea1b35",
       "blueprint_source": "Propositions 3.3–3.4 — the state measure and its total mass, restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.crossing_state_volume",
     "role": "V_{T} = (q−1)q^{-c-h}",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/Normalizer.lean",
     "line_start": 273,
     "line_end": 309,
     "decl_line": 275,
     "docstring": "The total state measure of a crossing state with contacts `c` and `h` is `(q - 1) q^(-(c + h))`,\n  where `q` is the residue cardinality.",
     "statement": "theorem crossing_state_volume (O R : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n    [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]\n    [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n    [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]\n    (htop : IsAdic (IsLocalRing.maximalIdeal O)) [CommRing R] [Algebra O R]\n    [MeasurableSpace (Ideal R)] (pi : O) (X : Set (Ideal R))\n    (a b c h : ℕ) (ha : 0 < a) (hb : 0 < b) (hc : 0 < c) (hh : 0 < h)\n    (A : IdealAtlas O R pi (a * c + b * h) X)\n    (hA : ∀ i, Measurable (coordinateIdeal pi (A.chart i).f (A.chart i).b))\n    (hcount : Nonempty (A.ι ≃ crossingResidueIdeals (IsLocalRing.ResidueField O) a b c h)) :\n    stateMeasure O R pi (a*c+b*h) (Nat.card (IsLocalRing.ResidueField O)) A Set.univ =\n      ((Nat.card (IsLocalRing.ResidueField O) : ℝ≥0∞) - 1) *\n        (Nat.card (IsLocalRing.ResidueField O) : ℝ≥0∞)⁻¹^(c+h)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N415",
       "theorem_name": "SurfaceBlowupV2.crossing_state_volume",
       "kind": "theorem",
       "theorem_id": "41a219d3-bc03-4ec3-8da3-008af9b4e466",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/41a219d3-bc03-4ec3-8da3-008af9b4e466",
       "blueprint_source": "Propositions 3.3–3.4 — the state measure and its total mass, restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.single_residue_ideal_count",
     "role": "q^{N−c} residue ideals",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/StateVolumes.lean",
     "line_start": 33,
     "line_end": 74,
     "decl_line": 35,
     "docstring": "The number of single residue ideals of `k⟦T, X⟧ ⧸ (T^a)` with contact `c` with `T` is\n  `q^(ac - c)`, where `q = #k`.",
     "statement": "theorem single_residue_ideal_count (k : Type) [Field k] [Finite k] (a c : ℕ) (ha : 0 < a) :\n    Nat.card (singleResidueIdeals k a c) = (Nat.card k)^(a*c-c)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N070",
       "theorem_name": "SurfaceBlowupV2.single_residue_ideal_count",
       "kind": "theorem",
       "theorem_id": "6095810d-1528-4af3-b5f7-10de0eafb3dc",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/6095810d-1528-4af3-b5f7-10de0eafb3dc",
       "blueprint_source": "Proposition 3.4 — residue count underlying the S volume"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.crossing_residue_ideal_count",
     "role": "(q−1)q^{N−c−h} residue ideals",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/Normalizer.lean",
     "line_start": 181,
     "line_end": 271,
     "decl_line": 183,
     "docstring": "The number of crossing residue ideals of `k⟦T, X⟧ ⧸ (T^a X^b)` with contacts `c` with `T` and\n  `h` with `X` is `(q - 1) q^(ac + bh - c - h)`, where `q = #k`.",
     "statement": "theorem crossing_residue_ideal_count (k : Type) [Field k] [Finite k] (a b c h : ℕ) (ha : 0 < a)\n    (hb : 0 < b) (hc : 0 < c) (hh : 0 < h) :\n    Nat.card (crossingResidueIdeals k a b c h) = (Nat.card k-1)*(Nat.card k)^(a*c+b*h-c-h)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N071",
       "theorem_name": "SurfaceBlowupV2.crossing_residue_ideal_count",
       "kind": "theorem",
       "theorem_id": "e3264bf7-920b-4154-9458-4be3d2edf37d",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/e3264bf7-920b-4154-9458-4be3d2edf37d",
       "blueprint_source": "Proposition 3.4 — residue count underlying the T volume"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.concrete_single_state_volume",
     "role": "on the concrete surface",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Surfaces/ConcreteStrictTransforms.lean",
     "line_start": 118,
     "line_end": 151,
     "decl_line": 120,
     "docstring": "The single state `(a, c)` of the concrete surface (with `b = 0`) has measure `q^(-c)`, where\n`q` is the size of the residue field.",
     "statement": "theorem concrete_single_state_volume (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] (pi : O) (hpi : Irreducible pi) (u : (TwoSeries O)ˣ)\n    (a : ℕ) (ha : 0 < a) [IsDomain (ConcreteSurface O pi u a 0)]\n    [IsRegularLocalRing (ConcreteSurface O pi u a 0)]\n    (S : SurfaceData O (ConcreteSurface O pi u a 0)) (hSpi : S.pi = pi)\n    (hSt : S.t = surfaceT O pi u a 0) (hSa : S.a = a) (hSb : S.b = 0)\n    (e : (ConcreteSurface O pi u a 0 ⧸ Ideal.span {algebraMap O (ConcreteSurface O pi u a 0) pi})\n      ≃+* SpecialFiber (IsLocalRing.ResidueField O) a 0)\n    (he : ∀ s : TwoSeries O,\n      e (Ideal.Quotient.mk (Ideal.span {algebraMap O (ConcreteSurface O pi u a 0) pi})\n      (surfaceMk O pi u a 0 s)) = Ideal.Quotient.mk (monomialIdeal (IsLocalRing.ResidueField O) a 0)\n      (residueSeries O s)) (c : ℕ) (hc : 0 < c) [TopologicalSpace O] [IsTopologicalRing O]\n    [CompactSpace O] [T2Space O] [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]\n    (htop : IsAdic (IsLocalRing.maximalIdeal O)) :\n    (letI : MeasurableSpace (Ideal (ConcreteSurface O pi u a 0)) := idealChartSigma O\n        (ConcreteSurface O pi u a 0) pi; ∃ A : IdealAtlas O (ConcreteSurface O pi u a 0) pi (a*c)\n        (surfaceStateSet O (ConcreteSurface O pi u a 0) S (State.single a c)),\n        stateMeasure O (ConcreteSurface O pi u a 0) pi (a*c)\n        (Nat.card (IsLocalRing.ResidueField O)) A Set.univ =\n        (Nat.card (IsLocalRing.ResidueField O) : ℝ≥0∞)⁻¹^c)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N422",
       "theorem_name": "SurfaceBlowupV2.concrete_single_state_volume",
       "kind": "theorem",
       "theorem_id": "1dfbb1d5-4233-4b80-9345-e12de18913f1",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/1dfbb1d5-4233-4b80-9345-e12de18913f1",
       "blueprint_source": "Propositions 3.3–3.4 — the actual atlas of a state on the concrete surface; restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.concrete_crossing_state_volume",
     "role": "on the concrete surface",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Surfaces/ConcreteStrictTransforms.lean",
     "line_start": 77,
     "line_end": 116,
     "decl_line": 79,
     "docstring": "The crossing state `(a, b, c, h)` of the concrete surface has measure\n`(q - 1) q^(-(c + h))`, where `q` is the size of the residue field.",
     "statement": "theorem concrete_crossing_state_volume (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] (pi : O) (hpi : Irreducible pi) (u : (TwoSeries O)ˣ)\n    (a b : ℕ) (ha : 0 < a) (hb : 0 < b) [IsDomain (ConcreteSurface O pi u a b)]\n    [IsRegularLocalRing (ConcreteSurface O pi u a b)]\n    (S : SurfaceData O (ConcreteSurface O pi u a b)) (hSpi : S.pi = pi)\n    (hSt : S.t = surfaceT O pi u a b) (hSx : S.x = surfaceX O pi u a b) (hSa : S.a = a)\n    (hSb : S.b = b)\n    (e : (ConcreteSurface O pi u a b ⧸ Ideal.span {algebraMap O (ConcreteSurface O pi u a b) pi})\n      ≃+* SpecialFiber (IsLocalRing.ResidueField O) a b)\n    (he : ∀ s : TwoSeries O,\n      e (Ideal.Quotient.mk (Ideal.span {algebraMap O (ConcreteSurface O pi u a b) pi})\n      (surfaceMk O pi u a b s)) = Ideal.Quotient.mk (monomialIdeal (IsLocalRing.ResidueField O) a b)\n      (residueSeries O s)) (c h : ℕ) (hc : 0 < c) (hh : 0 < h) [TopologicalSpace O]\n    [IsTopologicalRing O] [CompactSpace O] [T2Space O] [SecondCountableTopology O]\n    [MeasurableSpace O] [BorelSpace O] (htop : IsAdic (IsLocalRing.maximalIdeal O)) :\n    (letI : MeasurableSpace (Ideal (ConcreteSurface O pi u a b)) := idealChartSigma O\n        (ConcreteSurface O pi u a b) pi; ∃ A : IdealAtlas O (ConcreteSurface O pi u a b) pi\n        (a*c+b*h) (surfaceStateSet O (ConcreteSurface O pi u a b) S (State.crossing a b c h)),\n        stateMeasure O (ConcreteSurface O pi u a b) pi (a*c+b*h)\n        (Nat.card (IsLocalRing.ResidueField O)) A Set.univ =\n        ((Nat.card (IsLocalRing.ResidueField O) : ℝ≥0∞) - 1) *\n        (Nat.card (IsLocalRing.ResidueField O) : ℝ≥0∞)⁻¹^(c+h))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N425",
       "theorem_name": "SurfaceBlowupV2.concrete_crossing_state_volume",
       "kind": "theorem",
       "theorem_id": "19178a88-690b-4654-8029-db62b9daf386",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/19178a88-690b-4654-8029-db62b9daf386",
       "blueprint_source": "Propositions 3.3–3.4 — the actual atlas of a state on the concrete surface; restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.stateVolume",
     "role": "the volumes as expressions",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 279,
     "line_end": 282,
     "decl_line": 280,
     "docstring": "The volume `q^{-c}` (resp. `(q - 1) q^{-(c+h)}`) of a state.",
     "statement": "def stateVolume : State → Expr\n  | .single _ c => .inv (.pow .var c)\n  | .crossing _ _ c h => .mul eminusOne (.inv (.pow .var (c+h)))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N006",
       "theorem_name": "SurfaceBlowupV2.Weights",
       "kind": "definition",
       "theorem_id": "7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "blueprint_source": "(3.6), (7.3)–(7.7), (8.3), (9.3)"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-4.1",
   "kind": "display",
   "relation": "covered",
   "confidence": "medium",
   "summary": "The Lean development has no formal scheme; it works with the two blow-up charts R[x/t], R[t/x] and their exceptional filtrations. The layers I^j/I^{j+1} are identified with polynomial modules on a chart and Laurent-polynomial modules on the overlap, which is the content of 𝓘^j/𝓘^{j+1} ≅ 𝒪_E(j).",
   "label": "(4.1)",
   "title": "layers of the exceptional thickenings",
   "anchor": {
    "eq": "4.1"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.chart_layer_polynomial_coordinates",
     "role": "chart layers ≅ (R/(t,x))[Z]",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/ExceptionalLayers.lean",
     "line_start": 752,
     "line_end": 787,
     "decl_line": 754,
     "docstring": "Each exceptional layer of the chart is `R`-linearly isomorphic to `(R/(t,x))[Z]`, the monomial\n`r Z^i` corresponding to the layer class of `r · z^i`.",
     "statement": "theorem chart_layer_polynomial_coordinates (R : Type) [CommRing R] (t x : R)\n    (hreg : RegularParameterPair R t x) (j : ℕ) :\n    ∃ L : Polynomial (R ⧸ Ideal.span {t,x}) ≃ₗ[R] PrincipalLayer (BlowupChart R t x)\n    (chartBase R t x t) j, ∀ r : R, ∀ i : ℕ,\n    (L (Polynomial.C (Ideal.Quotient.mk (Ideal.span {t,x}) r) * Polynomial.X^i)).val =\n    principalLayerMap (BlowupChart R t x) (chartBase R t x t) j\n    (chartBase R t x r * (chartSlope R t x)^i)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N260",
       "theorem_name": "SurfaceBlowupV2.chart_layer_polynomial_coordinates",
       "kind": "theorem",
       "theorem_id": "9fdd1c1d-278d-4791-8132-4e93fc00712e",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/9fdd1c1d-278d-4791-8132-4e93fc00712e",
       "blueprint_source": "restructured — G4, finite exceptional filtration for Lemma 4.1"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.overlap_layer_laurent_coordinates",
     "role": "overlap layers ≅ (R/(t,x))[Z, Z⁻¹]",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/NilpotentGluing.lean",
     "line_start": 51,
     "line_end": 134,
     "decl_line": 53,
     "docstring": "Each exceptional layer of the overlap is `R`-linearly isomorphic to the Laurent polynomial ring\n`(R/(t,x))[Z, Z⁻¹]`, the monomial `r Z^ℓ` corresponding to the layer class of `r · z^ℓ`.",
     "statement": "theorem overlap_layer_laurent_coordinates (R : Type) [CommRing R] (t x : R)\n    (hreg : RegularParameterPair R t x) (j : ℕ) :\n    ∃ L : LaurentPolynomial (R ⧸ Ideal.span {t,x}) ≃ₗ[R] PrincipalLayer (BlowupOverlap R t x)\n    ((algebraMap (BlowupChart R t x) (BlowupOverlap R t x)) (chartBase R t x t)) j, ∀ r : R,\n    ∀ ell : ℤ, (L (LaurentPolynomial.C (Ideal.Quotient.mk (Ideal.span {t,x}) r) *\n      LaurentPolynomial.T ell)).val = principalLayerMap (BlowupOverlap R t x)\n    ((algebraMap (BlowupChart R t x) (BlowupOverlap R t x)) (chartBase R t x t)) j\n    ((algebraMap (BlowupChart R t x) (BlowupOverlap R t x)) (chartBase R t x r) * selfZPow\n      (chartSlope R t x) (BlowupOverlap R t x) ell)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N297",
       "theorem_name": "SurfaceBlowupV2.overlap_layer_laurent_coordinates",
       "kind": "theorem",
       "theorem_id": "2182e8ea-6a85-4c3a-818e-f34e478a0577",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2182e8ea-6a85-4c3a-818e-f34e478a0577",
       "blueprint_source": "restructured — G4, two-chart transition correction in Lemmas 4.1–4.2"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "lem-4.1",
   "kind": "lemma",
   "relation": "covered",
   "confidence": "low",
   "summary": "Formalized only in a restructured, sheaf-free form: finite two-chart Čech complexes at each exceptional level, surjective reductions (actual_cech_reductions_surjective), stabilization of the twisted cokernels (actual_twisted_coker_reduction_bijective), and the identification of R with compatible closed threads (surface_threads_range). There is no formal completion 𝔛 and no sheaf cohomology in the Lean development.",
   "label": "Lemma 4.1",
   "title": "passage to the formal limit",
   "paper_line": 364,
   "anchor": {
    "statement": "lem-4.1"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.actual_cech_reductions_surjective",
     "role": "transition maps surjective",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/Charts.lean",
     "line_start": 989,
     "line_end": 996,
     "decl_line": 990,
     "docstring": "The reduction maps of the Čech source and target towers are surjective.",
     "statement": "theorem actual_cech_reductions_surjective (R : Type) [CommRing R] (t x : R) (j : ℕ) :\n    Function.Surjective (cechInputReduction R t x j) ∧ Function.Surjective\n        (cechOutputReduction R t x j)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N317",
       "theorem_name": "SurfaceBlowupV2.actual_cech_reductions_surjective",
       "kind": "theorem",
       "theorem_id": "8b636582-d1b4-4071-8c16-f55960626d9c",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/8b636582-d1b4-4071-8c16-f55960626d9c",
       "blueprint_source": "restructured — G4, literal exceptional complex needed for the index in Lemma 4.1"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.actual_twisted_coker_reduction_bijective",
     "role": "cokernels stabilize",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/CechStability.lean",
     "line_start": 37,
     "line_end": 78,
     "decl_line": 39,
     "docstring": "In the stable range `d ≤ j + 1`, the map induced by reduction between the cokernels of the\ntwisted finite Čech differentials at levels `j + 1` and `j` is a bijection.",
     "statement": "theorem actual_twisted_coker_reduction_bijective (R : Type) [CommRing R] (t x : R)\n    (hreg : RegularParameterPair R t x) (beta : BlowupRestriction R t x) (d j : ℕ) (hd : d ≤ j + 1)\n    (hnext : cechInputLattice R t x (j + 1) ≤\n      (cechOutputLattice R t x (j + 1)).comap (fullCechDifferential R t x beta d))\n    (hnow : cechInputLattice R t x j ≤\n      (cechOutputLattice R t x j).comap (fullCechDifferential R t x beta d))\n    (hcomm : (cechOutputReduction R t x j).comp\n        (finiteCechDifferential R t x beta d (j + 1) hnext) =\n      (finiteCechDifferential R t x beta d j hnow).comp (cechInputReduction R t x j)) :\n    Function.Bijective (twoTermCokerMap (finiteCechDifferential R t x beta d (j+1) hnext)\n      (finiteCechDifferential R t x beta d j hnow) (cechInputReduction R t x j)\n      (cechOutputReduction R t x j) hcomm)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N321",
       "theorem_name": "SurfaceBlowupV2.actual_twisted_coker_reduction_bijective",
       "kind": "theorem",
       "theorem_id": "e5bdfe10-4298-45b0-83ab-0c8439e558e2",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/e5bdfe10-4298-45b0-83ab-0c8439e558e2",
       "blueprint_source": "restructured — G4, finite exceptional Cech stabilization in Lemma 4.1"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.surface_threads_range",
     "role": "H⁰ of the limit = compatible threads",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/H0Comparison.lean",
     "line_start": 884,
     "line_end": 938,
     "decl_line": 886,
     "docstring": "For complete `R`, the image of `R` in Čech threads is the intersection of the kernels of the\nlevelwise twist-`0` Čech differentials.",
     "statement": "theorem surface_threads_range (R : Type) [CommRing R] (t x : R)\n    [IsAdicComplete (Ideal.span {t,x}) R] (hreg : RegularParameterPair R t x)\n    (hregSwap : RegularParameterPair R x t) (beta : BlowupRestriction R t x)\n    (hpres : ∀ j : ℕ, cechInputLattice R t x j ≤ (cechOutputLattice R t x j).comap\n    (fullCechDifferential R t x beta 0)) :\n    LinearMap.range (surfaceThreads R t x) = ⨅ j : ℕ, LinearMap.ker\n      ((finiteCechDifferential R t x beta 0 j (hpres j)).comp (cechInputThreadLinear R t x j))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N347",
       "theorem_name": "SurfaceBlowupV2.surface_threads_range",
       "kind": "theorem",
       "theorem_id": "f35ecf7c-3d44-4d16-b6f7-f7ef692ae628",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/f35ecf7c-3d44-4d16-b6f7-f7ef692ae628",
       "blueprint_source": "Lemma 4.1 — H^0 comparison (4.4), restructured on the actual finite two-chart complexes"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.curve_limit_level_map_surjective",
     "role": "limits of curve sections",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/CurveSections.lean",
     "line_start": 430,
     "line_end": 492,
     "decl_line": 432,
     "docstring": "The projection from the curve order limit to the level-`J` quotient of curve sections is\nsurjective.",
     "statement": "theorem curve_limit_level_map_surjective (R : Type) [CommRing R] (t x : R)\n    (beta : BlowupRestriction R t x) (d : ℕ) (G : GluedGenerators R t x beta d)\n    (hreg : RegularParameterPair R t x) (J : ℕ)\n    (π : CurveOrderLimit R t x beta G →ₗ[R] curveSectionsQuot R t x beta G J)\n    (hπ : ∀ p : curveThreads R t x beta G,\n      ((π (curveLimitMk R t x beta G p) : curveSectionsQuot R t x beta G J) :\n      (BlowupChart R t x × BlowupChart R x t) ⧸ curveIdealLattice R t x beta G J) =\n      (curveIdealLattice R t x beta G J).mkQ (p.val J)) :\n    Function.Surjective π",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N807",
       "theorem_name": "SurfaceBlowupV2.curve_limit_level_map_surjective",
       "kind": "theorem",
       "theorem_id": "f7f50ae5-e30e-4854-bad8-ab78ebb9f4c8",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/f7f50ae5-e30e-4854-bad8-ab78ebb9f4c8",
       "blueprint_source": "Proposition 5.2 — the inverse limit of the finite curve sections, restructured"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "lem-4.2",
   "kind": "lemma",
   "relation": "covered",
   "confidence": "medium",
   "summary": "H⁰ = R: surface_threads_injective / surface_threads_range (complete R maps isomorphically onto compatible closed threads), glued_function_exists_unique (glued generators come from a unique function of order d). length H¹(𝒪(dE)) = C(d,2): actual_finite_cech_coefficient_triangular (length of the stable twisted Čech cokernel). The triviality of degree-zero line bundles is not formalized; the formal proof glues generators directly instead.",
   "label": "Lemma 4.2",
   "title": "formal functions and line bundles",
   "paper_line": 374,
   "anchor": {
    "statement": "lem-4.2"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.surface_threads_injective",
     "role": "R → threads injective",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/H0Comparison.lean",
     "line_start": 696,
     "line_end": 711,
     "decl_line": 697,
     "docstring": "For `(t, x)`-adically complete `R`, the map from `R` to compatible Čech threads is injective.",
     "statement": "theorem surface_threads_injective (R : Type) [CommRing R] (t x : R)\n    [IsAdicComplete (Ideal.span {t,x}) R] (hreg : RegularParameterPair R t x) :\n    Function.Injective (surfaceThreads R t x)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N346",
       "theorem_name": "SurfaceBlowupV2.surface_threads_injective",
       "kind": "theorem",
       "theorem_id": "9a2522fe-95c0-4af0-b9ca-a1b285c8b0ca",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/9a2522fe-95c0-4af0-b9ca-a1b285c8b0ca",
       "blueprint_source": "Lemma 4.1 — H^0 comparison (4.4), restructured on the actual finite two-chart complexes"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.surface_threads_range",
     "role": "onto closed threads",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/H0Comparison.lean",
     "line_start": 884,
     "line_end": 938,
     "decl_line": 886,
     "docstring": "For complete `R`, the image of `R` in Čech threads is the intersection of the kernels of the\nlevelwise twist-`0` Čech differentials.",
     "statement": "theorem surface_threads_range (R : Type) [CommRing R] (t x : R)\n    [IsAdicComplete (Ideal.span {t,x}) R] (hreg : RegularParameterPair R t x)\n    (hregSwap : RegularParameterPair R x t) (beta : BlowupRestriction R t x)\n    (hpres : ∀ j : ℕ, cechInputLattice R t x j ≤ (cechOutputLattice R t x j).comap\n    (fullCechDifferential R t x beta 0)) :\n    LinearMap.range (surfaceThreads R t x) = ⨅ j : ℕ, LinearMap.ker\n      ((finiteCechDifferential R t x beta 0 j (hpres j)).comp (cechInputThreadLinear R t x j))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N347",
       "theorem_name": "SurfaceBlowupV2.surface_threads_range",
       "kind": "theorem",
       "theorem_id": "f35ecf7c-3d44-4d16-b6f7-f7ef692ae628",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/f35ecf7c-3d44-4d16-b6f7-f7ef692ae628",
       "blueprint_source": "Lemma 4.1 — H^0 comparison (4.4), restructured on the actual finite two-chart complexes"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.glued_function_exists_unique",
     "role": "sections with poles: a unique global function",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/H0Comparison.lean",
     "line_start": 940,
     "line_end": 970,
     "decl_line": 942,
     "docstring": "For complete `R`, there is a unique surface function whose Čech images are the glued\ngenerator pairs at every level.",
     "statement": "theorem glued_function_exists_unique (R : Type) [CommRing R] (t x : R)\n    (beta : BlowupRestriction R t x) (d : ℕ) (G : GluedGenerators R t x beta d)\n    [IsAdicComplete (Ideal.span {t,x}) R] (hreg : RegularParameterPair R t x)\n    (hregSwap : RegularParameterPair R x t) :\n    ∃! f : R, ∀ j : ℕ, surfaceToCechInput R t x j f = (cechInputLattice R t x j).mkQ\n      (gluedFunctionPair R t x G j)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N351",
       "theorem_name": "SurfaceBlowupV2.glued_function_exists_unique",
       "kind": "theorem",
       "theorem_id": "4f90e3f4-4332-49a9-a03f-e6fd50e0b17d",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/4f90e3f4-4332-49a9-a03f-e6fd50e0b17d",
       "blueprint_source": "Proposition 5.1 — the global equation of the glued divisor, restructured on the actual charts"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.actual_finite_cech_coefficient_length",
     "role": "cokernel length Σ (d − j − 1)",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/CechStability.lean",
     "line_start": 80,
     "line_end": 122,
     "decl_line": 82,
     "docstring": "The length of the cokernel of the twisted finite Čech differential at level `n` is\n`∑_{j < n} (d - j - 1)`.",
     "statement": "theorem actual_finite_cech_coefficient_length (O R : Type) [CommRing O] [CommRing R] [Algebra O R]\n    (t x : R) (hreg : RegularParameterPair R t x) (beta : BlowupRestriction R t x)\n    (hregSwap : RegularParameterPair R x t) [(Ideal.span ({t,x} : Set R)).IsMaximal]\n    (hres : Function.Surjective (algebraMap O (R ⧸ Ideal.span {t,x}))) (d n : ℕ)\n    (hpres : ∀ j : ℕ, cechInputLattice R t x j ≤\n      (cechOutputLattice R t x j).comap (fullCechDifferential R t x beta d)) :\n    Module.length O\n      (CechLevelOutput R t x n ⧸ LinearMap.range (finiteCechDifferential R t x beta d n (hpres n)))\n      = ((∑ j ∈ Finset.range n, (d-j-1) : ℕ) : ℕ∞)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N328",
       "theorem_name": "SurfaceBlowupV2.actual_finite_cech_coefficient_length",
       "kind": "theorem",
       "theorem_id": "edeedff6-7c37-48c0-af7e-3e7bcacb4e17",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/edeedff6-7c37-48c0-af7e-3e7bcacb4e17",
       "blueprint_source": "restructured — G4, actual triangular Cech obstruction length in Lemma 4.1"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.actual_finite_cech_coefficient_triangular",
     "role": "= C(d,2) in the stable range",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/CechStability.lean",
     "line_start": 146,
     "line_end": 158,
     "decl_line": 148,
     "docstring": "In the stable range `d - 1 ≤ n`, the cokernel of the twisted finite Čech differential at\nlevel `n` has length `chooseTwo d`.",
     "statement": "theorem actual_finite_cech_coefficient_triangular (O R : Type) [CommRing O] [CommRing R]\n    [Algebra O R] (t x : R) (hreg : RegularParameterPair R t x) (beta : BlowupRestriction R t x)\n    (hregSwap : RegularParameterPair R x t) [(Ideal.span ({t,x} : Set R)).IsMaximal]\n    (hres : Function.Surjective (algebraMap O (R ⧸ Ideal.span {t,x}))) (d n : ℕ) (hn : d - 1 ≤ n)\n    (hpres : ∀ j : ℕ, cechInputLattice R t x j ≤\n      (cechOutputLattice R t x j).comap (fullCechDifferential R t x beta d)) :\n    Module.length O\n      (CechLevelOutput R t x n ⧸ LinearMap.range (finiteCechDifferential R t x beta d n (hpres n)))\n      = (chooseTwo d : ℕ∞)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N329",
       "theorem_name": "SurfaceBlowupV2.actual_finite_cech_coefficient_triangular",
       "kind": "theorem",
       "theorem_id": "8752939b-d02c-474e-a5f1-a2c96933039f",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/8752939b-d02c-474e-a5f1-a2c96933039f",
       "blueprint_source": "restructured — G4, actual triangular Cech obstruction length in Lemma 4.1"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "lem-4.3",
   "kind": "lemma",
   "relation": "covered",
   "confidence": "medium",
   "summary": "Prescribed local child ideals are realized by a two-chart curve datum (child_ideals_curve_datum); compatible chart generators glue (glued_generators_exist) and come from a global function (two_chart_global_function_exists, concrete version concrete_two_chart_glued_generators_exist); finitely supported local data are described by the Chinese remainder theorem (finite_support_quotient_equiv); the datum matching a divisor has degree deg D (matches_divisor_degree).",
   "label": "Lemma 4.3",
   "title": "gluing with no compatibility condition",
   "paper_line": 398,
   "anchor": {
    "statement": "lem-4.3"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.child_ideals_curve_datum",
     "role": "prescribed children give a curve datum",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/DivisorPoints.lean",
     "line_start": 481,
     "line_end": 535,
     "decl_line": 484,
     "docstring": "Every family of child ideals over the support of `Dv` is realized by a two-chart curve datum\nmatching `Dv`: any global function with the prescribed chart strict transforms has strict\ntransform `I Q` at every point `Q`.",
     "statement": "theorem child_ideals_curve_datum (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n    [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)] (pi : O)\n    (hpi : Irreducible pi) (u : (TwoSeries O)ˣ) (a b : ℕ) (ha : 0 < a)\n        [IsLocalRing (ConcreteSurface O pi u a b)]\n    (e : (tChart O pi u a b ⧸ tExc O pi u a b) ≃+* Polynomial (IsLocalRing.ResidueField\n        (ConcreteSurface O pi u a b)))\n    (he : ∀ r : ConcreteSurface O pi u a b, e (Ideal.Quotient.mk (tExc O pi u a b)\n        (tBase O pi u a b r)) = Polynomial.C (IsLocalRing.residue (ConcreteSurface O pi u a b) r))\n    (heZ : e (Ideal.Quotient.mk (tExc O pi u a b) (tSlope O pi u a b)) = Polynomial.X)\n    (Dv : ExceptionalDivisor (IsLocalRing.ResidueField (ConcreteSurface O pi u a b)))\n    (hinf : (infinityPoint (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n        (surfaceX O pi u a b)).IsPrime) (s : State) (d : ℕ)\n    (beta : BlowupRestriction (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n        (surfaceX O pi u a b))\n    (I : ∀ Q : divisorSupport Dv, Ideal (divisorLocalRing (ConcreteSurface O pi u a b)\n        (surfaceT O pi u a b) (surfaceX O pi u a b) e Dv hinf Q))\n    (hI : ∀ Q : divisorSupport Dv, I Q ∈ childIdealSet (ConcreteSurface O pi u a b)\n        (surfaceT O pi u a b) (surfaceX O pi u a b) e Dv hinf s d Q) :\n    ∃ D : TwoChartCurveData (ConcreteSurface O pi u a b) (surfaceT O pi u a b) (surfaceX O pi u a b)\n        beta, MatchesDivisor e D Dv ∧ ∀ f : ConcreteSurface O pi u a b,\n      (∀ s : D.ι ⊕ D.ι0,\n        strictTransformAt (ConcreteSurface O pi u a b) (surfaceT O pi u a b) (surfaceX O pi u a b)\n            (leftPoint D s) d (Ideal.span {f}) = Ideal.span {leftData D s}) →\n      (∀ s : D.ι ⊕ D.ιinf, strictTransformAt (ConcreteSurface O pi u a b) (surfaceX O pi u a b)\n          (surfaceT O pi u a b) (rightPoint D s) d (Ideal.span {f}) =\n        Ideal.span {rightData D s}) →\n      ∀ Q : divisorSupport Dv, divisorStrictTransform (ConcreteSurface O pi u a b)\n          (surfaceT O pi u a b) (surfaceX O pi u a b) e Dv hinf d (Ideal.span {f}) Q =\n        I Q",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N972",
       "theorem_name": "SurfaceBlowupV2.child_ideals_curve_datum",
       "kind": "theorem",
       "theorem_id": "7a956859-e3f4-4dfb-aeb1-65552516940d",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/7a956859-e3f4-4dfb-aeb1-65552516940d",
       "blueprint_source": "Proposition 5.1, backward half, “conversely prescribe the local child curves”; restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.glued_generators_exist",
     "role": "gluing on the thickenings",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/CurveSections.lean",
     "line_start": 772,
     "line_end": 830,
     "decl_line": 775,
     "docstring": "Compatible systems of chart generators `gA`, `gB` that are regular, agree on the overlap and are\nnormalized at level one can be replaced by glued generators generating the same ideals at every\nlevel.",
     "statement": "theorem glued_generators_exist (R : Type) [CommRing R] (t x : R) (beta : BlowupRestriction R t x)\n    (hreg : RegularParameterPair R t x) (d : ℕ)\n    (gA : ℕ → BlowupChart R t x) (gB : ℕ → BlowupChart R x t)\n    (hA : ∀ j : ℕ, Ideal.span {Ideal.Quotient.mk ((chartExceptional R t x)^j) (gA (j+1))} =\n      Ideal.span {Ideal.Quotient.mk ((chartExceptional R t x)^j) (gA j)})\n    (hB : ∀ j : ℕ, Ideal.span {Ideal.Quotient.mk ((chartExceptional R x t)^j) (gB (j+1))} =\n      Ideal.span {Ideal.Quotient.mk ((chartExceptional R x t)^j) (gB j)})\n    (hregA : ∀ j : ℕ, Function.Injective (fun c : BlowupChart R t x ⧸ (chartExceptional R t x)^j =>\n      Ideal.Quotient.mk ((chartExceptional R t x)^j) (gA j) * c))\n    (hregBc : ∀ j : ℕ, Function.Injective (fun c : BlowupChart R x t ⧸ (chartExceptional R x t)^j =>\n      Ideal.Quotient.mk ((chartExceptional R x t)^j) (gB j) * c))\n    (hoverlap : ∀ j : ℕ, Ideal.span {Ideal.Quotient.mk ((Ideal.span {overlapException R t x})^j)\n      ((algebraMap (BlowupChart R t x) (BlowupOverlap R t x)) (gA j))} =\n      Ideal.span {Ideal.Quotient.mk ((Ideal.span {overlapException R t x})^j) (beta.right (gB j))})\n    (hregC : ∀ j : ℕ, Function.Injective (fun c : BlowupOverlap R t x ⧸\n      (Ideal.span {overlapException R t x})^j =>\n      Ideal.Quotient.mk ((Ideal.span {overlapException R t x})^j) (beta.right (gB j)) * c))\n    (hnorm : ∃ u : Rˣ, (algebraMap (BlowupChart R t x) (BlowupOverlap R t x)) (gA 1) - algebraMap\n      R (BlowupOverlap R t x) (u : R) * ((overlapSlope R t x)^d * beta.right (gB 1)) ∈\n      (Ideal.span {overlapException R t x})) :\n    ∃ G : GluedGenerators R t x beta d, ∀ j : ℕ,\n      Ideal.span {Ideal.Quotient.mk ((chartExceptional R t x)^j) (G.left j)} =\n      Ideal.span {Ideal.Quotient.mk ((chartExceptional R t x)^j) (gA j)} ∧\n      Ideal.span {Ideal.Quotient.mk ((chartExceptional R x t)^j) (G.right j)} =\n      Ideal.span {Ideal.Quotient.mk ((chartExceptional R x t)^j) (gB j)}",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N361",
       "theorem_name": "SurfaceBlowupV2.glued_generators_exist",
       "kind": "theorem",
       "theorem_id": "f0c84de7-a352-4c1e-bc6d-d1239bb0fbbd",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/f0c84de7-a352-4c1e-bc6d-d1239bb0fbbd",
       "blueprint_source": "Lemma 4.2 — compatible generators and transition units on the two charts, restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.two_chart_global_function_exists",
     "role": "global equation",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/FixedTangentCellBijection.lean",
     "line_start": 308,
     "line_end": 324,
     "decl_line": 310,
     "docstring": "A two-chart curve datum on a complete regular local surface comes\nfrom a global function `f` whose glued level generators cut out the left and right level kernels.",
     "statement": "theorem two_chart_global_function_exists (R : Type) [CommRing R] (t x : R) (beta : BlowupRestriction\n    R t x) (D : TwoChartCurveData R t x beta) [(Ideal.span ({t,x} : Set R)).IsMaximal]\n    [IsLocalRing R] [IsNoetherianRing (BlowupChart R t x)] [IsNoetherianRing (BlowupChart R x t)]\n    [IsAdicComplete (Ideal.span {t,x}) R] (hreg : RegularParameterPair R t x)\n    (hregSwap : RegularParameterPair R x t) :\n    ∃ f : R, ∃ G : GluedGenerators R t x beta (curveDataDegree D),\n        (∀ j : ℕ, surfaceToCechInput R t x j f = (cechInputLattice R t x j).mkQ (gluedFunctionPair R\n        t x G j)) ∧ ∀ j : ℕ, Ideal.span {Ideal.Quotient.mk ((chartExceptional R t x)^j) (G.left j)}\n        = leftLevelKernel D j ∧\n        Ideal.span {Ideal.Quotient.mk ((chartExceptional R x t)^j) (G.right j)} = rightLevelKernel D\n        j",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N833",
       "theorem_name": "SurfaceBlowupV2.two_chart_global_function_exists",
       "kind": "theorem",
       "theorem_id": "15a5d5dc-ebeb-4cc0-9b85-6a2f2211345d",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/15a5d5dc-ebeb-4cc0-9b85-6a2f2211345d",
       "blueprint_source": "Lemma 4.2 — two-chart form, all hypotheses on the prescribed data discharged; restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.concrete_two_chart_glued_generators_exist",
     "role": "concrete surfaces",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/FixedTangentCellBijection.lean",
     "line_start": 326,
     "line_end": 357,
     "decl_line": 328,
     "docstring": "A two-chart curve datum on a concrete surface `ConcreteSurface O pi u a b` comes from a global\nfunction `f` whose glued level generators cut out the left and right level kernels.",
     "statement": "theorem concrete_two_chart_glued_generators_exist (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] (pi : O) (hpi : Irreducible pi) (u : (TwoSeries O)ˣ)\n    (a b : ℕ) (ha : 0 < a) (beta : BlowupRestriction (ConcreteSurface O pi u a b)\n        (surfaceT O pi u a b) (surfaceX O pi u a b))\n    (D : TwoChartCurveData (ConcreteSurface O pi u a b) (surfaceT O pi u a b) (surfaceX O pi u a b)\n        beta) :\n    ∃ f : ConcreteSurface O pi u a b, ∃ G : GluedGenerators (ConcreteSurface O pi u a b)\n        (surfaceT O pi u a b) (surfaceX O pi u a b) beta (curveDataDegree D),\n      (∀ j : ℕ, surfaceToCechInput (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n          (surfaceX O pi u a b) j f =\n        (cechInputLattice (ConcreteSurface O pi u a b) (surfaceT O pi u a b) (surfaceX O pi u a b)\n            j).mkQ (gluedFunctionPair (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n                (surfaceX O pi u a b) G j)) ∧\n      ∀ j : ℕ, Ideal.span {Ideal.Quotient.mk (tExc O pi u a b^j) (G.left j)} = leftLevelKernel D j ∧\n        Ideal.span {Ideal.Quotient.mk (xExc O pi u a b^j) (G.right j)} = rightLevelKernel D j",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N912",
       "theorem_name": "SurfaceBlowupV2.concrete_two_chart_lemma_4_2",
       "kind": "theorem",
       "theorem_id": "4f8896bf-b279-4e00-95bb-91f83792bd78",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/4f8896bf-b279-4e00-95bb-91f83792bd78",
       "blueprint_source": "§2 (“preserved by completed point blowups”) and Lemma 4.2 / Proposition 5.2 on the concrete surface; restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.finite_support_quotient_equiv",
     "role": "finite support quotients",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/CurveOrders.lean",
     "line_start": 876,
     "line_end": 885,
     "decl_line": 878,
     "docstring": "Chinese remainder theorem: `A` modulo the finitely supported kernel is the product of the\ncompleted local quotients.",
     "statement": "theorem finite_support_quotient_equiv (A : Type) [CommRing A] [IsNoetherianRing A] (ι : Type)\n    [Finite ι] (P : ι → Ideal A) [∀ i, (P i).IsMaximal] (hP : Function.Injective P) (L : ι → ℕ)\n    (J : ∀ i, Ideal (CompletedLocalAt A (P i))) (hJ : ∀ i,\n    ((IsLocalRing.maximalIdeal (Localization.AtPrime (P i))).map\n    (localCompletionMap (Localization.AtPrime (P i)))) ^ (L i) ≤ J i) :\n    ∃ E : (A ⧸ finiteSupportKernel A ι P J) ≃+* (∀ i, CompletedLocalAt A (P i) ⧸ J i), ∀ a : A, E\n        (Ideal.Quotient.mk (finiteSupportKernel A ι P J) a) = finiteSupportQuotientMap A ι P J a",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N287",
       "theorem_name": "SurfaceBlowupV2.finite_support_quotient_equiv",
       "kind": "theorem",
       "theorem_id": "0a008875-266f-4063-be83-23d7cbeaa892",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/0a008875-266f-4063-be83-23d7cbeaa892",
       "blueprint_source": "restructured — G4, finite-support step in Lemma 4.2"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.matches_divisor_degree",
     "role": "restriction to E is Σ r_P P",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/DivisorPoints.lean",
     "line_start": 659,
     "line_end": 750,
     "decl_line": 661,
     "docstring": "If a two-chart curve datum matches the divisor `Dv`, the degree of `Dv` is the curve datum\ndegree.",
     "statement": "theorem matches_divisor_degree (O R : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n    [CommRing R] [IsDomain R] [Algebra O R] [IsRegularLocalRing R] (S : SurfaceData O R)\n    (beta : BlowupRestriction R S.t S.x) (D : TwoChartCurveData R S.t S.x beta)\n    (Dv : ExceptionalDivisor (IsLocalRing.ResidueField R))\n    (e : (BlowupChart R S.t S.x ⧸ chartExceptional R S.t S.x) ≃+*\n      Polynomial (IsLocalRing.ResidueField R))\n    (he : ∀ r : R, e (Ideal.Quotient.mk (chartExceptional R S.t S.x) (chartBase R S.t S.x r)) =\n      Polynomial.C (IsLocalRing.residue R r))\n    (heZ : e (Ideal.Quotient.mk (chartExceptional R S.t S.x) (chartSlope R S.t S.x)) = Polynomial.X)\n    (hm : MatchesDivisor e D Dv) [IsNoetherianRing (BlowupChart R S.t S.x)]\n    [IsNoetherianRing (BlowupChart R S.x S.t)] :\n    exceptionalDegree (IsLocalRing.ResidueField R) Dv = curveDataDegree D",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N885",
       "theorem_name": "SurfaceBlowupV2.matches_divisor_degree",
       "kind": "theorem",
       "theorem_id": "35106d2b-5002-4134-b18b-61694a62a8fc",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/35106d2b-5002-4134-b18b-61694a62a8fc",
       "blueprint_source": "Proposition 5.1 — the points of the tangent divisor and the backward construction; restructured on the two charts"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-4.6",
   "kind": "display",
   "relation": "covered",
   "confidence": "medium",
   "summary": "The tangent divisor of the initial form (initial_form_has_tangent_divisor, homogeneous_divisor_boundary_multiplicities: a boundary point is occupied iff the corresponding extreme coefficient vanishes), the exceptional contact r_P of a strict transform (concrete_strict_transform_multiplicity), and the old-boundary contact c − d (concrete_infinity_boundary_contact, concrete_zero_boundary_contact).",
   "label": "(4.6)",
   "title": "tangent divisor and child contacts",
   "anchor": {
    "eq": "4.6"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.HasTangentDivisor",
     "role": "tangent divisor of an ideal",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Blowup/Charts.lean",
     "line_start": 414,
     "line_end": 420,
     "decl_line": 416,
     "docstring": "The principal ideal `J` has tangent cone of degree `d` with divisor `D` on the\nexceptional line.",
     "statement": "def HasTangentDivisor (S : SurfaceData O R) (J : Ideal R) (d : ℕ)\n    (D : ExceptionalDivisor (IsLocalRing.ResidueField R)) : Prop :=\n  ∃ f : R, ∃ H : Polynomial (IsLocalRing.ResidueField R),\n    J = Ideal.span {f} ∧ HasHomogeneousDivisor (IsLocalRing.ResidueField R) d H D ∧\n      f - tangentLift O R S d H ∈ (IsLocalRing.maximalIdeal R)^(d+1)",
     "section_variables": "variable (O R : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n  [CommRing R] [IsDomain R] [Algebra O R] [IsRegularLocalRing R]",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.initial_form_has_tangent_divisor",
     "role": "from the initial form",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/Termination.lean",
     "line_start": 901,
     "line_end": 928,
     "decl_line": 902,
     "docstring": "A homogeneous divisor of the initial form of `f` is a tangent divisor of `(f)`.",
     "statement": "theorem initial_form_has_tangent_divisor (O R : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [CommRing R] [IsDomain R] [Algebra O R] [IsRegularLocalRing R]\n    (S : SurfaceData O R) (d : ℕ) (f : R) (c : Fin (d + 1) → R)\n    (hc : f = (∑ i : Fin (d + 1), c i * S.t ^ (d - i.val) * S.x ^ i.val))\n    (H : Polynomial (ResidueField R)) (hH : H = ∑ i : Fin (d + 1), Polynomial.C (residue R (c i)) *\n    Polynomial.X ^ i.val) (Dv : ExceptionalDivisor (ResidueField R))\n    (hDv : HasHomogeneousDivisor (ResidueField R) d H Dv) :\n    HasTangentDivisor O R S (Ideal.span {f}) d Dv",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N990",
       "theorem_name": "SurfaceBlowupV2.initial_form_has_tangent_divisor",
       "kind": "theorem",
       "theorem_id": "1824edf8-2efb-4a13-b12d-3c82fa0084be",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/1824edf8-2efb-4a13-b12d-3c82fa0084be",
       "blueprint_source": "§5 — the tangent divisor of a curve is the divisor of its initial form; restructured (cycle 8)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.homogeneous_divisor_boundary_multiplicities",
     "role": "boundary occupation",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/Termination.lean",
     "line_start": 564,
     "line_end": 624,
     "decl_line": 566,
     "docstring": "Boundary multiplicities of the homogeneous divisor of `H`: positive at infinity iff `H_d = 0`,\npositive at zero iff `H_0 = 0`, and all multiplicities and degrees of support points at most `d`.",
     "statement": "theorem homogeneous_divisor_boundary_multiplicities (k : Type) [Field k] (d : ℕ) (H : Polynomial k)\n    (hH : H ≠ 0) (hdeg : H.natDegree ≤ d) (Dv : ExceptionalDivisor k)\n    (hinf : Dv (infinityDirection k) = d - H.natDegree) (haff : ∀ φ : AffineDirection k, Dv (some φ)\n    = Multiset.count φ.val (UniqueFactorizationMonoid.normalizedFactors H)) :\n    (0 < Dv (infinityDirection k) ↔ H.coeff d = 0) ∧ (0 < Dv (zeroDirection k) ↔ H.coeff 0 = 0) ∧\n      (∀ Q : ClosedDirection k, Dv Q ≤ d) ∧ ∀ Q : ClosedDirection k, 0 < Dv Q → directionDegree k Q\n      ≤ d",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N989",
       "theorem_name": "SurfaceBlowupV2.homogeneous_divisor_boundary_multiplicities",
       "kind": "theorem",
       "theorem_id": "05c983f6-1ba4-4e67-ae12-8f5792757809",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/05c983f6-1ba4-4e67-ae12-8f5792757809",
       "blueprint_source": "§7.1 — r₀ > 0 ⟺ d < c read on the initial form; restructured (cycle 8)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.concrete_strict_transform_multiplicity",
     "role": "exceptional contact r_P",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/StrictNormalizer.lean",
     "line_start": 178,
     "line_end": 253,
     "decl_line": 181,
     "docstring": "The local intersection length of the strict transform with the exceptional divisor at the\npoint `P` equals the multiplicity of the irreducible factor `φ` (defining `P`) in the reduced\ntangent form `∑ cᵢ Xⁱ`.",
     "statement": "theorem concrete_strict_transform_multiplicity (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] (pi : O) (hpi : Irreducible pi) (u : (TwoSeries O)ˣ)\n    (a b : ℕ) (ha : 0 < a) (d : ℕ) (c : Fin (d + 1) → ConcreteSurface O pi u a b)\n    (hne : ∃ i : Fin (d + 1), c i ∉ Ideal.span {(surfaceT O pi u a b), (surfaceX O pi u a b)})\n    [IsLocalRing (ConcreteSurface O pi u a b)]\n    (P : Ideal (BlowupChart (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n    (surfaceX O pi u a b))) [P.IsMaximal] [P.IsPrime]\n    (hP : (chartBase (ConcreteSurface O pi u a b) (surfaceT O pi u a b) (surfaceX O pi u a b))\n    (surfaceT O pi u a b) ∈ P) (e : ((BlowupChart (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n    (surfaceX O pi u a b)) ⧸ chartExceptional (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n    (surfaceX O pi u a b)) ≃+* Polynomial (IsLocalRing.ResidueField (ConcreteSurface O pi u a b)))\n    (he : ∀ r : (ConcreteSurface O pi u a b), e\n    (Ideal.Quotient.mk (chartExceptional (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n    (surfaceX O pi u a b)) ((chartBase (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n    (surfaceX O pi u a b)) r)) = Polynomial.C (IsLocalRing.residue (ConcreteSurface O pi u a b) r))\n    (heZ : e (Ideal.Quotient.mk (chartExceptional (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n    (surfaceX O pi u a b)) (chartSlope (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n    (surfaceX O pi u a b))) = Polynomial.X) (φ : Polynomial\n    (IsLocalRing.ResidueField (ConcreteSurface O pi u a b))) (hφ : φ.Monic ∧ Irreducible φ)\n    (hPφ : (P.map (Ideal.Quotient.mk (chartExceptional (ConcreteSurface O pi u a b)\n    (surfaceT O pi u a b) (surfaceX O pi u a b)))).map e = Ideal.span {φ}) : Module.length\n    (CompletedLocalAt (BlowupChart (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n    (surfaceX O pi u a b)) P) (CompletedLocalAt\n    (BlowupChart (ConcreteSurface O pi u a b) (surfaceT O pi u a b) (surfaceX O pi u a b)) P ⧸\n    Ideal.span {completedPointMap (BlowupChart (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n    (surfaceX O pi u a b)) P (∑ i : Fin (d+1), algebraMap (ConcreteSurface O pi u a b)\n    (BlowupChart (ConcreteSurface O pi u a b) (surfaceT O pi u a b) (surfaceX O pi u a b)) (c i) *\n    (chartSlope (ConcreteSurface O pi u a b) (surfaceT O pi u a b) (surfaceX O pi u a b))^i.val),\n    completedPointMap (BlowupChart (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n    (surfaceX O pi u a b)) P ((chartBase (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n    (surfaceX O pi u a b)) (surfaceT O pi u a b))}) =\n    (Multiset.count φ (UniqueFactorizationMonoid.normalizedFactors\n    (∑ i : Fin (d+1), Polynomial.C (IsLocalRing.residue (ConcreteSurface O pi u a b) (c i)) *\n    Polynomial.X^i.val : Polynomial (IsLocalRing.ResidueField (ConcreteSurface O pi u a b)))) :\n    ℕ∞)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N839",
       "theorem_name": "SurfaceBlowupV2.concrete_strict_transform_multiplicity",
       "kind": "theorem",
       "theorem_id": "3a4c7776-7a8c-46f0-bc3f-addfd81b8a35",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3a4c7776-7a8c-46f0-bc3f-addfd81b8a35",
       "blueprint_source": "§2 (“preserved by completed point blowups”) and Lemma 4.2 / Proposition 5.2 on the concrete surface; restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.concrete_infinity_boundary_contact",
     "role": "old-boundary contact",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/NilpotentGluing.lean",
     "line_start": 1359,
     "line_end": 1424,
     "decl_line": 1362,
     "docstring": "The intersection length of a degree-`d` form with `(T)` on the concrete surface is `d` plus the\nintersection length of its strict transform with the exceptional divisor at the point at\ninfinity.",
     "statement": "theorem concrete_infinity_boundary_contact (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] (pi : O) (hpi : Irreducible pi) (u : (TwoSeries O)ˣ)\n    (a b : ℕ) (ha : 0 < a) (d : ℕ) (f : (ConcreteSurface O pi u a b))\n    (c : Fin (d + 1) → (ConcreteSurface O pi u a b))\n    (hc : f = ∑ i : Fin (d + 1), c i * (surfaceT O pi u a b) ^ (d - i.val) *\n      (surfaceX O pi u a b) ^ i.val)\n    (Pinf : Ideal (xChart O pi u a b)) [Pinf.IsMaximal] [Pinf.IsPrime]\n    (hx : xBase O pi u a b (surfaceX O pi u a b) ∈ Pinf) (hW : xSlope O pi u a b ∈ Pinf) :\n    Module.length (ConcreteSurface O pi u a b)\n    ((ConcreteSurface O pi u a b) ⧸ (Ideal.span {f} ⊔ Ideal.span {(surfaceT O pi u a b)})) =\n    (d : ℕ∞) + Module.length (CompletedLocalAt (xChart O pi u a b) Pinf)\n    (CompletedLocalAt (xChart O pi u a b) Pinf ⧸\n      (Ideal.span {completedPointMap (xChart O pi u a b) Pinf\n          (∑ i : Fin (d+1), algebraMap (ConcreteSurface O pi u a b) (xChart O pi u a b) (c i) *\n            (xSlope O pi u a b)^(d - i.val))} ⊔\n        Ideal.span {completedPointMap (xChart O pi u a b) Pinf (xSlope O pi u a b)}))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N965",
       "theorem_name": "SurfaceBlowupV2.concrete_infinity_boundary_contact",
       "kind": "theorem",
       "theorem_id": "0c161208-5efd-4dde-b6b9-d169e073e30b",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/0c161208-5efd-4dde-b6b9-d169e073e30b",
       "blueprint_source": "Proposition 5.1 — “restrict x^(−d) f(xw, x) to w = 0: its order in x is c − d, because f(0,x) has order c”; restructured through the successor charts"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.concrete_zero_boundary_contact",
     "role": "second boundary",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/NilpotentGluing.lean",
     "line_start": 1426,
     "line_end": 1488,
     "decl_line": 1429,
     "docstring": "The intersection length of a degree-`d` form with `(X)` on the concrete surface is `d` plus the\nintersection length of its strict transform with the exceptional divisor at the origin of the\nleft chart.",
     "statement": "theorem concrete_zero_boundary_contact (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] (pi : O) (hpi : Irreducible pi) (u : (TwoSeries O)ˣ)\n    (a b : ℕ) (ha : 0 < a) (hb : 0 < b) (d : ℕ) (f : (ConcreteSurface O pi u a b))\n    (c : Fin (d + 1) → (ConcreteSurface O pi u a b))\n    (hc : f = ∑ i : Fin (d + 1), c i * (surfaceT O pi u a b) ^ (d - i.val) *\n      (surfaceX O pi u a b) ^ i.val)\n    (P : Ideal (tChart O pi u a b)) [P.IsPrime]\n    (hP : P = Ideal.span {tBase O pi u a b (surfaceT O pi u a b), (tSlope O pi u a b)}) :\n    Module.length (ConcreteSurface O pi u a b)\n    ((ConcreteSurface O pi u a b) ⧸ (Ideal.span {f} ⊔ Ideal.span {(surfaceX O pi u a b)})) =\n    (d : ℕ∞) + Module.length (CompletedLocalAt (tChart O pi u a b) P)\n    (CompletedLocalAt (tChart O pi u a b) P ⧸\n      (Ideal.span {completedPointMap (tChart O pi u a b) P\n          (∑ i : Fin (d+1), algebraMap (ConcreteSurface O pi u a b) (tChart O pi u a b) (c i) *\n            (tSlope O pi u a b)^i.val)} ⊔\n        Ideal.span {completedPointMap (tChart O pi u a b) P (tSlope O pi u a b)}))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N966",
       "theorem_name": "SurfaceBlowupV2.concrete_zero_boundary_contact",
       "kind": "theorem",
       "theorem_id": "f3a6f58b-9911-4ab2-91be-0f2eee95293f",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/f3a6f58b-9911-4ab2-91be-0f2eee95293f",
       "blueprint_source": "Proposition 5.1 — “the other boundary is handled in the other chart”; restructured through the successor chart at Z = 0"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-4.7",
   "kind": "display",
   "relation": "definition",
   "confidence": "high",
   "summary": "The child tables are the definition children (with the admissibility predicate Allowed: r_t > 0 ⇔ d < c, r_x > 0 ⇔ d < h); strict_transform_mapsTo_child_ideals proves that strict transforms of a fixed-tangent cell land in exactly these child states.",
   "label": "(4.7)–(4.8)",
   "title": "children of S and T",
   "anchor": {
    "eq": "4.7"
   },
   "also_tags": [
    "4.8"
   ],
   "lean": [
    {
     "name": "SurfaceBlowup.children",
     "role": "child lists",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 248,
     "line_end": 257,
     "decl_line": 249,
     "docstring": "All children (residue degree, child state) of a state under a tangent pattern.",
     "statement": "def children (s : State) (P : TangentPattern s.degree) : List (ℕ × State) :=\n  match s with\n  | .single a c =>\n    (if P.rt.val=0 then [] else [(1,.crossing a a P.rt.val (c-P.d.val))]) ++\n      otherChildren a P.other\n  | .crossing a b c h =>\n    (if P.rt.val=0 then [] else [(1,.crossing (a+b) a P.rt.val (c-P.d.val))]) ++\n    (if P.rx.val=0 then [] else [(1,.crossing (a+b) b P.rx.val (h-P.d.val))]) ++\n      otherChildren (a+b) P.other",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N005",
       "theorem_name": "SurfaceBlowupV2.Patterns",
       "kind": "definition",
       "theorem_id": "6011b793-793d-4101-ab56-b15c9a1fe56f",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/6011b793-793d-4101-ab56-b15c9a1fe56f",
       "blueprint_source": "(7.1)–(7.2), (7.6)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.otherChildren",
     "role": "off-boundary children S(a;r_P) over O_δ",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 243,
     "line_end": 246,
     "decl_line": 244,
     "docstring": "The children `(δ, S(a; j + 1))` contributed by the non-boundary points of a pattern.",
     "statement": "def otherChildren {n : ℕ} (a : ℕ) (m : Pattern n) : List (ℕ × State) :=\n  (Finset.univ : Finset (Fin n × Fin n)).toList.flatMap fun ij =>\n    List.replicate (m ij).val (ij.1.val+1, .single a (ij.2.val+1))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N005",
       "theorem_name": "SurfaceBlowupV2.Patterns",
       "kind": "definition",
       "theorem_id": "6011b793-793d-4101-ab56-b15c9a1fe56f",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/6011b793-793d-4101-ab56-b15c9a1fe56f",
       "blueprint_source": "(7.1)–(7.2), (7.6)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.Allowed",
     "role": "admissible tangent data",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 235,
     "line_end": 241,
     "decl_line": 236,
     "docstring": "The admissible tangent patterns of a state (Proposition 5.1).",
     "statement": "def Allowed (s : State) (P : TangentPattern s.degree) : Prop :=\n  0<P.d.val ∧ P.rt.val+P.rx.val+patternWeight P.other=P.d.val ∧\n  match s with\n  | .single _ c => P.d.val≤c ∧ P.rx.val=0 ∧ (0<P.rt.val ↔ P.d.val<c)\n  | .crossing _ _ c h => P.d.val≤c ∧ P.d.val≤h ∧\n      (0<P.rt.val ↔ P.d.val<c) ∧ (0<P.rx.val ↔ P.d.val<h)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N005",
       "theorem_name": "SurfaceBlowupV2.Patterns",
       "kind": "definition",
       "theorem_id": "6011b793-793d-4101-ab56-b15c9a1fe56f",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/6011b793-793d-4101-ab56-b15c9a1fe56f",
       "blueprint_source": "(7.1)–(7.2), (7.6)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.strict_transform_mapsTo_child_ideals",
     "role": "strict transforms land in the children",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/StrictNormalizer.lean",
     "line_start": 255,
     "line_end": 340,
     "decl_line": 257,
     "docstring": "Proposition 5.1 (maps-to part): taking strict transforms at all exceptional points sends the\nfixed tangent cell of state `s` and degree `d` into the product of the child ideal sets.",
     "statement": "theorem strict_transform_mapsTo_child_ideals (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O]\n    [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)] (pi : O)\n    (hpi : Irreducible pi) (u : (TwoSeries O)ˣ) (a b : ℕ) (ha : 0 < a)\n    [IsDomain (ConcreteSurface O pi u a b)] [IsRegularLocalRing (ConcreteSurface O pi u a b)]\n    (S : SurfaceData O (ConcreteSurface O pi u a b))\n    (hS : S.t = (surfaceT O pi u a b) ∧ S.x = (surfaceX O pi u a b) ∧ S.a = a ∧ S.b = b)\n    (e : ((BlowupChart (ConcreteSurface O pi u a b) (surfaceT O pi u a b) (surfaceX O pi u a b)) ⧸\n    chartExceptional (ConcreteSurface O pi u a b) (surfaceT O pi u a b) (surfaceX O pi u a b)) ≃+*\n    Polynomial (IsLocalRing.ResidueField (ConcreteSurface O pi u a b)))\n    (he : ∀ r : (ConcreteSurface O pi u a b), e\n    (Ideal.Quotient.mk\n    (chartExceptional (ConcreteSurface O pi u a b) (surfaceT O pi u a b) (surfaceX O pi u a b))\n    ((chartBase (ConcreteSurface O pi u a b) (surfaceT O pi u a b) (surfaceX O pi u a b)) r)) =\n    Polynomial.C (IsLocalRing.residue (ConcreteSurface O pi u a b) r))\n    (heZ : e (Ideal.Quotient.mk\n    (chartExceptional (ConcreteSurface O pi u a b) (surfaceT O pi u a b) (surfaceX O pi u a b))\n    (chartSlope (ConcreteSurface O pi u a b) (surfaceT O pi u a b) (surfaceX O pi u a b))) =\n    Polynomial.X) (Dv : ExceptionalDivisor (IsLocalRing.ResidueField (ConcreteSurface O pi u a b)))\n    (hinf : (infinityPoint (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n    (surfaceX O pi u a b)).IsPrime) (s : State) (d : ℕ) :\n    Set.MapsTo (fun J Q => divisorStrictTransform (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n      (surfaceX O pi u a b) e Dv hinf d J Q)\n      (fixedTangentCell O (ConcreteSurface O pi u a b) S s d Dv)\n      (Set.pi Set.univ\n      (childIdealSet (ConcreteSurface O pi u a b) (surfaceT O pi u a b) (surfaceX O pi u a b) e Dv\n      hinf s d))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N967",
       "theorem_name": "SurfaceBlowupV2.prop_5_1_mapsTo",
       "kind": "theorem",
       "theorem_id": "fb96f890-6a8b-4826-85f8-9f898a896906",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/fb96f890-6a8b-4826-85f8-9f898a896906",
       "blueprint_source": "Proposition 5.1, “this proves the forward assertions”; restructured"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "prop-4.4",
   "kind": "proposition",
   "relation": "specialization",
   "confidence": "high",
   "summary": "On the concrete surfaces: strict transform is injective on a fixed-tangent cell and a bijection onto the product of the child ideal sets (strict_transform_injOn_fixed_tangent_cell, strict_transform_bijOn_child_ideals); the index map A_f → B_f is injective with cokernel of O-length C(d,2) (concrete_curve_order_index, child_order_index_and_kernel, cell_member_index_map). The identification of the cokernel with H¹(𝔛, 𝒪(dE)) is replaced by the Čech computation.",
   "label": "Proposition 4.4",
   "title": "fixed-divisor bijection and index",
   "paper_line": 447,
   "anchor": {
    "statement": "prop-4.4"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.strict_transform_bijOn_child_ideals",
     "role": "fixed-divisor bijection",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/FixedTangentCellBijection.lean",
     "line_start": 426,
     "line_end": 478,
     "decl_line": 428,
     "docstring": "The strict transform map is a bijection from the fixed tangent cell onto the\nproduct of the child ideal sets over the support of `Dv`.",
     "statement": "theorem strict_transform_bijOn_child_ideals (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] (pi : O) (hpi : Irreducible pi) (u : (TwoSeries O)ˣ)\n    (a b : ℕ) (ha : 0 < a) [IsDomain (ConcreteSurface O pi u a b)]\n        [IsRegularLocalRing (ConcreteSurface O pi u a b)] (S : SurfaceData O\n            (ConcreteSurface O pi u a b))\n    (hS : S.t = surfaceT O pi u a b ∧ S.x = surfaceX O pi u a b ∧ S.a = a ∧ S.b = b)\n    (e : (tChart O pi u a b ⧸ tExc O pi u a b) ≃+* Polynomial (IsLocalRing.ResidueField\n        (ConcreteSurface O pi u a b)))\n    (he : ∀ r : ConcreteSurface O pi u a b, e (Ideal.Quotient.mk (tExc O pi u a b)\n        (tBase O pi u a b r)) = Polynomial.C (IsLocalRing.residue (ConcreteSurface O pi u a b) r))\n    (heZ : e (Ideal.Quotient.mk (tExc O pi u a b) (tSlope O pi u a b)) = Polynomial.X)\n    (Dv : ExceptionalDivisor (IsLocalRing.ResidueField (ConcreteSurface O pi u a b)))\n    (hinf : (infinityPoint (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n        (surfaceX O pi u a b)).IsPrime) (s : State) (d : ℕ) (hd : 0 < d)\n    (hs : (∃ c : ℕ, s = State.single a c ∧ b = 0) ∨ (∃ c h : ℕ, s = State.crossing a b c h ∧ 0 < b))\n    (hdc : d ≤ stateContactT s) (hdh : ∀ h : ℕ, stateContactX s = some h → d ≤ h)\n    (hDinf : 0 < Dv none ↔ d < stateContactT s)\n    (hDzero : ∀ h : ℕ, stateContactX s = some h →\n      (0 < Dv (zeroDirection (IsLocalRing.ResidueField (ConcreteSurface O pi u a b))) ↔ d < h))\n    (hdeg : exceptionalDegree (IsLocalRing.ResidueField (ConcreteSurface O pi u a b)) Dv = d) :\n    Set.BijOn (fun J Q => divisorStrictTransform (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n        (surfaceX O pi u a b) e Dv hinf d J Q)\n      (fixedTangentCell O (ConcreteSurface O pi u a b) S s d Dv)\n      (Set.pi Set.univ (childIdealSet (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n          (surfaceX O pi u a b) e Dv hinf s d))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N974",
       "theorem_name": "SurfaceBlowupV2.prop_5_1_bijOn",
       "kind": "theorem",
       "theorem_id": "ada8e874-2e81-4961-bca7-5a46748bbf15",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/ada8e874-2e81-4961-bca7-5a46748bbf15",
       "blueprint_source": "Proposition 5.1 (bijection at a fixed tangent divisor), on the concrete surface; assembled"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.strict_transform_injOn_fixed_tangent_cell",
     "role": "injectivity",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/FixedTangentCellBijection.lean",
     "line_start": 359,
     "line_end": 424,
     "decl_line": 361,
     "docstring": "On the fixed tangent cell, an ideal is determined by its\nstrict transforms at the points of the exceptional divisor `Dv`.",
     "statement": "theorem strict_transform_injOn_fixed_tangent_cell (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] (pi : O) (hpi : Irreducible pi) (u : (TwoSeries O)ˣ)\n    (a b : ℕ) (ha : 0 < a) [IsDomain (ConcreteSurface O pi u a b)]\n        [IsRegularLocalRing (ConcreteSurface O pi u a b)] (S : SurfaceData O\n            (ConcreteSurface O pi u a b))\n    (hS : S.t = surfaceT O pi u a b ∧ S.x = surfaceX O pi u a b ∧ S.a = a ∧ S.b = b)\n    (e : (tChart O pi u a b ⧸ tExc O pi u a b) ≃+* Polynomial (IsLocalRing.ResidueField\n        (ConcreteSurface O pi u a b)))\n    (he : ∀ r : ConcreteSurface O pi u a b, e (Ideal.Quotient.mk (tExc O pi u a b)\n        (tBase O pi u a b r)) = Polynomial.C (IsLocalRing.residue (ConcreteSurface O pi u a b) r))\n    (heZ : e (Ideal.Quotient.mk (tExc O pi u a b) (tSlope O pi u a b)) = Polynomial.X)\n    (Dv : ExceptionalDivisor (IsLocalRing.ResidueField (ConcreteSurface O pi u a b)))\n    (hinf : (infinityPoint (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n        (surfaceX O pi u a b)).IsPrime) (s : State) (d : ℕ)\n    (hdeg : exceptionalDegree (IsLocalRing.ResidueField (ConcreteSurface O pi u a b)) Dv = d) :\n    Set.InjOn (fun J Q => divisorStrictTransform (ConcreteSurface O pi u a b) (surfaceT O pi u a b)\n        (surfaceX O pi u a b) e Dv hinf d J Q)\n      (fixedTangentCell O (ConcreteSurface O pi u a b) S s d Dv)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N970",
       "theorem_name": "SurfaceBlowupV2.prop_5_1_injOn",
       "kind": "theorem",
       "theorem_id": "8f064c13-2e0e-414d-a277-238b8587e8ff",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/8f064c13-2e0e-414d-a277-238b8587e8ff",
       "blueprint_source": "Proposition 5.1, “uniqueness of D′ proves uniqueness of the parent ideal”; restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.concrete_curve_order_index",
     "role": "kernel (f), cokernel length C(d,2)",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/MemberCharts.lean",
     "line_start": 540,
     "line_end": 598,
     "decl_line": 542,
     "docstring": "For a concrete surface, the child-order map is `O`-linear with kernel `(f)` and cokernel of\n  length `binom(d, 2)`, where `d` is the curve degree.",
     "statement": "theorem concrete_curve_order_index (beta : BlowupRestriction 𝒮 𝒯 𝒳)\n    (D : TwoChartCurveData 𝒮 𝒯 𝒳 beta) (f : 𝒮) (G : GluedGenerators 𝒮 𝒯 𝒳 beta (curveDataDegree D))\n    (hf : ∀ j : ℕ, surfaceToCechInput 𝒮 𝒯 𝒳 j f =\n      (cechInputLattice 𝒮 𝒯 𝒳 j).mkQ (gluedFunctionPair 𝒮 𝒯 𝒳 G j))\n    (hG : ∀ j : ℕ,\n      Ideal.span {Ideal.Quotient.mk ((chartExceptional 𝒮 𝒯 𝒳)^j) (G.left j)} =\n        leftLevelKernel D j ∧\n      Ideal.span {Ideal.Quotient.mk ((chartExceptional 𝒮 𝒳 𝒯)^j) (G.right j)} =\n        rightLevelKernel D j) :\n    (letI : ∀ p : AllPoints D, Algebra O (localRing D p) :=\n      fun p => ((localFromSurface D p).comp (algebraMap O 𝒮)).toAlgebra;\n        ∃ φ : 𝒮 →ₗ[O] childOrder D, (∀ r : 𝒮, φ r = childOrderMap D r) ∧\n        RingHom.ker (childOrderMap D) = Ideal.span {f} ∧\n        Module.length O (childOrder D ⧸ LinearMap.range φ) =\n        (chooseTwo (curveDataDegree D) : ℕ∞))",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n  [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)] (pi : O)\n  (hpi : Irreducible pi) (u : (TwoSeries O)ˣ) (a b : ℕ) (ha : 0 < a)",
     "prove2me": [
      {
       "node": "N914",
       "theorem_name": "SurfaceBlowupV2.concrete_curve_order_index",
       "kind": "theorem",
       "theorem_id": "4ba99114-24bd-4c2b-8e8d-35b7fe976342",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/4ba99114-24bd-4c2b-8e8d-35b7fe976342",
       "blueprint_source": "§2 (“preserved by completed point blowups”) and Lemma 4.2 / Proposition 5.2 on the concrete surface; restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.child_order_index_and_kernel",
     "role": "general two-chart version",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/MemberCharts.lean",
     "line_start": 483,
     "line_end": 524,
     "decl_line": 484,
     "docstring": "The child-order map has kernel `(f)` and cokernel of length `binom(d, 2)`.",
     "statement": "theorem child_order_index_and_kernel [IsNoetherianRing (BlowupChart R t x)]\n    [IsNoetherianRing (BlowupChart R x t)] (D : TwoChartCurveData R t x beta) (d : ℕ)\n    (G : GluedGenerators R t x beta d)\n    (hregF : ∀ j : ℕ, Function.Injective\n      (fun c : BlowupOverlap R t x ⧸ (Ideal.span {overlapException R t x})^j =>\n        Ideal.Quotient.mk ((Ideal.span {overlapException R t x})^j)\n          ((algebraMap (BlowupChart R t x) (BlowupOverlap R t x)) (G.left j)) * c))\n    (f : R)\n    (hf : ∀ j : ℕ, surfaceToCechInput R t x j f =\n      (cechInputLattice R t x j).mkQ (gluedFunctionPair R t x G j))\n    (hclosed : (⨅ j : ℕ, (Ideal.span {f} ⊔ (Ideal.span {t,x})^j)) = Ideal.span {f})\n    [∀ p : AllPoints D, IsLocalRing (localRing D p)]\n    [∀ p : AllPoints D, IsNoetherianRing (localRing D p)]\n    [∀ p : AllPoints D, IsAdicComplete (IsLocalRing.maximalIdeal (localRing D p)) (localRing D p)]\n    [∀ p : AllPoints D, Algebra O (localRing D p)]\n    (E : CurveOrderLimit R t x beta G ≃ₗ[O] childOrder D) (σ : R →ₗ[R] CurveOrderLimit R t x beta G)\n    (hσ : ∀ r : R, ∃ p : curveThreads R t x beta G, σ r = curveLimitMk R t x beta G p ∧ ∀ j : ℕ,\n      p.val j = surfaceToChartPair R t x r)\n    (hE : ∀ (p : curveThreads R t x beta G) (r : R),\n      (∀ j : ℕ, p.val j = surfaceToChartPair R t x r) → E (curveLimitMk R t x beta G p) =\n      childOrderMap D r)\n    (φ : R →ₗ[O] childOrder D) (hφ : ∀ r : R, φ r = childOrderMap D r) :\n    RingHom.ker (childOrderMap D) = Ideal.span {f} ∧\n      Module.length O ((childOrder D) ⧸ LinearMap.range φ) = (chooseTwo d : ℕ∞)",
     "section_variables": "variable (O R : Type) [CommRing O] [CommRing R] [Algebra O R] (t x : R)\n  (hreg : RegularParameterPair R t x) (beta : BlowupRestriction R t x)\n  (hregSwap : RegularParameterPair R x t) [(Ideal.span ({t,x} : Set R)).IsMaximal]\n  (hres : Function.Surjective (algebraMap O (R ⧸ Ideal.span {t,x})))\n  [IsAdicComplete (Ideal.span {t,x}) R]",
     "prove2me": [
      {
       "node": "N904",
       "theorem_name": "SurfaceBlowupV2.child_order_index_and_kernel",
       "kind": "theorem",
       "theorem_id": "3ac8803d-1a68-4131-9ac2-01fb0c6cb2a8",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3ac8803d-1a68-4131-9ac2-01fb0c6cb2a8",
       "blueprint_source": "Proposition 5.2 — the exact sequence 0 → R/(f) → ∏_P R_P/(f′_P) → H^1(Y,O_Y(dE)) → 0 and length binom(d,2); restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.cell_member_index_map",
     "role": "index map of a cell",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/RootCellLaw.lean",
     "line_start": 722,
     "line_end": 811,
     "decl_line": 725,
     "docstring": "**The index map of a cell.** For a cell ideal `J` of a concrete member and child quotients\n`B j ≅ R_j ⧸ Φ J j`, there is an injective `O`-algebra map `R ⧸ J → ∏ B j` with cokernel of length\n`d(d-1)/2` (`d` the cell degree), compatible with the child maps `α j`.",
     "statement": "theorem cell_member_index_map (m : ConcreteMember) (c : m.cellIndex) (D : CellChildData m c)\n    (J : Ideal m.R) (hJ : J ∈ m.toMeasured.cell c) (B : m.toMeasured.childIdx c → Type)\n    [∀ j, CommRing (B j)] [∀ j, Algebra m.O (B j)] (eB : ∀ j, B j ≃+* (D.mc j).R ⧸ D.Φ J j)\n    (hB : ∀ (j : m.toMeasured.childIdx c) (r : m.O), eB j (algebraMap m.O (B j) r) =\n    Ideal.Quotient.mk (D.Φ J j) (algebraMap m.O (D.mc j).R r)) :\n    ∃ ψ : (m.R ⧸ J) →ₐ[m.O] ∀ j, B j, Function.Injective ψ ∧ Module.length m.O\n        ((∀ j, B j) ⧸ LinearMap.range ψ.toLinearMap) = (chooseTwo (m.toMeasured.cellDegree c) : ℕ∞)\n        ∧ ∀ (r : m.R) (j : m.toMeasured.childIdx c), eB j (ψ (Ideal.Quotient.mk J r) j) =\n        Ideal.Quotient.mk (D.Φ J j) (D.alpha j r)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1101",
       "theorem_name": "SurfaceBlowupV2.cell_member_index_map",
       "kind": "theorem",
       "theorem_id": "a58226da-1a69-484c-9605-e19730883a4b",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/a58226da-1a69-484c-9605-e19730883a4b",
       "blueprint_source": "Proposition 5.2 on the recursion record; restructured (cycle 8)"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "thm-5.1",
   "kind": "theorem",
   "relation": "specialization",
   "confidence": "high",
   "summary": "member_cell_box_measure: for a cell of a concrete recursion member and measurable child sets G_j, μ(cell ∩ ST⁻¹(∏ G_j)) = q^{-tri d} ∏ μ_j(G_j), where tri d = C(d+1,2). Boxes generate the product σ-algebra, so this is (5.1). The Jacobian computation (5.3) appears as the cokernel length s·N − tri d of the strict normalizer (strict_quotient_cokernel_length, member_center_linear_part); the inverse-function-theorem step is replaced by finite-digit measure arguments (strict_chart_one_ball_measure). Haar measure on O_δ is the product measure in the power basis (unramified_coefficient_measure_pi).",
   "label": "Theorem 5.1",
   "title": "one-step measure identity",
   "paper_line": 466,
   "anchor": {
    "statement": "thm-5.1"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.member_cell_box_measure",
     "role": "the measure identity on boxes",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/MemberBoxes.lean",
     "line_start": 524,
     "line_end": 597,
     "decl_line": 526,
     "docstring": "The measure of the set of ideals in a cell whose strict transforms lie in a box `Π G_j` is\n  `q^(-tri(cellDegree))` times the product of the child state measures of the `G_j`.",
     "statement": "theorem member_cell_box_measure :\n    (letI : ∀ j, MeasurableSpace (Ideal (mc j).toMeasured.R) :=\n      fun j => (mc j).toMeasured.measurableSpaceIdeal;\n      letI : MeasurableSpace (Ideal ℛ) := m.toMeasured.measurableSpaceIdeal;\n      ∀ (G : ∀ j, Set (Ideal (mc j).toMeasured.R)), (∀ j, MeasurableSet (G j)) →\n      m.toMeasured.μ (m.toMeasured.cell c ∩ (fun (J : Ideal ℛ) (j : 𝒥) =>\n        strictTransformIdeal (alpha j) (e j) 𝔡 J) ⁻¹' Set.pi Set.univ G) =\n      𝐪⁻¹ ^ tri 𝔡 * ∏ j, (mc j).toMeasured.μ (G j))",
     "section_variables": "variable (m : ConcreteMember) (c : m.toMeasured.cellIndex)\n    (mc : m.toMeasured.childIdx c → ConcreteMember)\nvariable [∀ j, Algebra m.toMeasured.O (mc j).toMeasured.O]\n    [∀ j, Algebra m.toMeasured.O (mc j).toMeasured.R]\n    [∀ j, IsScalarTower m.toMeasured.O (mc j).toMeasured.O (mc j).toMeasured.R]\n    (pc : ∀ j, (mc j).toMeasured.O ≃ₗ[m.toMeasured.O]\n      (Fin (m.toMeasured.childDelta c j) → m.toMeasured.O))\n    (hpc : ∀ j, Measurable (pc j)) (hpc' : ∀ j, Measurable (pc j).symm)\n    (hcard : ∀ j, (mc j).toMeasured.q = m.toMeasured.q ^ m.toMeasured.childDelta c j)\n    (hpiO : ∀ j, algebraMap m.toMeasured.O (mc j).toMeasured.O m.toMeasured.S.pi =\n      (mc j).toMeasured.S.pi)\n    (hdeg : ∑ j, m.toMeasured.childDelta c j * (mc j).toMeasured.s.degree = m.toMeasured.s.degree)\n    (alpha : ∀ j, m.toMeasured.R →ₐ[m.toMeasured.O] (mc j).toMeasured.R)\n    (e : ∀ j, (mc j).toMeasured.R) (he : ∀ j, e j = (mc j).toMeasured.S.t)\n    (hvert : ∀ j, ∃ (s : ℕ) (cj : (mc j).toMeasured.R),\n      algebraMap m.toMeasured.O (mc j).toMeasured.R m.toMeasured.S.pi ^ s =\n      e j ^ m.toMeasured.cellDegree c * cj)\n    (hbij : Set.BijOn\n      (fun (J : Ideal m.toMeasured.R) (j : m.toMeasured.childIdx c) => strictTransformIdeal\n      (alpha j) (e j) (m.toMeasured.cellDegree c) J) (m.toMeasured.cell c)\n      (Set.pi Set.univ fun j => (mc j).toMeasured.stateSet))\n    (hstrict : ∀ f : m.toMeasured.R, Ideal.span {f} ∈ m.toMeasured.cell c →\n      ∃ g : (∀ j, (mc j).toMeasured.R), ∀ j, alpha j f = e j ^ m.toMeasured.cellDegree c * g j)\n    (hindex : ∀ f : m.toMeasured.R, Ideal.span {f} ∈ m.toMeasured.cell c →\n      ∀ g : (∀ j, (mc j).toMeasured.R), (∀ j, alpha j f = e j ^ m.toMeasured.cellDegree c * g j) →\n      ∀ iota : (m.toMeasured.R ⧸ Ideal.span {f}) →ₗ[m.toMeasured.O]\n      ((∀ j, (mc j).toMeasured.R) ⧸ Ideal.span {g}),\n      (∀ h : m.toMeasured.R, iota (Ideal.Quotient.mk (Ideal.span {f}) h) =\n      Ideal.Quotient.mk (Ideal.span {g}) (fun j => alpha j h)) → Function.Injective iota ∧\n      Module.length m.toMeasured.O\n      (((∀ j, (mc j).toMeasured.R) ⧸ Ideal.span {g}) ⧸ LinearMap.range iota) =\n      (chooseTwo (m.toMeasured.cellDegree c) : ℕ∞))\n    (hsum : ∑ j, m.toMeasured.childDelta c j * (mc j).toMeasured.s.firstContact =\n      m.toMeasured.cellDegree c)",
     "prove2me": [
      {
       "node": "N1066",
       "theorem_name": "SurfaceBlowupV2.member_cell_box_measure",
       "kind": "theorem",
       "theorem_id": "12e8501e-2bff-427b-8b49-4fe62a2b00fb",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/12e8501e-2bff-427b-8b49-4fe62a2b00fb",
       "blueprint_source": "Theorem 6.1, equation (6.1) on the fixed-tangent cell of one concrete member — the fields Φ_measurable and Φ_measure of the recursion record (N532); restructured (cycle 8, draft MEAS)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.member_cell_box_measurable",
     "role": "measurability",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/MemberBoxes.lean",
     "line_start": 492,
     "line_end": 521,
     "decl_line": 494,
     "docstring": "The set of ideals in a cell whose strict transforms lie in a measurable box `Π G_j` is\n  measurable.",
     "statement": "theorem member_cell_box_measurable :\n    (letI : ∀ j, MeasurableSpace (Ideal (mc j).toMeasured.R) :=\n      fun j => (mc j).toMeasured.measurableSpaceIdeal;\n      letI : MeasurableSpace (Ideal ℛ) := m.toMeasured.measurableSpaceIdeal;\n      ∀ (G : ∀ j, Set (Ideal (mc j).toMeasured.R)), (∀ j, MeasurableSet (G j)) →\n      MeasurableSet (m.toMeasured.cell c ∩ (fun (J : Ideal ℛ) (j : 𝒥) =>\n        strictTransformIdeal (alpha j) (e j) 𝔡 J) ⁻¹' Set.pi Set.univ G))",
     "section_variables": "variable (m : ConcreteMember) (c : m.toMeasured.cellIndex)\n    (mc : m.toMeasured.childIdx c → ConcreteMember)\nvariable [∀ j, Algebra m.toMeasured.O (mc j).toMeasured.O]\n    [∀ j, Algebra m.toMeasured.O (mc j).toMeasured.R]\n    [∀ j, IsScalarTower m.toMeasured.O (mc j).toMeasured.O (mc j).toMeasured.R]\n    (pc : ∀ j, (mc j).toMeasured.O ≃ₗ[m.toMeasured.O]\n      (Fin (m.toMeasured.childDelta c j) → m.toMeasured.O))\n    (hpc : ∀ j, Measurable (pc j)) (hpc' : ∀ j, Measurable (pc j).symm)\n    (hcard : ∀ j, (mc j).toMeasured.q = m.toMeasured.q ^ m.toMeasured.childDelta c j)\n    (hpiO : ∀ j, algebraMap m.toMeasured.O (mc j).toMeasured.O m.toMeasured.S.pi =\n      (mc j).toMeasured.S.pi)\n    (hdeg : ∑ j, m.toMeasured.childDelta c j * (mc j).toMeasured.s.degree = m.toMeasured.s.degree)\n    (alpha : ∀ j, m.toMeasured.R →ₐ[m.toMeasured.O] (mc j).toMeasured.R)\n    (e : ∀ j, (mc j).toMeasured.R) (he : ∀ j, e j = (mc j).toMeasured.S.t)\n    (hvert : ∀ j, ∃ (s : ℕ) (cj : (mc j).toMeasured.R),\n      algebraMap m.toMeasured.O (mc j).toMeasured.R m.toMeasured.S.pi ^ s =\n      e j ^ m.toMeasured.cellDegree c * cj)\n    (hbij : Set.BijOn\n      (fun (J : Ideal m.toMeasured.R) (j : m.toMeasured.childIdx c) => strictTransformIdeal\n      (alpha j) (e j) (m.toMeasured.cellDegree c) J) (m.toMeasured.cell c)\n      (Set.pi Set.univ fun j => (mc j).toMeasured.stateSet))\n    (hstrict : ∀ f : m.toMeasured.R, Ideal.span {f} ∈ m.toMeasured.cell c →\n      ∃ g : (∀ j, (mc j).toMeasured.R), ∀ j, alpha j f = e j ^ m.toMeasured.cellDegree c * g j)\n    (hindex : ∀ f : m.toMeasured.R, Ideal.span {f} ∈ m.toMeasured.cell c →\n      ∀ g : (∀ j, (mc j).toMeasured.R), (∀ j, alpha j f = e j ^ m.toMeasured.cellDegree c * g j) →\n      ∀ iota : (m.toMeasured.R ⧸ Ideal.span {f}) →ₗ[m.toMeasured.O]\n      ((∀ j, (mc j).toMeasured.R) ⧸ Ideal.span {g}),\n      (∀ h : m.toMeasured.R, iota (Ideal.Quotient.mk (Ideal.span {f}) h) =\n      Ideal.Quotient.mk (Ideal.span {g}) (fun j => alpha j h)) → Function.Injective iota ∧\n      Module.length m.toMeasured.O\n      (((∀ j, (mc j).toMeasured.R) ⧸ Ideal.span {g}) ⧸ LinearMap.range iota) =\n      (chooseTwo (m.toMeasured.cellDegree c) : ℕ∞))\n    (hsum : ∑ j, m.toMeasured.childDelta c j * (mc j).toMeasured.s.firstContact =\n      m.toMeasured.cellDegree c)",
     "prove2me": [
      {
       "node": "N1065",
       "theorem_name": "SurfaceBlowupV2.member_cell_box_measurable",
       "kind": "theorem",
       "theorem_id": "3f3f99a5-72f1-4907-b3ad-3ac7e34f5e99",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3f3f99a5-72f1-4907-b3ad-3ac7e34f5e99",
       "blueprint_source": "Theorem 6.1, equation (6.1) on the fixed-tangent cell of one concrete member — the fields Φ_measurable and Φ_measure of the recursion record (N532); restructured (cycle 8, draft MEAS)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.strict_quotient_cokernel_length",
     "role": "determinant: cokernel length s·N − tri d",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/StrictNormalizer.lean",
     "line_start": 970,
     "line_end": 1026,
     "decl_line": 972,
     "docstring": "Length of the cokernel of the strict quotient map `phi`: it equals `s * N - tri d`, computed\nfrom the relation `e ^ d * phi = pi ^ s • iota` and the cokernel lengths of `iota`, `e`, `pi`.",
     "statement": "theorem strict_quotient_cokernel_length (O R C : Type) [CommRing O] [CommRing R] [CommRing C]\n    [Algebra O R] [Algebra O C] (alpha : R →ₐ[O] C) (f : R) (g e c : C) (d : ℕ)\n    (pi : O) (s : ℕ) (hpi : (algebraMap O C pi) ^ s = e ^ d * c) (N : ℕ)\n    (phi iota : (R ⧸ Ideal.span {f}) →ₗ[O] (C ⧸ Ideal.span {g}))\n    (hphi : ∀ h : R, phi (Ideal.Quotient.mk (Ideal.span {f}) h) = Ideal.Quotient.mk (Ideal.span {g})\n    (c * alpha h))\n    (hiota : ∀ h : R, iota (Ideal.Quotient.mk (Ideal.span {f}) h) = Ideal.Quotient.mk\n    (Ideal.span {g}) (alpha h))\n    (hindex : Module.length O ((C ⧸ Ideal.span {g}) ⧸ LinearMap.range iota) = (chooseTwo d : ℕ∞))\n    (hereg : Function.Injective\n    (fun y : C ⧸ Ideal.span {g} => Ideal.Quotient.mk (Ideal.span {g}) e * y))\n    (hechild : Module.length O\n    ((C ⧸ Ideal.span {g}) ⧸ LinearMap.range\n    (LinearMap.mulLeft O (Ideal.Quotient.mk (Ideal.span {g}) e))) = (d : ℕ∞))\n    (hpireg : Function.Injective (fun y : C ⧸ Ideal.span {g} => (pi : O) • y))\n    (hpiquot : Module.length O\n    ((C ⧸ Ideal.span {g}) ⧸ LinearMap.range\n    ((pi : O) • (LinearMap.id : (C ⧸ Ideal.span {g}) →ₗ[O] (C ⧸ Ideal.span {g})))) = (N : ℕ∞))\n    (hsmall : tri d ≤ s*N) :\n    Module.length O ((C ⧸ Ideal.span {g}) ⧸ LinearMap.range phi) = ((s*N - tri d : ℕ) : ℕ∞)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N385",
       "theorem_name": "SurfaceBlowupV2.strict_quotient_cokernel_length",
       "kind": "theorem",
       "theorem_id": "cf4f0434-07c2-4a14-9af7-61ac83f5ab1c",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/cf4f0434-07c2-4a14-9af7-61ac83f5ab1c",
       "blueprint_source": "Theorem 6.1, equations (6.4)–(6.5) — the strict-transform derivative and its determinant, restructured as an integral cokernel length"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.member_center_linear_part",
     "role": "linear part at a cell center",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/Haar.lean",
     "line_start": 245,
     "line_end": 329,
     "decl_line": 247,
     "docstring": "The linear part of the normalization at a member center is injective, admits a scaled inverse,\n  and has cokernel of length `s · deg - tri(cellDegree)`.",
     "statement": "theorem member_center_linear_part (m : ConcreteMember) (c : m.toMeasured.cellIndex)\n    (mc : m.toMeasured.childIdx c → ConcreteMember)\n    [∀ j, Algebra m.toMeasured.O (mc j).toMeasured.O]\n    [∀ j, Algebra m.toMeasured.O (mc j).toMeasured.R]\n    [∀ j, IsScalarTower m.toMeasured.O (mc j).toMeasured.O (mc j).toMeasured.R]\n    (hcard : ∀ j, (mc j).toMeasured.q = m.toMeasured.q ^ m.toMeasured.childDelta c j)\n    (alpha : ∀ j, m.toMeasured.R →ₐ[m.toMeasured.O] (mc j).toMeasured.R)\n    (e : ∀ j, (mc j).toMeasured.R) (he : ∀ j, e j = (mc j).toMeasured.S.t)\n    (hbij : Set.BijOn\n      (fun (J : Ideal m.toMeasured.R) (j : m.toMeasured.childIdx c) => strictTransformIdeal\n      (alpha j) (e j) (m.toMeasured.cellDegree c) J) (m.toMeasured.cell c)\n      (Set.pi Set.univ fun j => (mc j).toMeasured.stateSet))\n    (hindex : ∀ f : m.toMeasured.R, Ideal.span {f} ∈ m.toMeasured.cell c →\n      ∀ g : (∀ j, (mc j).toMeasured.R), (∀ j, alpha j f = e j ^ m.toMeasured.cellDegree c * g j) →\n      ∀ iota : (m.toMeasured.R ⧸ Ideal.span {f}) →ₗ[m.toMeasured.O]\n      ((∀ j, (mc j).toMeasured.R) ⧸ Ideal.span {g}),\n      (∀ h : m.toMeasured.R, iota (Ideal.Quotient.mk (Ideal.span {f}) h) =\n      Ideal.Quotient.mk (Ideal.span {g}) (fun j => alpha j h)) → Function.Injective iota ∧\n      Module.length m.toMeasured.O\n      (((∀ j, (mc j).toMeasured.R) ⧸ Ideal.span {g}) ⧸ LinearMap.range iota) =\n      (chooseTwo (m.toMeasured.cellDegree c) : ℕ∞))\n    (hsum : ∑ j, m.toMeasured.childDelta c j * (mc j).toMeasured.s.firstContact =\n      m.toMeasured.cellDegree c)\n    (s : ℕ) (hs : tri (m.toMeasured.cellDegree c) ≤ s) (cc : (∀ j, (mc j).toMeasured.R))\n    (hcc : (algebraMap m.toMeasured.O (∀ j, (mc j).toMeasured.R) m.toMeasured.S.pi) ^ s =\n      e ^ m.toMeasured.cellDegree c * cc)\n    (f : m.toMeasured.R) (b : Fin m.toMeasured.s.degree → m.toMeasured.R)\n    (E₀ : m.toMeasured.R ≃ₗ[m.toMeasured.O]\n      ((Fin m.toMeasured.s.degree → m.toMeasured.O) × m.toMeasured.R))\n    (hE₀ : ∀ w, E₀.symm w = divisionMap f b w) (hf : Ideal.span {f} ∈ m.toMeasured.cell c)\n    (g : (∀ j, (mc j).toMeasured.R)) (hg : ∀ j, alpha j f = e j ^ m.toMeasured.cellDegree c * g j)\n    (bc : Fin m.toMeasured.s.degree → (∀ j, (mc j).toMeasured.R)) :\n    (letI : Module m.toMeasured.O (∀ j, (mc j).toMeasured.R) := Algebra.toModule;\n      ∀ (E : (∀ j, (mc j).toMeasured.R) ≃ₗ[m.toMeasured.O]\n      ((Fin m.toMeasured.s.degree → m.toMeasured.O) × (∀ j, (mc j).toMeasured.R))),\n      (∀ w, E.symm w = divisionMap g bc w) →\n      ∃ Q : (Fin m.toMeasured.s.degree → m.toMeasured.O) →ₗ[m.toMeasured.O]\n      (Fin m.toMeasured.s.degree → m.toMeasured.O),\n      (∀ w, normalizationLinearPart E (pulledVariation (AlgHom.pi alpha) cc b) (Q w) =\n      (m.toMeasured.S.pi ^ (s * m.toMeasured.s.degree - tri (m.toMeasured.cellDegree c))) • w) ∧\n      Function.Injective (normalizationLinearPart E (pulledVariation (AlgHom.pi alpha) cc b)) ∧\n      Module.length m.toMeasured.O\n      ((Fin m.toMeasured.s.degree → m.toMeasured.O) ⧸ LinearMap.range\n      (normalizationLinearPart E (pulledVariation (AlgHom.pi alpha) cc b))) =\n      ((s * m.toMeasured.s.degree - tri (m.toMeasured.cellDegree c) : ℕ) : ℕ∞))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1062",
       "theorem_name": "SurfaceBlowupV2.member_center_linear_part",
       "kind": "theorem",
       "theorem_id": "19681ad6-c7c6-4f2d-b721-853d5574dbbd",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/19681ad6-c7c6-4f2d-b721-853d5574dbbd",
       "blueprint_source": "Theorem 6.1, equation (6.1) on the fixed-tangent cell of one concrete member — the fields Φ_measurable and Φ_measure of the recursion record (N532); restructured (cycle 8, draft MEAS)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.strict_chart_one_ball_measure",
     "role": "net factor q^{-tri d} on a ball",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Assembly/NullBridges.lean",
     "line_start": 225,
     "line_end": 273,
     "decl_line": 227,
     "docstring": "On the ball of radius `|pi|^(s+a-1)`, the child coordinate preimage of `T` has measure\n`q⁻¹^(tri d)` times that of `T` inside the chart image.",
     "statement": "theorem strict_chart_one_ball_measure (O R : Type) [CommRing O] [CommRing R] [Algebra O R]\n    (n : ℕ) (pi : O) (a : ℕ) (b : Fin n → R) (E : R ≃ₗ[O] ((Fin n → O) × R))\n    (H : (Fin n → O) →ₗ[O] R) [IsAdicComplete (Ideal.span {pi}) ((Fin n → O) × R)] (k : ℕ)\n    (ha : k < a) (Q : (Fin n → O) →ₗ[O] (Fin n → O))\n    (hQ : ∀ w, normalizationLinearPart E H (Q w) = (pi ^ k) • w)\n    (hD : Function.Injective (normalizationLinearPart E H)) [IsDomain O]\n    [IsDiscreteValuationRing O] [Finite (IsLocalRing.ResidueField O)] (hpi : Irreducible pi)\n    (hk : Module.length O ((Fin n → O) ⧸ LinearMap.range (normalizationLinearPart E H)) = k)\n    [IsAdicComplete (Ideal.span {pi}) (Fin n → O)] [TopologicalSpace (Fin n → O)]\n    [IsTopologicalAddGroup (Fin n → O)] [CompactSpace (Fin n → O)] [T2Space (Fin n → O)]\n    [MeasurableSpace (Fin n → O)] [BorelSpace (Fin n → O)] [MeasurableAdd (Fin n → O)]\n    (hgen : ‹MeasurableSpace (Fin n → O)› = adicCylinderSpace (Ideal.span {pi}) (Fin n → O))\n    (mu : MeasureTheory.Measure (Fin n → O)) [MeasureTheory.IsProbabilityMeasure mu]\n    [MeasureTheory.Measure.IsAddHaarMeasure mu]\n    (hfinite : ∀ j, Finite (AdicQuotient (Ideal.span {pi}) (Fin n → O) j))\n    (hcont : Continuous (fun z : Fin n → O => (pi^a) • normalizationLinearPart E H z))\n    (hscale : ∀ (m : ℕ) (S : Set (Fin n → O)), MeasurableSet S →\n      mu ((fun w : Fin n → O => (pi^m) • w) '' S) =\n        (Nat.card (IsLocalRing.ResidueField O) : ℝ≥0∞)⁻¹^(m*n) * mu S)\n    (s d : ℕ) (htri : tri d ≤ s*n) (hkd : k = s*n - tri d) (T : Set (Fin n → O))\n    (hT : MeasurableSet T) :\n    mu (coordinateScale pi (s+a-1) '' (childCoordinateMap pi a b E H ⁻¹' T)) =\n      (Nat.card (IsLocalRing.ResidueField O) : ℝ≥0∞)⁻¹^(tri d) *\n        mu (T ∩ Set.range (childCoordinateMap pi a b E H))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N396",
       "theorem_name": "SurfaceBlowupV2.strict_chart_one_ball_measure",
       "kind": "theorem",
       "theorem_id": "f4dffa2b-ab84-42a9-b8d3-bab6146b91cd",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/f4dffa2b-ab84-42a9-b8d3-bab6146b91cd",
       "blueprint_source": "Theorem 6.1 — chart normalization of the counted strict-transform map, equation (6.1); restructured"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.unramified_coefficient_measure_pi",
     "role": "Haar on O_δ",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/Haar.lean",
     "line_start": 157,
     "line_end": 191,
     "decl_line": 159,
     "docstring": "On `O[x] ⧸ (Φ)` the coefficient Haar measure is the product of the power-coordinate measures,\n  and a ball of radius `L` in `r` coordinates has mass `q^(-deg Φ · r · L)`.",
     "statement": "theorem unramified_coefficient_measure_pi (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] [TopologicalSpace O] [IsTopologicalRing O]\n    [CompactSpace O] [T2Space O] [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]\n    (htop : IsAdic (IsLocalRing.maximalIdeal O)) (Φ : Polynomial O) (hΦ : IsUnramifiedLift O Φ)\n    [TopologicalSpace (AdjoinRoot Φ)] [MeasurableSpace (AdjoinRoot Φ)]\n    (hτ : ‹TopologicalSpace (AdjoinRoot Φ)› = unramifiedTopology O Φ hΦ.1)\n    (hmeas : ‹MeasurableSpace (AdjoinRoot Φ)› = unramifiedMeasurableSpace O Φ hΦ.1)\n    [IsDomain (AdjoinRoot Φ)] [IsTopologicalRing (AdjoinRoot Φ)] [CompactSpace (AdjoinRoot Φ)]\n    [T2Space (AdjoinRoot Φ)] [SecondCountableTopology (AdjoinRoot Φ)] [BorelSpace (AdjoinRoot Φ)]\n    [MeasureTheory.SigmaFinite (unramifiedCoefficientMeasure O Φ hΦ.1)] (r : ℕ) :\n    coefficientMeasure (AdjoinRoot Φ) r =\n      MeasureTheory.Measure.pi (fun _ : Fin r => unramifiedCoefficientMeasure O Φ hΦ.1) ∧\n      ∀ (L : ℕ) (a : Fin r → AdjoinRoot Φ),\n      coefficientMeasure (AdjoinRoot Φ) r {b | ∀ j, b j - a j ∈ (baseIdeal O Φ) ^ L} =\n      (Nat.card (IsLocalRing.ResidueField O) : ℝ≥0∞)⁻¹ ^ (Φ.natDegree * r * L)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N927",
       "theorem_name": "SurfaceBlowupV2.unramified_coefficient_measure_pi",
       "kind": "theorem",
       "theorem_id": "73ad1d4f-203b-4352-98e3-ffe46ab165d5",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/73ad1d4f-203b-4352-98e3-ffe46ab165d5",
       "blueprint_source": "restructured — G7, Haar measure on O_δ in the power basis (Theorem 6.1 end of proof, Lemma 9.2)"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "ex-5.2",
   "kind": "example",
   "relation": "none",
   "confidence": "high",
   "summary": "Worked example; not formalized as such. Its conclusion (transition probability q^{-3}) is an instance of divisorProbability and child_volume_ratio.",
   "label": "Example 5.2",
   "title": "a quadratic cluster chart",
   "paper_line": 499,
   "anchor": {
    "statement": "ex-5.2"
   },
   "lean": [],
   "prove2me_statement_nodes": []
  },
  {
   "id": "prop-6.1",
   "kind": "proposition",
   "relation": "covered",
   "confidence": "high",
   "summary": "The probabilities (6.1) are the definition divisorProbability; child_volume_ratio proves the paper's computation (q^{-tri d} × product of child volumes ÷ parent volume = divisorProbability), and member_cell_box_measure gives conditional independence of the children. Cells partition the state (concrete_member_cells_cover; tangent_divisor_unique).",
   "label": "Proposition 6.1",
   "title": "transition probabilities",
   "paper_line": 521,
   "anchor": {
    "statement": "prop-6.1"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.divisorProbability",
     "role": "(6.1) as an expression",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 287,
     "line_end": 294,
     "decl_line": 288,
     "docstring": "The probability of the tangent divisor degree `d` (equation (7.2)).",
     "statement": "def divisorProbability (s : State) (d : ℕ) : Expr :=\n  match s with\n  | .single _ c => .mul (.inv (.pow .var (tri d))) (.pow eminusOne (if d<c then 1 else 0))\n  | .crossing _ _ c h =>\n    let j := (if d<c then 1 else 0) + (if d<h then 1 else 0)\n    .mul (.inv (.pow .var (chooseTwo d)))\n      (if j=0 then .inv eminusOne else .pow eminusOne (j-1))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N006",
       "theorem_name": "SurfaceBlowupV2.Weights",
       "kind": "definition",
       "theorem_id": "7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "blueprint_source": "(3.6), (7.3)–(7.7), (8.3), (9.3)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.child_volume_ratio",
     "role": "the volume calculation",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/AdicCylinders.lean",
     "line_start": 342,
     "line_end": 399,
     "decl_line": 344,
     "docstring": "The volume recursion: the children of an allowed tangent pattern `P` at a state `s`,\nweighted by `q^(-tri d)`, have total volume `divisorProbability s d · stateVolume s`.",
     "statement": "theorem child_volume_ratio (s : State) (hs : s.Valid) (P : TangentPattern s.degree)\n    (hP : Allowed s P) (q : ℕ) (hq : 2 ≤ q) :\n    ((q:ℚ)⁻¹^(tri P.d.val))\n        * (((children s P).map fun z => (stateVolume z.2).eval ((q:ℚ)^z.1)).prod)\n      / (stateVolume s).eval q = (divisorProbability s P.d.val).eval q",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N074",
       "theorem_name": "SurfaceBlowupV2.child_volume_ratio",
       "kind": "theorem",
       "theorem_id": "dda4e15a-4285-4c33-9bb0-07124cc84d05",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/dda4e15a-4285-4c33-9bb0-07124cc84d05",
       "blueprint_source": "Proposition 7.1 — algebra after Theorem 6.1"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.member_cell_box_measure",
     "role": "independence of the children",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/MemberBoxes.lean",
     "line_start": 524,
     "line_end": 597,
     "decl_line": 526,
     "docstring": "The measure of the set of ideals in a cell whose strict transforms lie in a box `Π G_j` is\n  `q^(-tri(cellDegree))` times the product of the child state measures of the `G_j`.",
     "statement": "theorem member_cell_box_measure :\n    (letI : ∀ j, MeasurableSpace (Ideal (mc j).toMeasured.R) :=\n      fun j => (mc j).toMeasured.measurableSpaceIdeal;\n      letI : MeasurableSpace (Ideal ℛ) := m.toMeasured.measurableSpaceIdeal;\n      ∀ (G : ∀ j, Set (Ideal (mc j).toMeasured.R)), (∀ j, MeasurableSet (G j)) →\n      m.toMeasured.μ (m.toMeasured.cell c ∩ (fun (J : Ideal ℛ) (j : 𝒥) =>\n        strictTransformIdeal (alpha j) (e j) 𝔡 J) ⁻¹' Set.pi Set.univ G) =\n      𝐪⁻¹ ^ tri 𝔡 * ∏ j, (mc j).toMeasured.μ (G j))",
     "section_variables": "variable (m : ConcreteMember) (c : m.toMeasured.cellIndex)\n    (mc : m.toMeasured.childIdx c → ConcreteMember)\nvariable [∀ j, Algebra m.toMeasured.O (mc j).toMeasured.O]\n    [∀ j, Algebra m.toMeasured.O (mc j).toMeasured.R]\n    [∀ j, IsScalarTower m.toMeasured.O (mc j).toMeasured.O (mc j).toMeasured.R]\n    (pc : ∀ j, (mc j).toMeasured.O ≃ₗ[m.toMeasured.O]\n      (Fin (m.toMeasured.childDelta c j) → m.toMeasured.O))\n    (hpc : ∀ j, Measurable (pc j)) (hpc' : ∀ j, Measurable (pc j).symm)\n    (hcard : ∀ j, (mc j).toMeasured.q = m.toMeasured.q ^ m.toMeasured.childDelta c j)\n    (hpiO : ∀ j, algebraMap m.toMeasured.O (mc j).toMeasured.O m.toMeasured.S.pi =\n      (mc j).toMeasured.S.pi)\n    (hdeg : ∑ j, m.toMeasured.childDelta c j * (mc j).toMeasured.s.degree = m.toMeasured.s.degree)\n    (alpha : ∀ j, m.toMeasured.R →ₐ[m.toMeasured.O] (mc j).toMeasured.R)\n    (e : ∀ j, (mc j).toMeasured.R) (he : ∀ j, e j = (mc j).toMeasured.S.t)\n    (hvert : ∀ j, ∃ (s : ℕ) (cj : (mc j).toMeasured.R),\n      algebraMap m.toMeasured.O (mc j).toMeasured.R m.toMeasured.S.pi ^ s =\n      e j ^ m.toMeasured.cellDegree c * cj)\n    (hbij : Set.BijOn\n      (fun (J : Ideal m.toMeasured.R) (j : m.toMeasured.childIdx c) => strictTransformIdeal\n      (alpha j) (e j) (m.toMeasured.cellDegree c) J) (m.toMeasured.cell c)\n      (Set.pi Set.univ fun j => (mc j).toMeasured.stateSet))\n    (hstrict : ∀ f : m.toMeasured.R, Ideal.span {f} ∈ m.toMeasured.cell c →\n      ∃ g : (∀ j, (mc j).toMeasured.R), ∀ j, alpha j f = e j ^ m.toMeasured.cellDegree c * g j)\n    (hindex : ∀ f : m.toMeasured.R, Ideal.span {f} ∈ m.toMeasured.cell c →\n      ∀ g : (∀ j, (mc j).toMeasured.R), (∀ j, alpha j f = e j ^ m.toMeasured.cellDegree c * g j) →\n      ∀ iota : (m.toMeasured.R ⧸ Ideal.span {f}) →ₗ[m.toMeasured.O]\n      ((∀ j, (mc j).toMeasured.R) ⧸ Ideal.span {g}),\n      (∀ h : m.toMeasured.R, iota (Ideal.Quotient.mk (Ideal.span {f}) h) =\n      Ideal.Quotient.mk (Ideal.span {g}) (fun j => alpha j h)) → Function.Injective iota ∧\n      Module.length m.toMeasured.O\n      (((∀ j, (mc j).toMeasured.R) ⧸ Ideal.span {g}) ⧸ LinearMap.range iota) =\n      (chooseTwo (m.toMeasured.cellDegree c) : ℕ∞))\n    (hsum : ∑ j, m.toMeasured.childDelta c j * (mc j).toMeasured.s.firstContact =\n      m.toMeasured.cellDegree c)",
     "prove2me": [
      {
       "node": "N1066",
       "theorem_name": "SurfaceBlowupV2.member_cell_box_measure",
       "kind": "theorem",
       "theorem_id": "12e8501e-2bff-427b-8b49-4fe62a2b00fb",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/12e8501e-2bff-427b-8b49-4fe62a2b00fb",
       "blueprint_source": "Theorem 6.1, equation (6.1) on the fixed-tangent cell of one concrete member — the fields Φ_measurable and Φ_measure of the recursion record (N532); restructured (cycle 8, draft MEAS)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.concrete_member_cells_cover",
     "role": "cells cover the state",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/RootCellLaw.lean",
     "line_start": 1071,
     "line_end": 1123,
     "decl_line": 1072,
     "docstring": "The cells of a concrete member cover its state set.",
     "statement": "theorem concrete_member_cells_cover (m : ConcreteMember) :\n    m.toMeasured.stateSet = ⋃ c : m.toMeasured.cellIndex, m.toMeasured.cell c",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N995",
       "theorem_name": "SurfaceBlowupV2.concrete_member_cells_cover",
       "kind": "theorem",
       "theorem_id": "7ba87a6b-fd8c-4b5d-b175-6d53eb1755e4",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/7ba87a6b-fd8c-4b5d-b175-6d53eb1755e4",
       "blueprint_source": "Proposition 7.1 (“every parent has one finite order d and one tangent divisor … these finitely many cells partition the parent state”) — the fields cells_cover and cells_disjoint of N532 on the concrete members; restructured (cycle 8)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.tangent_divisor_unique",
     "role": "cells are disjoint",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/ChildMembers.lean",
     "line_start": 369,
     "line_end": 453,
     "decl_line": 371,
     "docstring": "The tangent order `d` and the tangent divisor `Dv` of an ideal on a regular surface are\nuniquely determined.",
     "statement": "theorem tangent_divisor_unique (O R : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n    [CommRing R] [IsDomain R] [Algebra O R] [IsRegularLocalRing R] (S : SurfaceData O R)\n    (hreg : RegularParameterPair R S.t S.x) (J : Ideal R) (d d' : ℕ)\n    (Dv Dv' : ExceptionalDivisor (IsLocalRing.ResidueField R)) (h : HasTangentDivisor O R S J d Dv)\n    (h' : HasTangentDivisor O R S J d' Dv') :\n    d = d' ∧ Dv = Dv'",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N997",
       "theorem_name": "SurfaceBlowupV2.tangent_divisor_unique",
       "kind": "theorem",
       "theorem_id": "1a4ee853-7100-4f71-890d-d01016b6520a",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/1a4ee853-7100-4f71-890d-d01016b6520a",
       "blueprint_source": "Proposition 7.1 (“every parent has one finite order d and one tangent divisor … these finitely many cells partition the parent state”) — the fields cells_cover and cells_disjoint of N532 on the concrete members; restructured (cycle 8)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.rational_divisorProbability_single",
     "role": "closed form q^{-tri d}(q−1)^{[d<c]}",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Patterns.lean",
     "line_start": 410,
     "line_end": 416,
     "decl_line": 411,
     "docstring": "The divisor probability of `S(a;c)` at degree `d` is `q^{-tri d} (q-1)^{[d < c]}`.",
     "statement": "theorem rational_divisorProbability_single (a c d : ℕ) :\n    (divisorProbability (State.single a c) d).rational =\n      ((RatFunc.X : RatFunc ℚ) ^ tri d)⁻¹ *\n        ((RatFunc.X : RatFunc ℚ) - 1) ^ (if d < c then 1 else 0)",
     "section_variables": "",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-6.2",
   "kind": "display",
   "relation": "exact",
   "confidence": "high",
   "summary": "pointCount δ is the necklace expression; irreducible_count_moebius proves δ·#{monic irreducibles of degree δ} = Σ μ(j) q^{δ/j}, and card_pow_eq_sum_irreducible_degrees proves q^m = Σ_{δ|m} δ N_δ.",
   "label": "(6.2)",
   "title": "closed points of degree δ",
   "anchor": {
    "eq": "6.2"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.pointCount",
     "role": "N_δ(q)",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 296,
     "line_end": 300,
     "decl_line": 298,
     "docstring": "The number `(1/δ) ∑_{j ∣ δ} μ(j) q^{δ/j}` of closed points of degree `δ` of `ℙ¹` minus `∞`\n(necklace polynomial).",
     "statement": "def pointCount (δ : ℕ) : Expr :=\n  .mul (.const (1/(δ:ℚ))) (Expr.sum ((Nat.divisors δ).toList.map fun j =>\n    .mul (.const ((ArithmeticFunction.moebius j : ℤ) : ℚ)) (.pow .var (δ/j))))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N006",
       "theorem_name": "SurfaceBlowupV2.Weights",
       "kind": "definition",
       "theorem_id": "7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "blueprint_source": "(3.6), (7.3)–(7.7), (8.3), (9.3)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.irreducible_count_moebius",
     "role": "Möbius formula",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Surfaces/Lengths.lean",
     "line_start": 365,
     "line_end": 378,
     "decl_line": 366,
     "docstring": "Möbius inversion of Gauss's formula: `δ · N_δ = ∑_{j ∣ δ} μ(j) q^(δ/j)`.",
     "statement": "theorem irreducible_count_moebius (k : Type) [Field k] [Finite k] (δ : ℕ) (hδ : 0 < δ) :\n    (δ : ℚ) * (Nat.card {g : Polynomial k // g.Monic ∧ Irreducible g ∧ g.natDegree = δ} : ℕ) =\n    ∑ j ∈ δ.divisors, ((ArithmeticFunction.moebius j : ℤ) : ℚ) * (Nat.card k : ℚ) ^ (δ / j)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N683",
       "theorem_name": "SurfaceBlowupV2.irreducible_count_moebius",
       "kind": "theorem",
       "theorem_id": "1c4f938f-63dc-4c40-9be8-6ed48f5d61a7",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/1c4f938f-63dc-4c40-9be8-6ed48f5d61a7",
       "blueprint_source": "(7.5) - closed-point count; restructured split of N081"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.card_pow_eq_sum_irreducible_degrees",
     "role": "q^m = Σ δ N_δ",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Surfaces/Lengths.lean",
     "line_start": 328,
     "line_end": 363,
     "decl_line": 329,
     "docstring": "Gauss's formula: `q^m = ∑_{d ∣ m} d · #{monic irreducible polynomials of degree d}`.",
     "statement": "theorem card_pow_eq_sum_irreducible_degrees (k : Type) [Field k] [Finite k] (m : ℕ) (hm : 0 < m) :\n    (Nat.card k) ^ m = ∑ d ∈ m.divisors, d *\n    Nat.card {g : Polynomial k // g.Monic ∧ Irreducible g ∧ g.natDegree = d}",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N682",
       "theorem_name": "SurfaceBlowupV2.card_pow_eq_sum_irreducible_degrees",
       "kind": "theorem",
       "theorem_id": "291f6197-7428-4fbe-a83d-65de2adea94e",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/291f6197-7428-4fbe-a83d-65de2adea94e",
       "blueprint_source": "(7.5) - closed-point count; restructured split of N081"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.finite_field_irreducible_count",
     "role": "count via pointCount",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Formula/FiniteFieldCounts.lean",
     "line_start": 28,
     "line_end": 35,
     "decl_line": 30,
     "docstring": "The number of monic irreducible polynomials of degree `δ > 0` over a finite field `k` is the\nvalue of the point-count polynomial `pointCount δ` at `#k`.",
     "statement": "theorem finite_field_irreducible_count (k : Type) [Field k] [Finite k] (δ : ℕ) (hδ : 0 < δ) :\n    ((Nat.card {g : Polynomial k // g.Monic ∧ Irreducible g\n      ∧ g.natDegree = δ} : ℕ) : ℚ) = (pointCount δ).eval (Nat.card k)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N081",
       "theorem_name": "SurfaceBlowupV2.finite_field_irreducible_count",
       "kind": "theorem",
       "theorem_id": "0e908623-a30a-4f5b-838b-062a69542b60",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/0e908623-a30a-4f5b-838b-062a69542b60",
       "blueprint_source": "(7.5); decomposed into N681–N684"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-6.3",
   "kind": "display",
   "relation": "exact",
   "confidence": "high",
   "summary": "divisorCount / tangentCount are the falling-factorial counts; pattern_divisor_count proves #patternDivisors k s P = tangentCount s P (|k|), via a bijection with colorings of the nonboundary closed directions.",
   "label": "(6.3)",
   "title": "number of divisors with a pattern",
   "anchor": {
    "eq": "6.3"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.divisorCount",
     "role": "𝒞_m(q; b₀) as an expression",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 310,
     "line_end": 314,
     "decl_line": 311,
     "docstring": "The number of residue divisors with pattern `m` (choices of distinct points per degree).",
     "statement": "def divisorCount {n : ℕ} (offset : ℤ) (m : Pattern n) : Expr :=\n  Expr.prod ((Finset.univ : Finset (Fin n)).toList.map fun i =>\n    .mul (falling (availablePoints offset (i.val+1)) (∑ j : Fin n, (m (i,j)).val))\n      (.const (1 / (∏ j : Fin n, ((Nat.factorial (m (i,j)).val : ℕ) : ℚ)))))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N006",
       "theorem_name": "SurfaceBlowupV2.Weights",
       "kind": "definition",
       "theorem_id": "7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "blueprint_source": "(3.6), (7.3)–(7.7), (8.3), (9.3)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.tangentCount",
     "role": "the count for a state",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 316,
     "line_end": 318,
     "decl_line": 317,
     "docstring": "The number of tangent divisors with the pattern of `P`.",
     "statement": "def tangentCount (s : State) (P : TangentPattern s.degree) : Expr :=\n  divisorCount (match s with | .single _ _ => 0 | .crossing _ _ _ _ => -1) P.other",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N006",
       "theorem_name": "SurfaceBlowupV2.Weights",
       "kind": "definition",
       "theorem_id": "7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "blueprint_source": "(3.6), (7.3)–(7.7), (8.3), (9.3)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.falling",
     "role": "falling factorial",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 306,
     "line_end": 308,
     "decl_line": 307,
     "docstring": "The falling factorial `x (x - 1) ⋯ (x - m + 1)`.",
     "statement": "def falling (x : Expr) (m : ℕ) : Expr :=\n  Expr.prod ((List.range m).map fun j => .sub x (.const j))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N006",
       "theorem_name": "SurfaceBlowupV2.Weights",
       "kind": "definition",
       "theorem_id": "7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "blueprint_source": "(3.6), (7.3)–(7.7), (8.3), (9.3)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.availablePoints",
     "role": "C_δ",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 302,
     "line_end": 304,
     "decl_line": 303,
     "docstring": "Available points of degree `δ` (degree one: `q + offset`).",
     "statement": "def availablePoints (offset : ℤ) (δ : ℕ) : Expr :=\n  if δ=1 then .add .var (.const offset) else pointCount δ",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N006",
       "theorem_name": "SurfaceBlowupV2.Weights",
       "kind": "definition",
       "theorem_id": "7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "blueprint_source": "(3.6), (7.3)–(7.7), (8.3), (9.3)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.pattern_divisor_count",
     "role": "the count is correct",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Formula/PatternCounts.lean",
     "line_start": 528,
     "line_end": 552,
     "decl_line": 530,
     "docstring": "For an allowed pattern over a finite field `k`, there are finitely many divisors with\npattern `P`, and their number is `tangentCount s P` evaluated at `#k`.",
     "statement": "theorem pattern_divisor_count (k : Type) [Field k] [Finite k] (s : State)\n    (P : TangentPattern s.degree) (hP : Allowed s P) :\n    Finite (patternDivisors k s P) ∧\n      ((Nat.card (patternDivisors k s P) : ℕ) : ℚ) = (tangentCount s P).eval (Nat.card k)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N917",
       "theorem_name": "SurfaceBlowupV2.pattern_divisor_count",
       "kind": "theorem",
       "theorem_id": "99cf673f-c76f-4d07-83f8-4e41b3f416be",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/99cf673f-c76f-4d07-83f8-4e41b3f416be",
       "blueprint_source": "§7, equation (7.7) — the number of divisors of a given pattern; restructured as a count of colorings of the nonboundary closed points"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.patternDivisors_equiv_colorings",
     "role": "bijection with colorings",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Formula/PatternCounts.lean",
     "line_start": 494,
     "line_end": 507,
     "decl_line": 497,
     "docstring": "Over a finite field, the exceptional divisors with tangent pattern `P` are in bijection\nwith tuples, indexed by degrees `i + 1`, of colorings of the nonboundary directions of that\ndegree by `Fin s.degree ⊕ none` with color counts `P.other (i, j)`.",
     "statement": "theorem patternDivisors_equiv_colorings (k : Type) [Field k] [Finite k] (s : State)\n    (P : TangentPattern s.degree) (hP : P.rt.val + P.rx.val + patternWeight P.other = P.d.val)\n    (hrx : ∀ a c, s = State.single a c → P.rx.val = 0) :\n    Nonempty (patternDivisors k s P ≃ ∀ i : Fin s.degree,\n      {f : {Q : ClosedDirection k // Q ∉ boundaryDirections k s ∧\n          directionDegree k Q = i.val + 1} → Option (Fin s.degree) //\n        ∀ j : Fin s.degree, Nat.card {Q // f Q = some j} = (P.other (i, j)).val})",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N916",
       "theorem_name": "SurfaceBlowupV2.pattern_divisors_equiv_colorings_v2",
       "kind": "theorem",
       "theorem_id": "a92f1105-1588-4a15-a338-1353221a6c33",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/a92f1105-1588-4a15-a338-1353221a6c33",
       "blueprint_source": "§7, equation (7.7) — the number of divisors of a given pattern; restructured as a count of colorings of the nonboundary closed points"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.nonboundary_direction_count",
     "role": "C_1 = q + 1 − b₀, C_δ = N_δ",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Formula/PatternCounts.lean",
     "line_start": 39,
     "line_end": 103,
     "decl_line": 42,
     "docstring": "Over a finite field `k`, the number of nonboundary closed directions of degree `δ > 0` is\nthe value at `q = #k` of `availablePoints` (with offset `-1` at a crossing state, where the\nzero direction is also boundary).",
     "statement": "theorem nonboundary_direction_count (k : Type) [Field k] [Finite k] (s : State) (δ : ℕ)\n    (hδ : 0 < δ) :\n    ((Nat.card {Q : ClosedDirection k // Q ∉ boundaryDirections k s ∧\n        directionDegree k Q = δ} : ℕ) : ℚ) =\n      (availablePoints\n        (match s with | State.single _ _ => (0 : ℤ) | State.crossing _ _ _ _ => (-1 : ℤ))\n        δ).eval (Nat.card k)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N915",
       "theorem_name": "SurfaceBlowupV2.nonboundary_direction_count",
       "kind": "theorem",
       "theorem_id": "fb8e4dcf-8872-497c-9edd-4c8300a3f24d",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/fb8e4dcf-8872-497c-9edd-4c8300a3f24d",
       "blueprint_source": "§7, equation (7.7) — the number of divisors of a given pattern; restructured as a count of colorings of the nonboundary closed points"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-6.4",
   "kind": "display",
   "relation": "definition",
   "confidence": "high",
   "summary": "lawDescend δ (scale residue degrees by δ, substitute q ↦ q^δ) and, in the reciprocity part, adamsCoef δ. That a field over K_δ has invariant (e, δf) over K is field_invariant_unramified_tower / algebra_type_unramified_descent.",
   "label": "(6.4)",
   "title": "Adams operation",
   "anchor": {
    "eq": "6.4"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.lawDescend",
     "role": "ψ_δ on laws",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 170,
     "line_end": 172,
     "decl_line": 171,
     "docstring": "Descent along a degree-`δ` unramified extension: scale types by `δ` and substitute `q ↦ q^δ`.",
     "statement": "def lawDescend (δ : ℕ) (L : Law) : Law :=\n  L.map fun z => (scaleType δ z.1, z.2.subst (.pow .var δ))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N004",
       "theorem_name": "SurfaceBlowupV2.Law",
       "kind": "definition",
       "theorem_id": "51563bd6-45f2-4b26-bd29-74eab08c2b24",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/51563bd6-45f2-4b26-bd29-74eab08c2b24",
       "blueprint_source": "(8.1), (8.5)–(8.6)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.scaleType",
     "role": "(e,f) ↦ (e,δf)",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 61,
     "line_end": 63,
     "decl_line": 63,
     "docstring": "Scaling the residue degrees by `δ` (the effect of descending along a degree-`δ` unramified\nextension).",
     "statement": "def scaleType (δ : ℕ) (σ : FactorType) : FactorType := σ.map fun z => (z.1, δ * z.2)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N001",
       "theorem_name": "SurfaceBlowupV2.Types",
       "kind": "definition",
       "theorem_id": "2789af69-8e3f-4e25-9dfd-28fa41b1365c",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2789af69-8e3f-4e25-9dfd-28fa41b1365c",
       "blueprint_source": "§1 and (8.1)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.adamsCoef",
     "role": "ψ_δ on ℚ(q)[Z]",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 128,
     "line_end": 132,
     "decl_line": 130,
     "docstring": "The Adams operation ψ_δ on Coef: q ↦ q^δ on every coefficient and Z_{e,f} ↦ Z_{e,δf} on\ntypes.",
     "statement": "def adamsCoef (δ : ℕ) : Coef →+* Coef :=\n  (AddMonoidAlgebra.mapDomainRingHom (RatFunc ℚ) (scaleTypeHom δ)).comp\n    (AddMonoidAlgebra.mapRingHom FactorType (adamsRat δ))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1145",
       "theorem_name": "SurfaceBlowupV2.RecipCoef",
       "kind": "definition",
       "theorem_id": "3b42ea2d-4800-4d8c-aa95-00cc4e99f8af",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3b42ea2d-4800-4d8c-aa95-00cc4e99f8af",
       "blueprint_source": "RECIPROCITY_round1.md §1 (the algebra 𝒞) — restructured for Lean"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.field_invariant_unramified_tower",
     "role": "invariants over K_δ vs K",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Unramified/DescentTypes.lean",
     "line_start": 50,
     "line_end": 100,
     "decl_line": 52,
     "docstring": "In an unramified tower `O → Oδ` of degree `δ`, the invariant `(e, f)` of a finite extension\n`L` over `Oδ` becomes `(e, δ f)` over `O`.",
     "statement": "theorem field_invariant_unramified_tower (O Oδ : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [CommRing Oδ] [IsDomain Oδ] [IsDiscreteValuationRing Oδ]\n    [Algebra O Oδ] [Module.Finite O Oδ] [Module.Free O Oδ] (δ : ℕ) (hrank : Module.finrank O Oδ = δ)\n    (pi : O) (hpi : Irreducible pi) (hpiδ : Irreducible (algebraMap O Oδ pi))\n    [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)] (L : Type)\n    [Field L] [Algebra O L] [Algebra Oδ L] [IsScalarTower O Oδ L] [Algebra (BaseField O) L]\n    [IsScalarTower O (BaseField O) L] [FiniteDimensional (BaseField O) L] [Algebra (BaseField Oδ) L]\n    [IsScalarTower Oδ (BaseField Oδ) L] [FiniteDimensional (BaseField Oδ) L]\n    (hfinδ : Module.Finite Oδ (integralClosure Oδ L)) :\n    fieldInvariant O L = ((fieldInvariant Oδ L).1, δ * (fieldInvariant Oδ L).2)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N541",
       "theorem_name": "SurfaceBlowupV2.field_invariant_unramified_tower",
       "kind": "theorem",
       "theorem_id": "757337f2-cf52-46de-bb81-dbb15d5fb6d3",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/757337f2-cf52-46de-bb81-dbb15d5fb6d3",
       "blueprint_source": "§5 (finite étale generic algebra) and §8 (type of a curve, (8.1)); restructured — algebra-level type predicate"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.algebra_type_unramified_descent",
     "role": "types descend by scaleType δ",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Unramified/DescentTypes.lean",
     "line_start": 102,
     "line_end": 119,
     "decl_line": 103,
     "docstring": "Algebra types descend along an unramified extension `O → Oδ` of degree `δ`, scaled by `δ`.",
     "statement": "theorem algebra_type_unramified_descent (O Oδ : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [CommRing Oδ] [IsDomain Oδ] [IsDiscreteValuationRing Oδ]\n    [Algebra O Oδ] [Module.Finite O Oδ] [Module.Free O Oδ] (δ : ℕ) (hrank : Module.finrank O Oδ = δ)\n    (pi : O) (hpi : Irreducible pi) (hpiδ : Irreducible (algebraMap O Oδ pi))\n    [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)] (B : Type)\n    [CommRing B] [Algebra O B] [Algebra Oδ B] [IsScalarTower O Oδ B] (σ : FactorType)\n    (h : HasAlgebraType Oδ B σ) :\n    HasAlgebraType O B (scaleType δ σ)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N543",
       "theorem_name": "SurfaceBlowupV2.algebra_type_unramified_descent",
       "kind": "theorem",
       "theorem_id": "f0450ee6-0537-489b-947d-44d044d528b6",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/f0450ee6-0537-489b-947d-44d044d528b6",
       "blueprint_source": "§5 (finite étale generic algebra) and §8 (type of a curve, (8.1)); restructured — algebra-level type predicate"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-6.5",
   "kind": "display",
   "relation": "exact",
   "confidence": "high",
   "summary": "children_degree_identity: Σ δ_P · N(child_P) = N(parent) for every allowed pattern.",
   "label": "(6.5)",
   "title": "transitions preserve degree",
   "anchor": {
    "eq": "6.5"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.children_degree_identity",
     "role": "degree identity",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Formula/LawAlgebra.lean",
     "line_start": 177,
     "line_end": 219,
     "decl_line": 179,
     "docstring": "Degree identity for one blowup step: for an allowed pattern, `∑ e · deg(child) = deg(s)`\nover the children `(e, child)`.",
     "statement": "theorem children_degree_identity (s : State) (hs : s.Valid) (P : TangentPattern s.degree)\n    (hP : Allowed s P) :\n    ((children s P).map fun z ↦ z.1 * z.2.degree).sum = s.degree",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N048",
       "theorem_name": "SurfaceBlowupV2.children_degree_identity",
       "kind": "theorem",
       "theorem_id": "e411b62a-1337-4c63-b561-f70bb9e2a353",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/e411b62a-1337-4c63-b561-f70bb9e2a353",
       "blueprint_source": "(8.2)"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-6.6",
   "kind": "display",
   "relation": "definition",
   "confidence": "high",
   "summary": "exitLaw s is the sum over allowed tangent patterns except the self pattern; S(a;c) (c ≥ 2) has exactly one self pattern, of total count q (self_patterns_of_single_state, exists_unique_selfPattern_single), and its weight q·q^{-tri c} is returnWeight c.",
   "label": "(6.6)",
   "title": "exit contribution Γ_{a;c}",
   "anchor": {
    "eq": "6.6"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.exitLaw",
     "role": "Γ (non-self part of the recursion)",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Formula/StateCombinatorics.lean",
     "line_start": 340,
     "line_end": 347,
     "decl_line": 343,
     "docstring": "The non-self part of the recursion of a state `s`: over the allowed tangent patterns `P` that\nare not self patterns, the weight `tangentCount · divisorProbability` times the product of the\ndescended laws of the children of `P`.",
     "statement": "noncomputable def exitLaw (s : State) : Law :=\n  (allowedPatterns s).toList.flatMap fun P ↦\n    if SelfPattern s P then [] else\n      lawScale (.mul (tangentCount s P) (divisorProbability s P.d.val))\n        (lawProd ((children s P).map fun z ↦ lawDescend z.1 (stateLaw z.2)))",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.self_patterns_of_single_state",
     "role": "the unique self-return, total count q",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Formula/StateCombinatorics.lean",
     "line_start": 178,
     "line_end": 191,
     "decl_line": 181,
     "docstring": "A single-branch state `S(a; c)` with `c ≥ 2` has exactly one self pattern (of\nmultiplicity `d = c`, with the state itself as only child), whose tangent count at `q` is\n`q`.",
     "statement": "theorem self_patterns_of_single_state (a c q : ℕ) (ha : 0 < a) (hc : 2 ≤ c) :\n    (∀ P : TangentPattern (State.single a c).degree, Allowed (State.single a c) P →\n        SelfPattern (State.single a c) P →\n          P.d.val = c ∧ children (State.single a c) P = [(1, State.single a c)]) ∧\n      (((allowedPatterns (State.single a c)).toList.filter (SelfPattern (State.single a c))).map\n        fun P ↦ (tangentCount (State.single a c) P).eval q).sum = q",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N552",
       "theorem_name": "SurfaceBlowupV2.self_patterns_of_single_state",
       "kind": "theorem",
       "theorem_id": "c89f3554-9bcd-45f2-a726-0ccb5657e681",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/c89f3554-9bcd-45f2-a726-0ccb5657e681",
       "blueprint_source": "(8.5)–(8.7) and the law algebra of N004/N007; restructured — coefficient identities behind the measured recursion"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.exists_unique_selfPattern_single",
     "role": "uniqueness",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Plethysm.lean",
     "line_start": 590,
     "line_end": 642,
     "decl_line": 591,
     "docstring": "For `n ≥ 2`, `S(a;n)` has exactly one allowed self pattern.",
     "statement": "theorem exists_unique_selfPattern_single (a n : ℕ) (ha : 0 < a) (hn : 2 ≤ n) :\n    ∃ P₀ : TangentPattern (State.single a n).degree, Allowed (State.single a n) P₀ ∧\n        SelfPattern (State.single a n) P₀ ∧ ∀ Q : TangentPattern (State.single a n).degree,\n        Allowed (State.single a n) Q → SelfPattern (State.single a n) Q → Q = P₀",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.returnWeight",
     "role": "λ_c = q·q^{-tri c}",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 284,
     "line_end": 285,
     "decl_line": 285,
     "docstring": "The self-return weight `q · q^{-tri c}` of `S(a;c)`.",
     "statement": "def returnWeight (c : ℕ) : Expr := .mul .var (.inv (.pow .var (tri c)))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N006",
       "theorem_name": "SurfaceBlowupV2.Weights",
       "kind": "definition",
       "theorem_id": "7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "blueprint_source": "(3.6), (7.3)–(7.7), (8.3), (9.3)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.nonself_child_rank_lt",
     "role": "all other children are earlier",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Formula/StateCombinatorics.lean",
     "line_start": 254,
     "line_end": 293,
     "decl_line": 255,
     "docstring": "Every child of a non-self allowed pattern has strictly smaller rank than its parent.",
     "statement": "theorem nonself_child_rank_lt (s : State) (hs : s.Valid) (P : TangentPattern s.degree)\n    (hP : Allowed s P) (hself : ¬ SelfPattern s P) (z : ℕ × State) (hz : z ∈ children s P) :\n    z.2.rank < s.rank",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N053",
       "theorem_name": "SurfaceBlowupV2.nonself_child_rank_lt",
       "kind": "theorem",
       "theorem_id": "3cc054a5-af1f-41bd-9350-18930d6e9727",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3cc054a5-af1f-41bd-9350-18930d6e9727",
       "blueprint_source": "§8.1 — finite computation order"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-6.7",
   "kind": "display",
   "relation": "definition",
   "confidence": "high",
   "summary": "The crossing branch of stateLawFuel (the law of T(a,b;c,h) is its exit law; state_law_unfold).",
   "label": "(6.7)",
   "title": "the crossing formula",
   "anchor": {
    "eq": "6.7"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.stateLawFuel",
     "role": "the recursion (crossing branch)",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 327,
     "line_end": 340,
     "decl_line": 328,
     "docstring": "The measured recursion of §8 with explicit fuel.",
     "statement": "noncomputable def stateLawFuel : ℕ → State → Law\n  | 0, _ => []\n  | k+1, s =>\n    match s with\n    | .single a 1 => lawAtom a 1\n    | _ =>\n      let terms := (allowedPatterns s).toList.flatMap fun P =>\n        if SelfPattern s P then [] else\n          lawScale (.mul (tangentCount s P) (divisorProbability s P.d.val))\n            (lawProd ((children s P).map fun z => lawDescend z.1 (stateLawFuel k z.2)))\n      match s with\n      | .single _ c => lawScale (.inv (.sub (.const 1) (returnWeight c))) terms\n      | .crossing _ _ _ _ => terms",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N007",
       "theorem_name": "SurfaceBlowupV2.Recursion",
       "kind": "definition",
       "theorem_id": "2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "blueprint_source": "(8.4), (8.6)–(8.7), (9.6)–(9.7)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.state_law_unfold",
     "role": "F_T = exitLaw T",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Formula/StateCombinatorics.lean",
     "line_start": 366,
     "line_end": 382,
     "decl_line": 368,
     "docstring": "Unfolding of the state law: for a single state it is the exit law rescaled by\n`1 / (1 - returnWeight c)`, and for a crossing state it is the exit law itself.",
     "statement": "theorem state_law_unfold (s : State) (hs : s.Valid) (hnt : s.terminal = false) :\n    (∀ a c : ℕ, s = State.single a c → stateLaw s =\n      lawScale (.inv (.sub (.const 1) (returnWeight c))) (exitLaw s)) ∧\n      (∀ a b c h : ℕ, s = State.crossing a b c h → stateLaw s = exitLaw s)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N551",
       "theorem_name": "SurfaceBlowupV2.state_law_unfold",
       "kind": "theorem",
       "theorem_id": "f2913a62-cc20-40ec-a205-c02d0df860cc",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/f2913a62-cc20-40ec-a205-c02d0df860cc",
       "blueprint_source": "(8.5)–(8.7) and the law algebra of N004/N007; restructured — coefficient identities behind the measured recursion"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "thm-6.2",
   "kind": "theorem",
   "relation": "specialization",
   "confidence": "medium",
   "summary": "(i) stateLaw s is defined by the finite recursion and is safe at every q ≥ 2 (local_law_safe; regularity at prime powers of the global formula: global_formula_regular). (ii)–(iii) universal_law_statement: for every member i of every surface universe, the type events are measurable, μ(type σ) = F_s[σ](q) · μ(state), and the nonterminating set is null — the same stateLaw for all members, which is the universality. A concrete universe (all concrete surfaces, closed under children) exists (concrete_universe_exists). (iv) state_law_unfold is (6.8). Specialization: the members are the concrete surfaces rather than all surfaces realizing the state; homogeneity of weight N is not stated separately.",
   "label": "Theorem 6.2",
   "title": "universal local laws",
   "paper_line": 599,
   "anchor": {
    "statement": "thm-6.2"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.stateLaw",
     "role": "F_s",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 342,
     "line_end": 343,
     "decl_line": 343,
     "docstring": "The law of a state (fuel `rank + 1` suffices).",
     "statement": "noncomputable def stateLaw (s : State) : Law := stateLawFuel (s.rank+1) s",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N007",
       "theorem_name": "SurfaceBlowupV2.Recursion",
       "kind": "definition",
       "theorem_id": "2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "blueprint_source": "(8.4), (8.6)–(8.7), (9.6)–(9.7)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.universal_law_statement",
     "role": "(ii)–(iii) for every member of every surface universe",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/Events.lean",
     "line_start": 802,
     "line_end": 824,
     "decl_line": 803,
     "docstring": "The law statement holds for every member of a surface universe.",
     "statement": "theorem universal_law_statement (U : SurfaceUniverse) :\n    ∀ i : U.ι, U.LawStatement i",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N572",
       "theorem_name": "SurfaceBlowupV2.universal_law_statement",
       "kind": "theorem",
       "theorem_id": "87cd45af-ebee-4fbf-93e6-9c5cf0d895cb",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/87cd45af-ebee-4fbf-93e6-9c5cf0d895cb",
       "blueprint_source": "Theorem 8.1 and its proof, §8.2; restructured — measured recursion on the interface record"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.SurfaceUniverse.LawStatement",
     "role": "what (ii) asserts",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Recursion/Members.lean",
     "line_start": 424,
     "line_end": 432,
     "decl_line": 427,
     "docstring": "The inductive statement of Theorem 8.1 for one member: the terminating type events are\nmeasurable, the law coefficients are nonnegative and give the measures, the terminating set is\nmeasurable and the nonterminating set is null.",
     "statement": "def LawStatement (i : U.ι) : Prop :=\n  (∀ σ : FactorType, MeasurableSet (U.termTypeEvent i σ) ∧\n    0 ≤ (lawCoeff (stateLaw (U.M i).s) σ).eval ((U.M i).q : ℚ) ∧\n    (U.M i).μ (U.termTypeEvent i σ) =\n      densityValue (lawCoeff (stateLaw (U.M i).s) σ) (U.M i).q * (U.M i).μ (U.M i).stateSet) ∧\n  MeasurableSet (U.terminatingSet i) ∧ (U.M i).μ (U.nonterminatingSet i) = 0",
     "section_variables": "variable (U : SurfaceUniverse)",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.concrete_universe_exists",
     "role": "the concrete surface universe",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/RootCellLaw.lean",
     "line_start": 1339,
     "line_end": 1359,
     "decl_line": 1342,
     "docstring": "**A concrete universe exists**: choosing child data for every cell of every concrete member\nyields a surface universe indexed by concrete members that satisfies the termination\nhypotheses.",
     "statement": "theorem concrete_universe_exists : ConcreteUniverse",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1108",
       "theorem_name": "SurfaceBlowupV2.concrete_universe_exists",
       "kind": "theorem",
       "theorem_id": "f91bf013-d76f-4fbe-be8f-773abc36d2dc",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/f91bf013-d76f-4fbe-be8f-773abc36d2dc",
       "blueprint_source": "Theorem 8.1 (“for every surface realizing s”) with Theorem 6.1 and Propositions 5.1–5.2 on the concrete surfaces; the recursion record instantiated (cycle 8)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.state_law_unfold",
     "role": "(iv): F_{S(a;c)} = Γ/(1 − λ_c)",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Formula/StateCombinatorics.lean",
     "line_start": 366,
     "line_end": 382,
     "decl_line": 368,
     "docstring": "Unfolding of the state law: for a single state it is the exit law rescaled by\n`1 / (1 - returnWeight c)`, and for a crossing state it is the exit law itself.",
     "statement": "theorem state_law_unfold (s : State) (hs : s.Valid) (hnt : s.terminal = false) :\n    (∀ a c : ℕ, s = State.single a c → stateLaw s =\n      lawScale (.inv (.sub (.const 1) (returnWeight c))) (exitLaw s)) ∧\n      (∀ a b c h : ℕ, s = State.crossing a b c h → stateLaw s = exitLaw s)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N551",
       "theorem_name": "SurfaceBlowupV2.state_law_unfold",
       "kind": "theorem",
       "theorem_id": "f2913a62-cc20-40ec-a205-c02d0df860cc",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/f2913a62-cc20-40ec-a205-c02d0df860cc",
       "blueprint_source": "(8.5)–(8.7) and the law algebra of N004/N007; restructured — coefficient identities behind the measured recursion"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.local_law_safe",
     "role": "(i): no denominator vanishes",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Formula/StateCombinatorics.lean",
     "line_start": 499,
     "line_end": 537,
     "decl_line": 500,
     "docstring": "The local law of every valid state is safe.",
     "statement": "theorem local_law_safe (s : State) (hs : s.Valid) :\n    LawSafe (stateLaw s)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N056",
       "theorem_name": "SurfaceBlowupV2.local_law_safe",
       "kind": "theorem",
       "theorem_id": "7f085f6f-0635-42d9-8113-91eb8f9fd480",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/7f085f6f-0635-42d9-8113-91eb8f9fd480",
       "blueprint_source": "Theorem 8.1 — rationality/regularity clause"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.global_formula_regular",
     "role": "regular at prime powers",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Formula/StateCombinatorics.lean",
     "line_start": 575,
     "line_end": 581,
     "decl_line": 576,
     "docstring": "The global formula is regular at every prime power.",
     "statement": "theorem global_formula_regular (n : ℕ) (σ : FactorType) :\n    FormulaRegular n σ",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N060",
       "theorem_name": "SurfaceBlowupV2.global_formula_regular",
       "kind": "theorem",
       "theorem_id": "8bfbfcfe-0e52-4eb6-b9e0-12acde5a18db",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/8bfbfcfe-0e52-4eb6-b9e0-12acde5a18db",
       "blueprint_source": "Theorem 1.1 — regularity of the algorithm outputs"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "rem-6.3",
   "kind": "remark",
   "relation": "covered",
   "confidence": "medium",
   "summary": "The formal proof handles inseparability differently: the recursion uses types with finite integral closures (route F, which does allow inseparable terminal fields), and the published étale densities are recovered because the inseparable locus of monic polynomials is Haar-null (monic_inseparable_null, orig_monicDensity_eq, orig_projectiveDensity_eq). The itinerary argument of the remark is not formalized.",
   "label": "Remark 6.3",
   "title": "inseparable terminal fields",
   "paper_line": 626,
   "anchor": {
    "statement": "rem-6.3"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.monic_inseparable_null",
     "role": "inseparable locus is Haar-null",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/MemberCharts.lean",
     "line_start": 280,
     "line_end": 296,
     "decl_line": 282,
     "docstring": "The coefficients of inseparable monic polynomials form a null set for the coefficient measure.",
     "statement": "theorem monic_inseparable_null (htop : IsAdic (IsLocalRing.maximalIdeal O)) (n : ℕ) :\n    coefficientMeasure O n {a | ¬ (monicPolynomial O a).Separable} = 0",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]\nvariable [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n  [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O] [IsDiscreteValuationRing O]\n  [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.orig_monicDensity_eq",
     "role": "monic densities agree",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Assembly/NullBridges.lean",
     "line_start": 465,
     "line_end": 470,
     "decl_line": 467,
     "docstring": "The original monic density equals the separable-type monic density: the two events agree\noff the Haar-null inseparable locus.",
     "statement": "theorem orig_monicDensity_eq (htop : IsAdic (IsLocalRing.maximalIdeal O)) (n : ℕ) (σ : FactorType) :\n    monicDensity O n σ = monicDensityF O n σ",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]\nvariable [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n  [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O] [IsDiscreteValuationRing O]\n  [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.orig_projectiveDensity_eq",
     "role": "projective densities agree",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Assembly/NullBridges.lean",
     "line_start": 472,
     "line_end": 486,
     "decl_line": 474,
     "docstring": "The original projective density equals the route-F one: the two numerator events differ\nonly inside `{a_n = 0} ∪ {disc = 0}`, which is Haar-null.",
     "statement": "theorem orig_projectiveDensity_eq (htop : IsAdic (IsLocalRing.maximalIdeal O)) (n : ℕ)\n    (σ : FactorType) :\n    SurfaceBlowup.projectiveDensity O n σ = projectiveDensityF O n σ",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]\nvariable [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n  [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O] [IsDiscreteValuationRing O]\n  [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.HasPolynomialTypeF",
     "role": "route-F predicate",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 473,
     "line_end": 478,
     "decl_line": 474,
     "docstring": "`HasPolynomialType` together with finiteness of the integral closure in each root field.",
     "statement": "def HasPolynomialTypeF (F : Polynomial (BaseField O)) (σ : FactorType) : Prop :=\n  ∃ gs : List (Polynomial (BaseField O)),\n    (∀ g ∈ gs, g.Monic ∧ Irreducible g) ∧ gs.Pairwise (fun g h => g ≠ h) ∧\n    F=gs.prod ∧ σ=(gs.map (factorInvariant O) : Multiset (ℕ × ℕ)) ∧\n    ∀ g ∈ gs, Module.Finite O (integralClosure O (AdjoinRoot g))",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "proof-6.2",
   "kind": "proof",
   "relation": "covered",
   "confidence": "medium",
   "summary": "Strong induction on State.rank (universal_law_statement) through the crossing step (recursion_crossing_law) and the single-boundary step (recursion_single_law), which sums the returns: k returns then exit have mass λ^k Γ (exit_event_succ_mass, return_event_mass), never exiting is null (never_return_null), and the series is summed by geometric_exit_sum. Termination outside null events: nonterminating_subset_return_or_bad, bad_exit_null.",
   "label": "Proof of Theorem 6.2",
   "title": "induction, geometric series, termination",
   "anchor": {
    "proof": "Proof of Theorem 6.2"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.recursion_crossing_law",
     "role": "crossing step",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/Events.lean",
     "line_start": 666,
     "line_end": 685,
     "decl_line": 667,
     "docstring": "The law statement at a crossing state, assuming it for all states of smaller rank.",
     "statement": "theorem recursion_crossing_law (U : SurfaceUniverse) (i : U.ι) (a b c h : ℕ)\n    (hs : (U.M i).s = State.crossing a b c h)\n    (hIH : ∀ i' : U.ι, (U.M i').s.rank < (U.M i).s.rank → U.LawStatement i') :\n    U.LawStatement i",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.recursion_single_law",
     "role": "single-boundary step",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/Events.lean",
     "line_start": 738,
     "line_end": 800,
     "decl_line": 739,
     "docstring": "The law statement at a nonterminal single state, assuming it for all states of smaller rank.",
     "statement": "theorem recursion_single_law (U : SurfaceUniverse) (i : U.ι) (a c : ℕ) (hc : 2 ≤ c)\n    (hs : (U.M i).s = State.single a c)\n    (hIH : ∀ i' : U.ι, (U.M i').s.rank < (U.M i).s.rank → U.LawStatement i') :\n    U.LawStatement i",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.exit_event_succ_mass",
     "role": "j returns then exit",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/Events.lean",
     "line_start": 392,
     "line_end": 416,
     "decl_line": 394,
     "docstring": "If the immediate exit event at `single a c` has mass `G · vol`, then the exit event after\n`k` returns has mass `λᵏ · G · vol`, where `λ` is the return weight; it is measurable.",
     "statement": "theorem exit_event_succ_mass (U : SurfaceUniverse) (a c : ℕ) (ha : 0 < a) (hc : 2 ≤ c)\n    (σ : FactorType) (q₀ : ℕ) (G : ℚ)\n    (hexit : ∀ i : U.ι, (U.M i).s = State.single a c → (U.M i).q = q₀ → (U.M i).μ\n        (U.exitEvent σ 0 i) = ENNReal.ofReal (G : ℝ) * (U.M i).μ (U.M i).stateSet ∧ MeasurableSet\n        (U.exitEvent σ 0 i))\n    (k : ℕ) :\n    ∀ i : U.ι, (U.M i).s = State.single a c → (U.M i).q = q₀ →\n    (U.M i).μ (U.exitEvent σ k i) = ENNReal.ofReal ((((returnWeight c).eval (q₀ : ℚ)) ^ k * G : ℚ) :\n        ℝ) * (U.M i).μ (U.M i).stateSet ∧\n    MeasurableSet (U.exitEvent σ k i)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N566",
       "theorem_name": "SurfaceBlowupV2.exit_event_succ_mass",
       "kind": "theorem",
       "theorem_id": "672c5a4c-024a-4b1c-8502-60d7b977adf1",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/672c5a4c-024a-4b1c-8502-60d7b977adf1",
       "blueprint_source": "§8.2, proof of Theorem 8.1 (uniform induction over all surfaces realizing a state); restructured — measured recursion on the interface record"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.return_event_mass",
     "role": "return probability",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/Events.lean",
     "line_start": 687,
     "line_end": 713,
     "decl_line": 689,
     "docstring": "At `single a c`, the event of returning `k` times has mass `λᵏ · vol`, with `λ` the return\nweight, and is measurable.",
     "statement": "theorem return_event_mass (U : SurfaceUniverse) (a c : ℕ) (ha : 0 < a) (hc : 2 ≤ c) (k : ℕ) :\n    ∀ i : U.ι, (U.M i).s = State.single a c →\n    (U.M i).μ (U.returnEvent k i) = densityValue ((returnWeight c).pow k) (U.M i).q * (U.M i).μ\n        (U.M i).stateSet ∧\n    MeasurableSet (U.returnEvent k i)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N565",
       "theorem_name": "SurfaceBlowupV2.return_event_mass",
       "kind": "theorem",
       "theorem_id": "1dffe6b7-9982-4ccf-b485-6ba610bdee3d",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/1dffe6b7-9982-4ccf-b485-6ba610bdee3d",
       "blueprint_source": "§8.2, proof of Theorem 8.1 (uniform induction over all surfaces realizing a state); restructured — measured recursion on the interface record"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.never_return_null",
     "role": "never exiting is null",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/Events.lean",
     "line_start": 715,
     "line_end": 736,
     "decl_line": 716,
     "docstring": "At `single a c` the set of ideals that return infinitely often is measurable and null.",
     "statement": "theorem never_return_null (U : SurfaceUniverse) (a c : ℕ) (ha : 0 < a) (hc : 2 ≤ c) (i : U.ι)\n    (hs : (U.M i).s = State.single a c) :\n    (U.M i).μ (⋂ k, U.returnEvent k i) = 0 ∧ MeasurableSet (⋂ k, U.returnEvent k i)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N567",
       "theorem_name": "SurfaceBlowupV2.never_return_null",
       "kind": "theorem",
       "theorem_id": "d5e0038a-4e95-48bb-82fd-fe97eaebcd66",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/d5e0038a-4e95-48bb-82fd-fe97eaebcd66",
       "blueprint_source": "§8.2, proof of Theorem 8.1 (uniform induction over all surfaces realizing a state); restructured — measured recursion on the interface record"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.geometric_exit_sum",
     "role": "geometric series",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Formula/LawAlgebra.lean",
     "line_start": 857,
     "line_end": 862,
     "decl_line": 858,
     "docstring": "Geometric series with an exit weight: `∑ⱼ λʲ G = G / (1 - λ)` for `0 ≤ λ < 1`.",
     "statement": "theorem geometric_exit_sum (lam G : ℝ) (hlam : 0 ≤ lam) (hlam1 : lam < 1) :\n    HasSum (fun j : ℕ ↦ lam^j * G) (G / (1 - lam))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N028",
       "theorem_name": "SurfaceBlowupV2.geometric_exit_sum",
       "kind": "theorem",
       "theorem_id": "96731e52-a22b-49d7-8622-8fa6f966a043",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/96731e52-a22b-49d7-8622-8fa6f966a043",
       "blueprint_source": "Theorem 8.1 — summing exits"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.nonterminating_subset_return_or_bad",
     "role": "termination",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/Termination.lean",
     "line_start": 1145,
     "line_end": 1179,
     "decl_line": 1147,
     "docstring": "A nonterminating ideal either returns infinitely often or eventually exits through a bad\ncell; in a crossing state it exits through a bad cell at once.",
     "statement": "theorem nonterminating_subset_return_or_bad (U : SurfaceUniverse) (i : U.ι)\n    (hnt : (U.M i).s.terminal = false) :\n    (∀ a c : ℕ, (U.M i).s = State.single a c → U.nonterminatingSet i ⊆ (⋂ k, U.returnEvent k i) ∪ ⋃\n      k, U.badExitEvent k i) ∧ (∀ a b c h : ℕ, (U.M i).s = State.crossing a b c h →\n      U.nonterminatingSet i ⊆ U.badExitEvent 0 i)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N561",
       "theorem_name": "SurfaceBlowupV2.nonterminating_subset_return_or_bad",
       "kind": "theorem",
       "theorem_id": "f0cf0863-0afc-4286-b341-8517fc8471ad",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/f0cf0863-0afc-4286-b341-8517fc8471ad",
       "blueprint_source": "§8.2, proof of Theorem 8.1 (uniform induction over all surfaces realizing a state); restructured — measured recursion on the interface record"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.bad_exit_null",
     "role": "bad exits are null",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/Events.lean",
     "line_start": 485,
     "line_end": 541,
     "decl_line": 486,
     "docstring": "Bad exit events are null at a nonterminal state, assuming the law for smaller ranks.",
     "statement": "theorem bad_exit_null (U : SurfaceUniverse) (i : U.ι) (hnt : (U.M i).s.terminal = false)\n    (hIH : ∀ i' : U.ι, (U.M i').s.rank < (U.M i).s.rank → U.LawStatement i') (k : ℕ) :\n    ∀ i' : U.ι, (U.M i').s = (U.M i).s → (U.M i').μ (U.badExitEvent k i') = 0",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N568",
       "theorem_name": "SurfaceBlowupV2.bad_exit_null",
       "kind": "theorem",
       "theorem_id": "9edc516d-3056-4149-815f-c591a0317060",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/9edc516d-3056-4149-815f-c591a0317060",
       "blueprint_source": "§8.2, proof of Theorem 8.1 (uniform induction over all surfaces realizing a state); restructured — measured recursion on the interface record"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "ex-6.4",
   "kind": "example",
   "relation": "exact",
   "confidence": "medium",
   "summary": "(6.10) is the private regression lemma single_two_law, proved from the definitions for every vertical multiplicity a and every rational q > 1 (law of S(a;2): q/(q+1) Z_{2a,1} + (Z_{a,1}² + Z_{a,2})/(2(q+1))).",
   "label": "Example 6.4",
   "title": "solving the quadratic cluster",
   "paper_line": 628,
   "anchor": {
    "statement": "ex-6.4"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.Tests.single_two_law",
     "role": "(6.10) for every a (private)",
     "kind": "theorem",
     "private": true,
     "file": "Tests/Regression.lean",
     "line_start": 1018,
     "line_end": 1113,
     "decl_line": 1020,
     "docstring": "The tangent-point patterns of `S(a;2)`: a transverse tangent with a node, a double point, a\npoint of contact two (a self pattern) and a point of degree two.",
     "statement": "private theorem single_two_law (a : ℕ) (ha : 0 < a) (q : ℚ) (hq : 1 < q) (σ : FactorType) :\n    coeffAt q (stateLaw (.single a 2)) σ = (if σ = {(2*a,1)} then q/(q+1) else 0) +\n      (if σ = {(a,1),(a,1)} then 1/(2*(q+1)) else 0) +\n      (if σ = {(a,2)} then 1/(2*(q+1)) else 0)",
     "section_variables": "",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "disc-null",
   "kind": "definition",
   "relation": "covered",
   "confidence": "medium",
   "summary": "Zero sets of nonzero polynomials are null for product measures (mvPolynomial_zero_null); the inseparable monic locus is null (monic_inseparable_null); coordinate hyperplanes are null (coordinate_hyperplane_null, used for the projective model).",
   "label": "Discriminant locus is null",
   "title": "Haar-null exceptional sets",
   "anchor": {
    "para": "The global discriminant locus is Haar-null"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.mvPolynomial_zero_null",
     "role": "polynomial zero sets are null",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/AdicCylinders.lean",
     "line_start": 267,
     "line_end": 307,
     "decl_line": 269,
     "docstring": "The zero set of a nonzero multivariate polynomial over a domain is null for any finite\nproduct of copies of an atomless finite measure.",
     "statement": "theorem mvPolynomial_zero_null {R : Type} [CommRing R] [IsDomain R]\n    [TopologicalSpace R] [IsTopologicalRing R] [T2Space R] [SecondCountableTopology R]\n    [MeasurableSpace R] [BorelSpace R]\n    (ν : Measure R) [IsFiniteMeasure ν] [NullSingletonClass ν] :\n    ∀ (n : ℕ) (P : MvPolynomial (Fin n) R), P ≠ 0 →\n      Measure.pi (fun _ : Fin n => ν) {x | MvPolynomial.eval x P = 0} = 0",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.monic_inseparable_null",
     "role": "inseparable locus is null",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Measure/MemberCharts.lean",
     "line_start": 280,
     "line_end": 296,
     "decl_line": 282,
     "docstring": "The coefficients of inseparable monic polynomials form a null set for the coefficient measure.",
     "statement": "theorem monic_inseparable_null (htop : IsAdic (IsLocalRing.maximalIdeal O)) (n : ℕ) :\n    coefficientMeasure O n {a | ¬ (monicPolynomial O a).Separable} = 0",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O]\nvariable [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n  [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O] [IsDiscreteValuationRing O]\n  [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.coordinate_hyperplane_null",
     "role": "hyperplanes are null",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Formula/TypeTransport.lean",
     "line_start": 205,
     "line_end": 259,
     "decl_line": 207,
     "docstring": "A coordinate hyperplane `{b | b j = 0}` is measurable and null for the coefficient\nmeasure.",
     "statement": "theorem coordinate_hyperplane_null (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] [TopologicalSpace O] [IsTopologicalRing O]\n    [CompactSpace O] [T2Space O] [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]\n    (htop : IsAdic (IsLocalRing.maximalIdeal O)) (n : ℕ) (j : Fin n) :\n    MeasurableSet {b : Fin n → O | b j = 0} ∧\n      coefficientMeasure O n {b : Fin n → O | b j = 0} = 0",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N704",
       "theorem_name": "SurfaceBlowupV2.coordinate_hyperplane_null",
       "kind": "theorem",
       "theorem_id": "a220cfac-1d21-444a-b02c-82795d3e2deb",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/a220cfac-1d21-444a-b02c-82795d3e2deb",
       "blueprint_source": "restructured — Lemma 9.2 assembly (draft L92): generic transport of Borel sets and cell measures"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-7.1",
   "kind": "display",
   "relation": "exact",
   "confidence": "high",
   "summary": "root_cell_law: for every complete DVR O with finite residue field, every uniformizer π and r > 0, the set {z ∈ O^r : X^r + Σ π zᵢ Xⁱ has type σ} is measurable of measure F_{S(1;r)}[σ](q). The chart identification uses repeated_root_one_chart_atlas.",
   "label": "(7.1)",
   "title": "B_r is the coefficient law",
   "anchor": {
    "eq": "7.1"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.root_cell_law",
     "role": "the root cell law",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/RootCellLaw.lean",
     "line_start": 1361,
     "line_end": 1363,
     "decl_line": 1362,
     "docstring": "**The root cell law** holds unconditionally.",
     "statement": "theorem root_cell_law : RootCellLaw",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1109",
       "theorem_name": "SurfaceBlowupV2.root_cell_law",
       "kind": "theorem",
       "theorem_id": "38c7bdb6-1562-4e52-83b8-82c7e26fc1cc",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/38c7bdb6-1562-4e52-83b8-82c7e26fc1cc",
       "blueprint_source": "Lemma 9.1 (the repeated-root cell) on the concrete surface O[[x]] with Theorem 8.1; cycle 8"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.RootCellLaw",
     "role": "its statement",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Assembly/NullBridges.lean",
     "line_start": 339,
     "line_end": 352,
     "decl_line": 344,
     "docstring": "`RootCellLaw`: for every complete DVR `O` with finite residue field and a compact adic\nBorel structure, every uniformizer `pi`, every `r ≥ 1` and every type `σ`, the event\n`{z : Fin r → O | X^r + ∑ (pi z_i) X^i has type σ}` is measurable and has normalized\ncoefficient Haar mass `coeff_σ(stateLaw (S(1;r)))(q)`, `q = |k|`. It is the interface between the\nmeasured recursion (which proves it) and the polynomial/projective assembly (which consumes it).",
     "statement": "def RootCellLaw : Prop :=\n  ∀ (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n    [IsAdicComplete (maximalIdeal O) O] [Finite (ResidueField O)] [TopologicalSpace O]\n    [IsTopologicalRing O] [CompactSpace O] [T2Space O] [SecondCountableTopology O]\n    [MeasurableSpace O] [BorelSpace O],\n    IsAdic (maximalIdeal O) → ∀ (pi : O), Irreducible pi → ∀ (r : ℕ), 0 < r → ∀ (σ : FactorType),\n      MeasurableSet {z : Fin r → O | HasPolynomialTypeF O (monicPolynomial O (pi • z)) σ} ∧\n      coefficientMeasure O r {z : Fin r → O | HasPolynomialTypeF O (monicPolynomial O (pi • z)) σ} =\n        densityValue (lawCoeff (stateLaw (State.single 1 r)) σ) (Nat.card (ResidueField O))",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.repeated_root_one_chart_atlas",
     "role": "one-chart atlas of S(1;r) on O⟦x⟧",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/OrderDefect.lean",
     "line_start": 786,
     "line_end": 866,
     "decl_line": 789,
     "docstring": "The state `single 1 r` on the concrete surface `(1, 1, 0)` admits a one-chart ideal atlas,\nwith chart `x^r` and basis `(x^i)`, whose state measure is `q⁻ʳ` times the pushforward of the\ncoefficient measure under the coordinate ideal map.",
     "statement": "theorem repeated_root_one_chart_atlas (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] [TopologicalSpace O] [IsTopologicalRing O]\n    [CompactSpace O] [T2Space O] [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]\n    (pi : O) (hpi : Irreducible pi)\n    [IsDomain (ConcreteSurface O pi 1 1 0)] [IsRegularLocalRing (ConcreteSurface O pi 1 1 0)]\n    (S : SurfaceData O (ConcreteSurface O pi 1 1 0)) (hSpi : S.pi = pi)\n    (hSt : S.t = surfaceT O pi 1 1 0) (hSa : S.a = 1)\n    (hSb : S.b = 0) (r : ℕ) (hr : 0 < r) :\n    ∃ A : IdealAtlas O (ConcreteSurface O pi 1 1 0) S.pi (State.single 1 r).degree\n      (surfaceStateSet O (ConcreteSurface O pi 1 1 0) S (State.single 1 r)),\n    ∃ i₀ : A.ι, (∀ i, i = i₀) ∧\n    (A.chart i₀).f = (surfaceX O pi 1 1 0) ^ (State.single 1 r).degree ∧\n    (A.chart i₀).b = (fun i : Fin (State.single 1 r).degree ↦ (surfaceX O pi 1 1 0) ^ i.val) ∧\n    (letI : MeasurableSpace (Ideal (ConcreteSurface O pi 1 1 0)) :=\n      idealChartSigma O (ConcreteSurface O pi 1 1 0) S.pi\n    stateMeasure O (ConcreteSurface O pi 1 1 0) S.pi (State.single 1 r).degree\n      (Nat.card (IsLocalRing.ResidueField O)) A =\n    ((Nat.card (IsLocalRing.ResidueField O) : ℝ≥0∞)⁻¹ ^ (State.single 1 r).degree) •\n      (coefficientMeasure O (State.single 1 r).degree).map\n        (coordinateIdeal S.pi ((surfaceX O pi 1 1 0) ^ (State.single 1 r).degree)\n          (fun i : Fin (State.single 1 r).degree ↦ (surfaceX O pi 1 1 0) ^ i.val)))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1080",
       "theorem_name": "SurfaceBlowupV2.repeated_root_one_chart_atlas",
       "kind": "theorem",
       "theorem_id": "4566fef9-b7e0-430a-a7a2-5a3ae4c997c5",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/4566fef9-b7e0-430a-a7a2-5a3ae4c997c5",
       "blueprint_source": "Lemma 9.1 — “in the state S(1;r) the only residue ideal is (x^r); choose f = x^r and b_i = 1, x, …, x^(r−1)”; restructured (cycle 8)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.series_quotient_equiv_adjoinRoot",
     "role": "O[x]/(f) ≅ O⟦x⟧/(f)",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Recursion/OrderDefect.lean",
     "line_start": 663,
     "line_end": 733,
     "decl_line": 666,
     "docstring": "For monic `F` of degree `r > 0` whose lower coefficients lie in the maximal ideal, the\nquotient of the concrete surface `(1, 1, 0)` by `F(x)` is `O`-isomorphic to `AdjoinRoot F`,\ncompatibly with evaluation of polynomials at `x`.",
     "statement": "theorem series_quotient_equiv_adjoinRoot (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O] (pi : O)\n    (hpi : Irreducible pi) (F : Polynomial O) (hF : F.Monic) (r : ℕ) (hr : 0 < r)\n    (hdeg : F.natDegree = r) (hred : ∀ i : ℕ, i < r → F.coeff i ∈ IsLocalRing.maximalIdeal O) :\n    ∃ e : (ConcreteSurface O pi 1 1 0 ⧸\n        Ideal.span {Polynomial.aeval (surfaceX O pi 1 1 0) F}) ≃ₐ[O] AdjoinRoot F,\n      ∀ P : Polynomial O, e (Ideal.Quotient.mk\n        (Ideal.span {Polynomial.aeval (surfaceX O pi 1 1 0) F})\n        (Polynomial.aeval (surfaceX O pi 1 1 0) P)) = AdjoinRoot.mk F P",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N576",
       "theorem_name": "SurfaceBlowupV2.series_quotient_equiv_adjoinRoot",
       "kind": "theorem",
       "theorem_id": "3022311b-e1e2-4d4b-8484-a6bb27f05048",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3022311b-e1e2-4d4b-8484-a6bb27f05048",
       "blueprint_source": "Lemma 9.1 (the repeated-root cell), §9; restructured — the polynomial chart of O[[x]]"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "lem-7.1",
   "kind": "lemma",
   "relation": "covered",
   "confidence": "high",
   "summary": "Residue-cell partitions (monic_cells_partition, projective_cells_partition) with masses q^{-n} and [n+1]_q^{-1} (residue_cell_mass, projective_cell_conditional_density); Hensel products of coprime cells are measure preserving (factor_cells_measure_preserving, form_cells_measure_preserving); a degree-δ block descends through O_δ by Frobenius (block_descent_bijection) with types scaled by δ (descended_polynomial_type); the resulting cell laws (monic_cell_law).",
   "label": "Lemma 7.1",
   "title": "Hensel assembly with measure",
   "paper_line": 655,
   "anchor": {
    "statement": "lem-7.1"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.monic_cells_partition",
     "role": "monic residue cells",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Assembly/MonicCells.lean",
     "line_start": 71,
     "line_end": 149,
     "decl_line": 75,
     "docstring": "**Monic cell partition.** The monic polynomials of degree `n` over `O` are partitioned into the\nresidue cells of the affine divisors of degree `n` over the residue field: there are finitely many\nsuch divisors, every coefficient vector lies in exactly one cell, each cell is measurable of mass\n`q⁻ⁿ`, and the coefficient measure decomposes as a sum over cells.",
     "statement": "theorem monic_cells_partition (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n    [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]\n    [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n    [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]\n    (htop : IsAdic (IsLocalRing.maximalIdeal O)) (n : ℕ) :\n    (∃ S : Finset (ExceptionalDivisor (IsLocalRing.ResidueField O)), ∀ D, D ∈ S ↔ AffineDivisor\n      (IsLocalRing.ResidueField O) n D) ∧ (∀ a : Fin n → O, ∃! D : ExceptionalDivisor\n      (IsLocalRing.ResidueField O), AffineDivisor (IsLocalRing.ResidueField O) n D ∧ a ∈\n      residueCell O n (divisorAffinePolynomial (IsLocalRing.ResidueField O) D)) ∧\n      (∀ D : ExceptionalDivisor (IsLocalRing.ResidueField O), AffineDivisor\n      (IsLocalRing.ResidueField O) n D → MeasurableSet (residueCell O n\n      (divisorAffinePolynomial (IsLocalRing.ResidueField O) D)) ∧ coefficientMeasure O n\n      (residueCell O n (divisorAffinePolynomial (IsLocalRing.ResidueField O) D)) =\n      (Nat.card (IsLocalRing.ResidueField O) : ℝ≥0∞)⁻¹ ^ n ∧ ∀ E : Set (Fin n → O),\n      coefficientMeasure O n (E ∩ residueCell O n\n      (divisorAffinePolynomial (IsLocalRing.ResidueField O) D)) =\n      (Nat.card (IsLocalRing.ResidueField O) : ℝ≥0∞)⁻¹ ^ n * cellMeasure O n\n      (residueCell O n (divisorAffinePolynomial (IsLocalRing.ResidueField O) D)) E) ∧ ∀ S : Finset\n      (ExceptionalDivisor (IsLocalRing.ResidueField O)),\n      (∀ D, D ∈ S ↔ AffineDivisor (IsLocalRing.ResidueField O) n D) → ∀ E : Set (Fin n → O),\n      MeasurableSet E → coefficientMeasure O n E = ∑ D ∈ S, coefficientMeasure O n\n      (E ∩ residueCell O n (divisorAffinePolynomial (IsLocalRing.ResidueField O) D))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N739",
       "theorem_name": "SurfaceBlowupV2.monic_cells_partition",
       "kind": "theorem",
       "theorem_id": "8ee864e0-5e6c-4ccd-80e5-42e3b0f55905",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/8ee864e0-5e6c-4ccd-80e5-42e3b0f55905",
       "blueprint_source": "restructured — Lemma 9.2 assembly (draft L92): the monic half of Theorem 1.1, (9.5)–(9.6)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.projective_cells_partition",
     "role": "projective cells",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Assembly/MonicCells.lean",
     "line_start": 476,
     "line_end": 549,
     "decl_line": 479,
     "docstring": "**Projective cell partition.** The primitive coefficient vectors of length `n + 1` are\npartitioned into the projective cells of the divisors of degree `n`, each measurable with an\nexplicit mass, and the coefficient measure decomposes as a sum over cells.",
     "statement": "theorem projective_cells_partition (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n    [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]\n    [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n    [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]\n    (htop : IsAdic (IsLocalRing.maximalIdeal O)) (n : ℕ) :\n    (∃ S : Finset (ExceptionalDivisor (IsLocalRing.ResidueField O)), ∀ D, D ∈ S ↔ exceptionalDegree\n      (IsLocalRing.ResidueField O) D = n) ∧ (∀ a : Fin (n+1) → O, primitive O a → ∃! D :\n      ExceptionalDivisor (IsLocalRing.ResidueField O), exceptionalDegree\n      (IsLocalRing.ResidueField O) D = n ∧ a ∈ projectiveCell O n\n      (divisorVector (IsLocalRing.ResidueField O) n D)) ∧\n      (∀ D : ExceptionalDivisor (IsLocalRing.ResidueField O), exceptionalDegree\n      (IsLocalRing.ResidueField O) D = n → MeasurableSet\n      (projectiveCell O n (divisorVector (IsLocalRing.ResidueField O) n D)) ∧ coefficientMeasure O\n      (n+1) (projectiveCell O n (divisorVector (IsLocalRing.ResidueField O) n D)) =\n      ((Nat.card (IsLocalRing.ResidueField O) : ℝ≥0∞) - 1) *\n      (Nat.card (IsLocalRing.ResidueField O) : ℝ≥0∞)⁻¹ ^ (n+1) ∧ ∀ E : Set (Fin (n+1) → O),\n      coefficientMeasure O (n+1) (E ∩ projectiveCell O n\n      (divisorVector (IsLocalRing.ResidueField O) n D)) = coefficientMeasure O (n+1)\n      (projectiveCell O n (divisorVector (IsLocalRing.ResidueField O) n D)) * cellMeasure O (n+1)\n      (projectiveCell O n (divisorVector (IsLocalRing.ResidueField O) n D)) E) ∧ ∀ S : Finset\n      (ExceptionalDivisor (IsLocalRing.ResidueField O)),\n      (∀ D, D ∈ S ↔ exceptionalDegree (IsLocalRing.ResidueField O) D = n) → ∀ E : Set\n      (Fin (n+1) → O), MeasurableSet E → coefficientMeasure O (n+1)\n      (E ∩ {a : Fin (n+1) → O | primitive O a}) = ∑ D ∈ S, coefficientMeasure O (n+1)\n      (E ∩ projectiveCell O n (divisorVector (IsLocalRing.ResidueField O) n D))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N744",
       "theorem_name": "SurfaceBlowupV2.projective_cells_partition",
       "kind": "theorem",
       "theorem_id": "ac63b049-70ef-4ea6-b0cd-055743f98396",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/ac63b049-70ef-4ea6-b0cd-055743f98396",
       "blueprint_source": "restructured — Lemma 9.2 assembly (draft L92): the projective half, (9.3) and (9.7)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.residue_cell_mass",
     "role": "mass q^{-n}",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Unramified/PolynomialTypes.lean",
     "line_start": 837,
     "line_end": 878,
     "decl_line": 839,
     "docstring": "A nonempty residue cell is measurable of mass `q^(-n)`, and its normalized cell measure is a\nprobability measure.",
     "statement": "theorem residue_cell_mass (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n    [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]\n    [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n    [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]\n    (htop : IsAdic (IsLocalRing.maximalIdeal O)) (n : ℕ)\n    (G : Polynomial (IsLocalRing.ResidueField O)) (hG : G.Monic) (hGn : G.natDegree = n) :\n    MeasurableSet (residueCell O n G) ∧ coefficientMeasure O n (residueCell O n G) =\n      (Nat.card (IsLocalRing.ResidueField O) : ℝ≥0∞)⁻¹ ^ n ∧ MeasureTheory.IsProbabilityMeasure\n      (cellMeasure O n (residueCell O n G))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N609",
       "theorem_name": "SurfaceBlowupV2.residue_cell_mass",
       "kind": "theorem",
       "theorem_id": "ba9751ab-ee3e-462e-bc12-e06d1eecdbff",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/ba9751ab-ee3e-462e-bc12-e06d1eecdbff",
       "blueprint_source": "restructured — G7, coprime factor cells for Lemma 9.2 (9.4), monic case"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.projective_cell_conditional_density",
     "role": "mass [n+1]_q^{-1}",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Unramified/FrobeniusDescent.lean",
     "line_start": 111,
     "line_end": 161,
     "decl_line": 113,
     "docstring": "The conditional density of a projective cell inside the primitive locus is the value of\n`1 / projectiveNormalizer n` at `q`.",
     "statement": "theorem projective_cell_conditional_density (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] [TopologicalSpace O] [IsTopologicalRing O]\n    [CompactSpace O] [T2Space O] [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]\n    (htop : IsAdic (IsLocalRing.maximalIdeal O)) (n : ℕ)\n    (v : Fin (n + 1) → IsLocalRing.ResidueField O) (hv : v ≠ 0) :\n    coefficientMeasure O (n+1) (projectiveCell O n v) /\n        coefficientMeasure O (n+1) {a : Fin (n+1) → O | primitive O a} =\n      densityValue (Expr.inv (projectiveNormalizer n)) (Nat.card (IsLocalRing.ResidueField O))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N632",
       "theorem_name": "SurfaceBlowupV2.projective_cell_conditional_density",
       "kind": "theorem",
       "theorem_id": "e4628c5b-dfbd-428e-9506-96c2f3b74abf",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/e4628c5b-dfbd-428e-9506-96c2f3b74abf",
       "blueprint_source": "restructured — G7, projective cell mass (9.3) and block uniformity for Lemma 9.2"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.factor_cells_measure_preserving",
     "role": "Hensel bijection preserves measure",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Unramified/HomogeneousCells.lean",
     "line_start": 96,
     "line_end": 167,
     "decl_line": 98,
     "docstring": "Multiplying monic lifts of pairwise coprime monic residue polynomials `g i` pushes the product\nof the normalized cell measures forward to the normalized cell measure of `∏ i, g i`.",
     "statement": "theorem factor_cells_measure_preserving (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] [TopologicalSpace O] [IsTopologicalRing O]\n    [CompactSpace O] [T2Space O] [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]\n    (htop : IsAdic (IsLocalRing.maximalIdeal O)) (ι : Type) [Fintype ι]\n    (g : ι → Polynomial (IsLocalRing.ResidueField O)) (hg : ∀ i, (g i).Monic)\n    (hc : ∀ i j, i ≠ j → IsCoprime (g i) (g j))\n    [hσ : ∀ i, MeasureTheory.SigmaFinite\n      (cellMeasure O (g i).natDegree (residueCell O (g i).natDegree (g i)))] :\n    MeasureTheory.MeasurePreserving (factorProduct (fun i => (g i).natDegree))\n      (MeasureTheory.Measure.pi\n        (fun i => cellMeasure O (g i).natDegree (residueCell O (g i).natDegree (g i))))\n      (cellMeasure O (∑ i, (g i).natDegree)\n        (residueCell O (∑ i, (g i).natDegree) (∏ i, g i)))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N614",
       "theorem_name": "SurfaceBlowupV2.factor_cells_measure_preserving",
       "kind": "theorem",
       "theorem_id": "4ede8b5a-df95-46d3-b100-c481d9dd8b65",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/4ede8b5a-df95-46d3-b100-c481d9dd8b65",
       "blueprint_source": "restructured — G7, coprime factor cells for Lemma 9.2 (9.4), monic case"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.form_cells_measure_preserving",
     "role": "homogeneous version",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Unramified/HomogeneousCells.lean",
     "line_start": 379,
     "line_end": 426,
     "decl_line": 382,
     "docstring": "The homogeneous analogue of `factor_cells_measure_preserving`: the reduced form product map\npushes the product of the normalized reduced form cell measures forward to the normalized reduced\nform cell measure of the product form.",
     "statement": "theorem form_cells_measure_preserving (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] [TopologicalSpace O] [IsTopologicalRing O]\n    [CompactSpace O] [T2Space O] [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]\n    (htop : IsAdic (IsLocalRing.maximalIdeal O)) (ι : Type) [Fintype ι] (d : ι → ℕ)\n    (ν : ∀ i, Fin (d i + 1)) (g : ∀ i, Fin (d i + 1) → IsLocalRing.ResidueField O)\n    (hgν : ∀ i, g i (ν i) = 1) (hc : FormsCoprime d g) (μ : Fin ((∑ i, d i) + 1))\n    (hμ : formProd d g μ = 1)\n    [hσ : ∀ i, MeasureTheory.SigmaFinite\n      (cellMeasure O (d i) (reducedFormCell O (d i) (ν i) (g i)))] :\n    MeasureTheory.MeasurePreserving (reducedFormProduct O d ν g μ)\n      (MeasureTheory.Measure.pi\n        (fun i => cellMeasure O (d i) (reducedFormCell O (d i) (ν i) (g i))))\n      (cellMeasure O (∑ i, d i) (reducedFormCell O (∑ i, d i) μ (formProd d g)))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N946",
       "theorem_name": "SurfaceBlowupV2.form_cells_measure_preserving",
       "kind": "theorem",
       "theorem_id": "88ae9397-59e8-4d5d-a973-655619861b3d",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/88ae9397-59e8-4d5d-a973-655619861b3d",
       "blueprint_source": "restructured — G7, homogeneous coprime factorization cells for Lemma 9.2 ((9.4), homogeneous case)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.block_descent_bijection",
     "role": "Frobenius block descent",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Unramified/FrobeniusDescent.lean",
     "line_start": 1061,
     "line_end": 1125,
     "decl_line": 1064,
     "docstring": "Frobenius descent: `selectBlock` is a bijection from the residue cell of `residuePoly Φ ^ r`\nover `O` onto the block cell over `O[X]/(Φ)`, with inverse `descendBlock`; the selected monic\npolynomial divides the lift of `monicPolyO a`.",
     "statement": "theorem block_descent_bijection (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] (Φ : Polynomial O) (hΦ : IsUnramifiedLift O Φ)\n    (r : ℕ) :\n    Set.BijOn (selectBlock O Φ r) (residueCell O (Φ.natDegree * r) (residuePoly O Φ ^ r))\n      (blockCell O Φ r) ∧\n    (∀ a ∈ residueCell O (Φ.natDegree * r) (residuePoly O Φ ^ r),\n      descendBlock O Φ r (selectBlock O Φ r a) = a) ∧\n    (∀ b ∈ blockCell O Φ r, selectBlock O Φ r (descendBlock O Φ r b) = b) ∧\n    (∀ a ∈ residueCell O (Φ.natDegree * r) (residuePoly O Φ ^ r),\n      (monicPolyO (selectBlock O Φ r a)).Monic ∧\n        monicPolyO (selectBlock O Φ r a) ∣ (monicPolyO a).map (AdjoinRoot.of Φ))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N622",
       "theorem_name": "SurfaceBlowupV2.block_descent_bijection",
       "kind": "theorem",
       "theorem_id": "2bd9162f-1a1b-44be-a4fd-7902a65407de",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2bd9162f-1a1b-44be-a4fd-7902a65407de",
       "blueprint_source": "restructured — G7, Frobenius block descent for Lemma 9.2"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.descended_polynomial_type",
     "role": "types scale by δ",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Unramified/DescentTypes.lean",
     "line_start": 311,
     "line_end": 364,
     "decl_line": 314,
     "docstring": "Descent of polynomial types: if `F` over `Oδ` has type `σ` with pairwise coprime Frobenius\nconjugates, and `G ∈ O[X]` maps to the conjugate product of `F`, then `G` has type\n`scaleType δ σ` over `O`, where `δ = deg Φ`.",
     "statement": "theorem descended_polynomial_type (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n    [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]\n    (Φ : Polynomial O) (hΦ : IsUnramifiedLift O Φ) [IsDomain (AdjoinRoot Φ)]\n    (F : Polynomial (AdjoinRoot Φ)) (σ : FactorType)\n    (hσ : HasPolynomialTypeF (AdjoinRoot Φ)\n      (F.map (algebraMap (AdjoinRoot Φ) (BaseField (AdjoinRoot Φ)))) σ)\n    (hcop : ∀ i j : Fin Φ.natDegree, i ≠ j → IsCoprime\n      ((fun i : Fin Φ.natDegree ↦ (F.map (frobeniusIter O Φ i).toRingHom).map\n        (algebraMap (AdjoinRoot Φ) (BaseField (AdjoinRoot Φ)))) i)\n      ((fun i : Fin Φ.natDegree ↦ (F.map (frobeniusIter O Φ i).toRingHom).map\n        (algebraMap (AdjoinRoot Φ) (BaseField (AdjoinRoot Φ)))) j)) (G : Polynomial O)\n    (hG : G.map (algebraMap O (AdjoinRoot Φ)) = conjugateProduct O Φ F) :\n    HasPolynomialTypeF O (G.map (algebraMap O (BaseField O))) (scaleType Φ.natDegree σ)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N936",
       "theorem_name": "SurfaceBlowupV2.descended_polynomial_type",
       "kind": "theorem",
       "theorem_id": "2203db24-5a6b-4d89-8198-cc9c567a2374",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2203db24-5a6b-4d89-8198-cc9c567a2374",
       "blueprint_source": "restructured — G7, the substitution T_δ of Lemma 9.2 (paper §9.1, last paragraph of the proof; (8.1))"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.monic_cell_law",
     "role": "law of a monic cell",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Assembly/MonicCells.lean",
     "line_start": 1151,
     "line_end": 1213,
     "decl_line": 1153,
     "docstring": "**Monic cell law.** Assuming the root cell law, the residue cell of an affine divisor with\narray `m` has law `arrayLaw m`.",
     "statement": "theorem monic_cell_law (hroot : RootCellLaw) (O : Type) [CommRing O] [IsDomain O]\n    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]\n    [Finite (IsLocalRing.ResidueField O)] [TopologicalSpace O] [IsTopologicalRing O]\n    [CompactSpace O] [T2Space O] [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]\n    (htop : IsAdic (IsLocalRing.maximalIdeal O)) (n : ℕ)\n    (D : ExceptionalDivisor (IsLocalRing.ResidueField O))\n    (hD : AffineDivisor (IsLocalRing.ResidueField O) n D) (m : Pattern n)\n    (hm : HasArray (IsLocalRing.ResidueField O) n D m) (σ : FactorType) :\n    MeasurableSet (residueCell O n (divisorAffinePolynomial (IsLocalRing.ResidueField O) D) ∩\n      typeEvent O n σ) ∧ cellMeasure O n (residueCell O n\n      (divisorAffinePolynomial (IsLocalRing.ResidueField O) D)) (typeEvent O n σ) = densityValue\n      (lawCoeff (arrayLaw m) σ) (Nat.card (IsLocalRing.ResidueField O))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N733",
       "theorem_name": "SurfaceBlowupV2.monic_cell_law",
       "kind": "theorem",
       "theorem_id": "529076a0-34d3-44d4-9bc8-dc84a7bde559",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/529076a0-34d3-44d4-9bc8-dc84a7bde559",
       "blueprint_source": "restructured — Lemma 9.2 assembly (draft L92): the cell of a residue divisor as a product of point cells"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.projectiveNormalizer",
     "role": "[n+1]_q",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 320,
     "line_end": 322,
     "decl_line": 321,
     "docstring": "`1 + q + ⋯ + q^n`.",
     "statement": "def projectiveNormalizer (n : ℕ) : Expr :=\n  Expr.sum ((List.range (n+1)).map fun i => .pow .var i)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N006",
       "theorem_name": "SurfaceBlowupV2.Weights",
       "kind": "definition",
       "theorem_id": "7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/7ddd1fa2-954b-468d-9f09-cf6cc6bd7820",
       "blueprint_source": "(3.6), (7.3)–(7.7), (8.3), (9.3)"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-7.3",
   "kind": "display",
   "relation": "exact",
   "confidence": "high",
   "summary": "(7.3) is the definition globalLaw (sum over residue patterns of descended root laws, normalized by q^{-n} or [n+1]_q^{-1}); monicDensityF_eq_densityValue / projectiveDensityF_eq_densityValue prove that it computes the densities, which with the Haar-null bridges gives main_dvr.",
   "label": "(7.3)",
   "title": "the assembly formulas",
   "anchor": {
    "eq": "7.3"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.globalLaw",
     "role": "(7.3) as a definition",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 352,
     "line_end": 358,
     "decl_line": 353,
     "docstring": "The global law: average over residue divisors of the products of descended child laws.",
     "statement": "noncomputable def globalLaw (projective : Bool) (n : ℕ) : Law :=\n  lawScale (.inv (if projective then projectiveNormalizer n else .pow .var n))\n    ((residuePatterns n).toList.flatMap fun m =>\n      lawScale (divisorCount (if projective then 1 else 0) m)\n        (lawProd ((otherChildren 1 m).map fun z =>\n          lawDescend z.1 (stateLaw z.2))))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N007",
       "theorem_name": "SurfaceBlowupV2.Recursion",
       "kind": "definition",
       "theorem_id": "2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "blueprint_source": "(8.4), (8.6)–(8.7), (9.6)–(9.7)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.residuePatterns",
     "role": "residue divisor patterns",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Basic.lean",
     "line_start": 348,
     "line_end": 350,
     "decl_line": 349,
     "docstring": "Residue patterns of total weight `n`.",
     "statement": "noncomputable def residuePatterns (n : ℕ) : Finset (Pattern n) :=\n  Finset.univ.filter fun m => patternWeight m=n",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N007",
       "theorem_name": "SurfaceBlowupV2.Recursion",
       "kind": "definition",
       "theorem_id": "2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2f6d13d1-8285-4676-be19-cc02cf7b8aec",
       "blueprint_source": "(8.4), (8.6)–(8.7), (9.6)–(9.7)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.monicDensityF_eq_densityValue",
     "role": "monic assembly theorem",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Assembly/Formulas.lean",
     "line_start": 48,
     "line_end": 122,
     "decl_line": 50,
     "docstring": "**Monic formula** for the route-F density: `monicDensityF O n σ = monicExpr n σ` evaluated at\n`q = |k|`.",
     "statement": "theorem monicDensityF_eq_densityValue (htop : IsAdic (IsLocalRing.maximalIdeal O)) (n : ℕ)\n    (σ : FactorType) :\n    monicDensityF O n σ = densityValue (monicExpr n σ) (Nat.card (IsLocalRing.ResidueField O))",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n  [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]\n  [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n  [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.projectiveDensityF_eq_densityValue",
     "role": "projective assembly theorem",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Assembly/Formulas.lean",
     "line_start": 124,
     "line_end": 137,
     "decl_line": 126,
     "docstring": "**Projective formula** for the route-F density: `projectiveDensityF O n σ = projectiveExpr n σ`\nat `q = |k|`.",
     "statement": "theorem projectiveDensityF_eq_densityValue (htop : IsAdic (IsLocalRing.maximalIdeal O)) (n : ℕ)\n    (σ : FactorType) :\n    projectiveDensityF O n σ =\n      densityValue (projectiveExpr n σ) (Nat.card (IsLocalRing.ResidueField O))",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n  [IsAdicComplete (IsLocalRing.maximalIdeal O) O] [Finite (IsLocalRing.ResidueField O)]\n  [TopologicalSpace O] [IsTopologicalRing O] [CompactSpace O] [T2Space O]\n  [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-7.4",
   "kind": "display",
   "relation": "covered",
   "confidence": "medium",
   "summary": "The exchange identity C_{a,b;c,h} = C_{b,a;h,c} is crossingQ_symm. The two scaling identities are not formalized: the formal reciprocity proof treats every vertical multiplicity a simultaneously and never needs to rescale.",
   "label": "(H) = (7.4)",
   "title": "homogeneity and exchange",
   "anchor": {
    "eq": "7.4"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.crossingQ_symm",
     "role": "exchange",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Patterns.lean",
     "line_start": 605,
     "line_end": 615,
     "decl_line": 606,
     "docstring": "The symmetry `U_{a,b}(c,h) = U_{b,a}(h,c)`.",
     "statement": "theorem crossingQ_symm (a b c h : ℕ) (ha : 0 < a) (hb : 0 < b) :\n    crossingQ a b c h = crossingQ b a h c",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1276",
       "theorem_name": "SurfaceBlowupV2.recip_crossing_exchange",
       "kind": "theorem",
       "theorem_id": "c5e8a8af-3535-4e91-bd6a-e4865ed72525",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/c5e8a8af-3535-4e91-bd6a-e4865ed72525",
       "blueprint_source": "RECIPROCITY_round1.md §2 Lemma 4 (exchange)"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-7.5",
   "kind": "display",
   "relation": "definition",
   "confidence": "high",
   "summary": "𝓑_a is clusterSer a; the crossing series is encoded as the contact series crossingQ a b = 1 + (q−1) Σ C_{a,b;c,h} 𝓔_{c,h}.",
   "label": "(7.5)",
   "title": "cluster and crossing series",
   "anchor": {
    "eq": "7.5"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.clusterSer",
     "role": "𝓑_a",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 179,
     "line_end": 181,
     "decl_line": 180,
     "docstring": "The cluster series B_a = 1 + Σ_{n ≥ 1} F_{S(a;n)} xⁿ of vertical multiplicity a.",
     "statement": "def clusterSer (a : ℕ) : Ser :=\n  PowerSeries.mk fun n ↦ if n = 0 then 1 else lawCoef (stateLaw (State.single a n))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1146",
       "theorem_name": "SurfaceBlowupV2.RecipSeries",
       "kind": "definition",
       "theorem_id": "6efa13fd-e001-41db-8491-7a2b1ea93319",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/6efa13fd-e001-41db-8491-7a2b1ea93319",
       "blueprint_source": "RECIPROCITY_round1.md §3 (10)–(12) — restructured for Lean"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.crossingQ",
     "role": "U_{a,b} (encodes 𝓣_{a,b})",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 216,
     "line_end": 220,
     "decl_line": 217,
     "docstring": "U_{a,b} = 1 + (q−1) Σ_{c,h ≥ 1} F_{T(a,b;c,h)} E_{c,h}; zero on the two axes.",
     "statement": "def crossingQ (a b : ℕ) : QSer := fun c h ↦\n  if c = 0 ∧ h = 0 then 1\n  else if 0 < c ∧ 0 < h then scalar (RatFunc.X - 1) * lawCoef (stateLaw (State.crossing a b c h))\n  else 0",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1147",
       "theorem_name": "SurfaceBlowupV2.RecipQuantum",
       "kind": "definition",
       "theorem_id": "768c5f79-0621-4933-9650-5a65e3157a53",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/768c5f79-0621-4933-9650-5a65e3157a53",
       "blueprint_source": "RECIPROCITY_round1.md §4 (15)–(19), §5 (25)–(26) — restructured for Lean"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.Ser",
     "role": "series over ℚ(q)[Z]",
     "kind": "abbrev",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 138,
     "line_end": 139,
     "decl_line": 139,
     "docstring": "Series in the cluster-degree variable x with coefficients in Coef.",
     "statement": "abbrev Ser := PowerSeries Coef",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1146",
       "theorem_name": "SurfaceBlowupV2.RecipSeries",
       "kind": "definition",
       "theorem_id": "6efa13fd-e001-41db-8491-7a2b1ea93319",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/6efa13fd-e001-41db-8491-7a2b1ea93319",
       "blueprint_source": "RECIPROCITY_round1.md §3 (10)–(12) — restructured for Lean"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-7.6",
   "kind": "display",
   "relation": "definition",
   "confidence": "high",
   "summary": "pExp, pLog with Möbius inversion (moebiusSum_plethSum, plethSum_moebiusSum) and exp/log inverse (expSer_logSer, logSer_expSer); commutation with reciprocal substitution and dilation (recipSer_pPow, dilate_pPow).",
   "label": "(7.6)",
   "title": "plethystic exponential and logarithm",
   "anchor": {
    "eq": "7.6"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.pExp",
     "role": "Exp",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 167,
     "line_end": 168,
     "decl_line": 168,
     "docstring": "Plethystic exponential Exp f = exp(Σ_k ψ_k(f)/k).",
     "statement": "def pExp (f : Ser) : Ser := expSer (plethSum f)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1146",
       "theorem_name": "SurfaceBlowupV2.RecipSeries",
       "kind": "definition",
       "theorem_id": "6efa13fd-e001-41db-8491-7a2b1ea93319",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/6efa13fd-e001-41db-8491-7a2b1ea93319",
       "blueprint_source": "RECIPROCITY_round1.md §3 (10)–(12) — restructured for Lean"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.pLog",
     "role": "Log",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 169,
     "line_end": 170,
     "decl_line": 170,
     "docstring": "Plethystic logarithm Log g = Σ_k μ(k) ψ_k(log g)/k.",
     "statement": "def pLog (g : Ser) : Ser := moebiusSum (logSer g)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1146",
       "theorem_name": "SurfaceBlowupV2.RecipSeries",
       "kind": "definition",
       "theorem_id": "6efa13fd-e001-41db-8491-7a2b1ea93319",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/6efa13fd-e001-41db-8491-7a2b1ea93319",
       "blueprint_source": "RECIPROCITY_round1.md §3 (10)–(12) — restructured for Lean"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.moebiusSum_plethSum",
     "role": "Möbius inversion",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Quantum.lean",
     "line_start": 361,
     "line_end": 364,
     "decl_line": 362,
     "docstring": "Möbius inversion: `moebiusSum (plethSum f) = f` for `f(0) = 0`.",
     "statement": "theorem moebiusSum_plethSum (f : Ser) (hf : PowerSeries.constantCoeff f = 0) :\n    moebiusSum (plethSum f) = f",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.expSer_logSer",
     "role": "exp ∘ log = id",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Plethysm.lean",
     "line_start": 145,
     "line_end": 151,
     "decl_line": 146,
     "docstring": "`exp ∘ log = id` on series with constant term `1`.",
     "statement": "theorem expSer_logSer (g : Ser) (hg : PowerSeries.constantCoeff g = 1) : expSer (logSer g) = g",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1180",
       "theorem_name": "SurfaceBlowupV2.recip_expSer_logSer",
       "kind": "theorem",
       "theorem_id": "8fc44423-159c-430d-8741-8ba31779d572",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/8fc44423-159c-430d-8741-8ba31779d572",
       "blueprint_source": "RECIPROCITY_round1.md §3 Lemma 5 (restructured as coefficient identities)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.logSer_expSer",
     "role": "log ∘ exp = id",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Plethysm.lean",
     "line_start": 153,
     "line_end": 161,
     "decl_line": 154,
     "docstring": "`log ∘ exp = id` on series with constant term `0`.",
     "statement": "theorem logSer_expSer (f : Ser) (hf : PowerSeries.constantCoeff f = 0) : logSer (expSer f) = f",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.recipSer_pPow",
     "role": "commutes with q ↦ 1/q",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Quantum.lean",
     "line_start": 803,
     "line_end": 824,
     "decl_line": 805,
     "docstring": "The reciprocal substitution commutes with the plethystic powers, twisting the exponent by\n`q ↦ q⁻¹`: `P_w(g)ᵛ = P_{v(w)}(gᵛ)` for `g(0) = 1`.",
     "statement": "theorem recipSer_pPow (w : RatFunc ℚ) (g : Ser) (hg : PowerSeries.constantCoeff g = 1) :\n    recipSer (pPow w g) = pPow (recipRat w) (recipSer g)",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.dilate_pPow",
     "role": "commutes with dilation",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Quantum.lean",
     "line_start": 675,
     "line_end": 679,
     "decl_line": 676,
     "docstring": "The dilation commutes with the plethystic powers `P_w` (for `g(0) = 1`).",
     "statement": "theorem dilate_pPow (w : RatFunc ℚ) (g : Ser) (hg : PowerSeries.constantCoeff g = 1) :\n    dilate (pPow w g) = pPow w (dilate g)",
     "section_variables": "",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "pow-rule",
   "kind": "definition",
   "relation": "exact",
   "confidence": "high",
   "summary": "pPow w g = Exp(w · Log g); pPow_pPow is Pow_v Pow_w = Pow_{vw}; coeff_pPow_sub_of_scongr is the first-difference rule.",
   "label": "Pow_v and the first-difference rule",
   "title": "plethystic powers",
   "anchor": {
    "para": "To compare first differences under assembly, set"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.pPow",
     "role": "Pow_v",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 171,
     "line_end": 172,
     "decl_line": 172,
     "docstring": "The plethystic power P_w(g) = Exp(w · Log g) for a scalar w ∈ ℚ(q).",
     "statement": "def pPow (w : RatFunc ℚ) (g : Ser) : Ser := pExp (PowerSeries.C (scalar w) * pLog g)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1146",
       "theorem_name": "SurfaceBlowupV2.RecipSeries",
       "kind": "definition",
       "theorem_id": "6efa13fd-e001-41db-8491-7a2b1ea93319",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/6efa13fd-e001-41db-8491-7a2b1ea93319",
       "blueprint_source": "RECIPROCITY_round1.md §3 (10)–(12) — restructured for Lean"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.pPow_pPow",
     "role": "composition",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Plethysm.lean",
     "line_start": 452,
     "line_end": 455,
     "decl_line": 453,
     "docstring": "`P_w ∘ P_z = P_{wz}`.",
     "statement": "theorem pPow_pPow (w z : RatFunc ℚ) (g : Ser) : pPow w (pPow z g) = pPow (w * z) g",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1190",
       "theorem_name": "SurfaceBlowupV2.recip_pPow_comp",
       "kind": "theorem",
       "theorem_id": "fb9564e2-dc1d-4228-afd2-54f319a1b8a7",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/fb9564e2-dc1d-4228-afd2-54f319a1b8a7",
       "blueprint_source": "RECIPROCITY_round1.md §3 Lemma 5 (restructured as coefficient identities)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.coeff_pPow_sub_of_scongr",
     "role": "first-difference rule",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Plethysm.lean",
     "line_start": 465,
     "line_end": 478,
     "decl_line": 467,
     "docstring": "If `g ≡ h` below degree `n`, then the degree-`n` coefficients of `P_w(g)` and `P_w(h)` differ\nby `w` times those of `g` and `h`.",
     "statement": "theorem coeff_pPow_sub_of_scongr (n : ℕ) (hn : 0 < n) (w : RatFunc ℚ) (g h : Ser)\n    (hg : PowerSeries.constantCoeff g = 1) (hh : PowerSeries.constantCoeff h = 1)\n    (hgh : SCongr (n - 1) g h) :\n    PowerSeries.coeff n (pPow w g) - PowerSeries.coeff n (pPow w h) =\n      scalar w * (PowerSeries.coeff n g - PowerSeries.coeff n h)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1193",
       "theorem_name": "SurfaceBlowupV2.recip_scongr_pPow",
       "kind": "theorem",
       "theorem_id": "f07f32d4-b6d9-45d1-bdac-e2f03875b1a9",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/f07f32d4-b6d9-45d1-bdac-e2f03875b1a9",
       "blueprint_source": "RECIPROCITY_round1.md §3 Lemma 5, identity (11)"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "lem-7.2",
   "kind": "lemma",
   "relation": "covered",
   "confidence": "medium",
   "summary": "The Lean development defines the Euler transforms as plethystic powers (eulerSer ε a = Pow_{q+ε}(𝓑_a)) and proves their coefficients are the falling-factorial pattern sums (coeff_eulerSer, via prod_formalPow_adamsSer_clusterSer_scongr), which is the expanded form of (7.8); the infinite product over δ is never formed.",
   "label": "lem-7.2",
   "title": "",
   "anchor": {},
   "lean": [
    {
     "name": "SurfaceBlowup.eulerSer",
     "role": "Exp((q+ε) Log 𝓑_a)",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 182,
     "line_end": 184,
     "decl_line": 184,
     "docstring": "The Euler transform P_{q+ε}(B_a) with q + ε rational points: G_a (ε = 0), P_a (ε = −1),\nQ_a (ε = 1).",
     "statement": "def eulerSer (ε : ℤ) (a : ℕ) : Ser := pPow (RatFunc.X + (ε : RatFunc ℚ)) (clusterSer a)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1146",
       "theorem_name": "SurfaceBlowupV2.RecipSeries",
       "kind": "definition",
       "theorem_id": "6efa13fd-e001-41db-8491-7a2b1ea93319",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/6efa13fd-e001-41db-8491-7a2b1ea93319",
       "blueprint_source": "RECIPROCITY_round1.md §3 (10)–(12) — restructured for Lean"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.coeff_eulerSer",
     "role": "coefficients = pattern sums",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Patterns.lean",
     "line_start": 696,
     "line_end": 702,
     "decl_line": 698,
     "docstring": "The `n`-th coefficient of the Euler transform `eulerSer ε a` is the pattern sum\n`patternSum ε a n n`.",
     "statement": "theorem coeff_eulerSer (ε : ℤ) (a n : ℕ) :\n    PowerSeries.coeff n (eulerSer ε a) = patternSum ε a n n",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1220",
       "theorem_name": "SurfaceBlowupV2.recip_euler_coeff_pattern",
       "kind": "theorem",
       "theorem_id": "19dc58a1-8cfd-4b2e-9fca-8734fc282feb",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/19dc58a1-8cfd-4b2e-9fca-8734fc282feb",
       "blueprint_source": "RECIPROCITY_round1.md §3 Lemma 6 (Euler products), coefficient form"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.patternSum",
     "role": "the pattern sum",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 185,
     "line_end": 191,
     "decl_line": 188,
     "docstring": "The off-boundary pattern sum of weight w in ambient dimension N for vertical multiplicity a and\noffset ε:\nΣ over patterns m of weight w of divisorCount ε m · Π_{(i,j)} ψ_{i+1}(F_{S(a;j+1)})^{m(i,j)}.",
     "statement": "def patternSum (ε : ℤ) (a N w : ℕ) : Coef :=\n  ∑ m ∈ (Finset.univ : Finset (Pattern N)).filter (fun m ↦ patternWeight m = w),\n    (divisorCount ε m).rational • ∏ ij : Fin N × Fin N,\n      (adamsCoef (ij.1.val + 1) (lawCoef (stateLaw (State.single a (ij.2.val + 1))))) ^ (m ij).val",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1146",
       "theorem_name": "SurfaceBlowupV2.RecipSeries",
       "kind": "definition",
       "theorem_id": "6efa13fd-e001-41db-8491-7a2b1ea93319",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/6efa13fd-e001-41db-8491-7a2b1ea93319",
       "blueprint_source": "RECIPROCITY_round1.md §3 (10)–(12) — restructured for Lean"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.prod_formalPow_adamsSer_clusterSer_scongr",
     "role": "truncated Euler product expansion",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Plethysm.lean",
     "line_start": 394,
     "line_end": 421,
     "decl_line": 396,
     "docstring": "Truncated product expansion of `Π_{m=1}^n ψ_m(B_a)^{C_m}` as a sum over exponent families\n`K i r`, obtained by multiplying the expansions of `formalPow_adamsSer_clusterSer_scongr`.",
     "statement": "theorem prod_formalPow_adamsSer_clusterSer_scongr (ε : ℤ) (a n : ℕ) :\n    SCongr n (∏ m ∈ Finset.Icc 1 n, formalPow (availablePoints ε m).rational\n        (adamsSer m (clusterSer a))) (∑ K : Fin n → Fin n → Fin (n + 1),\n        PowerSeries.C (scalar (∏ i : Fin n, ((∏ j ∈ Finset.range (∑ r : Fin n, (K i r).val),\n        ((availablePoints ε (i.val + 1)).rational - RatFunc.C (j : ℚ))) *\n        RatFunc.C ((∏ r : Fin n, ((Nat.factorial (K i r).val : ℕ) : ℚ))⁻¹)))) *\n        (PowerSeries.C (∏ i : Fin n, ∏ r : Fin n, (adamsCoef (i.val + 1)\n        (lawCoef (stateLaw (State.single a (r.val + 1))))) ^ (K i r).val) *\n        (PowerSeries.X : Ser) ^ (∑ i : Fin n, (i.val + 1) * ∑ r : Fin n, (r.val + 1) *\n        (K i r).val)))",
     "section_variables": "",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-7.9",
   "kind": "display",
   "relation": "covered",
   "confidence": "high",
   "summary": "lawCoef_globalLaw_false (A_n = q^{-n} · patternSum 0 1 n n) and lawCoef_globalLaw_true (R_n = patternSum 1 1 n n / [n+1]_q), combined with coeff_eulerSer ([zⁿ] Pow_{q+ε}𝓑 = patternSum ε 1 n n), give both halves of (G).",
   "label": "(G) = (7.9)",
   "title": "global assembly as a plethystic exponential",
   "anchor": {
    "eq": "7.9"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.lawCoef_globalLaw_false",
     "role": "monic half",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Patterns.lean",
     "line_start": 361,
     "line_end": 369,
     "decl_line": 362,
     "docstring": "The global monic law is `q^{-n}` times the pattern sum `patternSum 0 1 n n`.",
     "statement": "theorem lawCoef_globalLaw_false (n : ℕ) :\n    lawCoef (globalLaw false n) = qpow (-(n : ℤ)) * patternSum 0 1 n n",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.lawCoef_globalLaw_true",
     "role": "projective half",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Patterns.lean",
     "line_start": 371,
     "line_end": 380,
     "decl_line": 373,
     "docstring": "The global projective law is the pattern sum `patternSum 1 1 n n` divided by\n`1 + q + ⋯ + qⁿ`.",
     "statement": "theorem lawCoef_globalLaw_true (n : ℕ) :\n    lawCoef (globalLaw true n) =\n      scalar (((projectiveNormalizer n).rational)⁻¹) * patternSum 1 1 n n",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.coeff_eulerSer",
     "role": "Euler transform coefficients",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Patterns.lean",
     "line_start": 696,
     "line_end": 702,
     "decl_line": 698,
     "docstring": "The `n`-th coefficient of the Euler transform `eulerSer ε a` is the pattern sum\n`patternSum ε a n n`.",
     "statement": "theorem coeff_eulerSer (ε : ℤ) (a n : ℕ) :\n    PowerSeries.coeff n (eulerSer ε a) = patternSum ε a n n",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1220",
       "theorem_name": "SurfaceBlowupV2.recip_euler_coeff_pattern",
       "kind": "theorem",
       "theorem_id": "19dc58a1-8cfd-4b2e-9fca-8734fc282feb",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/19dc58a1-8cfd-4b2e-9fca-8734fc282feb",
       "blueprint_source": "RECIPROCITY_round1.md §3 Lemma 6 (Euler products), coefficient form"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-7.10",
   "kind": "display",
   "relation": "definition",
   "confidence": "high",
   "summary": "𝓖_a = eulerSer 0 a, 𝓟_a = eulerSer (−1) a, Φ = gaussPhi. (Φ′ appears only inside the crossing factorization.)",
   "label": "(7.10)",
   "title": "L_a, 𝓖_a, 𝓟_a, Φ, Φ′",
   "anchor": {
    "eq": "7.10"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.eulerSer",
     "role": "𝓖_a (ε = 0), 𝓟_a (ε = −1)",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 182,
     "line_end": 184,
     "decl_line": 184,
     "docstring": "The Euler transform P_{q+ε}(B_a) with q + ε rational points: G_a (ε = 0), P_a (ε = −1),\nQ_a (ε = 1).",
     "statement": "def eulerSer (ε : ℤ) (a : ℕ) : Ser := pPow (RatFunc.X + (ε : RatFunc ℚ)) (clusterSer a)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1146",
       "theorem_name": "SurfaceBlowupV2.RecipSeries",
       "kind": "definition",
       "theorem_id": "6efa13fd-e001-41db-8491-7a2b1ea93319",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/6efa13fd-e001-41db-8491-7a2b1ea93319",
       "blueprint_source": "RECIPROCITY_round1.md §3 (10)–(12) — restructured for Lean"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.gaussPhi",
     "role": "Φ",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 235,
     "line_end": 236,
     "decl_line": 236,
     "docstring": "Φ: xᵐ ↦ q^{-tri m} xᵐ.",
     "statement": "def gaussPhi (f : Ser) : Ser := PowerSeries.mk fun n ↦ qpow (-(tri n : ℤ)) * PowerSeries.coeff n f",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1147",
       "theorem_name": "SurfaceBlowupV2.RecipQuantum",
       "kind": "definition",
       "theorem_id": "768c5f79-0621-4933-9650-5a65e3157a53",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/768c5f79-0621-4933-9650-5a65e3157a53",
       "blueprint_source": "RECIPROCITY_round1.md §4 (15)–(19), §5 (25)–(26) — restructured for Lean"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-7.11",
   "kind": "display",
   "relation": "covered",
   "confidence": "medium",
   "summary": "Formalized in its operator form (8.9), 𝓑_a = ρ(U_{a,a}) Φ 𝓖_a (coeff_clusterSer_eq_coeff_qact), whose two sides are matched coefficientwise with the recursion (coeff_qact_crossingQ_gaussPhi_eulerSer, lawCoef_single_self_term). The ξ-form of (S) is not stated.",
   "label": "(S) = (7.11)",
   "title": "single-boundary identity",
   "anchor": {
    "eq": "7.11"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.coeff_clusterSer_eq_coeff_qact",
     "role": "𝓑_a = ρ(U_{a,a})Φ𝓖_a",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Main.lean",
     "line_start": 92,
     "line_end": 141,
     "decl_line": 94,
     "docstring": "**Operator equation.** The cluster series is obtained from its Euler transform by the\nGaussian twist and the contact representation: `B_a = ρ(U_{a,a}) Φ(G_a)`, coefficientwise.",
     "statement": "theorem coeff_clusterSer_eq_coeff_qact (a n : ℕ) (ha : 0 < a) :\n    PowerSeries.coeff n (clusterSer a) =\n      PowerSeries.coeff n (qact (crossingQ a a) (gaussPhi (eulerSer 0 a)))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1285",
       "theorem_name": "SurfaceBlowupV2.recip_single_operator_equation",
       "kind": "theorem",
       "theorem_id": "6da58fd0-7b4d-43b5-a8cb-14732714ced7",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/6da58fd0-7b4d-43b5-a8cb-14732714ced7",
       "blueprint_source": "RECIPROCITY_round1.md §5 Lemma 10, (27)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.coeff_qact_crossingQ_gaussPhi_eulerSer",
     "role": "right side, expanded",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Patterns.lean",
     "line_start": 942,
     "line_end": 991,
     "decl_line": 944,
     "docstring": "The `n`-th coefficient of `ρ(U_{a,a}) Φ(G_a)`, expanded by divisor degree `d` and crossing\ndepth `r` into crossing laws and pattern sums (plus `1` in degree `0`).",
     "statement": "theorem coeff_qact_crossingQ_gaussPhi_eulerSer (a n : ℕ) (ha : 0 < a) :\n    PowerSeries.coeff n (qact (crossingQ a a) (gaussPhi (eulerSer 0 a))) =\n        (∑ d ∈ Finset.Icc 1 n, ∑ r ∈ Finset.range (d + 1),\n        (if ((0 < r ↔ d < n) ∧ r ≤ d) then scalar (divisorProbability (State.single a n)\n        d).rational * ((if r = 0 then 1 else lawCoef (stateLaw (State.crossing a a r (n - d)))) *\n        patternSum 0 a (a * n) (d - r)) else 0)) + (if n = 0 then 1 else 0)",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.lawCoef_single_self_term",
     "role": "self-return term q^{-tri n} q F",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Patterns.lean",
     "line_start": 993,
     "line_end": 1043,
     "decl_line": 995,
     "docstring": "The self-pattern term of the recursion of `S(a;n)` (`n ≥ 2`) is\n`q^{-tri n} · q · F_{S(a;n)}`.",
     "statement": "theorem lawCoef_single_self_term (a n : ℕ) (ha : 0 < a) (hn : 2 ≤ n)\n    (P : TangentPattern (State.single a n).degree) (hP : Allowed (State.single a n) P)\n    (hself : SelfPattern (State.single a n) P) :\n    lawCoef (lawScale (.mul (tangentCount (State.single a n) P)\n        (divisorProbability (State.single a n) P.d.val))\n        (lawProd ((children (State.single a n) P).map fun z ↦ lawDescend z.1 (stateLaw z.2)))) =\n        qpow (-(tri n : ℤ)) * (qpow 1 * lawCoef (stateLaw (State.single a n)))",
     "section_variables": "",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-7.12",
   "kind": "display",
   "relation": "covered",
   "confidence": "medium",
   "summary": "Formalized in its factorized form (8.5), crossingQ_eq_qmul_qplus_qdiag_qminus, proved coefficientwise from the recursion.",
   "label": "(T) = (7.12)",
   "title": "crossing identity",
   "anchor": {
    "eq": "7.12"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.crossingQ_eq_qmul_qplus_qdiag_qminus",
     "role": "U_{a,b} = ι₊(U_{a+b,b}) 𝓟_{a+b}(J) ι₋(U_{a,a+b})",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Patterns.lean",
     "line_start": 833,
     "line_end": 850,
     "decl_line": 835,
     "docstring": "**Crossing factorization.** `U_{a,b} = U_{a+b,b}⁺ · J(P_{a+b}) · U_{a,a+b}⁻`, where `J` is the\ndiagonal substitution and `P_{a+b} = eulerSer (-1) (a+b)`.",
     "statement": "theorem crossingQ_eq_qmul_qplus_qdiag_qminus (a b c h : ℕ) (ha : 0 < a) (hb : 0 < b) :\n    crossingQ a b c h = qmul (qmul (qplus (crossingQ (a + b) b)) (qdiag (eulerSer (-1) (a + b))))\n        (qminus (crossingQ a (a + b))) c h",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1281",
       "theorem_name": "SurfaceBlowupV2.recip_crossing_factorization",
       "kind": "theorem",
       "theorem_id": "fcc14e95-1566-4afc-8539-de1b77ea1f8a",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/fcc14e95-1566-4afc-8539-de1b77ea1f8a",
       "blueprint_source": "RECIPROCITY_round1.md §4 Lemma 8"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "ex-7.3",
   "kind": "example",
   "relation": "exact",
   "confidence": "high",
   "summary": "The A_2 and R_2 columns are monicExpr_two_eval and projectiveExpr_two_eval (as functions of every rational q > 1); the B_2 column is the private lemma single_two_law (a = 1); the q = 2 values 1/3 are monicExpr_two_*_eval_two. The intermediate identities (7.13) are not stated separately.",
   "label": "Example 7.3",
   "title": "the same quadratic in all three models",
   "paper_line": 782,
   "anchor": {
    "statement": "ex-7.3"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.Tests.monicExpr_two_eval",
     "role": "A_2 column",
     "kind": "theorem",
     "private": false,
     "file": "Tests/Regression.lean",
     "line_start": 1143,
     "line_end": 1157,
     "decl_line": 1146,
     "docstring": "**Quadratic monic densities.** For every `q > 1`, the universal monic expressions of degree `2`\ntake the values `q / (2(q + 1))` (split and inert types) and `1 / (q + 1)` (ramified type), and\nvanish on every other type.",
     "statement": "theorem monicExpr_two_eval (q : ℚ) (hq : 1 < q) (σ : FactorType) :\n    (monicExpr 2 σ).eval q =\n      (if σ = {(1,1), (1,1)} then q / (2 * (q + 1)) else 0) +\n      (if σ = {(1,2)} then q / (2 * (q + 1)) else 0) +\n      (if σ = {(2,1)} then 1 / (q + 1) else 0)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N094",
       "theorem_name": "SurfaceBlowupV2.quadratic_monic_formula",
       "kind": "theorem",
       "theorem_id": "2a69eb14-993d-4d76-894c-c70e5bbf74ea",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2a69eb14-993d-4d76-894c-c70e5bbf74ea",
       "blueprint_source": "§1 table and §10.1"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.Tests.projectiveExpr_two_eval",
     "role": "R_2 column",
     "kind": "theorem",
     "private": false,
     "file": "Tests/Regression.lean",
     "line_start": 1159,
     "line_end": 1175,
     "decl_line": 1162,
     "docstring": "**Quadratic projective densities.** For every `q > 1`, the universal projective expressions of\ndegree `2` take the values `1/2` (split), `(q² - q + 1) / (2(q² + q + 1))` (inert) and\n`q / (q² + q + 1)` (ramified), and vanish on every other type.",
     "statement": "theorem projectiveExpr_two_eval (q : ℚ) (hq : 1 < q) (σ : FactorType) :\n    (projectiveExpr 2 σ).eval q =\n      (if σ = {(1,1), (1,1)} then 1 / 2 else 0) +\n      (if σ = {(1,2)} then (q ^ 2 - q + 1) / (2 * (q ^ 2 + q + 1)) else 0) +\n      (if σ = {(2,1)} then q / (q ^ 2 + q + 1) else 0)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N095",
       "theorem_name": "SurfaceBlowupV2.quadratic_projective_formula",
       "kind": "theorem",
       "theorem_id": "5a30f56f-8a9c-4dbd-8d24-db3ae09452fb",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/5a30f56f-8a9c-4dbd-8d24-db3ae09452fb",
       "blueprint_source": "§1 table and §10.1"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.Tests.single_two_law",
     "role": "B_2 column (private)",
     "kind": "theorem",
     "private": true,
     "file": "Tests/Regression.lean",
     "line_start": 1018,
     "line_end": 1113,
     "decl_line": 1020,
     "docstring": "The tangent-point patterns of `S(a;2)`: a transverse tangent with a node, a double point, a\npoint of contact two (a self pattern) and a point of degree two.",
     "statement": "private theorem single_two_law (a : ℕ) (ha : 0 < a) (q : ℚ) (hq : 1 < q) (σ : FactorType) :\n    coeffAt q (stateLaw (.single a 2)) σ = (if σ = {(2*a,1)} then q/(q+1) else 0) +\n      (if σ = {(a,1),(a,1)} then 1/(2*(q+1)) else 0) +\n      (if σ = {(a,2)} then 1/(2*(q+1)) else 0)",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.Tests.monicExpr_two_ramified_eval_two",
     "role": "1/3 at q = 2",
     "kind": "theorem",
     "private": false,
     "file": "Tests/Regression.lean",
     "line_start": 1900,
     "line_end": 1902,
     "decl_line": 1901,
     "docstring": "The three quadratic monic types are equidistributed at `q = 2`: ramified.",
     "statement": "theorem monicExpr_two_ramified_eval_two : (monicExpr 2 {(2,1)}).eval 2 = 1/3",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N096",
       "theorem_name": "SurfaceBlowupV2.quadratic_at_two",
       "kind": "theorem",
       "theorem_id": "4a9da688-215a-46f8-8af3-c222ed237268",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/4a9da688-215a-46f8-8af3-c222ed237268",
       "blueprint_source": "§1 and §10.1"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.Tests.projectiveDensity_two_ramified",
     "role": "R_{(2,1)} as a density",
     "kind": "theorem",
     "private": false,
     "file": "Tests/Regression.lean",
     "line_start": 1955,
     "line_end": 1962,
     "decl_line": 1957,
     "docstring": "Over any complete DVR with finite residue field of cardinality `q`, a random primitive binary\nquadratic form is ramified (type `(2,1)`) with probability `q / (q² + q + 1)`.",
     "statement": "theorem projectiveDensity_two_ramified (htop : IsAdic (maximalIdeal O)) :\n    projectiveDensity O 2 {(2,1)} = ENNReal.ofReal (Nat.card (ResidueField O) /\n      ((Nat.card (ResidueField O)) ^ 2 + Nat.card (ResidueField O) + 1))",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n  [IsAdicComplete (maximalIdeal O) O] [Finite (ResidueField O)] [TopologicalSpace O]\n  [IsTopologicalRing O] [CompactSpace O] [T2Space O] [SecondCountableTopology O]\n  [MeasurableSpace O] [BorelSpace O]",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-8.1",
   "kind": "display",
   "relation": "definition",
   "confidence": "high",
   "summary": "QSer (coefficient functions on contact pairs) with the twisted product qmul: 𝓔_{c,h}𝓔_{d,k} = q^{-ck} 𝓔_{c+d,h+k}.",
   "label": "(8.1)",
   "title": "the contact algebra",
   "anchor": {
    "eq": "8.1"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.QSer",
     "role": "𝒬",
     "kind": "abbrev",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 193,
     "line_end": 195,
     "decl_line": 195,
     "docstring": "Contact series: coefficient functions on contact pairs (c,h), i.e. Σ U(c,h) E_{c,h} in the\nnormal basis.",
     "statement": "abbrev QSer := ℕ → ℕ → Coef",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1147",
       "theorem_name": "SurfaceBlowupV2.RecipQuantum",
       "kind": "definition",
       "theorem_id": "768c5f79-0621-4933-9650-5a65e3157a53",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/768c5f79-0621-4933-9650-5a65e3157a53",
       "blueprint_source": "RECIPROCITY_round1.md §4 (15)–(19), §5 (25)–(26) — restructured for Lean"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.qmul",
     "role": "twisted product",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 196,
     "line_end": 199,
     "decl_line": 197,
     "docstring": "The twisted product E_{c,h} E_{d,k} = q^{-ck} E_{c+d,h+k}, as a finite convolution.",
     "statement": "def qmul (U V : QSer) : QSer := fun c h ↦\n  ∑ p ∈ Finset.HasAntidiagonal.antidiagonal c, ∑ r ∈ Finset.HasAntidiagonal.antidiagonal h,\n    qpow (-((p.1 : ℤ) * (r.2 : ℤ))) * (U p.1 r.1 * V p.2 r.2)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1147",
       "theorem_name": "SurfaceBlowupV2.RecipQuantum",
       "kind": "definition",
       "theorem_id": "768c5f79-0621-4933-9650-5a65e3157a53",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/768c5f79-0621-4933-9650-5a65e3157a53",
       "blueprint_source": "RECIPROCITY_round1.md §4 (15)–(19), §5 (25)–(26) — restructured for Lean"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.qone",
     "role": "unit 𝓔_{0,0}",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 200,
     "line_end": 201,
     "decl_line": 201,
     "docstring": "The unit E_{0,0}.",
     "statement": "def qone : QSer := fun c h ↦ if c = 0 ∧ h = 0 then 1 else 0",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1147",
       "theorem_name": "SurfaceBlowupV2.RecipQuantum",
       "kind": "definition",
       "theorem_id": "768c5f79-0621-4933-9650-5a65e3157a53",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/768c5f79-0621-4933-9650-5a65e3157a53",
       "blueprint_source": "RECIPROCITY_round1.md §4 (15)–(19), §5 (25)–(26) — restructured for Lean"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-8.2",
   "kind": "display",
   "relation": "definition",
   "confidence": "high",
   "summary": "crossingQ a b is U_{a,b}; qdagger is (f𝓔_{c,h})† = f^∨ q^{c+h−ch} 𝓔_{c,h}.",
   "label": "(8.2)",
   "title": "U_{a,b} and the dagger",
   "anchor": {
    "eq": "8.2"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.crossingQ",
     "role": "U_{a,b}",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 216,
     "line_end": 220,
     "decl_line": 217,
     "docstring": "U_{a,b} = 1 + (q−1) Σ_{c,h ≥ 1} F_{T(a,b;c,h)} E_{c,h}; zero on the two axes.",
     "statement": "def crossingQ (a b : ℕ) : QSer := fun c h ↦\n  if c = 0 ∧ h = 0 then 1\n  else if 0 < c ∧ 0 < h then scalar (RatFunc.X - 1) * lawCoef (stateLaw (State.crossing a b c h))\n  else 0",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1147",
       "theorem_name": "SurfaceBlowupV2.RecipQuantum",
       "kind": "definition",
       "theorem_id": "768c5f79-0621-4933-9650-5a65e3157a53",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/768c5f79-0621-4933-9650-5a65e3157a53",
       "blueprint_source": "RECIPROCITY_round1.md §4 (15)–(19), §5 (25)–(26) — restructured for Lean"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.qdagger",
     "role": "†",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 204,
     "line_end": 206,
     "decl_line": 205,
     "docstring": "The anti-involution †: (f E_{c,h})† = v(f) q^{c+h−ch} E_{c,h}.",
     "statement": "def qdagger (U : QSer) : QSer := fun c h ↦\n  qpow ((c : ℤ) + (h : ℤ) - (c : ℤ) * (h : ℤ)) * recipCoef (U c h)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1147",
       "theorem_name": "SurfaceBlowupV2.RecipQuantum",
       "kind": "definition",
       "theorem_id": "768c5f79-0621-4933-9650-5a65e3157a53",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/768c5f79-0621-4933-9650-5a65e3157a53",
       "blueprint_source": "RECIPROCITY_round1.md §4 (15)–(19), §5 (25)–(26) — restructured for Lean"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "lem-8.1",
   "kind": "lemma",
   "relation": "covered",
   "confidence": "high",
   "summary": "Associativity (qmul_assoc), † anti-multiplicative (qdagger_qmul) and an involution via q ↦ 1/q (recipCoef_recipCoef), the embeddings ι₊, ι₋ multiplicative and commuting with † (qplus_qmul, qminus_qmul, qdagger_qplus, qdagger_qminus), powers of J via the diagonal substitution (qdiag_mul). Two-sided inverses are not constructed: the formal proof works with the unitarity congruence U U† ≡ 1.",
   "label": "Lemma 8.1",
   "title": "the bookkeeping algebra",
   "paper_line": 821,
   "anchor": {
    "statement": "lem-8.1"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.qmul_assoc",
     "role": "associativity",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Quantum.lean",
     "line_start": 516,
     "line_end": 557,
     "decl_line": 517,
     "docstring": "The twisted product is associative.",
     "statement": "theorem qmul_assoc (U V W : QSer) :\n    qmul (qmul U V) W = qmul U (qmul V W)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1241",
       "theorem_name": "SurfaceBlowupV2.recip_qmul_assoc",
       "kind": "theorem",
       "theorem_id": "029fcec7-179f-4c12-aece-4e41a27d32e4",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/029fcec7-179f-4c12-aece-4e41a27d32e4",
       "blueprint_source": "RECIPROCITY_round1.md §4 Lemma 7"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.qdagger_qmul",
     "role": "† reverses products",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Quantum.lean",
     "line_start": 451,
     "line_end": 470,
     "decl_line": 452,
     "docstring": "`†` is an anti-homomorphism of the twisted product.",
     "statement": "theorem qdagger_qmul (U V : QSer) : qdagger (qmul U V) = qmul (qdagger V) (qdagger U)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1245",
       "theorem_name": "SurfaceBlowupV2.recip_qdagger_mul",
       "kind": "theorem",
       "theorem_id": "8f8282b2-7d08-4b3f-8172-8006838f78b6",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/8f8282b2-7d08-4b3f-8172-8006838f78b6",
       "blueprint_source": "RECIPROCITY_round1.md §4 Lemma 7"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.qplus",
     "role": "ι₊",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 207,
     "line_end": 209,
     "decl_line": 208,
     "docstring": "ι₊: E_{c,h} ↦ q^{-C(c,2)} E_{c,c+h}.",
     "statement": "def qplus (U : QSer) : QSer := fun c k ↦\n  if c ≤ k then qpow (-(chooseTwo c : ℤ)) * U c (k - c) else 0",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1147",
       "theorem_name": "SurfaceBlowupV2.RecipQuantum",
       "kind": "definition",
       "theorem_id": "768c5f79-0621-4933-9650-5a65e3157a53",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/768c5f79-0621-4933-9650-5a65e3157a53",
       "blueprint_source": "RECIPROCITY_round1.md §4 (15)–(19), §5 (25)–(26) — restructured for Lean"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.qminus",
     "role": "ι₋",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 210,
     "line_end": 212,
     "decl_line": 211,
     "docstring": "ι₋: E_{c,h} ↦ q^{-C(h,2)} E_{c+h,h}.",
     "statement": "def qminus (U : QSer) : QSer := fun k h ↦\n  if h ≤ k then qpow (-(chooseTwo h : ℤ)) * U (k - h) h else 0",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1147",
       "theorem_name": "SurfaceBlowupV2.RecipQuantum",
       "kind": "definition",
       "theorem_id": "768c5f79-0621-4933-9650-5a65e3157a53",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/768c5f79-0621-4933-9650-5a65e3157a53",
       "blueprint_source": "RECIPROCITY_round1.md §4 (15)–(19), §5 (25)–(26) — restructured for Lean"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.qplus_qmul",
     "role": "ι₊ multiplicative",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 819,
     "line_end": 850,
     "decl_line": 820,
     "docstring": "`ι₊` is multiplicative for the twisted product.",
     "statement": "theorem qplus_qmul (U V : QSer) : qplus (qmul U V) = qmul (qplus U) (qplus V)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1246",
       "theorem_name": "SurfaceBlowupV2.recip_qplus_mul",
       "kind": "theorem",
       "theorem_id": "3caf889a-d64b-4cbd-9bf4-003cc13ca6b2",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3caf889a-d64b-4cbd-9bf4-003cc13ca6b2",
       "blueprint_source": "RECIPROCITY_round1.md §4 Lemma 7"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.qminus_qmul",
     "role": "ι₋ multiplicative",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 869,
     "line_end": 871,
     "decl_line": 870,
     "docstring": "`ι₋` is multiplicative for the twisted product.",
     "statement": "theorem qminus_qmul (U V : QSer) : qminus (qmul U V) = qmul (qminus U) (qminus V)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1247",
       "theorem_name": "SurfaceBlowupV2.recip_qminus_mul",
       "kind": "theorem",
       "theorem_id": "e40ae9e1-2369-4a8d-88da-1614a6d4ad8e",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/e40ae9e1-2369-4a8d-88da-1614a6d4ad8e",
       "blueprint_source": "RECIPROCITY_round1.md §4 Lemma 7"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.qdagger_qplus",
     "role": "ι₊ commutes with †",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Quantum.lean",
     "line_start": 482,
     "line_end": 488,
     "decl_line": 483,
     "docstring": "`†` commutes with `ι₊`.",
     "statement": "theorem qdagger_qplus (U : QSer) : qdagger (qplus U) = qplus (qdagger U)",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.qdagger_qminus",
     "role": "ι₋ commutes with †",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Quantum.lean",
     "line_start": 490,
     "line_end": 499,
     "decl_line": 491,
     "docstring": "`†` commutes with `ι₋`.",
     "statement": "theorem qdagger_qminus (U : QSer) : qdagger (qminus U) = qminus (qdagger U)",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.qdiag_mul",
     "role": "J^m = q^{-C(m,2)} 𝓔_{m,m}",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Quantum.lean",
     "line_start": 738,
     "line_end": 767,
     "decl_line": 739,
     "docstring": "Diagonal substitution `x ↦ E_{1,1}` is multiplicative into the quantum torus.",
     "statement": "theorem qdiag_mul (f g : Ser) : qdiag (f * g) = qmul (qdiag f) (qdiag g)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1249",
       "theorem_name": "SurfaceBlowupV2.recip_qdiag_mul",
       "kind": "theorem",
       "theorem_id": "3c65e61e-b7a1-4fee-9f32-7e7be0abac8e",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/3c65e61e-b7a1-4fee-9f32-7e7be0abac8e",
       "blueprint_source": "RECIPROCITY_round1.md §4 Lemma 7"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "lem-8.2",
   "kind": "lemma",
   "relation": "exact",
   "confidence": "high",
   "summary": "crossingQ_eq_qmul_qplus_qdiag_qminus: U_{a,b} = ι₊(U_{a+b,b}) · qdiag(𝓟_{a+b}) · ι₋(U_{a,a+b}).",
   "label": "Lemma 8.2",
   "title": "ordered crossing factorization",
   "paper_line": 839,
   "anchor": {
    "statement": "lem-8.2"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.crossingQ_eq_qmul_qplus_qdiag_qminus",
     "role": "ordered crossing factorization",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Patterns.lean",
     "line_start": 833,
     "line_end": 850,
     "decl_line": 835,
     "docstring": "**Crossing factorization.** `U_{a,b} = U_{a+b,b}⁺ · J(P_{a+b}) · U_{a,a+b}⁻`, where `J` is the\ndiagonal substitution and `P_{a+b} = eulerSer (-1) (a+b)`.",
     "statement": "theorem crossingQ_eq_qmul_qplus_qdiag_qminus (a b c h : ℕ) (ha : 0 < a) (hb : 0 < b) :\n    crossingQ a b c h = qmul (qmul (qplus (crossingQ (a + b) b)) (qdiag (eulerSer (-1) (a + b))))\n        (qminus (crossingQ a (a + b))) c h",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1281",
       "theorem_name": "SurfaceBlowupV2.recip_crossing_factorization",
       "kind": "theorem",
       "theorem_id": "fcc14e95-1566-4afc-8539-de1b77ea1f8a",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/fcc14e95-1566-4afc-8539-de1b77ea1f8a",
       "blueprint_source": "RECIPROCITY_round1.md §4 Lemma 8"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "lem-8.3",
   "kind": "lemma",
   "relation": "exact",
   "confidence": "high",
   "summary": "qcongr_crossingQ_mul_qdagger: if 𝓖_b ≡ S(𝓑_b^∨) through degree M for all b > 0, then U_{a,b} U_{a,b}† ≡ 1 through total contact degree j for every j ≤ 2M + 1. The hypothesis is stated for every multiplicity b instead of being derived from b = 1 by scaling. (8.8) is qcongr_qdiag_mul_qdagger.",
   "label": "Lemma 8.3",
   "title": "crossing reciprocity from smaller clusters",
   "paper_line": 860,
   "anchor": {
    "statement": "lem-8.3"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.qcongr_crossingQ_mul_qdagger",
     "role": "crossing unitarity through 2M+1",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Patterns.lean",
     "line_start": 852,
     "line_end": 898,
     "decl_line": 854,
     "docstring": "If `G_b ≡ S(B_bᵛ)` through degree `M` for all `b > 0`, then `U_{a,b}` is unitary,\n`U_{a,b} U_{a,b}† ≡ 1`, through total contact degree `2M + 1`.",
     "statement": "theorem qcongr_crossingQ_mul_qdagger (M : ℕ) (hS : ∀ a : ℕ, 0 < a →\n    SCongr M (eulerSer 0 a) (dilate (recipSer (clusterSer a)))) (j : ℕ) (hj : j ≤ 2 * M + 1)\n    (a b : ℕ) (ha : 0 < a) (hb : 0 < b) :\n    QCongr j (qmul (crossingQ a b) (qdagger (crossingQ a b))) qone",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1308",
       "theorem_name": "SurfaceBlowupV2.recip_contact_induction",
       "kind": "theorem",
       "theorem_id": "976898ee-b4f3-4037-b4a8-5c9637a21f55",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/976898ee-b4f3-4037-b4a8-5c9637a21f55",
       "blueprint_source": "RECIPROCITY_round1.md §4 Lemma 9"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.qcongr_qdiag_mul_qdagger",
     "role": "(8.8) for the middle factor",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Quantum.lean",
     "line_start": 794,
     "line_end": 801,
     "decl_line": 796,
     "docstring": "If `S(v P_s) P_s ≡ 1` through degree `M`, then `qdiag(P_s) qdiag(P_s)† ≡ 1` through total\ndegree `2M + 1`.",
     "statement": "theorem qcongr_qdiag_mul_qdagger (M s : ℕ)\n    (h : SCongr M (dilate (recipSer (eulerSer (-1) s)) * eulerSer (-1) s) 1) :\n    QCongr (2 * M + 1) (qmul (qdiag (eulerSer (-1) s)) (qdagger (qdiag (eulerSer (-1) s))))\n      qone",
     "section_variables": "",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-8.9",
   "kind": "display",
   "relation": "exact",
   "confidence": "high",
   "summary": "qact is ρ (ρ(𝓔_{c,h}) f = q^{-tri c} x^{c+h} f(x/q^c)); coeff_clusterSer_eq_coeff_qact is 𝓑_a = ρ(U_{a,a}) Φ 𝓖_a.",
   "label": "(8.9)",
   "title": "the representation ρ and the operator equation",
   "anchor": {
    "eq": "8.9"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.qact",
     "role": "ρ",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 226,
     "line_end": 230,
     "decl_line": 228,
     "docstring": "The representation ρ: ρ(E_{c,h}) f = q^{-tri c} x^{c+h} f(x/q^c); coefficient n sums over\n(c+h) + m = n.",
     "statement": "def qact (U : QSer) (f : Ser) : Ser := PowerSeries.mk fun n ↦\n  ∑ p ∈ Finset.HasAntidiagonal.antidiagonal n, ∑ r ∈ Finset.HasAntidiagonal.antidiagonal p.1,\n    qpow (-(tri r.1 : ℤ) - (r.1 : ℤ) * (p.2 : ℤ)) * (U r.1 r.2 * PowerSeries.coeff p.2 f)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1147",
       "theorem_name": "SurfaceBlowupV2.RecipQuantum",
       "kind": "definition",
       "theorem_id": "768c5f79-0621-4933-9650-5a65e3157a53",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/768c5f79-0621-4933-9650-5a65e3157a53",
       "blueprint_source": "RECIPROCITY_round1.md §4 (15)–(19), §5 (25)–(26) — restructured for Lean"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.coeff_clusterSer_eq_coeff_qact",
     "role": "𝓑_a = ρ(U_{a,a})Φ𝓖_a",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Main.lean",
     "line_start": 92,
     "line_end": 141,
     "decl_line": 94,
     "docstring": "**Operator equation.** The cluster series is obtained from its Euler transform by the\nGaussian twist and the contact representation: `B_a = ρ(U_{a,a}) Φ(G_a)`, coefficientwise.",
     "statement": "theorem coeff_clusterSer_eq_coeff_qact (a n : ℕ) (ha : 0 < a) :\n    PowerSeries.coeff n (clusterSer a) =\n      PowerSeries.coeff n (qact (crossingQ a a) (gaussPhi (eulerSer 0 a)))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1285",
       "theorem_name": "SurfaceBlowupV2.recip_single_operator_equation",
       "kind": "theorem",
       "theorem_id": "6da58fd0-7b4d-43b5-a8cb-14732714ced7",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/6da58fd0-7b4d-43b5-a8cb-14732714ced7",
       "blueprint_source": "RECIPROCITY_round1.md §5 Lemma 10, (27)"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-8.10",
   "kind": "display",
   "relation": "covered",
   "confidence": "medium",
   "summary": "coeff_qact_gaussPhi_of_lt computes the low-degree coefficients of ρ(U)Φf for U with constant term 1.",
   "label": "(8.10)",
   "title": "leading coefficient of 𝓗",
   "anchor": {
    "eq": "8.10"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.coeff_qact_gaussPhi_of_lt",
     "role": "low coefficients of ρ(U)Φ f",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 703,
     "line_end": 716,
     "decl_line": 705,
     "docstring": "Leading term: if `f` vanishes below degree `n` and `U₀₀ = 1`, then\n`[xⁿ] ρ(U)(Φ f) = q^{-tri n} [xⁿ] f`.",
     "statement": "theorem coeff_qact_gaussPhi_of_lt (U : QSer) (hU0 : U 0 0 = 1) (f : Ser) (n : ℕ)\n    (hf : ∀ m : ℕ, m < n → PowerSeries.coeff m f = 0) :\n    PowerSeries.coeff n (qact U (gaussPhi f)) = qpow (-(tri n : ℤ)) * PowerSeries.coeff n f",
     "section_variables": "",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "lem-9.1",
   "kind": "lemma",
   "relation": "exact",
   "confidence": "high",
   "summary": "gaussPhi_qactRecip_gaussPhiInv: for symmetric V, Φ ∘ ρ_{1/q}(V^∨) ∘ Φ⁻¹ = S⁻¹ ∘ ρ(V†) ∘ S.",
   "label": "Lemma 9.1",
   "title": "Gaussian conjugation",
   "paper_line": 921,
   "anchor": {
    "statement": "lem-9.1"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.gaussPhi_qactRecip_gaussPhiInv",
     "role": "Gaussian conjugation",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Quantum.lean",
     "line_start": 705,
     "line_end": 734,
     "decl_line": 706,
     "docstring": "For symmetric `V`, the Gauss twist conjugates `ρ̄(v V)` to `S⁻¹ ∘ ρ(V†) ∘ S`.",
     "statement": "theorem gaussPhi_qactRecip_gaussPhiInv (V : QSer) (hV : ∀ c h : ℕ, V c h = V h c) (f : Ser) :\n    gaussPhi (qactRecip (qrecip V) (gaussPhiInv f)) = codilate (qact (qdagger V) (dilate f))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1255",
       "theorem_name": "SurfaceBlowupV2.recip_gauss_conjugation",
       "kind": "theorem",
       "theorem_id": "535f33a4-597b-4bf6-b33f-c302fa7c41c0",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/535f33a4-597b-4bf6-b33f-c302fa7c41c0",
       "blueprint_source": "RECIPROCITY_round1.md §6 Lemma 11"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.qactRecip",
     "role": "ρ at parameter 1/q",
     "kind": "def",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Defs.lean",
     "line_start": 231,
     "line_end": 234,
     "decl_line": 232,
     "docstring": "The same representation with q replaced by q⁻¹ (all Gaussian exponents negated).",
     "statement": "def qactRecip (U : QSer) (f : Ser) : Ser := PowerSeries.mk fun n ↦\n  ∑ p ∈ Finset.HasAntidiagonal.antidiagonal n, ∑ r ∈ Finset.HasAntidiagonal.antidiagonal p.1,\n    qpow ((tri r.1 : ℤ) + (r.1 : ℤ) * (p.2 : ℤ)) * (U r.1 r.2 * PowerSeries.coeff p.2 f)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1147",
       "theorem_name": "SurfaceBlowupV2.RecipQuantum",
       "kind": "definition",
       "theorem_id": "768c5f79-0621-4933-9650-5a65e3157a53",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/768c5f79-0621-4933-9650-5a65e3157a53",
       "blueprint_source": "RECIPROCITY_round1.md §4 (15)–(19), §5 (25)–(26) — restructured for Lean"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-9.4",
   "kind": "display",
   "relation": "covered",
   "confidence": "medium",
   "summary": "𝓑 = 𝓗𝓖 is coeff_clusterSer_eq_coeff_qact; 𝓑 = Pow_{1/q}(𝓖) is clusterSer_eq_pPow; the reciprocal equations are proved in private lemmas of Reciprocity/Main.lean (gaussPhi_dilate_recipSer_clusterSer, qact_gaussPhi_dilate_recipSer_scongr).",
   "label": "(9.4)",
   "title": "the four equations",
   "anchor": {
    "eq": "9.4"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.coeff_clusterSer_eq_coeff_qact",
     "role": "𝓑 = 𝓗𝓖",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Main.lean",
     "line_start": 92,
     "line_end": 141,
     "decl_line": 94,
     "docstring": "**Operator equation.** The cluster series is obtained from its Euler transform by the\nGaussian twist and the contact representation: `B_a = ρ(U_{a,a}) Φ(G_a)`, coefficientwise.",
     "statement": "theorem coeff_clusterSer_eq_coeff_qact (a n : ℕ) (ha : 0 < a) :\n    PowerSeries.coeff n (clusterSer a) =\n      PowerSeries.coeff n (qact (crossingQ a a) (gaussPhi (eulerSer 0 a)))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1285",
       "theorem_name": "SurfaceBlowupV2.recip_single_operator_equation",
       "kind": "theorem",
       "theorem_id": "6da58fd0-7b4d-43b5-a8cb-14732714ced7",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/6da58fd0-7b4d-43b5-a8cb-14732714ced7",
       "blueprint_source": "RECIPROCITY_round1.md §5 Lemma 10, (27)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.clusterSer_eq_pPow",
     "role": "𝓑 = Pow_{1/q}(𝓖)",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Plethysm.lean",
     "line_start": 871,
     "line_end": 876,
     "decl_line": 873,
     "docstring": "`B_a = P_{1/q}(G_a)`: the Euler transform with parameter `q` is inverted by the plethystic\npower `1/q`.",
     "statement": "theorem clusterSer_eq_pPow (a : ℕ) :\n    clusterSer a = pPow (RatFunc.X : RatFunc ℚ)⁻¹ (eulerSer 0 a)",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.gaussPhi_dilate_recipSer_clusterSer",
     "role": "ΦW = ρ(U†)V (private)",
     "kind": "theorem",
     "private": true,
     "file": "SurfaceBlowup/Reciprocity/Main.lean",
     "line_start": 143,
     "line_end": 158,
     "decl_line": 145,
     "docstring": "**Reciprocal operator equation.** Applying reciprocal substitution and the dilation to the\noperator equation: `Φ(S(B_aᵛ)) = ρ(U_{a,a}†) S(G_aᵛ)`.",
     "statement": "private theorem gaussPhi_dilate_recipSer_clusterSer (a : ℕ) (ha : 0 < a) :\n    gaussPhi (dilate (recipSer (clusterSer a))) =\n      qact (qdagger (crossingQ a a)) (dilate (recipSer (eulerSer 0 a)))",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.qact_gaussPhi_dilate_recipSer_scongr",
     "role": "𝓗W = V through degree n (private)",
     "kind": "theorem",
     "private": true,
     "file": "SurfaceBlowup/Reciprocity/Main.lean",
     "line_start": 160,
     "line_end": 167,
     "decl_line": 162,
     "docstring": "If `U_{a,a} U_{a,a}† ≡ 1` through degree `n`, then `ρ(U_{a,a}) Φ(S(B_aᵛ)) ≡ S(G_aᵛ)`\nthrough degree `n`.",
     "statement": "private theorem qact_gaussPhi_dilate_recipSer_scongr (a n : ℕ) (ha : 0 < a)\n    (hU : QCongr n (qmul (crossingQ a a) (qdagger (crossingQ a a))) qone) :\n    SCongr n (qact (crossingQ a a) (gaussPhi (dilate (recipSer (clusterSer a)))))\n      (dilate (recipSer (eulerSer 0 a)))",
     "section_variables": "",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "proof-affine",
   "kind": "proof",
   "relation": "exact",
   "confidence": "high",
   "summary": "cluster_reciprocity: 𝓖_a ≡ S(𝓑_a^∨) in every degree, for every a > 0, by induction (base cluster_reciprocity_one; step cluster_reciprocity_step, private) closing on the nonzero scalar q⁻¹ − q^{-tri n} (X_inv_sub_X_zpow_neg_tri_ne_zero).",
   "label": "Proof of monic/cluster reciprocity",
   "title": "induction closing on 1 − λ_n",
   "anchor": {
    "proof": "Proof of monic/cluster reciprocity"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.cluster_reciprocity",
     "role": "𝓖 = 𝓦 in every degree",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Main.lean",
     "line_start": 209,
     "line_end": 217,
     "decl_line": 211,
     "docstring": "**Cluster reciprocity.** For every `a > 0`, the Euler transform `G_a` agrees with the\ndilated reciprocal cluster series `S(B_aᵛ)` in every degree `≤ n`.",
     "statement": "theorem cluster_reciprocity (n a : ℕ) (ha : 0 < a) :\n    SCongr n (eulerSer 0 a) (dilate (recipSer (clusterSer a)))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1316",
       "theorem_name": "SurfaceBlowupV2.recip_cluster_all",
       "kind": "theorem",
       "theorem_id": "227c6029-711a-4a9f-bca0-292d78b65a21",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/227c6029-711a-4a9f-bca0-292d78b65a21",
       "blueprint_source": "RECIPROCITY_round1.md §7 (conclusion)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.cluster_reciprocity_one",
     "role": "base case",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Patterns.lean",
     "line_start": 934,
     "line_end": 940,
     "decl_line": 935,
     "docstring": "Base case of cluster reciprocity: `G_a ≡ S(B_aᵛ)` through degree `1`.",
     "statement": "theorem cluster_reciprocity_one (a : ℕ) :\n    SCongr 1 (eulerSer 0 a) (dilate (recipSer (clusterSer a)))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1315",
       "theorem_name": "SurfaceBlowupV2.recip_cluster_base",
       "kind": "theorem",
       "theorem_id": "a61a2406-be5e-4900-9d70-766fce943d07",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/a61a2406-be5e-4900-9d70-766fce943d07",
       "blueprint_source": "RECIPROCITY_round1.md §7 (degree one)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.cluster_reciprocity_step",
     "role": "induction step (private)",
     "kind": "theorem",
     "private": true,
     "file": "SurfaceBlowup/Reciprocity/Main.lean",
     "line_start": 171,
     "line_end": 207,
     "decl_line": 173,
     "docstring": "Inductive step: if `G_b ≡ S(B_bᵛ)` through degree `n - 1` for all `b > 0`, then\n`G_a ≡ S(B_aᵛ)` through degree `n` (`n ≥ 2`).",
     "statement": "private theorem cluster_reciprocity_step (n : ℕ) (hn : 2 ≤ n)\n    (ih : ∀ a : ℕ, 0 < a → SCongr (n - 1) (eulerSer 0 a) (dilate (recipSer (clusterSer a))))\n    (a : ℕ) (ha : 0 < a) :\n    SCongr n (eulerSer 0 a) (dilate (recipSer (clusterSer a)))",
     "section_variables": "",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.X_inv_sub_X_zpow_neg_tri_ne_zero",
     "role": "(9.6): the scalar is nonzero",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Patterns.lean",
     "line_start": 487,
     "line_end": 492,
     "decl_line": 488,
     "docstring": "For `n ≥ 2`, the scalar `q⁻¹ - q^{-tri n}` is nonzero.",
     "statement": "theorem X_inv_sub_X_zpow_neg_tri_ne_zero (n : ℕ) (hn : 2 ≤ n) :\n    (RatFunc.X : RatFunc ℚ)⁻¹ - (RatFunc.X : RatFunc ℚ) ^ (-(tri n : ℤ)) ≠ 0",
     "section_variables": "",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "lem-9.2",
   "kind": "lemma",
   "relation": "covered",
   "confidence": "medium",
   "summary": "The implications used for Theorem 1.2 are formalized: cluster reciprocity ⇒ A_n = B_n^∨ (lawCoef_globalLaw_false_eq_recipCoef) and ⇒ R_n^∨ = R_n (recipCoef_lawCoef_globalLaw_true, using [n+1]_q^∨ = q^{-n}[n+1]_q: recipRat_projectiveNormalizer). The full three-way equivalence for prefixes is not stated.",
   "label": "Lemma 9.2",
   "title": "three equivalent forms",
   "paper_line": 970,
   "anchor": {
    "statement": "lem-9.2"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.lawCoef_globalLaw_false_eq_recipCoef",
     "role": "first form",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Main.lean",
     "line_start": 221,
     "line_end": 234,
     "decl_line": 223,
     "docstring": "**Affine reciprocity.** The global monic law is the reciprocal of the root law:\n`F_global(q) = F_{S(1;n)}(1/q)` as elements of `Coef`.",
     "statement": "theorem lawCoef_globalLaw_false_eq_recipCoef (n : ℕ) (hn : 0 < n) :\n    lawCoef (globalLaw false n) = recipCoef (lawCoef (rootLaw n))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1317",
       "theorem_name": "SurfaceBlowupV2.recip_affine_coef",
       "kind": "theorem",
       "theorem_id": "e24b89f4-cb42-433a-87c1-78db1732abae",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/e24b89f4-cb42-433a-87c1-78db1732abae",
       "blueprint_source": "RECIPROCITY_round1.md §7 (affine identity in (14))"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.recipCoef_lawCoef_globalLaw_true",
     "role": "third form",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Main.lean",
     "line_start": 236,
     "line_end": 276,
     "decl_line": 238,
     "docstring": "**Projective self-reciprocity.** The normalised global projective law `R_n` is invariant\nunder reciprocal substitution: `R_n(1/q) = R_n(q)` as elements of `Coef`.",
     "statement": "theorem recipCoef_lawCoef_globalLaw_true (n : ℕ) :\n    recipCoef (lawCoef (globalLaw true n)) = lawCoef (globalLaw true n)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1318",
       "theorem_name": "SurfaceBlowupV2.recip_projective_coef",
       "kind": "theorem",
       "theorem_id": "0399bdfe-70cc-456b-9f89-9ccbbfb0143f",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/0399bdfe-70cc-456b-9f89-9ccbbfb0143f",
       "blueprint_source": "RECIPROCITY_round1.md §8 Lemma 13 (projective form)"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.recipRat_projectiveNormalizer",
     "role": "[n+1]_q^∨ = q^{-n}[n+1]_q",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Quantum.lean",
     "line_start": 417,
     "line_end": 428,
     "decl_line": 418,
     "docstring": "`v([n+1]_q) = q⁻ⁿ [n+1]_q`.",
     "statement": "theorem recipRat_projectiveNormalizer (n : ℕ) :\n    recipRat (projectiveNormalizer n).rational =\n      (RatFunc.X ^ n)⁻¹ * (projectiveNormalizer n).rational",
     "section_variables": "",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "thm-9.3",
   "kind": "theorem",
   "relation": "none",
   "confidence": "high",
   "summary": "The crossing reciprocity formula (9.8) and (9.9) are not formalized. Ingredients that are: unitarity of U_{a,b} in every degree follows from qcongr_crossingQ_mul_qdagger and cluster_reciprocity (both for all multiplicities).",
   "label": "Theorem 9.3",
   "title": "reciprocity for every crossing",
   "paper_line": 982,
   "anchor": {
    "statement": "thm-9.3"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.qcongr_crossingQ_mul_qdagger",
     "role": "ingredient: unitarity",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Patterns.lean",
     "line_start": 852,
     "line_end": 898,
     "decl_line": 854,
     "docstring": "If `G_b ≡ S(B_bᵛ)` through degree `M` for all `b > 0`, then `U_{a,b}` is unitary,\n`U_{a,b} U_{a,b}† ≡ 1`, through total contact degree `2M + 1`.",
     "statement": "theorem qcongr_crossingQ_mul_qdagger (M : ℕ) (hS : ∀ a : ℕ, 0 < a →\n    SCongr M (eulerSer 0 a) (dilate (recipSer (clusterSer a)))) (j : ℕ) (hj : j ≤ 2 * M + 1)\n    (a b : ℕ) (ha : 0 < a) (hb : 0 < b) :\n    QCongr j (qmul (crossingQ a b) (qdagger (crossingQ a b))) qone",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1308",
       "theorem_name": "SurfaceBlowupV2.recip_contact_induction",
       "kind": "theorem",
       "theorem_id": "976898ee-b4f3-4037-b4a8-5c9637a21f55",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/976898ee-b4f3-4037-b4a8-5c9637a21f55",
       "blueprint_source": "RECIPROCITY_round1.md §4 Lemma 9"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.cluster_reciprocity",
     "role": "ingredient: cluster reciprocity for every a",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Main.lean",
     "line_start": 209,
     "line_end": 217,
     "decl_line": 211,
     "docstring": "**Cluster reciprocity.** For every `a > 0`, the Euler transform `G_a` agrees with the\ndilated reciprocal cluster series `S(B_aᵛ)` in every degree `≤ n`.",
     "statement": "theorem cluster_reciprocity (n a : ℕ) (ha : 0 < a) :\n    SCongr n (eulerSer 0 a) (dilate (recipSer (clusterSer a)))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1316",
       "theorem_name": "SurfaceBlowupV2.recip_cluster_all",
       "kind": "theorem",
       "theorem_id": "227c6029-711a-4a9f-bca0-292d78b65a21",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/227c6029-711a-4a9f-bca0-292d78b65a21",
       "blueprint_source": "RECIPROCITY_round1.md §7 (conclusion)"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "ex-9.4",
   "kind": "example",
   "relation": "specialization",
   "confidence": "medium",
   "summary": "(9.10) for a = b = 1 is the private regression lemma crossing_two_two_law (every rational q > 1), and (9.12) is crossing_two_two_law_at_two. (9.11) is not formalized.",
   "label": "Example 9.4",
   "title": "the first random crossing",
   "paper_line": 1010,
   "anchor": {
    "statement": "ex-9.4"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.Tests.crossing_two_two_law",
     "role": "C_{1,1;2,2} (private)",
     "kind": "theorem",
     "private": true,
     "file": "Tests/Regression.lean",
     "line_start": 1401,
     "line_end": 1468,
     "decl_line": 1403,
     "docstring": "The crossing state `T(1,1;2,2)` (tangent conic through the node): a point of degree two, a\nrational point of contact two, or two rational points.",
     "statement": "private theorem crossing_two_two_law (q : ℚ) (hq : 1 < q) (σ : FactorType) :\n    coeffAt q (stateLaw (.crossing 1 1 2 2)) σ = (if σ = {(4,1)} then 1/(q+1) else 0) +\n      (if σ = {(2,2)} then (q^2+q+1)/(2*q*(q+1)) else 0) +\n      (if σ = {(2,1),(2,1)} then (q^2-q-1)/(2*q*(q+1)) else 0)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1287",
       "theorem_name": "SurfaceBlowupV2.recip_crossing_two_two_coef",
       "kind": "theorem",
       "theorem_id": "bf28dc77-c3d8-4017-9c50-dbefcab260f3",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/bf28dc77-c3d8-4017-9c50-dbefcab260f3",
       "blueprint_source": "RECIPROCITY_round1.md §8 Example 14, (39); guard"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.Tests.crossing_two_two_law_at_two",
     "role": "(9.12) at q = 2 (private)",
     "kind": "theorem",
     "private": true,
     "file": "Tests/Regression.lean",
     "line_start": 1630,
     "line_end": 1633,
     "decl_line": 1630,
     "docstring": "",
     "statement": "private theorem crossing_two_two_law_at_two (σ : FactorType) :\n    coeffAt 2 (stateLaw (.crossing 1 1 2 2)) σ = (if σ = {(4,1)} then 1/3 else 0) +\n      (if σ = {(2,2)} then 7/12 else 0) + (if σ = (2,1) ::ₘ {(2,1)} then 1/12 else 0)",
     "section_variables": "",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-10.1",
   "kind": "display",
   "relation": "none",
   "confidence": "high",
   "summary": "Not formalized.",
   "label": "(10.1)–(10.2)",
   "title": "one-field coefficients",
   "anchor": {
    "eq": "10.1"
   },
   "also_tags": [
    "10.2"
   ],
   "lean": [],
   "prove2me_statement_nodes": []
  },
  {
   "id": "lem-10.1",
   "kind": "lemma",
   "relation": "none",
   "confidence": "high",
   "summary": "Not formalized.",
   "label": "Lemma 10.1",
   "title": "Euclidean weight",
   "paper_line": 1057,
   "anchor": {
    "statement": "lem-10.1"
   },
   "lean": [],
   "prove2me_statement_nodes": []
  },
  {
   "id": "thm-10.2",
   "kind": "theorem",
   "relation": "none",
   "confidence": "high",
   "summary": "The totally ramified recursion is not formalized. Instances of its consequences are checked: A_{(3,1)}(3) = 10/121, A_{(4,1)}(2) = 107/1533, R_{(4,1)}(2) = 856/15841 (see (10.8) and Example 10.4).",
   "label": "Theorem 10.2",
   "title": "the full totally ramified recursion",
   "paper_line": 1074,
   "anchor": {
    "statement": "thm-10.2"
   },
   "lean": [],
   "prove2me_statement_nodes": []
  },
  {
   "id": "cor-10.3",
   "kind": "corollary",
   "relation": "specialization",
   "confidence": "medium",
   "summary": "The second identity R_{(n,1)}^∨ = R_{(n,1)} is recip_main (second clause) at σ = {(n,1)}. The first identity needs (10.1), which is not formalized.",
   "label": "Corollary 10.3",
   "title": "totally ramified reciprocity",
   "paper_line": 1091,
   "anchor": {
    "statement": "cor-10.3"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.recip_main",
     "role": "second clause at σ = {(n,1)}",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Reciprocity/Main.lean",
     "line_start": 278,
     "line_end": 299,
     "decl_line": 286,
     "docstring": "**Theorem R (reciprocity).** For `n > 0` and every factorization type `σ`:\nthe universal monic density is the root-law coefficient with `q ↦ 1/q` substituted,\n`A_{n,σ}(q) = B_{n,σ}(1/q)` (where `B_{n,σ}` is the coefficient of `σ` in the root law\n`rootLaw n`), and the universal projective density is self-reciprocal,\n`R_{n,σ}(1/q) = R_{n,σ}(q)`; both as identities of rational functions in `q`.\n\nThe certified form also assumed `ValidType σ` and `typeDegree σ = n`, which the proof does not use.\nThe hypothesis `0 < n` is used (`rootLaw 0` is defined separately).",
     "statement": "theorem recip_main (n : ℕ) (hn : 0 < n) (σ : FactorType) :\n    (monicExpr n σ).rational =\n      ((lawCoeff (rootLaw n) σ).subst (.inv .var)).rational ∧\n    (projectiveExpr n σ).rational =\n      ((projectiveExpr n σ).subst (.inv .var)).rational",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1319",
       "theorem_name": "SurfaceBlowupV2.recip_main",
       "kind": "theorem",
       "theorem_id": "d2e6cc1d-4b22-4600-ab89-1f7ce617408d",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/d2e6cc1d-4b22-4600-ab89-1f7ce617408d",
       "blueprint_source": "RECIPROCITY_round1.md §1 Theorem 1; §7–§8"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-10.7",
   "kind": "display",
   "relation": "none",
   "confidence": "high",
   "summary": "Not formalized.",
   "label": "(10.7)",
   "title": "divisor-chain formula",
   "anchor": {
    "eq": "10.7"
   },
   "lean": [],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-10.8",
   "kind": "display",
   "relation": "check",
   "confidence": "high",
   "summary": "Not formalized in general. Checked instances: ℓ = 3 at q = 3 gives 10/121 (monicExpr_three_totally_ramified_eval_three, and as a density monicDensity_three_totally_ramified_of_card_eq_three); A_{(2,1)} = 1/(q+1) for every q > 1 (monicExpr_two_eval).",
   "label": "(10.8)",
   "title": "prime degree closed form",
   "anchor": {
    "eq": "10.8"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.Tests.monicExpr_three_totally_ramified_eval_three",
     "role": "ℓ = 3, q = 3",
     "kind": "theorem",
     "private": false,
     "file": "Tests/Regression.lean",
     "line_start": 1904,
     "line_end": 1906,
     "decl_line": 1905,
     "docstring": "Totally ramified cubics at `q = 3`: `A_{3,(3,1)}(3) = 10/121`.",
     "statement": "theorem monicExpr_three_totally_ramified_eval_three : (monicExpr 3 {(3,1)}).eval 3 = 10/121",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1130",
       "theorem_name": "SurfaceBlowupV2.cubic_totally_ramified_at_three",
       "kind": "theorem",
       "theorem_id": "cf77f3dc-9aea-453d-aab4-e9856ba86fc4",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/cf77f3dc-9aea-453d-aab4-e9856ba86fc4",
       "blueprint_source": "recursion regression guard (cycle 12): checks/recursion_output.md and the paper's (10.3)/(10.4); not on the chain to N114/N660"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.Tests.monicDensity_three_totally_ramified_of_card_eq_three",
     "role": "as a density",
     "kind": "theorem",
     "private": false,
     "file": "Tests/Regression.lean",
     "line_start": 1964,
     "line_end": 1969,
     "decl_line": 1965,
     "docstring": "Residue field `𝔽₃`: a random monic cubic is totally ramified with probability `10/121`.",
     "statement": "theorem monicDensity_three_totally_ramified_of_card_eq_three (htop : IsAdic (maximalIdeal O))\n    (hq : Nat.card (ResidueField O) = 3) : monicDensity O 3 {(3,1)} = ENNReal.ofReal (10/121)",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n  [IsAdicComplete (maximalIdeal O) O] [Finite (ResidueField O)] [TopologicalSpace O]\n  [IsTopologicalRing O] [CompactSpace O] [T2Space O] [SecondCountableTopology O]\n  [MeasurableSpace O] [BorelSpace O]",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.Tests.monicExpr_two_eval",
     "role": "A_{(2,1)} = 1/(q+1)",
     "kind": "theorem",
     "private": false,
     "file": "Tests/Regression.lean",
     "line_start": 1143,
     "line_end": 1157,
     "decl_line": 1146,
     "docstring": "**Quadratic monic densities.** For every `q > 1`, the universal monic expressions of degree `2`\ntake the values `q / (2(q + 1))` (split and inert types) and `1 / (q + 1)` (ramified type), and\nvanish on every other type.",
     "statement": "theorem monicExpr_two_eval (q : ℚ) (hq : 1 < q) (σ : FactorType) :\n    (monicExpr 2 σ).eval q =\n      (if σ = {(1,1), (1,1)} then q / (2 * (q + 1)) else 0) +\n      (if σ = {(1,2)} then q / (2 * (q + 1)) else 0) +\n      (if σ = {(2,1)} then 1 / (q + 1) else 0)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N094",
       "theorem_name": "SurfaceBlowupV2.quadratic_monic_formula",
       "kind": "theorem",
       "theorem_id": "2a69eb14-993d-4d76-894c-c70e5bbf74ea",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2a69eb14-993d-4d76-894c-c70e5bbf74ea",
       "blueprint_source": "§1 table and §10.1"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "ex-10.4",
   "kind": "example",
   "relation": "check",
   "confidence": "high",
   "summary": "The values at q = 2 are machine-checked from the definitions: A_{(4,1)}(2) = 107/1533 and R_{(4,1)}(2) = 856/15841, also as densities over every DVR with residue field 𝔽₂ and end-to-end over 𝔽₂⟦X⟧. The rational functions (10.9)–(10.10) are not.",
   "label": "Example 10.4",
   "title": "the quartic uses the same crossing",
   "paper_line": 1124,
   "anchor": {
    "statement": "ex-10.4"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.Tests.monicExpr_four_totally_ramified_eval_two",
     "role": "107/1533",
     "kind": "theorem",
     "private": false,
     "file": "Tests/Regression.lean",
     "line_start": 1908,
     "line_end": 1910,
     "decl_line": 1909,
     "docstring": "Totally ramified quartics at `q = 2`: `A_{4,(4,1)}(2) = 107/1533`.",
     "statement": "theorem monicExpr_four_totally_ramified_eval_two : (monicExpr 4 {(4,1)}).eval 2 = 107/1533",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1126",
       "theorem_name": "SurfaceBlowupV2.quartic_totally_ramified_at_two",
       "kind": "theorem",
       "theorem_id": "f820da5a-f0b0-40ac-8262-1ff60ba88c19",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/f820da5a-f0b0-40ac-8262-1ff60ba88c19",
       "blueprint_source": "recursion regression guard (cycle 12): checks/recursion_output.md and the paper's (10.3)/(10.4); not on the chain to N114/N660"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.Tests.projectiveExpr_four_totally_ramified_eval_two",
     "role": "856/15841",
     "kind": "theorem",
     "private": false,
     "file": "Tests/Regression.lean",
     "line_start": 1912,
     "line_end": 1915,
     "decl_line": 1913,
     "docstring": "Totally ramified binary quartic forms at `q = 2`: `B_{4,(4,1)}(2) = 856/15841`.",
     "statement": "theorem projectiveExpr_four_totally_ramified_eval_two :\n    (projectiveExpr 4 {(4,1)}).eval 2 = 856/15841",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N1127",
       "theorem_name": "SurfaceBlowupV2.quartic_projective_totally_ramified_at_two",
       "kind": "theorem",
       "theorem_id": "65590711-de5c-42b7-9d5e-c3e5f5731450",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/65590711-de5c-42b7-9d5e-c3e5f5731450",
       "blueprint_source": "recursion regression guard (cycle 12): checks/recursion_output.md and the paper's (10.3)/(10.4); not on the chain to N114/N660"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.Tests.monicDensity_four_totally_ramified_of_card_eq_two",
     "role": "as a density",
     "kind": "theorem",
     "private": false,
     "file": "Tests/Regression.lean",
     "line_start": 1971,
     "line_end": 1977,
     "decl_line": 1972,
     "docstring": "Residue field `𝔽₂`: a random monic quartic is totally ramified with probability `107/1533`.",
     "statement": "theorem monicDensity_four_totally_ramified_of_card_eq_two (htop : IsAdic (maximalIdeal O))\n    (hq : Nat.card (ResidueField O) = 2) :\n    monicDensity O 4 {(4,1)} = ENNReal.ofReal (107/1533)",
     "section_variables": "variable (O : Type) [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]\n  [IsAdicComplete (maximalIdeal O) O] [Finite (ResidueField O)] [TopologicalSpace O]\n  [IsTopologicalRing O] [CompactSpace O] [T2Space O] [SecondCountableTopology O]\n  [MeasurableSpace O] [BorelSpace O]",
     "prove2me": []
    },
    {
     "name": "SurfaceBlowup.Tests.monicDensity_powerSeries_zmod_two_four_totally_ramified",
     "role": "end-to-end over 𝔽₂⟦X⟧",
     "kind": "theorem",
     "private": false,
     "file": "Tests/Regression.lean",
     "line_start": 2010,
     "line_end": 2016,
     "decl_line": 2012,
     "docstring": "End-to-end test: over `𝔽₂⟦X⟧`, a random monic quartic is totally ramified with probability\n`107/1533`.",
     "statement": "theorem monicDensity_powerSeries_zmod_two_four_totally_ramified :\n    monicDensity (ZMod 2)⟦X⟧ 4 {(4,1)} = ENNReal.ofReal (107/1533)",
     "section_variables": "",
     "prove2me": []
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-11.1",
   "kind": "display",
   "relation": "none",
   "confidence": "high",
   "summary": "Not formalized.",
   "label": "(11.1)–(11.3)",
   "title": "root-count equations",
   "anchor": {
    "eq": "11.1"
   },
   "also_tags": [
    "11.2",
    "11.3"
   ],
   "lean": [],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-11.6",
   "kind": "display",
   "relation": "none",
   "confidence": "high",
   "summary": "Not formalized.",
   "label": "(11.4)–(11.6)",
   "title": "BCFG equation (7)",
   "anchor": {
    "eq": "11.6"
   },
   "also_tags": [
    "11.4",
    "11.5"
   ],
   "lean": [],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-11.7",
   "kind": "display",
   "relation": "none",
   "confidence": "high",
   "summary": "Not formalized.",
   "label": "(11.7)",
   "title": "first moments",
   "anchor": {
    "eq": "11.7"
   },
   "lean": [],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-11.8",
   "kind": "display",
   "relation": "none",
   "confidence": "high",
   "summary": "Not formalized. The instance s_2 = q/(2(q+1)) is the split coefficient of monicExpr_two_eval, and the non-monic value 1/2 is projectiveExpr_two_eval.",
   "label": "(11.8)",
   "title": "BGMR splitting recursion",
   "anchor": {
    "eq": "11.8"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.Tests.monicExpr_two_eval",
     "role": "instance s_2",
     "kind": "theorem",
     "private": false,
     "file": "Tests/Regression.lean",
     "line_start": 1143,
     "line_end": 1157,
     "decl_line": 1146,
     "docstring": "**Quadratic monic densities.** For every `q > 1`, the universal monic expressions of degree `2`\ntake the values `q / (2(q + 1))` (split and inert types) and `1 / (q + 1)` (ramified type), and\nvanish on every other type.",
     "statement": "theorem monicExpr_two_eval (q : ℚ) (hq : 1 < q) (σ : FactorType) :\n    (monicExpr 2 σ).eval q =\n      (if σ = {(1,1), (1,1)} then q / (2 * (q + 1)) else 0) +\n      (if σ = {(1,2)} then q / (2 * (q + 1)) else 0) +\n      (if σ = {(2,1)} then 1 / (q + 1) else 0)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N094",
       "theorem_name": "SurfaceBlowupV2.quadratic_monic_formula",
       "kind": "theorem",
       "theorem_id": "2a69eb14-993d-4d76-894c-c70e5bbf74ea",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2a69eb14-993d-4d76-894c-c70e5bbf74ea",
       "blueprint_source": "§1 table and §10.1"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.Tests.projectiveExpr_two_eval",
     "role": "instance: non-monic split probability 1/2",
     "kind": "theorem",
     "private": false,
     "file": "Tests/Regression.lean",
     "line_start": 1159,
     "line_end": 1175,
     "decl_line": 1162,
     "docstring": "**Quadratic projective densities.** For every `q > 1`, the universal projective expressions of\ndegree `2` take the values `1/2` (split), `(q² - q + 1) / (2(q² + q + 1))` (inert) and\n`q / (q² + q + 1)` (ramified), and vanish on every other type.",
     "statement": "theorem projectiveExpr_two_eval (q : ℚ) (hq : 1 < q) (σ : FactorType) :\n    (projectiveExpr 2 σ).eval q =\n      (if σ = {(1,1), (1,1)} then 1 / 2 else 0) +\n      (if σ = {(1,2)} then (q ^ 2 - q + 1) / (2 * (q ^ 2 + q + 1)) else 0) +\n      (if σ = {(2,1)} then q / (q ^ 2 + q + 1) else 0)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N095",
       "theorem_name": "SurfaceBlowupV2.quadratic_projective_formula",
       "kind": "theorem",
       "theorem_id": "5a30f56f-8a9c-4dbd-8d24-db3ae09452fb",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/5a30f56f-8a9c-4dbd-8d24-db3ae09452fb",
       "blueprint_source": "§1 table and §10.1"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-11.9",
   "kind": "display",
   "relation": "none",
   "confidence": "high",
   "summary": "Not formalized. The instance α_2^ur = q/(2(q+1)) is the inert coefficient of monicExpr_two_eval.",
   "label": "(11.9)–(11.10)",
   "title": "unramified-field recursion",
   "anchor": {
    "eq": "11.9"
   },
   "also_tags": [
    "11.10"
   ],
   "lean": [
    {
     "name": "SurfaceBlowup.Tests.monicExpr_two_eval",
     "role": "instance α_2^ur",
     "kind": "theorem",
     "private": false,
     "file": "Tests/Regression.lean",
     "line_start": 1143,
     "line_end": 1157,
     "decl_line": 1146,
     "docstring": "**Quadratic monic densities.** For every `q > 1`, the universal monic expressions of degree `2`\ntake the values `q / (2(q + 1))` (split and inert types) and `1 / (q + 1)` (ramified type), and\nvanish on every other type.",
     "statement": "theorem monicExpr_two_eval (q : ℚ) (hq : 1 < q) (σ : FactorType) :\n    (monicExpr 2 σ).eval q =\n      (if σ = {(1,1), (1,1)} then q / (2 * (q + 1)) else 0) +\n      (if σ = {(1,2)} then q / (2 * (q + 1)) else 0) +\n      (if σ = {(2,1)} then 1 / (q + 1) else 0)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N094",
       "theorem_name": "SurfaceBlowupV2.quadratic_monic_formula",
       "kind": "theorem",
       "theorem_id": "2a69eb14-993d-4d76-894c-c70e5bbf74ea",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/2a69eb14-993d-4d76-894c-c70e5bbf74ea",
       "blueprint_source": "§1 table and §10.1"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  },
  {
   "id": "eq-11.12",
   "kind": "display",
   "relation": "none",
   "confidence": "high",
   "summary": "Not formalized.",
   "label": "(11.11)–(11.12)",
   "title": "Shmueli's formulas",
   "anchor": {
    "eq": "11.12"
   },
   "also_tags": [
    "11.11"
   ],
   "lean": [],
   "prove2me_statement_nodes": []
  },
  {
   "id": "proof-A",
   "kind": "proof",
   "relation": "covered",
   "confidence": "low",
   "summary": "As for Lemma 4.1: only the finite-level Čech statements are formalized (surjective reductions, stabilization, threads); there is no formal completion in the Lean development.",
   "label": "Appendix A",
   "title": "passing to the formal exceptional line",
   "anchor": {
    "para": "For a tower of complexes"
   },
   "lean": [
    {
     "name": "SurfaceBlowup.actual_cech_reductions_surjective",
     "role": "surjective transition maps",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/Charts.lean",
     "line_start": 989,
     "line_end": 996,
     "decl_line": 990,
     "docstring": "The reduction maps of the Čech source and target towers are surjective.",
     "statement": "theorem actual_cech_reductions_surjective (R : Type) [CommRing R] (t x : R) (j : ℕ) :\n    Function.Surjective (cechInputReduction R t x j) ∧ Function.Surjective\n        (cechOutputReduction R t x j)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N317",
       "theorem_name": "SurfaceBlowupV2.actual_cech_reductions_surjective",
       "kind": "theorem",
       "theorem_id": "8b636582-d1b4-4071-8c16-f55960626d9c",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/8b636582-d1b4-4071-8c16-f55960626d9c",
       "blueprint_source": "restructured — G4, literal exceptional complex needed for the index in Lemma 4.1"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.actual_twisted_coker_reduction_bijective",
     "role": "eventual surjectivity / stabilization",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/CechStability.lean",
     "line_start": 37,
     "line_end": 78,
     "decl_line": 39,
     "docstring": "In the stable range `d ≤ j + 1`, the map induced by reduction between the cokernels of the\ntwisted finite Čech differentials at levels `j + 1` and `j` is a bijection.",
     "statement": "theorem actual_twisted_coker_reduction_bijective (R : Type) [CommRing R] (t x : R)\n    (hreg : RegularParameterPair R t x) (beta : BlowupRestriction R t x) (d j : ℕ) (hd : d ≤ j + 1)\n    (hnext : cechInputLattice R t x (j + 1) ≤\n      (cechOutputLattice R t x (j + 1)).comap (fullCechDifferential R t x beta d))\n    (hnow : cechInputLattice R t x j ≤\n      (cechOutputLattice R t x j).comap (fullCechDifferential R t x beta d))\n    (hcomm : (cechOutputReduction R t x j).comp\n        (finiteCechDifferential R t x beta d (j + 1) hnext) =\n      (finiteCechDifferential R t x beta d j hnow).comp (cechInputReduction R t x j)) :\n    Function.Bijective (twoTermCokerMap (finiteCechDifferential R t x beta d (j+1) hnext)\n      (finiteCechDifferential R t x beta d j hnow) (cechInputReduction R t x j)\n      (cechOutputReduction R t x j) hcomm)",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N321",
       "theorem_name": "SurfaceBlowupV2.actual_twisted_coker_reduction_bijective",
       "kind": "theorem",
       "theorem_id": "e5bdfe10-4298-45b0-83ab-0c8439e558e2",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/e5bdfe10-4298-45b0-83ab-0c8439e558e2",
       "blueprint_source": "restructured — G4, finite exceptional Cech stabilization in Lemma 4.1"
      }
     ]
    },
    {
     "name": "SurfaceBlowup.surface_threads_range",
     "role": "inverse limit of H⁰",
     "kind": "theorem",
     "private": false,
     "file": "SurfaceBlowup/Blowup/H0Comparison.lean",
     "line_start": 884,
     "line_end": 938,
     "decl_line": 886,
     "docstring": "For complete `R`, the image of `R` in Čech threads is the intersection of the kernels of the\nlevelwise twist-`0` Čech differentials.",
     "statement": "theorem surface_threads_range (R : Type) [CommRing R] (t x : R)\n    [IsAdicComplete (Ideal.span {t,x}) R] (hreg : RegularParameterPair R t x)\n    (hregSwap : RegularParameterPair R x t) (beta : BlowupRestriction R t x)\n    (hpres : ∀ j : ℕ, cechInputLattice R t x j ≤ (cechOutputLattice R t x j).comap\n    (fullCechDifferential R t x beta 0)) :\n    LinearMap.range (surfaceThreads R t x) = ⨅ j : ℕ, LinearMap.ker\n      ((finiteCechDifferential R t x beta 0 j (hpres j)).comp (cechInputThreadLinear R t x j))",
     "section_variables": "",
     "prove2me": [
      {
       "node": "N347",
       "theorem_name": "SurfaceBlowupV2.surface_threads_range",
       "kind": "theorem",
       "theorem_id": "f35ecf7c-3d44-4d16-b6f7-f7ef692ae628",
       "status": "PUBLISHED",
       "url": "https://prove2.me/theorems/f35ecf7c-3d44-4d16-b6f7-f7ef692ae628",
       "blueprint_source": "Lemma 4.1 — H^0 comparison (4.4), restructured on the actual finite two-chart complexes"
      }
     ]
    }
   ],
   "prove2me_statement_nodes": []
  }
 ],
 "displays": {
  "1.1": [
   "def-monic-model",
   "def-projective-model"
  ],
  "1.2": [
   "def-single-cluster",
   "def-Z"
  ],
  "1.3": [
   "eq-1.1"
  ],
  "1.4": [
   "eq-1.1"
  ],
  "1.5": [
   "eq-1.2",
   "thm-1.1"
  ],
  "1.6": [
   "thm-1.2"
  ],
  "1.7": [
   "eq-1.4"
  ],
  "1.8": [
   "eq-1.4"
  ],
  "1.9": [
   "eq-1.4"
  ],
  "1.10": [
   "eq-1.4"
  ],
  "1.11": [
   "eq-1.4"
  ],
  "1.12": [
   "eq-1.4"
  ],
  "1.13": [
   "eq-1.4"
  ],
  "1.14": [
   "eq-1.4"
  ],
  "2.1": [
   "eq-2.1"
  ],
  "2.2": [
   "lem-2.1"
  ],
  "2.3": [],
  "2.4": [
   "lem-2.2"
  ],
  "3.1": [
   "lem-3.1"
  ],
  "3.2": [
   "lem-3.1"
  ],
  "3.3": [
   "lem-3.1"
  ],
  "3.4": [
   "lem-3.1"
  ],
  "3.5": [
   "prop-3.2"
  ],
  "3.6": [
   "prop-3.3"
  ],
  "3.7": [
   "prop-3.3"
  ],
  "4.1": [
   "eq-4.1"
  ],
  "4.2": [
   "lem-4.1"
  ],
  "4.3": [
   "lem-4.2"
  ],
  "4.4": [
   "lem-4.2"
  ],
  "4.5": [],
  "4.6": [
   "eq-4.6"
  ],
  "4.7": [
   "eq-4.7"
  ],
  "4.8": [
   "eq-4.7"
  ],
  "4.9": [
   "prop-4.4"
  ],
  "5.1": [
   "thm-5.1"
  ],
  "5.2": [],
  "5.3": [],
  "5.4": [
   "ex-5.2"
  ],
  "5.5": [
   "ex-5.2"
  ],
  "6.1": [
   "prop-6.1"
  ],
  "6.2": [
   "eq-6.2",
   "eq-6.3"
  ],
  "6.3": [
   "eq-6.3",
   "eq-6.2"
  ],
  "6.4": [
   "eq-6.4",
   "eq-6.5"
  ],
  "6.5": [
   "eq-6.5",
   "eq-6.4"
  ],
  "6.6": [
   "eq-6.6",
   "eq-6.7"
  ],
  "6.7": [
   "eq-6.7",
   "eq-6.6"
  ],
  "6.8": [
   "thm-6.2"
  ],
  "6.9": [
   "ex-6.4"
  ],
  "6.10": [
   "ex-6.4"
  ],
  "7.1": [
   "eq-7.1"
  ],
  "7.2": [],
  "7.3": [
   "eq-7.3"
  ],
  "7.4": [
   "eq-7.4"
  ],
  "7.5": [
   "eq-7.5"
  ],
  "7.6": [
   "eq-7.6"
  ],
  "7.7": [
   "pow-rule"
  ],
  "7.8": [
   "lem-7.2"
  ],
  "7.9": [
   "eq-7.9",
   "eq-7.10",
   "eq-7.11",
   "eq-7.12"
  ],
  "7.10": [
   "eq-7.10",
   "eq-7.9",
   "eq-7.11",
   "eq-7.12"
  ],
  "7.11": [
   "eq-7.11",
   "eq-7.9",
   "eq-7.10",
   "eq-7.12"
  ],
  "7.12": [
   "eq-7.12",
   "eq-7.9",
   "eq-7.10",
   "eq-7.11"
  ],
  "7.13": [
   "ex-7.3"
  ],
  "8.1": [
   "eq-8.1",
   "eq-8.2"
  ],
  "8.2": [
   "eq-8.2",
   "eq-8.1"
  ],
  "8.3": [
   "lem-8.1"
  ],
  "8.4": [
   "lem-8.1"
  ],
  "8.5": [
   "lem-8.2"
  ],
  "8.6": [],
  "8.7": [
   "lem-8.3"
  ],
  "8.8": [],
  "8.9": [
   "eq-8.9"
  ],
  "8.10": [
   "eq-8.10"
  ],
  "9.1": [],
  "9.2": [
   "lem-9.1"
  ],
  "9.3": [
   "lem-9.1"
  ],
  "9.4": [
   "eq-9.4"
  ],
  "9.5": [
   "proof-affine"
  ],
  "9.6": [
   "proof-affine"
  ],
  "9.7": [
   "lem-9.2"
  ],
  "9.8": [
   "thm-9.3"
  ],
  "9.9": [
   "thm-9.3"
  ],
  "9.10": [
   "ex-9.4"
  ],
  "9.11": [
   "ex-9.4"
  ],
  "9.12": [
   "ex-9.4"
  ],
  "10.1": [
   "eq-10.1"
  ],
  "10.2": [
   "eq-10.1"
  ],
  "10.3": [
   "lem-10.1"
  ],
  "10.4": [
   "lem-10.1"
  ],
  "10.5": [
   "thm-10.2"
  ],
  "10.6": [
   "cor-10.3"
  ],
  "10.7": [
   "eq-10.7"
  ],
  "10.8": [
   "eq-10.8"
  ],
  "10.9": [
   "ex-10.4"
  ],
  "10.10": [
   "ex-10.4"
  ],
  "11.1": [
   "eq-11.1"
  ],
  "11.2": [
   "eq-11.1"
  ],
  "11.3": [
   "eq-11.1"
  ],
  "11.4": [
   "eq-11.6"
  ],
  "11.5": [
   "eq-11.6"
  ],
  "11.6": [
   "eq-11.6"
  ],
  "11.7": [
   "eq-11.7"
  ],
  "11.8": [
   "eq-11.8"
  ],
  "11.9": [
   "eq-11.9"
  ],
  "11.10": [
   "eq-11.9"
  ],
  "11.11": [
   "eq-11.12"
  ],
  "11.12": [
   "eq-11.12"
  ]
 },
 "reverse_index": {
  "SurfaceBlowup.Allowed": [
   {
    "id": "def-cells",
    "label": "Allowed residue ideals, cells, occupied points"
   },
   {
    "id": "eq-4.7",
    "label": "(4.7)–(4.8)"
   }
  ],
  "SurfaceBlowup.Coef": [
   {
    "id": "def-Z",
    "label": "Type variables Z_{e,f}"
   }
  ],
  "SurfaceBlowup.ConcreteSurface": [
   {
    "id": "eq-2.1",
    "label": "(2.1)"
   }
  ],
  "SurfaceBlowup.Expr": [
   {
    "id": "def-Z",
    "label": "Type variables Z_{e,f}"
   }
  ],
  "SurfaceBlowup.FactorType": [
   {
    "id": "def-type",
    "label": "Type of degree n"
   }
  ],
  "SurfaceBlowup.HasAlgebraType": [
   {
    "id": "def-reduced-type",
    "label": "Reduced-algebra type convention"
   }
  ],
  "SurfaceBlowup.HasBinaryType": [
   {
    "id": "def-projective-model",
    "label": "Projective model"
   }
  ],
  "SurfaceBlowup.HasPolynomialType": [
   {
    "id": "def-monic-model",
    "label": "Monic model"
   }
  ],
  "SurfaceBlowup.HasPolynomialTypeF": [
   {
    "id": "rem-1.3",
    "label": "Remark 1.3"
   },
   {
    "id": "def-reduced-type",
    "label": "Reduced-algebra type convention"
   },
   {
    "id": "rem-6.3",
    "label": "Remark 6.3"
   }
  ],
  "SurfaceBlowup.HasTangentDivisor": [
   {
    "id": "def-cells",
    "label": "Allowed residue ideals, cells, occupied points"
   },
   {
    "id": "eq-4.6",
    "label": "(4.6)"
   }
  ],
  "SurfaceBlowup.IdealChart": [
   {
    "id": "prop-3.2",
    "label": "Proposition 3.2"
   }
  ],
  "SurfaceBlowup.Law": [
   {
    "id": "def-Z",
    "label": "Type variables Z_{e,f}"
   }
  ],
  "SurfaceBlowup.QSer": [
   {
    "id": "eq-8.1",
    "label": "(8.1)"
   }
  ],
  "SurfaceBlowup.RootCellLaw": [
   {
    "id": "def-single-cluster",
    "label": "Cluster model and cluster law B_n"
   },
   {
    "id": "eq-7.1",
    "label": "(7.1)"
   }
  ],
  "SurfaceBlowup.Ser": [
   {
    "id": "eq-7.5",
    "label": "(7.5)"
   }
  ],
  "SurfaceBlowup.State": [
   {
    "id": "eq-2.1",
    "label": "(2.1)"
   }
  ],
  "SurfaceBlowup.State.Valid": [
   {
    "id": "eq-2.1",
    "label": "(2.1)"
   }
  ],
  "SurfaceBlowup.State.degree": [
   {
    "id": "eq-2.1",
    "label": "(2.1)"
   }
  ],
  "SurfaceBlowup.State.rank": [
   {
    "id": "def-contact-order",
    "label": "Contact-size order"
   }
  ],
  "SurfaceBlowup.SurfaceData": [
   {
    "id": "eq-2.1",
    "label": "(2.1)"
   }
  ],
  "SurfaceBlowup.SurfaceUniverse.LawStatement": [
   {
    "id": "thm-6.2",
    "label": "Theorem 6.2"
   }
  ],
  "SurfaceBlowup.TangentPattern": [
   {
    "id": "def-cells",
    "label": "Allowed residue ideals, cells, occupied points"
   }
  ],
  "SurfaceBlowup.Tests.crossing_left_one_law": [
   {
    "id": "lem-2.2",
    "label": "Lemma 2.2"
   }
  ],
  "SurfaceBlowup.Tests.crossing_right_one_law": [
   {
    "id": "lem-2.2",
    "label": "Lemma 2.2"
   }
  ],
  "SurfaceBlowup.Tests.crossing_two_two_law": [
   {
    "id": "ex-9.4",
    "label": "Example 9.4"
   }
  ],
  "SurfaceBlowup.Tests.crossing_two_two_law_at_two": [
   {
    "id": "ex-9.4",
    "label": "Example 9.4"
   }
  ],
  "SurfaceBlowup.Tests.main_dvr_powerSeries": [
   {
    "id": "thm-1.1",
    "label": "Theorem 1.1"
   }
  ],
  "SurfaceBlowup.Tests.monicDensity_four_totally_ramified_of_card_eq_two": [
   {
    "id": "ex-10.4",
    "label": "Example 10.4"
   }
  ],
  "SurfaceBlowup.Tests.monicDensity_powerSeries_zmod_two_four_totally_ramified": [
   {
    "id": "ex-10.4",
    "label": "Example 10.4"
   }
  ],
  "SurfaceBlowup.Tests.monicDensity_three_totally_ramified_of_card_eq_three": [
   {
    "id": "eq-10.8",
    "label": "(10.8)"
   }
  ],
  "SurfaceBlowup.Tests.monicDensity_two_ramified": [
   {
    "id": "eq-1.1",
    "label": "(1.3)"
   }
  ],
  "SurfaceBlowup.Tests.monicExpr_four_totally_ramified_eval_two": [
   {
    "id": "ex-10.4",
    "label": "Example 10.4"
   }
  ],
  "SurfaceBlowup.Tests.monicExpr_three_totally_ramified_eval_three": [
   {
    "id": "eq-10.8",
    "label": "(10.8)"
   }
  ],
  "SurfaceBlowup.Tests.monicExpr_two_eval": [
   {
    "id": "eq-1.1",
    "label": "(1.3)"
   },
   {
    "id": "ex-7.3",
    "label": "Example 7.3"
   },
   {
    "id": "eq-10.8",
    "label": "(10.8)"
   },
   {
    "id": "eq-11.8",
    "label": "(11.8)"
   },
   {
    "id": "eq-11.9",
    "label": "(11.9)–(11.10)"
   }
  ],
  "SurfaceBlowup.Tests.monicExpr_two_ramified_eval_two": [
   {
    "id": "ex-7.3",
    "label": "Example 7.3"
   }
  ],
  "SurfaceBlowup.Tests.projectiveDensity_two_ramified": [
   {
    "id": "ex-7.3",
    "label": "Example 7.3"
   }
  ],
  "SurfaceBlowup.Tests.projectiveExpr_four_totally_ramified_eval_two": [
   {
    "id": "ex-10.4",
    "label": "Example 10.4"
   }
  ],
  "SurfaceBlowup.Tests.projectiveExpr_two_eval": [
   {
    "id": "ex-7.3",
    "label": "Example 7.3"
   },
   {
    "id": "eq-11.8",
    "label": "(11.8)"
   }
  ],
  "SurfaceBlowup.Tests.single_two_law": [
   {
    "id": "eq-1.1",
    "label": "(1.3)"
   },
   {
    "id": "ex-6.4",
    "label": "Example 6.4"
   },
   {
    "id": "ex-7.3",
    "label": "Example 7.3"
   }
  ],
  "SurfaceBlowup.ValidType": [
   {
    "id": "def-type",
    "label": "Type of degree n"
   }
  ],
  "SurfaceBlowup.X_inv_sub_X_zpow_neg_tri_ne_zero": [
   {
    "id": "proof-affine",
    "label": "Proof of monic/cluster reciprocity"
   }
  ],
  "SurfaceBlowup.actual_cech_reductions_surjective": [
   {
    "id": "lem-4.1",
    "label": "Lemma 4.1"
   },
   {
    "id": "proof-A",
    "label": "Appendix A"
   }
  ],
  "SurfaceBlowup.actual_finite_cech_coefficient_length": [
   {
    "id": "lem-4.2",
    "label": "Lemma 4.2"
   }
  ],
  "SurfaceBlowup.actual_finite_cech_coefficient_triangular": [
   {
    "id": "lem-4.2",
    "label": "Lemma 4.2"
   }
  ],
  "SurfaceBlowup.actual_twisted_coker_reduction_bijective": [
   {
    "id": "lem-4.1",
    "label": "Lemma 4.1"
   },
   {
    "id": "proof-A",
    "label": "Appendix A"
   }
  ],
  "SurfaceBlowup.adamsCoef": [
   {
    "id": "eq-6.4",
    "label": "(6.4)"
   }
  ],
  "SurfaceBlowup.affinePolynomial": [
   {
    "id": "def-projective-model",
    "label": "Projective model"
   }
  ],
  "SurfaceBlowup.algebra_type_unramified_descent": [
   {
    "id": "eq-6.4",
    "label": "(6.4)"
   }
  ],
  "SurfaceBlowup.availablePoints": [
   {
    "id": "eq-6.3",
    "label": "(6.3)"
   }
  ],
  "SurfaceBlowup.bad_exit_null": [
   {
    "id": "proof-6.2",
    "label": "Proof of Theorem 6.2"
   }
  ],
  "SurfaceBlowup.block_descent_bijection": [
   {
    "id": "lem-7.1",
    "label": "Lemma 7.1"
   }
  ],
  "SurfaceBlowup.card_pow_eq_sum_irreducible_degrees": [
   {
    "id": "eq-6.2",
    "label": "(6.2)"
   }
  ],
  "SurfaceBlowup.cell_member_index_map": [
   {
    "id": "prop-4.4",
    "label": "Proposition 4.4"
   }
  ],
  "SurfaceBlowup.chart_layer_polynomial_coordinates": [
   {
    "id": "eq-4.1",
    "label": "(4.1)"
   }
  ],
  "SurfaceBlowup.child_ideals_curve_datum": [
   {
    "id": "lem-4.3",
    "label": "Lemma 4.3"
   }
  ],
  "SurfaceBlowup.child_order_index_and_kernel": [
   {
    "id": "prop-4.4",
    "label": "Proposition 4.4"
   }
  ],
  "SurfaceBlowup.child_volume_ratio": [
   {
    "id": "prop-6.1",
    "label": "Proposition 6.1"
   }
  ],
  "SurfaceBlowup.children": [
   {
    "id": "eq-4.7",
    "label": "(4.7)–(4.8)"
   }
  ],
  "SurfaceBlowup.children_degree_identity": [
   {
    "id": "eq-6.5",
    "label": "(6.5)"
   }
  ],
  "SurfaceBlowup.clusterSer": [
   {
    "id": "eq-7.5",
    "label": "(7.5)"
   }
  ],
  "SurfaceBlowup.clusterSer_eq_pPow": [
   {
    "id": "eq-9.4",
    "label": "(9.4)"
   }
  ],
  "SurfaceBlowup.cluster_reciprocity": [
   {
    "id": "proof-affine",
    "label": "Proof of monic/cluster reciprocity"
   },
   {
    "id": "thm-9.3",
    "label": "Theorem 9.3"
   }
  ],
  "SurfaceBlowup.cluster_reciprocity_one": [
   {
    "id": "proof-affine",
    "label": "Proof of monic/cluster reciprocity"
   }
  ],
  "SurfaceBlowup.cluster_reciprocity_step": [
   {
    "id": "proof-affine",
    "label": "Proof of monic/cluster reciprocity"
   }
  ],
  "SurfaceBlowup.coeff_clusterSer_eq_coeff_qact": [
   {
    "id": "eq-7.11",
    "label": "(S) = (7.11)"
   },
   {
    "id": "eq-8.9",
    "label": "(8.9)"
   },
   {
    "id": "eq-9.4",
    "label": "(9.4)"
   }
  ],
  "SurfaceBlowup.coeff_eulerSer": [
   {
    "id": "lem-7.2",
    "label": "lem-7.2"
   },
   {
    "id": "eq-7.9",
    "label": "(G) = (7.9)"
   }
  ],
  "SurfaceBlowup.coeff_pPow_sub_of_scongr": [
   {
    "id": "pow-rule",
    "label": "Pow_v and the first-difference rule"
   }
  ],
  "SurfaceBlowup.coeff_qact_crossingQ_gaussPhi_eulerSer": [
   {
    "id": "eq-7.11",
    "label": "(S) = (7.11)"
   }
  ],
  "SurfaceBlowup.coeff_qact_gaussPhi_of_lt": [
   {
    "id": "eq-8.10",
    "label": "(8.10)"
   }
  ],
  "SurfaceBlowup.coefficientMeasure": [
   {
    "id": "def-monic-model",
    "label": "Monic model"
   }
  ],
  "SurfaceBlowup.concrete_crossing_state_volume": [
   {
    "id": "prop-3.3",
    "label": "Proposition 3.3"
   }
  ],
  "SurfaceBlowup.concrete_curve_order_index": [
   {
    "id": "prop-4.4",
    "label": "Proposition 4.4"
   }
  ],
  "SurfaceBlowup.concrete_infinity_boundary_contact": [
   {
    "id": "eq-4.6",
    "label": "(4.6)"
   }
  ],
  "SurfaceBlowup.concrete_member_cells_cover": [
   {
    "id": "prop-6.1",
    "label": "Proposition 6.1"
   }
  ],
  "SurfaceBlowup.concrete_member_curve_order_free": [
   {
    "id": "lem-2.1",
    "label": "Lemma 2.1"
   }
  ],
  "SurfaceBlowup.concrete_member_terminal_type": [
   {
    "id": "lem-2.2",
    "label": "Lemma 2.2"
   }
  ],
  "SurfaceBlowup.concrete_single_state_volume": [
   {
    "id": "prop-3.3",
    "label": "Proposition 3.3"
   }
  ],
  "SurfaceBlowup.concrete_strict_transform_multiplicity": [
   {
    "id": "eq-4.6",
    "label": "(4.6)"
   }
  ],
  "SurfaceBlowup.concrete_surface_curve_free_of_length": [
   {
    "id": "lem-2.1",
    "label": "Lemma 2.1"
   }
  ],
  "SurfaceBlowup.concrete_surface_special_fiber_equiv": [
   {
    "id": "lem-2.1",
    "label": "Lemma 2.1"
   }
  ],
  "SurfaceBlowup.concrete_two_chart_glued_generators_exist": [
   {
    "id": "lem-4.3",
    "label": "Lemma 4.3"
   }
  ],
  "SurfaceBlowup.concrete_universe_exists": [
   {
    "id": "thm-6.2",
    "label": "Theorem 6.2"
   }
  ],
  "SurfaceBlowup.concrete_zero_boundary_contact": [
   {
    "id": "eq-4.6",
    "label": "(4.6)"
   }
  ],
  "SurfaceBlowup.coordinate_hyperplane_null": [
   {
    "id": "disc-null",
    "label": "Discriminant locus is null"
   }
  ],
  "SurfaceBlowup.coordinate_ideal_cell_bijection": [
   {
    "id": "prop-3.2",
    "label": "Proposition 3.2"
   }
  ],
  "SurfaceBlowup.coordinate_transition_congruence": [
   {
    "id": "lem-3.1",
    "label": "Lemma 3.1"
   }
  ],
  "SurfaceBlowup.crossingQ": [
   {
    "id": "eq-7.5",
    "label": "(7.5)"
   },
   {
    "id": "eq-8.2",
    "label": "(8.2)"
   }
  ],
  "SurfaceBlowup.crossingQ_eq_qmul_qplus_qdiag_qminus": [
   {
    "id": "eq-7.12",
    "label": "(T) = (7.12)"
   },
   {
    "id": "lem-8.2",
    "label": "Lemma 8.2"
   }
  ],
  "SurfaceBlowup.crossingQ_symm": [
   {
    "id": "eq-7.4",
    "label": "(H) = (7.4)"
   }
  ],
  "SurfaceBlowup.crossingResidueIdeals": [
   {
    "id": "def-cells",
    "label": "Allowed residue ideals, cells, occupied points"
   }
  ],
  "SurfaceBlowup.crossing_residue_ideal_count": [
   {
    "id": "prop-3.3",
    "label": "Proposition 3.3"
   }
  ],
  "SurfaceBlowup.crossing_special_fiber_length": [
   {
    "id": "lem-2.1",
    "label": "Lemma 2.1"
   }
  ],
  "SurfaceBlowup.crossing_state_volume": [
   {
    "id": "prop-3.3",
    "label": "Proposition 3.3"
   }
  ],
  "SurfaceBlowup.curve_limit_level_map_surjective": [
   {
    "id": "lem-4.1",
    "label": "Lemma 4.1"
   }
  ],
  "SurfaceBlowup.descended_polynomial_type": [
   {
    "id": "lem-7.1",
    "label": "Lemma 7.1"
   }
  ],
  "SurfaceBlowup.dilate_pPow": [
   {
    "id": "eq-7.6",
    "label": "(7.6)"
   }
  ],
  "SurfaceBlowup.division_linear_equivalence": [
   {
    "id": "lem-3.1",
    "label": "Lemma 3.1"
   }
  ],
  "SurfaceBlowup.divisorCount": [
   {
    "id": "eq-6.3",
    "label": "(6.3)"
   }
  ],
  "SurfaceBlowup.divisorProbability": [
   {
    "id": "prop-6.1",
    "label": "Proposition 6.1"
   }
  ],
  "SurfaceBlowup.eulerSer": [
   {
    "id": "lem-7.2",
    "label": "lem-7.2"
   },
   {
    "id": "eq-7.10",
    "label": "(7.10)"
   }
  ],
  "SurfaceBlowup.exists_unique_selfPattern_single": [
   {
    "id": "eq-6.6",
    "label": "(6.6)"
   }
  ],
  "SurfaceBlowup.exitLaw": [
   {
    "id": "eq-6.6",
    "label": "(6.6)"
   }
  ],
  "SurfaceBlowup.exit_event_succ_mass": [
   {
    "id": "proof-6.2",
    "label": "Proof of Theorem 6.2"
   }
  ],
  "SurfaceBlowup.expSer_logSer": [
   {
    "id": "eq-7.6",
    "label": "(7.6)"
   }
  ],
  "SurfaceBlowup.factorInvariant": [
   {
    "id": "def-monic-model",
    "label": "Monic model"
   }
  ],
  "SurfaceBlowup.factor_cells_measure_preserving": [
   {
    "id": "lem-7.1",
    "label": "Lemma 7.1"
   }
  ],
  "SurfaceBlowup.falling": [
   {
    "id": "eq-6.3",
    "label": "(6.3)"
   }
  ],
  "SurfaceBlowup.fieldInvariant": [
   {
    "id": "def-reduced-type",
    "label": "Reduced-algebra type convention"
   }
  ],
  "SurfaceBlowup.field_invariant_unramified_tower": [
   {
    "id": "eq-6.4",
    "label": "(6.4)"
   }
  ],
  "SurfaceBlowup.finite_field_irreducible_count": [
   {
    "id": "eq-6.2",
    "label": "(6.2)"
   }
  ],
  "SurfaceBlowup.finite_support_quotient_equiv": [
   {
    "id": "lem-4.3",
    "label": "Lemma 4.3"
   }
  ],
  "SurfaceBlowup.form_cells_measure_preserving": [
   {
    "id": "lem-7.1",
    "label": "Lemma 7.1"
   }
  ],
  "SurfaceBlowup.frobenius_fixed_ring": [
   {
    "id": "def-standard-facts",
    "label": "Standard facts"
   }
  ],
  "SurfaceBlowup.gaussPhi": [
   {
    "id": "eq-7.10",
    "label": "(7.10)"
   }
  ],
  "SurfaceBlowup.gaussPhi_dilate_recipSer_clusterSer": [
   {
    "id": "eq-9.4",
    "label": "(9.4)"
   }
  ],
  "SurfaceBlowup.gaussPhi_qactRecip_gaussPhiInv": [
   {
    "id": "lem-9.1",
    "label": "Lemma 9.1"
   }
  ],
  "SurfaceBlowup.geometric_exit_sum": [
   {
    "id": "proof-6.2",
    "label": "Proof of Theorem 6.2"
   }
  ],
  "SurfaceBlowup.globalLaw": [
   {
    "id": "eq-1.2",
    "label": "(1.5)"
   },
   {
    "id": "eq-7.3",
    "label": "(7.3)"
   }
  ],
  "SurfaceBlowup.global_formula_regular": [
   {
    "id": "thm-1.1",
    "label": "Theorem 1.1"
   },
   {
    "id": "thm-6.2",
    "label": "Theorem 6.2"
   }
  ],
  "SurfaceBlowup.glued_function_exists_unique": [
   {
    "id": "lem-4.2",
    "label": "Lemma 4.2"
   }
  ],
  "SurfaceBlowup.glued_generators_exist": [
   {
    "id": "lem-4.3",
    "label": "Lemma 4.3"
   }
  ],
  "SurfaceBlowup.homogeneous_divisor_boundary_multiplicities": [
   {
    "id": "eq-4.6",
    "label": "(4.6)"
   }
  ],
  "SurfaceBlowup.idealChartSigma": [
   {
    "id": "prop-3.2",
    "label": "Proposition 3.2"
   }
  ],
  "SurfaceBlowup.ideal_chart_pushforward_independent": [
   {
    "id": "prop-3.2",
    "label": "Proposition 3.2"
   }
  ],
  "SurfaceBlowup.ideal_chart_transition_haar": [
   {
    "id": "prop-3.2",
    "label": "Proposition 3.2"
   }
  ],
  "SurfaceBlowup.initial_form_has_tangent_divisor": [
   {
    "id": "eq-4.6",
    "label": "(4.6)"
   }
  ],
  "SurfaceBlowup.integral_closure_finite_free": [
   {
    "id": "def-standard-facts",
    "label": "Standard facts"
   }
  ],
  "SurfaceBlowup.integral_closure_is_dvr": [
   {
    "id": "def-standard-facts",
    "label": "Standard facts"
   }
  ],
  "SurfaceBlowup.irreducible_count_moebius": [
   {
    "id": "eq-6.2",
    "label": "(6.2)"
   }
  ],
  "SurfaceBlowup.lawCoef": [
   {
    "id": "def-Z",
    "label": "Type variables Z_{e,f}"
   }
  ],
  "SurfaceBlowup.lawCoef_globalLaw_false": [
   {
    "id": "eq-7.9",
    "label": "(G) = (7.9)"
   }
  ],
  "SurfaceBlowup.lawCoef_globalLaw_false_eq_recipCoef": [
   {
    "id": "thm-1.2",
    "label": "Theorem 1.2"
   },
   {
    "id": "lem-9.2",
    "label": "Lemma 9.2"
   }
  ],
  "SurfaceBlowup.lawCoef_globalLaw_true": [
   {
    "id": "eq-7.9",
    "label": "(G) = (7.9)"
   }
  ],
  "SurfaceBlowup.lawCoef_single_self_term": [
   {
    "id": "eq-7.11",
    "label": "(S) = (7.11)"
   }
  ],
  "SurfaceBlowup.lawCoeff": [
   {
    "id": "def-Z",
    "label": "Type variables Z_{e,f}"
   }
  ],
  "SurfaceBlowup.lawDescend": [
   {
    "id": "eq-6.4",
    "label": "(6.4)"
   }
  ],
  "SurfaceBlowup.lawMul": [
   {
    "id": "def-Z",
    "label": "Type variables Z_{e,f}"
   }
  ],
  "SurfaceBlowup.local_law_safe": [
   {
    "id": "thm-6.2",
    "label": "Theorem 6.2"
   }
  ],
  "SurfaceBlowup.logSer_expSer": [
   {
    "id": "eq-7.6",
    "label": "(7.6)"
   }
  ],
  "SurfaceBlowup.main_dvr": [
   {
    "id": "thm-1.1",
    "label": "Theorem 1.1"
   },
   {
    "id": "rem-1.3",
    "label": "Remark 1.3"
   }
  ],
  "SurfaceBlowup.main_field_form": [
   {
    "id": "thm-1.1",
    "label": "Theorem 1.1"
   }
  ],
  "SurfaceBlowup.main_field_form_ramified": [
   {
    "id": "thm-1.1",
    "label": "Theorem 1.1"
   }
  ],
  "SurfaceBlowup.matches_divisor_degree": [
   {
    "id": "lem-4.3",
    "label": "Lemma 4.3"
   }
  ],
  "SurfaceBlowup.member_cell_box_measurable": [
   {
    "id": "thm-5.1",
    "label": "Theorem 5.1"
   }
  ],
  "SurfaceBlowup.member_cell_box_measure": [
   {
    "id": "eq-1.4",
    "label": "(1.7)"
   },
   {
    "id": "thm-5.1",
    "label": "Theorem 5.1"
   },
   {
    "id": "prop-6.1",
    "label": "Proposition 6.1"
   }
  ],
  "SurfaceBlowup.member_center_linear_part": [
   {
    "id": "thm-5.1",
    "label": "Theorem 5.1"
   }
  ],
  "SurfaceBlowup.moebiusSum_plethSum": [
   {
    "id": "eq-7.6",
    "label": "(7.6)"
   }
  ],
  "SurfaceBlowup.monicDensity": [
   {
    "id": "def-monic-model",
    "label": "Monic model"
   }
  ],
  "SurfaceBlowup.monicDensityF_eq_densityValue": [
   {
    "id": "eq-7.3",
    "label": "(7.3)"
   }
  ],
  "SurfaceBlowup.monicExpr": [
   {
    "id": "thm-1.1",
    "label": "Theorem 1.1"
   },
   {
    "id": "eq-1.2",
    "label": "(1.5)"
   }
  ],
  "SurfaceBlowup.monicPolynomial": [
   {
    "id": "def-monic-model",
    "label": "Monic model"
   }
  ],
  "SurfaceBlowup.monic_cell_law": [
   {
    "id": "lem-7.1",
    "label": "Lemma 7.1"
   }
  ],
  "SurfaceBlowup.monic_cells_partition": [
   {
    "id": "lem-7.1",
    "label": "Lemma 7.1"
   }
  ],
  "SurfaceBlowup.monic_inseparable_null": [
   {
    "id": "rem-6.3",
    "label": "Remark 6.3"
   },
   {
    "id": "disc-null",
    "label": "Discriminant locus is null"
   }
  ],
  "SurfaceBlowup.mvPolynomial_zero_null": [
   {
    "id": "disc-null",
    "label": "Discriminant locus is null"
   }
  ],
  "SurfaceBlowup.never_return_null": [
   {
    "id": "proof-6.2",
    "label": "Proof of Theorem 6.2"
   }
  ],
  "SurfaceBlowup.nonboundary_direction_count": [
   {
    "id": "eq-6.3",
    "label": "(6.3)"
   }
  ],
  "SurfaceBlowup.nonself_child_rank_lt": [
   {
    "id": "def-contact-order",
    "label": "Contact-size order"
   },
   {
    "id": "eq-6.6",
    "label": "(6.6)"
   }
  ],
  "SurfaceBlowup.nonterminating_subset_return_or_bad": [
   {
    "id": "proof-6.2",
    "label": "Proof of Theorem 6.2"
   }
  ],
  "SurfaceBlowup.normalizer_preserves_adic_congruence": [
   {
    "id": "lem-3.1",
    "label": "Lemma 3.1"
   }
  ],
  "SurfaceBlowup.orig_monicDensity_eq": [
   {
    "id": "rem-1.3",
    "label": "Remark 1.3"
   },
   {
    "id": "rem-6.3",
    "label": "Remark 6.3"
   }
  ],
  "SurfaceBlowup.orig_projectiveDensity_eq": [
   {
    "id": "rem-1.3",
    "label": "Remark 1.3"
   },
   {
    "id": "rem-6.3",
    "label": "Remark 6.3"
   }
  ],
  "SurfaceBlowup.otherChildren": [
   {
    "id": "eq-4.7",
    "label": "(4.7)–(4.8)"
   }
  ],
  "SurfaceBlowup.overlap_layer_laurent_coordinates": [
   {
    "id": "eq-4.1",
    "label": "(4.1)"
   }
  ],
  "SurfaceBlowup.pExp": [
   {
    "id": "eq-7.6",
    "label": "(7.6)"
   }
  ],
  "SurfaceBlowup.pLog": [
   {
    "id": "eq-7.6",
    "label": "(7.6)"
   }
  ],
  "SurfaceBlowup.pPow": [
   {
    "id": "pow-rule",
    "label": "Pow_v and the first-difference rule"
   }
  ],
  "SurfaceBlowup.pPow_pPow": [
   {
    "id": "pow-rule",
    "label": "Pow_v and the first-difference rule"
   }
  ],
  "SurfaceBlowup.patternDivisors_equiv_colorings": [
   {
    "id": "eq-6.3",
    "label": "(6.3)"
   }
  ],
  "SurfaceBlowup.patternSum": [
   {
    "id": "lem-7.2",
    "label": "lem-7.2"
   }
  ],
  "SurfaceBlowup.pattern_divisor_count": [
   {
    "id": "eq-6.3",
    "label": "(6.3)"
   }
  ],
  "SurfaceBlowup.pointCount": [
   {
    "id": "eq-6.2",
    "label": "(6.2)"
   }
  ],
  "SurfaceBlowup.primitive": [
   {
    "id": "def-projective-model",
    "label": "Projective model"
   }
  ],
  "SurfaceBlowup.prod_formalPow_adamsSer_clusterSer_scongr": [
   {
    "id": "lem-7.2",
    "label": "lem-7.2"
   }
  ],
  "SurfaceBlowup.projectiveDensity": [
   {
    "id": "def-projective-model",
    "label": "Projective model"
   }
  ],
  "SurfaceBlowup.projectiveDensityF_eq_densityValue": [
   {
    "id": "eq-7.3",
    "label": "(7.3)"
   }
  ],
  "SurfaceBlowup.projectiveExpr": [
   {
    "id": "thm-1.1",
    "label": "Theorem 1.1"
   },
   {
    "id": "eq-1.2",
    "label": "(1.5)"
   }
  ],
  "SurfaceBlowup.projectiveNormalizer": [
   {
    "id": "lem-7.1",
    "label": "Lemma 7.1"
   }
  ],
  "SurfaceBlowup.projective_cell_conditional_density": [
   {
    "id": "lem-7.1",
    "label": "Lemma 7.1"
   }
  ],
  "SurfaceBlowup.projective_cells_partition": [
   {
    "id": "lem-7.1",
    "label": "Lemma 7.1"
   }
  ],
  "SurfaceBlowup.qact": [
   {
    "id": "eq-8.9",
    "label": "(8.9)"
   }
  ],
  "SurfaceBlowup.qactRecip": [
   {
    "id": "lem-9.1",
    "label": "Lemma 9.1"
   }
  ],
  "SurfaceBlowup.qact_gaussPhi_dilate_recipSer_scongr": [
   {
    "id": "eq-9.4",
    "label": "(9.4)"
   }
  ],
  "SurfaceBlowup.qcongr_crossingQ_mul_qdagger": [
   {
    "id": "lem-8.3",
    "label": "Lemma 8.3"
   },
   {
    "id": "thm-9.3",
    "label": "Theorem 9.3"
   }
  ],
  "SurfaceBlowup.qcongr_qdiag_mul_qdagger": [
   {
    "id": "lem-8.3",
    "label": "Lemma 8.3"
   }
  ],
  "SurfaceBlowup.qdagger": [
   {
    "id": "eq-8.2",
    "label": "(8.2)"
   }
  ],
  "SurfaceBlowup.qdagger_qminus": [
   {
    "id": "lem-8.1",
    "label": "Lemma 8.1"
   }
  ],
  "SurfaceBlowup.qdagger_qmul": [
   {
    "id": "lem-8.1",
    "label": "Lemma 8.1"
   }
  ],
  "SurfaceBlowup.qdagger_qplus": [
   {
    "id": "lem-8.1",
    "label": "Lemma 8.1"
   }
  ],
  "SurfaceBlowup.qdiag_mul": [
   {
    "id": "lem-8.1",
    "label": "Lemma 8.1"
   }
  ],
  "SurfaceBlowup.qminus": [
   {
    "id": "lem-8.1",
    "label": "Lemma 8.1"
   }
  ],
  "SurfaceBlowup.qminus_qmul": [
   {
    "id": "lem-8.1",
    "label": "Lemma 8.1"
   }
  ],
  "SurfaceBlowup.qmul": [
   {
    "id": "eq-8.1",
    "label": "(8.1)"
   }
  ],
  "SurfaceBlowup.qmul_assoc": [
   {
    "id": "lem-8.1",
    "label": "Lemma 8.1"
   }
  ],
  "SurfaceBlowup.qone": [
   {
    "id": "eq-8.1",
    "label": "(8.1)"
   }
  ],
  "SurfaceBlowup.qplus": [
   {
    "id": "lem-8.1",
    "label": "Lemma 8.1"
   }
  ],
  "SurfaceBlowup.qplus_qmul": [
   {
    "id": "lem-8.1",
    "label": "Lemma 8.1"
   }
  ],
  "SurfaceBlowup.rational_divisorProbability_single": [
   {
    "id": "prop-6.1",
    "label": "Proposition 6.1"
   }
  ],
  "SurfaceBlowup.recipCoef_lawCoef_globalLaw_true": [
   {
    "id": "thm-1.2",
    "label": "Theorem 1.2"
   },
   {
    "id": "lem-9.2",
    "label": "Lemma 9.2"
   }
  ],
  "SurfaceBlowup.recipRat_projectiveNormalizer": [
   {
    "id": "lem-9.2",
    "label": "Lemma 9.2"
   }
  ],
  "SurfaceBlowup.recipSer_pPow": [
   {
    "id": "eq-7.6",
    "label": "(7.6)"
   }
  ],
  "SurfaceBlowup.recip_main": [
   {
    "id": "thm-1.2",
    "label": "Theorem 1.2"
   },
   {
    "id": "rem-1.3",
    "label": "Remark 1.3"
   },
   {
    "id": "cor-10.3",
    "label": "Corollary 10.3"
   }
  ],
  "SurfaceBlowup.recursion_crossing_law": [
   {
    "id": "proof-6.2",
    "label": "Proof of Theorem 6.2"
   }
  ],
  "SurfaceBlowup.recursion_single_law": [
   {
    "id": "proof-6.2",
    "label": "Proof of Theorem 6.2"
   }
  ],
  "SurfaceBlowup.repeated_root_one_chart_atlas": [
   {
    "id": "eq-7.1",
    "label": "(7.1)"
   }
  ],
  "SurfaceBlowup.residuePatterns": [
   {
    "id": "eq-7.3",
    "label": "(7.3)"
   }
  ],
  "SurfaceBlowup.residue_cell_mass": [
   {
    "id": "lem-7.1",
    "label": "Lemma 7.1"
   }
  ],
  "SurfaceBlowup.returnWeight": [
   {
    "id": "eq-6.6",
    "label": "(6.6)"
   }
  ],
  "SurfaceBlowup.return_event_mass": [
   {
    "id": "proof-6.2",
    "label": "Proof of Theorem 6.2"
   }
  ],
  "SurfaceBlowup.rootLaw": [
   {
    "id": "eq-1.2",
    "label": "(1.5)"
   },
   {
    "id": "def-single-cluster",
    "label": "Cluster model and cluster law B_n"
   }
  ],
  "SurfaceBlowup.root_cell_law": [
   {
    "id": "eq-1.1",
    "label": "(1.3)"
   },
   {
    "id": "thm-1.1",
    "label": "Theorem 1.1"
   },
   {
    "id": "def-single-cluster",
    "label": "Cluster model and cluster law B_n"
   },
   {
    "id": "eq-7.1",
    "label": "(7.1)"
   }
  ],
  "SurfaceBlowup.scaleType": [
   {
    "id": "eq-6.4",
    "label": "(6.4)"
   }
  ],
  "SurfaceBlowup.scaled_normalization_identity": [
   {
    "id": "lem-3.1",
    "label": "Lemma 3.1"
   }
  ],
  "SurfaceBlowup.self_patterns_of_single_state": [
   {
    "id": "eq-6.6",
    "label": "(6.6)"
   }
  ],
  "SurfaceBlowup.series_quotient_equiv_adjoinRoot": [
   {
    "id": "eq-7.1",
    "label": "(7.1)"
   }
  ],
  "SurfaceBlowup.singleResidueIdeals": [
   {
    "id": "def-cells",
    "label": "Allowed residue ideals, cells, occupied points"
   }
  ],
  "SurfaceBlowup.single_residue_ideal_count": [
   {
    "id": "prop-3.3",
    "label": "Proposition 3.3"
   }
  ],
  "SurfaceBlowup.single_special_fiber_length": [
   {
    "id": "lem-2.1",
    "label": "Lemma 2.1"
   }
  ],
  "SurfaceBlowup.single_state_volume": [
   {
    "id": "prop-3.3",
    "label": "Proposition 3.3"
   }
  ],
  "SurfaceBlowup.special_fiber_crossing_contact_regular": [
   {
    "id": "lem-2.1",
    "label": "Lemma 2.1"
   }
  ],
  "SurfaceBlowup.special_fiber_single_contact_regular": [
   {
    "id": "lem-2.1",
    "label": "Lemma 2.1"
   }
  ],
  "SurfaceBlowup.stateLaw": [
   {
    "id": "thm-6.2",
    "label": "Theorem 6.2"
   }
  ],
  "SurfaceBlowup.stateLawFuel": [
   {
    "id": "eq-6.7",
    "label": "(6.7)"
   }
  ],
  "SurfaceBlowup.stateVolume": [
   {
    "id": "prop-3.3",
    "label": "Proposition 3.3"
   }
  ],
  "SurfaceBlowup.state_law_unfold": [
   {
    "id": "eq-6.7",
    "label": "(6.7)"
   },
   {
    "id": "thm-6.2",
    "label": "Theorem 6.2"
   }
  ],
  "SurfaceBlowup.state_measure_atlas_independent": [
   {
    "id": "prop-3.2",
    "label": "Proposition 3.2"
   }
  ],
  "SurfaceBlowup.strict_chart_one_ball_measure": [
   {
    "id": "thm-5.1",
    "label": "Theorem 5.1"
   }
  ],
  "SurfaceBlowup.strict_quotient_cokernel_length": [
   {
    "id": "thm-5.1",
    "label": "Theorem 5.1"
   }
  ],
  "SurfaceBlowup.strict_transform_bijOn_child_ideals": [
   {
    "id": "prop-4.4",
    "label": "Proposition 4.4"
   }
  ],
  "SurfaceBlowup.strict_transform_injOn_fixed_tangent_cell": [
   {
    "id": "prop-4.4",
    "label": "Proposition 4.4"
   }
  ],
  "SurfaceBlowup.strict_transform_mapsTo_child_ideals": [
   {
    "id": "eq-4.7",
    "label": "(4.7)–(4.8)"
   }
  ],
  "SurfaceBlowup.surfaceStateSet": [
   {
    "id": "eq-2.1",
    "label": "(2.1)"
   }
  ],
  "SurfaceBlowup.surface_threads_injective": [
   {
    "id": "lem-4.2",
    "label": "Lemma 4.2"
   }
  ],
  "SurfaceBlowup.surface_threads_range": [
   {
    "id": "lem-4.1",
    "label": "Lemma 4.1"
   },
   {
    "id": "lem-4.2",
    "label": "Lemma 4.2"
   },
   {
    "id": "proof-A",
    "label": "Appendix A"
   }
  ],
  "SurfaceBlowup.tangentCount": [
   {
    "id": "eq-6.3",
    "label": "(6.3)"
   }
  ],
  "SurfaceBlowup.tangent_divisor_unique": [
   {
    "id": "prop-6.1",
    "label": "Proposition 6.1"
   }
  ],
  "SurfaceBlowup.terminal_curve_order_dvr": [
   {
    "id": "lem-2.2",
    "label": "Lemma 2.2"
   }
  ],
  "SurfaceBlowup.terminal_field_invariant": [
   {
    "id": "lem-2.2",
    "label": "Lemma 2.2"
   }
  ],
  "SurfaceBlowup.terminal_law": [
   {
    "id": "lem-2.2",
    "label": "Lemma 2.2"
   }
  ],
  "SurfaceBlowup.two_chart_global_function_exists": [
   {
    "id": "lem-4.3",
    "label": "Lemma 4.3"
   }
  ],
  "SurfaceBlowup.typeDegree": [
   {
    "id": "def-type",
    "label": "Type of degree n"
   }
  ],
  "SurfaceBlowup.unique_scaled_generator_normalization": [
   {
    "id": "lem-3.1",
    "label": "Lemma 3.1"
   }
  ],
  "SurfaceBlowup.universal_law_statement": [
   {
    "id": "thm-6.2",
    "label": "Theorem 6.2"
   }
  ],
  "SurfaceBlowup.unramified_coefficient_measure_pi": [
   {
    "id": "thm-5.1",
    "label": "Theorem 5.1"
   }
  ],
  "SurfaceBlowup.unramified_is_dvr": [
   {
    "id": "def-standard-facts",
    "label": "Standard facts"
   }
  ]
 }
}