Theorem: ContinuousMap.Homotopy.symm_trans
File: Mathlib/Topology/Homotopy/Basic.lean

tactic: ext ⟨t, _⟩
state_before: F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
⊢ symm (trans F G) = trans (symm G) (symm F)

tactic: rw [trans_apply, symm_apply, trans_apply]
state_before: case h.mk
F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
t : ↑I
snd✝ : X
⊢ ↑(symm (trans F G)) (t, snd✝) = ↑(trans (symm G) (symm F)) (t, snd✝)

tactic: simp only [coe_symm_eq, symm_apply]
state_before: case h.mk
F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
t : ↑I
snd✝ : X
⊢ (if h : ↑(σ (t, snd✝).fst, (t, snd✝).snd).fst ≤ 1 / 2 then
      ↑F
        ({ val := 2 * ↑(σ (t, snd✝).fst, (t, snd✝).snd).fst,
            property := (_ : 2 * ↑(σ (t, snd✝).fst, (t, snd✝).snd).fst ∈ I) },
          (σ (t, snd✝).fst, (t, snd✝).snd).snd)
    else
      ↑G
        ({ val := 2 * ↑(σ (t, snd✝).fst, (t, snd✝).snd).fst - 1,
            property := (_ : 2 * ↑(σ (t, snd✝).fst, (t, snd✝).snd).fst - 1 ∈ I) },
          (σ (t, snd✝).fst, (t, snd✝).snd).snd)) =
    if h : ↑(t, snd✝).fst ≤ 1 / 2 then
      ↑(symm G) ({ val := 2 * ↑(t, snd✝).fst, property := (_ : 2 * ↑(t, snd✝).fst ∈ I) }, (t, snd✝).snd)
    else ↑(symm F) ({ val := 2 * ↑(t, snd✝).fst - 1, property := (_ : 2 * ↑(t, snd✝).fst - 1 ∈ I) }, (t, snd✝).snd)

tactic: split_ifs with h₁ h₂ h₂
state_before: case h.mk
F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
t : ↑I
snd✝ : X
⊢ (if h : 1 - ↑t ≤ 1 / 2 then ↑F ({ val := 2 * (1 - ↑t), property := (_ : (fun x => x ∈ I) (2 * (1 - ↑t))) }, snd✝)
    else ↑G ({ val := 2 * (1 - ↑t) - 1, property := (_ : (fun x => x ∈ I) (2 * (1 - ↑t) - 1)) }, snd✝)) =
    if h : ↑t ≤ 1 / 2 then ↑G (σ { val := 2 * ↑t, property := (_ : 2 * ↑(t, snd✝).fst ∈ I) }, snd✝)
    else ↑F (σ { val := 2 * ↑t - 1, property := (_ : 2 * ↑(t, snd✝).fst - 1 ∈ I) }, snd✝)

tactic: have ht : (t : ℝ) = 1 / 2 := by linarith
state_before: case h.mk.inl.inl
F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
t : ↑I
snd✝ : X
h₁ : 1 - ↑t ≤ 1 / 2
h₂ : ↑t ≤ 1 / 2
⊢ ↑F ({ val := 2 * (1 - ↑t), property := (_ : (fun x => x ∈ I) (2 * (1 - ↑t))) }, snd✝) =
    ↑G (σ { val := 2 * ↑t, property := (_ : 2 * ↑(t, snd✝).fst ∈ I) }, snd✝)

tactic: simp only [ht]
state_before: case h.mk.inl.inl
F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
t : ↑I
snd✝ : X
h₁ : 1 - ↑t ≤ 1 / 2
h₂ : ↑t ≤ 1 / 2
ht : ↑t = 1 / 2
⊢ ↑F ({ val := 2 * (1 - ↑t), property := (_ : (fun x => x ∈ I) (2 * (1 - ↑t))) }, snd✝) =
    ↑G (σ { val := 2 * ↑t, property := (_ : 2 * ↑(t, snd✝).fst ∈ I) }, snd✝)

tactic: norm_num
state_before: case h.mk.inl.inl
F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
t : ↑I
snd✝ : X
h₁ : 1 - ↑t ≤ 1 / 2
h₂ : ↑t ≤ 1 / 2
ht : ↑t = 1 / 2
⊢ ↑F ({ val := 2 * (1 - 1 / 2), property := (_ : (fun x => x ∈ I) (2 * (1 - 1 / 2))) }, snd✝) =
    ↑G (σ { val := 2 * (1 / 2), property := (_ : (fun x => x ∈ I) (2 * (1 / 2))) }, snd✝)

tactic: linarith
state_before: F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
t : ↑I
snd✝ : X
h₁ : 1 - ↑t ≤ 1 / 2
h₂ : ↑t ≤ 1 / 2
⊢ ↑t = 1 / 2

tactic: congr 2
state_before: case h.mk.inl.inr
F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
t : ↑I
snd✝ : X
h₁ : 1 - ↑t ≤ 1 / 2
h₂ : ¬↑t ≤ 1 / 2
⊢ ↑F ({ val := 2 * (1 - ↑t), property := (_ : (fun x => x ∈ I) (2 * (1 - ↑t))) }, snd✝) =
    ↑F (σ { val := 2 * ↑t - 1, property := (_ : 2 * ↑(t, snd✝).fst - 1 ∈ I) }, snd✝)

tactic: apply Subtype.ext
state_before: case h.mk.inl.inr.h.e_6.h.e_fst
F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
t : ↑I
snd✝ : X
h₁ : 1 - ↑t ≤ 1 / 2
h₂ : ¬↑t ≤ 1 / 2
⊢ { val := 2 * (1 - ↑t), property := (_ : (fun x => x ∈ I) (2 * (1 - ↑t))) } =
    σ { val := 2 * ↑t - 1, property := (_ : 2 * ↑(t, snd✝).fst - 1 ∈ I) }

tactic: simp only [coe_symm_eq]
state_before: case h.mk.inl.inr.h.e_6.h.e_fst.a
F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
t : ↑I
snd✝ : X
h₁ : 1 - ↑t ≤ 1 / 2
h₂ : ¬↑t ≤ 1 / 2
⊢ ↑{ val := 2 * (1 - ↑t), property := (_ : (fun x => x ∈ I) (2 * (1 - ↑t))) } =
    ↑(σ { val := 2 * ↑t - 1, property := (_ : 2 * ↑(t, snd✝).fst - 1 ∈ I) })

tactic: linarith
state_before: case h.mk.inl.inr.h.e_6.h.e_fst.a
F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
t : ↑I
snd✝ : X
h₁ : 1 - ↑t ≤ 1 / 2
h₂ : ¬↑t ≤ 1 / 2
⊢ 2 * (1 - ↑t) = 1 - (2 * ↑t - 1)

tactic: congr 2
state_before: case h.mk.inr.inl
F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
t : ↑I
snd✝ : X
h₁ : ¬1 - ↑t ≤ 1 / 2
h₂ : ↑t ≤ 1 / 2
⊢ ↑G ({ val := 2 * (1 - ↑t) - 1, property := (_ : (fun x => x ∈ I) (2 * (1 - ↑t) - 1)) }, snd✝) =
    ↑G (σ { val := 2 * ↑t, property := (_ : 2 * ↑(t, snd✝).fst ∈ I) }, snd✝)

tactic: apply Subtype.ext
state_before: case h.mk.inr.inl.h.e_6.h.e_fst
F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
t : ↑I
snd✝ : X
h₁ : ¬1 - ↑t ≤ 1 / 2
h₂ : ↑t ≤ 1 / 2
⊢ { val := 2 * (1 - ↑t) - 1, property := (_ : (fun x => x ∈ I) (2 * (1 - ↑t) - 1)) } =
    σ { val := 2 * ↑t, property := (_ : 2 * ↑(t, snd✝).fst ∈ I) }

tactic: simp only [coe_symm_eq]
state_before: case h.mk.inr.inl.h.e_6.h.e_fst.a
F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
t : ↑I
snd✝ : X
h₁ : ¬1 - ↑t ≤ 1 / 2
h₂ : ↑t ≤ 1 / 2
⊢ ↑{ val := 2 * (1 - ↑t) - 1, property := (_ : (fun x => x ∈ I) (2 * (1 - ↑t) - 1)) } =
    ↑(σ { val := 2 * ↑t, property := (_ : 2 * ↑(t, snd✝).fst ∈ I) })

tactic: linarith
state_before: case h.mk.inr.inl.h.e_6.h.e_fst.a
F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
t : ↑I
snd✝ : X
h₁ : ¬1 - ↑t ≤ 1 / 2
h₂ : ↑t ≤ 1 / 2
⊢ 2 * (1 - ↑t) - 1 = 1 - 2 * ↑t

tactic: exfalso
state_before: case h.mk.inr.inr
F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
t : ↑I
snd✝ : X
h₁ : ¬1 - ↑t ≤ 1 / 2
h₂ : ¬↑t ≤ 1 / 2
⊢ ↑G ({ val := 2 * (1 - ↑t) - 1, property := (_ : (fun x => x ∈ I) (2 * (1 - ↑t) - 1)) }, snd✝) =
    ↑F (σ { val := 2 * ↑t - 1, property := (_ : 2 * ↑(t, snd✝).fst - 1 ∈ I) }, snd✝)

tactic: linarith
state_before: case h.mk.inr.inr.h
F✝ : Type ?u.209823
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
t : ↑I
snd✝ : X
h₁ : ¬1 - ↑t ≤ 1 / 2
h₂ : ¬↑t ≤ 1 / 2
⊢ False