Theorem: mem_coeSubmodule_conductor
File: Mathlib/NumberTheory/KummerDedekind.lean

tactic: cases subsingleton_or_nontrivial L
state_before: R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
⊢ y ∈ coeSubmodule L (conductor R x) ↔ ∀ (z : S), y * (algebraMap S L) z ∈ adjoin R {(algebraMap S L) x}
state_after: case inl
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Subsingleton L
⊢ y ∈ coeSubmodule L (conductor R x) ↔ ∀ (z : S), y * (algebraMap S L) z ∈ adjoin R {(algebraMap S L) x}

case inr
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Nontrivial L
⊢ y ∈ coeSubmodule L (conductor R x) ↔ ∀ (z : S), y * (algebraMap S L) z ∈ adjoin R {(algebraMap S L) x}

tactic: trans ∀ z, y * (algebraMap S L) z ∈ (Algebra.adjoin R {x}).map (IsScalarTower.toAlgHom R S L)
state_before: case inr
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Nontrivial L
⊢ y ∈ coeSubmodule L (conductor R x) ↔ ∀ (z : S), y * (algebraMap S L) z ∈ adjoin R {(algebraMap S L) x}
state_after: R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Nontrivial L
⊢ y ∈ coeSubmodule L (conductor R x) ↔
    ∀ (z : S), y * (algebraMap S L) z ∈ Subalgebra.map (IsScalarTower.toAlgHom R S L) (adjoin R {x})

R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Nontrivial L
⊢ (∀ (z : S), y * (algebraMap S L) z ∈ Subalgebra.map (IsScalarTower.toAlgHom R S L) (adjoin R {x})) ↔
    ∀ (z : S), y * (algebraMap S L) z ∈ adjoin R {(algebraMap S L) x}

tactic: rw [Subsingleton.elim (coeSubmodule L _) ⊤, Subsingleton.elim (Algebra.adjoin R _) ⊤]
state_before: case inl
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Subsingleton L
⊢ y ∈ coeSubmodule L (conductor R x) ↔ ∀ (z : S), y * (algebraMap S L) z ∈ adjoin R {(algebraMap S L) x}
state_after: case inl
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Subsingleton L
⊢ y ∈ ⊤ ↔ ∀ (z : S), y * (algebraMap S L) z ∈ ⊤

tactic: simp
state_before: case inl
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Subsingleton L
⊢ y ∈ ⊤ ↔ ∀ (z : S), y * (algebraMap S L) z ∈ ⊤
state_after: no goals

tactic: simp only [coeSubmodule, Submodule.mem_map, Algebra.linearMap_apply, Subalgebra.mem_map,
  IsScalarTower.coe_toAlgHom']
state_before: R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Nontrivial L
⊢ y ∈ coeSubmodule L (conductor R x) ↔
    ∀ (z : S), y * (algebraMap S L) z ∈ Subalgebra.map (IsScalarTower.toAlgHom R S L) (adjoin R {x})
state_after: R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Nontrivial L
⊢ (∃ y_1 ∈ conductor R x, (algebraMap S L) y_1 = y) ↔
    ∀ (z : S), ∃ x_1 ∈ adjoin R {x}, (algebraMap S L) x_1 = y * (algebraMap S L) z

tactic: constructor
state_before: R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Nontrivial L
⊢ (∃ y_1 ∈ conductor R x, (algebraMap S L) y_1 = y) ↔
    ∀ (z : S), ∃ x_1 ∈ adjoin R {x}, (algebraMap S L) x_1 = y * (algebraMap S L) z
state_after: case mp
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Nontrivial L
⊢ (∃ y_1 ∈ conductor R x, (algebraMap S L) y_1 = y) →
    ∀ (z : S), ∃ x_1 ∈ adjoin R {x}, (algebraMap S L) x_1 = y * (algebraMap S L) z

case mpr
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Nontrivial L
⊢ (∀ (z : S), ∃ x_1 ∈ adjoin R {x}, (algebraMap S L) x_1 = y * (algebraMap S L) z) →
    ∃ y_1 ∈ conductor R x, (algebraMap S L) y_1 = y

tactic: rintro ⟨y, hy, rfl⟩ z
state_before: case mp
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Nontrivial L
⊢ (∃ y_1 ∈ conductor R x, (algebraMap S L) y_1 = y) →
    ∀ (z : S), ∃ x_1 ∈ adjoin R {x}, (algebraMap S L) x_1 = y * (algebraMap S L) z
state_after: case mp.intro.intro
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
h✝ : Nontrivial L
y : S
hy : y ∈ conductor R x
z : S
⊢ ∃ x_1 ∈ adjoin R {x}, (algebraMap S L) x_1 = (algebraMap S L) y * (algebraMap S L) z

tactic: exact ⟨_, hy z, map_mul _ _ _⟩
state_before: case mp.intro.intro
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
h✝ : Nontrivial L
y : S
hy : y ∈ conductor R x
z : S
⊢ ∃ x_1 ∈ adjoin R {x}, (algebraMap S L) x_1 = (algebraMap S L) y * (algebraMap S L) z
state_after: no goals

tactic: intro H
state_before: case mpr
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Nontrivial L
⊢ (∀ (z : S), ∃ x_1 ∈ adjoin R {x}, (algebraMap S L) x_1 = y * (algebraMap S L) z) →
    ∃ y_1 ∈ conductor R x, (algebraMap S L) y_1 = y
state_after: case mpr
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Nontrivial L
H : ∀ (z : S), ∃ x_1 ∈ adjoin R {x}, (algebraMap S L) x_1 = y * (algebraMap S L) z
⊢ ∃ y_1 ∈ conductor R x, (algebraMap S L) y_1 = y

tactic: obtain ⟨y, _, e⟩ := H 1
state_before: case mpr
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Nontrivial L
H : ∀ (z : S), ∃ x_1 ∈ adjoin R {x}, (algebraMap S L) x_1 = y * (algebraMap S L) z
⊢ ∃ y_1 ∈ conductor R x, (algebraMap S L) y_1 = y
state_after: case mpr.intro.intro
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y✝ : L
h✝ : Nontrivial L
H : ∀ (z : S), ∃ x_1 ∈ adjoin R {x}, (algebraMap S L) x_1 = y✝ * (algebraMap S L) z
y : S
left✝ : y ∈ adjoin R {x}
e : (algebraMap S L) y = y✝ * (algebraMap S L) 1
⊢ ∃ y ∈ conductor R x, (algebraMap S L) y = y✝

tactic: rw [_root_.map_one, mul_one] at e
state_before: case mpr.intro.intro
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y✝ : L
h✝ : Nontrivial L
H : ∀ (z : S), ∃ x_1 ∈ adjoin R {x}, (algebraMap S L) x_1 = y✝ * (algebraMap S L) z
y : S
left✝ : y ∈ adjoin R {x}
e : (algebraMap S L) y = y✝ * (algebraMap S L) 1
⊢ ∃ y ∈ conductor R x, (algebraMap S L) y = y✝
state_after: case mpr.intro.intro
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y✝ : L
h✝ : Nontrivial L
H : ∀ (z : S), ∃ x_1 ∈ adjoin R {x}, (algebraMap S L) x_1 = y✝ * (algebraMap S L) z
y : S
left✝ : y ∈ adjoin R {x}
e : (algebraMap S L) y = y✝
⊢ ∃ y ∈ conductor R x, (algebraMap S L) y = y✝

tactic: subst e
state_before: case mpr.intro.intro
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y✝ : L
h✝ : Nontrivial L
H : ∀ (z : S), ∃ x_1 ∈ adjoin R {x}, (algebraMap S L) x_1 = y✝ * (algebraMap S L) z
y : S
left✝ : y ∈ adjoin R {x}
e : (algebraMap S L) y = y✝
⊢ ∃ y ∈ conductor R x, (algebraMap S L) y = y✝
state_after: case mpr.intro.intro
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
h✝ : Nontrivial L
y : S
left✝ : y ∈ adjoin R {x}
H : ∀ (z : S), ∃ x_1 ∈ adjoin R {x}, (algebraMap S L) x_1 = (algebraMap S L) y * (algebraMap S L) z
⊢ ∃ y_1 ∈ conductor R x, (algebraMap S L) y_1 = (algebraMap S L) y

tactic: simp only [← _root_.map_mul, (NoZeroSMulDivisors.algebraMap_injective S L).eq_iff,
  exists_eq_right] at H
state_before: case mpr.intro.intro
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
h✝ : Nontrivial L
y : S
left✝ : y ∈ adjoin R {x}
H : ∀ (z : S), ∃ x_1 ∈ adjoin R {x}, (algebraMap S L) x_1 = (algebraMap S L) y * (algebraMap S L) z
⊢ ∃ y_1 ∈ conductor R x, (algebraMap S L) y_1 = (algebraMap S L) y
state_after: case mpr.intro.intro
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
h✝ : Nontrivial L
y : S
left✝ : y ∈ adjoin R {x}
H : ∀ (z : S), y * z ∈ adjoin R {x}
⊢ ∃ y_1 ∈ conductor R x, (algebraMap S L) y_1 = (algebraMap S L) y

tactic: exact ⟨_, H, rfl⟩
state_before: case mpr.intro.intro
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
h✝ : Nontrivial L
y : S
left✝ : y ∈ adjoin R {x}
H : ∀ (z : S), y * z ∈ adjoin R {x}
⊢ ∃ y_1 ∈ conductor R x, (algebraMap S L) y_1 = (algebraMap S L) y
state_after: no goals

tactic: rw [AlgHom.map_adjoin, Set.image_singleton]
state_before: R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Nontrivial L
⊢ (∀ (z : S), y * (algebraMap S L) z ∈ Subalgebra.map (IsScalarTower.toAlgHom R S L) (adjoin R {x})) ↔
    ∀ (z : S), y * (algebraMap S L) z ∈ adjoin R {(algebraMap S L) x}
state_after: R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Nontrivial L
⊢ (∀ (z : S), y * (algebraMap S L) z ∈ adjoin R {(IsScalarTower.toAlgHom R S L) x}) ↔
    ∀ (z : S), y * (algebraMap S L) z ∈ adjoin R {(algebraMap S L) x}

tactic: rfl
state_before: R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
x✝ : S
L : Type u_3
inst✝⁴ : CommRing L
inst✝³ : Algebra S L
inst✝² : Algebra R L
inst✝¹ : IsScalarTower R S L
inst✝ : NoZeroSMulDivisors S L
x : S
y : L
h✝ : Nontrivial L
⊢ (∀ (z : S), y * (algebraMap S L) z ∈ adjoin R {(IsScalarTower.toAlgHom R S L) x}) ↔
    ∀ (z : S), y * (algebraMap S L) z ∈ adjoin R {(algebraMap S L) x}
state_after: no goals