Theorem: Ideal.mem_span_singleton_sup
File: Mathlib/RingTheory/Ideal/Basic.lean

tactic: rw [Submodule.mem_sup]
state_before: α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a b : α
S : Type u_1
inst✝ : CommSemiring S
x y : S
I : Ideal S
⊢ x ∈ span {y} ⊔ I ↔ ∃ a, ∃ b ∈ I, a * y + b = x
state_after: α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a b : α
S : Type u_1
inst✝ : CommSemiring S
x y : S
I : Ideal S
⊢ (∃ y_1 ∈ span {y}, ∃ z ∈ I, y_1 + z = x) ↔ ∃ a, ∃ b ∈ I, a * y + b = x

tactic: constructor
state_before: α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a b : α
S : Type u_1
inst✝ : CommSemiring S
x y : S
I : Ideal S
⊢ (∃ y_1 ∈ span {y}, ∃ z ∈ I, y_1 + z = x) ↔ ∃ a, ∃ b ∈ I, a * y + b = x
state_after: case mp
α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a b : α
S : Type u_1
inst✝ : CommSemiring S
x y : S
I : Ideal S
⊢ (∃ y_1 ∈ span {y}, ∃ z ∈ I, y_1 + z = x) → ∃ a, ∃ b ∈ I, a * y + b = x

case mpr
α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a b : α
S : Type u_1
inst✝ : CommSemiring S
x y : S
I : Ideal S
⊢ (∃ a, ∃ b ∈ I, a * y + b = x) → ∃ y_1 ∈ span {y}, ∃ z ∈ I, y_1 + z = x

tactic: rintro ⟨ya, hya, b, hb, rfl⟩
state_before: case mp
α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a b : α
S : Type u_1
inst✝ : CommSemiring S
x y : S
I : Ideal S
⊢ (∃ y_1 ∈ span {y}, ∃ z ∈ I, y_1 + z = x) → ∃ a, ∃ b ∈ I, a * y + b = x
state_after: case mp.intro.intro.intro.intro
α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a b✝ : α
S : Type u_1
inst✝ : CommSemiring S
y : S
I : Ideal S
ya : S
hya : ya ∈ span {y}
b : S
hb : b ∈ I
⊢ ∃ a, ∃ b_1 ∈ I, a * y + b_1 = ya + b

tactic: obtain ⟨a, rfl⟩ := mem_span_singleton'.mp hya
state_before: case mp.intro.intro.intro.intro
α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a b✝ : α
S : Type u_1
inst✝ : CommSemiring S
y : S
I : Ideal S
ya : S
hya : ya ∈ span {y}
b : S
hb : b ∈ I
⊢ ∃ a, ∃ b_1 ∈ I, a * y + b_1 = ya + b
state_after: case mp.intro.intro.intro.intro.intro
α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a✝ b✝ : α
S : Type u_1
inst✝ : CommSemiring S
y : S
I : Ideal S
b : S
hb : b ∈ I
a : S
hya : a * y ∈ span {y}
⊢ ∃ a_1, ∃ b_1 ∈ I, a_1 * y + b_1 = a * y + b

tactic: exact ⟨a, b, hb, rfl⟩
state_before: case mp.intro.intro.intro.intro.intro
α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a✝ b✝ : α
S : Type u_1
inst✝ : CommSemiring S
y : S
I : Ideal S
b : S
hb : b ∈ I
a : S
hya : a * y ∈ span {y}
⊢ ∃ a_1, ∃ b_1 ∈ I, a_1 * y + b_1 = a * y + b
state_after: no goals

tactic: rintro ⟨a, b, hb, rfl⟩
state_before: case mpr
α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a b : α
S : Type u_1
inst✝ : CommSemiring S
x y : S
I : Ideal S
⊢ (∃ a, ∃ b ∈ I, a * y + b = x) → ∃ y_1 ∈ span {y}, ∃ z ∈ I, y_1 + z = x
state_after: case mpr.intro.intro.intro
α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a✝ b✝ : α
S : Type u_1
inst✝ : CommSemiring S
y : S
I : Ideal S
a b : S
hb : b ∈ I
⊢ ∃ y_1 ∈ span {y}, ∃ z ∈ I, y_1 + z = a * y + b

tactic: exact ⟨a * y, Ideal.mem_span_singleton'.mpr ⟨a, rfl⟩, b, hb, rfl⟩
state_before: case mpr.intro.intro.intro
α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a✝ b✝ : α
S : Type u_1
inst✝ : CommSemiring S
y : S
I : Ideal S
a b : S
hb : b ∈ I
⊢ ∃ y_1 ∈ span {y}, ∃ z ∈ I, y_1 + z = a * y + b
state_after: no goals