Theorem: LightCondSet.topCatAdjunctionUnit_val_app
File: Mathlib/Condensed/Light/TopCatAdjunction.lean

Proof steps:
state_before: X✝ Y : LightCondSet
f : X✝ ⟶ Y
X : LightCondSet
S : LightProfiniteᵒᵖ
x : X.val.obj S
⊢ Continuous fun s => X.val.map (LightProfinite.const (Opposite.unop S) s).op x
state_after: X✝ Y : LightCondSet
f : X✝ ⟶ Y
X : LightCondSet
S : LightProfiniteᵒᵖ
x : X.val.obj S
⊢ ∀ (i : (T : LightProfinite) × X.val.obj (Opposite.op T)), Continuous fun a => LightCondSet.coinducingCoprod X ⟨i, a⟩
tactic: suffices ∀ (i : (T : LightProfinite.{u}) × X.val.obj ⟨T⟩),
          Continuous (fun (a : i.fst) ↦ X.coinducingCoprod ⟨i, a⟩) from this ⟨_, _⟩
state_before: X✝ Y : LightCondSet
f : X✝ ⟶ Y
X : LightCondSet
S : LightProfiniteᵒᵖ
x : X.val.obj S
⊢ ∀ (i : (T : LightProfinite) × X.val.obj (Opposite.op T)), Continuous fun a => LightCondSet.coinducingCoprod X ⟨i, a⟩
state_after: X✝ Y : LightCondSet
f : X✝ ⟶ Y
X : LightCondSet
S : LightProfiniteᵒᵖ
x : X.val.obj S
⊢ Continuous (LightCondSet.coinducingCoprod X)
tactic: rw [← continuous_sigma_iff]
state_before: X✝ Y : LightCondSet
f : X✝ ⟶ Y
X : LightCondSet
S : LightProfiniteᵒᵖ
x : X.val.obj S
⊢ Continuous (LightCondSet.coinducingCoprod X)
state_after: no goals
tactic: apply continuous_coinduced_rng
state_before: X✝ Y : LightCondSet
f : X✝ ⟶ Y
X : LightCondSet
x✝² x✝¹ : LightProfiniteᵒᵖ
x✝ : x✝² ⟶ x✝¹
⊢ X.val.map x✝ ≫
      (fun S x =>
          { toFun := fun s => X.val.map (LightProfinite.const (Opposite.unop S) s).op x, continuous_toFun := ⋯ })
        x✝¹ =
    (fun S x => { toFun := fun s => X.val.map (LightProfinite.const (Opposite.unop S) s).op x, continuous_toFun := ⋯ })
        x✝² ≫
      X.toTopCat.toLightCondSet.val.map x✝
state_after: case h
X✝ Y : LightCondSet
f : X✝ ⟶ Y
X : LightCondSet
x✝² x✝¹ : LightProfiniteᵒᵖ
x✝ : x✝² ⟶ x✝¹
a✝ : X.val.obj x✝²
⊢ (X.val.map x✝ ≫
        (fun S x =>
            { toFun := fun s => X.val.map (LightProfinite.const (Opposite.unop S) s).op x, continuous_toFun := ⋯ })
          x✝¹)
      a✝ =
    ((fun S x => { toFun := fun s => X.val.map (LightProfinite.const (Opposite.unop S) s).op x, continuous_toFun := ⋯ })
          x✝² ≫
        X.toTopCat.toLightCondSet.val.map x✝)
      a✝
tactic: ext
state_before: case h
X✝ Y : LightCondSet
f : X✝ ⟶ Y
X : LightCondSet
x✝² x✝¹ : LightProfiniteᵒᵖ
x✝ : x✝² ⟶ x✝¹
a✝ : X.val.obj x✝²
⊢ (X.val.map x✝ ≫
        (fun S x =>
            { toFun := fun s => X.val.map (LightProfinite.const (Opposite.unop S) s).op x, continuous_toFun := ⋯ })
          x✝¹)
      a✝ =
    ((fun S x => { toFun := fun s => X.val.map (LightProfinite.const (Opposite.unop S) s).op x, continuous_toFun := ⋯ })
          x✝² ≫
        X.toTopCat.toLightCondSet.val.map x✝)
      a✝
state_after: case h
X✝ Y : LightCondSet
f : X✝ ⟶ Y
X : LightCondSet
x✝² x✝¹ : LightProfiniteᵒᵖ
x✝ : x✝² ⟶ x✝¹
a✝ : X.val.obj x✝²
⊢ { toFun := fun s => X.val.map (x✝ ≫ (LightProfinite.const (Opposite.unop x✝¹) s).op) a✝, continuous_toFun := ⋯ } =
    { toFun := fun s => X.val.map (LightProfinite.const (Opposite.unop x✝²) s).op a✝, continuous_toFun := ⋯ }.comp
      x✝.unop
tactic: simp only [types_comp_apply, ContinuousMap.coe_mk, TopCat.toLightCondSet_val_map,
        ContinuousMap.comp_apply, ← FunctorToTypes.map_comp_apply]
state_before: case h
X✝ Y : LightCondSet
f : X✝ ⟶ Y
X : LightCondSet
x✝² x✝¹ : LightProfiniteᵒᵖ
x✝ : x✝² ⟶ x✝¹
a✝ : X.val.obj x✝²
⊢ { toFun := fun s => X.val.map (x✝ ≫ (LightProfinite.const (Opposite.unop x✝¹) s).op) a✝, continuous_toFun := ⋯ } =
    { toFun := fun s => X.val.map (LightProfinite.const (Opposite.unop x✝²) s).op a✝, continuous_toFun := ⋯ }.comp
      x✝.unop
state_after: no goals
tactic: rfl