Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
7 changes: 7 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 @@ -2100,12 +2102,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 +2125,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 +2148,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 +2163,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