Skip to content

Commit c803bf3

Browse files
lalaluneclaude
andcommitted
feat(Verified-zkEVM#138): cleared successor witness, t+1 analogue of cleared base
Add the cleared *successor* target to AlphaWeight.lean, mirroring the landed cleared base witness alphaWeight_zero_cleared_fixed. Clearing the full W^{t+2}*xi^{2t+1} denominator off alphaGenuine (t+1) makes betaHensel (t+1) itself the O-preimage (supplied by the lift identity) -- so no W-divisibility obstruction survives clearing. The genuine residual separates to ONLY the weight bound on betaHensel (t+1) (the per-term WALL for t>=1). New declarations (axiom-clean, [propext, Classical.choice, Quot.sound]): - AlphaGenuineRegularWeightLe_succ_cleared (predicate) - AlphaGenuineRegularWeightLe_succ_cleared.of_lift - DivWeightLe_succ_cleared (predicate) + of_betaWeight / betaWeight - divWeight_succ_cleared_iff_betaWeight_succ - AlphaGenuineRegularWeightLe_succ_cleared.of_divWeight_succ_cleared Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 855d906 commit c803bf3

1 file changed

Lines changed: 93 additions & 0 deletions

File tree

ArkLib/Data/CodingTheory/ProximityGap/BCIKS20/AlphaWeight.lean

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,6 +1046,93 @@ theorem alphaWeight_zero_cleared_iff_divWeight_zero_cleared
10461046
· exact DivWeightLe_zero_cleared.of_alphaWeight_zero_cleared H x₀ R hHyp hH
10471047
· exact AlphaGenuineRegularWeightLe_zero_cleared.of_divWeight_zero_cleared H x₀ R hHyp hH
10481048

1049+
/-! ### 2c. The cleared *successor* target — the `t + 1` analogue of the cleared base witness
1050+
1051+
The cleared base witness (`alphaWeight_zero_cleared_fixed`) sidesteps the `α₀ = T/W` regularity
1052+
obstruction by multiplying through the single `W` factor: `βHensel 0` *itself* (not a quotient)
1053+
is the witness, so no `W𝒪`-divisibility is required. The same structural move works at every
1054+
successor order: clearing the full `W^{t+2}·ξ^{2t+1}` denominator of `αGenuine (t+1)` turns the
1055+
target into one whose witness is `βHensel (t+1)` itself, supplied directly by the lift identity.
1056+
1057+
The genuine residual therefore separates cleanly: existence of the cleared 𝒪-preimage is
1058+
*unconditional* given the lift identity (no `W`/`ξ`-divisibility obstruction survives clearing),
1059+
and the *only* remaining content is the weight bound on `βHensel (t+1)` — the documented per-term
1060+
WALL for `t ≥ 1`, and PROVEN unconditionally for `t = 0` (`βHensel_weight_bound_zero`). -/
1061+
1062+
/-- The cleared successor target: after clearing the full `W^{t+2}·ξ^{2t+1}` denominator off
1063+
`αGenuine (t+1)`, the cleared coefficient has an 𝒪-preimage of `Λ_𝒪`-weight `≤ B`. -/
1064+
def AlphaGenuineRegularWeightLe_succ_cleared (x₀ : F) (R : F[X][X][Y])
1065+
(hHyp : ClaimA2.Hypotheses x₀ R H) (hH : 0 < H.natDegree) (D : ℕ) (t : ℕ) (B : ℕ) : Prop :=
1066+
∃ a : 𝒪 H,
1067+
embeddingOf𝒪Into𝕃 H a =
1068+
αGenuine H x₀ R hHyp (t + 1)
1069+
* (liftToFunctionField (H := H) H.leadingCoeff) ^ (t + 1 + 1)
1070+
* (embeddingOf𝒪Into𝕃 H (ClaimA2.ξ x₀ R H hHyp)) ^ (2 * (t + 1) - 1)
1071+
∧ weight_Λ_over_𝒪 hH a D ≤ WithBot.some B
1072+
1073+
/-- **Cleared successor witness from the lift identity.** The successor analogue of
1074+
`alphaWeight_zero_cleared_fixed`: `βHensel (t+1)` *itself* discharges the cleared successor target.
1075+
The lift identity says its embedding is exactly the cleared coefficient, and any proven
1076+
`Λ_𝒪`-bound `B` on `βHensel (t+1)` is the witness weight. Unlike the un-cleared
1077+
`AlphaGenuineRegularWeightLe`, no `W`-divisibility obstruction arises — clearing keeps the witness
1078+
in `𝒪`. The residual is *only* the weight bound `hB` (the per-term WALL for `t ≥ 1`). -/
1079+
theorem AlphaGenuineRegularWeightLe_succ_cleared.of_lift (x₀ : F) (R : F[X][X][Y])
1080+
(hHyp : ClaimA2.Hypotheses x₀ R H) (hH : 0 < H.natDegree) {D : ℕ} (t : ℕ) {B : ℕ}
1081+
(hlift :
1082+
embeddingOf𝒪Into𝕃 H (βHensel H x₀ R hHyp (t + 1))
1083+
= αGenuine H x₀ R hHyp (t + 1)
1084+
* (liftToFunctionField (H := H) H.leadingCoeff) ^ (t + 1 + 1)
1085+
* (embeddingOf𝒪Into𝕃 H (ClaimA2.ξ x₀ R H hHyp)) ^ (2 * (t + 1) - 1))
1086+
(hB : weight_Λ_over_𝒪 hH (βHensel H x₀ R hHyp (t + 1)) D ≤ WithBot.some B) :
1087+
AlphaGenuineRegularWeightLe_succ_cleared H x₀ R hHyp hH D t B :=
1088+
⟨βHensel H x₀ R hHyp (t + 1), hlift, hB⟩
1089+
1090+
/-- The cleared successor beta-side target: `βHensel (t+1)` itself has a weight-`≤ B`
1091+
representative. This is the `t + 1` analogue of `DivWeightLe_zero_cleared`. -/
1092+
def DivWeightLe_succ_cleared (x₀ : F) (R : F[X][X][Y])
1093+
(hHyp : ClaimA2.Hypotheses x₀ R H) (hH : 0 < H.natDegree) (D : ℕ) (t : ℕ) (B : ℕ) : Prop :=
1094+
∃ a : 𝒪 H,
1095+
βHensel H x₀ R hHyp (t + 1) = a ∧ weight_Λ_over_𝒪 hH a D ≤ WithBot.some B
1096+
1097+
/-- Build the cleared successor div-weight target from the direct beta-side weight bound. -/
1098+
theorem DivWeightLe_succ_cleared.of_betaWeight (x₀ : F) (R : F[X][X][Y])
1099+
(hHyp : ClaimA2.Hypotheses x₀ R H) (hH : 0 < H.natDegree) {D : ℕ} (t : ℕ) {B : ℕ}
1100+
(hwt : weight_Λ_over_𝒪 hH (βHensel H x₀ R hHyp (t + 1)) D ≤ WithBot.some B) :
1101+
DivWeightLe_succ_cleared H x₀ R hHyp hH D t B :=
1102+
⟨βHensel H x₀ R hHyp (t + 1), rfl, hwt⟩
1103+
1104+
/-- Project the direct beta-side weight bound from the cleared successor div-weight target. -/
1105+
theorem DivWeightLe_succ_cleared.betaWeight (x₀ : F) (R : F[X][X][Y])
1106+
(hHyp : ClaimA2.Hypotheses x₀ R H) (hH : 0 < H.natDegree) {D : ℕ} {t : ℕ} {B : ℕ}
1107+
(hdiv : DivWeightLe_succ_cleared H x₀ R hHyp hH D t B) :
1108+
weight_Λ_over_𝒪 hH (βHensel H x₀ R hHyp (t + 1)) D ≤ WithBot.some B := by
1109+
obtain ⟨a, hβ, hwt⟩ := hdiv
1110+
simpa [hβ] using hwt
1111+
1112+
/-- The cleared successor div-weight target is exactly the beta-side weight bound. -/
1113+
theorem divWeight_succ_cleared_iff_betaWeight_succ (x₀ : F) (R : F[X][X][Y])
1114+
(hHyp : ClaimA2.Hypotheses x₀ R H) (hH : 0 < H.natDegree) (D : ℕ) (t : ℕ) (B : ℕ) :
1115+
DivWeightLe_succ_cleared H x₀ R hHyp hH D t B ↔
1116+
weight_Λ_over_𝒪 hH (βHensel H x₀ R hHyp (t + 1)) D ≤ WithBot.some B := by
1117+
constructor
1118+
· exact DivWeightLe_succ_cleared.betaWeight H x₀ R hHyp hH
1119+
· exact DivWeightLe_succ_cleared.of_betaWeight H x₀ R hHyp hH t
1120+
1121+
/-- Transport the cleared successor div-weight target to the cleared alpha successor target,
1122+
given the lift identity at `t + 1`. The cleared coefficient's 𝒪-preimage is `βHensel (t+1)`. -/
1123+
theorem AlphaGenuineRegularWeightLe_succ_cleared.of_divWeight_succ_cleared (x₀ : F)
1124+
(R : F[X][X][Y]) (hHyp : ClaimA2.Hypotheses x₀ R H) (hH : 0 < H.natDegree) {D : ℕ} (t : ℕ)
1125+
{B : ℕ}
1126+
(hlift :
1127+
embeddingOf𝒪Into𝕃 H (βHensel H x₀ R hHyp (t + 1))
1128+
= αGenuine H x₀ R hHyp (t + 1)
1129+
* (liftToFunctionField (H := H) H.leadingCoeff) ^ (t + 1 + 1)
1130+
* (embeddingOf𝒪Into𝕃 H (ClaimA2.ξ x₀ R H hHyp)) ^ (2 * (t + 1) - 1))
1131+
(hdiv : DivWeightLe_succ_cleared H x₀ R hHyp hH D t B) :
1132+
AlphaGenuineRegularWeightLe_succ_cleared H x₀ R hHyp hH D t B :=
1133+
AlphaGenuineRegularWeightLe_succ_cleared.of_lift H x₀ R hHyp hH t hlift
1134+
(DivWeightLe_succ_cleared.betaWeight H x₀ R hHyp hH hdiv)
1135+
10491136
/-- **Corollary: `W𝒪 ∣ βHensel 0` is *necessary* for `AlphaGenuineRegularWeightLe`.** If the carved
10501137
link holds (at the `t = 0` instance), then `W𝒪` divides `βHensel 0` in `𝒪 H`. This is the precise,
10511138
machine-checked statement of the `α₀ = T/W` regularity obstruction: the carve forces a clearing
@@ -1572,6 +1659,12 @@ end BCIKS20.HenselNumerator
15721659
#print axioms BCIKS20.HenselNumerator.AlphaWeight.DivWeightLe_zero_cleared.of_alphaWeight_zero_cleared
15731660
#print axioms BCIKS20.HenselNumerator.AlphaWeight.AlphaGenuineRegularWeightLe_zero_cleared.of_divWeight_zero_cleared
15741661
#print axioms BCIKS20.HenselNumerator.AlphaWeight.alphaWeight_zero_cleared_iff_divWeight_zero_cleared
1662+
#print axioms BCIKS20.HenselNumerator.AlphaWeight.AlphaGenuineRegularWeightLe_succ_cleared
1663+
#print axioms BCIKS20.HenselNumerator.AlphaWeight.AlphaGenuineRegularWeightLe_succ_cleared.of_lift
1664+
#print axioms BCIKS20.HenselNumerator.AlphaWeight.DivWeightLe_succ_cleared.of_betaWeight
1665+
#print axioms BCIKS20.HenselNumerator.AlphaWeight.DivWeightLe_succ_cleared.betaWeight
1666+
#print axioms BCIKS20.HenselNumerator.AlphaWeight.divWeight_succ_cleared_iff_betaWeight_succ
1667+
#print axioms BCIKS20.HenselNumerator.AlphaWeight.AlphaGenuineRegularWeightLe_succ_cleared.of_divWeight_succ_cleared
15751668
#print axioms BCIKS20.HenselNumerator.AlphaWeight.W𝒪_dvd_βHensel_zero_of_alphaWeight
15761669
#print axioms BCIKS20.HenselNumerator.AlphaWeight.DivWeightLe_zero.of_alphaWeight_zero
15771670
#print axioms BCIKS20.HenselNumerator.AlphaWeight.AlphaGenuineRegularWeightLe_zero.of_divWeight_zero

0 commit comments

Comments
 (0)