Γ : Type u_3
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_1
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
d : Dir
q : Stmt Bool Λ' σ
v : σ
T : Tape Bool
this : ∀ (i : ℕ), stepAux ((Stmt.move d^[i]) q) v T = stepAux q v ((Tape.move d^[i]) T)
⊢ stepAux (move d q) v T = stepAux q v ((Tape.move d^[n]) T)

case this
Γ : Type u_3
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_1
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
d : Dir
q : Stmt Bool Λ' σ
v : σ
T : Tape Bool
⊢ ∀ (i : ℕ), stepAux ((Stmt.move d^[i]) q) v T = stepAux q v ((Tape.move d^[i]) T)
Γ : Type u_3
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_1
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
d : Dir
q : Stmt Bool Λ' σ
v : σ
T : Tape Bool
⊢ stepAux (move d q) v T = stepAux q v ((Tape.move d^[n]) T)
suffices : ∀ i, stepAux ((Stmt.move d^[i]) q) v T = stepAux q v ((Tape.move d^[i]) T)
case this
Γ : Type u_3
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_1
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
d : Dir
q : Stmt Bool Λ' σ
v : σ
T : Tape Bool
⊢ ∀ (i : ℕ), stepAux ((Stmt.move d^[i]) q) v T = stepAux q v ((Tape.move d^[i]) T)
Γ : Type u_3
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_1
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
d : Dir
q : Stmt Bool Λ' σ
v : σ
T : Tape Bool
this : ∀ (i : ℕ), stepAux ((Stmt.move d^[i]) q) v T = stepAux q v ((Tape.move d^[i]) T)
⊢ stepAux (move d q) v T = stepAux q v ((Tape.move d^[n]) T)

case this
Γ : Type u_3
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_1
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
d : Dir
q : Stmt Bool Λ' σ
v : σ
T : Tape Bool
⊢ ∀ (i : ℕ), stepAux ((Stmt.move d^[i]) q) v T = stepAux q v ((Tape.move d^[i]) T)
exact this n
case this
Γ : Type u_3
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_1
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
d : Dir
q : Stmt Bool Λ' σ
v : σ
T : Tape Bool
i : ℕ
⊢ stepAux ((Stmt.move d^[i]) q) v T = stepAux q v ((Tape.move d^[i]) T)
case this
Γ : Type u_3
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_1
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
d : Dir
q : Stmt Bool Λ' σ
v : σ
T : Tape Bool
⊢ ∀ (i : ℕ), stepAux ((Stmt.move d^[i]) q) v T = stepAux q v ((Tape.move d^[i]) T)
intro i
case this.zero
Γ : Type u_3
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_1
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
d : Dir
q : Stmt Bool Λ' σ
v : σ
T✝ T : Tape Bool
⊢ stepAux ((Stmt.move d^[Nat.zero]) q) v T = stepAux q v ((Tape.move d^[Nat.zero]) T)

case this.succ
Γ : Type u_3
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_1
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
d : Dir
q : Stmt Bool Λ' σ
v : σ
T✝ : Tape Bool
i : ℕ
IH : ∀ (T : Tape Bool), stepAux ((Stmt.move d^[i]) q) v T = stepAux q v ((Tape.move d^[i]) T)
T : Tape Bool
⊢ stepAux ((Stmt.move d^[Nat.succ i]) q) v T = stepAux q v ((Tape.move d^[Nat.succ i]) T)
case this
Γ : Type u_3
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_1
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
d : Dir
q : Stmt Bool Λ' σ
v : σ
T : Tape Bool
i : ℕ
⊢ stepAux ((Stmt.move d^[i]) q) v T = stepAux q v ((Tape.move d^[i]) T)
induction' i with i IH generalizing T
case this.succ
Γ : Type u_3
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_1
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
d : Dir
q : Stmt Bool Λ' σ
v : σ
T✝ : Tape Bool
i : ℕ
IH : ∀ (T : Tape Bool), stepAux ((Stmt.move d^[i]) q) v T = stepAux q v ((Tape.move d^[i]) T)
T : Tape Bool
⊢ stepAux ((Stmt.move d ∘ Stmt.move d^[i]) q) v T = stepAux q v ((Tape.move d^[i] ∘ Tape.move d) T)
case this.succ
Γ : Type u_3
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_1
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
d : Dir
q : Stmt Bool Λ' σ
v : σ
T✝ : Tape Bool
i : ℕ
IH : ∀ (T : Tape Bool), stepAux ((Stmt.move d^[i]) q) v T = stepAux q v ((Tape.move d^[i]) T)
T : Tape Bool
⊢ stepAux ((Stmt.move d^[Nat.succ i]) q) v T = stepAux q v ((Tape.move d^[Nat.succ i]) T)
rw [iterate_succ', iterate_succ]
case this.succ
Γ : Type u_3
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_1
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
d : Dir
q : Stmt Bool Λ' σ
v : σ
T✝ : Tape Bool
i : ℕ
IH : ∀ (T : Tape Bool), stepAux ((Stmt.move d^[i]) q) v T = stepAux q v ((Tape.move d^[i]) T)
T : Tape Bool
⊢ stepAux ((Stmt.move d^[i]) q) v (Tape.move d T) = stepAux q v ((Tape.move d^[i]) (Tape.move d T))
case this.succ
Γ : Type u_3
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_1
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
d : Dir
q : Stmt Bool Λ' σ
v : σ
T✝ : Tape Bool
i : ℕ
IH : ∀ (T : Tape Bool), stepAux ((Stmt.move d^[i]) q) v T = stepAux q v ((Tape.move d^[i]) T)
T : Tape Bool
⊢ stepAux ((Stmt.move d ∘ Stmt.move d^[i]) q) v T = stepAux q v ((Tape.move d^[i] ∘ Tape.move d) T)
simp only [stepAux, Function.comp_apply]
no goals
case this.succ
Γ : Type u_3
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_1
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
d : Dir
q : Stmt Bool Λ' σ
v : σ
T✝ : Tape Bool
i : ℕ
IH : ∀ (T : Tape Bool), stepAux ((Stmt.move d^[i]) q) v T = stepAux q v ((Tape.move d^[i]) T)
T : Tape Bool
⊢ stepAux ((Stmt.move d^[i]) q) v (Tape.move d T) = stepAux q v ((Tape.move d^[i]) (Tape.move d T))
rw [IH]
no goals
case this.zero
Γ : Type u_3
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_1
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
d : Dir
q : Stmt Bool Λ' σ
v : σ
T✝ T : Tape Bool
⊢ stepAux ((Stmt.move d^[Nat.zero]) q) v T = stepAux q v ((Tape.move d^[Nat.zero]) T)
rfl