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) :