Theorem: CompleteOrthogonalIdempotents.single
File: Mathlib/RingTheory/Idempotents.lean

Proof steps:
state_before: R✝ : Type u_1
S : Type u_2
inst✝⁵ : Ring R✝
inst✝⁴ : Ring S
f : R✝ →+* S
I✝ : Type u_3
e : I✝ → R✝
he✝ : OrthogonalIdempotents e
inst✝³ : Fintype I✝
he : CompleteOrthogonalIdempotents e
I : Type u_4
inst✝² : Fintype I
inst✝¹ : DecidableEq I
R : I → Type u_5
inst✝ : (i : I) → Ring (R i)
⊢ CompleteOrthogonalIdempotents fun x => Pi.single x 1
state_after: R✝ : Type u_1
S : Type u_2
inst✝⁵ : Ring R✝
inst✝⁴ : Ring S
f : R✝ →+* S
I✝ : Type u_3
e : I✝ → R✝
he✝ : OrthogonalIdempotents e
inst✝³ : Fintype I✝
he : CompleteOrthogonalIdempotents e
I : Type u_4
inst✝² : Fintype I
inst✝¹ : DecidableEq I
R : I → Type u_5
inst✝ : (i : I) → Ring (R i)
⊢ ∀ (i j : I), i ≠ j → Pi.single i 1 * Pi.single j 1 = 0
tactic: refine ⟨⟨by simp [IsIdempotentElem, ← Pi.single_mul], ?_⟩, Finset.univ_sum_single 1⟩
state_before: R✝ : Type u_1
S : Type u_2
inst✝⁵ : Ring R✝
inst✝⁴ : Ring S
f : R✝ →+* S
I✝ : Type u_3
e : I✝ → R✝
he✝ : OrthogonalIdempotents e
inst✝³ : Fintype I✝
he : CompleteOrthogonalIdempotents e
I : Type u_4
inst✝² : Fintype I
inst✝¹ : DecidableEq I
R : I → Type u_5
inst✝ : (i : I) → Ring (R i)
⊢ ∀ (i j : I), i ≠ j → Pi.single i 1 * Pi.single j 1 = 0
state_after: R✝ : Type u_1
S : Type u_2
inst✝⁵ : Ring R✝
inst✝⁴ : Ring S
f : R✝ →+* S
I✝ : Type u_3
e : I✝ → R✝
he✝ : OrthogonalIdempotents e
inst✝³ : Fintype I✝
he : CompleteOrthogonalIdempotents e
I : Type u_4
inst✝² : Fintype I
inst✝¹ : DecidableEq I
R : I → Type u_5
inst✝ : (i : I) → Ring (R i)
i j : I
hij : i ≠ j
⊢ Pi.single i 1 * Pi.single j 1 = 0
tactic: intros i j hij
state_before: R✝ : Type u_1
S : Type u_2
inst✝⁵ : Ring R✝
inst✝⁴ : Ring S
f : R✝ →+* S
I✝ : Type u_3
e : I✝ → R✝
he✝ : OrthogonalIdempotents e
inst✝³ : Fintype I✝
he : CompleteOrthogonalIdempotents e
I : Type u_4
inst✝² : Fintype I
inst✝¹ : DecidableEq I
R : I → Type u_5
inst✝ : (i : I) → Ring (R i)
i j : I
hij : i ≠ j
⊢ Pi.single i 1 * Pi.single j 1 = 0
state_after: case h
R✝ : Type u_1
S : Type u_2
inst✝⁵ : Ring R✝
inst✝⁴ : Ring S
f : R✝ →+* S
I✝ : Type u_3
e : I✝ → R✝
he✝ : OrthogonalIdempotents e
inst✝³ : Fintype I✝
he : CompleteOrthogonalIdempotents e
I : Type u_4
inst✝² : Fintype I
inst✝¹ : DecidableEq I
R : I → Type u_5
inst✝ : (i : I) → Ring (R i)
i j : I
hij : i ≠ j
k : I
⊢ (Pi.single i 1 * Pi.single j 1) k = 0 k
tactic: ext k
state_before: case h
R✝ : Type u_1
S : Type u_2
inst✝⁵ : Ring R✝
inst✝⁴ : Ring S
f : R✝ →+* S
I✝ : Type u_3
e : I✝ → R✝
he✝ : OrthogonalIdempotents e
inst✝³ : Fintype I✝
he : CompleteOrthogonalIdempotents e
I : Type u_4
inst✝² : Fintype I
inst✝¹ : DecidableEq I
R : I → Type u_5
inst✝ : (i : I) → Ring (R i)
i j : I
hij : i ≠ j
k : I
⊢ (Pi.single i 1 * Pi.single j 1) k = 0 k
state_after: case pos
R✝ : Type u_1
S : Type u_2
inst✝⁵ : Ring R✝
inst✝⁴ : Ring S
f : R✝ →+* S
I✝ : Type u_3
e : I✝ → R✝
he✝ : OrthogonalIdempotents e
inst✝³ : Fintype I✝
he : CompleteOrthogonalIdempotents e
I : Type u_4
inst✝² : Fintype I
inst✝¹ : DecidableEq I
R : I → Type u_5
inst✝ : (i : I) → Ring (R i)
i j : I
hij : i ≠ j
k : I
hi : i = k
⊢ (Pi.single i 1 * Pi.single j 1) k = 0 k

case neg
R✝ : Type u_1
S : Type u_2
inst✝⁵ : Ring R✝
inst✝⁴ : Ring S
f : R✝ →+* S
I✝ : Type u_3
e : I✝ → R✝
he✝ : OrthogonalIdempotents e
inst✝³ : Fintype I✝
he : CompleteOrthogonalIdempotents e
I : Type u_4
inst✝² : Fintype I
inst✝¹ : DecidableEq I
R : I → Type u_5
inst✝ : (i : I) → Ring (R i)
i j : I
hij : i ≠ j
k : I
hi : ¬i = k
⊢ (Pi.single i 1 * Pi.single j 1) k = 0 k
tactic: by_cases hi : i = k