Theorem: Ideal.FinrankQuotientMap.linearIndependent_of_nontrivial
File: Mathlib/NumberTheory/RamificationInertia.lean

tactic: contrapose! hb' with hb
state_before: R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
hb' : LinearIndependent S (↑f' ∘ b)
⊢ LinearIndependent K (↑f ∘ b)

tactic: simp only [linearIndependent_iff', not_forall] at hb ⊢
state_before: R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
hb : ¬LinearIndependent K (↑f ∘ b)
⊢ ¬LinearIndependent S (↑f' ∘ b)

tactic: obtain ⟨s, g, eq, j', hj's, hj'g⟩ := hb
state_before: R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
hb : ∃ x x_1 h x_2 x, ¬x_1 x_2 = 0
⊢ ∃ x x_1 h x_2 x, ¬x_1 x_2 = 0

tactic: use s
state_before: case intro.intro.intro.intro.intro
R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
s : Finset ι
g : ι → K
eq : ∑ i in s, g i • (↑f ∘ b) i = 0
j' : ι
hj's : j' ∈ s
hj'g : ¬g j' = 0
⊢ ∃ x x_1 h x_2 x, ¬x_1 x_2 = 0

tactic: obtain ⟨a, hag, j, hjs, hgI⟩ := Ideal.exist_integer_multiples_not_mem hRS s g hj's hj'g
state_before: case intro.intro.intro.intro.intro
R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
s : Finset ι
g : ι → K
eq : ∑ i in s, g i • (↑f ∘ b) i = 0
j' : ι
hj's : j' ∈ s
hj'g : ¬g j' = 0
⊢ ∃ x h x_1 x_2, ¬x x_1 = 0

tactic: choose g'' hg'' using hag
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
s : Finset ι
g : ι → K
eq : ∑ i in s, g i • (↑f ∘ b) i = 0
j' : ι
hj's : j' ∈ s
hj'g : ¬g j' = 0
a : K
hag : ∀ (i : ι), i ∈ s → IsLocalization.IsInteger R (a * g i)
j : ι
hjs : j ∈ s
hgI : ¬a * g j ∈ ↑(RingHom.ker (algebraMap R S))
⊢ ∃ x h x_1 x_2, ¬x x_1 = 0

tactic: letI := Classical.propDecidable
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
s : Finset ι
g : ι → K
eq : ∑ i in s, g i • (↑f ∘ b) i = 0
j' : ι
hj's : j' ∈ s
hj'g : ¬g j' = 0
a : K
j : ι
hjs : j ∈ s
hgI : ¬a * g j ∈ ↑(RingHom.ker (algebraMap R S))
g'' : (i : ι) → i ∈ s → R
hg'' : ∀ (i : ι) (a_1 : i ∈ s), ↑(algebraMap R K) (g'' i a_1) = a * g i
⊢ ∃ x h x_1 x_2, ¬x x_1 = 0

tactic: let g' i := if h : i ∈ s then g'' i h else 0
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
s : Finset ι
g : ι → K
eq : ∑ i in s, g i • (↑f ∘ b) i = 0
j' : ι
hj's : j' ∈ s
hj'g : ¬g j' = 0
a : K
j : ι
hjs : j ∈ s
hgI : ¬a * g j ∈ ↑(RingHom.ker (algebraMap R S))
g'' : (i : ι) → i ∈ s → R
hg'' : ∀ (i : ι) (a_1 : i ∈ s), ↑(algebraMap R K) (g'' i a_1) = a * g i
this : (a : Prop) → Decidable a := Classical.propDecidable
⊢ ∃ x h x_1 x_2, ¬x x_1 = 0

tactic: have hg' : ∀ i ∈ s, algebraMap _ _ (g' i) = a * g i := by
  intro i hi; exact (congr_arg _ (dif_pos hi)).trans (hg'' i hi)
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
s : Finset ι
g : ι → K
eq : ∑ i in s, g i • (↑f ∘ b) i = 0
j' : ι
hj's : j' ∈ s
hj'g : ¬g j' = 0
a : K
j : ι
hjs : j ∈ s
hgI : ¬a * g j ∈ ↑(RingHom.ker (algebraMap R S))
g'' : (i : ι) → i ∈ s → R
hg'' : ∀ (i : ι) (a_1 : i ∈ s), ↑(algebraMap R K) (g'' i a_1) = a * g i
this : (a : Prop) → Decidable a := Classical.propDecidable
g' : ι → R := fun i => if h : i ∈ s then g'' i h else 0
⊢ ∃ x h x_1 x_2, ¬x x_1 = 0

tactic: have hgI : algebraMap R S (g' j) ≠ 0 := by
  simp only [FractionalIdeal.mem_coeIdeal, not_exists, not_and'] at hgI
  exact hgI _ (hg' j hjs)
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
s : Finset ι
g : ι → K
eq : ∑ i in s, g i • (↑f ∘ b) i = 0
j' : ι
hj's : j' ∈ s
hj'g : ¬g j' = 0
a : K
j : ι
hjs : j ∈ s
hgI : ¬a * g j ∈ ↑(RingHom.ker (algebraMap R S))
g'' : (i : ι) → i ∈ s → R
hg'' : ∀ (i : ι) (a_1 : i ∈ s), ↑(algebraMap R K) (g'' i a_1) = a * g i
this : (a : Prop) → Decidable a := Classical.propDecidable
g' : ι → R := fun i => if h : i ∈ s then g'' i h else 0
hg' : ∀ (i : ι), i ∈ s → ↑(algebraMap R K) (g' i) = a * g i
⊢ ∃ x h x_1 x_2, ¬x x_1 = 0

tactic: refine ⟨fun i => algebraMap R S (g' i), ?_, j, hjs, hgI⟩
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
s : Finset ι
g : ι → K
eq : ∑ i in s, g i • (↑f ∘ b) i = 0
j' : ι
hj's : j' ∈ s
hj'g : ¬g j' = 0
a : K
j : ι
hjs : j ∈ s
hgI✝ : ¬a * g j ∈ ↑(RingHom.ker (algebraMap R S))
g'' : (i : ι) → i ∈ s → R
hg'' : ∀ (i : ι) (a_1 : i ∈ s), ↑(algebraMap R K) (g'' i a_1) = a * g i
this : (a : Prop) → Decidable a := Classical.propDecidable
g' : ι → R := fun i => if h : i ∈ s then g'' i h else 0
hg' : ∀ (i : ι), i ∈ s → ↑(algebraMap R K) (g' i) = a * g i
hgI : ↑(algebraMap R S) (g' j) ≠ 0
⊢ ∃ x h x_1 x_2, ¬x x_1 = 0

tactic: have eq : f (∑ i in s, g' i • b i) = 0 := by
  rw [LinearMap.map_sum, ← smul_zero a, ← eq, Finset.smul_sum]
  refine Finset.sum_congr rfl ?_
  intro i hi
  rw [LinearMap.map_smul, ← IsScalarTower.algebraMap_smul K, hg' i hi, ← smul_assoc,
    smul_eq_mul, Function.comp_apply]
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
s : Finset ι
g : ι → K
eq : ∑ i in s, g i • (↑f ∘ b) i = 0
j' : ι
hj's : j' ∈ s
hj'g : ¬g j' = 0
a : K
j : ι
hjs : j ∈ s
hgI✝ : ¬a * g j ∈ ↑(RingHom.ker (algebraMap R S))
g'' : (i : ι) → i ∈ s → R
hg'' : ∀ (i : ι) (a_1 : i ∈ s), ↑(algebraMap R K) (g'' i a_1) = a * g i
this : (a : Prop) → Decidable a := Classical.propDecidable
g' : ι → R := fun i => if h : i ∈ s then g'' i h else 0
hg' : ∀ (i : ι), i ∈ s → ↑(algebraMap R K) (g' i) = a * g i
hgI : ↑(algebraMap R S) (g' j) ≠ 0
⊢ ∑ i in s, (fun i => ↑(algebraMap R S) (g' i)) i • (↑f' ∘ b) i = 0

tactic: intro i hi
state_before: R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
s : Finset ι
g : ι → K
eq : ∑ i in s, g i • (↑f ∘ b) i = 0
j' : ι
hj's : j' ∈ s
hj'g : ¬g j' = 0
a : K
j : ι
hjs : j ∈ s
hgI : ¬a * g j ∈ ↑(RingHom.ker (algebraMap R S))
g'' : (i : ι) → i ∈ s → R
hg'' : ∀ (i : ι) (a_1 : i ∈ s), ↑(algebraMap R K) (g'' i a_1) = a * g i
this : (a : Prop) → Decidable a := Classical.propDecidable
g' : ι → R := fun i => if h : i ∈ s then g'' i h else 0
⊢ ∀ (i : ι), i ∈ s → ↑(algebraMap R K) (g' i) = a * g i

tactic: exact (congr_arg _ (dif_pos hi)).trans (hg'' i hi)
state_before: R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
s : Finset ι
g : ι → K
eq : ∑ i in s, g i • (↑f ∘ b) i = 0
j' : ι
hj's : j' ∈ s
hj'g : ¬g j' = 0
a : K
j : ι
hjs : j ∈ s
hgI : ¬a * g j ∈ ↑(RingHom.ker (algebraMap R S))
g'' : (i : ι) → i ∈ s → R
hg'' : ∀ (i : ι) (a_1 : i ∈ s), ↑(algebraMap R K) (g'' i a_1) = a * g i
this : (a : Prop) → Decidable a := Classical.propDecidable
g' : ι → R := fun i => if h : i ∈ s then g'' i h else 0
i : ι
hi : i ∈ s
⊢ ↑(algebraMap R K) (g' i) = a * g i

tactic: simp only [FractionalIdeal.mem_coeIdeal, not_exists, not_and'] at hgI
state_before: R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
s : Finset ι
g : ι → K
eq : ∑ i in s, g i • (↑f ∘ b) i = 0
j' : ι
hj's : j' ∈ s
hj'g : ¬g j' = 0
a : K
j : ι
hjs : j ∈ s
hgI : ¬a * g j ∈ ↑(RingHom.ker (algebraMap R S))
g'' : (i : ι) → i ∈ s → R
hg'' : ∀ (i : ι) (a_1 : i ∈ s), ↑(algebraMap R K) (g'' i a_1) = a * g i
this : (a : Prop) → Decidable a := Classical.propDecidable
g' : ι → R := fun i => if h : i ∈ s then g'' i h else 0
hg' : ∀ (i : ι), i ∈ s → ↑(algebraMap R K) (g' i) = a * g i
⊢ ↑(algebraMap R S) (g' j) ≠ 0

tactic: exact hgI _ (hg' j hjs)
state_before: R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
s : Finset ι
g : ι → K
eq : ∑ i in s, g i • (↑f ∘ b) i = 0
j' : ι
hj's : j' ∈ s
hj'g : ¬g j' = 0
a : K
j : ι
hjs : j ∈ s
g'' : (i : ι) → i ∈ s → R
hg'' : ∀ (i : ι) (a_1 : i ∈ s), ↑(algebraMap R K) (g'' i a_1) = a * g i
this : (a : Prop) → Decidable a := Classical.propDecidable
g' : ι → R := fun i => if h : i ∈ s then g'' i h else 0
hg' : ∀ (i : ι), i ∈ s → ↑(algebraMap R K) (g' i) = a * g i
hgI : ∀ (x : R), ↑(algebraMap R K) x = a * g j → ¬x ∈ RingHom.ker (algebraMap R S)
⊢ ↑(algebraMap R S) (g' j) ≠ 0

tactic: rw [LinearMap.map_sum, ← smul_zero a, ← eq, Finset.smul_sum]
state_before: R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
s : Finset ι
g : ι → K
eq : ∑ i in s, g i • (↑f ∘ b) i = 0
j' : ι
hj's : j' ∈ s
hj'g : ¬g j' = 0
a : K
j : ι
hjs : j ∈ s
hgI✝ : ¬a * g j ∈ ↑(RingHom.ker (algebraMap R S))
g'' : (i : ι) → i ∈ s → R
hg'' : ∀ (i : ι) (a_1 : i ∈ s), ↑(algebraMap R K) (g'' i a_1) = a * g i
this : (a : Prop) → Decidable a := Classical.propDecidable
g' : ι → R := fun i => if h : i ∈ s then g'' i h else 0
hg' : ∀ (i : ι), i ∈ s → ↑(algebraMap R K) (g' i) = a * g i
hgI : ↑(algebraMap R S) (g' j) ≠ 0
⊢ ↑f (∑ i in s, g' i • b i) = 0

tactic: refine Finset.sum_congr rfl ?_
state_before: R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
s : Finset ι
g : ι → K
eq : ∑ i in s, g i • (↑f ∘ b) i = 0
j' : ι
hj's : j' ∈ s
hj'g : ¬g j' = 0
a : K
j : ι
hjs : j ∈ s
hgI✝ : ¬a * g j ∈ ↑(RingHom.ker (algebraMap R S))
g'' : (i : ι) → i ∈ s → R
hg'' : ∀ (i : ι) (a_1 : i ∈ s), ↑(algebraMap R K) (g'' i a_1) = a * g i
this : (a : Prop) → Decidable a := Classical.propDecidable
g' : ι → R := fun i => if h : i ∈ s then g'' i h else 0
hg' : ∀ (i : ι), i ∈ s → ↑(algebraMap R K) (g' i) = a * g i
hgI : ↑(algebraMap R S) (g' j) ≠ 0
⊢ ∑ i in s, ↑f (g' i • b i) = ∑ x in s, a • g x • (↑f ∘ b) x

tactic: intro i hi
state_before: R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
s : Finset ι
g : ι → K
eq : ∑ i in s, g i • (↑f ∘ b) i = 0
j' : ι
hj's : j' ∈ s
hj'g : ¬g j' = 0
a : K
j : ι
hjs : j ∈ s
hgI✝ : ¬a * g j ∈ ↑(RingHom.ker (algebraMap R S))
g'' : (i : ι) → i ∈ s → R
hg'' : ∀ (i : ι) (a_1 : i ∈ s), ↑(algebraMap R K) (g'' i a_1) = a * g i
this : (a : Prop) → Decidable a := Classical.propDecidable
g' : ι → R := fun i => if h : i ∈ s then g'' i h else 0
hg' : ∀ (i : ι), i ∈ s → ↑(algebraMap R K) (g' i) = a * g i
hgI : ↑(algebraMap R S) (g' j) ≠ 0
⊢ ∀ (x : ι), x ∈ s → ↑f (g' x • b x) = a • g x • (↑f ∘ b) x

tactic: rw [LinearMap.map_smul, ← IsScalarTower.algebraMap_smul K, hg' i hi, ← smul_assoc,
  smul_eq_mul, Function.comp_apply]
state_before: R : Type u
inst✝¹⁹ : CommRing R
S : Type v
inst✝¹⁸ : CommRing S
f✝ : R →+* S
p : Ideal R
P : Ideal S
inst✝¹⁷ : Algebra R S
K : Type u_5
inst✝¹⁶ : Field K
inst✝¹⁵ : Algebra R K
hRK : IsFractionRing R K
L : Type ?u.197285
inst✝¹⁴ : Field L
inst✝¹³ : Algebra S L
inst✝¹² : IsFractionRing S L
V : Type u_2
V' : Type u_3
V'' : Type u_1
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module R V
inst✝⁹ : Module K V
inst✝⁸ : IsScalarTower R K V
inst✝⁷ : AddCommGroup V'
inst✝⁶ : Module R V'
inst✝⁵ : Module S V'
inst✝⁴ : IsScalarTower R S V'
inst✝³ : AddCommGroup V''
inst✝² : Module R V''
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
hRS : RingHom.ker (algebraMap R S) ≠ ⊤
f : V'' →ₗ[R] V
hf : Function.Injective ↑f
f' : V'' →ₗ[R] V'
ι : Type u_4
b : ι → V''
s : Finset ι
g : ι → K
eq : ∑ i in s, g i • (↑f ∘ b) i = 0
j' : ι
hj's : j' ∈ s
hj'g : ¬g j' = 0
a : K
j : ι
hjs : j ∈ s
hgI✝ : ¬a * g j ∈ ↑(RingHom.ker (algebraMap R S))
g'' : (i : ι) → i ∈ s → R
hg'' : ∀ (i : ι) (a_1 : i ∈ s), ↑(algebraMap R K) (g'' i a_1) = a * g i
this : (a : Prop) → Decidable a := Classical.propDecidable
g' : ι → R := fun i => if h : i ∈ s then g'' i h else 0
hg' : ∀ (i : ι), i ∈ s → ↑(algebraMap R K) (g' i) = a * g i
hgI : ↑(algebraMap R S) (g' j) ≠ 0
i : ι
hi : i ∈ s
⊢ ↑f (g' i • b i) = a • g i • (↑f ∘ b) i