Theorem: Hilbert92ish (FltRegular/NumberTheory/Hilbert92.lean)

State before:
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
obtain ⟨h, ζ, hζ, hζ'⟩ := h_exists' p (k := k) hp
State after:
case intro.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)

State before:
case intro.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
by_cases H : ∀ ε : (𝓞 K)ˣ, algebraMap k K ζ ^ ((p : ℕ)^(h - 1)) ≠ ε / (σ ε : K)
State after:
case pos
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
H :
  ∀ (ε : (𝓞 K)ˣ),
    (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)

case neg
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
H :
  ¬∀ (ε : (𝓞 K)ˣ),
      (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)

State before:
case neg
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
H :
  ¬∀ (ε : (𝓞 K)ˣ),
      (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
simp only [ne_eq, not_forall, not_not] at H
State after:
case neg
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
H :
  ∃ x, (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑x / σ ((algebraMap (𝓞 K) K) ↑x)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)

State before:
case neg
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
H :
  ∃ x, (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑x / σ ((algebraMap (𝓞 K) K) ↑x)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
obtain ⟨E, hE⟩ := H
State after:
case neg.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)

State before:
case neg.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
let NE := Units.map (RingOfIntegers.norm k) E
State after:
case neg.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)

State before:
case neg.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
have hNE : (NE : k) = Algebra.norm k (E : K) := rfl
State after:
case neg.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)

State before:
case neg.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
obtain ⟨S, hS⟩ := Hilbert91ish p (K := K) (k := k) hp hKL σ hσ
State after:
case neg.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)

State before:
case neg.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
have NE_p_pow : (Units.map (algebraMap (𝓞 k) (𝓞 K)).toMonoidHom NE) = E ^ (p : ℕ)
State after:
case NE_p_pow
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
⊢ (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p

case neg.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)

State before:
case neg.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
let H := unitlifts p hp hKL σ hσ S
State after:
case neg.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)

State before:
case neg.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
let N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul (Units.map (RingOfIntegers.norm k) (Additive.toMul (H e)))
State after:
case neg.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)

State before:
case neg.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
let η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
State after:
case neg.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)

State before:
case neg.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
obtain ⟨a, ι, i, ha, ha', ha''⟩ := lh_pow_free p hp ζ (k := k) (K := K) hζ' η
State after:
case neg.intro.intro.intro.intro.intro.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)

State before:
case neg.intro.intro.intro.intro.intro.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
let H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
State after:
case neg.intro.intro.intro.intro.intro.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)

State before:
case neg.intro.intro.intro.intro.intro.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
let J := (Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i)) *
              (Units.map (algebraMap (𝓞 k) (𝓞 K)).toMonoidHom ζ) ^ (-a)
State after:
case neg.intro.intro.intro.intro.intro.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)

State before:
case neg.intro.intro.intro.intro.intro.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
refine ⟨J, ?_⟩
State after:
case neg.intro.intro.intro.intro.intro.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
⊢ (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑J) = 1 ∧
    ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑J ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)

State before:
case neg.intro.intro.intro.intro.intro.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
⊢ (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑J) = 1 ∧
    ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑J ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
constructor
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.left
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
⊢ (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑J) = 1

case neg.intro.intro.intro.intro.intro.intro.intro.right
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
⊢ ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑J ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)

State before:
case pos
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
H :
  ∀ (ε : (𝓞 K)ˣ),
    (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
⊢ ∃ η,
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑η) = 1 ∧
      ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑η ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
exact Hilbert92ish_aux0 p hKL σ h ζ hζ H
State after:
no goals

State before:
case NE_p_pow
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
⊢ (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
Tactic:
ext
State after:
case NE_p_pow.a.h
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
⊢ ↑↑((Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE) = ↑↑(E ^ ↑p)

State before:
case NE_p_pow.a.h
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
⊢ ↑↑((Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE) = ↑↑(E ^ ↑p)
Tactic:
simp only [RingHom.toMonoidHom_eq_coe, Units.coe_map, MonoidHom.coe_coe,
  RingOfInteger.coe_algebraMap_apply, Units.val_pow_eq_pow_val, map_pow]
State after:
case NE_p_pow.a.h
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
⊢ (algebraMap k K) ↑↑NE = (algebraMap (𝓞 K) K) ↑E ^ ↑p

State before:
case NE_p_pow.a.h
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
⊢ (algebraMap k K) ↑↑NE = (algebraMap (𝓞 K) K) ↑E ^ ↑p
Tactic:
rw [← map_pow] at hE
State after:
case NE_p_pow.a.h
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ (h - 1)) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
⊢ (algebraMap k K) ↑↑NE = (algebraMap (𝓞 K) K) ↑E ^ ↑p

State before:
case NE_p_pow.a.h
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ (h - 1)) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
⊢ (algebraMap k K) ↑↑NE = (algebraMap (𝓞 K) K) ↑E ^ ↑p
Tactic:
refine Hilbert92ish_aux2 p hp hKL σ hσ E _ hE ?_ hpodd
State after:
case NE_p_pow.a.h
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ (h - 1)) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
⊢ ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ (h - 1)) ^ ↑p = 1

State before:
case NE_p_pow.a.h
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ (h - 1)) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
⊢ ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ (h - 1)) ^ ↑p = 1
Tactic:
rw [← pow_mul, ← pow_succ]
State after:
case NE_p_pow.a.h
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ (h - 1)) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
⊢ (algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ (h - 1 + 1) = 1

State before:
case NE_p_pow.a.h
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ (h - 1)) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
⊢ (algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ (h - 1 + 1) = 1
Tactic:
apply (hζ.pow_eq_one_iff_dvd _).2
State after:
case NE_p_pow.a.h
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ (h - 1)) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
⊢ ↑p ^ h ∣ ↑p ^ (h - 1 + 1)

State before:
case NE_p_pow.a.h
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H
inst✝⁷ : Fintype H
hCard : Fintype.card H = ↑p
σ✝ : H
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ (h - 1)) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
⊢ ↑p ^ h ∣ ↑p ^ (h - 1 + 1)
Tactic:
cases h <;> simp only [Nat.zero_eq, pow_zero, zero_le, tsub_eq_zero_of_le,
  zero_add, pow_one, one_dvd, Nat.succ_sub_succ_eq_sub,
  nonpos_iff_eq_zero, tsub_zero, dvd_refl]
State after:
no goals

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.left
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
⊢ (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑J) = 1
Tactic:
apply Hilbert92ish_aux1 p hKL (r + 2) H2 ζ a ι η ha
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.left
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
⊢ ∀ (i : Fin (r + 2)),
    (algebraMap (𝓞 k) k) ↑(Additive.toMul (η i)) = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑(Additive.toMul (H2 i)))

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.left
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
⊢ ∀ (i : Fin (r + 2)),
    (algebraMap (𝓞 k) k) ↑(Additive.toMul (η i)) = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑(Additive.toMul (H2 i)))
Tactic:
intro i
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.left
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i✝ : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i✝
ha'' : ζ = 1 → i✝ ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
i : Fin (r + 2)
⊢ (algebraMap (𝓞 k) k) ↑(Additive.toMul (η i)) = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑(Additive.toMul (H2 i)))

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.left
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i✝ : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i✝
ha'' : ζ = 1 → i✝ ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
i : Fin (r + 2)
⊢ (algebraMap (𝓞 k) k) ↑(Additive.toMul (η i)) = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑(Additive.toMul (H2 i)))
Tactic:
induction i using Fin.lastCases with
| last =>
  simp only [Fin.snoc_last, toMul_ofMul, Units.coe_map, RingOfIntegers.coe_norm, NE, η, H2]
| cast i =>
  simp only [Fin.snoc_castSucc, toMul_ofMul, Units.coe_map, RingOfIntegers.coe_norm, NE,
    η, H2, J, N, H]
State after:
no goals

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.left.last
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
⊢ (algebraMap (𝓞 k) k) ↑(Additive.toMul (η (Fin.last (r + 1)))) =
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑(Additive.toMul (H2 (Fin.last (r + 1)))))
Tactic:
simp only [Fin.snoc_last, toMul_ofMul, Units.coe_map, RingOfIntegers.coe_norm, NE, η, H2]
State after:
no goals

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.left.cast
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i✝ : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i✝
ha'' : ζ = 1 → i✝ ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
i : Fin (r + 1)
⊢ (algebraMap (𝓞 k) k) ↑(Additive.toMul (η i.castSucc)) =
    (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑(Additive.toMul (H2 i.castSucc)))
Tactic:
simp only [Fin.snoc_castSucc, toMul_ofMul, Units.coe_map, RingOfIntegers.coe_norm, NE,
  η, H2, J, N, H]
State after:
no goals

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
⊢ ∀ (ε : (𝓞 K)ˣ), (algebraMap (𝓞 K) K) ↑J ≠ (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
Tactic:
intro ε hε
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.right
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
⊢ False

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
⊢ False
Tactic:
refine hS.corollary p hp _ _ (finrank_G p hp hKL σ hσ) _ (ι ∘ Fin.castSucc) ?_ (mkG ε) ?_
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
⊢ ∃ i, ¬↑↑p ∣ (ι ∘ Fin.castSucc) i

case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_2
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
⊢ (1 - zeta ↑p) • mkG ε = ∑ i : Fin (r + 1), (ι ∘ Fin.castSucc) i • S.units i

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
⊢ ∃ i, ¬↑↑p ∣ (ι ∘ Fin.castSucc) i
Tactic:
by_contra hε'
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ¬∃ i, ¬↑↑p ∣ (ι ∘ Fin.castSucc) i
⊢ False

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ¬∃ i, ¬↑↑p ∣ (ι ∘ Fin.castSucc) i
⊢ False
Tactic:
simp only [Function.comp_apply, not_exists, not_not] at hε'
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
⊢ False

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
⊢ False
Tactic:
have : i ∉ Set.range Fin.castSucc := by rintro ⟨i, rfl⟩; exact ha' (hε' i)
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i ∉ Set.range Fin.castSucc
⊢ False

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i ∉ Set.range Fin.castSucc
⊢ False
Tactic:
rw [← Fin.succAbove_last, Fin.range_succAbove, Set.mem_compl_iff,
  Set.mem_singleton_iff, not_not] at this
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
⊢ False

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
⊢ False
Tactic:
rw [this] at ha'
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
⊢ False

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
⊢ False
Tactic:
cases' h with h
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.zero
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ 0)
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (0 - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
⊢ False

case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.succ
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
hE :
  (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h + 1 - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
⊢ False

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.succ
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
hE :
  (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h + 1 - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
⊢ False
Tactic:
obtain ⟨ε', hε'⟩ : ∃ ε' : (𝓞 k)ˣ, ε' ^ (p : ℕ) = NE
State after:
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
hE :
  (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h + 1 - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
⊢ ∃ ε', ε' ^ ↑p = NE

case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.succ.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε'✝ : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
hE :
  (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h + 1 - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
ε' : (𝓞 k)ˣ
hε' : ε' ^ ↑p = NE
⊢ False

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.succ.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε'✝ : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
hE :
  (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h + 1 - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
ε' : (𝓞 k)ˣ
hε' : ε' ^ ↑p = NE
⊢ False
Tactic:
have hζ'' := (hζ.pow (p ^ h.succ).pos (pow_succ _ _)).map_of_injective
  (algebraMap k K).injective
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.succ.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε'✝ : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
hE :
  (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h + 1 - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
ε' : (𝓞 k)ˣ
hε' : ε' ^ ↑p = NE
hζ'' : IsPrimitiveRoot ((algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ h)) ↑p
⊢ False

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.succ.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε'✝ : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
hE :
  (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h + 1 - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
ε' : (𝓞 k)ˣ
hε' : ε' ^ ↑p = NE
hζ'' : IsPrimitiveRoot ((algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ h)) ↑p
⊢ False
Tactic:
obtain ⟨ε'', hε''⟩ : ∃ ε'' : (𝓞 k)ˣ, E = Units.map (algebraMap (𝓞 k) (𝓞 K)).toMonoidHom ε''
State after:
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε'✝ : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
hE :
  (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h + 1 - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
ε' : (𝓞 k)ˣ
hε' : ε' ^ ↑p = NE
hζ'' : IsPrimitiveRoot ((algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ h)) ↑p
⊢ ∃ ε'', E = (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ε''

case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.succ.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε'✝ : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
hE :
  (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h + 1 - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
ε' : (𝓞 k)ˣ
hε' : ε' ^ ↑p = NE
hζ'' : IsPrimitiveRoot ((algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ h)) ↑p
ε'' : (𝓞 k)ˣ
hε'' : E = (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ε''
⊢ False

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.succ.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε'✝ : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
hE :
  (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h + 1 - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
ε' : (𝓞 k)ˣ
hε' : ε' ^ ↑p = NE
hζ'' : IsPrimitiveRoot ((algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ h)) ↑p
ε'' : (𝓞 k)ˣ
hε'' : E = (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ε''
⊢ False
Tactic:
simp only [Nat.succ_sub_succ_eq_sub, tsub_zero, ← map_pow, hε'', RingHom.toMonoidHom_eq_coe,
  Units.coe_map, MonoidHom.coe_coe, RingOfInteger.coe_algebraMap_apply,
  AlgEquiv.commutes] at hE
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.succ.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε'✝ : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
ε' : (𝓞 k)ˣ
hε' : ε' ^ ↑p = NE
hζ'' : IsPrimitiveRoot ((algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ h)) ↑p
ε'' : (𝓞 k)ˣ
hε'' : E = (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ε''
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) (↑ζ ^ ↑p ^ h)) = (algebraMap k K) ↑↑ε'' / (algebraMap k K) ↑↑ε''
⊢ False

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.succ.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε'✝ : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
ε' : (𝓞 k)ˣ
hε' : ε' ^ ↑p = NE
hζ'' : IsPrimitiveRoot ((algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ h)) ↑p
ε'' : (𝓞 k)ˣ
hε'' : E = (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ε''
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) (↑ζ ^ ↑p ^ h)) = (algebraMap k K) ↑↑ε'' / (algebraMap k K) ↑↑ε''
⊢ False
Tactic:
replace hE : (algebraMap k K) (((ζ : 𝓞 k) : k) ^ (p : ℕ) ^ h) = 1 := by
 rwa [div_self (by simp)] at hE
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.succ.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε'✝ : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
ε' : (𝓞 k)ˣ
hε' : ε' ^ ↑p = NE
hζ'' : IsPrimitiveRoot ((algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ h)) ↑p
ε'' : (𝓞 k)ˣ
hε'' : E = (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ε''
hE : (algebraMap k K) (↑↑ζ ^ ↑p ^ h) = 1
⊢ False

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.succ.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε'✝ : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
ε' : (𝓞 k)ˣ
hε' : ε' ^ ↑p = NE
hζ'' : IsPrimitiveRoot ((algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ ^ ↑p ^ h)) ↑p
ε'' : (𝓞 k)ˣ
hε'' : E = (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ε''
hE : (algebraMap k K) (↑↑ζ ^ ↑p ^ h) = 1
⊢ False
Tactic:
erw [hE] at hζ''
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.succ.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε'✝ : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
ε' : (𝓞 k)ˣ
hε' : ε' ^ ↑p = NE
hζ'' : IsPrimitiveRoot 1 ↑p
ε'' : (𝓞 k)ˣ
hε'' : E = (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ε''
hE : (algebraMap k K) (↑↑ζ ^ ↑p ^ h) = 1
⊢ False

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.succ.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε'✝ : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
ε' : (𝓞 k)ˣ
hε' : ε' ^ ↑p = NE
hζ'' : IsPrimitiveRoot 1 ↑p
ε'' : (𝓞 k)ˣ
hε'' : E = (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ε''
hE : (algebraMap k K) (↑↑ζ ^ ↑p ^ h) = 1
⊢ False
Tactic:
rw [IsPrimitiveRoot.one_left_iff] at hζ''
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.succ.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε'✝ : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
ε' : (𝓞 k)ˣ
hε' : ε' ^ ↑p = NE
hζ'' : ↑p = 1
ε'' : (𝓞 k)ˣ
hε'' : E = (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ε''
hE : (algebraMap k K) (↑↑ζ ^ ↑p ^ h) = 1
⊢ False

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.succ.intro.intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε'✝ : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
h : ℕ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ (h + 1))
ε' : (𝓞 k)ˣ
hε' : ε' ^ ↑p = NE
hζ'' : ↑p = 1
ε'' : (𝓞 k)ˣ
hε'' : E = (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ε''
hE : (algebraMap k K) (↑↑ζ ^ ↑p ^ h) = 1
⊢ False
Tactic:
exact hp.one_lt.ne.symm hζ''
State after:
no goals

State before:
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι i
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
⊢ i ∉ Set.range Fin.castSucc
Tactic:
rintro ⟨i, rfl⟩
State after:
case intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
i : Fin (r + 1)
ha' : ¬↑↑p ∣ ι i.castSucc
ha'' : ζ = 1 → i.castSucc ≠ Fin.last (r + 1)
⊢ False

State before:
case intro
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
h : ℕ
ζ : (𝓞 k)ˣ
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ h)
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (h - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
i : Fin (r + 1)
ha' : ¬↑↑p ∣ ι i.castSucc
ha'' : ζ = 1 → i.castSucc ≠ Fin.last (r + 1)
⊢ False
Tactic:
exact ha' (hε' i)
State after:
no goals

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.zero
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ 0)
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (0 - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
⊢ False
Tactic:
refine ha'' ?_ this
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.zero
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ 0)
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (0 - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
⊢ ζ = 1

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.zero
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ 0)
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (0 - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
⊢ ζ = 1
Tactic:
ext
State after:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.zero.a.h
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ 0)
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (0 - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
⊢ ↑↑ζ = ↑↑1

State before:
case neg.intro.intro.intro.intro.intro.intro.intro.right.refine_1.zero.a.h
p : ℕ+
K : Type u_1
inst✝¹³ : Field K
inst✝¹² : NumberField K
k : Type u_2
inst✝¹¹ : Field k
inst✝¹⁰ : NumberField k
hp : (↑p).Prime
G : Type u_3
H✝ : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : CommGroup H✝
inst✝⁷ : Fintype H✝
hCard : Fintype.card H✝ = ↑p
σ✝ : H✝
hσ✝ : Subgroup.zpowers σ✝ = ⊤
r : ℕ
inst✝⁶ : DistribMulAction H✝ G
inst✝⁵ : Module.Free ℤ G
inst✝⁴ : Module.Finite ℤ G
hf : finrank ℤ G = r * (↑p - 1)
inst✝³ : Algebra k K
inst✝² : IsGalois k K
inst✝¹ : FiniteDimensional k K
inst✝ : IsUnramifiedAtInfinitePlaces k K
hKL : finrank k K = ↑p
σ : K ≃ₐ[k] K
hσ : ∀ (x : K ≃ₐ[k] K), x ∈ Subgroup.zpowers σ
hpodd : ↑p ≠ 2
ζ : (𝓞 k)ˣ
hζ' : ∀ (ε : (𝓞 k)ˣ) (n : ℕ), ε ^ ↑p ^ n = 1 → ∃ i, ζ ^ i = ε
E : (𝓞 K)ˣ
NE : (𝓞 k)ˣ := (Units.map (RingOfIntegers.norm k)) E
hNE : (algebraMap (𝓞 k) k) ↑NE = (Algebra.norm k) ((algebraMap (𝓞 K) K) ↑E)
S :
  systemOfUnits p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1)
hS :
  systemOfUnits.IsFundamental p
    (Additive (relativeUnitsWithGenerator p hp hKL σ hσ) ⧸
      AddCommGroup.torsion (Additive (relativeUnitsWithGenerator p hp hKL σ hσ)))
    (r + 1) S
NE_p_pow : (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) NE = E ^ ↑p
H : Fin (r + 1) → Additive (𝓞 K)ˣ := unitlifts p hp hKL σ hσ S
N : Fin (r + 1) → Additive (𝓞 k)ˣ :=
  fun e => Additive.ofMul ((Units.map (RingOfIntegers.norm k)) (Additive.toMul (H e)))
η : Fin (r + 2) → Additive (𝓞 k)ˣ := Fin.snoc N (Additive.ofMul NE)
a : ℤ
ι : Fin (r + 2) → ℤ
i : Fin (r + 2)
ha : ∑ i : Fin (r + 2), ι i • η i = (a * ↑↑p) • Additive.ofMul ζ
ha' : ¬↑↑p ∣ ι (Fin.last (r + 1))
ha'' : ζ = 1 → i ≠ Fin.last (r + 1)
H2 : Fin (r + 2) → Additive (𝓞 K)ˣ := Fin.snoc H (Additive.ofMul E)
J : (𝓞 K)ˣ := Additive.toMul (∑ i : Fin (r + 2), ι i • H2 i) * (Units.map ↑(algebraMap (𝓞 k) (𝓞 K))) ζ ^ (-a)
ε : (𝓞 K)ˣ
hε : (algebraMap (𝓞 K) K) ↑J = (algebraMap (𝓞 K) K) ↑ε / σ ((algebraMap (𝓞 K) K) ↑ε)
hε' : ∀ (x : Fin (r + 1)), ↑↑p ∣ ι x.castSucc
this : i = Fin.last (r + 1)
hζ : IsPrimitiveRoot ((algebraMap (𝓞 k) k) ↑ζ) (↑p ^ 0)
hE : (algebraMap k K) ((algebraMap (𝓞 k) k) ↑ζ) ^ ↑p ^ (0 - 1) = (algebraMap (𝓞 K) K) ↑E / σ ((algebraMap (𝓞 K) K) ↑E)
⊢ ↑↑ζ = ↑↑1
Tactic:
simpa using hζ
State after:
no goals