Computing the common-prime chain depth
ProvedThreeSum.LightBandPrimeDepth.meets3sumalgorithmsfine-grained-complexitythree-sum-1962word-ram
Fix a program containing the chain-depth procedure, resource limits, a call depth, and initial memory . Let with , and suppose fits within the word-magnitude limit. Define
The procedure called on returns
The natural logarithm convention includes the zero-depth cases. This implements the prescribed prime-chain depth by repeated multiplication and comparison, preserving all memory.
Preamble
/- Copyright (c) 2026 Anthropic, PBC. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. SPDX-License-Identifier: Apache-2.0 -/ import Definitions.Def_APSPSource_RemainingDefinitions import Definitions.Def_APSPSource_ThreeSumApsp_Lang_Logic import Definitions.Def_APSPSource_ThreeSumApsp_Lang_Syntax import Definitions.Def_ThreeSum1962Source_Bundle01 import Definitions.Def_ThreeSum1962Source_Bundle02 import Lean.Elab.Tactic.Omega import Mathlib.Algebra.BigOperators.Group.Finset.Basic import Mathlib.Algebra.Group.Int.Defs import Mathlib.Algebra.GroupWithZero.Nat import Mathlib.Algebra.Order.Field.Basic import Mathlib.Algebra.Order.Floor.Div import Mathlib.Algebra.Order.Group.Abs import Mathlib.Algebra.Order.Group.Unbundled.Abs import Mathlib.Algebra.Order.Ring.Abs import Mathlib.Algebra.Order.Ring.Int import Mathlib.Analysis.Complex.ExponentialBounds import Mathlib.Analysis.Convex.Deriv import Mathlib.Analysis.SpecialFunctions.BinaryEntropy import Mathlib.Analysis.SpecialFunctions.Log.Base import Mathlib.Analysis.SpecialFunctions.Pow.Asymptotics import Mathlib.Analysis.SpecialFunctions.Pow.NthRootLemmas import Mathlib.Analysis.SpecificLimits.Basic import Mathlib.Analysis.SpecificLimits.Normed import Mathlib.Data.Finset.Powerset import Mathlib.Data.Finset.Prod import Mathlib.Data.Fintype.BigOperators import Mathlib.Data.Fintype.Card import Mathlib.Data.Fintype.Prod import Mathlib.Data.Int.Cast.Lemmas import Mathlib.Data.Nat.Cast.Order.Ring import Mathlib.Data.Nat.Choose.Basic import Mathlib.Data.Nat.Choose.Central import Mathlib.Data.Nat.Choose.Sum import Mathlib.Data.Nat.Log import Mathlib.Data.Nat.Sqrt import Mathlib.Data.Real.Basic import Mathlib.NumberTheory.Bertrand import Mathlib.NumberTheory.Chebyshev import Mathlib.Order.ConditionallyCompleteLattice.Basic import Mathlib.Order.Monotone.Basic import Mathlib.Tactic.FieldSimp import Mathlib.Tactic.GCongr import Mathlib.Tactic.Linarith import Mathlib.Tactic.NormNum import Mathlib.Tactic.Positivity import Mathlib.Tactic.Ring import Theorems.Thm_Light_Ends_of_blockSafe import Theorems.Thm_Light_Ends_while set_option autoImplicit false set_option relaxedAutoImplicit false set_option Elab.async false namespace Light end Light
Formal statement
theorem ThreeSum.LightBandPrimeDepth.meets : ∀ {lim : Light.Limits} {P : Light.Program} {d : Nat} {μ : Nat → Int} {R y p : Nat}
(hp :
@Eq.{1} (Option.{0} Light.Stmt)
(@GetElem?.getElem?.{0, 0, 0} Light.Program Nat Light.Stmt
(fun (as : List.{0} Light.Stmt) (i : Nat) => @LT.lt.{0} Nat instLTNat i (@List.length.{0} Light.Stmt as))
(@List.instGetElem?NatLtLength.{0} Light.Stmt) P p)
(@Option.some.{0} Light.Stmt ThreeSum.LightBandPrimeDepth.body))
(hy : @LT.lt.{0} Nat instLTNat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) y)
(hword :
@LE.le.{0} Int Int.instLEInt (@Nat.cast.{0} Int instNatCastInt (ThreeSum.LightBandPrimeDepth.word R y)) lim.word),
Light.Meets lim P p d
(@List.cons.{0} Int (@Nat.cast.{0} Int instNatCastInt R)
(@List.cons.{0} Int (@Nat.cast.{0} Int instNatCastInt y) (@List.nil.{0} Int)))
μ (ThreeSum.LightBandPrimeDepth.time R y) fun (result : Int) (ν : Nat → Int) =>
And (@Eq.{1} Int result (@Nat.cast.{0} Int instNatCastInt (ThreeSum.LightBandPrimeDepth.depth R y)))
(@Eq.{1} (Nat → Int) ν μ) := by
sorry
Source