∀ {Γ : Type u_1} {Λ : Type u_2} {σ : Type u_3} (motive : Turing.TM1.Stmt Γ Λ σ → Sort u_4) (Q : Turing.TM1.Stmt Γ Λ σ)
  (h_1 :
    (Q : Turing.TM1.Stmt Γ Λ σ) →
      (a : Turing.Dir) → (q : Turing.TM1.Stmt Γ Λ σ) → Q = Turing.TM1.Stmt.move a q → motive (Turing.TM1.Stmt.move a q))
  (h_2 :
    (Q : Turing.TM1.Stmt Γ Λ σ) →
      (a : Γ → σ → Γ) →
        (q : Turing.TM1.Stmt Γ Λ σ) → Q = Turing.TM1.Stmt.write a q → motive (Turing.TM1.Stmt.write a q))
  (h_3 :
    (Q : Turing.TM1.Stmt Γ Λ σ) →
      (a : Γ → σ → σ) → (q : Turing.TM1.Stmt Γ Λ σ) → Q = Turing.TM1.Stmt.load a q → motive (Turing.TM1.Stmt.load a q))
  (h_4 :
    (Q : Turing.TM1.Stmt Γ Λ σ) →
      (a : Γ → σ → Bool) →
        (q₁ q₂ : Turing.TM1.Stmt Γ Λ σ) → Q = Turing.TM1.Stmt.branch a q₁ q₂ → motive (Turing.TM1.Stmt.branch a q₁ q₂))
  (h_5 : (Q : Turing.TM1.Stmt Γ Λ σ) → motive Q),
  (∀ (a : Turing.Dir) (q : Turing.TM1.Stmt Γ Λ σ), Q = Turing.TM1.Stmt.move a q → False) →
    (∀ (a : Γ → σ → Γ) (q : Turing.TM1.Stmt Γ Λ σ), Q = Turing.TM1.Stmt.write a q → False) →
      (∀ (a : Γ → σ → σ) (q : Turing.TM1.Stmt Γ Λ σ), Q = Turing.TM1.Stmt.load a q → False) →
        (∀ (a : Γ → σ → Bool) (q₁ q₂ : Turing.TM1.Stmt Γ Λ σ), Q = Turing.TM1.Stmt.branch a q₁ q₂ → False) →
          (match Q with
            | Q@h:(Turing.TM1.Stmt.move a q) => h_1 Q a q h
            | Q@h:(Turing.TM1.Stmt.write a q) => h_2 Q a q h
            | Q@h:(Turing.TM1.Stmt.load a q) => h_3 Q a q h
            | Q@h:(Turing.TM1.Stmt.branch a q₁ q₂) => h_4 Q a q₁ q₂ h
            | Q => h_5 Q) =
            h_5 Q