Additive energy #
This file defines the additive energy of two finsets of a group. This is a central quantity in additive combinatorics.
Main declarations #
Finset.addEnergy': The additive energy of two finsets in an additive group.Finset.mulEnergy': The multiplicative energy of two finsets in a group.
Notation #
The following notations are defined in the Combinatorics.Additive scope:
E[s, t]forFinset.addEnergy' s t.Eₘ[s, t]forFinset.mulEnergy' s t.E[s]forE[s, s].Eₘ[s]forEₘ[s, s].
TODO #
It's possibly interesting to have
(s ×ˢ s) ×ˢ t ×ˢ t).filter (fun x : (M × M) × M × M ↦ x.1.1 * x.2.1 = x.1.2 * x.2.2)
(whose density in G × G × G is mulEnergy' s t) as a standalone definition.
The additive energy E[s, t] of two finsets s and t in a group is the number of quadruples
(a₁, a₂, b₁, b₂) ∈ s × s × t × t such that a₁ + b₁ = a₂ + b₂.
The notation E[s, t] is available in scope Combinatorics.Additive.
Equations
Instances For
theorem
Finset.mulEnergy'_mono
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[Monoid M]
{s₁ s₂ t₁ t₂ : Finset M}
(hs : s₁ ⊆ s₂)
(ht : t₁ ⊆ t₂)
:
theorem
Finset.addEnergy'_mono
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[AddMonoid M]
{s₁ s₂ t₁ t₂ : Finset M}
(hs : s₁ ⊆ s₂)
(ht : t₁ ⊆ t₂)
:
theorem
Finset.mulEnergy'_mono_left
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[Monoid M]
{s₁ s₂ t : Finset M}
(hs : s₁ ⊆ s₂)
:
theorem
Finset.addEnergy'_mono_left
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[AddMonoid M]
{s₁ s₂ t : Finset M}
(hs : s₁ ⊆ s₂)
:
theorem
Finset.mulEnergy'_mono_right
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[Monoid M]
{s t₁ t₂ : Finset M}
(ht : t₁ ⊆ t₂)
:
theorem
Finset.addEnergy'_mono_right
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[AddMonoid M]
{s t₁ t₂ : Finset M}
(ht : t₁ ⊆ t₂)
:
theorem
Finset.dens_mul_dens_le_mulEnergy'
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[Monoid M]
{s t : Finset M}
:
theorem
Finset.dens_add_dens_le_addEnergy'
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[AddMonoid M]
{s t : Finset M}
:
theorem
Finset.dens_sq_le_mulEnergy'_self
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[Monoid M]
{s : Finset M}
:
theorem
Finset.dens_sq_le_addEnergy'_self
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[AddMonoid M]
{s : Finset M}
:
theorem
Finset.mulEnergy'_pos
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[Monoid M]
{s t : Finset M}
(hs : s.Nonempty)
(ht : t.Nonempty)
:
theorem
Finset.addEnergy'_pos
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[AddMonoid M]
{s t : Finset M}
(hs : s.Nonempty)
(ht : t.Nonempty)
:
theorem
Finset.mulEnergy'_self_pos
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[Monoid M]
{s : Finset M}
(hs : s.Nonempty)
:
theorem
Finset.addEnergy'_self_pos
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[AddMonoid M]
{s : Finset M}
(hs : s.Nonempty)
:
@[simp]
theorem
Finset.mulEnergy'_empty_left
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[Monoid M]
(t : Finset M)
:
@[simp]
theorem
Finset.addEnergy'_empty_left
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[AddMonoid M]
(t : Finset M)
:
@[simp]
theorem
Finset.mulEnergy'_empty_right
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[Monoid M]
(s : Finset M)
:
@[simp]
theorem
Finset.addEnergy'_empty_right
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[AddMonoid M]
(s : Finset M)
:
@[simp]
theorem
Finset.mulEnergy'_pos_iff
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[Monoid M]
{s t : Finset M}
:
@[simp]
theorem
Finset.addEnergy'_pos_iff
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[AddMonoid M]
{s t : Finset M}
:
@[simp]
theorem
Finset.mulEnergy'_eq_zero_iff
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[Monoid M]
{s t : Finset M}
:
@[simp]
theorem
Finset.addEnergy'_eq_zero_iff
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[AddMonoid M]
{s t : Finset M}
:
theorem
Finset.mulEnergy'_self_pos_iff
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[Monoid M]
{s : Finset M}
:
theorem
Finset.addEnergy'_self_pos_iff
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[AddMonoid M]
{s : Finset M}
:
theorem
Finset.mulEnergy'_self_eq_zero_iff
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[Monoid M]
{s : Finset M}
:
theorem
Finset.addEnergy'_self_eq_zero_iff
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[AddMonoid M]
{s : Finset M}
:
theorem
Finset.addEnergy'_eq_card_filter
{M : Type u_2}
[Fintype M]
[DecidableEq M]
[AddMonoid M]
(s t : Finset M)
:
theorem
Finset.mulEnergy'_eq_card_filter
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[Monoid M]
(s t : Finset M)
:
theorem
Finset.addEnergy'_eq_sum_sq'
{M : Type u_2}
[Fintype M]
[DecidableEq M]
[AddMonoid M]
(s t : Finset M)
:
theorem
Finset.mulEnergy'_eq_sum_sq'
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[Monoid M]
(s t : Finset M)
:
theorem
Finset.addEnergy'_eq_sum_sq
{M : Type u_2}
[Fintype M]
[DecidableEq M]
[AddMonoid M]
(s t : Finset M)
:
theorem
Finset.mulEnergy'_eq_sum_sq
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[Monoid M]
(s t : Finset M)
:
theorem
Finset.mulEnergy'_comm
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[CommMonoid M]
(s t : Finset M)
:
theorem
Finset.addEnergy'_comm
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[AddCommMonoid M]
(s t : Finset M)
:
@[simp]
theorem
Finset.mulEnergy'_univ_left
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[CommGroup M]
(t : Finset M)
:
@[simp]
theorem
Finset.addEnergy'_univ_left
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[AddCommGroup M]
(t : Finset M)
:
@[simp]
theorem
Finset.mulEnergy'_univ_right
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[CommGroup M]
(s : Finset M)
:
@[simp]
theorem
Finset.addEnergy'_univ_right
{M : Type u_1}
[Fintype M]
[DecidableEq M]
[AddCommGroup M]
(s : Finset M)
: