Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
6094ec9
feat(exactTriangle): relate lopsided queries and matrix products
edemaine Oct 28, 2026
dec963a
feat(exactTriangle): prove modular counts and the selected-prime bound
edemaine Oct 28, 2026
0d8da3e
doc(threeSum): cite the lopsided triangle paper and clarify adaptatio…
edemaine Oct 28, 2026
8d80ecc
doc(bibliography): sort the new paper entry
edemaine Oct 28, 2026
fd69be7
fix(exactTriangle): repair the prime-window header and hashing docume…
edemaine Oct 28, 2026
ce646c7
feat(exactTriangle): split modular queries and recover witnesses
edemaine Oct 28, 2026
2cae26c
doc(threeSum): record finite splitting and recovery milestone
edemaine Oct 28, 2026
dc4206a
refactor(exactTriangle): reuse the natural residue bound and clarify …
edemaine Oct 28, 2026
19ee942
feat(wordram): count Chan–He collisions with native histograms
edemaine Oct 28, 2026
a712205
fix(wordram): preserve collision-counting parameters explicitly
edemaine Oct 28, 2026
48a0fa3
chore(exactTriangle): merge current main for sibling integration
codex Oct 29, 2026
3fb98bd
chore(exactTriangle): join reviewed query splitting and counting layers
codex Oct 29, 2026
d1bc583
chore(exactTriangle): reconcile modular-hashing integration documenta…
SamuelSchlesinger Oct 29, 2026
c0b0511
chore(exactTriangle): carry hashing integration through query splitting
SamuelSchlesinger Oct 29, 2026
a76a7d3
chore(exactTriangle): carry documentation integration through native …
SamuelSchlesinger Oct 29, 2026
4f6de79
fix(imports): deduplicate aggregate after counting integration
SamuelSchlesinger Oct 29, 2026
02f1b49
fix(imports): deduplicate aggregate after query-splitting integration
SamuelSchlesinger Oct 29, 2026
ab3e96c
chore(integration): reconcile splitting layer with landed hashing parent
SamuelSchlesinger Oct 29, 2026
da6a301
chore(integration): adopt splitting layer after its parent landed
SamuelSchlesinger Oct 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions Complexity.lean
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ module -- shake: keep-all --deprecated_module: ignore
public import Complexity.Algorithms.ExactTriangle.Defs
public import Complexity.Algorithms.ExactTriangle.Hashing
public import Complexity.Algorithms.ExactTriangle.Lopsided
public import Complexity.Algorithms.ExactTriangle.Splitting
public import Complexity.Algorithms.ExactTriangle.Weights
public import Complexity.Algorithms.ExactTriangle.Witnesses
public import Complexity.Algorithms.Lean.FusionTree.Capacity
public import Complexity.Algorithms.Lean.FusionTree.Compression
public import Complexity.Algorithms.Lean.FusionTree.Correction
Expand Down Expand Up @@ -87,6 +89,7 @@ public import Complexity.Algorithms.WordRAM.FusionTree.Query.Traversal
public import Complexity.Algorithms.WordRAM.FusionTree.Rank
public import Complexity.Algorithms.WordRAM.FusionTree.ReadHeader
public import Complexity.Algorithms.WordRAM.FusionTree.Static
public import Complexity.Algorithms.WordRAM.Histogram
public import Complexity.Algorithms.WordRAM.Karger.Contract
public import Complexity.Algorithms.WordRAM.Karger.FastCut
public import Complexity.Algorithms.WordRAM.Karger.Graph
Expand Down Expand Up @@ -117,6 +120,9 @@ public import Complexity.Algorithms.WordRAM.Quicksort
public import Complexity.Algorithms.WordRAM.Stack
public import Complexity.Algorithms.WordRAM.Stack.Controller
public import Complexity.Algorithms.WordRAM.ThreeSum.Cell
public import Complexity.Algorithms.WordRAM.ThreeSum.ChanHe.Collisions
public import Complexity.Algorithms.WordRAM.ThreeSum.ChanHe.Count
public import Complexity.Algorithms.WordRAM.ThreeSum.ChanHe.Residues
public import Complexity.Algorithms.WordRAM.ThreeSum.Fill
public import Complexity.Algorithms.WordRAM.ThreeSum.Memory
public import Complexity.Algorithms.WordRAM.ThreeSum.Weight
Expand Down Expand Up @@ -2100,12 +2106,14 @@ public import Complexity.Foundations.Data.Finset.Average
public import Complexity.Foundations.Data.Finset.Expect
public import Complexity.Foundations.Data.Finset.Markov
public import Complexity.Foundations.Data.Finset.Quantile
public import Complexity.Foundations.Data.Finset.Quotient
public import Complexity.Foundations.Data.Finset.Sampling
public import Complexity.Foundations.Data.Finset.SubsetSum
public import Complexity.Foundations.Data.Finset.SymmDiff
public import Complexity.Foundations.Data.Hamming
public import Complexity.Foundations.Data.Hamming.Expansion
public import Complexity.Foundations.Data.Int.Order
public import Complexity.Foundations.Data.Int.Residue
public import Complexity.Foundations.Data.List.Append
public import Complexity.Foundations.Data.List.BalancedFold
public import Complexity.Foundations.Data.List.Basic
Expand All @@ -2121,6 +2129,7 @@ public import Complexity.Foundations.Data.List.Range
public import Complexity.Foundations.Data.List.SelectDistinct
public import Complexity.Foundations.Data.Matrix.Binary
public import Complexity.Foundations.Data.Matrix.IntegerBits
public import Complexity.Foundations.Data.Matrix.PairChunks
public import Complexity.Foundations.Data.Matrix.Permanent
public import Complexity.Foundations.Data.Matrix.Reindex
public import Complexity.Foundations.Data.Matrix.TotallyRegular
Expand All @@ -2143,6 +2152,7 @@ public import Complexity.Foundations.Data.Nat.Bitwise.Projection
public import Complexity.Foundations.Data.Nat.Bitwise.Sparse
public import Complexity.Foundations.Data.Nat.Bitwise.SumTree
public import Complexity.Foundations.Data.Nat.Card
public import Complexity.Foundations.Data.Nat.CeilDiv
public import Complexity.Foundations.Data.Nat.Choose
public import Complexity.Foundations.Data.Nat.Choose.Real
public import Complexity.Foundations.Data.Nat.Div
Expand All @@ -2157,6 +2167,7 @@ public import Complexity.Foundations.Data.Nat.Prime
public import Complexity.Foundations.Data.Nat.Primrec
public import Complexity.Foundations.Data.Nat.Radix
public import Complexity.Foundations.Data.Nat.Radix.Measurement
public import Complexity.Foundations.Data.Nat.SqrtRatio
public import Complexity.Foundations.Data.Option
public import Complexity.Foundations.Data.OrderedSet
public import Complexity.Foundations.Data.OrderedSet.Spec
Expand Down
19 changes: 6 additions & 13 deletions Complexity/Algorithms/ExactTriangle/Hashing.lean
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ module
-- upstream: candidate

public import Complexity.Algorithms.ExactTriangle.Weights
public import Complexity.Foundations.Data.Int.Residue
public import Complexity.Foundations.NumberTheory.PrimeWindow
public import Complexity.Foundations.RingTheory.CyclicIntRing
public import Mathlib.Data.Matrix.Mul
Expand Down Expand Up @@ -74,15 +75,6 @@ def IsSelectedPrime {n : ℕ} (wAB wBC wAC : Fin n → Fin n → ℤ) (D p : ℕ
private theorem four_le_sqrt {D : ℕ} (hD : 16 ≤ D) : 4 ≤ Real.sqrt (D : ℝ) :=
Real.le_sqrt_of_sq_le (by norm_num; exact_mod_cast hD)

private theorem natCast_toNat_emod {p : ℕ} (hp : 0 < p) (u : ℤ) :
((u % (p : ℤ)).toNat : ℤ) = u % (p : ℤ) :=
Int.toNat_of_nonneg (Int.emod_nonneg _ (by omega))

private theorem toNat_emod_lt {p : ℕ} (hp : 0 < p) (u : ℤ) : (u % (p : ℤ)).toNat < p := by
have := Int.emod_nonneg u (by omega : (p : ℤ) ≠ 0)
have := Int.emod_lt_of_pos u (by omega : (0 : ℤ) < p)
omega

/-!
### The primes in the range -/

Expand Down Expand Up @@ -134,8 +126,8 @@ private theorem eq_add_toNat_emod_iff {p r : ℕ} (hp : p ≠ 0) (hr : r < p) (u
rw [← Int.natCast_inj, Int.ModEq, Int.emod_eq_of_lt (Int.natCast_nonneg r) (by exact_mod_cast hr),
eq_comm]
push_cast
rw [natCast_toNat_emod (Nat.pos_of_ne_zero hp),
natCast_toNat_emod (Nat.pos_of_ne_zero hp),
rw [Int.natCast_toNat_emod (Nat.pos_of_ne_zero hp),
Int.natCast_toNat_emod (Nat.pos_of_ne_zero hp),
← Int.add_emod]

/-!
Expand Down Expand Up @@ -233,8 +225,9 @@ theorem falsePositiveCount_add_zeroCount_eq_sum_coeff {p : ℕ} (hp : p ≠ 0) :
refine Finset.sum_congr rfl fun a _ => ?_
rw [Fintype.sum_prod_type]
refine Finset.sum_congr rfl fun b _ => ?_
have hcast := natCast_toNat_emod (Nat.pos_of_ne_zero hp) (-wAB a b)
rw [(coeff_matP_mul_matQ wBC wAC) hp a b _ (toNat_emod_lt (Nat.pos_of_ne_zero hp) _),
have hcast := Int.natCast_toNat_emod (Nat.pos_of_ne_zero hp) (-wAB a b)
have hr : ((-wAB a b) % (p : ℤ)).toNat < p := Int.natMod_lt (m := -wAB a b) hp
rw [(coeff_matP_mul_matQ wBC wAC) hp a b _ hr,
Finset.card_filter]
push_cast
refine Finset.sum_congr rfl fun c _ => ?_
Expand Down
Loading
Loading