Skip to content

Commit 4a352c6

Browse files
committed
feat(Verified-zkEVM#138): assemble div-weight from alpha cases
1 parent cd3e2ed commit 4a352c6

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

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

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,24 @@ theorem AlphaGenuineRegularWeightLe.of_divWeight_cases (x₀ : F) (R : F[X][X][Y
492492
AlphaGenuineRegularWeightLe H x₀ R hHyp hH D :=
493493
(alphaWeight_iff_divWeight_cases H x₀ R hHyp hH D hlift).2 ⟨h0, hsucc⟩
494494

495+
/-- Assemble the concrete `𝒪`-divisibility form from carved alpha-weight base and successor cases,
496+
given the lift identity. This is the dual case-wise constructor to
497+
`AlphaGenuineRegularWeightLe.of_divWeight_cases`. -/
498+
theorem DivWeightLe.of_alphaWeight_cases (x₀ : F) (R : F[X][X][Y])
499+
(hHyp : ClaimA2.Hypotheses x₀ R H) (hH : 0 < H.natDegree) (D : ℕ)
500+
(hlift : ∀ t : ℕ,
501+
embeddingOf𝒪Into𝕃 H (βHensel H x₀ R hHyp t)
502+
= αGenuine H x₀ R hHyp t
503+
* (liftToFunctionField (H := H) H.leadingCoeff) ^ (t + 1)
504+
* (embeddingOf𝒪Into𝕃 H (ClaimA2.ξ x₀ R H hHyp)) ^ (2 * t - 1))
505+
(h0 : AlphaGenuineRegularWeightLe_zero H x₀ R hHyp hH D)
506+
(hsucc : ∀ t, AlphaGenuineRegularWeightLe_succ H x₀ R hHyp hH D t) :
507+
DivWeightLe H x₀ R hHyp hH D :=
508+
DivWeightLe.of_cases H x₀ R hHyp hH D
509+
((alphaWeight_zero_iff_divWeight_zero H x₀ R hHyp hH D hlift).1 h0)
510+
(fun t =>
511+
(alphaWeight_succ_iff_divWeight_succ H x₀ R hHyp hH D hlift t).1 (hsucc t))
512+
495513
/-! ### 3. The STRUCTURED INVARIANT — PROVEN from `AlphaGenuineRegularWeightLe` + `hlift`
496514
497515
This is the genuine forward closure: the carved link + the lift identity yield the paper's
@@ -975,6 +993,25 @@ theorem AlphaGenuineRegularWeightLe.of_divWeight_cases_succLift
975993
(alphaWeight_iff_divWeight_cases_of_succLift H x₀ R hHyp hH D hliftSucc).2
976994
⟨h0, hsucc⟩
977995

996+
/-- Assemble the concrete `𝒪`-divisibility form from carved alpha-weight base and successor cases,
997+
requiring only successor-order lift identities; the base case uses the proved zero-order bridge. -/
998+
theorem DivWeightLe.of_alphaWeight_cases_succLift
999+
(x₀ : F) (R : F[X][X][Y])
1000+
(hHyp : ClaimA2.Hypotheses x₀ R H) (hH : 0 < H.natDegree) (D : ℕ)
1001+
(hliftSucc : ∀ t : ℕ,
1002+
embeddingOf𝒪Into𝕃 H (βHensel H x₀ R hHyp (t + 1))
1003+
= αGenuine H x₀ R hHyp (t + 1)
1004+
* (liftToFunctionField (H := H) H.leadingCoeff) ^ (t + 1 + 1)
1005+
* (embeddingOf𝒪Into𝕃 H (ClaimA2.ξ x₀ R H hHyp)) ^ (2 * (t + 1) - 1))
1006+
(h0 : AlphaGenuineRegularWeightLe_zero H x₀ R hHyp hH D)
1007+
(hsucc : ∀ t, AlphaGenuineRegularWeightLe_succ H x₀ R hHyp hH D t) :
1008+
DivWeightLe H x₀ R hHyp hH D :=
1009+
DivWeightLe.of_cases H x₀ R hHyp hH D
1010+
(DivWeightLe_zero.of_alphaWeight_zero H x₀ R hHyp hH D h0)
1011+
(fun t =>
1012+
(alphaWeight_succ_iff_divWeight_succ_of_succLift H x₀ R hHyp hH D
1013+
hliftSucc t).1 (hsucc t))
1014+
9781015
/-- Transport the full carved alpha-weight residual to the full divisibility-with-weight residual
9791016
using only successor-order lift identities; the base case uses the proved zero-order bridge. -/
9801017
theorem DivWeightLe.of_alphaWeight_succLift (x₀ : F) (R : F[X][X][Y])
@@ -1263,6 +1300,7 @@ end BCIKS20.HenselNumerator
12631300
#print axioms BCIKS20.HenselNumerator.AlphaWeight.alphaWeight_succ_iff_divWeight_succ
12641301
#print axioms BCIKS20.HenselNumerator.AlphaWeight.alphaWeight_iff_divWeight_cases
12651302
#print axioms BCIKS20.HenselNumerator.AlphaWeight.AlphaGenuineRegularWeightLe.of_divWeight_cases
1303+
#print axioms BCIKS20.HenselNumerator.AlphaWeight.DivWeightLe.of_alphaWeight_cases
12661304
#print axioms BCIKS20.HenselNumerator.AlphaWeight.βHensel_weight_structured
12671305
#print axioms BCIKS20.HenselNumerator.AlphaWeight.βHensel_weight_structured_of_divWeight
12681306
#print axioms BCIKS20.HenselNumerator.AlphaWeight.βHenselStructuredWeightInvariant_of_alphaWeight
@@ -1286,6 +1324,7 @@ end BCIKS20.HenselNumerator
12861324
#print axioms BCIKS20.HenselNumerator.AlphaWeight.alphaWeight_succ_iff_divWeight_succ_of_succLift
12871325
#print axioms BCIKS20.HenselNumerator.AlphaWeight.alphaWeight_iff_divWeight_cases_of_succLift
12881326
#print axioms BCIKS20.HenselNumerator.AlphaWeight.AlphaGenuineRegularWeightLe.of_divWeight_cases_succLift
1327+
#print axioms BCIKS20.HenselNumerator.AlphaWeight.DivWeightLe.of_alphaWeight_cases_succLift
12891328
#print axioms BCIKS20.HenselNumerator.AlphaWeight.DivWeightLe.of_alphaWeight_succLift
12901329
#print axioms BCIKS20.HenselNumerator.AlphaWeight.AlphaGenuineRegularWeightLe.of_divWeight_succLift
12911330
#print axioms BCIKS20.HenselNumerator.AlphaWeight.AlphaGenuineRegularWeightLe.of_normalized_divWeight_cases_succLift

0 commit comments

Comments
 (0)