File: Mathlib/NumberTheory/ADEInequality.lean

full_name: ADEInequality.A'
code: /-- `A' q r := {1,q,r}` is a `Multiset ℕ+`
that is a solution to the inequality
`(p⁻¹ + q⁻¹ + r⁻¹ : ℚ) > 1`. -/
def A' (q r : ℕ+) : Multiset ℕ+ 
goal: Multiset ℕ+

full_name: ADEInequality.A
code: /-- `A r := {1,1,r}` is a `Multiset ℕ+`
that is a solution to the inequality
`(p⁻¹ + q⁻¹ + r⁻¹ : ℚ) > 1`.

These solutions are related to the Dynkin diagrams $A_r$. -/
def A (r : ℕ+) : Multiset ℕ+ 
goal: Multiset ℕ+

full_name: ADEInequality.D'
code: /-- `D' r := {2,2,r}` is a `Multiset ℕ+`
that is a solution to the inequality
`(p⁻¹ + q⁻¹ + r⁻¹ : ℚ) > 1`.

These solutions are related to the Dynkin diagrams $D_{r+2}$. -/
def D' (r : ℕ+) : Multiset ℕ+ 
goal: Multiset ℕ+

full_name: ADEInequality.E'
code: /-- `E' r := {2,3,r}` is a `Multiset ℕ+`.
For `r ∈ {3,4,5}` is a solution to the inequality
`(p⁻¹ + q⁻¹ + r⁻¹ : ℚ) > 1`.

These solutions are related to the Dynkin diagrams $E_{r+3}$. -/
def E' (r : ℕ+) : Multiset ℕ+ 
goal: Multiset ℕ+

full_name: ADEInequality.E6
code: /-- `E6 := {2,3,3}` is a `Multiset ℕ+`
that is a solution to the inequality
`(p⁻¹ + q⁻¹ + r⁻¹ : ℚ) > 1`.

This solution is related to the Dynkin diagrams $E_6$. -/
def E6 : Multiset ℕ+ 
goal: Multiset ℕ+

full_name: ADEInequality.E7
code: /-- `E7 := {2,3,4}` is a `Multiset ℕ+`
that is a solution to the inequality
`(p⁻¹ + q⁻¹ + r⁻¹ : ℚ) > 1`.

This solution is related to the Dynkin diagrams $E_7$. -/
def E7 : Multiset ℕ+ 
goal: Multiset ℕ+

full_name: ADEInequality.E8
code: /-- `E8 := {2,3,5}` is a `Multiset ℕ+`
that is a solution to the inequality
`(p⁻¹ + q⁻¹ + r⁻¹ : ℚ) > 1`.

This solution is related to the Dynkin diagrams $E_8$. -/
def E8 : Multiset ℕ+ 
goal: Multiset ℕ+

full_name: ADEInequality.sumInv
code: /-- `sum_inv pqr` for a `pqr : Multiset ℕ+` is the sum of the inverses
of the elements of `pqr`, as rational number.

The intended argument is a multiset `{p,q,r}` of cardinality `3`. -/
def sumInv (pqr : Multiset ℕ+) : ℚ 
goal: ℚ

full_name: ADEInequality.sumInv_pqr
code: theorem sumInv_pqr (p q r : ℕ+) : sumInv {p, q, r} = (p : ℚ)⁻¹ + (q : ℚ)⁻¹ + (r : ℚ)⁻¹ 
goal: ADEInequality.sumInv {p, q, r} = (↑↑p)⁻¹ + (↑↑q)⁻¹ + (↑↑r)⁻¹

full_name: ADEInequality.Admissible
code: /-- A multiset `pqr` of positive natural numbers is `admissible`
if it is equal to `A' q r`, or `D' r`, or one of `E6`, `E7`, or `E8`. -/
def Admissible (pqr : Multiset ℕ+) : Prop 
goal: Prop

full_name: ADEInequality.admissible_A'
code: theorem admissible_A' (q r : ℕ+) : Admissible (A' q r) 
goal: ADEInequality.Admissible (ADEInequality.A' q r)

full_name: ADEInequality.admissible_D'
code: theorem admissible_D' (n : ℕ+) : Admissible (D' n) 
goal: ADEInequality.Admissible (ADEInequality.D' n)

full_name: ADEInequality.admissible_E'3
code: theorem admissible_E'3 : Admissible (E' 3) 
goal: ADEInequality.Admissible (ADEInequality.E' 3)

full_name: ADEInequality.admissible_E'4
code: theorem admissible_E'4 : Admissible (E' 4) 
goal: ADEInequality.Admissible (ADEInequality.E' 4)

full_name: ADEInequality.admissible_E'5
code: theorem admissible_E'5 : Admissible (E' 5) 
goal: ADEInequality.Admissible (ADEInequality.E' 5)

full_name: ADEInequality.admissible_E6
code: theorem admissible_E6 : Admissible E6 
goal: ADEInequality.Admissible ADEInequality.E6

full_name: ADEInequality.admissible_E7
code: theorem admissible_E7 : Admissible E7 
goal: ADEInequality.Admissible ADEInequality.E7

full_name: ADEInequality.admissible_E8
code: theorem admissible_E8 : Admissible E8 
goal: ADEInequality.Admissible ADEInequality.E8

full_name: ADEInequality.Admissible.one_lt_sumInv
code: theorem Admissible.one_lt_sumInv {pqr : Multiset ℕ+} : Admissible pqr → 1 < sumInv pqr 
goal: ADEInequality.Admissible pqr → 1 < ADEInequality.sumInv pqr

full_name: ADEInequality.lt_three
code: theorem lt_three {p q r : ℕ+} (hpq : p ≤ q) (hqr : q ≤ r) (H : 1 < sumInv {p, q, r}) : p < 3 
goal: p < 3

full_name: ADEInequality.lt_four
code: theorem lt_four {q r : ℕ+} (hqr : q ≤ r) (H : 1 < sumInv {2, q, r}) : q < 4 
goal: q < 4

full_name: ADEInequality.lt_six
code: theorem lt_six {r : ℕ+} (H : 1 < sumInv {2, 3, r}) : r < 6 
goal: r < 6

full_name: ADEInequality.admissible_of_one_lt_sumInv_aux'
code: theorem admissible_of_one_lt_sumInv_aux' {p q r : ℕ+} (hpq : p ≤ q) (hqr : q ≤ r)
    (H : 1 < sumInv {p, q, r}) : Admissible {p, q, r} 
goal: ADEInequality.Admissible {p, q, r}

full_name: ADEInequality.admissible_of_one_lt_sumInv_aux
code: theorem admissible_of_one_lt_sumInv_aux :
    ∀ {pqr : List ℕ+} (_ : pqr.Sorted (· ≤ ·)) (_ : pqr.length = 3) (_ : 1 < sumInv pqr),
      Admissible pqr
  
goal: List.Sorted (fun x x_1 => x ≤ x_1) pqr → pqr.length = 3 → 1 < ADEInequality.sumInv ↑pqr → ADEInequality.Admissible ↑pqr

full_name: ADEInequality.admissible_of_one_lt_sumInv
code: theorem admissible_of_one_lt_sumInv {p q r : ℕ+} (H : 1 < sumInv {p, q, r}) :
    Admissible {p, q, r} 
goal: ADEInequality.Admissible {p, q, r}

full_name: ADEInequality.classification
code: /-- A multiset `{p,q,r}` of positive natural numbers
is a solution to `(p⁻¹ + q⁻¹ + r⁻¹ : ℚ) > 1` if and only if
it is `admissible` which means it is one of:

* `A' q r := {1,q,r}`
* `D' r := {2,2,r}`
* `E6 := {2,3,3}`, or `E7 := {2,3,4}`, or `E8 := {2,3,5}`
-/
theorem classification (p q r : ℕ+) : 1 < sumInv {p, q, r} ↔ Admissible {p, q, r} 
goal: 1 < ADEInequality.sumInv {p, q, r} ↔ ADEInequality.Admissible {p, q, r}