Theorem: Profinite.NobelingProof.GoodProducts.P0
File: Mathlib/Topology/Category/Profinite/Nobeling.lean

tactic: have : C ⊆ {(fun _ ↦ false)} := fun c hc ↦ by
  ext x; exact Bool.eq_false_iff.mpr (fun ht ↦ (Ordinal.not_lt_zero (ord I x)) (hsC c hc x ht))
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C✝ : Set (I → Bool)
x✝¹ : 0 ≤ Ordinal.type fun x x_1 => x < x_1
C : Set (I → Bool)
x✝ : IsClosed C
hsC : contained C 0
⊢ LinearIndependent ℤ (eval C)
state_after: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C✝ : Set (I → Bool)
x✝¹ : 0 ≤ Ordinal.type fun x x_1 => x < x_1
C : Set (I → Bool)
x✝ : IsClosed C
hsC : contained C 0
this : C ⊆ {fun x => false}
⊢ LinearIndependent ℤ (eval C)

tactic: rw [Set.subset_singleton_iff_eq] at this
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C✝ : Set (I → Bool)
x✝¹ : 0 ≤ Ordinal.type fun x x_1 => x < x_1
C : Set (I → Bool)
x✝ : IsClosed C
hsC : contained C 0
this : C ⊆ {fun x => false}
⊢ LinearIndependent ℤ (eval C)
state_after: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C✝ : Set (I → Bool)
x✝¹ : 0 ≤ Ordinal.type fun x x_1 => x < x_1
C : Set (I → Bool)
x✝ : IsClosed C
hsC : contained C 0
this : C = ∅ ∨ C = {fun x => false}
⊢ LinearIndependent ℤ (eval C)

tactic: cases this
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C✝ : Set (I → Bool)
x✝¹ : 0 ≤ Ordinal.type fun x x_1 => x < x_1
C : Set (I → Bool)
x✝ : IsClosed C
hsC : contained C 0
this : C = ∅ ∨ C = {fun x => false}
⊢ LinearIndependent ℤ (eval C)
state_after: case inl
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C✝ : Set (I → Bool)
x✝¹ : 0 ≤ Ordinal.type fun x x_1 => x < x_1
C : Set (I → Bool)
x✝ : IsClosed C
hsC : contained C 0
h✝ : C = ∅
⊢ LinearIndependent ℤ (eval C)

case inr
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C✝ : Set (I → Bool)
x✝¹ : 0 ≤ Ordinal.type fun x x_1 => x < x_1
C : Set (I → Bool)
x✝ : IsClosed C
hsC : contained C 0
h✝ : C = {fun x => false}
⊢ LinearIndependent ℤ (eval C)

tactic: ext x
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C✝ : Set (I → Bool)
x✝¹ : 0 ≤ Ordinal.type fun x x_1 => x < x_1
C : Set (I → Bool)
x✝ : IsClosed C
hsC : contained C 0
c : I → Bool
hc : c ∈ C
⊢ c ∈ {fun x => false}
state_after: case h
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C✝ : Set (I → Bool)
x✝¹ : 0 ≤ Ordinal.type fun x x_1 => x < x_1
C : Set (I → Bool)
x✝ : IsClosed C
hsC : contained C 0
c : I → Bool
hc : c ∈ C
x : I
⊢ c x = false

tactic: exact Bool.eq_false_iff.mpr (fun ht ↦ (Ordinal.not_lt_zero (ord I x)) (hsC c hc x ht))
state_before: case h
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C✝ : Set (I → Bool)
x✝¹ : 0 ≤ Ordinal.type fun x x_1 => x < x_1
C : Set (I → Bool)
x✝ : IsClosed C
hsC : contained C 0
c : I → Bool
hc : c ∈ C
x : I
⊢ c x = false
state_after: no goals

tactic: subst C
state_before: case inl
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C✝ : Set (I → Bool)
x✝¹ : 0 ≤ Ordinal.type fun x x_1 => x < x_1
C : Set (I → Bool)
x✝ : IsClosed C
hsC : contained C 0
h✝ : C = ∅
⊢ LinearIndependent ℤ (eval C)
state_after: case inl
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
x✝¹ : 0 ≤ Ordinal.type fun x x_1 => x < x_1
x✝ : IsClosed ∅
hsC : contained ∅ 0
⊢ LinearIndependent ℤ (eval ∅)

tactic: exact linearIndependentEmpty
state_before: case inl
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
x✝¹ : 0 ≤ Ordinal.type fun x x_1 => x < x_1
x✝ : IsClosed ∅
hsC : contained ∅ 0
⊢ LinearIndependent ℤ (eval ∅)
state_after: no goals

tactic: subst C
state_before: case inr
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C✝ : Set (I → Bool)
x✝¹ : 0 ≤ Ordinal.type fun x x_1 => x < x_1
C : Set (I → Bool)
x✝ : IsClosed C
hsC : contained C 0
h✝ : C = {fun x => false}
⊢ LinearIndependent ℤ (eval C)
state_after: case inr
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
x✝¹ : 0 ≤ Ordinal.type fun x x_1 => x < x_1
x✝ : IsClosed {fun x => false}
hsC : contained {fun x => false} 0
⊢ LinearIndependent ℤ (eval {fun x => false})

tactic: exact linearIndependentSingleton
state_before: case inr
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
x✝¹ : 0 ≤ Ordinal.type fun x x_1 => x < x_1
x✝ : IsClosed {fun x => false}
hsC : contained {fun x => false} 0
⊢ LinearIndependent ℤ (eval {fun x => false})
state_after: no goals