Documentation

Mathlib.Combinatorics.Additive.Energy

Additive energy #

This file defines the additive energy of two finsets of a group. This is a central quantity in additive combinatorics.

Main declarations #

Notation #

The following notations are defined in the Combinatorics.Additive scope:

TODO #

It's possibly interesting to have (s ×ˢ s) ×ˢ t ×ˢ t).filter (fun x : (α × α) × α × α ↦ x.1.1 * x.2.1 = x.1.2 * x.2.2) (whose card is mulEnergy s t) as a standalone definition.

def Finset.mulEnergy {α : Type u_1} [DecidableEq α] [Mul α] (s t : Finset α) :

The multiplicative 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
def Finset.addEnergy {α : Type u_1} [DecidableEq α] [Add α] (s t : Finset α) :

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

Pretty printer defined by notation3 command.

Equations
  • One or more equations did not get rendered due to their size.

The multiplicative energy 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₂.

Equations
  • One or more equations did not get rendered due to their size.

The additive energy 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₂.

Equations
  • One or more equations did not get rendered due to their size.

Pretty printer defined by notation3 command.

Equations
  • One or more equations did not get rendered due to their size.

The multiplicative energy of a finset s in a group is the number of quadruples (a₁, a₂, b₁, b₂) ∈ s × s × s × s such that a₁ * b₁ = a₂ * b₂.

Equations
  • One or more equations did not get rendered due to their size.

Pretty printer defined by notation3 command.

Equations
  • One or more equations did not get rendered due to their size.

Pretty printer defined by notation3 command.

Equations
  • One or more equations did not get rendered due to their size.

The additive energy of a finset s in a group is the number of quadruples (a₁, a₂, b₁, b₂) ∈ s × s × s × s such that a₁ + b₁ = a₂ + b₂.

Equations
  • One or more equations did not get rendered due to their size.
theorem Finset.mulEnergy_mono {α : Type u_1} [DecidableEq α] [Mul α] {s₁ s₂ t₁ t₂ : Finset α} (hs : s₁ s₂) (ht : t₁ t₂) :
s₁.mulEnergy t₁ s₂.mulEnergy t₂
theorem Finset.addEnergy_mono {α : Type u_1} [DecidableEq α] [Add α] {s₁ s₂ t₁ t₂ : Finset α} (hs : s₁ s₂) (ht : t₁ t₂) :
s₁.addEnergy t₁ s₂.addEnergy t₂
theorem Finset.mulEnergy_mono_left {α : Type u_1} [DecidableEq α] [Mul α] {s₁ s₂ t : Finset α} (hs : s₁ s₂) :
s₁.mulEnergy t s₂.mulEnergy t
theorem Finset.addEnergy_mono_left {α : Type u_1} [DecidableEq α] [Add α] {s₁ s₂ t : Finset α} (hs : s₁ s₂) :
s₁.addEnergy t s₂.addEnergy t
theorem Finset.mulEnergy_mono_right {α : Type u_1} [DecidableEq α] [Mul α] {s t₁ t₂ : Finset α} (ht : t₁ t₂) :
s.mulEnergy t₁ s.mulEnergy t₂
theorem Finset.addEnergy_mono_right {α : Type u_1} [DecidableEq α] [Add α] {s t₁ t₂ : Finset α} (ht : t₁ t₂) :
s.addEnergy t₁ s.addEnergy t₂
theorem Finset.le_mulEnergy {α : Type u_1} [DecidableEq α] [Mul α] {s t : Finset α} :
theorem Finset.le_addEnergy {α : Type u_1} [DecidableEq α] [Add α] {s t : Finset α} :
theorem Finset.mulEnergy_pos {α : Type u_1} [DecidableEq α] [Mul α] {s t : Finset α} (hs : s.Nonempty) (ht : t.Nonempty) :
0 < s.mulEnergy t
theorem Finset.addEnergy_pos {α : Type u_1} [DecidableEq α] [Add α] {s t : Finset α} (hs : s.Nonempty) (ht : t.Nonempty) :
0 < s.addEnergy t
@[simp]
theorem Finset.mulEnergy_empty_left {α : Type u_1} [DecidableEq α] [Mul α] (t : Finset α) :
@[simp]
theorem Finset.addEnergy_empty_left {α : Type u_1} [DecidableEq α] [Add α] (t : Finset α) :
@[simp]
theorem Finset.mulEnergy_empty_right {α : Type u_1} [DecidableEq α] [Mul α] (s : Finset α) :
@[simp]
theorem Finset.addEnergy_empty_right {α : Type u_1} [DecidableEq α] [Add α] (s : Finset α) :
@[simp]
theorem Finset.mulEnergy_pos_iff {α : Type u_1} [DecidableEq α] [Mul α] {s t : Finset α} :
@[simp]
theorem Finset.addEnergy_pos_iff {α : Type u_1} [DecidableEq α] [Add α] {s t : Finset α} :
@[simp]
theorem Finset.mulEnergy_eq_zero_iff {α : Type u_1} [DecidableEq α] [Mul α] {s t : Finset α} :
s.mulEnergy t = 0 s = t =
@[simp]
theorem Finset.addEnergy_eq_zero_iff {α : Type u_1} [DecidableEq α] [Add α] {s t : Finset α} :
s.addEnergy t = 0 s = t =
theorem Finset.mulEnergy_eq_card_filter {α : Type u_1} [DecidableEq α] [Mul α] (s t : Finset α) :
s.mulEnergy t = (filter (fun (x : (α × α) × α × α) => match x with | ((a, b), c, d) => a * b = c * d) ((s ×ˢ t) ×ˢ s ×ˢ t)).card
theorem Finset.addEnergy_eq_card_filter {α : Type u_1} [DecidableEq α] [Add α] (s t : Finset α) :
s.addEnergy t = (filter (fun (x : (α × α) × α × α) => match x with | ((a, b), c, d) => a + b = c + d) ((s ×ˢ t) ×ˢ s ×ˢ t)).card
theorem Finset.mulEnergy_eq_sum_sq' {α : Type u_1} [DecidableEq α] [Mul α] (s t : Finset α) :
s.mulEnergy t = as * t, (filter (fun (x : α × α) => match x with | (x, y) => x * y = a) (s ×ˢ t)).card ^ 2
theorem Finset.addEnergy_eq_sum_sq' {α : Type u_1} [DecidableEq α] [Add α] (s t : Finset α) :
s.addEnergy t = as + t, (filter (fun (x : α × α) => match x with | (x, y) => x + y = a) (s ×ˢ t)).card ^ 2
theorem Finset.mulEnergy_eq_sum_sq {α : Type u_1} [DecidableEq α] [Mul α] [Fintype α] (s t : Finset α) :
s.mulEnergy t = a : α, (filter (fun (x : α × α) => match x with | (x, y) => x * y = a) (s ×ˢ t)).card ^ 2
theorem Finset.addEnergy_eq_sum_sq {α : Type u_1} [DecidableEq α] [Add α] [Fintype α] (s t : Finset α) :
s.addEnergy t = a : α, (filter (fun (x : α × α) => match x with | (x, y) => x + y = a) (s ×ˢ t)).card ^ 2
theorem Finset.card_sq_le_card_mul_mulEnergy {α : Type u_1} [DecidableEq α] [Mul α] (s t u : Finset α) :
(filter (fun (x : α × α) => match x with | (a, b) => a * b u) (s ×ˢ t)).card ^ 2 u.card * s.mulEnergy t
theorem Finset.card_sq_le_card_mul_addEnergy {α : Type u_1} [DecidableEq α] [Add α] (s t u : Finset α) :
(filter (fun (x : α × α) => match x with | (a, b) => a + b u) (s ×ˢ t)).card ^ 2 u.card * s.addEnergy t
theorem Finset.le_card_add_mul_mulEnergy {α : Type u_1} [DecidableEq α] [Mul α] (s t : Finset α) :
s.card ^ 2 * t.card ^ 2 (s * t).card * s.mulEnergy t
theorem Finset.le_card_add_mul_addEnergy {α : Type u_1} [DecidableEq α] [Add α] (s t : Finset α) :
s.card ^ 2 * t.card ^ 2 (s + t).card * s.addEnergy t
theorem Finset.mulEnergy_comm {α : Type u_1} [DecidableEq α] [CommMonoid α] (s t : Finset α) :
theorem Finset.addEnergy_comm {α : Type u_1} [DecidableEq α] [AddCommMonoid α] (s t : Finset α) :
@[simp]
theorem Finset.mulEnergy_univ_left {α : Type u_1} [DecidableEq α] [CommGroup α] [Fintype α] (t : Finset α) :
@[simp]
@[simp]
theorem Finset.mulEnergy_univ_right {α : Type u_1} [DecidableEq α] [CommGroup α] [Fintype α] (s : Finset α) :
@[simp]