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

Proof steps:
state_before: X Y : LightCondSet
f : X ⟶ Y
⊢ Continuous (f.val.app (Opposite.op (of PUnit.{u + 1})))
state_after: X Y : LightCondSet
f : X ⟶ Y
⊢ Continuous (f.val.app (Opposite.op (of PUnit.{u + 1})) ∘ LightCondSet.coinducingCoprod X)
tactic: rw [continuous_coinduced_dom]
state_before: X Y : LightCondSet
f : X ⟶ Y
⊢ Continuous (f.val.app (Opposite.op (of PUnit.{u + 1})) ∘ LightCondSet.coinducingCoprod X)
state_after: case hf
X Y : LightCondSet
f : X ⟶ Y
⊢ ∀ (i : (S : LightProfinite) × X.val.obj (Opposite.op S)),
    Continuous fun a => (f.val.app (Opposite.op (of PUnit.{u + 1})) ∘ LightCondSet.coinducingCoprod X) ⟨i, a⟩
tactic: apply continuous_sigma
state_before: case hf
X Y : LightCondSet
f : X ⟶ Y
⊢ ∀ (i : (S : LightProfinite) × X.val.obj (Opposite.op S)),
    Continuous fun a => (f.val.app (Opposite.op (of PUnit.{u + 1})) ∘ LightCondSet.coinducingCoprod X) ⟨i, a⟩
state_after: case hf
X Y : LightCondSet
f : X ⟶ Y
S : LightProfinite
x : X.val.obj (Opposite.op S)
⊢ Continuous fun a => (f.val.app (Opposite.op (of PUnit.{u + 1})) ∘ LightCondSet.coinducingCoprod X) ⟨⟨S, x⟩, a⟩
tactic: intro ⟨S, x⟩
state_before: case hf
X Y : LightCondSet
f : X ⟶ Y
S : LightProfinite
x : X.val.obj (Opposite.op S)
⊢ Continuous fun a => (f.val.app (Opposite.op (of PUnit.{u + 1})) ∘ LightCondSet.coinducingCoprod X) ⟨⟨S, x⟩, a⟩
state_after: case hf
X Y : LightCondSet
f : X ⟶ Y
S : LightProfinite
x : X.val.obj (Opposite.op S)
⊢ Continuous fun a => f.val.app (Opposite.op (of PUnit.{u + 1})) (X.val.map (LightProfinite.const S a).op x)
tactic: simp only [Function.comp_apply, coinducingCoprod]
state_before: case hf
X Y : LightCondSet
f : X ⟶ Y
S : LightProfinite
x : X.val.obj (Opposite.op S)
⊢ Continuous fun a => f.val.app (Opposite.op (of PUnit.{u + 1})) (X.val.map (LightProfinite.const S a).op x)
state_after: case hf
X Y : LightCondSet
f : X ⟶ Y
S : LightProfinite
x : X.val.obj (Opposite.op S)
this :
  (fun a => f.val.app (Opposite.op (of PUnit.{u + 1})) (X.val.map (LightProfinite.const S a).op x)) = fun a =>
    Y.val.map (LightProfinite.const S a).op (f.val.app (Opposite.op S) x)
⊢ Continuous fun a => f.val.app (Opposite.op (of PUnit.{u + 1})) (X.val.map (LightProfinite.const S a).op x)
tactic: have : (fun (a : S) ↦ f.val.app ⟨LightProfinite.of PUnit⟩ (X.val.map (S.const a).op x)) =
        (fun (a : S) ↦ Y.val.map (S.const a).op (f.val.app ⟨S⟩ x)) :=
      funext fun a ↦ NatTrans.naturality_apply f.val (S.const a).op x
state_before: case hf
X Y : LightCondSet
f : X ⟶ Y
S : LightProfinite
x : X.val.obj (Opposite.op S)
this :
  (fun a => f.val.app (Opposite.op (of PUnit.{u + 1})) (X.val.map (LightProfinite.const S a).op x)) = fun a =>
    Y.val.map (LightProfinite.const S a).op (f.val.app (Opposite.op S) x)
⊢ Continuous fun a => f.val.app (Opposite.op (of PUnit.{u + 1})) (X.val.map (LightProfinite.const S a).op x)
state_after: case hf
X Y : LightCondSet
f : X ⟶ Y
S : LightProfinite
x : X.val.obj (Opposite.op S)
this :
  (fun a => f.val.app (Opposite.op (of PUnit.{u + 1})) (X.val.map (LightProfinite.const S a).op x)) = fun a =>
    Y.val.map (LightProfinite.const S a).op (f.val.app (Opposite.op S) x)
⊢ Continuous fun a => Y.val.map (LightProfinite.const S a).op (f.val.app (Opposite.op S) x)
tactic: rw [this]
state_before: case hf
X Y : LightCondSet
f : X ⟶ Y
S : LightProfinite
x : X.val.obj (Opposite.op S)
this :
  (fun a => f.val.app (Opposite.op (of PUnit.{u + 1})) (X.val.map (LightProfinite.const S a).op x)) = fun a =>
    Y.val.map (LightProfinite.const S a).op (f.val.app (Opposite.op S) x)
⊢ Continuous fun a => Y.val.map (LightProfinite.const S a).op (f.val.app (Opposite.op S) x)
state_after: no goals
tactic: exact continuous_coinducingCoprod _ _