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
Instances For
    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
    Instances For

      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.
      Instances For

        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.
        Instances For

          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.
          Instances For

            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.
            Instances For
              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.le_mulEnergy_self {α : Type u_1} [DecidableEq α] [Mul α] {s : Finset α} :
              theorem Finset.le_addEnergy_self {α : Type u_1} [DecidableEq α] [Add α] {s : 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
              theorem Finset.mulEnergy_self_pos {α : Type u_1} [DecidableEq α] [Mul α] {s : Finset α} (hs : s.Nonempty) :
              0 < s.mulEnergy s
              theorem Finset.addEnergy_self_pos {α : Type u_1} [DecidableEq α] [Add α] {s : Finset α} (hs : s.Nonempty) :
              0 < s.addEnergy s
              @[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_self_pos_iff {α : Type u_1} [DecidableEq α] [Mul α] {s : Finset α} :
              theorem Finset.addEnergy_self_pos_iff {α : Type u_1} [DecidableEq α] [Add α] {s : Finset α} :
              theorem Finset.mulEnergy_self_eq_zero_iff {α : Type u_1} [DecidableEq α] [Mul α] {s : Finset α} :
              s.mulEnergy s = 0 ↔ s = ∅
              theorem Finset.addEnergy_self_eq_zero_iff {α : Type u_1} [DecidableEq α] [Add α] {s : Finset α} :
              s.addEnergy s = 0 ↔ s = ∅
              theorem Finset.mulEnergy_eq_card_filter {α : Type u_1} [DecidableEq α] [Mul α] (s t : Finset α) :
              s.mulEnergy t = {x ∈ (s ×ˢ t) ×ˢ s ×ˢ t | x.1.1 * x.1.2 = x.2.1 * x.2.2}.card
              theorem Finset.addEnergy_eq_card_filter {α : Type u_1} [DecidableEq α] [Add α] (s t : Finset α) :
              s.addEnergy t = {x ∈ (s ×ˢ t) ×ˢ s ×ˢ t | x.1.1 + x.1.2 = x.2.1 + x.2.2}.card
              theorem Finset.mulEnergy_eq_sum_sq' {α : Type u_1} [DecidableEq α] [Mul α] (s t : Finset α) :
              s.mulEnergy t = ∑ a ∈ s * t, {xy ∈ s ×ˢ t | xy.1 * xy.2 = a}.card ^ 2
              theorem Finset.addEnergy_eq_sum_sq' {α : Type u_1} [DecidableEq α] [Add α] (s t : Finset α) :
              s.addEnergy t = ∑ a ∈ s + t, {xy ∈ s ×ˢ t | xy.1 + xy.2 = a}.card ^ 2
              theorem Finset.mulEnergy_eq_sum_sq {α : Type u_1} [DecidableEq α] [Mul α] [Fintype α] (s t : Finset α) :
              s.mulEnergy t = ∑ a : α, {xy ∈ s ×ˢ t | xy.1 * xy.2 = a}.card ^ 2
              theorem Finset.addEnergy_eq_sum_sq {α : Type u_1} [DecidableEq α] [Add α] [Fintype α] (s t : Finset α) :
              s.addEnergy t = ∑ a : α, {xy ∈ s ×ˢ t | xy.1 + xy.2 = a}.card ^ 2
              theorem Finset.card_sq_le_card_mul_mulEnergy {α : Type u_1} [DecidableEq α] [Mul α] (s t u : Finset α) :
              {xy ∈ s ×ˢ t | xy.1 * xy.2 ∈ u}.card ^ 2 ≤ u.card * s.mulEnergy t
              theorem Finset.card_sq_le_card_mul_addEnergy {α : Type u_1} [DecidableEq α] [Add α] (s t u : Finset α) :
              {xy ∈ s ×ˢ t | xy.1 + xy.2 ∈ u}.card ^ 2 ≤ u.card * s.addEnergy t
              theorem Finset.le_card_mul_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]