Adapted from PrimeNumberTheoremAnd revision
127b50e33f6033e2147921167a117af96d9ba4ea, via Jason Davies's
Iwaniec linear sieve snapshot c8d01549d2ae640b36ec198c1f0f6495f1b036cf
(both Apache-2.0). Blueprint-only machinery is omitted.
Supporting lemmas for Iwaniec's sieve and its prime-number-theorem input.
@[simp]
@[simp]
theorem
ContinuousLinearEquiv.coe_toLinearEquiv_symm
{R : Type u_1}
{S : Type u_2}
[Semiring R]
[Semiring S]
{σ : R →+* S}
{σ' : S →+* R}
[RingHomInvPair σ σ']
[RingHomInvPair σ' σ]
(M : Type u_3)
[TopologicalSpace M]
[AddCommMonoid M]
{M₂ : Type u_4}
[TopologicalSpace M₂]
[AddCommMonoid M₂]
[Module R M]
[Module S M₂]
(e : M ≃SL[σ] M₂)
:
The axis-parallel complex rectangle with opposite corners z and w is complex product of
two intervals, which is also the convex hull of the four corners. Golfed from mathlib4#9598.
theorem
IwaniecLinearSievePNT.rectangle_in_convex
{U : Set ℂ}
(U_convex : Convex ℝ U)
{z w : ℂ}
(hz : z ∈ U)
(hw : w ∈ U)
(hzw : ↑z.re + ↑w.im * Complex.I ∈ U)
(hwz : ↑w.re + ↑z.im * Complex.I ∈ U)
:
z.Rectangle w ⊆ U
If the four corners of a rectangle are contained in a convex set U, then the whole
rectangle is. Golfed from mathlib4#9598.
theorem
IwaniecLinearSievePNT.rectangleBorder_subset_rectangle
(z w : ℂ)
:
RectangleBorder z w ⊆ z.Rectangle w
theorem
IwaniecLinearSievePNT.rectangle_subset_punctured_rect
{z₀ z₁ z₂ z₃ p : ℂ}
(hz : z₀.re ≤ z₁.re ∧ z₁.re ≤ z₂.re ∧ z₂.re ≤ z₃.re ∧ z₀.im ≤ z₁.im ∧ z₁.im ≤ z₂.im ∧ z₂.im ≤ z₃.im)
(hp :
p.re < z₁.re ∧ p.re < z₂.re ∨ p.im < z₁.im ∧ p.im < z₂.im ∨ z₁.re < p.re ∧ z₂.re < p.re ∨ z₁.im < p.im ∧ z₂.im < p.im)
:
theorem
IwaniecLinearSievePNT.rectangleBorder_subset_punctured_rect
{z₀ z₁ z₂ z₃ p : ℂ}
(hz : z₀.re ≤ z₁.re ∧ z₁.re ≤ z₂.re ∧ z₂.re ≤ z₃.re ∧ z₀.im ≤ z₁.im ∧ z₁.im ≤ z₂.im ∧ z₂.im ≤ z₃.im)
(hp : p.re ≠ z₁.re ∧ p.re ≠ z₂.re ∧ p.im ≠ z₁.im ∧ p.im ≠ z₂.im)
:
RectangleBorder z₁ z₂ ⊆ z₀.Rectangle z₃ \ {p}
theorem
IwaniecLinearSievePNT.mapsTo_rectangleBorder_left_re
(z w : ℂ)
:
Set.MapsTo (fun (y : ℝ) => ↑z.re + ↑y * Complex.I) (Set.uIcc z.im w.im) (RectangleBorder z w)
theorem
IwaniecLinearSievePNT.mapsTo_rectangleBorder_right_re
(z w : ℂ)
:
Set.MapsTo (fun (y : ℝ) => ↑w.re + ↑y * Complex.I) (Set.uIcc z.im w.im) (RectangleBorder z w)
theorem
IwaniecLinearSievePNT.mapsTo_rectangleBorder_left_im
(z w : ℂ)
:
Set.MapsTo (fun (x : ℝ) => ↑x + ↑z.im * Complex.I) (Set.uIcc z.re w.re) (RectangleBorder z w)
theorem
IwaniecLinearSievePNT.mapsTo_rectangleBorder_right_im
(z w : ℂ)
:
Set.MapsTo (fun (x : ℝ) => ↑x + ↑w.im * Complex.I) (Set.uIcc z.re w.re) (RectangleBorder z w)
theorem
IwaniecLinearSievePNT.not_mem_rectangleBorder_of_rectangle_mem_nhds
{z w p : ℂ}
(hp : z.Rectangle w ∈ nhds p)
:
p ∉ RectangleBorder z w