awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Lean 4 proof step from Mathlib.Topology.Separation.Profinite (goal)
Goal:
X : Type u_4
I_1 : Type u_5
inst : TopologicalSpace X
inst_1 : CompactSpace X
inst_2 : T2Space X
inst_3 : TotallyDisconnectedSpace X
inst_4 : Finite I_1
I : Type u_5
inst_5 : Fintype I
IH :
  ∀ {Z D : I → Set X} (Z_closed : ∀ (i : I), IsClosed[inst] (Z i)) (D_clopen : ∀ (i : I), IsClopen (D i))
    (Z_subset_D : ∀ (i : I), Z i ⊆ D i) (Z_disj : PairwiseDisjoint univ Z),
    ∃ (C : I → Set X),
      (∀ (i : I), IsClopen (C i)) ∧
        (∀ (i : I), Z i ⊆ C i) ∧
          (∀ (i : I), C i ⊆ D i) ∧ Subset.{u_4} (α := Set X) (⋃ (i : I), D i) (⋃ (i : I), C i) ∧ PairwiseDisjoint univ C
Z D : Option I → Set X
Z_closed : ∀ (i : Option I), IsClosed[inst] (Z i)
D_clopen : ∀ (i : Option I), IsClopen (D i)
Z_subset_D : ∀ (i : Option I), Z i ⊆ D i
Z_disj : PairwiseDisjoint univ Z
Z' : I → Set X := fun (i : I) ↦ Z (some i)
Z'_closed : ∀ (i : I), IsClosed[inst] (Z (some i))
Z'_disj : PairwiseDisjoint univ (Z ∘ some)
U : Set X := D none \ ⋃ (i : I), Z (some i)
U_open : IsOpen[inst] U
i : I
a : Membership.mem (γ := Set (Option I)) univ none
a₁ : Membership.mem (γ := Set (Option I)) univ (some i)
⊢ Disjoint (Z none) (Z (some i))
have a₂ : none ≠ some i
Tactic: apply Z_disj
-- Lean 4 proof step from Mathlib.Topology.Separation.Profinite (hypothesis)
Goal:
X : Type u_4
I_1 : Type u_5
inst : TopologicalSpace X
inst_1 : CompactSpace X
inst_2 : T2Space X
inst_3 : TotallyDisconnectedSpace X
inst_4 : Finite I_1
I : Type u_5
inst_5 : Fintype I
IH :
  ∀ {Z D : I → Set X} (Z_closed : ∀ (i : I), IsClosed[inst] (Z i)) (D_clopen : ∀ (i : I), IsClopen (D i))
    (Z_subset_D : ∀ (i : I), Z i ⊆ D i) (Z_disj : PairwiseDisjoint univ Z),
    ∃ (C : I → Set X),
      (∀ (i : I), IsClopen (C i)) ∧
        (∀ (i : I), Z i ⊆ C i) ∧
          (∀ (i : I), C i ⊆ D i) ∧ Subset.{u_4} (α := Set X) (⋃ (i : I), D i) (⋃ (i : I), C i) ∧ PairwiseDisjoint univ C
Z D : Option I → Set X
Z_closed : ∀ (i : Option I), IsClosed[inst] (Z i)
D_clopen : ∀ (i : Option I), IsClopen (D i)
Z_subset_D : ∀ (i : Option I), Z i ⊆ D i
Z_disj : PairwiseDisjoint univ Z
Z' : I → Set X := fun (i : I) ↦ Z (some i)
Z'_closed : ∀ (i : I), IsClosed[inst] (Z (some i))
Z'_disj : PairwiseDisjoint univ (Z ∘ some)
U : Set X := D none \ ⋃ (i : I), Z (some i)
U_open : IsOpen[inst] U
⊢ ∃ (C : Option I → Set X),
    (∀ (i : Option I), IsClopen (C i)) ∧
      (∀ (i : Option I), Z i ⊆ C i) ∧
        (∀ (i : Option I), C i ⊆ D i) ∧
          Subset.{u_4} (α := Set X) (⋃ (i : Option I), D i) (⋃ (i : Option I), C i) ∧ PairwiseDisjoint univ C
have Z0_subset_U : Z none ⊆ U
Tactic: have Z0_subset_U : Z none ⊆ U := by
      rw [subset_diff]
      simpa using ⟨Z_subset_D none, fun i ↦ (by apply Z_disj; all_goals simp)⟩
-- Lean 4 proof step from Mathlib.Topology.Separation.Profinite (goal)
Goal:
X : Type u_4
I_1 : Type u_5
inst : TopologicalSpace X
inst_1 : CompactSpace X
inst_2 : T2Space X
inst_3 : TotallyDisconnectedSpace X
inst_4 : Finite I_1
I : Type u_5
inst_5 : Fintype I
IH :
  ∀ {Z D : I → Set X} (Z_closed : ∀ (i : I), IsClosed[inst] (Z i)) (D_clopen : ∀ (i : I), IsClopen (D i))
    (Z_subset_D : ∀ (i : I), Z i ⊆ D i) (Z_disj : PairwiseDisjoint univ Z),
    ∃ (C : I → Set X),
      (∀ (i : I), IsClopen (C i)) ∧
        (∀ (i : I), Z i ⊆ C i) ∧
          (∀ (i : I), C i ⊆ D i) ∧ Subset.{u_4} (α := Set X) (⋃ (i : I), D i) (⋃ (i : I), C i) ∧ PairwiseDisjoint univ C
Z D : Option I → Set X
Z_closed : ∀ (i : Option I), IsClosed[inst] (Z i)
D_clopen : ∀ (i : Option I), IsClopen (D i)
Z_subset_D : ∀ (i : Option I), Z i ⊆ D i
Z_disj : PairwiseDisjoint univ Z
Z' : I → Set X := fun (i : I) ↦ Z (some i)
Z'_closed : ∀ (i : I), IsClosed[inst] (Z (some i))
Z'_disj : PairwiseDisjoint univ (Z ∘ some)
U : Set X := D none \ ⋃ (i : I), Z (some i)
U_open : IsOpen[inst] U
Z0_subset_U : Z none ⊆ U
⊢ ∃ (C : Option I → Set X),
    (∀ (i : Option I), IsClopen (C i)) ∧
      (∀ (i : Option I), Z i ⊆ C i) ∧
        (∀ (i : Option I), C i ⊆ D i) ∧
          Subset.{u_4} (α := Set X) (⋃ (i : Option I), D i) (⋃ (i : Option I), C i) ∧ PairwiseDisjoint univ C
have h_option : ∀ (V : Set X) (V_clopen : IsClopen V) (Z0_subset_V : Z none ⊆ V) (V_subset_U : V ⊆ U),
  ∃ (C : Option I → Set X),
    (∀ (i : Option I), IsClopen (C i)) ∧
      (∀ (i : Option I), Z i ⊆ C i) ∧
        (∀ (i : Option I), C i ⊆ D i) ∧
          Subset.{u_4} (α := Set X) (⋃ (i : Option I), D i) (⋃ (i : Option I), C i) ∧ PairwiseDisjoint univ C
Tactic: obtain ⟨V, V_clopen, Z0_subset_V, V_subset_U⟩ :=
      exists_clopen_of_closed_subset_open (Z_closed none) U_open Z0_subset_U
-- Lean 4 proof step from Mathlib.Topology.Separation.Profinite (hypothesis)
Goal:
X : Type u_4
I_1 : Type u_5
inst : TopologicalSpace X
inst_1 : CompactSpace X
inst_2 : T2Space X
inst_3 : TotallyDisconnectedSpace X
inst_4 : Finite I_1
I : Type u_5
inst_5 : Fintype I
IH :
  ∀ {Z D : I → Set X} (Z_closed : ∀ (i : I), IsClosed[inst] (Z i)) (D_clopen : ∀ (i : I), IsClopen (D i))
    (Z_subset_D : ∀ (i : I), Z i ⊆ D i) (Z_disj : PairwiseDisjoint univ Z),
    ∃ (C : I → Set X),
      (∀ (i : I), IsClopen (C i)) ∧
        (∀ (i : I), Z i ⊆ C i) ∧
          (∀ (i : I), C i ⊆ D i) ∧ Subset.{u_4} (α := Set X) (⋃ (i : I), D i) (⋃ (i : I), C i) ∧ PairwiseDisjoint univ C
Z D : Option I → Set X
Z_closed : ∀ (i : Option I), IsClosed[inst] (Z i)
D_clopen : ∀ (i : Option I), IsClopen (D i)
Z_subset_D : ∀ (i : Option I), Z i ⊆ D i
Z_disj : PairwiseDisjoint univ Z
Z' : I → Set X := fun (i : I) ↦ Z (some i)
Z'_closed : ∀ (i : I), IsClosed[inst] (Z (some i))
Z'_disj : PairwiseDisjoint univ (Z ∘ some)
U : Set X := D none \ ⋃ (i : I), Z (some i)
U_open : IsOpen[inst] U
Z0_subset_U : Z none ⊆ U
V : Set X
V_clopen : IsClopen V
Z0_subset_V : Z none ⊆ V
V_subset_U : V ⊆ U
⊢ ∃ (C : Option I → Set X),
    (∀ (i : Option I), IsClopen (C i)) ∧
      (∀ (i : Option I), Z i ⊆ C i) ∧
        (∀ (i : Option I), C i ⊆ D i) ∧
          Subset.{u_4} (α := Set X) (⋃ (i : Option I), D i) (⋃ (i : Option I), C i) ∧ PairwiseDisjoint univ C
have V_subset_D0 : V ⊆ D none
Tactic: have V_subset_D0 : V ⊆ D none := subset_trans V_subset_U diff_subset
-- Lean 4 proof step from Mathlib.Topology.Separation.Profinite (hypothesis)
Goal:
X : Type u_4
I_1 : Type u_5
inst : TopologicalSpace X
inst_1 : CompactSpace X
inst_2 : T2Space X
inst_3 : TotallyDisconnectedSpace X
inst_4 : Finite I_1
I : Type u_5
inst_5 : Fintype I
IH :
  ∀ {Z D : I → Set X} (Z_closed : ∀ (i : I), IsClosed[inst] (Z i)) (D_clopen : ∀ (i : I), IsClopen (D i))
    (Z_subset_D : ∀ (i : I), Z i ⊆ D i) (Z_disj : PairwiseDisjoint univ Z),
    ∃ (C : I → Set X),
      (∀ (i : I), IsClopen (C i)) ∧
        (∀ (i : I), Z i ⊆ C i) ∧
          (∀ (i : I), C i ⊆ D i) ∧ Subset.{u_4} (α := Set X) (⋃ (i : I), D i) (⋃ (i : I), C i) ∧ PairwiseDisjoint univ C
Z D : Option I → Set X
Z_closed : ∀ (i : Option I), IsClosed[inst] (Z i)
D_clopen : ∀ (i : Option I), IsClopen (D i)
Z_subset_D : ∀ (i : Option I), Z i ⊆ D i
Z_disj : PairwiseDisjoint univ Z
Z' : I → Set X := fun (i : I) ↦ Z (some i)
Z'_closed : ∀ (i : I), IsClosed[inst] (Z (some i))
Z'_disj : PairwiseDisjoint univ (Z ∘ some)
U : Set X := D none \ ⋃ (i : I), Z (some i)
U_open : IsOpen[inst] U
Z0_subset_U : Z none ⊆ U
V : Set X
V_clopen : IsClopen V
Z0_subset_V : Z none ⊆ V
V_subset_U : V ⊆ U
V_subset_D0 : V ⊆ D none
D' : I → Set X := fun (i : I) ↦ D (some i) \ V
⊢ ∃ (C : Option I → Set X),
    (∀ (i : Option I), IsClopen (C i)) ∧
      (∀ (i : Option I), Z i ⊆ C i) ∧
        (∀ (i : Option I), C i ⊆ D i) ∧
          Subset.{u_4} (α := Set X) (⋃ (i : Option I), D i) (⋃ (i : Option I), C i) ∧ PairwiseDisjoint univ C
have D'_clopen : ∀ (i : I), IsClopen (D' i)
Tactic: have D'_clopen (i : I) : IsClopen (D' i) := (D_clopen (some i)).diff V_clopen
-- Lean 4 proof step from Mathlib.Topology.Separation.Profinite (goal)
Goal:
X : Type u_4
I_1 : Type u_5
inst : TopologicalSpace X
inst_1 : CompactSpace X
inst_2 : T2Space X
inst_3 : TotallyDisconnectedSpace X
inst_4 : Finite I_1
I : Type u_5
inst_5 : Fintype I
IH :
  ∀ {Z D : I → Set X} (Z_closed : ∀ (i : I), IsClosed[inst] (Z i)) (D_clopen : ∀ (i : I), IsClopen (D i))
    (Z_subset_D : ∀ (i : I), Z i ⊆ D i) (Z_disj : PairwiseDisjoint univ Z),
    ∃ (C : I → Set X),
      (∀ (i : I), IsClopen (C i)) ∧
        (∀ (i : I), Z i ⊆ C i) ∧
          (∀ (i : I), C i ⊆ D i) ∧ Subset.{u_4} (α := Set X) (⋃ (i : I), D i) (⋃ (i : I), C i) ∧ PairwiseDisjoint univ C
Z D : Option I → Set X
Z_closed : ∀ (i : Option I), IsClosed[inst] (Z i)
D_clopen : ∀ (i : Option I), IsClopen (D i)
Z_subset_D : ∀ (i : Option I), Z i ⊆ D i
Z_disj : PairwiseDisjoint univ Z
Z' : I → Set X := fun (i : I) ↦ Z (some i)
Z'_closed : ∀ (i : I), IsClosed[inst] (Z (some i))
Z'_disj : PairwiseDisjoint univ (Z ∘ some)
U : Set X := D none \ ⋃ (i : I), Z (some i)
U_open : IsOpen[inst] U
Z0_subset_U : Z none ⊆ U
V : Set X
V_clopen : IsClopen V
Z0_subset_V : Z none ⊆ V
V_subset_U : V ⊆ U
V_subset_D0 : V ⊆ D none
D' : I → Set X := fun (i : I) ↦ D (some i) \ V
D'_clopen : ∀ (i : I), IsClopen (D' i)
i : I
⊢ Z' i ⊆ D' i
have rw : Z' i ⊆ D (some i) ∧ Disjoint (Z' i) V
Tactic: rw [subset_diff]
-- Lean 4 proof step from Mathlib.Topology.Separation.Profinite (goal)
Goal:
X : Type u_4
I_1 : Type u_5
inst : TopologicalSpace X
inst_1 : CompactSpace X
inst_2 : T2Space X
inst_3 : TotallyDisconnectedSpace X
inst_4 : Finite I_1
I : Type u_5
inst_5 : Fintype I
IH :
  ∀ {Z D : I → Set X} (Z_closed : ∀ (i : I), IsClosed[inst] (Z i)) (D_clopen : ∀ (i : I), IsClopen (D i))
    (Z_subset_D : ∀ (i : I), Z i ⊆ D i) (Z_disj : PairwiseDisjoint univ Z),
    ∃ (C : I → Set X),
      (∀ (i : I), IsClopen (C i)) ∧
        (∀ (i : I), Z i ⊆ C i) ∧
          (∀ (i : I), C i ⊆ D i) ∧ Subset.{u_4} (α := Set X) (⋃ (i : I), D i) (⋃ (i : I), C i) ∧ PairwiseDisjoint univ C
Z D : Option I → Set X
Z_closed : ∀ (i : Option I), IsClosed[inst] (Z i)
D_clopen : ∀ (i : Option I), IsClopen (D i)
Z_subset_D : ∀ (i : Option I), Z i ⊆ D i
Z_disj : PairwiseDisjoint univ Z
Z' : I → Set X := fun (i : I) ↦ Z (some i)
Z'_closed : ∀ (i : I), IsClosed[inst] (Z (some i))
Z'_disj : PairwiseDisjoint univ (Z ∘ some)
U : Set X := D none \ ⋃ (i : I), Z (some i)
U_open : IsOpen[inst] U
Z0_subset_U : Z none ⊆ U
V : Set X
V_clopen : IsClopen V
Z0_subset_V : Z none ⊆ V
V_subset_U : V ⊆ U
V_subset_D0 : V ⊆ D none
D' : I → Set X := fun (i : I) ↦ D (some i) \ V
D'_clopen : ∀ (i : I), IsClopen (D' i)
i : I
⊢ Z' i ⊆ D (some i) ∧ Disjoint (Z' i) V
have refine : Disjoint (Z' i) U
Tactic: refine ⟨by grind, Disjoint.mono_right V_subset_U ?_⟩
-- Lean 4 proof step from Mathlib.Topology.Separation.Profinite (hypothesis)
Goal:
X : Type u_4
I_1 : Type u_5
inst : TopologicalSpace X
inst_1 : CompactSpace X
inst_2 : T2Space X
inst_3 : TotallyDisconnectedSpace X
inst_4 : Finite I_1
I : Type u_5
inst_5 : Fintype I
IH :
  ∀ {Z D : I → Set X} (Z_closed : ∀ (i : I), IsClosed[inst] (Z i)) (D_clopen : ∀ (i : I), IsClopen (D i))
    (Z_subset_D : ∀ (i : I), Z i ⊆ D i) (Z_disj : PairwiseDisjoint univ Z),
    ∃ (C : I → Set X),
      (∀ (i : I), IsClopen (C i)) ∧
        (∀ (i : I), Z i ⊆ C i) ∧
          (∀ (i : I), C i ⊆ D i) ∧ Subset.{u_4} (α := Set X) (⋃ (i : I), D i) (⋃ (i : I), C i) ∧ PairwiseDisjoint univ C
Z D : Option I → Set X
Z_closed : ∀ (i : Option I), IsClosed[inst] (Z i)
D_clopen : ∀ (i : Option I), IsClopen (D i)
Z_subset_D : ∀ (i : Option I), Z i ⊆ D i
Z_disj : PairwiseDisjoint univ Z
Z' : I → Set X := fun (i : I) ↦ Z (some i)
Z'_closed : ∀ (i : I), IsClosed[inst] (Z (some i))
Z'_disj : PairwiseDisjoint univ (Z ∘ some)
U : Set X := D none \ ⋃ (i : I), Z (some i)
U_open : IsOpen[inst] U
Z0_subset_U : Z none ⊆ U
V : Set X
V_clopen : IsClopen V
Z0_subset_V : Z none ⊆ V
V_subset_U : V ⊆ U
V_subset_D0 : V ⊆ D none
D' : I → Set X := fun (i : I) ↦ D (some i) \ V
D'_clopen : ∀ (i : I), IsClopen (D' i)
⊢ ∃ (C : Option I → Set X),
    (∀ (i : Option I), IsClopen (C i)) ∧
      (∀ (i : Option I), Z i ⊆ C i) ∧
        (∀ (i : Option I), C i ⊆ D i) ∧
          Subset.{u_4} (α := Set X) (⋃ (i : Option I), D i) (⋃ (i : Option I), C i) ∧ PairwiseDisjoint univ C
have Z'_subset_D' : ∀ (i : I), Z' i ⊆ D' i
Tactic: have Z'_subset_D' (i : I) : Z' i ⊆ D' i := by
      rw [subset_diff]
      refine ⟨by grind, Disjoint.mono_right V_subset_U ?_⟩
      exact Disjoint.mono_left (subset_iUnion_of_subset i fun _ h ↦ h) (by grind)
-- Lean 4 proof step from Mathlib.Topology.Separation.Profinite (goal)
Goal:
X : Type u_4
I_1 : Type u_5
inst : TopologicalSpace X
inst_1 : CompactSpace X
inst_2 : T2Space X
inst_3 : TotallyDisconnectedSpace X
inst_4 : Finite I_1
I : Type u_5
inst_5 : Fintype I
IH :
  ∀ {Z D : I → Set X} (Z_closed : ∀ (i : I), IsClosed[inst] (Z i)) (D_clopen : ∀ (i : I), IsClopen (D i))
    (Z_subset_D : ∀ (i : I), Z i ⊆ D i) (Z_disj : PairwiseDisjoint univ Z),
    ∃ (C : I → Set X),
      (∀ (i : I), IsClopen (C i)) ∧
        (∀ (i : I), Z i ⊆ C i) ∧
          (∀ (i : I), C i ⊆ D i) ∧ Subset.{u_4} (α := Set X) (⋃ (i : I), D i) (⋃ (i : I), C i) ∧ PairwiseDisjoint univ C
Z D : Option I → Set X
Z_closed : ∀ (i : Option I), IsClosed[inst] (Z i)
D_clopen : ∀ (i : Option I), IsClopen (D i)
Z_subset_D : ∀ (i : Option I), Z i ⊆ D i
Z_disj : PairwiseDisjoint univ Z
Z' : I → Set X := fun (i : I) ↦ Z (some i)
Z'_closed : ∀ (i : I), IsClosed[inst] (Z (some i))
Z'_disj : PairwiseDisjoint univ (Z ∘ some)
U : Set X := D none \ ⋃ (i : I), Z (some i)
U_open : IsOpen[inst] U
Z0_subset_U : Z none ⊆ U
V : Set X
V_clopen : IsClopen V
Z0_subset_V : Z none ⊆ V
V_subset_U : V ⊆ U
V_subset_D0 : V ⊆ D none
D' : I → Set X := fun (i : I) ↦ D (some i) \ V
D'_clopen : ∀ (i : I), IsClopen (D' i)
Z'_subset_D' : ∀ (i : I), Z' i ⊆ D' i
⊢ ∃ (C : Option I → Set X),
    (∀ (i : Option I), IsClopen (C i)) ∧
      (∀ (i : Option I), Z i ⊆ C i) ∧
        (∀ (i : Option I), C i ⊆ D i) ∧
          Subset.{u_4} (α := Set X) (⋃ (i : Option I), D i) (⋃ (i : Option I), C i) ∧ PairwiseDisjoint univ C
have h_option : ∀ (C' : I → Set X) (C'_clopen : ∀ (i : I), IsClopen (C' i)) (Z'_subset_C' : ∀ (i : I), Z (some i) ⊆ C' i)
  (C'_subset_D' : ∀ (i : I), C' i ⊆ D' i) (C'_cover_D' : Subset.{u_4} (α := Set X) (⋃ (i : I), D' i) (⋃ (i : I), C' i))
  (C'_disj : PairwiseDisjoint univ C'),
  ∃ (C : Option I → Set X),
    (∀ (i : Option I), IsClopen (C i)) ∧
      (∀ (i : Option I), Z i ⊆ C i) ∧
        (∀ (i : Option I), C i ⊆ D i) ∧
          Subset.{u_4} (α := Set X) (⋃ (i : Option I), D i) (⋃ (i : Option I), C i) ∧ PairwiseDisjoint univ C
Tactic: obtain ⟨C', C'_clopen, Z'_subset_C', C'_subset_D', C'_cover_D', C'_disj⟩ :=
      IH Z'_closed D'_clopen Z'_subset_D' Z'_disj
-- Lean 4 proof step from Mathlib.Topology.Separation.Profinite (hypothesis)
Goal:
X : Type u_4
I_1 : Type u_5
inst : TopologicalSpace X
inst_1 : CompactSpace X
inst_2 : T2Space X
inst_3 : TotallyDisconnectedSpace X
inst_4 : Finite I_1
I : Type u_5
inst_5 : Fintype I
IH :
  ∀ {Z D : I → Set X} (Z_closed : ∀ (i : I), IsClosed[inst] (Z i)) (D_clopen : ∀ (i : I), IsClopen (D i))
    (Z_subset_D : ∀ (i : I), Z i ⊆ D i) (Z_disj : PairwiseDisjoint univ Z),
    ∃ (C : I → Set X),
      (∀ (i : I), IsClopen (C i)) ∧
        (∀ (i : I), Z i ⊆ C i) ∧
          (∀ (i : I), C i ⊆ D i) ∧ Subset.{u_4} (α := Set X) (⋃ (i : I), D i) (⋃ (i : I), C i) ∧ PairwiseDisjoint univ C
Z D : Option I → Set X
Z_closed : ∀ (i : Option I), IsClosed[inst] (Z i)
D_clopen : ∀ (i : Option I), IsClopen (D i)
Z_subset_D : ∀ (i : Option I), Z i ⊆ D i
Z_disj : PairwiseDisjoint univ Z
Z' : I → Set X := fun (i : I) ↦ Z (some i)
Z'_closed : ∀ (i : I), IsClosed[inst] (Z (some i))
Z'_disj : PairwiseDisjoint univ (Z ∘ some)
U : Set X := D none \ ⋃ (i : I), Z (some i)
U_open : IsOpen[inst] U
Z0_subset_U : Z none ⊆ U
V : Set X
V_clopen : IsClopen V
Z0_subset_V : Z none ⊆ V
V_subset_U : V ⊆ U
V_subset_D0 : V ⊆ D none
D' : I → Set X := fun (i : I) ↦ D (some i) \ V
D'_clopen : ∀ (i : I), IsClopen (D' i)
Z'_subset_D' : ∀ (i : I), Z' i ⊆ D' i
C' : I → Set X
C'_clopen : ∀ (i : I), IsClopen (C' i)
Z'_subset_C' : ∀ (i : I), Z (some i) ⊆ C' i
C'_subset_D' : ∀ (i : I), C' i ⊆ D' i
C'_cover_D' : Subset.{u_4} (α := Set X) (⋃ (i : I), D' i) (⋃ (i : I), C' i)
C'_disj : PairwiseDisjoint univ C'
C0 : Set X := D none \ ⋃ (i : I), C' i
⊢ ∃ (C : Option I → Set X),
    (∀ (i : Option I), IsClopen (C i)) ∧
      (∀ (i : Option I), Z i ⊆ C i) ∧
        (∀ (i : Option I), C i ⊆ D i) ∧
          Subset.{u_4} (α := Set X) (⋃ (i : Option I), D i) (⋃ (i : Option I), C i) ∧ PairwiseDisjoint univ C
have this : IsClopen C0
Tactic: have : IsClopen C0 := (D_clopen none).diff (isClopen_iUnion_of_finite C'_clopen)
-- Lean 4 proof step from Mathlib.Topology.Separation.Profinite (goal)
Goal:
X : Type u_4
I_1 : Type u_5
inst : TopologicalSpace X
inst_1 : CompactSpace X
inst_2 : T2Space X
inst_3 : TotallyDisconnectedSpace X
inst_4 : Finite I_1
I : Type u_5
inst_5 : Fintype I
IH :
  ∀ {Z D : I → Set X} (Z_closed : ∀ (i : I), IsClosed[inst] (Z i)) (D_clopen : ∀ (i : I), IsClopen (D i))
    (Z_subset_D : ∀ (i : I), Z i ⊆ D i) (Z_disj : PairwiseDisjoint univ Z),
    ∃ (C : I → Set X),
      (∀ (i : I), IsClopen (C i)) ∧
        (∀ (i : I), Z i ⊆ C i) ∧
          (∀ (i : I), C i ⊆ D i) ∧ Subset.{u_4} (α := Set X) (⋃ (i : I), D i) (⋃ (i : I), C i) ∧ PairwiseDisjoint univ C
Z D : Option I → Set X
Z_closed : ∀ (i : Option I), IsClosed[inst] (Z i)
D_clopen : ∀ (i : Option I), IsClopen (D i)
Z_subset_D : ∀ (i : Option I), Z i ⊆ D i
Z_disj : PairwiseDisjoint univ Z
Z' : I → Set X := fun (i : I) ↦ Z (some i)
Z'_closed : ∀ (i : I), IsClosed[inst] (Z (some i))
Z'_disj : PairwiseDisjoint univ (Z ∘ some)
U : Set X := D none \ ⋃ (i : I), Z (some i)
U_open : IsOpen[inst] U
Z0_subset_U : Z none ⊆ U
V : Set X
V_clopen : IsClopen V
Z0_subset_V : Z none ⊆ V
V_subset_U : V ⊆ U
V_subset_D0 : V ⊆ D none
D' : I → Set X := fun (i : I) ↦ D (some i) \ V
D'_clopen : ∀ (i : I), IsClopen (D' i)
Z'_subset_D' : ∀ (i : I), Z' i ⊆ D' i
C' : I → Set X
C'_clopen : ∀ (i : I), IsClopen (C' i)
Z'_subset_C' : ∀ (i : I), Z (some i) ⊆ C' i
C'_subset_D' : ∀ (i : I), C' i ⊆ D' i
C'_cover_D' : Subset.{u_4} (α := Set X) (⋃ (i : I), D' i) (⋃ (i : I), C' i)
C'_disj : PairwiseDisjoint univ C'
C0 : Set X := D none \ ⋃ (i : I), C' i
this : IsClopen C0
⊢ Z none ⊆ C0
have simp : Z none ⊆ D none ∧ Disjoint (Z none) (⋃ (i : I), C' i)
Tactic: simp only [C0, subset_diff]
-- Lean 4 proof step from Mathlib.Topology.Separation.Profinite (goal)
Goal:
X : Type u_4
I_1 : Type u_5
inst : TopologicalSpace X
inst_1 : CompactSpace X
inst_2 : T2Space X
inst_3 : TotallyDisconnectedSpace X
inst_4 : Finite I_1
I : Type u_5
inst_5 : Fintype I
IH :
  ∀ {Z D : I → Set X} (Z_closed : ∀ (i : I), IsClosed[inst] (Z i)) (D_clopen : ∀ (i : I), IsClopen (D i))
    (Z_subset_D : ∀ (i : I), Z i ⊆ D i) (Z_disj : PairwiseDisjoint univ Z),
    ∃ (C : I → Set X),
      (∀ (i : I), IsClopen (C i)) ∧
        (∀ (i : I), Z i ⊆ C i) ∧
          (∀ (i : I), C i ⊆ D i) ∧ Subset.{u_4} (α := Set X) (⋃ (i : I), D i) (⋃ (i : I), C i) ∧ PairwiseDisjoint univ C
Z D : Option I → Set X
Z_closed : ∀ (i : Option I), IsClosed[inst] (Z i)
D_clopen : ∀ (i : Option I), IsClopen (D i)
Z_subset_D : ∀ (i : Option I), Z i ⊆ D i
Z_disj : PairwiseDisjoint univ Z
Z' : I → Set X := fun (i : I) ↦ Z (some i)
Z'_closed : ∀ (i : I), IsClosed[inst] (Z (some i))
Z'_disj : PairwiseDisjoint univ (Z ∘ some)
U : Set X := D none \ ⋃ (i : I), Z (some i)
U_open : IsOpen[inst] U
Z0_subset_U : Z none ⊆ U
V : Set X
V_clopen : IsClopen V
Z0_subset_V : Z none ⊆ V
V_subset_U : V ⊆ U
V_subset_D0 : V ⊆ D none
D' : I → Set X := fun (i : I) ↦ D (some i) \ V
D'_clopen : ∀ (i : I), IsClopen (D' i)
Z'_subset_D' : ∀ (i : I), Z' i ⊆ D' i
C' : I → Set X
C'_clopen : ∀ (i : I), IsClopen (C' i)
Z'_subset_C' : ∀ (i : I), Z (some i) ⊆ C' i
C'_subset_D' : ∀ (i : I), C' i ⊆ D' i
C'_cover_D' : Subset.{u_4} (α := Set X) (⋃ (i : I), D' i) (⋃ (i : I), C' i)
C'_disj : PairwiseDisjoint univ C'
C0 : Set X := D none \ ⋃ (i : I), C' i
this : IsClopen C0
⊢ Disjoint V (⋃ (i : I), C' i)
have simp : ∀ (i : I), Disjoint V (C' i)
Tactic: simp
-- Lean 4 proof step from Mathlib.Topology.Separation.Profinite (hypothesis)
Goal:
X : Type u_4
I_1 : Type u_5
inst : TopologicalSpace X
inst_1 : CompactSpace X
inst_2 : T2Space X
inst_3 : TotallyDisconnectedSpace X
inst_4 : Finite I_1
I : Type u_5
inst_5 : Fintype I
IH :
  ∀ {Z D : I → Set X} (Z_closed : ∀ (i : I), IsClosed[inst] (Z i)) (D_clopen : ∀ (i : I), IsClopen (D i))
    (Z_subset_D : ∀ (i : I), Z i ⊆ D i) (Z_disj : PairwiseDisjoint univ Z),
    ∃ (C : I → Set X),
      (∀ (i : I), IsClopen (C i)) ∧
        (∀ (i : I), Z i ⊆ C i) ∧
          (∀ (i : I), C i ⊆ D i) ∧ Subset.{u_4} (α := Set X) (⋃ (i : I), D i) (⋃ (i : I), C i) ∧ PairwiseDisjoint univ C
Z D : Option I → Set X
Z_closed : ∀ (i : Option I), IsClosed[inst] (Z i)
D_clopen : ∀ (i : Option I), IsClopen (D i)
Z_subset_D : ∀ (i : Option I), Z i ⊆ D i
Z_disj : PairwiseDisjoint univ Z
Z' : I → Set X := fun (i : I) ↦ Z (some i)
Z'_closed : ∀ (i : I), IsClosed[inst] (Z (some i))
Z'_disj : PairwiseDisjoint univ (Z ∘ some)
U : Set X := D none \ ⋃ (i : I), Z (some i)
U_open : IsOpen[inst] U
Z0_subset_U : Z none ⊆ U
V : Set X
V_clopen : IsClopen V
Z0_subset_V : Z none ⊆ V
V_subset_U : V ⊆ U
V_subset_D0 : V ⊆ D none
D' : I → Set X := fun (i : I) ↦ D (some i) \ V
D'_clopen : ∀ (i : I), IsClopen (D' i)
Z'_subset_D' : ∀ (i : I), Z' i ⊆ D' i
C' : I → Set X
C'_clopen : ∀ (i : I), IsClopen (C' i)
Z'_subset_C' : ∀ (i : I), Z (some i) ⊆ C' i
C'_subset_D' : ∀ (i : I), C' i ⊆ D' i
C'_cover_D' : Subset.{u_4} (α := Set X) (⋃ (i : I), D' i) (⋃ (i : I), C' i)
C'_disj : PairwiseDisjoint univ C'
C0 : Set X := D none \ ⋃ (i : I), C' i
this : IsClopen C0
⊢ ∃ (C : Option I → Set X),
    (∀ (i : Option I), IsClopen (C i)) ∧
      (∀ (i : Option I), Z i ⊆ C i) ∧
        (∀ (i : Option I), C i ⊆ D i) ∧
          Subset.{u_4} (α := Set X) (⋃ (i : Option I), D i) (⋃ (i : Option I), C i) ∧ PairwiseDisjoint univ C
have this₁ : Z none ⊆ C0
Tactic: have : Z none ⊆ C0 := by
      simp only [C0, subset_diff]
      exact ⟨by grind, Disjoint.mono_left Z0_subset_V (by simp; grind)⟩
-- Lean 4 proof step from Mathlib.Topology.Separation.Profinite (goal)
Goal:
X : Type u_4
I_1 : Type u_5
inst : TopologicalSpace X
inst_1 : CompactSpace X
inst_2 : T2Space X
inst_3 : TotallyDisconnectedSpace X
inst_4 : Finite I_1
I : Type u_5
inst_5 : Fintype I
IH :
  ∀ {Z D : I → Set X} (Z_closed : ∀ (i : I), IsClosed[inst] (Z i)) (D_clopen : ∀ (i : I), IsClopen (D i))
    (Z_subset_D : ∀ (i : I), Z i ⊆ D i) (Z_disj : PairwiseDisjoint univ Z),
    ∃ (C : I → Set X),
      (∀ (i : I), IsClopen (C i)) ∧
        (∀ (i : I), Z i ⊆ C i) ∧
          (∀ (i : I), C i ⊆ D i) ∧ Subset.{u_4} (α := Set X) (⋃ (i : I), D i) (⋃ (i : I), C i) ∧ PairwiseDisjoint univ C
Z D : Option I → Set X
Z_closed : ∀ (i : Option I), IsClosed[inst] (Z i)
D_clopen : ∀ (i : Option I), IsClopen (D i)
Z_subset_D : ∀ (i : Option I), Z i ⊆ D i
Z_disj : PairwiseDisjoint univ Z
Z' : I → Set X := fun (i : I) ↦ Z (some i)
Z'_closed : ∀ (i : I), IsClosed[inst] (Z (some i))
Z'_disj : PairwiseDisjoint univ (Z ∘ some)
U : Set X := D none \ ⋃ (i : I), Z (some i)
U_open : IsOpen[inst] U
Z0_subset_U : Z none ⊆ U
V : Set X
V_clopen : IsClopen V
Z0_subset_V : Z none ⊆ V
V_subset_U : V ⊆ U
V_subset_D0 : V ⊆ D none
D' : I → Set X := fun (i : I) ↦ D (some i) \ V
D'_clopen : ∀ (i : I), IsClopen (D' i)
Z'_subset_D' : ∀ (i : I), Z' i ⊆ D' i
C' : I → Set X
C'_clopen : ∀ (i : I), IsClopen (C' i)
Z'_subset_C' : ∀ (i : I), Z (some i) ⊆ C' i
C'_subset_D' : ∀ (i : I), C' i ⊆ D' i
C'_cover_D' : Subset.{u_4} (α := Set X) (⋃ (i : I), D' i) (⋃ (i : I), C' i)
C'_disj : PairwiseDisjoint univ C'
C0 : Set X := D none \ ⋃ (i : I), C' i
this_1 : IsClopen C0
this : Z none ⊆ C0
C : Option I → Set X := fun (i : Option I) ↦ Option.casesOn (motive := fun (x : Option I) ↦ Set X) i C0 C'
⊢ ∃ (C : Option I → Set X),
    (∀ (i : Option I), IsClopen (C i)) ∧
      (∀ (i : Option I), Z i ⊆ C i) ∧
        (∀ (i : Option I), C i ⊆ D i) ∧
          Subset.{u_4} (α := Set X) (⋃ (i : Option I), D i) (⋃ (i : Option I), C i) ∧ PairwiseDisjoint univ C
have h_option : ∀ (i : Option I), IsClopen (C i)
Tactic: refine ⟨C, ?_, ?_, ?_, ?_, ?_⟩