Theorem: NumberField.hermiteTheorem.minkowskiBound_lt_boundOfDiscBdd
File: Mathlib/NumberTheory/NumberField/Discriminant.lean

Proof steps:
state_before: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
A : Type u_2
inst✝¹ : Field A
inst✝ : CharZero A
N : ℕ
hK : |discr K| ≤ ↑N
⊢ minkowskiBound K 1 < ↑(boundOfDiscBdd N)
state_after: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
A : Type u_2
inst✝¹ : Field A
inst✝ : CharZero A
N : ℕ
hK : |discr K| ≤ ↑N
this : boundOfDiscBdd N - 1 < boundOfDiscBdd N
⊢ minkowskiBound K 1 < ↑(boundOfDiscBdd N)
tactic: have : boundOfDiscBdd N - 1 < boundOfDiscBdd N := by
    simp_rw [boundOfDiscBdd, add_tsub_cancel_right, lt_add_iff_pos_right, zero_lt_one]
state_before: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
A : Type u_2
inst✝¹ : Field A
inst✝ : CharZero A
N : ℕ
hK : |discr K| ≤ ↑N
this : boundOfDiscBdd N - 1 < boundOfDiscBdd N
⊢ minkowskiBound K 1 < ↑(boundOfDiscBdd N)
state_after: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
A : Type u_2
inst✝¹ : Field A
inst✝ : CharZero A
N : ℕ
hK : |discr K| ≤ ↑N
this : boundOfDiscBdd N - 1 < boundOfDiscBdd N
⊢ minkowskiBound K 1 ≤ ↑(boundOfDiscBdd N - 1)
tactic: refine lt_of_le_of_lt ?_ (coe_lt_coe.mpr this)
state_before: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
A : Type u_2
inst✝¹ : Field A
inst✝ : CharZero A
N : ℕ
hK : |discr K| ≤ ↑N
this : boundOfDiscBdd N - 1 < boundOfDiscBdd N
⊢ minkowskiBound K 1 ≤ ↑(boundOfDiscBdd N - 1)
state_after: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
A : Type u_2
inst✝¹ : Field A
inst✝ : CharZero A
N : ℕ
hK : |discr K| ≤ ↑N
this : boundOfDiscBdd N - 1 < boundOfDiscBdd N
⊢ 2⁻¹ ^ NrComplexPlaces K * ↑(sqrt ‖discr K‖₊) * 2 ^ finrank ℚ K ≤ 1 * ↑(sqrt ↑N) * 2 ^ rankOfDiscrBdd N
tactic: rw [minkowskiBound, volume_fundamentalDomain_fractionalIdealLatticeBasis, boundOfDiscBdd,
    add_tsub_cancel_right, Units.val_one, FractionalIdeal.absNorm_one, Rat.cast_one,
    ENNReal.ofReal_one, one_mul, mixedEmbedding.finrank, volume_fundamentalDomain_latticeBasis,
    coe_mul, ENNReal.coe_pow, coe_ofNat, show sqrt N = (1 : ℝ≥0∞) * sqrt N by rw [one_mul]]
state_before: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
A : Type u_2
inst✝¹ : Field A
inst✝ : CharZero A
N : ℕ
hK : |discr K| ≤ ↑N
this : boundOfDiscBdd N - 1 < boundOfDiscBdd N
⊢ 2⁻¹ ^ NrComplexPlaces K * ↑(sqrt ‖discr K‖₊) * 2 ^ finrank ℚ K ≤ 1 * ↑(sqrt ↑N) * 2 ^ rankOfDiscrBdd N
state_after: case h₁.h₁
K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
A : Type u_2
inst✝¹ : Field A
inst✝ : CharZero A
N : ℕ
hK : |discr K| ≤ ↑N
this : boundOfDiscBdd N - 1 < boundOfDiscBdd N
⊢ 2⁻¹ ^ NrComplexPlaces K ≤ 1

case h₁.h₂.a
K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
A : Type u_2
inst✝¹ : Field A
inst✝ : CharZero A
N : ℕ
hK : |discr K| ≤ ↑N
this : boundOfDiscBdd N - 1 < boundOfDiscBdd N
⊢ sqrt ‖discr K‖₊ ≤ sqrt ↑N

case h₂.ha
K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
A : Type u_2
inst✝¹ : Field A
inst✝ : CharZero A
N : ℕ
hK : |discr K| ≤ ↑N
this : boundOfDiscBdd N - 1 < boundOfDiscBdd N
⊢ 1 ≤ 2

case h₂.h
K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
A : Type u_2
inst✝¹ : Field A
inst✝ : CharZero A
N : ℕ
hK : |discr K| ≤ ↑N
this : boundOfDiscBdd N - 1 < boundOfDiscBdd N
⊢ finrank ℚ K ≤ rankOfDiscrBdd N
tactic: gcongr