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 : (G × G) × G × G ↦ 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.
theorem
Finset.mulEnergy'_mono
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[Group G]
{s₁ s₂ t₁ t₂ : Finset G}
(hs : s₁ ⊆ s₂)
(ht : t₁ ⊆ t₂)
:
theorem
Finset.addEnergy'_mono
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[AddGroup G]
{s₁ s₂ t₁ t₂ : Finset G}
(hs : s₁ ⊆ s₂)
(ht : t₁ ⊆ t₂)
:
theorem
Finset.mulEnergy'_mono_left
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[Group G]
{s₁ s₂ t : Finset G}
(hs : s₁ ⊆ s₂)
:
theorem
Finset.addEnergy'_mono_left
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[AddGroup G]
{s₁ s₂ t : Finset G}
(hs : s₁ ⊆ s₂)
:
theorem
Finset.mulEnergy'_mono_right
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[Group G]
{s t₁ t₂ : Finset G}
(ht : t₁ ⊆ t₂)
:
theorem
Finset.addEnergy'_mono_right
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[AddGroup G]
{s t₁ t₂ : Finset G}
(ht : t₁ ⊆ t₂)
:
theorem
Finset.dens_mul_dens_le_mulEnergy'
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[Group G]
{s t : Finset G}
:
theorem
Finset.dens_add_dens_le_addEnergy'
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[AddGroup G]
{s t : Finset G}
:
theorem
Finset.dens_sq_le_mulEnergy'_self
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[Group G]
{s : Finset G}
:
theorem
Finset.dens_sq_le_addEnergy'_self
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[AddGroup G]
{s : Finset G}
:
theorem
Finset.mulEnergy'_pos
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[Group G]
{s t : Finset G}
(hs : s.Nonempty)
(ht : t.Nonempty)
:
theorem
Finset.addEnergy'_pos
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[AddGroup G]
{s t : Finset G}
(hs : s.Nonempty)
(ht : t.Nonempty)
:
theorem
Finset.mulEnergy'_self_pos
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[Group G]
{s : Finset G}
(hs : s.Nonempty)
:
theorem
Finset.addEnergy'_self_pos
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[AddGroup G]
{s : Finset G}
(hs : s.Nonempty)
:
@[simp]
theorem
Finset.mulEnergy'_empty_left
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[Group G]
(t : Finset G)
:
@[simp]
theorem
Finset.addEnergy'_empty_left
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[AddGroup G]
(t : Finset G)
:
@[simp]
theorem
Finset.mulEnergy'_empty_right
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[Group G]
(s : Finset G)
:
@[simp]
theorem
Finset.addEnergy'_empty_right
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[AddGroup G]
(s : Finset G)
:
@[simp]
theorem
Finset.mulEnergy'_pos_iff
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[Group G]
{s t : Finset G}
:
@[simp]
theorem
Finset.addEnergy'_pos_iff
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[AddGroup G]
{s t : Finset G}
:
@[simp]
theorem
Finset.mulEnergy'_eq_zero_iff
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[Group G]
{s t : Finset G}
:
@[simp]
theorem
Finset.addEnergy'_eq_zero_iff
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[AddGroup G]
{s t : Finset G}
:
theorem
Finset.mulEnergy'_self_pos_iff
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[Group G]
{s : Finset G}
:
theorem
Finset.addEnergy'_self_pos_iff
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[AddGroup G]
{s : Finset G}
:
theorem
Finset.mulEnergy'_self_eq_zero_iff
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[Group G]
{s : Finset G}
:
theorem
Finset.addEnergy'_self_eq_zero_iff
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[AddGroup G]
{s : Finset G}
:
theorem
Finset.addEnergy'_eq_card_filter
{G : Type u_2}
[Fintype G]
[DecidableEq G]
[AddGroup G]
(s t : Finset G)
:
theorem
Finset.mulEnergy'_eq_card_filter
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[Group G]
(s t : Finset G)
:
theorem
Finset.addEnergy'_eq_sum_sq'
{G : Type u_2}
[Fintype G]
[DecidableEq G]
[AddGroup G]
(s t : Finset G)
:
theorem
Finset.mulEnergy'_eq_sum_sq'
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[Group G]
(s t : Finset G)
:
theorem
Finset.addEnergy'_eq_sum_sq
{G : Type u_2}
[Fintype G]
[DecidableEq G]
[AddGroup G]
(s t : Finset G)
:
theorem
Finset.mulEnergy'_eq_sum_sq
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[Group G]
(s t : Finset G)
:
theorem
Finset.mulEnergy'_comm
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[CommGroup G]
(s t : Finset G)
:
theorem
Finset.addEnergy'_comm
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[AddCommGroup G]
(s t : Finset G)
:
@[simp]
theorem
Finset.mulEnergy'_univ_left
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[CommGroup G]
(t : Finset G)
:
@[simp]
theorem
Finset.addEnergy'_univ_left
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[AddCommGroup G]
(t : Finset G)
:
@[simp]
theorem
Finset.mulEnergy'_univ_right
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[CommGroup G]
(s : Finset G)
:
@[simp]
theorem
Finset.addEnergy'_univ_right
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[AddCommGroup G]
(s : Finset G)
: