One round of the deterministic filtering host keeps its invariants and shrinks the weighted active set
ProvedLight.Filter.round_specLet the oracle procedure of solve oracleTask with time and need , and let the procedures of a round (roundBody, aggregation, step, final marks, certificates, arg-min, copy) be in place in (RoundProcs). Let Env hold for the all-edges instance ( vertices, weight bound ) with first memory and free pointer , and let the memory between two rounds satisfy FMem with active marks and done flags , the invariant Inv1 (a done pair has a witness with ) and Inv2 (an active candidate of a pair that is not done, whose block contains a witness, is marked).
Then the round, called at depth with the step arguments, ends within tRound To n U steps, and the new memory satisfies FMem, Inv1, Inv2 for some new , with
where is the number of active candidates of pairs that are not done (cardA of eff), the size of the prime pool in , the number of steps per round, the bound on the number of pool primes dividing a nonzero triangle sum, and the block size (Lemma 3.1).
/-
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
-/
-- Generated by skeleton subtraction from the ThreeSumApsp library at commit 7c34437be804.
import Definitions.Def_APSP2996001_Defs2
set_option autoImplicit false
set_option relaxedAutoImplicit false
open ThreeSumApsp
open Light
open Light.Filter
open ThreeSumApsp.Spec Light.Sec3
variable {lim : Limits}
variable {P₀ R : Program} {pO pAggr pStep pFA pCert pArg pCopy : ℕ} {To : List ℕ → ℕ}
{needo : List ℕ → Need} {d0 : ℕ} {x : AEInst} {fr : ℕ} {μ0 : ℕ → ℤ}
set_option maxHeartbeats 800000
theorem Light.Filter.round_spec (hsol : SolvesN oracleTask P₀ pO To needo) {pRound : ℕ}
(hRd : (P₀ ++ R)[pRound]? = some (roundBody pO pAggr pStep pFA))
(HP : RoundProcs (P₀ ++ R) pO pAggr pStep pFA pCert pArg pCopy)
(E : Light.Filter.Env lim d0 x fr μ0 needo) {d : ℕ} (hd : d ≤ d0 + 2) {act D : ℕ → Bool} {μ : ℕ → ℤ}
(hmem : FMem x fr μ0 μ act D) (hI1 : Inv1 x D) (hI2 : Inv2 x act D) :
Meets lim (P₀ ++ R) pRound d (stepArgs x fr (rOf x.n)) μ (Light.Filter.tRound To x.n x.U) fun _ μ' =>
∃ act' D' : ℕ → Bool, FMem x fr μ0 μ' act' D' ∧ Inv1 x D' ∧ Inv2 x act' D' ∧
QOf x.n ^ rOf x.n * cardA x.n (sOf x.n) (eff (x.n * x.n) act' D') ≤
(2 * hOf x.n x.U) ^ rOf x.n * (sOf x.n * cardA x.n (sOf x.n) (eff (x.n * x.n) act D)) := by sorry