Skip to content

Commit 145a317

Browse files
committed
feat(Verified-zkEVM#138): expose alpha divisibility case endpoints
1 parent 81bfabe commit 145a317

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

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

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,33 @@ theorem DivWeightLe_of_cases (x₀ : F) (R : F[X][X][Y]) (hHyp : ClaimA2.Hypothe
193193
· exact h0
194194
· exact hsucc _
195195

196+
/-- Project the base divisibility-with-weight case from `DivWeightLe`. -/
197+
theorem DivWeightLe.zero (x₀ : F) (R : F[X][X][Y])
198+
(hHyp : ClaimA2.Hypotheses x₀ R H) (hH : 0 < H.natDegree) (D : ℕ)
199+
(hdiv : DivWeightLe H x₀ R hHyp hH D) :
200+
DivWeightLe_zero H x₀ R hHyp hH D :=
201+
hdiv 0
202+
203+
/-- Project a successor divisibility-with-weight case from `DivWeightLe`. -/
204+
theorem DivWeightLe.succ (x₀ : F) (R : F[X][X][Y])
205+
(hHyp : ClaimA2.Hypotheses x₀ R H) (hH : 0 < H.natDegree) (D : ℕ)
206+
(hdiv : DivWeightLe H x₀ R hHyp hH D) (t : ℕ) :
207+
DivWeightLe_succ H x₀ R hHyp hH D t :=
208+
hdiv (t + 1)
209+
210+
/-- The divisibility-with-weight residual is exactly its base case plus all successor cases. -/
211+
theorem divWeight_iff_cases (x₀ : F) (R : F[X][X][Y])
212+
(hHyp : ClaimA2.Hypotheses x₀ R H) (hH : 0 < H.natDegree) (D : ℕ) :
213+
DivWeightLe H x₀ R hHyp hH D ↔
214+
DivWeightLe_zero H x₀ R hHyp hH D ∧
215+
∀ t, DivWeightLe_succ H x₀ R hHyp hH D t := by
216+
constructor
217+
· intro hdiv
218+
exact ⟨DivWeightLe.zero H x₀ R hHyp hH D hdiv,
219+
fun t => DivWeightLe.succ H x₀ R hHyp hH D hdiv t⟩
220+
· intro hcases
221+
exact DivWeightLe_of_cases H x₀ R hHyp hH D hcases.1 hcases.2
222+
196223
/-! ### 1′. The two halves of the `𝕃 ↔ 𝒪` bridge
197224
198225
-/
@@ -334,6 +361,35 @@ theorem alphaWeight_succ_iff_divWeight_succ (x₀ : F) (R : F[X][X][Y])
334361
obtain ⟨a, hfact, ha_wt⟩ := hdiv
335362
exact ⟨a, alpha_eq_embedding_of_fact H x₀ R hHyp (t + 1) hfact (hlift (t + 1)), ha_wt⟩
336363

364+
/-- The carved alpha-weight residual is equivalent to the divisibility base/successor cases, given
365+
the lift identity. This is the proof target form for grinding P1 one order family at a time. -/
366+
theorem alphaWeight_iff_divWeight_cases (x₀ : F) (R : F[X][X][Y])
367+
(hHyp : ClaimA2.Hypotheses x₀ R H) (hH : 0 < H.natDegree) (D : ℕ)
368+
(hlift : ∀ t : ℕ,
369+
embeddingOf𝒪Into𝕃 H (βHensel H x₀ R hHyp t)
370+
= αGenuine H x₀ R hHyp t
371+
* (liftToFunctionField (H := H) H.leadingCoeff) ^ (t + 1)
372+
* (embeddingOf𝒪Into𝕃 H (ClaimA2.ξ x₀ R H hHyp)) ^ (2 * t - 1)) :
373+
AlphaGenuineRegularWeightLe H x₀ R hHyp hH D ↔
374+
DivWeightLe_zero H x₀ R hHyp hH D ∧
375+
∀ t, DivWeightLe_succ H x₀ R hHyp hH D t :=
376+
(alphaWeight_iff_divWeight H x₀ R hHyp hH D hlift).trans
377+
(divWeight_iff_cases H x₀ R hHyp hH D)
378+
379+
/-- Assemble carved alpha-weight regularity from proved divisibility base and successor cases, given
380+
the lift identity. -/
381+
theorem AlphaGenuineRegularWeightLe.of_divWeight_cases (x₀ : F) (R : F[X][X][Y])
382+
(hHyp : ClaimA2.Hypotheses x₀ R H) (hH : 0 < H.natDegree) (D : ℕ)
383+
(hlift : ∀ t : ℕ,
384+
embeddingOf𝒪Into𝕃 H (βHensel H x₀ R hHyp t)
385+
= αGenuine H x₀ R hHyp t
386+
* (liftToFunctionField (H := H) H.leadingCoeff) ^ (t + 1)
387+
* (embeddingOf𝒪Into𝕃 H (ClaimA2.ξ x₀ R H hHyp)) ^ (2 * t - 1))
388+
(h0 : DivWeightLe_zero H x₀ R hHyp hH D)
389+
(hsucc : ∀ t, DivWeightLe_succ H x₀ R hHyp hH D t) :
390+
AlphaGenuineRegularWeightLe H x₀ R hHyp hH D :=
391+
(alphaWeight_iff_divWeight_cases H x₀ R hHyp hH D hlift).2 ⟨h0, hsucc⟩
392+
337393
/-! ### 3. The STRUCTURED INVARIANT — PROVEN from `AlphaGenuineRegularWeightLe` + `hlift`
338394
339395
This is the genuine forward closure: the carved link + the lift identity yield the paper's
@@ -482,6 +538,9 @@ end BCIKS20.HenselNumerator
482538
#print axioms BCIKS20.HenselNumerator.AlphaWeight.AlphaGenuineRegularWeightLe.zero
483539
#print axioms BCIKS20.HenselNumerator.AlphaWeight.AlphaGenuineRegularWeightLe.succ
484540
#print axioms BCIKS20.HenselNumerator.AlphaWeight.DivWeightLe
541+
#print axioms BCIKS20.HenselNumerator.AlphaWeight.DivWeightLe.zero
542+
#print axioms BCIKS20.HenselNumerator.AlphaWeight.DivWeightLe.succ
543+
#print axioms BCIKS20.HenselNumerator.AlphaWeight.divWeight_iff_cases
485544
#print axioms BCIKS20.HenselNumerator.AlphaWeight.embeddingOf𝒪Into𝕃_W𝒪
486545
#print axioms BCIKS20.HenselNumerator.AlphaWeight.βHensel_eq_alpha_mul_of_lift
487546
#print axioms BCIKS20.HenselNumerator.AlphaWeight.alpha_eq_embedding_of_fact
@@ -490,6 +549,8 @@ end BCIKS20.HenselNumerator
490549
#print axioms BCIKS20.HenselNumerator.AlphaWeight.AlphaGenuineRegularWeightLe.of_divWeight
491550
#print axioms BCIKS20.HenselNumerator.AlphaWeight.alphaWeight_zero_iff_divWeight_zero
492551
#print axioms BCIKS20.HenselNumerator.AlphaWeight.alphaWeight_succ_iff_divWeight_succ
552+
#print axioms BCIKS20.HenselNumerator.AlphaWeight.alphaWeight_iff_divWeight_cases
553+
#print axioms BCIKS20.HenselNumerator.AlphaWeight.AlphaGenuineRegularWeightLe.of_divWeight_cases
493554
#print axioms BCIKS20.HenselNumerator.AlphaWeight.βHensel_weight_structured
494555
#print axioms BCIKS20.HenselNumerator.AlphaWeight.βHensel_weight_bound_of_alphaWeight
495556
#print axioms BCIKS20.HenselNumerator.AlphaWeight.βHensel_weight_bound_of_alphaWeight'

0 commit comments

Comments
 (0)