Theorem: Path.trans_continuous_family
File: Mathlib/Topology/Connected/PathConnected.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
x y z : X
ι✝ : Type u_3
γ : Path x y
ι : Type u_4
inst✝ : TopologicalSpace ι
a b c : ι → X
γ₁ : (t : ι) → Path (a t) (b t)
h₁ : Continuous ↿γ₁
γ₂ : (t : ι) → Path (b t) (c t)
h₂ : Continuous ↿γ₂
⊢ Continuous ↿fun t => (γ₁ t).trans (γ₂ t)
state_after: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
x y z : X
ι✝ : Type u_3
γ : Path x y
ι : Type u_4
inst✝ : TopologicalSpace ι
a b c : ι → X
γ₁ : (t : ι) → Path (a t) (b t)
h₁ : Continuous ↿γ₁
γ₂ : (t : ι) → Path (b t) (c t)
h₂ : Continuous ↿γ₂
h₁' : Continuous ↿fun t => (γ₁ t).extend
⊢ Continuous ↿fun t => (γ₁ t).trans (γ₂ t)
tactic: have h₁' := Path.continuous_uncurry_extend_of_continuous_family γ₁ h₁
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
x y z : X
ι✝ : Type u_3
γ : Path x y
ι : Type u_4
inst✝ : TopologicalSpace ι
a b c : ι → X
γ₁ : (t : ι) → Path (a t) (b t)
h₁ : Continuous ↿γ₁
γ₂ : (t : ι) → Path (b t) (c t)
h₂ : Continuous ↿γ₂
h₁' : Continuous ↿fun t => (γ₁ t).extend
⊢ Continuous ↿fun t => (γ₁ t).trans (γ₂ t)
state_after: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
x y z : X
ι✝ : Type u_3
γ : Path x y
ι : Type u_4
inst✝ : TopologicalSpace ι
a b c : ι → X
γ₁ : (t : ι) → Path (a t) (b t)
h₁ : Continuous ↿γ₁
γ₂ : (t : ι) → Path (b t) (c t)
h₂ : Continuous ↿γ₂
h₁' : Continuous ↿fun t => (γ₁ t).extend
h₂' : Continuous ↿fun t => (γ₂ t).extend
⊢ Continuous ↿fun t => (γ₁ t).trans (γ₂ t)
tactic: have h₂' := Path.continuous_uncurry_extend_of_continuous_family γ₂ h₂
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
x y z : X
ι✝ : Type u_3
γ : Path x y
ι : Type u_4
inst✝ : TopologicalSpace ι
a b c : ι → X
γ₁ : (t : ι) → Path (a t) (b t)
h₁ : Continuous ↿γ₁
γ₂ : (t : ι) → Path (b t) (c t)
h₂ : Continuous ↿γ₂
h₁' : Continuous ↿fun t => (γ₁ t).extend
h₂' : Continuous ↿fun t => (γ₂ t).extend
⊢ Continuous fun p =>
    { toFun := fun x => if ↑x ≤ 1 / 2 then (γ₁ p.1).extend (2 * ↑x) else (γ₂ p.1).extend (2 * ↑x - 1),
        continuous_toFun := ⋯, source' := ⋯, target' := ⋯ }
      p.2
state_after: case refine_1
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
x y z : X
ι✝ : Type u_3
γ : Path x y
ι : Type u_4
inst✝ : TopologicalSpace ι
a b c : ι → X
γ₁ : (t : ι) → Path (a t) (b t)
h₁ : Continuous ↿γ₁
γ₂ : (t : ι) → Path (b t) (c t)
h₂ : Continuous ↿γ₂
h₁' : Continuous ↿fun t => (γ₁ t).extend
h₂' : Continuous ↿fun t => (γ₂ t).extend
⊢ Continuous fun p => (γ₁ p.1).extend (2 * ↑p.2)

case refine_2
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
x y z : X
ι✝ : Type u_3
γ : Path x y
ι : Type u_4
inst✝ : TopologicalSpace ι
a b c : ι → X
γ₁ : (t : ι) → Path (a t) (b t)
h₁ : Continuous ↿γ₁
γ₂ : (t : ι) → Path (b t) (c t)
h₂ : Continuous ↿γ₂
h₁' : Continuous ↿fun t => (γ₁ t).extend
h₂' : Continuous ↿fun t => (γ₂ t).extend
⊢ Continuous fun p => (γ₂ p.1).extend (2 * ↑p.2 - 1)

case refine_3
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
x y z : X
ι✝ : Type u_3
γ : Path x y
ι : Type u_4
inst✝ : TopologicalSpace ι
a b c : ι → X
γ₁ : (t : ι) → Path (a t) (b t)
h₁ : Continuous ↿γ₁
γ₂ : (t : ι) → Path (b t) (c t)
h₂ : Continuous ↿γ₂
h₁' : Continuous ↿fun t => (γ₁ t).extend
h₂' : Continuous ↿fun t => (γ₂ t).extend
⊢ ∀ (x : ι × ↑I), ↑x.2 = 1 / 2 → (γ₁ x.1).extend (2 * ↑x.2) = (γ₂ x.1).extend (2 * ↑x.2 - 1)
tactic: refine Continuous.if_le ?_ ?_ (continuous_subtype_val.comp continuous_snd) continuous_const ?_