computability.turing_machineMathlib.Computability.TuringMachine

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -352,7 +352,7 @@ def ListBlank.nth {Γ} [Inhabited Γ] (l : ListBlank Γ) (n : ℕ) : Γ :=
       cases' lt_or_le _ _ with h h; · rw [List.getI_append _ _ _ h]
       rw [List.getI_eq_default _ h]
       cases' le_or_lt _ _ with h₂ h₂; · rw [List.getI_eq_default _ h₂]
-      rw [List.getI_eq_nthLe _ h₂, List.nthLe_append_right h, List.nthLe_replicate])
+      rw [List.getI_eq_get _ h₂, List.nthLe_append_right h, List.nthLe_replicate])
 #align turing.list_blank.nth Turing.ListBlank.nth
 -/
 
@@ -404,10 +404,10 @@ theorem ListBlank.ext {Γ} [Inhabited Γ] {L₁ L₂ : ListBlank Γ} :
       cases' lt_or_le i l₁.length with h' h'
       ·
         simp only [List.nthLe_append _ h', List.nthLe_get? h, List.nthLe_get? h', ←
-          List.getI_eq_nthLe _ h, ← List.getI_eq_nthLe _ h', H]
+          List.getI_eq_get _ h, ← List.getI_eq_get _ h', H]
       ·
         simp only [List.nthLe_append_right h', List.nthLe_replicate, List.nthLe_get? h,
-          List.get?_len_le h', ← List.getI_eq_default _ h', H, List.getI_eq_nthLe _ h]
+          List.get?_len_le h', ← List.getI_eq_default _ h', H, List.getI_eq_get _ h]
 #align turing.list_blank.ext Turing.ListBlank.ext
 -/
 
@@ -3040,7 +3040,7 @@ theorem tr_respects_aux₂ {k q v} {S : ∀ k, List (Γ k)} {L : ListBlank (∀
     · subst k';
       split_ifs <;> simp only [List.reverse_cons, Function.update_same, list_blank.nth_mk, List.map]
       ·
-        rw [List.getI_eq_nthLe, List.nthLe_append_right] <;>
+        rw [List.getI_eq_get, List.nthLe_append_right] <;>
           simp only [h, List.nthLe_singleton, List.length_map, List.length_reverse, Nat.succ_pos',
             List.length_append, lt_add_iff_pos_right, List.length]
       rw [← proj_map_nth, hL, list_blank.nth_mk]
Diff
@@ -7,7 +7,7 @@ import Data.Fintype.Option
 import Data.Fintype.Prod
 import Data.Fintype.Pi
 import Data.Vector.Basic
-import Data.Pfun
+import Data.PFun
 import Logic.Function.Iterate
 import Order.Basic
 import Tactic.ApplyFun
@@ -811,7 +811,7 @@ theorem Tape.move_left_nth {Γ} [Inhabited Γ] :
   | ⟨a, L, R⟩, 0 => (ListBlank.nth_zero _).symm
   | ⟨a, L, R⟩, 1 => (ListBlank.nth_zero _).trans (ListBlank.head_cons _ _)
   | ⟨a, L, R⟩, (n + 1 : ℕ) + 1 => by
-    rw [add_sub_cancel]
+    rw [add_sub_cancel_right]
     change (R.cons a).get? (n + 1) = R.nth n
     rw [list_blank.nth_succ, list_blank.tail_cons]
 #align turing.tape.move_left_nth Turing.Tape.move_left_nth
@@ -824,7 +824,7 @@ theorem Tape.move_right_nth {Γ} [Inhabited Γ] (T : Tape Γ) (i : ℤ) :
   conv =>
       rhs
       rw [← T.move_right_left] <;>
-    rw [tape.move_left_nth, add_sub_cancel]
+    rw [tape.move_left_nth, add_sub_cancel_right]
 #align turing.tape.move_right_nth Turing.Tape.move_right_nth
 -/
 
@@ -3118,7 +3118,7 @@ inductive TrCfg : cfg₂ → cfg₁ → Prop
 #align turing.TM2to1.tr_cfg Turing.TM2to1.TrCfg
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (n «expr ≤ » S.length) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (n «expr ≤ » S.length) -/
 #print Turing.TM2to1.tr_respects_aux₁ /-
 theorem tr_respects_aux₁ {k} (o q v) {S : List (Γ k)} {L : ListBlank (∀ k, Option (Γ k))}
     (hL : L.map (proj k) = ListBlank.mk (S.map some).reverse) (n) (_ : n ≤ S.length) :
Diff
@@ -100,7 +100,7 @@ theorem BlankExtends.below_of_le {Γ} [Inhabited Γ] {l l₁ l₂ : List Γ} :
     BlankExtends l l₁ → BlankExtends l l₂ → l₁.length ≤ l₂.length → BlankExtends l₁ l₂ :=
   by
   rintro ⟨i, rfl⟩ ⟨j, rfl⟩ h; use j - i
-  simp only [List.length_append, add_le_add_iff_left, List.length_replicate] at h 
+  simp only [List.length_append, add_le_add_iff_left, List.length_replicate] at h
   simp only [← List.replicate_add, add_tsub_cancel_of_le h, List.append_assoc]
 #align turing.blank_extends.below_of_le Turing.BlankExtends.below_of_le
 -/
@@ -122,8 +122,8 @@ theorem BlankExtends.above_of_le {Γ} [Inhabited Γ] {l l₁ l₂ : List Γ} :
   rintro ⟨i, rfl⟩ ⟨j, e⟩ h; use i - j
   refine' List.append_cancel_right (e.symm.trans _)
   rw [List.append_assoc, ← List.replicate_add, tsub_add_cancel_of_le]
-  apply_fun List.length at e 
-  simp only [List.length_append, List.length_replicate] at e 
+  apply_fun List.length at e
+  simp only [List.length_append, List.length_replicate] at e
   rwa [← add_le_add_iff_left, e, add_le_add_iff_right]
 #align turing.blank_extends.above_of_le Turing.BlankExtends.above_of_le
 -/
@@ -400,7 +400,7 @@ theorem ListBlank.ext {Γ} [Inhabited Γ] {L₁ L₂ : ListBlank Γ} :
       refine' Quotient.sound' (Or.inl ⟨l₂.length - l₁.length, _⟩)
       refine' List.ext_nthLe _ fun i h h₂ => Eq.symm _
       · simp only [add_tsub_cancel_of_le h, List.length_append, List.length_replicate]
-      simp only [list_blank.nth_mk] at H 
+      simp only [list_blank.nth_mk] at H
       cases' lt_or_le i l₁.length with h' h'
       ·
         simp only [List.nthLe_append _ h', List.nthLe_get? h, List.nthLe_get? h', ←
@@ -1073,7 +1073,7 @@ theorem mem_eval {σ} {f : σ → Option σ} {a b} : b ∈ eval f a ↔ Reaches
     · rw [Part.mem_unique h
           (PFun.mem_fix_iff.2 <| Or.inl <| Part.mem_some_iff.2 <| by rw [e] <;> rfl)]
       exact ⟨refl_trans_gen.refl, e⟩
-    · rcases PFun.mem_fix_iff.1 h with (h | ⟨_, h, _⟩) <;> rw [e] at h  <;>
+    · rcases PFun.mem_fix_iff.1 h with (h | ⟨_, h, _⟩) <;> rw [e] at h <;>
         cases Part.mem_some_iff.1 h
       cases' IH a' (by rwa [e]) with h₁ h₂
       exact ⟨refl_trans_gen.head e h₁, h₂⟩, fun ⟨h₁, h₂⟩ =>
@@ -1140,10 +1140,10 @@ theorem tr_reaches₁ {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H
   by
   induction' ab with c₁ ac c₁ d₁ ac cd IH
   · have := H aa
-    rwa [show f₁ a₁ = _ from ac] at this 
+    rwa [show f₁ a₁ = _ from ac] at this
   · rcases IH with ⟨c₂, cc, ac₂⟩
     have := H cc
-    rw [show f₁ c₁ = _ from cd] at this 
+    rw [show f₁ c₁ = _ from cd] at this
     rcases this with ⟨d₂, dd, cd₂⟩
     exact ⟨_, dd, ac₂.trans cd₂⟩
 #align turing.tr_reaches₁ Turing.tr_reaches₁
@@ -1190,7 +1190,7 @@ theorem tr_eval {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H : Res
   cases' mem_eval.1 ab with ab b0
   rcases tr_reaches H aa ab with ⟨b₂, bb, ab⟩
   refine' ⟨_, bb, mem_eval.2 ⟨ab, _⟩⟩
-  have := H bb; rwa [b0] at this 
+  have := H bb; rwa [b0] at this
 #align turing.tr_eval Turing.tr_eval
 -/
 
@@ -1255,7 +1255,7 @@ theorem tr_eval' {σ₁ σ₂} (f₁ : σ₁ → Option σ₁) (f₂ : σ₂ →
       fun h => by
       rcases(Part.mem_map_iff _).1 h with ⟨b₁, ab, bb⟩
       rcases tr_eval H rfl ab with ⟨_, rfl, h⟩
-      rwa [bb] at h ⟩
+      rwa [bb] at h⟩
 #align turing.tr_eval' Turing.tr_eval'
 -/
 
@@ -1640,14 +1640,14 @@ theorem stmts₁_trans {q₁ q₂} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ 
   by
   intro h₁₂ q₀ h₀₁
   induction' q₂ with _ q IH _ q IH _ q IH <;> simp only [stmts₁] at h₁₂ ⊢ <;>
-    simp only [Finset.mem_insert, Finset.mem_union, Finset.mem_singleton] at h₁₂ 
+    simp only [Finset.mem_insert, Finset.mem_union, Finset.mem_singleton] at h₁₂
   iterate 3 
     rcases h₁₂ with (rfl | h₁₂)
-    · unfold stmts₁ at h₀₁ ; exact h₀₁
+    · unfold stmts₁ at h₀₁; exact h₀₁
     · exact Finset.mem_insert_of_mem (IH h₁₂)
   case branch p q₁ q₂ IH₁ IH₂ =>
     rcases h₁₂ with (rfl | h₁₂ | h₁₂)
-    · unfold stmts₁ at h₀₁ ; exact h₀₁
+    · unfold stmts₁ at h₀₁; exact h₀₁
     · exact Finset.mem_insert_of_mem (Finset.mem_union_left _ <| IH₁ h₁₂)
     · exact Finset.mem_insert_of_mem (Finset.mem_union_right _ <| IH₂ h₁₂)
   case goto l => subst h₁₂; exact h₀₁
@@ -1661,7 +1661,7 @@ theorem stmts₁_supportsStmt_mono {S q₁ q₂} (h : q₁ ∈ stmts₁ q₂) (h
   by
   induction' q₂ with _ q IH _ q IH _ q IH <;>
     simp only [stmts₁, supports_stmt, Finset.mem_insert, Finset.mem_union, Finset.mem_singleton] at
-      h hs 
+      h hs
   iterate 3 rcases h with (rfl | h) <;> [exact hs; exact IH h hs]
   case branch p q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts [hs, IH₁ h hs.1, IH₂ h hs.2]
   case goto l => subst h; exact hs
@@ -1712,7 +1712,7 @@ theorem step_supports (M : Λ → stmt) {S} (ss : supports M S) :
   | ⟨some l₁, v, T⟩, c', h₁, h₂ =>
     by
     replace h₂ := ss.2 _ (Finset.some_mem_insertNone.1 h₂)
-    simp only [step, Option.mem_def] at h₁ ; subst c'
+    simp only [step, Option.mem_def] at h₁; subst c'
     revert h₂; induction' M l₁ with _ q IH _ q IH _ q IH generalizing v T <;> intro hs
     iterate 3 exact IH _ _ hs
     case branch p q₁' q₂' IH₁ IH₂ =>
@@ -1887,7 +1887,7 @@ theorem tr_supports {S : Finset Λ} (ss : TM1.Supports M S) : TM0.Supports tr 
     cases' q' with q' v';
     simp only [tr_stmts, Finset.mem_coe, Finset.mem_product, Finset.mem_univ, and_true_iff] at h₂ ⊢
     cases q'; · exact Multiset.mem_cons_self _ _
-    simp only [tr, Option.mem_def] at h₁ 
+    simp only [tr, Option.mem_def] at h₁
     have := TM1.stmts_supports_stmt ss h₂
     revert this; induction q generalizing v <;> intro hs
     case move d q =>
@@ -1904,7 +1904,7 @@ theorem tr_supports {S : Finset Λ} (ss : TM1.Supports M S) : TM0.Supports tr 
       exact Finset.mem_insert_of_mem TM1.stmts₁_self
     case branch p q₁ q₂ IH₁
       IH₂ =>
-      change cond (p a v) _ _ = ((some q', v'), s) at h₁ 
+      change cond (p a v) _ _ = ((some q', v'), s) at h₁
       cases p a v
       · refine' IH₂ (TM1.stmts_trans _ h₂) _ h₁ hs.2
         unfold TM1.stmts₁
@@ -2596,14 +2596,14 @@ theorem stmts₁_trans {q₁ q₂} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ 
   by
   intro h₁₂ q₀ h₀₁
   induction' q₂ with _ _ q IH _ _ q IH _ _ q IH _ q IH <;> simp only [stmts₁] at h₁₂ ⊢ <;>
-    simp only [Finset.mem_insert, Finset.mem_singleton, Finset.mem_union] at h₁₂ 
+    simp only [Finset.mem_insert, Finset.mem_singleton, Finset.mem_union] at h₁₂
   iterate 4 
     rcases h₁₂ with (rfl | h₁₂)
-    · unfold stmts₁ at h₀₁ ; exact h₀₁
+    · unfold stmts₁ at h₀₁; exact h₀₁
     · exact Finset.mem_insert_of_mem (IH h₁₂)
   case branch f q₁ q₂ IH₁ IH₂ =>
     rcases h₁₂ with (rfl | h₁₂ | h₁₂)
-    · unfold stmts₁ at h₀₁ ; exact h₀₁
+    · unfold stmts₁ at h₀₁; exact h₀₁
     · exact Finset.mem_insert_of_mem (Finset.mem_union_left _ (IH₁ h₁₂))
     · exact Finset.mem_insert_of_mem (Finset.mem_union_right _ (IH₂ h₁₂))
   case goto l => subst h₁₂; exact h₀₁
@@ -2617,7 +2617,7 @@ theorem stmts₁_supportsStmt_mono {S q₁ q₂} (h : q₁ ∈ stmts₁ q₂) (h
   by
   induction' q₂ with _ _ q IH _ _ q IH _ _ q IH _ q IH <;>
     simp only [stmts₁, supports_stmt, Finset.mem_insert, Finset.mem_union, Finset.mem_singleton] at
-      h hs 
+      h hs
   iterate 4 rcases h with (rfl | h) <;> [exact hs; exact IH h hs]
   case branch f q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts [hs, IH₁ h hs.1, IH₂ h hs.2]
   case goto l => subst h; exact hs
@@ -2666,7 +2666,7 @@ theorem step_supports (M : Λ → stmt) {S} (ss : supports M S) :
   | ⟨some l₁, v, T⟩, c', h₁, h₂ =>
     by
     replace h₂ := ss.2 _ (Finset.some_mem_insertNone.1 h₂)
-    simp only [step, Option.mem_def] at h₁ ; subst c'
+    simp only [step, Option.mem_def] at h₁; subst c'
     revert h₂; induction' M l₁ with _ _ q IH _ _ q IH _ _ q IH _ q IH generalizing v T <;> intro hs
     iterate 4 exact IH _ _ hs
     case branch p q₁' q₂' IH₁ IH₂ =>
@@ -3029,7 +3029,7 @@ theorem tr_respects_aux₂ {k q v} {S : ∀ k, List (Γ k)} {L : ListBlank (∀
   case push
     f =>
     have := tape.write_move_right_n fun a : Γ' => (a.1, update a.2 k (some (f v)))
-    dsimp only at this 
+    dsimp only at this
     refine'
       ⟨_, fun k' => _, by
         rw [tape.move_right_n_head, List.length, tape.mk'_nth_nat, this,
@@ -3046,7 +3046,7 @@ theorem tr_respects_aux₂ {k q v} {S : ∀ k, List (Γ k)} {L : ListBlank (∀
       rw [← proj_map_nth, hL, list_blank.nth_mk]
       cases' lt_or_gt_of_ne h with h h
       · rw [List.getI_append]; simpa only [List.length_map, List.length_reverse] using h
-      · rw [gt_iff_lt] at h 
+      · rw [gt_iff_lt] at h
         rw [List.getI_eq_default, List.getI_eq_default] <;>
           simp only [Nat.add_one_le_iff, h, List.length, le_of_lt, List.length_reverse,
             List.length_append, List.length_map]
@@ -3083,7 +3083,7 @@ theorem tr_respects_aux₂ {k q v} {S : ∀ k, List (Γ k)} {L : ListBlank (∀
         rw [← proj_map_nth, hL, list_blank.nth_mk, e, List.map, List.reverse_cons]
         cases' lt_or_gt_of_ne h with h h
         · rw [List.getI_append]; simpa only [List.length_map, List.length_reverse] using h
-        · rw [gt_iff_lt] at h ;
+        · rw [gt_iff_lt] at h;
           rw [List.getI_eq_default, List.getI_eq_default] <;>
             simp only [Nat.add_one_le_iff, h, List.length, le_of_lt, List.length_reverse,
               List.length_append, List.length_map]
@@ -3168,7 +3168,7 @@ theorem tr_respects_aux {q v T k} {S : ∀ k, List (Γ k)}
   have := hgo.tail' rfl
   rw [tr, TM1.step_aux, tape.move_right_n_head, tape.mk'_nth_nat, add_bottom_nth_snd,
     stk_nth_val _ (hT k), List.get?_len_le (le_of_eq (List.length_reverse _)), Option.isNone, cond,
-    hrun, TM1.step_aux] at this 
+    hrun, TM1.step_aux] at this
   obtain ⟨c, gc, rc⟩ := IH hT'
   refine' ⟨c, gc, (this.to₀.trans hret c (trans_gen.head' rfl _)).to_reflTransGen⟩
   rw [tr, TM1.step_aux, tape.mk'_head, add_bottom_head_fst]
@@ -3259,17 +3259,17 @@ theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports tr (tr_supp S) :=
       rcases Finset.mem_insert.1 h with (rfl | h) <;> [exact this.1; exact this.2 _ h]
     clear h l'; refine' stmt_st_rec _ _ _ _ _ <;> intros
     · -- stack op
-      rw [TM2to1.supports_run] at ss' 
+      rw [TM2to1.supports_run] at ss'
       simp only [TM2to1.tr_stmts₁_run, Finset.mem_union, Finset.mem_insert, Finset.mem_singleton] at
-        sub 
+        sub
       have hgo := sub _ (Or.inl <| Or.inl rfl)
       have hret := sub _ (Or.inl <| Or.inr rfl)
       cases' IH ss' fun x hx => sub x <| Or.inr hx with IH₁ IH₂
       refine'
         ⟨by simp only [tr_normal_run, TM1.supports_stmt] <;> intros <;> exact hgo, fun l h => _⟩
-      rw [tr_stmts₁_run] at h 
+      rw [tr_stmts₁_run] at h
       simp only [TM2to1.tr_stmts₁_run, Finset.mem_union, Finset.mem_insert, Finset.mem_singleton] at
-        h 
+        h
       rcases h with (⟨rfl | rfl⟩ | h)
       · unfold TM1.supports_stmt TM2to1.tr
         rcases s with (_ | _ | _)
@@ -3283,15 +3283,15 @@ theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports tr (tr_supp S) :=
       unfold TM2to1.tr_stmts₁ at ss' sub ⊢
       exact IH ss' sub
     · -- branch
-      unfold TM2to1.tr_stmts₁ at sub 
+      unfold TM2to1.tr_stmts₁ at sub
       cases' IH₁ ss'.1 fun x hx => sub x <| Finset.mem_union_left _ hx with IH₁₁ IH₁₂
       cases' IH₂ ss'.2 fun x hx => sub x <| Finset.mem_union_right _ hx with IH₂₁ IH₂₂
       refine' ⟨⟨IH₁₁, IH₂₁⟩, fun l h => _⟩
-      rw [tr_stmts₁] at h 
+      rw [tr_stmts₁] at h
       rcases Finset.mem_union.1 h with (h | h) <;> [exact IH₁₂ _ h; exact IH₂₂ _ h]
     · -- goto
       rw [tr_stmts₁]; unfold TM2to1.tr_normal TM1.supports_stmt
-      unfold TM2.supports_stmt at ss' 
+      unfold TM2.supports_stmt at ss'
       exact
         ⟨fun _ v => Finset.mem_biUnion.2 ⟨_, ss' v, Finset.mem_insert_self _ _⟩, fun _ =>
           False.elim⟩
Diff
@@ -1967,6 +1967,8 @@ theorem exists_enc_dec [Fintype Γ] :
       Bool.of_decide_true <| (congr_fun h b).trans <| Bool.decide_true rfl⟩
   let H := (F.to_embedding.trans G).trans (Equiv.vectorEquivFin _ _).symm.toEmbedding
   classical
+  let enc := H.set_value default (Vector.replicate n ff)
+  exact ⟨_, enc, Function.invFun enc, H.set_value_eq _ _, Function.leftInverse_invFun enc.2⟩
 #align turing.TM1to1.exists_enc_dec Turing.TM1to1.exists_enc_dec
 -/
 
Diff
@@ -1967,8 +1967,6 @@ theorem exists_enc_dec [Fintype Γ] :
       Bool.of_decide_true <| (congr_fun h b).trans <| Bool.decide_true rfl⟩
   let H := (F.to_embedding.trans G).trans (Equiv.vectorEquivFin _ _).symm.toEmbedding
   classical
-  let enc := H.set_value default (Vector.replicate n ff)
-  exact ⟨_, enc, Function.invFun enc, H.set_value_eq _ _, Function.leftInverse_invFun enc.2⟩
 #align turing.TM1to1.exists_enc_dec Turing.TM1to1.exists_enc_dec
 -/
 
Diff
@@ -120,7 +120,7 @@ theorem BlankExtends.above_of_le {Γ} [Inhabited Γ] {l l₁ l₂ : List Γ} :
     BlankExtends l₁ l → BlankExtends l₂ l → l₁.length ≤ l₂.length → BlankExtends l₁ l₂ :=
   by
   rintro ⟨i, rfl⟩ ⟨j, e⟩ h; use i - j
-  refine' List.append_right_cancel (e.symm.trans _)
+  refine' List.append_cancel_right (e.symm.trans _)
   rw [List.append_assoc, ← List.replicate_add, tsub_add_cancel_of_le]
   apply_fun List.length at e 
   simp only [List.length_append, List.length_replicate] at e 
Diff
@@ -3,14 +3,14 @@ Copyright (c) 2018 Mario Carneiro. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Mario Carneiro
 -/
-import Mathbin.Data.Fintype.Option
-import Mathbin.Data.Fintype.Prod
-import Mathbin.Data.Fintype.Pi
-import Mathbin.Data.Vector.Basic
-import Mathbin.Data.Pfun
-import Mathbin.Logic.Function.Iterate
-import Mathbin.Order.Basic
-import Mathbin.Tactic.ApplyFun
+import Data.Fintype.Option
+import Data.Fintype.Prod
+import Data.Fintype.Pi
+import Data.Vector.Basic
+import Data.Pfun
+import Logic.Function.Iterate
+import Order.Basic
+import Tactic.ApplyFun
 
 #align_import computability.turing_machine from "leanprover-community/mathlib"@"e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b"
 
@@ -3118,7 +3118,7 @@ inductive TrCfg : cfg₂ → cfg₁ → Prop
 #align turing.TM2to1.tr_cfg Turing.TM2to1.TrCfg
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (n «expr ≤ » S.length) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (n «expr ≤ » S.length) -/
 #print Turing.TM2to1.tr_respects_aux₁ /-
 theorem tr_respects_aux₁ {k} (o q v) {S : List (Γ k)} {L : ListBlank (∀ k, Option (Γ k))}
     (hL : L.map (proj k) = ListBlank.mk (S.map some).reverse) (n) (_ : n ≤ S.length) :
Diff
@@ -598,7 +598,7 @@ def ListBlank.bind {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (l : ListBlank Γ) (f
   l.liftOn (fun l => ListBlank.mk (List.bind l f))
     (by
       rintro l _ ⟨i, rfl⟩; cases' hf with n e; refine' Quotient.sound' (Or.inl ⟨i * n, _⟩)
-      rw [List.bind_append, mul_comm]; congr
+      rw [List.append_bind, mul_comm]; congr
       induction' i with i IH; rfl
       simp only [IH, e, List.replicate_add, Nat.mul_succ, add_comm, List.replicate_succ,
         List.cons_bind])
Diff
@@ -2,11 +2,6 @@
 Copyright (c) 2018 Mario Carneiro. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Mario Carneiro
-
-! This file was ported from Lean 3 source module computability.turing_machine
-! leanprover-community/mathlib commit e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Data.Fintype.Option
 import Mathbin.Data.Fintype.Prod
@@ -17,6 +12,8 @@ import Mathbin.Logic.Function.Iterate
 import Mathbin.Order.Basic
 import Mathbin.Tactic.ApplyFun
 
+#align_import computability.turing_machine from "leanprover-community/mathlib"@"e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b"
+
 /-!
 # Turing machines
 
@@ -3121,7 +3118,7 @@ inductive TrCfg : cfg₂ → cfg₁ → Prop
 #align turing.TM2to1.tr_cfg Turing.TM2to1.TrCfg
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (n «expr ≤ » S.length) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (n «expr ≤ » S.length) -/
 #print Turing.TM2to1.tr_respects_aux₁ /-
 theorem tr_respects_aux₁ {k} (o q v) {S : List (Γ k)} {L : ListBlank (∀ k, Option (Γ k))}
     (hL : L.map (proj k) = ListBlank.mk (S.map some).reverse) (n) (_ : n ≤ S.length) :
Diff
@@ -423,6 +423,7 @@ def ListBlank.modifyNth {Γ} [Inhabited Γ] (f : Γ → Γ) : ℕ → ListBlank
 #align turing.list_blank.modify_nth Turing.ListBlank.modifyNth
 -/
 
+#print Turing.ListBlank.nth_modifyNth /-
 theorem ListBlank.nth_modifyNth {Γ} [Inhabited Γ] (f : Γ → Γ) (n i) (L : ListBlank Γ) :
     (L.modifyNth f n).get? i = if i = n then f (L.get? i) else L.get? i :=
   by
@@ -436,6 +437,7 @@ theorem ListBlank.nth_modifyNth {Γ} [Inhabited Γ] (f : Γ → Γ) (n i) (L : L
       simp only [list_blank.nth_zero, list_blank.head_cons, list_blank.modify_nth]
     · simp only [IH, list_blank.modify_nth, list_blank.nth_succ, list_blank.tail_cons]
 #align turing.list_blank.nth_modify_nth Turing.ListBlank.nth_modifyNth
+-/
 
 #print Turing.PointedMap /-
 /-- A pointed map of `inhabited` types is a map that sends one default value to the other. -/
@@ -452,23 +454,29 @@ instance {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] : Inhabited (PointedMap Γ Γ')
 instance {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] : CoeFun (PointedMap Γ Γ') fun _ => Γ → Γ' :=
   ⟨PointedMap.f⟩
 
+#print Turing.PointedMap.mk_val /-
 @[simp]
 theorem PointedMap.mk_val {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : Γ → Γ') (pt) :
     (PointedMap.mk f pt : Γ → Γ') = f :=
   rfl
 #align turing.pointed_map.mk_val Turing.PointedMap.mk_val
+-/
 
+#print Turing.PointedMap.map_pt /-
 @[simp]
 theorem PointedMap.map_pt {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') :
     f default = default :=
   PointedMap.map_pt' _
 #align turing.pointed_map.map_pt Turing.PointedMap.map_pt
+-/
 
+#print Turing.PointedMap.headI_map /-
 @[simp]
 theorem PointedMap.headI_map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ')
     (l : List Γ) : (l.map f).headI = f l.headI := by
   cases l <;> [exact (pointed_map.map_pt f).symm; rfl]
 #align turing.pointed_map.head_map Turing.PointedMap.headI_map
+-/
 
 #print Turing.ListBlank.map /-
 /-- The `map` function on lists is well defined on `list_blank`s provided that the map is
@@ -482,12 +490,15 @@ def ListBlank.map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ'
 #align turing.list_blank.map Turing.ListBlank.map
 -/
 
+#print Turing.ListBlank.map_mk /-
 @[simp]
 theorem ListBlank.map_mk {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') (l : List Γ) :
     (ListBlank.mk l).map f = ListBlank.mk (l.map f) :=
   rfl
 #align turing.list_blank.map_mk Turing.ListBlank.map_mk
+-/
 
+#print Turing.ListBlank.head_map /-
 @[simp]
 theorem ListBlank.head_map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ')
     (l : ListBlank Γ) : (l.map f).headI = f l.headI :=
@@ -497,7 +508,9 @@ theorem ListBlank.head_map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedM
     rw [← list_blank.cons_head_tail l]
   exact Quotient.inductionOn' l fun a => rfl
 #align turing.list_blank.head_map Turing.ListBlank.head_map
+-/
 
+#print Turing.ListBlank.tail_map /-
 @[simp]
 theorem ListBlank.tail_map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ')
     (l : ListBlank Γ) : (l.map f).tail = l.tail.map f :=
@@ -507,7 +520,9 @@ theorem ListBlank.tail_map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedM
     rw [← list_blank.cons_head_tail l]
   exact Quotient.inductionOn' l fun a => rfl
 #align turing.list_blank.tail_map Turing.ListBlank.tail_map
+-/
 
+#print Turing.ListBlank.map_cons /-
 @[simp]
 theorem ListBlank.map_cons {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ')
     (l : ListBlank Γ) (a : Γ) : (l.cons a).map f = (l.map f).cons (f a) :=
@@ -515,7 +530,9 @@ theorem ListBlank.map_cons {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedM
   refine' (list_blank.cons_head_tail _).symm.trans _
   simp only [list_blank.head_map, list_blank.head_cons, list_blank.tail_map, list_blank.tail_cons]
 #align turing.list_blank.map_cons Turing.ListBlank.map_cons
+-/
 
+#print Turing.ListBlank.nth_map /-
 @[simp]
 theorem ListBlank.nth_map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ')
     (l : ListBlank Γ) (n : ℕ) : (l.map f).get? n = f (l.get? n) :=
@@ -525,6 +542,7 @@ theorem ListBlank.nth_map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMa
       simp only [List.get?_map, list_blank.map_mk, list_blank.nth_mk, List.getI_eq_iget_get?]
       cases l.nth n; · exact f.2.symm; · rfl)
 #align turing.list_blank.nth_map Turing.ListBlank.nth_map
+-/
 
 #print Turing.proj /-
 /-- The `i`-th projection as a pointed map. -/
@@ -534,10 +552,13 @@ def proj {ι : Type _} {Γ : ι → Type _} [∀ i, Inhabited (Γ i)] (i : ι) :
 #align turing.proj Turing.proj
 -/
 
+#print Turing.proj_map_nth /-
 theorem proj_map_nth {ι : Type _} {Γ : ι → Type _} [∀ i, Inhabited (Γ i)] (i : ι) (L n) :
     (ListBlank.map (@proj ι Γ _ i) L).get? n = L.get? n i := by rw [list_blank.nth_map] <;> rfl
 #align turing.proj_map_nth Turing.proj_map_nth
+-/
 
+#print Turing.ListBlank.map_modifyNth /-
 theorem ListBlank.map_modifyNth {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (F : PointedMap Γ Γ')
     (f : Γ → Γ) (f' : Γ' → Γ') (H : ∀ x, F (f x) = f' (F x)) (n) (L : ListBlank Γ) :
     (L.modifyNth f n).map F = (L.map F).modifyNth f' n := by
@@ -545,6 +566,7 @@ theorem ListBlank.map_modifyNth {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (F : Poi
     simp only [*, list_blank.head_map, list_blank.modify_nth, list_blank.map_cons,
       list_blank.tail_map]
 #align turing.list_blank.map_modify_nth Turing.ListBlank.map_modifyNth
+-/
 
 #print Turing.ListBlank.append /-
 /-- Append a list on the left side of a list_blank. -/
@@ -586,12 +608,15 @@ def ListBlank.bind {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (l : ListBlank Γ) (f
 #align turing.list_blank.bind Turing.ListBlank.bind
 -/
 
+#print Turing.ListBlank.bind_mk /-
 @[simp]
 theorem ListBlank.bind_mk {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (l : List Γ) (f : Γ → List Γ') (hf) :
     (ListBlank.mk l).bind f hf = ListBlank.mk (l.bind f) :=
   rfl
 #align turing.list_blank.bind_mk Turing.ListBlank.bind_mk
+-/
 
+#print Turing.ListBlank.cons_bind /-
 @[simp]
 theorem ListBlank.cons_bind {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (a : Γ) (l : ListBlank Γ)
     (f : Γ → List Γ') (hf) : (l.cons a).bind f hf = (l.bind f hf).append (f a) :=
@@ -599,6 +624,7 @@ theorem ListBlank.cons_bind {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (a : Γ) (l
     intro <;>
       simp only [list_blank.append_mk, list_blank.bind_mk, list_blank.cons_mk, List.cons_bind]
 #align turing.list_blank.cons_bind Turing.ListBlank.cons_bind
+-/
 
 #print Turing.Tape /-
 /-- The tape of a Turing machine is composed of a head element (which we imagine to be the
@@ -827,6 +853,7 @@ theorem Tape.write_self {Γ} [Inhabited Γ] : ∀ T : Tape Γ, T.write T.1 = T :
 #align turing.tape.write_self Turing.Tape.write_self
 -/
 
+#print Turing.Tape.write_nth /-
 @[simp]
 theorem Tape.write_nth {Γ} [Inhabited Γ] (b : Γ) :
     ∀ (T : Tape Γ) {i : ℤ}, (T.write b).get? i = if i = 0 then b else T.get? i
@@ -834,6 +861,7 @@ theorem Tape.write_nth {Γ} [Inhabited Γ] (b : Γ) :
   | ⟨a, L, R⟩, (n + 1 : ℕ) => rfl
   | ⟨a, L, R⟩, -[n+1] => rfl
 #align turing.tape.write_nth Turing.Tape.write_nth
+-/
 
 #print Turing.Tape.write_mk' /-
 @[simp]
@@ -851,15 +879,19 @@ def Tape.map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') (T
 #align turing.tape.map Turing.Tape.map
 -/
 
+#print Turing.Tape.map_fst /-
 @[simp]
 theorem Tape.map_fst {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') :
     ∀ T : Tape Γ, (T.map f).1 = f T.1 := by rintro ⟨⟩ <;> rfl
 #align turing.tape.map_fst Turing.Tape.map_fst
+-/
 
+#print Turing.Tape.map_write /-
 @[simp]
 theorem Tape.map_write {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') (b : Γ) :
     ∀ T : Tape Γ, (T.write b).map f = (T.map f).write (f b) := by rintro ⟨⟩ <;> rfl
 #align turing.tape.map_write Turing.Tape.map_write
+-/
 
 #print Turing.Tape.write_move_right_n /-
 @[simp]
@@ -875,28 +907,36 @@ theorem Tape.write_move_right_n {Γ} [Inhabited Γ] (f : Γ → Γ) (L R : ListB
 #align turing.tape.write_move_right_n Turing.Tape.write_move_right_n
 -/
 
+#print Turing.Tape.map_move /-
 theorem Tape.map_move {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') (T : Tape Γ) (d) :
     (T.move d).map f = (T.map f).move d := by
   cases T <;> cases d <;>
     simp only [tape.move, tape.map, list_blank.head_map, eq_self_iff_true, list_blank.map_cons,
       and_self_iff, list_blank.tail_map]
 #align turing.tape.map_move Turing.Tape.map_move
+-/
 
+#print Turing.Tape.map_mk' /-
 theorem Tape.map_mk' {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') (L R : ListBlank Γ) :
     (Tape.mk' L R).map f = Tape.mk' (L.map f) (R.map f) := by
   simp only [tape.mk', tape.map, list_blank.head_map, eq_self_iff_true, and_self_iff,
     list_blank.tail_map]
 #align turing.tape.map_mk' Turing.Tape.map_mk'
+-/
 
+#print Turing.Tape.map_mk₂ /-
 theorem Tape.map_mk₂ {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') (L R : List Γ) :
     (Tape.mk₂ L R).map f = Tape.mk₂ (L.map f) (R.map f) := by
   simp only [tape.mk₂, tape.map_mk', list_blank.map_mk]
 #align turing.tape.map_mk₂ Turing.Tape.map_mk₂
+-/
 
+#print Turing.Tape.map_mk₁ /-
 theorem Tape.map_mk₁ {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') (l : List Γ) :
     (Tape.mk₁ l).map f = Tape.mk₁ (l.map f) :=
   Tape.map_mk₂ _ _ _
 #align turing.tape.map_mk₁ Turing.Tape.map_mk₁
+-/
 
 #print Turing.eval /-
 /-- Run a state transition function `σ → option σ` "to completion". The return value is the last
@@ -1097,6 +1137,7 @@ def Respects {σ₁ σ₂} (f₁ : σ₁ → Option σ₁) (f₂ : σ₂ → Opt
 #align turing.respects Turing.Respects
 -/
 
+#print Turing.tr_reaches₁ /-
 theorem tr_reaches₁ {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H : Respects f₁ f₂ tr) {a₁ a₂}
     (aa : tr a₁ a₂) {b₁} (ab : Reaches₁ f₁ a₁ b₁) : ∃ b₂, tr b₁ b₂ ∧ Reaches₁ f₂ a₂ b₂ :=
   by
@@ -1109,7 +1150,9 @@ theorem tr_reaches₁ {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H
     rcases this with ⟨d₂, dd, cd₂⟩
     exact ⟨_, dd, ac₂.trans cd₂⟩
 #align turing.tr_reaches₁ Turing.tr_reaches₁
+-/
 
+#print Turing.tr_reaches /-
 theorem tr_reaches {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H : Respects f₁ f₂ tr) {a₁ a₂}
     (aa : tr a₁ a₂) {b₁} (ab : Reaches f₁ a₁ b₁) : ∃ b₂, tr b₁ b₂ ∧ Reaches f₂ a₂ b₂ :=
   by
@@ -1120,7 +1163,9 @@ theorem tr_reaches {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H :
       let ⟨b₂, bb, h⟩ := tr_reaches₁ H aa ab
       ⟨b₂, bb, h.to_reflTransGen⟩
 #align turing.tr_reaches Turing.tr_reaches
+-/
 
+#print Turing.tr_reaches_rev /-
 theorem tr_reaches_rev {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H : Respects f₁ f₂ tr) {a₁ a₂}
     (aa : tr a₁ a₂) {b₂} (ab : Reaches f₂ a₂ b₂) :
     ∃ c₁ c₂, Reaches f₂ b₂ c₂ ∧ tr c₁ c₂ ∧ Reaches f₁ a₁ c₁ :=
@@ -1139,7 +1184,9 @@ theorem tr_reaches_rev {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (
     · cases Option.mem_unique cd cd'
       exact ⟨_, _, de, ee, ae⟩
 #align turing.tr_reaches_rev Turing.tr_reaches_rev
+-/
 
+#print Turing.tr_eval /-
 theorem tr_eval {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H : Respects f₁ f₂ tr) {a₁ b₁ a₂}
     (aa : tr a₁ a₂) (ab : b₁ ∈ eval f₁ a₁) : ∃ b₂, tr b₁ b₂ ∧ b₂ ∈ eval f₂ a₂ :=
   by
@@ -1148,7 +1195,9 @@ theorem tr_eval {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H : Res
   refine' ⟨_, bb, mem_eval.2 ⟨ab, _⟩⟩
   have := H bb; rwa [b0] at this 
 #align turing.tr_eval Turing.tr_eval
+-/
 
+#print Turing.tr_eval_rev /-
 theorem tr_eval_rev {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H : Respects f₁ f₂ tr) {a₁ b₂ a₂}
     (aa : tr a₁ a₂) (ab : b₂ ∈ eval f₂ a₂) : ∃ b₁, tr b₁ b₂ ∧ b₁ ∈ eval f₁ a₁ :=
   by
@@ -1161,7 +1210,9 @@ theorem tr_eval_rev {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H :
   rcases trans_gen.head'_iff.1 bd with ⟨e, h, _⟩
   cases b0.symm.trans h
 #align turing.tr_eval_rev Turing.tr_eval_rev
+-/
 
+#print Turing.tr_eval_dom /-
 theorem tr_eval_dom {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H : Respects f₁ f₂ tr) {a₁ a₂}
     (aa : tr a₁ a₂) : (eval f₂ a₂).Dom ↔ (eval f₁ a₁).Dom :=
   ⟨fun h =>
@@ -1171,6 +1222,7 @@ theorem tr_eval_dom {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H :
     let ⟨b₂, tr, h, _⟩ := tr_eval H aa ⟨h, rfl⟩
     h⟩
 #align turing.tr_eval_dom Turing.tr_eval_dom
+-/
 
 #print Turing.FRespects /-
 /-- A simpler version of `respects` when the state transition relation `tr` is a function. -/
@@ -1180,18 +1232,23 @@ def FRespects {σ₁ σ₂} (f₂ : σ₂ → Option σ₂) (tr : σ₁ → σ
 #align turing.frespects Turing.FRespects
 -/
 
+#print Turing.frespects_eq /-
 theorem frespects_eq {σ₁ σ₂} {f₂ : σ₂ → Option σ₂} {tr : σ₁ → σ₂} {a₂ b₂} (h : f₂ a₂ = f₂ b₂) :
     ∀ {b₁}, FRespects f₂ tr a₂ b₁ ↔ FRespects f₂ tr b₂ b₁
   | some b₁ => reaches₁_eq h
   | none => by unfold frespects <;> rw [h]
 #align turing.frespects_eq Turing.frespects_eq
+-/
 
+#print Turing.fun_respects /-
 theorem fun_respects {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂} :
     (Respects f₁ f₂ fun a b => tr a = b) ↔ ∀ ⦃a₁⦄, FRespects f₂ tr (tr a₁) (f₁ a₁) :=
   forall_congr' fun a₁ => by
     cases f₁ a₁ <;> simp only [frespects, respects, exists_eq_left', forall_eq']
 #align turing.fun_respects Turing.fun_respects
+-/
 
+#print Turing.tr_eval' /-
 theorem tr_eval' {σ₁ σ₂} (f₁ : σ₁ → Option σ₁) (f₂ : σ₂ → Option σ₂) (tr : σ₁ → σ₂)
     (H : Respects f₁ f₂ fun a b => tr a = b) (a₁) : eval f₂ (tr a₁) = tr <$> eval f₁ a₁ :=
   Part.ext fun b₂ =>
@@ -1203,6 +1260,7 @@ theorem tr_eval' {σ₁ σ₂} (f₁ : σ₁ → Option σ₁) (f₂ : σ₂ →
       rcases tr_eval H rfl ab with ⟨_, rfl, h⟩
       rwa [bb] at h ⟩
 #align turing.tr_eval' Turing.tr_eval'
+-/
 
 /-!
 ## The TM0 model
@@ -1238,6 +1296,7 @@ parameter (Γ : Type _) [Inhabited Γ]
 -- type of tape symbols
 parameter (Λ : Type _) [Inhabited Λ]
 
+#print Turing.TM0.Stmt /-
 -- type of "labels" or TM states
 /-- A Turing machine "statement" is just a command to either move
   left or right, or write a symbol on the tape. -/
@@ -1245,6 +1304,7 @@ inductive Stmt
   | move : Dir → stmt
   | write : Γ → stmt
 #align turing.TM0.stmt Turing.TM0.Stmt
+-/
 
 #print Turing.TM0.Stmt.inhabited /-
 instance Stmt.inhabited : Inhabited stmt :=
@@ -1252,6 +1312,7 @@ instance Stmt.inhabited : Inhabited stmt :=
 #align turing.TM0.stmt.inhabited Turing.TM0.Stmt.inhabited
 -/
 
+#print Turing.TM0.Machine /-
 -- [inhabited Λ]: this is a deliberate addition, see comment
 /-- A Post-Turing machine with symbol type `Γ` and label type `Λ`
   is a function which, given the current state `q : Λ` and
@@ -1266,10 +1327,14 @@ instance Stmt.inhabited : Inhabited stmt :=
 def Machine :=
   Λ → Γ → Option (Λ × stmt)
 #align turing.TM0.machine Turing.TM0.Machine
+-/
 
+#print Turing.TM0.Machine.inhabited /-
 instance Machine.inhabited : Inhabited machine := by unfold machine <;> infer_instance
 #align turing.TM0.machine.inhabited Turing.TM0.Machine.inhabited
+-/
 
+#print Turing.TM0.Cfg /-
 /-- The configuration state of a Turing machine during operation
   consists of a label (machine state), and a tape, represented in
   the form `(a, L, R)` meaning the tape looks like `L.rev ++ [a] ++ R`
@@ -1279,6 +1344,7 @@ structure Cfg where
   q : Λ
   Tape : Tape Γ
 #align turing.TM0.cfg Turing.TM0.Cfg
+-/
 
 #print Turing.TM0.Cfg.inhabited /-
 instance Cfg.inhabited : Inhabited cfg :=
@@ -1323,6 +1389,7 @@ def eval (M : machine) (l : List Γ) : Part (ListBlank Γ) :=
 #align turing.TM0.eval Turing.TM0.eval
 -/
 
+#print Turing.TM0.Supports /-
 /-- The raw definition of a Turing machine does not require that
   `Γ` and `Λ` are finite, and in practice we will be interested
   in the infinite `Λ` case. We recover instead a notion of
@@ -1333,7 +1400,9 @@ def eval (M : machine) (l : List Γ) : Part (ListBlank Γ) :=
 def Supports (M : machine) (S : Set Λ) :=
   default ∈ S ∧ ∀ {q a q' s}, (q', s) ∈ M q a → q ∈ S → q' ∈ S
 #align turing.TM0.supports Turing.TM0.Supports
+-/
 
+#print Turing.TM0.step_supports /-
 theorem step_supports (M : machine) {S} (ss : supports M S) :
     ∀ {c c' : cfg}, c' ∈ step M c → c.q ∈ S → c'.q ∈ S
   | ⟨q, T⟩, c', h₁, h₂ =>
@@ -1341,10 +1410,13 @@ theorem step_supports (M : machine) {S} (ss : supports M S) :
     rcases Option.map_eq_some'.1 h₁ with ⟨⟨q', a⟩, h, rfl⟩
     exact ss.2 h h₂
 #align turing.TM0.step_supports Turing.TM0.step_supports
+-/
 
+#print Turing.TM0.univ_supports /-
 theorem univ_supports (M : machine) : supports M Set.univ :=
   ⟨trivial, fun q a q' s h₁ h₂ => trivial⟩
 #align turing.TM0.univ_supports Turing.TM0.univ_supports
+-/
 
 end
 
@@ -1367,11 +1439,13 @@ def Stmt.map (f : PointedMap Γ Γ') : Stmt Γ → Stmt Γ'
 #align turing.TM0.stmt.map Turing.TM0.Stmt.map
 -/
 
+#print Turing.TM0.Cfg.map /-
 /-- Map a configuration across a function, given `f : Γ → Γ'` a map of the alphabets and
 `g : Λ → Λ'` a map of the machine states. -/
 def Cfg.map (f : PointedMap Γ Γ') (g : Λ → Λ') : Cfg Γ Λ → Cfg Γ' Λ'
   | ⟨q, T⟩ => ⟨g q, T.map f⟩
 #align turing.TM0.cfg.map Turing.TM0.Cfg.map
+-/
 
 variable (M : Machine Γ Λ) (f₁ : PointedMap Γ Γ') (f₂ : PointedMap Γ' Γ) (g₁ : Λ → Λ') (g₂ : Λ' → Λ)
 
@@ -1384,6 +1458,7 @@ def Machine.map : Machine Γ' Λ'
 #align turing.TM0.machine.map Turing.TM0.Machine.map
 -/
 
+#print Turing.TM0.Machine.map_step /-
 theorem Machine.map_step {S : Set Λ} (f₂₁ : Function.RightInverse f₁ f₂)
     (g₂₁ : ∀ q ∈ S, g₂ (g₁ q) = q) :
     ∀ c : Cfg Γ Λ,
@@ -1395,11 +1470,15 @@ theorem Machine.map_step {S : Set Λ} (f₂₁ : Function.RightInverse f₁ f₂
     · simp only [step, cfg.map, Option.map_some', tape.map_move f₁]; rfl
     · simp only [step, cfg.map, Option.map_some', tape.map_write]; rfl
 #align turing.TM0.machine.map_step Turing.TM0.Machine.map_step
+-/
 
+#print Turing.TM0.map_init /-
 theorem map_init (g₁ : PointedMap Λ Λ') (l : List Γ) : (init l).map f₁ g₁ = init (l.map f₁) :=
   congr (congr_arg Cfg.mk g₁.map_pt) (Tape.map_mk₁ _ _)
 #align turing.TM0.map_init Turing.TM0.map_init
+-/
 
+#print Turing.TM0.Machine.map_respects /-
 theorem Machine.map_respects (g₁ : PointedMap Λ Λ') (g₂ : Λ' → Λ) {S} (ss : Supports M S)
     (f₂₁ : Function.RightInverse f₁ f₂) (g₂₁ : ∀ q ∈ S, g₂ (g₁ q) = q) :
     Respects (step M) (step (M.map f₁ f₂ g₁ g₂)) fun a b => a.q ∈ S ∧ Cfg.map f₁ g₁ a = b
@@ -1409,6 +1488,7 @@ theorem Machine.map_respects (g₁ : PointedMap Λ Λ') (g₂ : Λ' → Λ) {S}
     · refine' ⟨_, ⟨step_supports M ss e cs, rfl⟩, trans_gen.single _⟩
       rw [← M.map_step f₁ f₂ g₁ g₂ f₂₁ g₂₁ _ cs, e]; exact rfl
 #align turing.TM0.machine.map_respects Turing.TM0.Machine.map_respects
+-/
 
 end
 
@@ -1456,6 +1536,7 @@ parameter (Λ : Type _)
 -- Type of function labels
 parameter (σ : Type _)
 
+#print Turing.TM1.Stmt /-
 -- Type of variable settings
 /-- The TM1 model is a simplification and extension of TM0
   (Post-Turing model) in the direction of Wang B-machines. The machine's
@@ -1477,12 +1558,15 @@ inductive Stmt
   | goto : (Γ → σ → Λ) → stmt
   | halt : stmt
 #align turing.TM1.stmt Turing.TM1.Stmt
+-/
 
 open Stmt
 
+#print Turing.TM1.Stmt.inhabited /-
 instance Stmt.inhabited : Inhabited stmt :=
   ⟨halt⟩
 #align turing.TM1.stmt.inhabited Turing.TM1.Stmt.inhabited
+-/
 
 #print Turing.TM1.Cfg /-
 /-- The configuration of a TM1 machine is given by the currently
@@ -1522,6 +1606,7 @@ def step (M : Λ → stmt) : cfg → Option cfg
 #align turing.TM1.step Turing.TM1.step
 -/
 
+#print Turing.TM1.SupportsStmt /-
 /-- A set `S` of labels supports the statement `q` if all the `goto`
   statements in `q` refer only to other functions in `S`. -/
 def SupportsStmt (S : Finset Λ) : stmt → Prop
@@ -1532,9 +1617,11 @@ def SupportsStmt (S : Finset Λ) : stmt → Prop
   | goto l => ∀ a v, l a v ∈ S
   | halt => True
 #align turing.TM1.supports_stmt Turing.TM1.SupportsStmt
+-/
 
 open scoped Classical
 
+#print Turing.TM1.stmts₁ /-
 /-- The subterm closure of a statement. -/
 noncomputable def stmts₁ : stmt → Finset stmt
   | Q@(move d q) => insert Q (stmts₁ q)
@@ -1543,11 +1630,15 @@ noncomputable def stmts₁ : stmt → Finset stmt
   | Q@(branch p q₁ q₂) => insert Q (stmts₁ q₁ ∪ stmts₁ q₂)
   | Q => {Q}
 #align turing.TM1.stmts₁ Turing.TM1.stmts₁
+-/
 
+#print Turing.TM1.stmts₁_self /-
 theorem stmts₁_self {q} : q ∈ stmts₁ q := by
   cases q <;> apply_rules [Finset.mem_insert_self, Finset.mem_singleton_self]
 #align turing.TM1.stmts₁_self Turing.TM1.stmts₁_self
+-/
 
+#print Turing.TM1.stmts₁_trans /-
 theorem stmts₁_trans {q₁ q₂} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ ⊆ stmts₁ q₂ :=
   by
   intro h₁₂ q₀ h₀₁
@@ -1565,7 +1656,9 @@ theorem stmts₁_trans {q₁ q₂} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ 
   case goto l => subst h₁₂; exact h₀₁
   case halt => subst h₁₂; exact h₀₁
 #align turing.TM1.stmts₁_trans Turing.TM1.stmts₁_trans
+-/
 
+#print Turing.TM1.stmts₁_supportsStmt_mono /-
 theorem stmts₁_supportsStmt_mono {S q₁ q₂} (h : q₁ ∈ stmts₁ q₂) (hs : supports_stmt S q₂) :
     supports_stmt S q₁ :=
   by
@@ -1577,36 +1670,46 @@ theorem stmts₁_supportsStmt_mono {S q₁ q₂} (h : q₁ ∈ stmts₁ q₂) (h
   case goto l => subst h; exact hs
   case halt => subst h; trivial
 #align turing.TM1.stmts₁_supports_stmt_mono Turing.TM1.stmts₁_supportsStmt_mono
+-/
 
+#print Turing.TM1.stmts /-
 /-- The set of all statements in a turing machine, plus one extra value `none` representing the
 halt state. This is used in the TM1 to TM0 reduction. -/
 noncomputable def stmts (M : Λ → stmt) (S : Finset Λ) : Finset (Option stmt) :=
   (S.biUnion fun q => stmts₁ (M q)).insertNone
 #align turing.TM1.stmts Turing.TM1.stmts
+-/
 
+#print Turing.TM1.stmts_trans /-
 theorem stmts_trans {M : Λ → stmt} {S q₁ q₂} (h₁ : q₁ ∈ stmts₁ q₂) :
     some q₂ ∈ stmts M S → some q₁ ∈ stmts M S := by
   simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, forall_eq',
       exists_imp] <;>
     exact fun l ls h₂ => ⟨_, ls, stmts₁_trans h₂ h₁⟩
 #align turing.TM1.stmts_trans Turing.TM1.stmts_trans
+-/
 
 variable [Inhabited Λ]
 
+#print Turing.TM1.Supports /-
 /-- A set `S` of labels supports machine `M` if all the `goto`
   statements in the functions in `S` refer only to other functions
   in `S`. -/
 def Supports (M : Λ → stmt) (S : Finset Λ) :=
   default ∈ S ∧ ∀ q ∈ S, supports_stmt S (M q)
 #align turing.TM1.supports Turing.TM1.Supports
+-/
 
+#print Turing.TM1.stmts_supportsStmt /-
 theorem stmts_supportsStmt {M : Λ → stmt} {S q} (ss : supports M S) :
     some q ∈ stmts M S → supports_stmt S q := by
   simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, forall_eq',
       exists_imp] <;>
     exact fun l ls h => stmts₁_supports_stmt_mono h (ss.2 _ ls)
 #align turing.TM1.stmts_supports_stmt Turing.TM1.stmts_supportsStmt
+-/
 
+#print Turing.TM1.step_supports /-
 theorem step_supports (M : Λ → stmt) {S} (ss : supports M S) :
     ∀ {c c' : cfg}, c' ∈ step M c → c.l ∈ S.insertNone → c'.l ∈ S.insertNone
   | ⟨some l₁, v, T⟩, c', h₁, h₂ =>
@@ -1622,6 +1725,7 @@ theorem step_supports (M : Λ → stmt) {S} (ss : supports M S) :
     case goto => exact Finset.some_mem_insertNone.2 (hs _ _)
     case halt => apply Multiset.mem_cons_self
 #align turing.TM1.step_supports Turing.TM1.step_supports
+-/
 
 variable [Inhabited σ]
 
@@ -1674,19 +1778,15 @@ parameter {Λ : Type _} [Inhabited Λ]
 
 parameter {σ : Type _} [Inhabited σ]
 
--- mathport name: exprstmt₁
 local notation "stmt₁" => TM1.Stmt Γ Λ σ
 
--- mathport name: exprcfg₁
 local notation "cfg₁" => TM1.Cfg Γ Λ σ
 
--- mathport name: exprstmt₀
 local notation "stmt₀" => TM0.Stmt Γ
 
 parameter (M : Λ → stmt₁)
 
-include M
-
+#print Turing.TM1to0.Λ' /-
 -- [inhabited Λ] [inhabited σ] (M : Λ → stmt₁): We need the M assumption
 -- because of the inhabited instance, but we could avoid the inhabited instances on Λ and σ here.
 -- But they are parameters so we cannot easily skip them for just this definition.
@@ -1699,12 +1799,14 @@ reachable. -/
 def Λ' :=
   Option stmt₁ × σ
 #align turing.TM1to0.Λ' Turing.TM1to0.Λ'
+-/
 
 instance : Inhabited Λ' :=
   ⟨(some (M default), default)⟩
 
 open TM0.Stmt
 
+#print Turing.TM1to0.trAux /-
 /-- The core TM1 → TM0 translation function. Here `s` is the current value on the tape, and the
 `stmt₁` is the TM1 statement to translate, with local state `v : σ`. We evaluate all regular
 instructions recursively until we reach either a `move` or `write` command, or a `goto`; in the
@@ -1717,20 +1819,24 @@ def trAux (s : Γ) : stmt₁ → σ → Λ' × stmt₀
   | TM1.stmt.goto l, v => ((some (M (l s v)), v), write s)
   | TM1.stmt.halt, v => ((none, v), write s)
 #align turing.TM1to0.tr_aux Turing.TM1to0.trAux
+-/
 
--- mathport name: exprcfg₀
 local notation "cfg₀" => TM0.Cfg Γ Λ'
 
+#print Turing.TM1to0.tr /-
 /-- The translated TM0 machine (given the TM1 machine input). -/
 def tr : TM0.Machine Γ Λ'
   | (none, v), s => none
   | (some q, v), s => some (tr_aux s q v)
 #align turing.TM1to0.tr Turing.TM1to0.tr
+-/
 
+#print Turing.TM1to0.trCfg /-
 /-- Translate configurations from TM1 to TM0. -/
 def trCfg : cfg₁ → cfg₀
   | ⟨l, v, T⟩ => ⟨(l.map M, v), T⟩
 #align turing.TM1to0.tr_cfg Turing.TM1to0.trCfg
+-/
 
 #print Turing.TM1to0.tr_respects /-
 theorem tr_respects : Respects (TM1.step M) (TM0.step tr) fun c₁ c₂ => tr_cfg c₁ = c₂ :=
@@ -1750,26 +1856,31 @@ theorem tr_respects : Respects (TM1.step M) (TM0.step tr) fun c₁ c₂ => tr_cf
 #align turing.TM1to0.tr_respects Turing.TM1to0.tr_respects
 -/
 
+#print Turing.TM1to0.tr_eval /-
 theorem tr_eval (l : List Γ) : TM0.eval tr l = TM1.eval M l :=
   (congr_arg _ (tr_eval' _ _ _ tr_respects ⟨some _, _, _⟩)).trans
     (by
       rw [Part.map_eq_map, Part.map_map, TM1.eval]
       congr with ⟨⟩; rfl)
 #align turing.TM1to0.tr_eval Turing.TM1to0.tr_eval
+-/
 
 variable [Fintype σ]
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Turing.TM1to0.trStmts /-
 /-- Given a finite set of accessible `Λ` machine states, there is a finite set of accessible
 machine states in the target (even though the type `Λ'` is infinite). -/
 noncomputable def trStmts (S : Finset Λ) : Finset Λ' :=
   TM1.stmts M S ×ˢ Finset.univ
 #align turing.TM1to0.tr_stmts Turing.TM1to0.trStmts
+-/
 
 open scoped Classical
 
 attribute [local simp] TM1.stmts₁_self
 
+#print Turing.TM1to0.tr_supports /-
 theorem tr_supports {S : Finset Λ} (ss : TM1.Supports M S) : TM0.Supports tr ↑(tr_stmts S) :=
   ⟨Finset.mem_product.2
       ⟨Finset.some_mem_insertNone.2 (Finset.mem_biUnion.2 ⟨_, ss.1, TM1.stmts₁_self⟩),
@@ -1808,6 +1919,7 @@ theorem tr_supports {S : Finset Λ} (ss : TM1.Supports M S) : TM0.Supports tr 
       exact Finset.some_mem_insertNone.2 (Finset.mem_biUnion.2 ⟨_, hs _ _, TM1.stmts₁_self⟩)
     case halt => cases h₁⟩
 #align turing.TM1to0.tr_supports Turing.TM1to0.tr_supports
+-/
 
 end
 
@@ -1867,27 +1979,26 @@ parameter {Λ : Type _} [Inhabited Λ]
 
 parameter {σ : Type _} [Inhabited σ]
 
--- mathport name: exprstmt₁
 local notation "stmt₁" => Stmt Γ Λ σ
 
--- mathport name: exprcfg₁
 local notation "cfg₁" => Cfg Γ Λ σ
 
+#print Turing.TM1to1.Λ' /-
 /-- The configuration state of the TM. -/
 inductive Λ' : Type max u_1 u_2 u_3
   | Normal : Λ → Λ'
   | write : Γ → stmt₁ → Λ'
 #align turing.TM1to1.Λ' Turing.TM1to1.Λ'
+-/
 
 instance : Inhabited Λ' :=
   ⟨Λ'.normal default⟩
 
--- mathport name: exprstmt'
 local notation "stmt'" => Stmt Bool Λ' σ
 
--- mathport name: exprcfg'
 local notation "cfg'" => Cfg Bool Λ' σ
 
+#print Turing.TM1to1.readAux /-
 /-- Read a vector of length `n` from the tape. -/
 def readAux : ∀ n, (Vector Bool n → stmt') → stmt'
   | 0, f => f Vector.nil
@@ -1895,26 +2006,34 @@ def readAux : ∀ n, (Vector Bool n → stmt') → stmt'
     Stmt.branch (fun a s => a) (Stmt.move Dir.right <| read_aux i fun v => f (true ::ᵥ v))
       (Stmt.move Dir.right <| read_aux i fun v => f (false ::ᵥ v))
 #align turing.TM1to1.read_aux Turing.TM1to1.readAux
+-/
 
 parameter {n : ℕ} (enc : Γ → Vector Bool n) (dec : Vector Bool n → Γ)
 
+#print Turing.TM1to1.move /-
 /-- A move left or right corresponds to `n` moves across the super-cell. -/
 def move (d : Dir) (q : stmt') : stmt' :=
   (Stmt.move d^[n]) q
 #align turing.TM1to1.move Turing.TM1to1.move
+-/
 
+#print Turing.TM1to1.read /-
 /-- To read a symbol from the tape, we use `read_aux` to traverse the symbol,
 then return to the original position with `n` moves to the left. -/
 def read (f : Γ → stmt') : stmt' :=
   read_aux n fun v => move Dir.left <| f (dec v)
 #align turing.TM1to1.read Turing.TM1to1.read
+-/
 
+#print Turing.TM1to1.write /-
 /-- Write a list of bools on the tape. -/
 def write : List Bool → stmt' → stmt'
   | [], q => q
   | a :: l, q => (Stmt.write fun _ _ => a) <| Stmt.move Dir.right <| write l q
 #align turing.TM1to1.write Turing.TM1to1.write
+-/
 
+#print Turing.TM1to1.trNormal /-
 /-- Translate a normal instruction. For the `write` command, we use a `goto` indirection so that
 we can access the current value of the tape. -/
 def trNormal : stmt₁ → stmt'
@@ -1926,7 +2045,9 @@ def trNormal : stmt₁ → stmt'
   | stmt.goto l => read fun a => Stmt.goto fun _ s => Λ'.normal (l a s)
   | stmt.halt => Stmt.halt
 #align turing.TM1to1.tr_normal Turing.TM1to1.trNormal
+-/
 
+#print Turing.TM1to1.stepAux_move /-
 theorem stepAux_move (d q v T) : stepAux (move d q) v T = stepAux q v ((Tape.move d^[n]) T) :=
   by
   suffices : ∀ i, step_aux ((stmt.move d^[i]) q) v T = step_aux q v ((tape.move d^[i]) T)
@@ -1934,17 +2055,23 @@ theorem stepAux_move (d q v T) : stepAux (move d q) v T = stepAux q v ((Tape.mov
   intro; induction' i with i IH generalizing T; · rfl
   rw [iterate_succ', step_aux, IH, iterate_succ]
 #align turing.TM1to1.step_aux_move Turing.TM1to1.stepAux_move
+-/
 
+#print Turing.TM1to1.supportsStmt_move /-
 theorem supportsStmt_move {S d q} : SupportsStmt S (move d q) = SupportsStmt S q :=
   by
   suffices ∀ {i}, SupportsStmt S ((Stmt.move d^[i]) q) = _ from this
   intro <;> induction i generalizing q <;> simp only [*, iterate] <;> rfl
 #align turing.TM1to1.supports_stmt_move Turing.TM1to1.supportsStmt_move
+-/
 
+#print Turing.TM1to1.supportsStmt_write /-
 theorem supportsStmt_write {S l q} : SupportsStmt S (write l q) = SupportsStmt S q := by
   induction' l with a l IH <;> simp only [write, supports_stmt, *]
 #align turing.TM1to1.supports_stmt_write Turing.TM1to1.supportsStmt_write
+-/
 
+#print Turing.TM1to1.supportsStmt_read /-
 theorem supportsStmt_read {S} :
     ∀ {f : Γ → stmt'}, (∀ a, SupportsStmt S (f a)) → SupportsStmt S (read f) :=
   suffices
@@ -1954,6 +2081,7 @@ theorem supportsStmt_read {S} :
   induction' i with i IH; · exact hf _
   constructor <;> apply IH <;> intro <;> apply hf
 #align turing.TM1to1.supports_stmt_read Turing.TM1to1.supportsStmt_read
+-/
 
 parameter (enc0 : enc default = Vector.replicate n false)
 
@@ -1961,8 +2089,6 @@ section
 
 parameter {enc}
 
-include enc0
-
 #print Turing.TM1to1.trTape' /-
 /-- The low level tape corresponding to the given tape over alphabet `Γ`. -/
 def trTape' (L R : ListBlank Γ) : Tape Bool := by
@@ -1990,21 +2116,23 @@ end
 
 parameter (M : Λ → stmt₁)
 
+#print Turing.TM1to1.tr /-
 /-- The top level program. -/
 def tr : Λ' → stmt'
   | Λ'.normal l => tr_normal (M l)
   | Λ'.write a q => write (enc a).toList <| move Dir.left <| tr_normal q
 #align turing.TM1to1.tr Turing.TM1to1.tr
+-/
 
+#print Turing.TM1to1.trCfg /-
 /-- The machine configuration translation. -/
 def trCfg : cfg₁ → cfg'
   | ⟨l, v, T⟩ => ⟨l.map Λ'.normal, v, tr_tape T⟩
 #align turing.TM1to1.tr_cfg Turing.TM1to1.trCfg
+-/
 
 parameter {enc}
 
-include enc0
-
 #print Turing.TM1to1.trTape'_move_left /-
 theorem trTape'_move_left (L R) :
     (Tape.move Dir.left^[n]) (tr_tape' L R) = tr_tape' L.tail (R.cons L.headI) :=
@@ -2040,6 +2168,7 @@ theorem trTape'_move_right (L R) :
 #align turing.TM1to1.tr_tape'_move_right Turing.TM1to1.trTape'_move_right
 -/
 
+#print Turing.TM1to1.stepAux_write /-
 theorem stepAux_write (q v a b L R) :
     stepAux (write (enc a).toList q) v (tr_tape' L (ListBlank.cons b R)) =
       stepAux q v (tr_tape' (ListBlank.cons a L) R) :=
@@ -2059,11 +2188,11 @@ theorem stepAux_write (q v a b L R) :
   simp only [list_blank.head_cons, list_blank.tail_cons, list_blank.append, tape.move_right_mk',
     tape.write_mk']
 #align turing.TM1to1.step_aux_write Turing.TM1to1.stepAux_write
+-/
 
 parameter (encdec : ∀ a, dec (enc a) = a)
 
-include encdec
-
+#print Turing.TM1to1.stepAux_read /-
 theorem stepAux_read (f v L R) :
     stepAux (read f) v (tr_tape' L R) = stepAux (f R.headI) v (tr_tape' L R) :=
   by
@@ -2090,7 +2219,9 @@ theorem stepAux_read (f v L R) :
   · dsimp [read_aux, step_aux]; simp; cases a <;> rfl
   rw [← list_blank.append, IH]; rfl
 #align turing.TM1to1.step_aux_read Turing.TM1to1.stepAux_read
+-/
 
+#print Turing.TM1to1.tr_respects /-
 theorem tr_respects : Respects (step M) (step tr) fun c₁ c₂ => tr_cfg c₁ = c₂ :=
   fun_respects.2 fun ⟨l₁, v, T⟩ =>
     by
@@ -2134,13 +2265,13 @@ theorem tr_respects : Respects (step M) (step tr) fun c₁ c₂ => tr_cfg c₁ =
         tr_tape'_move_right enc0, tr_tape_mk']
       apply refl_trans_gen.refl
 #align turing.TM1to1.tr_respects Turing.TM1to1.tr_respects
-
-omit enc0 encdec
+-/
 
 open scoped Classical
 
 parameter [Fintype Γ]
 
+#print Turing.TM1to1.writes /-
 /-- The set of accessible `Λ'.write` machine states. -/
 noncomputable def writes : stmt₁ → Finset Λ'
   | stmt.move d q => writes q
@@ -2150,13 +2281,17 @@ noncomputable def writes : stmt₁ → Finset Λ'
   | stmt.goto l => ∅
   | stmt.halt => ∅
 #align turing.TM1to1.writes Turing.TM1to1.writes
+-/
 
+#print Turing.TM1to1.trSupp /-
 /-- The set of accessible machine states, assuming that the input machine is supported on `S`,
 are the normal states embedded from `S`, plus all write states accessible from these states. -/
 noncomputable def trSupp (S : Finset Λ) : Finset Λ' :=
   S.biUnion fun l => insert (Λ'.normal l) (writes (M l))
 #align turing.TM1to1.tr_supp Turing.TM1to1.trSupp
+-/
 
+#print Turing.TM1to1.tr_supports /-
 theorem tr_supports {S} (ss : Supports M S) : Supports tr (tr_supp S) :=
   ⟨Finset.mem_biUnion.2 ⟨_, ss.1, Finset.mem_insert_self _ _⟩, fun q h =>
     by
@@ -2204,6 +2339,7 @@ theorem tr_supports {S} (ss : Supports M S) : Supports tr (tr_supp S) :=
       refine' ⟨_, fun _ => False.elim⟩
       simp only [supports_stmt, supports_stmt_move, tr_normal]⟩
 #align turing.TM1to1.tr_supports Turing.TM1to1.tr_supports
+-/
 
 end
 
@@ -2232,6 +2368,7 @@ parameter {Γ : Type _} [Inhabited Γ]
 
 parameter {Λ : Type _} [Inhabited Λ]
 
+#print Turing.TM0to1.Λ' /-
 /-- The machine states for a TM1 emulating a TM0 machine. States of the TM0 machine are embedded
 as `normal q` states, but the actual operation is split into two parts, a jump to `act s q`
 followed by the action and a jump to the next `normal` state.  -/
@@ -2239,23 +2376,22 @@ inductive Λ'
   | Normal : Λ → Λ'
   | act : TM0.Stmt Γ → Λ → Λ'
 #align turing.TM0to1.Λ' Turing.TM0to1.Λ'
+-/
 
 instance : Inhabited Λ' :=
   ⟨Λ'.normal default⟩
 
--- mathport name: exprcfg₀
 local notation "cfg₀" => TM0.Cfg Γ Λ
 
--- mathport name: exprstmt₁
 local notation "stmt₁" => TM1.Stmt Γ Λ' Unit
 
--- mathport name: exprcfg₁
 local notation "cfg₁" => TM1.Cfg Γ Λ' Unit
 
 parameter (M : TM0.Machine Γ Λ)
 
 open TM1.Stmt
 
+#print Turing.TM0to1.tr /-
 /-- The program.  -/
 def tr : Λ' → stmt₁
   | Λ'.normal q =>
@@ -2270,6 +2406,7 @@ def tr : Λ' → stmt₁
   | Λ'.act (TM0.stmt.move d) q => move d <| goto fun _ _ => Λ'.normal q
   | Λ'.act (TM0.stmt.write a) q => (write fun _ _ => a) <| goto fun _ _ => Λ'.normal q
 #align turing.TM0to1.tr Turing.TM0to1.tr
+-/
 
 #print Turing.TM0to1.trCfg /-
 /-- The configuration translation. -/
@@ -2347,6 +2484,7 @@ parameter (Λ : Type _)
 -- Type of function labels
 parameter (σ : Type _)
 
+#print Turing.TM2.Stmt /-
 -- Type of variable settings
 /-- The TM2 model removes the tape entirely from the TM1 model,
   replacing it with an arbitrary (finite) collection of stacks.
@@ -2363,13 +2501,17 @@ inductive Stmt
   | goto : (σ → Λ) → stmt
   | halt : stmt
 #align turing.TM2.stmt Turing.TM2.Stmt
+-/
 
 open Stmt
 
+#print Turing.TM2.Stmt.inhabited /-
 instance Stmt.inhabited : Inhabited stmt :=
   ⟨halt⟩
 #align turing.TM2.stmt.inhabited Turing.TM2.Stmt.inhabited
+-/
 
+#print Turing.TM2.Cfg /-
 /-- A configuration in the TM2 model is a label (or `none` for the halt state), the state of
 local variables, and the stacks. (Note that the stacks are not `list_blank`s, they have a definite
 size.) -/
@@ -2378,10 +2520,13 @@ structure Cfg where
   var : σ
   stk : ∀ k, List (Γ k)
 #align turing.TM2.cfg Turing.TM2.Cfg
+-/
 
+#print Turing.TM2.Cfg.inhabited /-
 instance Cfg.inhabited [Inhabited σ] : Inhabited cfg :=
   ⟨⟨default, default, default⟩⟩
 #align turing.TM2.cfg.inhabited Turing.TM2.Cfg.inhabited
+-/
 
 parameter {Γ Λ σ K}
 
@@ -2415,6 +2560,7 @@ def Reaches (M : Λ → stmt) : cfg → cfg → Prop :=
 #align turing.TM2.reaches Turing.TM2.Reaches
 -/
 
+#print Turing.TM2.SupportsStmt /-
 /-- Given a set `S` of states, `support_stmt S q` means that `q` only jumps to states in `S`. -/
 def SupportsStmt (S : Finset Λ) : stmt → Prop
   | push k f q => supports_stmt q
@@ -2425,9 +2571,11 @@ def SupportsStmt (S : Finset Λ) : stmt → Prop
   | goto l => ∀ v, l v ∈ S
   | halt => True
 #align turing.TM2.supports_stmt Turing.TM2.SupportsStmt
+-/
 
 open scoped Classical
 
+#print Turing.TM2.stmts₁ /-
 /-- The set of subtree statements in a statement. -/
 noncomputable def stmts₁ : stmt → Finset stmt
   | Q@(push k f q) => insert Q (stmts₁ q)
@@ -2438,11 +2586,15 @@ noncomputable def stmts₁ : stmt → Finset stmt
   | Q@(goto l) => {Q}
   | Q@halt => {Q}
 #align turing.TM2.stmts₁ Turing.TM2.stmts₁
+-/
 
+#print Turing.TM2.stmts₁_self /-
 theorem stmts₁_self {q} : q ∈ stmts₁ q := by
   cases q <;> apply_rules [Finset.mem_insert_self, Finset.mem_singleton_self]
 #align turing.TM2.stmts₁_self Turing.TM2.stmts₁_self
+-/
 
+#print Turing.TM2.stmts₁_trans /-
 theorem stmts₁_trans {q₁ q₂} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ ⊆ stmts₁ q₂ :=
   by
   intro h₁₂ q₀ h₀₁
@@ -2460,7 +2612,9 @@ theorem stmts₁_trans {q₁ q₂} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ 
   case goto l => subst h₁₂; exact h₀₁
   case halt => subst h₁₂; exact h₀₁
 #align turing.TM2.stmts₁_trans Turing.TM2.stmts₁_trans
+-/
 
+#print Turing.TM2.stmts₁_supportsStmt_mono /-
 theorem stmts₁_supportsStmt_mono {S q₁ q₂} (h : q₁ ∈ stmts₁ q₂) (hs : supports_stmt S q₂) :
     supports_stmt S q₁ :=
   by
@@ -2472,34 +2626,44 @@ theorem stmts₁_supportsStmt_mono {S q₁ q₂} (h : q₁ ∈ stmts₁ q₂) (h
   case goto l => subst h; exact hs
   case halt => subst h; trivial
 #align turing.TM2.stmts₁_supports_stmt_mono Turing.TM2.stmts₁_supportsStmt_mono
+-/
 
+#print Turing.TM2.stmts /-
 /-- The set of statements accessible from initial set `S` of labels. -/
 noncomputable def stmts (M : Λ → stmt) (S : Finset Λ) : Finset (Option stmt) :=
   (S.biUnion fun q => stmts₁ (M q)).insertNone
 #align turing.TM2.stmts Turing.TM2.stmts
+-/
 
+#print Turing.TM2.stmts_trans /-
 theorem stmts_trans {M : Λ → stmt} {S q₁ q₂} (h₁ : q₁ ∈ stmts₁ q₂) :
     some q₂ ∈ stmts M S → some q₁ ∈ stmts M S := by
   simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, forall_eq',
       exists_imp] <;>
     exact fun l ls h₂ => ⟨_, ls, stmts₁_trans h₂ h₁⟩
 #align turing.TM2.stmts_trans Turing.TM2.stmts_trans
+-/
 
 variable [Inhabited Λ]
 
+#print Turing.TM2.Supports /-
 /-- Given a TM2 machine `M` and a set `S` of states, `supports M S` means that all states in
 `S` jump only to other states in `S`. -/
 def Supports (M : Λ → stmt) (S : Finset Λ) :=
   default ∈ S ∧ ∀ q ∈ S, supports_stmt S (M q)
 #align turing.TM2.supports Turing.TM2.Supports
+-/
 
+#print Turing.TM2.stmts_supportsStmt /-
 theorem stmts_supportsStmt {M : Λ → stmt} {S q} (ss : supports M S) :
     some q ∈ stmts M S → supports_stmt S q := by
   simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, forall_eq',
       exists_imp] <;>
     exact fun l ls h => stmts₁_supports_stmt_mono h (ss.2 _ ls)
 #align turing.TM2.stmts_supports_stmt Turing.TM2.stmts_supportsStmt
+-/
 
+#print Turing.TM2.step_supports /-
 theorem step_supports (M : Λ → stmt) {S} (ss : supports M S) :
     ∀ {c c' : cfg}, c' ∈ step M c → c.l ∈ S.insertNone → c'.l ∈ S.insertNone
   | ⟨some l₁, v, T⟩, c', h₁, h₂ =>
@@ -2515,6 +2679,7 @@ theorem step_supports (M : Λ → stmt) {S} (ss : supports M S) :
     case goto => exact Finset.some_mem_insertNone.2 (hs _)
     case halt => apply Multiset.mem_cons_self
 #align turing.TM2.step_supports Turing.TM2.step_supports
+-/
 
 variable [Inhabited σ]
 
@@ -2577,6 +2742,7 @@ steps to run when emulated in TM1, where `m` is the length of the input.
 
 namespace TM2to1
 
+#print Turing.TM2to1.stk_nth_val /-
 -- A displaced lemma proved in unnecessary generality
 theorem stk_nth_val {K : Type _} {Γ : K → Type _} {L : ListBlank (∀ k, Option (Γ k))} {k S} (n)
     (hL : ListBlank.map (proj k) L = ListBlank.mk (List.map some S).reverse) :
@@ -2586,6 +2752,7 @@ theorem stk_nth_val {K : Type _} {Γ : K → Type _} {L : ListBlank (∀ k, Opti
     List.get?_map]
   cases S.reverse.nth n <;> rfl
 #align turing.TM2to1.stk_nth_val Turing.TM2to1.stk_nth_val
+-/
 
 section
 
@@ -2597,12 +2764,11 @@ parameter {Λ : Type _} [Inhabited Λ]
 
 parameter {σ : Type _} [Inhabited σ]
 
--- mathport name: exprstmt₂
 local notation "stmt₂" => TM2.Stmt Γ Λ σ
 
--- mathport name: exprcfg₂
 local notation "cfg₂" => TM2.Cfg Γ Λ σ
 
+#print Turing.TM2to1.Γ' /-
 -- [decidable_eq K]: Because K is a parameter, we cannot easily skip
 -- the decidable_eq assumption, and this is a local definition anyway so it's not important.
 /-- The alphabet of the TM2 simulator on TM1 is a marker for the stack bottom,
@@ -2611,10 +2777,13 @@ plus a vector of stack elements for each stack, or none if the stack does not ex
 def Γ' :=
   Bool × ∀ k, Option (Γ k)
 #align turing.TM2to1.Γ' Turing.TM2to1.Γ'
+-/
 
+#print Turing.TM2to1.Γ'.inhabited /-
 instance Γ'.inhabited : Inhabited Γ' :=
   ⟨⟨false, fun _ => none⟩⟩
 #align turing.TM2to1.Γ'.inhabited Turing.TM2to1.Γ'.inhabited
+-/
 
 #print Turing.TM2to1.Γ'.fintype /-
 instance Γ'.fintype [Fintype K] [∀ k, Fintype (Γ k)] : Fintype Γ' :=
@@ -2622,19 +2791,24 @@ instance Γ'.fintype [Fintype K] [∀ k, Fintype (Γ k)] : Fintype Γ' :=
 #align turing.TM2to1.Γ'.fintype Turing.TM2to1.Γ'.fintype
 -/
 
+#print Turing.TM2to1.addBottom /-
 /-- The bottom marker is fixed throughout the calculation, so we use the `add_bottom` function
 to express the program state in terms of a tape with only the stacks themselves. -/
 def addBottom (L : ListBlank (∀ k, Option (Γ k))) : ListBlank Γ' :=
   ListBlank.cons (true, L.headI) (L.tail.map ⟨Prod.mk false, rfl⟩)
 #align turing.TM2to1.add_bottom Turing.TM2to1.addBottom
+-/
 
+#print Turing.TM2to1.addBottom_map /-
 theorem addBottom_map (L) : (add_bottom L).map ⟨Prod.snd, rfl⟩ = L :=
   by
   simp only [add_bottom, list_blank.map_cons] <;> convert list_blank.cons_head_tail _
   generalize list_blank.tail L = L'
   refine' L'.induction_on fun l => _; simp
 #align turing.TM2to1.add_bottom_map Turing.TM2to1.addBottom_map
+-/
 
+#print Turing.TM2to1.addBottom_modifyNth /-
 theorem addBottom_modifyNth (f : (∀ k, Option (Γ k)) → ∀ k, Option (Γ k)) (L n) :
     (add_bottom L).modifyNth (fun a => (a.1, f a.2)) n = add_bottom (L.modifyNth f n) :=
   by
@@ -2642,22 +2816,30 @@ theorem addBottom_modifyNth (f : (∀ k, Option (Γ k)) → ∀ k, Option (Γ k)
     simp only [add_bottom, list_blank.head_cons, list_blank.modify_nth, list_blank.tail_cons]
   congr; symm; apply list_blank.map_modify_nth; intro; rfl
 #align turing.TM2to1.add_bottom_modify_nth Turing.TM2to1.addBottom_modifyNth
+-/
 
+#print Turing.TM2to1.addBottom_nth_snd /-
 theorem addBottom_nth_snd (L n) : ((add_bottom L).get? n).2 = L.get? n := by
   conv =>
       rhs
       rw [← add_bottom_map L, list_blank.nth_map] <;>
     rfl
 #align turing.TM2to1.add_bottom_nth_snd Turing.TM2to1.addBottom_nth_snd
+-/
 
+#print Turing.TM2to1.addBottom_nth_succ_fst /-
 theorem addBottom_nth_succ_fst (L n) : ((add_bottom L).get? (n + 1)).1 = false := by
   rw [list_blank.nth_succ, add_bottom, list_blank.tail_cons, list_blank.nth_map] <;> rfl
 #align turing.TM2to1.add_bottom_nth_succ_fst Turing.TM2to1.addBottom_nth_succ_fst
+-/
 
+#print Turing.TM2to1.addBottom_head_fst /-
 theorem addBottom_head_fst (L) : (add_bottom L).headI.1 = true := by
   rw [add_bottom, list_blank.head_cons] <;> rfl
 #align turing.TM2to1.add_bottom_head_fst Turing.TM2to1.addBottom_head_fst
+-/
 
+#print Turing.TM2to1.StAct /-
 /-- A stack action is a command that interacts with the top of a stack. Our default position
 is at the bottom of all the stacks, so we have to hold on to this action while going to the end
 to modify the stack. -/
@@ -2666,15 +2848,19 @@ inductive StAct (k : K)
   | peek : (σ → Option (Γ k) → σ) → st_act
   | pop : (σ → Option (Γ k) → σ) → st_act
 #align turing.TM2to1.st_act Turing.TM2to1.StAct
+-/
 
+#print Turing.TM2to1.StAct.inhabited /-
 instance StAct.inhabited {k} : Inhabited (st_act k) :=
   ⟨st_act.peek fun s _ => s⟩
 #align turing.TM2to1.st_act.inhabited Turing.TM2to1.StAct.inhabited
+-/
 
 section
 
 open StAct
 
+#print Turing.TM2to1.stRun /-
 -- [inhabited Λ]: as this is a local definition it is more trouble than
 -- it is worth to omit the typeclass assumption without breaking the parameters
 /-- The TM2 statement corresponding to a stack action. -/
@@ -2684,21 +2870,27 @@ def stRun {k : K} : st_act k → stmt₂ → stmt₂
   | peek f => TM2.Stmt.peek k f
   | pop f => TM2.Stmt.pop k f
 #align turing.TM2to1.st_run Turing.TM2to1.stRun
+-/
 
+#print Turing.TM2to1.stVar /-
 /-- The effect of a stack action on the local variables, given the value of the stack. -/
 def stVar {k : K} (v : σ) (l : List (Γ k)) : st_act k → σ
   | push f => v
   | peek f => f v l.head?
   | pop f => f v l.head?
 #align turing.TM2to1.st_var Turing.TM2to1.stVar
+-/
 
+#print Turing.TM2to1.stWrite /-
 /-- The effect of a stack action on the stack. -/
 def stWrite {k : K} (v : σ) (l : List (Γ k)) : st_act k → List (Γ k)
   | push f => f v :: l
   | peek f => l
   | pop f => l.tail
 #align turing.TM2to1.st_write Turing.TM2to1.stWrite
+-/
 
+#print Turing.TM2to1.stmtStRec /-
 /-- We have partitioned the TM2 statements into "stack actions", which require going to the end
 of the stack, and all other actions, which do not. This is a modified recursor which lumps the
 stack actions into one. -/
@@ -2715,13 +2907,17 @@ def stmtStRec.{l} {C : stmt₂ → Sort l} (H₁ : ∀ (k) (s : st_act k) (q) (I
   | TM2.stmt.goto l => H₄ _
   | TM2.stmt.halt => H₅
 #align turing.TM2to1.stmt_st_rec Turing.TM2to1.stmtStRec
+-/
 
+#print Turing.TM2to1.supports_run /-
 theorem supports_run (S : Finset Λ) {k} (s : st_act k) (q) :
     TM2.SupportsStmt S (st_run s q) ↔ TM2.SupportsStmt S q := by rcases s with (_ | _ | _) <;> rfl
 #align turing.TM2to1.supports_run Turing.TM2to1.supports_run
+-/
 
 end
 
+#print Turing.TM2to1.Λ' /-
 /-- The machine states of the TM2 emulator. We can either be in a normal state when waiting for the
 next TM2 action, or we can be in the "go" and "return" states to go to the top of the stack and
 return to the bottom, respectively. -/
@@ -2730,21 +2926,23 @@ inductive Λ' : Type max u_1 u_2 u_3 u_4
   | go (k) : st_act k → stmt₂ → Λ'
   | ret : stmt₂ → Λ'
 #align turing.TM2to1.Λ' Turing.TM2to1.Λ'
+-/
 
 open Λ'
 
+#print Turing.TM2to1.Λ'.inhabited /-
 instance Λ'.inhabited : Inhabited Λ' :=
   ⟨Normal default⟩
 #align turing.TM2to1.Λ'.inhabited Turing.TM2to1.Λ'.inhabited
+-/
 
--- mathport name: exprstmt₁
 local notation "stmt₁" => TM1.Stmt Γ' Λ' σ
 
--- mathport name: exprcfg₁
 local notation "cfg₁" => TM1.Cfg Γ' Λ' σ
 
 open TM1.Stmt
 
+#print Turing.TM2to1.trStAct /-
 /-- The program corresponding to state transitions at the end of a stack. Here we start out just
 after the top of the stack, and should end just after the new top of the stack. -/
 def trStAct {k} (q : stmt₁) : st_act k → stmt₁
@@ -2755,6 +2953,7 @@ def trStAct {k} (q : stmt₁) : st_act k → stmt₁
       (move Dir.left <|
         (load fun a s => f s (a.2 k)) <| write (fun a s => (a.1, update a.2 k none)) q)
 #align turing.TM2to1.tr_st_act Turing.TM2to1.trStAct
+-/
 
 #print Turing.TM2to1.trInit /-
 /-- The initial state for the TM2 emulator, given an initial TM2 state. All stacks start out empty
@@ -2765,6 +2964,7 @@ def trInit (k) (L : List (Γ k)) : List Γ' :=
 #align turing.TM2to1.tr_init Turing.TM2to1.trInit
 -/
 
+#print Turing.TM2to1.step_run /-
 theorem step_run {k : K} (q v S) :
     ∀ s : st_act k,
       TM2.stepAux (st_run s q) v S =
@@ -2773,7 +2973,9 @@ theorem step_run {k : K} (q v S) :
   | st_act.peek f => by unfold st_write <;> rw [Function.update_eq_self] <;> rfl
   | st_act.pop f => rfl
 #align turing.TM2to1.step_run Turing.TM2to1.step_run
+-/
 
+#print Turing.TM2to1.trNormal /-
 /-- The translation of TM2 statements to TM1 statements. regular actions have direct equivalents,
 but stack actions are deferred by going to the corresponding `go` state, so that we can find the
 appropriate stack top. -/
@@ -2786,13 +2988,17 @@ def trNormal : stmt₂ → stmt₁
   | TM2.stmt.goto l => goto fun a s => Normal (l s)
   | TM2.stmt.halt => halt
 #align turing.TM2to1.tr_normal Turing.TM2to1.trNormal
+-/
 
+#print Turing.TM2to1.trNormal_run /-
 theorem trNormal_run {k} (s q) : tr_normal (st_run s q) = goto fun _ _ => go k s q := by
   rcases s with (_ | _ | _) <;> rfl
 #align turing.TM2to1.tr_normal_run Turing.TM2to1.trNormal_run
+-/
 
 open scoped Classical
 
+#print Turing.TM2to1.trStmts₁ /-
 /-- The set of machine states accessible from an initial TM2 statement. -/
 noncomputable def trStmts₁ : stmt₂ → Finset Λ'
   | TM2.stmt.push k f q => {go k (st_act.push f) q, ret q} ∪ tr_stmts₁ q
@@ -2802,11 +3008,15 @@ noncomputable def trStmts₁ : stmt₂ → Finset Λ'
   | TM2.stmt.branch f q₁ q₂ => tr_stmts₁ q₁ ∪ tr_stmts₁ q₂
   | _ => ∅
 #align turing.TM2to1.tr_stmts₁ Turing.TM2to1.trStmts₁
+-/
 
+#print Turing.TM2to1.trStmts₁_run /-
 theorem trStmts₁_run {k s q} : tr_stmts₁ (st_run s q) = {go k s q, ret q} ∪ tr_stmts₁ q := by
   rcases s with (_ | _ | _) <;> unfold tr_stmts₁ st_run
 #align turing.TM2to1.tr_stmts₁_run Turing.TM2to1.trStmts₁_run
+-/
 
+#print Turing.TM2to1.tr_respects_aux₂ /-
 theorem tr_respects_aux₂ {k q v} {S : ∀ k, List (Γ k)} {L : ListBlank (∀ k, Option (Γ k))}
     (hL : ∀ k, L.map (proj k) = ListBlank.mk ((S k).map some).reverse) (o) :
     let v' := st_var v (S k) o
@@ -2883,11 +3093,11 @@ theorem tr_respects_aux₂ {k q v} {S : ∀ k, List (Γ k)} {L : ListBlank (∀
       · split_ifs <;> rw [Function.update_noteq h', ← proj_map_nth, hL]
         rw [Function.update_noteq h']
 #align turing.TM2to1.tr_respects_aux₂ Turing.TM2to1.tr_respects_aux₂
+-/
 
 parameter (M : Λ → stmt₂)
 
-include M
-
+#print Turing.TM2to1.tr /-
 /-- The TM2 emulator machine states written as a TM1 program.
 This handles the `go` and `ret` states, which shuttle to and from a stack top. -/
 def tr : Λ' → stmt₁
@@ -2897,9 +3107,11 @@ def tr : Λ' → stmt₁
       (move Dir.right <| goto fun _ _ => go k s q)
   | ret q => branch (fun a s => a.1) (tr_normal q) (move Dir.left <| goto fun _ _ => ret q)
 #align turing.TM2to1.tr Turing.TM2to1.tr
+-/
 
 attribute [local pp_using_anonymous_constructor] Turing.TM1.Cfg
 
+#print Turing.TM2to1.TrCfg /-
 /-- The relation between TM2 configurations and TM1 configurations of the TM2 emulator. -/
 inductive TrCfg : cfg₂ → cfg₁ → Prop
   |
@@ -2907,8 +3119,10 @@ inductive TrCfg : cfg₂ → cfg₁ → Prop
     (∀ k, L.map (proj k) = ListBlank.mk ((S k).map some).reverse) →
       tr_cfg ⟨q, v, S⟩ ⟨q.map Normal, v, Tape.mk' ∅ (add_bottom L)⟩
 #align turing.TM2to1.tr_cfg Turing.TM2to1.TrCfg
+-/
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (n «expr ≤ » S.length) -/
+#print Turing.TM2to1.tr_respects_aux₁ /-
 theorem tr_respects_aux₁ {k} (o q v) {S : List (Γ k)} {L : ListBlank (∀ k, Option (Γ k))}
     (hL : L.map (proj k) = ListBlank.mk (S.map some).reverse) (n) (_ : n ≤ S.length) :
     Reaches₀ (TM1.step tr) ⟨some (go k o q), v, Tape.mk' ∅ (add_bottom L)⟩
@@ -2921,7 +3135,9 @@ theorem tr_respects_aux₁ {k} (o q v) {S : List (Γ k)} {L : ListBlank (∀ k,
     add_bottom_nth_snd, Option.mem_def]
   rw [stk_nth_val _ hL, List.nthLe_get?]; rfl; rwa [List.length_reverse]
 #align turing.TM2to1.tr_respects_aux₁ Turing.TM2to1.tr_respects_aux₁
+-/
 
+#print Turing.TM2to1.tr_respects_aux₃ /-
 theorem tr_respects_aux₃ {q v} {L : ListBlank (∀ k, Option (Γ k))} (n) :
     Reaches₀ (TM1.step tr) ⟨some (ret q), v, (Tape.move Dir.right^[n]) (Tape.mk' ∅ (add_bottom L))⟩
       ⟨some (ret q), v, Tape.mk' ∅ (add_bottom L)⟩ :=
@@ -2932,7 +3148,9 @@ theorem tr_respects_aux₃ {q v} {L : ListBlank (∀ k, Option (Γ k))} (n) :
     add_bottom_nth_succ_fst, TM1.step_aux, iterate_succ', tape.move_right_left]
   rfl
 #align turing.TM2to1.tr_respects_aux₃ Turing.TM2to1.tr_respects_aux₃
+-/
 
+#print Turing.TM2to1.tr_respects_aux /-
 theorem tr_respects_aux {q v T k} {S : ∀ k, List (Γ k)}
     (hT : ∀ k, ListBlank.map (proj k) T = ListBlank.mk ((S k).map some).reverse) (o : st_act k)
     (IH :
@@ -2959,9 +3177,11 @@ theorem tr_respects_aux {q v T k} {S : ∀ k, List (Γ k)}
   rw [tr, TM1.step_aux, tape.mk'_head, add_bottom_head_fst]
   exact rc
 #align turing.TM2to1.tr_respects_aux Turing.TM2to1.tr_respects_aux
+-/
 
 attribute [local simp] respects TM2.step TM2.step_aux tr_normal
 
+#print Turing.TM2to1.tr_respects /-
 theorem tr_respects : Respects (TM2.step M) (TM1.step tr) tr_cfg := fun c₁ c₂ h =>
   by
   cases' h with l v S L hT; clear h
@@ -2978,7 +3198,9 @@ theorem tr_respects : Respects (TM2.step M) (TM1.step tr) tr_cfg := fun c₁ c
   · exact ⟨_, ⟨_, hT⟩, refl_trans_gen.refl⟩
   · exact ⟨_, ⟨_, hT⟩, refl_trans_gen.refl⟩
 #align turing.TM2to1.tr_respects Turing.TM2to1.tr_respects
+-/
 
+#print Turing.TM2to1.trCfg_init /-
 theorem trCfg_init (k) (L : List (Γ k)) : tr_cfg (TM2.init k L) (TM1.init (tr_init k L)) :=
   by
   rw [(_ : TM1.init _ = _)]
@@ -2995,11 +3217,15 @@ theorem trCfg_init (k) (L : List (Γ k)) : tr_cfg (TM2.init k L) (TM1.init (tr_i
   · rw [tr_init, TM1.init]; dsimp only; congr <;> cases L.reverse <;> try rfl
     simp only [List.map_map, List.tail_cons, List.map]; rfl
 #align turing.TM2to1.tr_cfg_init Turing.TM2to1.trCfg_init
+-/
 
+#print Turing.TM2to1.tr_eval_dom /-
 theorem tr_eval_dom (k) (L : List (Γ k)) : (TM1.eval tr (tr_init k L)).Dom ↔ (TM2.eval M k L).Dom :=
   tr_eval_dom tr_respects (tr_cfg_init _ _)
 #align turing.TM2to1.tr_eval_dom Turing.TM2to1.tr_eval_dom
+-/
 
+#print Turing.TM2to1.tr_eval /-
 theorem tr_eval (k) (L : List (Γ k)) {L₁ L₂} (H₁ : L₁ ∈ TM1.eval tr (tr_init k L))
     (H₂ : L₂ ∈ TM2.eval M k L) :
     ∃ (S : ∀ k, List (Γ k)) (L' : ListBlank (∀ k, Option (Γ k))),
@@ -3012,12 +3238,16 @@ theorem tr_eval (k) (L : List (Γ k)) {L₁ L₂} (H₁ : L₁ ∈ TM1.eval tr (
   cases Part.mem_unique h₁ h₃
   exact ⟨_, L', by simp only [tape.mk'_right₀], hT, rfl⟩
 #align turing.TM2to1.tr_eval Turing.TM2to1.tr_eval
+-/
 
+#print Turing.TM2to1.trSupp /-
 /-- The support of a set of TM2 states in the TM2 emulator. -/
 noncomputable def trSupp (S : Finset Λ) : Finset Λ' :=
   S.biUnion fun l => insert (Normal l) (tr_stmts₁ (M l))
 #align turing.TM2to1.tr_supp Turing.TM2to1.trSupp
+-/
 
+#print Turing.TM2to1.tr_supports /-
 theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports tr (tr_supp S) :=
   ⟨Finset.mem_biUnion.2 ⟨_, ss.1, Finset.mem_insert.2 <| Or.inl rfl⟩, fun l' h =>
     by
@@ -3070,6 +3300,7 @@ theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports tr (tr_supp S) :=
           False.elim⟩
     · exact ⟨trivial, fun _ => False.elim⟩⟩
 #align turing.TM2to1.tr_supports Turing.TM2to1.tr_supports
+-/
 
 -- halt
 end
Diff
@@ -1875,7 +1875,7 @@ local notation "cfg₁" => Cfg Γ Λ σ
 
 /-- The configuration state of the TM. -/
 inductive Λ' : Type max u_1 u_2 u_3
-  | normal : Λ → Λ'
+  | Normal : Λ → Λ'
   | write : Γ → stmt₁ → Λ'
 #align turing.TM1to1.Λ' Turing.TM1to1.Λ'
 
@@ -2236,7 +2236,7 @@ parameter {Λ : Type _} [Inhabited Λ]
 as `normal q` states, but the actual operation is split into two parts, a jump to `act s q`
 followed by the action and a jump to the next `normal` state.  -/
 inductive Λ'
-  | normal : Λ → Λ'
+  | Normal : Λ → Λ'
   | act : TM0.Stmt Γ → Λ → Λ'
 #align turing.TM0to1.Λ' Turing.TM0to1.Λ'
 
@@ -2726,7 +2726,7 @@ end
 next TM2 action, or we can be in the "go" and "return" states to go to the top of the stack and
 return to the bottom, respectively. -/
 inductive Λ' : Type max u_1 u_2 u_3 u_4
-  | normal : Λ → Λ'
+  | Normal : Λ → Λ'
   | go (k) : st_act k → stmt₂ → Λ'
   | ret : stmt₂ → Λ'
 #align turing.TM2to1.Λ' Turing.TM2to1.Λ'
@@ -2734,7 +2734,7 @@ inductive Λ' : Type max u_1 u_2 u_3 u_4
 open Λ'
 
 instance Λ'.inhabited : Inhabited Λ' :=
-  ⟨normal default⟩
+  ⟨Normal default⟩
 #align turing.TM2to1.Λ'.inhabited Turing.TM2to1.Λ'.inhabited
 
 -- mathport name: exprstmt₁
@@ -2783,7 +2783,7 @@ def trNormal : stmt₂ → stmt₁
   | TM2.stmt.pop k f q => goto fun _ _ => go k (st_act.pop f) q
   | TM2.stmt.load a q => load (fun _ => a) (tr_normal q)
   | TM2.stmt.branch f q₁ q₂ => branch (fun a => f) (tr_normal q₁) (tr_normal q₂)
-  | TM2.stmt.goto l => goto fun a s => normal (l s)
+  | TM2.stmt.goto l => goto fun a s => Normal (l s)
   | TM2.stmt.halt => halt
 #align turing.TM2to1.tr_normal Turing.TM2to1.trNormal
 
@@ -2891,7 +2891,7 @@ include M
 /-- The TM2 emulator machine states written as a TM1 program.
 This handles the `go` and `ret` states, which shuttle to and from a stack top. -/
 def tr : Λ' → stmt₁
-  | normal q => tr_normal (M q)
+  | Normal q => tr_normal (M q)
   | go k s q =>
     branch (fun a s => (a.2 k).isNone) (tr_st_act (goto fun _ _ => ret q) s)
       (move Dir.right <| goto fun _ _ => go k s q)
@@ -2905,7 +2905,7 @@ inductive TrCfg : cfg₂ → cfg₁ → Prop
   |
   mk {q v} {S : ∀ k, List (Γ k)} (L : ListBlank (∀ k, Option (Γ k))) :
     (∀ k, L.map (proj k) = ListBlank.mk ((S k).map some).reverse) →
-      tr_cfg ⟨q, v, S⟩ ⟨q.map normal, v, Tape.mk' ∅ (add_bottom L)⟩
+      tr_cfg ⟨q, v, S⟩ ⟨q.map Normal, v, Tape.mk' ∅ (add_bottom L)⟩
 #align turing.TM2to1.tr_cfg Turing.TM2to1.TrCfg
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (n «expr ≤ » S.length) -/
@@ -3015,7 +3015,7 @@ theorem tr_eval (k) (L : List (Γ k)) {L₁ L₂} (H₁ : L₁ ∈ TM1.eval tr (
 
 /-- The support of a set of TM2 states in the TM2 emulator. -/
 noncomputable def trSupp (S : Finset Λ) : Finset Λ' :=
-  S.biUnion fun l => insert (normal l) (tr_stmts₁ (M l))
+  S.biUnion fun l => insert (Normal l) (tr_stmts₁ (M l))
 #align turing.TM2to1.tr_supp Turing.TM2to1.trSupp
 
 theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports tr (tr_supp S) :=
Diff
@@ -2908,7 +2908,7 @@ inductive TrCfg : cfg₂ → cfg₁ → Prop
       tr_cfg ⟨q, v, S⟩ ⟨q.map normal, v, Tape.mk' ∅ (add_bottom L)⟩
 #align turing.TM2to1.tr_cfg Turing.TM2to1.TrCfg
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (n «expr ≤ » S.length) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (n «expr ≤ » S.length) -/
 theorem tr_respects_aux₁ {k} (o q v) {S : List (Γ k)} {L : ListBlank (∀ k, Option (Γ k))}
     (hL : L.map (proj k) = ListBlank.mk (S.map some).reverse) (n) (_ : n ≤ S.length) :
     Reaches₀ (TM1.step tr) ⟨some (go k o q), v, Tape.mk' ∅ (add_bottom L)⟩
Diff
@@ -125,7 +125,7 @@ theorem BlankExtends.above_of_le {Γ} [Inhabited Γ] {l l₁ l₂ : List Γ} :
   rintro ⟨i, rfl⟩ ⟨j, e⟩ h; use i - j
   refine' List.append_right_cancel (e.symm.trans _)
   rw [List.append_assoc, ← List.replicate_add, tsub_add_cancel_of_le]
-  apply_fun List.length  at e 
+  apply_fun List.length at e 
   simp only [List.length_append, List.length_replicate] at e 
   rwa [← add_le_add_iff_left, e, add_le_add_iff_right]
 #align turing.blank_extends.above_of_le Turing.BlankExtends.above_of_le
@@ -1233,10 +1233,10 @@ namespace TM0
 
 section
 
-parameter (Γ : Type _)[Inhabited Γ]
+parameter (Γ : Type _) [Inhabited Γ]
 
 -- type of tape symbols
-parameter (Λ : Type _)[Inhabited Λ]
+parameter (Λ : Type _) [Inhabited Λ]
 
 -- type of "labels" or TM states
 /-- A Turing machine "statement" is just a command to either move
@@ -1448,7 +1448,7 @@ namespace TM1
 
 section
 
-parameter (Γ : Type _)[Inhabited Γ]
+parameter (Γ : Type _) [Inhabited Γ]
 
 -- Type of tape symbols
 parameter (Λ : Type _)
@@ -1668,11 +1668,11 @@ namespace TM1to0
 
 section
 
-parameter {Γ : Type _}[Inhabited Γ]
+parameter {Γ : Type _} [Inhabited Γ]
 
-parameter {Λ : Type _}[Inhabited Λ]
+parameter {Λ : Type _} [Inhabited Λ]
 
-parameter {σ : Type _}[Inhabited σ]
+parameter {σ : Type _} [Inhabited σ]
 
 -- mathport name: exprstmt₁
 local notation "stmt₁" => TM1.Stmt Γ Λ σ
@@ -1843,7 +1843,7 @@ open TM1
 
 section
 
-parameter {Γ : Type _}[Inhabited Γ]
+parameter {Γ : Type _} [Inhabited Γ]
 
 #print Turing.TM1to1.exists_enc_dec /-
 theorem exists_enc_dec [Fintype Γ] :
@@ -1858,14 +1858,14 @@ theorem exists_enc_dec [Fintype Γ] :
       Bool.of_decide_true <| (congr_fun h b).trans <| Bool.decide_true rfl⟩
   let H := (F.to_embedding.trans G).trans (Equiv.vectorEquivFin _ _).symm.toEmbedding
   classical
-    let enc := H.set_value default (Vector.replicate n ff)
-    exact ⟨_, enc, Function.invFun enc, H.set_value_eq _ _, Function.leftInverse_invFun enc.2⟩
+  let enc := H.set_value default (Vector.replicate n ff)
+  exact ⟨_, enc, Function.invFun enc, H.set_value_eq _ _, Function.leftInverse_invFun enc.2⟩
 #align turing.TM1to1.exists_enc_dec Turing.TM1to1.exists_enc_dec
 -/
 
-parameter {Λ : Type _}[Inhabited Λ]
+parameter {Λ : Type _} [Inhabited Λ]
 
-parameter {σ : Type _}[Inhabited σ]
+parameter {σ : Type _} [Inhabited σ]
 
 -- mathport name: exprstmt₁
 local notation "stmt₁" => Stmt Γ Λ σ
@@ -1896,7 +1896,7 @@ def readAux : ∀ n, (Vector Bool n → stmt') → stmt'
       (Stmt.move Dir.right <| read_aux i fun v => f (false ::ᵥ v))
 #align turing.TM1to1.read_aux Turing.TM1to1.readAux
 
-parameter {n : ℕ}(enc : Γ → Vector Bool n)(dec : Vector Bool n → Γ)
+parameter {n : ℕ} (enc : Γ → Vector Bool n) (dec : Vector Bool n → Γ)
 
 /-- A move left or right corresponds to `n` moves across the super-cell. -/
 def move (d : Dir) (q : stmt') : stmt' :=
@@ -2228,9 +2228,9 @@ namespace TM0to1
 
 section
 
-parameter {Γ : Type _}[Inhabited Γ]
+parameter {Γ : Type _} [Inhabited Γ]
 
-parameter {Λ : Type _}[Inhabited Λ]
+parameter {Λ : Type _} [Inhabited Λ]
 
 /-- The machine states for a TM1 emulating a TM0 machine. States of the TM0 machine are embedded
 as `normal q` states, but the actual operation is split into two parts, a jump to `act s q`
@@ -2336,7 +2336,7 @@ namespace TM2
 
 section
 
-parameter {K : Type _}[DecidableEq K]
+parameter {K : Type _} [DecidableEq K]
 
 -- Index type of stacks
 parameter (Γ : K → Type _)
@@ -2589,13 +2589,13 @@ theorem stk_nth_val {K : Type _} {Γ : K → Type _} {L : ListBlank (∀ k, Opti
 
 section
 
-parameter {K : Type _}[DecidableEq K]
+parameter {K : Type _} [DecidableEq K]
 
 parameter {Γ : K → Type _}
 
-parameter {Λ : Type _}[Inhabited Λ]
+parameter {Λ : Type _} [Inhabited Λ]
 
-parameter {σ : Type _}[Inhabited σ]
+parameter {σ : Type _} [Inhabited σ]
 
 -- mathport name: exprstmt₂
 local notation "stmt₂" => TM2.Stmt Γ Λ σ
Diff
@@ -103,7 +103,7 @@ theorem BlankExtends.below_of_le {Γ} [Inhabited Γ] {l l₁ l₂ : List Γ} :
     BlankExtends l l₁ → BlankExtends l l₂ → l₁.length ≤ l₂.length → BlankExtends l₁ l₂ :=
   by
   rintro ⟨i, rfl⟩ ⟨j, rfl⟩ h; use j - i
-  simp only [List.length_append, add_le_add_iff_left, List.length_replicate] at h
+  simp only [List.length_append, add_le_add_iff_left, List.length_replicate] at h 
   simp only [← List.replicate_add, add_tsub_cancel_of_le h, List.append_assoc]
 #align turing.blank_extends.below_of_le Turing.BlankExtends.below_of_le
 -/
@@ -125,8 +125,8 @@ theorem BlankExtends.above_of_le {Γ} [Inhabited Γ] {l l₁ l₂ : List Γ} :
   rintro ⟨i, rfl⟩ ⟨j, e⟩ h; use i - j
   refine' List.append_right_cancel (e.symm.trans _)
   rw [List.append_assoc, ← List.replicate_add, tsub_add_cancel_of_le]
-  apply_fun List.length  at e
-  simp only [List.length_append, List.length_replicate] at e
+  apply_fun List.length  at e 
+  simp only [List.length_append, List.length_replicate] at e 
   rwa [← add_le_add_iff_left, e, add_le_add_iff_right]
 #align turing.blank_extends.above_of_le Turing.BlankExtends.above_of_le
 -/
@@ -236,7 +236,7 @@ precondition `blank_extends` instead of `blank_rel`. -/
 @[elab_as_elim, reducible]
 protected def ListBlank.liftOn {Γ} [Inhabited Γ] {α} (l : ListBlank Γ) (f : List Γ → α)
     (H : ∀ a b, BlankExtends a b → f a = f b) : α :=
-  l.liftOn' f <| by rintro a b (h | h) <;> [exact H _ _ h;exact (H _ _ h).symm]
+  l.liftOn' f <| by rintro a b (h | h) <;> [exact H _ _ h; exact (H _ _ h).symm]
 #align turing.list_blank.lift_on Turing.ListBlank.liftOn
 -/
 
@@ -280,7 +280,7 @@ def ListBlank.tail {Γ} [Inhabited Γ] (l : ListBlank Γ) : ListBlank Γ :=
     (by
       rintro _ _ ⟨i, rfl⟩
       refine' Quotient.sound' (Or.inl _)
-      cases a <;> [· cases i <;> [exact ⟨0, rfl⟩;exact ⟨i, rfl⟩];exact ⟨i, rfl⟩])
+      cases a <;> [· cases i <;> [exact ⟨0, rfl⟩; exact ⟨i, rfl⟩]; exact ⟨i, rfl⟩])
 #align turing.list_blank.tail Turing.ListBlank.tail
 -/
 
@@ -398,12 +398,12 @@ theorem ListBlank.ext {Γ} [Inhabited Γ] {L₁ L₂ : ListBlank Γ} :
     ListBlank.induction_on L₂ fun l₂ H =>
       by
       wlog h : l₁.length ≤ l₂.length
-      · cases le_total l₁.length l₂.length <;> [skip;symm] <;> apply_assumption <;> try assumption
-        intro ; rw [H]
+      · cases le_total l₁.length l₂.length <;> [skip; symm] <;> apply_assumption <;> try assumption
+        intro; rw [H]
       refine' Quotient.sound' (Or.inl ⟨l₂.length - l₁.length, _⟩)
       refine' List.ext_nthLe _ fun i h h₂ => Eq.symm _
       · simp only [add_tsub_cancel_of_le h, List.length_append, List.length_replicate]
-      simp only [list_blank.nth_mk] at H
+      simp only [list_blank.nth_mk] at H 
       cases' lt_or_le i l₁.length with h' h'
       ·
         simp only [List.nthLe_append _ h', List.nthLe_get? h, List.nthLe_get? h', ←
@@ -440,7 +440,7 @@ theorem ListBlank.nth_modifyNth {Γ} [Inhabited Γ] (f : Γ → Γ) (n i) (L : L
 #print Turing.PointedMap /-
 /-- A pointed map of `inhabited` types is a map that sends one default value to the other. -/
 structure PointedMap.{u, v} (Γ : Type u) (Γ' : Type v) [Inhabited Γ] [Inhabited Γ'] :
-  Type max u v where
+    Type max u v where
   f : Γ → Γ'
   map_pt' : f default = default
 #align turing.pointed_map Turing.PointedMap
@@ -467,7 +467,7 @@ theorem PointedMap.map_pt {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMa
 @[simp]
 theorem PointedMap.headI_map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ')
     (l : List Γ) : (l.map f).headI = f l.headI := by
-  cases l <;> [exact (pointed_map.map_pt f).symm;rfl]
+  cases l <;> [exact (pointed_map.map_pt f).symm; rfl]
 #align turing.pointed_map.head_map Turing.PointedMap.headI_map
 
 #print Turing.ListBlank.map /-
@@ -809,8 +809,8 @@ theorem Tape.move_right_nth {Γ} [Inhabited Γ] (T : Tape Γ) (i : ℤ) :
 @[simp]
 theorem Tape.move_right_n_head {Γ} [Inhabited Γ] (T : Tape Γ) (i : ℕ) :
     ((Tape.move Dir.right^[i]) T).headI = T.get? i := by
-  induction i generalizing T <;>
-    [rfl;simp only [*, tape.move_right_nth, Int.ofNat_succ, iterate_succ]]
+  induction i generalizing T <;> [rfl;
+    simp only [*, tape.move_right_nth, Int.ofNat_succ, iterate_succ]]
 #align turing.tape.move_right_n_head Turing.Tape.move_right_n_head
 -/
 
@@ -1036,7 +1036,7 @@ theorem mem_eval {σ} {f : σ → Option σ} {a b} : b ∈ eval f a ↔ Reaches
     · rw [Part.mem_unique h
           (PFun.mem_fix_iff.2 <| Or.inl <| Part.mem_some_iff.2 <| by rw [e] <;> rfl)]
       exact ⟨refl_trans_gen.refl, e⟩
-    · rcases PFun.mem_fix_iff.1 h with (h | ⟨_, h, _⟩) <;> rw [e] at h <;>
+    · rcases PFun.mem_fix_iff.1 h with (h | ⟨_, h, _⟩) <;> rw [e] at h  <;>
         cases Part.mem_some_iff.1 h
       cases' IH a' (by rwa [e]) with h₁ h₂
       exact ⟨refl_trans_gen.head e h₁, h₂⟩, fun ⟨h₁, h₂⟩ =>
@@ -1102,10 +1102,10 @@ theorem tr_reaches₁ {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H
   by
   induction' ab with c₁ ac c₁ d₁ ac cd IH
   · have := H aa
-    rwa [show f₁ a₁ = _ from ac] at this
+    rwa [show f₁ a₁ = _ from ac] at this 
   · rcases IH with ⟨c₂, cc, ac₂⟩
     have := H cc
-    rw [show f₁ c₁ = _ from cd] at this
+    rw [show f₁ c₁ = _ from cd] at this 
     rcases this with ⟨d₂, dd, cd₂⟩
     exact ⟨_, dd, ac₂.trans cd₂⟩
 #align turing.tr_reaches₁ Turing.tr_reaches₁
@@ -1146,7 +1146,7 @@ theorem tr_eval {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H : Res
   cases' mem_eval.1 ab with ab b0
   rcases tr_reaches H aa ab with ⟨b₂, bb, ab⟩
   refine' ⟨_, bb, mem_eval.2 ⟨ab, _⟩⟩
-  have := H bb; rwa [b0] at this
+  have := H bb; rwa [b0] at this 
 #align turing.tr_eval Turing.tr_eval
 
 theorem tr_eval_rev {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H : Respects f₁ f₂ tr) {a₁ b₂ a₂}
@@ -1201,7 +1201,7 @@ theorem tr_eval' {σ₁ σ₂} (f₁ : σ₁ → Option σ₁) (f₂ : σ₂ →
       fun h => by
       rcases(Part.mem_map_iff _).1 h with ⟨b₁, ab, bb⟩
       rcases tr_eval H rfl ab with ⟨_, rfl, h⟩
-      rwa [bb] at h⟩
+      rwa [bb] at h ⟩
 #align turing.tr_eval' Turing.tr_eval'
 
 /-!
@@ -1551,15 +1551,15 @@ theorem stmts₁_self {q} : q ∈ stmts₁ q := by
 theorem stmts₁_trans {q₁ q₂} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ ⊆ stmts₁ q₂ :=
   by
   intro h₁₂ q₀ h₀₁
-  induction' q₂ with _ q IH _ q IH _ q IH <;> simp only [stmts₁] at h₁₂⊢ <;>
-    simp only [Finset.mem_insert, Finset.mem_union, Finset.mem_singleton] at h₁₂
+  induction' q₂ with _ q IH _ q IH _ q IH <;> simp only [stmts₁] at h₁₂ ⊢ <;>
+    simp only [Finset.mem_insert, Finset.mem_union, Finset.mem_singleton] at h₁₂ 
   iterate 3 
     rcases h₁₂ with (rfl | h₁₂)
-    · unfold stmts₁ at h₀₁; exact h₀₁
+    · unfold stmts₁ at h₀₁ ; exact h₀₁
     · exact Finset.mem_insert_of_mem (IH h₁₂)
   case branch p q₁ q₂ IH₁ IH₂ =>
     rcases h₁₂ with (rfl | h₁₂ | h₁₂)
-    · unfold stmts₁ at h₀₁; exact h₀₁
+    · unfold stmts₁ at h₀₁ ; exact h₀₁
     · exact Finset.mem_insert_of_mem (Finset.mem_union_left _ <| IH₁ h₁₂)
     · exact Finset.mem_insert_of_mem (Finset.mem_union_right _ <| IH₂ h₁₂)
   case goto l => subst h₁₂; exact h₀₁
@@ -1571,9 +1571,9 @@ theorem stmts₁_supportsStmt_mono {S q₁ q₂} (h : q₁ ∈ stmts₁ q₂) (h
   by
   induction' q₂ with _ q IH _ q IH _ q IH <;>
     simp only [stmts₁, supports_stmt, Finset.mem_insert, Finset.mem_union, Finset.mem_singleton] at
-      h hs
-  iterate 3 rcases h with (rfl | h) <;> [exact hs;exact IH h hs]
-  case branch p q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts[hs, IH₁ h hs.1, IH₂ h hs.2]
+      h hs 
+  iterate 3 rcases h with (rfl | h) <;> [exact hs; exact IH h hs]
+  case branch p q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts [hs, IH₁ h hs.1, IH₂ h hs.2]
   case goto l => subst h; exact hs
   case halt => subst h; trivial
 #align turing.TM1.stmts₁_supports_stmt_mono Turing.TM1.stmts₁_supportsStmt_mono
@@ -1612,7 +1612,7 @@ theorem step_supports (M : Λ → stmt) {S} (ss : supports M S) :
   | ⟨some l₁, v, T⟩, c', h₁, h₂ =>
     by
     replace h₂ := ss.2 _ (Finset.some_mem_insertNone.1 h₂)
-    simp only [step, Option.mem_def] at h₁; subst c'
+    simp only [step, Option.mem_def] at h₁ ; subst c'
     revert h₂; induction' M l₁ with _ q IH _ q IH _ q IH generalizing v T <;> intro hs
     iterate 3 exact IH _ _ hs
     case branch p q₁' q₂' IH₁ IH₂ =>
@@ -1777,9 +1777,9 @@ theorem tr_supports {S : Finset Λ} (ss : TM1.Supports M S) : TM0.Supports tr 
     fun q a q' s h₁ h₂ => by
     rcases q with ⟨_ | q, v⟩; · cases h₁
     cases' q' with q' v';
-    simp only [tr_stmts, Finset.mem_coe, Finset.mem_product, Finset.mem_univ, and_true_iff] at h₂⊢
+    simp only [tr_stmts, Finset.mem_coe, Finset.mem_product, Finset.mem_univ, and_true_iff] at h₂ ⊢
     cases q'; · exact Multiset.mem_cons_self _ _
-    simp only [tr, Option.mem_def] at h₁
+    simp only [tr, Option.mem_def] at h₁ 
     have := TM1.stmts_supports_stmt ss h₂
     revert this; induction q generalizing v <;> intro hs
     case move d q =>
@@ -1794,9 +1794,9 @@ theorem tr_supports {S : Finset Λ} (ss : TM1.Supports M S) : TM0.Supports tr 
       refine' IH (TM1.stmts_trans _ h₂) _ h₁ hs
       unfold TM1.stmts₁
       exact Finset.mem_insert_of_mem TM1.stmts₁_self
-    case
-      branch p q₁ q₂ IH₁ IH₂ =>
-      change cond (p a v) _ _ = ((some q', v'), s) at h₁
+    case branch p q₁ q₂ IH₁
+      IH₂ =>
+      change cond (p a v) _ _ = ((some q', v'), s) at h₁ 
       cases p a v
       · refine' IH₂ (TM1.stmts_trans _ h₂) _ h₁ hs.2
         unfold TM1.stmts₁
@@ -1847,7 +1847,7 @@ parameter {Γ : Type _}[Inhabited Γ]
 
 #print Turing.TM1to1.exists_enc_dec /-
 theorem exists_enc_dec [Fintype Γ] :
-    ∃ (n : _)(enc : Γ → Vector Bool n)(dec : Vector Bool n → Γ),
+    ∃ (n : _) (enc : Γ → Vector Bool n) (dec : Vector Bool n → Γ),
       enc default = Vector.replicate n false ∧ ∀ a, dec (enc a) = a :=
   by
   letI := Classical.decEq Γ
@@ -1931,7 +1931,7 @@ theorem stepAux_move (d q v T) : stepAux (move d q) v T = stepAux q v ((Tape.mov
   by
   suffices : ∀ i, step_aux ((stmt.move d^[i]) q) v T = step_aux q v ((tape.move d^[i]) T)
   exact this n
-  intro ; induction' i with i IH generalizing T; · rfl
+  intro; induction' i with i IH generalizing T; · rfl
   rw [iterate_succ', step_aux, IH, iterate_succ]
 #align turing.TM1to1.step_aux_move Turing.TM1to1.stepAux_move
 
@@ -2018,7 +2018,7 @@ theorem trTape'_move_left (L R) :
         tape.mk' L' (list_blank.append (Vector.toList (enc a)) R')
     by
     simpa only [List.length_reverse, Vector.toList_length] using this (List.reverse_reverse _).symm
-  intros ; induction' l₁ with b l₁ IH generalizing l₂
+  intros; induction' l₁ with b l₁ IH generalizing l₂
   · cases e; rfl
   simp only [List.length, List.cons_append, iterate_succ_apply]
   convert IH e
@@ -2035,7 +2035,7 @@ theorem trTape'_move_right (L R) :
     refine' (Eq.symm _).trans (this n _)
     simp only [tr_tape'_move_left, list_blank.cons_head_tail, list_blank.head_cons,
       list_blank.tail_cons]
-  intros ; induction' i with i IH; · rfl
+  intros; induction' i with i IH; · rfl
   rw [iterate_succ_apply, iterate_succ_apply', tape.move_left_right, IH]
 #align turing.TM1to1.tr_tape'_move_right Turing.TM1to1.trTape'_move_right
 -/
@@ -2082,7 +2082,7 @@ theorem stepAux_read (f v L R) :
       step_aux (read_aux i f) v (tape.mk' (list_blank.append l₁ L') (list_blank.append l₂ R')) =
         step_aux (f ⟨l₂, h⟩) v (tape.mk' (list_blank.append (l₂.reverseAux l₁) L') R')
     by intro f; convert this n f _ _ _ _ (enc a).2 <;> simp
-  clear f L a R; intros ; subst i
+  clear f L a R; intros; subst i
   induction' l₂ with a l₂ IH generalizing l₁; · rfl
   trans
     step_aux (read_aux l₂.length fun v => f (a ::ᵥ v)) v
@@ -2109,8 +2109,8 @@ theorem tr_respects : Respects (step M) (step tr) fun c₁ c₂ => tr_cfg c₁ =
             tape.move_left_mk', list_blank.cons_head_tail, list_blank.tail_cons,
             tr_tape'_move_left enc0, tr_tape'_move_right enc0] <;>
         apply IH
-    case
-      write f q IH =>
+    case write f q
+      IH =>
       simp only [tr_normal, step_aux_read dec enc0 encdec, step_aux]
       refine' refl_trans_gen.head rfl _
       obtain ⟨a, R, rfl⟩ := R.exists_cons
@@ -2120,12 +2120,12 @@ theorem tr_respects : Respects (step M) (step tr) fun c₁ c₂ => tr_cfg c₁ =
     case load a q IH =>
       simp only [tr_normal, step_aux_read dec enc0 encdec]
       apply IH
-    case
-      branch p q₁ q₂ IH₁ IH₂ =>
+    case branch p q₁ q₂ IH₁
+      IH₂ =>
       simp only [tr_normal, step_aux_read dec enc0 encdec, step_aux]
-      cases p R.head v <;> [apply IH₂;apply IH₁]
-    case
-      goto l =>
+      cases p R.head v <;> [apply IH₂; apply IH₁]
+    case goto
+      l =>
       simp only [tr_normal, step_aux_read dec enc0 encdec, step_aux, tr_cfg, tr_tape_mk']
       apply refl_trans_gen.refl
     case
@@ -2171,28 +2171,28 @@ theorem tr_supports {S} (ss : Supports M S) : Supports tr (tr_supp S) :=
       have :=
         this _ (ss.2 _ hl) fun q' hq => Finset.mem_biUnion.2 ⟨_, hl, Finset.mem_insert_of_mem hq⟩
       rcases Finset.mem_insert.1 h with (rfl | h)
-      exacts[this.1, this.2 _ h]
+      exacts [this.1, this.2 _ h]
     intro q hs hw; induction q
     case move d q IH =>
-      unfold writes at hw⊢
+      unfold writes at hw ⊢
       replace IH := IH hs hw; refine' ⟨_, IH.2⟩
       cases d <;> simp only [tr_normal, iterate, supports_stmt_move, IH]
     case write f q IH =>
-      unfold writes at hw⊢
+      unfold writes at hw ⊢
       simp only [Finset.mem_image, Finset.mem_union, Finset.mem_univ, exists_prop, true_and_iff] at
-        hw⊢
+        hw ⊢
       replace IH := IH hs fun q hq => hw q (Or.inr hq)
       refine' ⟨supports_stmt_read _ fun a _ s => hw _ (Or.inl ⟨_, rfl⟩), fun q' hq => _⟩
       rcases hq with (⟨a, q₂, rfl⟩ | hq)
       · simp only [tr, supports_stmt_write, supports_stmt_move, IH.1]
       · exact IH.2 _ hq
     case load a q IH =>
-      unfold writes at hw⊢
+      unfold writes at hw ⊢
       replace IH := IH hs hw
       refine' ⟨supports_stmt_read _ fun a => IH.1, IH.2⟩
     case branch p q₁ q₂ IH₁ IH₂ =>
-      unfold writes at hw⊢
-      simp only [Finset.mem_union] at hw⊢
+      unfold writes at hw ⊢
+      simp only [Finset.mem_union] at hw ⊢
       replace IH₁ := IH₁ hs.1 fun q hq => hw q (Or.inl hq)
       replace IH₂ := IH₂ hs.2 fun q hq => hw q (Or.inr hq)
       exact ⟨supports_stmt_read _ fun a => ⟨IH₁.1, IH₂.1⟩, fun q => Or.ndrec (IH₁.2 _) (IH₂.2 _)⟩
@@ -2446,15 +2446,15 @@ theorem stmts₁_self {q} : q ∈ stmts₁ q := by
 theorem stmts₁_trans {q₁ q₂} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ ⊆ stmts₁ q₂ :=
   by
   intro h₁₂ q₀ h₀₁
-  induction' q₂ with _ _ q IH _ _ q IH _ _ q IH _ q IH <;> simp only [stmts₁] at h₁₂⊢ <;>
-    simp only [Finset.mem_insert, Finset.mem_singleton, Finset.mem_union] at h₁₂
+  induction' q₂ with _ _ q IH _ _ q IH _ _ q IH _ q IH <;> simp only [stmts₁] at h₁₂ ⊢ <;>
+    simp only [Finset.mem_insert, Finset.mem_singleton, Finset.mem_union] at h₁₂ 
   iterate 4 
     rcases h₁₂ with (rfl | h₁₂)
-    · unfold stmts₁ at h₀₁; exact h₀₁
+    · unfold stmts₁ at h₀₁ ; exact h₀₁
     · exact Finset.mem_insert_of_mem (IH h₁₂)
   case branch f q₁ q₂ IH₁ IH₂ =>
     rcases h₁₂ with (rfl | h₁₂ | h₁₂)
-    · unfold stmts₁ at h₀₁; exact h₀₁
+    · unfold stmts₁ at h₀₁ ; exact h₀₁
     · exact Finset.mem_insert_of_mem (Finset.mem_union_left _ (IH₁ h₁₂))
     · exact Finset.mem_insert_of_mem (Finset.mem_union_right _ (IH₂ h₁₂))
   case goto l => subst h₁₂; exact h₀₁
@@ -2466,9 +2466,9 @@ theorem stmts₁_supportsStmt_mono {S q₁ q₂} (h : q₁ ∈ stmts₁ q₂) (h
   by
   induction' q₂ with _ _ q IH _ _ q IH _ _ q IH _ q IH <;>
     simp only [stmts₁, supports_stmt, Finset.mem_insert, Finset.mem_union, Finset.mem_singleton] at
-      h hs
-  iterate 4 rcases h with (rfl | h) <;> [exact hs;exact IH h hs]
-  case branch f q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts[hs, IH₁ h hs.1, IH₂ h hs.2]
+      h hs 
+  iterate 4 rcases h with (rfl | h) <;> [exact hs; exact IH h hs]
+  case branch f q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts [hs, IH₁ h hs.1, IH₂ h hs.2]
   case goto l => subst h; exact hs
   case halt => subst h; trivial
 #align turing.TM2.stmts₁_supports_stmt_mono Turing.TM2.stmts₁_supportsStmt_mono
@@ -2505,7 +2505,7 @@ theorem step_supports (M : Λ → stmt) {S} (ss : supports M S) :
   | ⟨some l₁, v, T⟩, c', h₁, h₂ =>
     by
     replace h₂ := ss.2 _ (Finset.some_mem_insertNone.1 h₂)
-    simp only [step, Option.mem_def] at h₁; subst c'
+    simp only [step, Option.mem_def] at h₁ ; subst c'
     revert h₂; induction' M l₁ with _ _ q IH _ _ q IH _ _ q IH _ q IH generalizing v T <;> intro hs
     iterate 4 exact IH _ _ hs
     case branch p q₁' q₂' IH₁ IH₂ =>
@@ -2640,7 +2640,7 @@ theorem addBottom_modifyNth (f : (∀ k, Option (Γ k)) → ∀ k, Option (Γ k)
   by
   cases n <;>
     simp only [add_bottom, list_blank.head_cons, list_blank.modify_nth, list_blank.tail_cons]
-  congr ; symm; apply list_blank.map_modify_nth; intro ; rfl
+  congr; symm; apply list_blank.map_modify_nth; intro; rfl
 #align turing.TM2to1.add_bottom_modify_nth Turing.TM2to1.addBottom_modifyNth
 
 theorem addBottom_nth_snd (L n) : ((add_bottom L).get? n).2 = L.get? n := by
@@ -2819,10 +2819,10 @@ theorem tr_respects_aux₂ {k q v} {S : ∀ k, List (Γ k)} {L : ListBlank (∀
           TM1.stepAux q v' ((Tape.move Dir.right^[(S' k).length]) (Tape.mk' ∅ (add_bottom L'))) :=
   by
   dsimp only; simp; cases o <;> simp only [st_write, st_var, tr_st_act, TM1.step_aux]
-  case
-    push f =>
+  case push
+    f =>
     have := tape.write_move_right_n fun a : Γ' => (a.1, update a.2 k (some (f v)))
-    dsimp only at this
+    dsimp only at this 
     refine'
       ⟨_, fun k' => _, by
         rw [tape.move_right_n_head, List.length, tape.mk'_nth_nat, this,
@@ -2839,7 +2839,7 @@ theorem tr_respects_aux₂ {k q v} {S : ∀ k, List (Γ k)} {L : ListBlank (∀
       rw [← proj_map_nth, hL, list_blank.nth_mk]
       cases' lt_or_gt_of_ne h with h h
       · rw [List.getI_append]; simpa only [List.length_map, List.length_reverse] using h
-      · rw [gt_iff_lt] at h
+      · rw [gt_iff_lt] at h 
         rw [List.getI_eq_default, List.getI_eq_default] <;>
           simp only [Nat.add_one_le_iff, h, List.length, le_of_lt, List.length_reverse,
             List.length_append, List.length_map]
@@ -2876,7 +2876,7 @@ theorem tr_respects_aux₂ {k q v} {S : ∀ k, List (Γ k)} {L : ListBlank (∀
         rw [← proj_map_nth, hL, list_blank.nth_mk, e, List.map, List.reverse_cons]
         cases' lt_or_gt_of_ne h with h h
         · rw [List.getI_append]; simpa only [List.length_map, List.length_reverse] using h
-        · rw [gt_iff_lt] at h;
+        · rw [gt_iff_lt] at h ;
           rw [List.getI_eq_default, List.getI_eq_default] <;>
             simp only [Nat.add_one_le_iff, h, List.length, le_of_lt, List.length_reverse,
               List.length_append, List.length_map]
@@ -2953,7 +2953,7 @@ theorem tr_respects_aux {q v T k} {S : ∀ k, List (Γ k)}
   have := hgo.tail' rfl
   rw [tr, TM1.step_aux, tape.move_right_n_head, tape.mk'_nth_nat, add_bottom_nth_snd,
     stk_nth_val _ (hT k), List.get?_len_le (le_of_eq (List.length_reverse _)), Option.isNone, cond,
-    hrun, TM1.step_aux] at this
+    hrun, TM1.step_aux] at this 
   obtain ⟨c, gc, rc⟩ := IH hT'
   refine' ⟨c, gc, (this.to₀.trans hret c (trans_gen.head' rfl _)).to_reflTransGen⟩
   rw [tr, TM1.step_aux, tape.mk'_head, add_bottom_head_fst]
@@ -2974,7 +2974,7 @@ theorem tr_respects : Respects (TM2.step M) (TM1.step tr) tr_cfg := fun c₁ c
   · exact tr_respects_aux M hT s @IH
   · exact IH _ hT
   · unfold TM2.step_aux tr_normal TM1.step_aux
-    cases p v <;> [exact IH₂ _ hT;exact IH₁ _ hT]
+    cases p v <;> [exact IH₂ _ hT; exact IH₁ _ hT]
   · exact ⟨_, ⟨_, hT⟩, refl_trans_gen.refl⟩
   · exact ⟨_, ⟨_, hT⟩, refl_trans_gen.refl⟩
 #align turing.TM2to1.tr_respects Turing.TM2to1.tr_respects
@@ -3002,7 +3002,7 @@ theorem tr_eval_dom (k) (L : List (Γ k)) : (TM1.eval tr (tr_init k L)).Dom ↔
 
 theorem tr_eval (k) (L : List (Γ k)) {L₁ L₂} (H₁ : L₁ ∈ TM1.eval tr (tr_init k L))
     (H₂ : L₂ ∈ TM2.eval M k L) :
-    ∃ (S : ∀ k, List (Γ k))(L' : ListBlank (∀ k, Option (Γ k))),
+    ∃ (S : ∀ k, List (Γ k)) (L' : ListBlank (∀ k, Option (Γ k))),
       add_bottom L' = L₁ ∧
         (∀ k, L'.map (proj k) = ListBlank.mk ((S k).map some).reverse) ∧ S k = L₂ :=
   by
@@ -3029,20 +3029,20 @@ theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports tr (tr_supp S) :=
       rcases Finset.mem_biUnion.1 h with ⟨l, lS, h⟩
       have :=
         this _ (ss.2 l lS) fun x hx => Finset.mem_biUnion.2 ⟨_, lS, Finset.mem_insert_of_mem hx⟩
-      rcases Finset.mem_insert.1 h with (rfl | h) <;> [exact this.1;exact this.2 _ h]
+      rcases Finset.mem_insert.1 h with (rfl | h) <;> [exact this.1; exact this.2 _ h]
     clear h l'; refine' stmt_st_rec _ _ _ _ _ <;> intros
     · -- stack op
-      rw [TM2to1.supports_run] at ss'
+      rw [TM2to1.supports_run] at ss' 
       simp only [TM2to1.tr_stmts₁_run, Finset.mem_union, Finset.mem_insert, Finset.mem_singleton] at
-        sub
+        sub 
       have hgo := sub _ (Or.inl <| Or.inl rfl)
       have hret := sub _ (Or.inl <| Or.inr rfl)
       cases' IH ss' fun x hx => sub x <| Or.inr hx with IH₁ IH₂
       refine'
         ⟨by simp only [tr_normal_run, TM1.supports_stmt] <;> intros <;> exact hgo, fun l h => _⟩
-      rw [tr_stmts₁_run] at h
+      rw [tr_stmts₁_run] at h 
       simp only [TM2to1.tr_stmts₁_run, Finset.mem_union, Finset.mem_insert, Finset.mem_singleton] at
-        h
+        h 
       rcases h with (⟨rfl | rfl⟩ | h)
       · unfold TM1.supports_stmt TM2to1.tr
         rcases s with (_ | _ | _)
@@ -3053,18 +3053,18 @@ theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports tr (tr_supp S) :=
         exact ⟨IH₁, fun _ _ => hret⟩
       · exact IH₂ _ h
     · -- load
-      unfold TM2to1.tr_stmts₁ at ss' sub⊢
+      unfold TM2to1.tr_stmts₁ at ss' sub ⊢
       exact IH ss' sub
     · -- branch
-      unfold TM2to1.tr_stmts₁ at sub
+      unfold TM2to1.tr_stmts₁ at sub 
       cases' IH₁ ss'.1 fun x hx => sub x <| Finset.mem_union_left _ hx with IH₁₁ IH₁₂
       cases' IH₂ ss'.2 fun x hx => sub x <| Finset.mem_union_right _ hx with IH₂₁ IH₂₂
       refine' ⟨⟨IH₁₁, IH₂₁⟩, fun l h => _⟩
-      rw [tr_stmts₁] at h
-      rcases Finset.mem_union.1 h with (h | h) <;> [exact IH₁₂ _ h;exact IH₂₂ _ h]
+      rw [tr_stmts₁] at h 
+      rcases Finset.mem_union.1 h with (h | h) <;> [exact IH₁₂ _ h; exact IH₂₂ _ h]
     · -- goto
       rw [tr_stmts₁]; unfold TM2to1.tr_normal TM1.supports_stmt
-      unfold TM2.supports_stmt at ss'
+      unfold TM2.supports_stmt at ss' 
       exact
         ⟨fun _ v => Finset.mem_biUnion.2 ⟨_, ss' v, Finset.mem_insert_self _ _⟩, fun _ =>
           False.elim⟩
Diff
@@ -1533,7 +1533,7 @@ def SupportsStmt (S : Finset Λ) : stmt → Prop
   | halt => True
 #align turing.TM1.supports_stmt Turing.TM1.SupportsStmt
 
-open Classical
+open scoped Classical
 
 /-- The subterm closure of a statement. -/
 noncomputable def stmts₁ : stmt → Finset stmt
@@ -1766,7 +1766,7 @@ noncomputable def trStmts (S : Finset Λ) : Finset Λ' :=
   TM1.stmts M S ×ˢ Finset.univ
 #align turing.TM1to0.tr_stmts Turing.TM1to0.trStmts
 
-open Classical
+open scoped Classical
 
 attribute [local simp] TM1.stmts₁_self
 
@@ -2137,7 +2137,7 @@ theorem tr_respects : Respects (step M) (step tr) fun c₁ c₂ => tr_cfg c₁ =
 
 omit enc0 encdec
 
-open Classical
+open scoped Classical
 
 parameter [Fintype Γ]
 
@@ -2426,7 +2426,7 @@ def SupportsStmt (S : Finset Λ) : stmt → Prop
   | halt => True
 #align turing.TM2.supports_stmt Turing.TM2.SupportsStmt
 
-open Classical
+open scoped Classical
 
 /-- The set of subtree statements in a statement. -/
 noncomputable def stmts₁ : stmt → Finset stmt
@@ -2791,7 +2791,7 @@ theorem trNormal_run {k} (s q) : tr_normal (st_run s q) = goto fun _ _ => go k s
   rcases s with (_ | _ | _) <;> rfl
 #align turing.TM2to1.tr_normal_run Turing.TM2to1.trNormal_run
 
-open Classical
+open scoped Classical
 
 /-- The set of machine states accessible from an initial TM2 statement. -/
 noncomputable def trStmts₁ : stmt₂ → Finset Λ'
Diff
@@ -423,12 +423,6 @@ def ListBlank.modifyNth {Γ} [Inhabited Γ] (f : Γ → Γ) : ℕ → ListBlank
 #align turing.list_blank.modify_nth Turing.ListBlank.modifyNth
 -/
 
-/- warning: turing.list_blank.nth_modify_nth -> Turing.ListBlank.nth_modifyNth is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] (f : Γ -> Γ) (n : Nat) (i : Nat) (L : Turing.ListBlank.{u1} Γ _inst_1), Eq.{succ u1} Γ (Turing.ListBlank.nth.{u1} Γ _inst_1 (Turing.ListBlank.modifyNth.{u1} Γ _inst_1 f n L) i) (ite.{succ u1} Γ (Eq.{1} Nat i n) (Nat.decidableEq i n) (f (Turing.ListBlank.nth.{u1} Γ _inst_1 L i)) (Turing.ListBlank.nth.{u1} Γ _inst_1 L i))
-but is expected to have type
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] (f : Γ -> Γ) (n : Nat) (i : Nat) (L : Turing.ListBlank.{u1} Γ _inst_1), Eq.{succ u1} Γ (Turing.ListBlank.nth.{u1} Γ _inst_1 (Turing.ListBlank.modifyNth.{u1} Γ _inst_1 f n L) i) (ite.{succ u1} Γ (Eq.{1} Nat i n) (instDecidableEqNat i n) (f (Turing.ListBlank.nth.{u1} Γ _inst_1 L i)) (Turing.ListBlank.nth.{u1} Γ _inst_1 L i))
-Case conversion may be inaccurate. Consider using '#align turing.list_blank.nth_modify_nth Turing.ListBlank.nth_modifyNthₓ'. -/
 theorem ListBlank.nth_modifyNth {Γ} [Inhabited Γ] (f : Γ → Γ) (n i) (L : ListBlank Γ) :
     (L.modifyNth f n).get? i = if i = n then f (L.get? i) else L.get? i :=
   by
@@ -458,36 +452,18 @@ instance {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] : Inhabited (PointedMap Γ Γ')
 instance {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] : CoeFun (PointedMap Γ Γ') fun _ => Γ → Γ' :=
   ⟨PointedMap.f⟩
 
-/- warning: turing.pointed_map.mk_val -> Turing.PointedMap.mk_val is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} {Γ' : Type.{u2}} [_inst_1 : Inhabited.{succ u1} Γ] [_inst_2 : Inhabited.{succ u2} Γ'] (f : Γ -> Γ') (pt : Eq.{succ u2} Γ' (f (Inhabited.default.{succ u1} Γ _inst_1)) (Inhabited.default.{succ u2} Γ' _inst_2)), Eq.{max (succ u1) (succ u2)} ((fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.mk.{u1, u2} Γ Γ' _inst_1 _inst_2 f pt)) (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) (Turing.PointedMap.mk.{u1, u2} Γ Γ' _inst_1 _inst_2 f pt)) f
-but is expected to have type
-  forall {Γ : Type.{u2}} {Γ' : Type.{u1}} [_inst_1 : Inhabited.{succ u2} Γ] [_inst_2 : Inhabited.{succ u1} Γ'] (f : Γ -> Γ') (pt : Eq.{succ u1} Γ' (f (Inhabited.default.{succ u2} Γ _inst_1)) (Inhabited.default.{succ u1} Γ' _inst_2)), Eq.{max (succ u1) (succ u2)} (Γ -> Γ') (Turing.PointedMap.f.{u2, u1} Γ Γ' _inst_1 _inst_2 (Turing.PointedMap.mk.{u2, u1} Γ Γ' _inst_1 _inst_2 f pt)) f
-Case conversion may be inaccurate. Consider using '#align turing.pointed_map.mk_val Turing.PointedMap.mk_valₓ'. -/
 @[simp]
 theorem PointedMap.mk_val {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : Γ → Γ') (pt) :
     (PointedMap.mk f pt : Γ → Γ') = f :=
   rfl
 #align turing.pointed_map.mk_val Turing.PointedMap.mk_val
 
-/- warning: turing.pointed_map.map_pt -> Turing.PointedMap.map_pt is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} {Γ' : Type.{u2}} [_inst_1 : Inhabited.{succ u1} Γ] [_inst_2 : Inhabited.{succ u2} Γ'] (f : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2), Eq.{succ u2} Γ' (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) f (Inhabited.default.{succ u1} Γ _inst_1)) (Inhabited.default.{succ u2} Γ' _inst_2)
-but is expected to have type
-  forall {Γ : Type.{u2}} {Γ' : Type.{u1}} [_inst_1 : Inhabited.{succ u2} Γ] [_inst_2 : Inhabited.{succ u1} Γ'] (f : Turing.PointedMap.{u2, u1} Γ Γ' _inst_1 _inst_2), Eq.{succ u1} Γ' (Turing.PointedMap.f.{u2, u1} Γ Γ' _inst_1 _inst_2 f (Inhabited.default.{succ u2} Γ _inst_1)) (Inhabited.default.{succ u1} Γ' _inst_2)
-Case conversion may be inaccurate. Consider using '#align turing.pointed_map.map_pt Turing.PointedMap.map_ptₓ'. -/
 @[simp]
 theorem PointedMap.map_pt {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') :
     f default = default :=
   PointedMap.map_pt' _
 #align turing.pointed_map.map_pt Turing.PointedMap.map_pt
 
-/- warning: turing.pointed_map.head_map -> Turing.PointedMap.headI_map is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} {Γ' : Type.{u2}} [_inst_1 : Inhabited.{succ u1} Γ] [_inst_2 : Inhabited.{succ u2} Γ'] (f : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (l : List.{u1} Γ), Eq.{succ u2} Γ' (List.headI.{u2} Γ' _inst_2 (List.map.{u1, u2} Γ Γ' (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) f) l)) (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) f (List.headI.{u1} Γ _inst_1 l))
-but is expected to have type
-  forall {Γ : Type.{u2}} {Γ' : Type.{u1}} [_inst_1 : Inhabited.{succ u2} Γ] [_inst_2 : Inhabited.{succ u1} Γ'] (f : Turing.PointedMap.{u2, u1} Γ Γ' _inst_1 _inst_2) (l : List.{u2} Γ), Eq.{succ u1} Γ' (List.headI.{u1} Γ' _inst_2 (List.map.{u2, u1} Γ Γ' (Turing.PointedMap.f.{u2, u1} Γ Γ' _inst_1 _inst_2 f) l)) (Turing.PointedMap.f.{u2, u1} Γ Γ' _inst_1 _inst_2 f (List.headI.{u2} Γ _inst_1 l))
-Case conversion may be inaccurate. Consider using '#align turing.pointed_map.head_map Turing.PointedMap.headI_mapₓ'. -/
 @[simp]
 theorem PointedMap.headI_map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ')
     (l : List Γ) : (l.map f).headI = f l.headI := by
@@ -506,24 +482,12 @@ def ListBlank.map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ'
 #align turing.list_blank.map Turing.ListBlank.map
 -/
 
-/- warning: turing.list_blank.map_mk -> Turing.ListBlank.map_mk is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} {Γ' : Type.{u2}} [_inst_1 : Inhabited.{succ u1} Γ] [_inst_2 : Inhabited.{succ u2} Γ'] (f : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (l : List.{u1} Γ), Eq.{succ u2} (Turing.ListBlank.{u2} Γ' _inst_2) (Turing.ListBlank.map.{u1, u2} Γ Γ' _inst_1 _inst_2 f (Turing.ListBlank.mk.{u1} Γ _inst_1 l)) (Turing.ListBlank.mk.{u2} Γ' _inst_2 (List.map.{u1, u2} Γ Γ' (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) f) l))
-but is expected to have type
-  forall {Γ : Type.{u2}} {Γ' : Type.{u1}} [_inst_1 : Inhabited.{succ u2} Γ] [_inst_2 : Inhabited.{succ u1} Γ'] (f : Turing.PointedMap.{u2, u1} Γ Γ' _inst_1 _inst_2) (l : List.{u2} Γ), Eq.{succ u1} (Turing.ListBlank.{u1} Γ' _inst_2) (Turing.ListBlank.map.{u2, u1} Γ Γ' _inst_1 _inst_2 f (Turing.ListBlank.mk.{u2} Γ _inst_1 l)) (Turing.ListBlank.mk.{u1} Γ' _inst_2 (List.map.{u2, u1} Γ Γ' (Turing.PointedMap.f.{u2, u1} Γ Γ' _inst_1 _inst_2 f) l))
-Case conversion may be inaccurate. Consider using '#align turing.list_blank.map_mk Turing.ListBlank.map_mkₓ'. -/
 @[simp]
 theorem ListBlank.map_mk {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') (l : List Γ) :
     (ListBlank.mk l).map f = ListBlank.mk (l.map f) :=
   rfl
 #align turing.list_blank.map_mk Turing.ListBlank.map_mk
 
-/- warning: turing.list_blank.head_map -> Turing.ListBlank.head_map is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} {Γ' : Type.{u2}} [_inst_1 : Inhabited.{succ u1} Γ] [_inst_2 : Inhabited.{succ u2} Γ'] (f : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (l : Turing.ListBlank.{u1} Γ _inst_1), Eq.{succ u2} Γ' (Turing.ListBlank.head.{u2} Γ' _inst_2 (Turing.ListBlank.map.{u1, u2} Γ Γ' _inst_1 _inst_2 f l)) (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) f (Turing.ListBlank.head.{u1} Γ _inst_1 l))
-but is expected to have type
-  forall {Γ : Type.{u2}} {Γ' : Type.{u1}} [_inst_1 : Inhabited.{succ u2} Γ] [_inst_2 : Inhabited.{succ u1} Γ'] (f : Turing.PointedMap.{u2, u1} Γ Γ' _inst_1 _inst_2) (l : Turing.ListBlank.{u2} Γ _inst_1), Eq.{succ u1} Γ' (Turing.ListBlank.head.{u1} Γ' _inst_2 (Turing.ListBlank.map.{u2, u1} Γ Γ' _inst_1 _inst_2 f l)) (Turing.PointedMap.f.{u2, u1} Γ Γ' _inst_1 _inst_2 f (Turing.ListBlank.head.{u2} Γ _inst_1 l))
-Case conversion may be inaccurate. Consider using '#align turing.list_blank.head_map Turing.ListBlank.head_mapₓ'. -/
 @[simp]
 theorem ListBlank.head_map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ')
     (l : ListBlank Γ) : (l.map f).headI = f l.headI :=
@@ -534,12 +498,6 @@ theorem ListBlank.head_map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedM
   exact Quotient.inductionOn' l fun a => rfl
 #align turing.list_blank.head_map Turing.ListBlank.head_map
 
-/- warning: turing.list_blank.tail_map -> Turing.ListBlank.tail_map is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} {Γ' : Type.{u2}} [_inst_1 : Inhabited.{succ u1} Γ] [_inst_2 : Inhabited.{succ u2} Γ'] (f : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (l : Turing.ListBlank.{u1} Γ _inst_1), Eq.{succ u2} (Turing.ListBlank.{u2} Γ' _inst_2) (Turing.ListBlank.tail.{u2} Γ' _inst_2 (Turing.ListBlank.map.{u1, u2} Γ Γ' _inst_1 _inst_2 f l)) (Turing.ListBlank.map.{u1, u2} Γ Γ' _inst_1 _inst_2 f (Turing.ListBlank.tail.{u1} Γ _inst_1 l))
-but is expected to have type
-  forall {Γ : Type.{u2}} {Γ' : Type.{u1}} [_inst_1 : Inhabited.{succ u2} Γ] [_inst_2 : Inhabited.{succ u1} Γ'] (f : Turing.PointedMap.{u2, u1} Γ Γ' _inst_1 _inst_2) (l : Turing.ListBlank.{u2} Γ _inst_1), Eq.{succ u1} (Turing.ListBlank.{u1} Γ' _inst_2) (Turing.ListBlank.tail.{u1} Γ' _inst_2 (Turing.ListBlank.map.{u2, u1} Γ Γ' _inst_1 _inst_2 f l)) (Turing.ListBlank.map.{u2, u1} Γ Γ' _inst_1 _inst_2 f (Turing.ListBlank.tail.{u2} Γ _inst_1 l))
-Case conversion may be inaccurate. Consider using '#align turing.list_blank.tail_map Turing.ListBlank.tail_mapₓ'. -/
 @[simp]
 theorem ListBlank.tail_map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ')
     (l : ListBlank Γ) : (l.map f).tail = l.tail.map f :=
@@ -550,12 +508,6 @@ theorem ListBlank.tail_map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedM
   exact Quotient.inductionOn' l fun a => rfl
 #align turing.list_blank.tail_map Turing.ListBlank.tail_map
 
-/- warning: turing.list_blank.map_cons -> Turing.ListBlank.map_cons is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} {Γ' : Type.{u2}} [_inst_1 : Inhabited.{succ u1} Γ] [_inst_2 : Inhabited.{succ u2} Γ'] (f : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (l : Turing.ListBlank.{u1} Γ _inst_1) (a : Γ), Eq.{succ u2} (Turing.ListBlank.{u2} Γ' _inst_2) (Turing.ListBlank.map.{u1, u2} Γ Γ' _inst_1 _inst_2 f (Turing.ListBlank.cons.{u1} Γ _inst_1 a l)) (Turing.ListBlank.cons.{u2} Γ' _inst_2 (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) f a) (Turing.ListBlank.map.{u1, u2} Γ Γ' _inst_1 _inst_2 f l))
-but is expected to have type
-  forall {Γ : Type.{u2}} {Γ' : Type.{u1}} [_inst_1 : Inhabited.{succ u2} Γ] [_inst_2 : Inhabited.{succ u1} Γ'] (f : Turing.PointedMap.{u2, u1} Γ Γ' _inst_1 _inst_2) (l : Turing.ListBlank.{u2} Γ _inst_1) (a : Γ), Eq.{succ u1} (Turing.ListBlank.{u1} Γ' _inst_2) (Turing.ListBlank.map.{u2, u1} Γ Γ' _inst_1 _inst_2 f (Turing.ListBlank.cons.{u2} Γ _inst_1 a l)) (Turing.ListBlank.cons.{u1} Γ' _inst_2 (Turing.PointedMap.f.{u2, u1} Γ Γ' _inst_1 _inst_2 f a) (Turing.ListBlank.map.{u2, u1} Γ Γ' _inst_1 _inst_2 f l))
-Case conversion may be inaccurate. Consider using '#align turing.list_blank.map_cons Turing.ListBlank.map_consₓ'. -/
 @[simp]
 theorem ListBlank.map_cons {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ')
     (l : ListBlank Γ) (a : Γ) : (l.cons a).map f = (l.map f).cons (f a) :=
@@ -564,12 +516,6 @@ theorem ListBlank.map_cons {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedM
   simp only [list_blank.head_map, list_blank.head_cons, list_blank.tail_map, list_blank.tail_cons]
 #align turing.list_blank.map_cons Turing.ListBlank.map_cons
 
-/- warning: turing.list_blank.nth_map -> Turing.ListBlank.nth_map is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} {Γ' : Type.{u2}} [_inst_1 : Inhabited.{succ u1} Γ] [_inst_2 : Inhabited.{succ u2} Γ'] (f : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (l : Turing.ListBlank.{u1} Γ _inst_1) (n : Nat), Eq.{succ u2} Γ' (Turing.ListBlank.nth.{u2} Γ' _inst_2 (Turing.ListBlank.map.{u1, u2} Γ Γ' _inst_1 _inst_2 f l) n) (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) f (Turing.ListBlank.nth.{u1} Γ _inst_1 l n))
-but is expected to have type
-  forall {Γ : Type.{u2}} {Γ' : Type.{u1}} [_inst_1 : Inhabited.{succ u2} Γ] [_inst_2 : Inhabited.{succ u1} Γ'] (f : Turing.PointedMap.{u2, u1} Γ Γ' _inst_1 _inst_2) (l : Turing.ListBlank.{u2} Γ _inst_1) (n : Nat), Eq.{succ u1} Γ' (Turing.ListBlank.nth.{u1} Γ' _inst_2 (Turing.ListBlank.map.{u2, u1} Γ Γ' _inst_1 _inst_2 f l) n) (Turing.PointedMap.f.{u2, u1} Γ Γ' _inst_1 _inst_2 f (Turing.ListBlank.nth.{u2} Γ _inst_1 l n))
-Case conversion may be inaccurate. Consider using '#align turing.list_blank.nth_map Turing.ListBlank.nth_mapₓ'. -/
 @[simp]
 theorem ListBlank.nth_map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ')
     (l : ListBlank Γ) (n : ℕ) : (l.map f).get? n = f (l.get? n) :=
@@ -588,22 +534,10 @@ def proj {ι : Type _} {Γ : ι → Type _} [∀ i, Inhabited (Γ i)] (i : ι) :
 #align turing.proj Turing.proj
 -/
 
-/- warning: turing.proj_map_nth -> Turing.proj_map_nth is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {Γ : ι -> Type.{u2}} [_inst_1 : forall (i : ι), Inhabited.{succ u2} (Γ i)] (i : ι) (L : Turing.ListBlank.{max u1 u2} (forall (i : ι), Γ i) (Pi.inhabited.{succ u1, succ u2} ι (fun (i : ι) => Γ i) (fun (x : ι) => (fun (i : ι) => _inst_1 i) x))) (n : Nat), Eq.{succ u2} (Γ i) (Turing.ListBlank.nth.{u2} (Γ i) ((fun (i : ι) => _inst_1 i) i) (Turing.ListBlank.map.{max u1 u2, u2} (forall (i : ι), Γ i) (Γ i) (Pi.inhabited.{succ u1, succ u2} ι (fun (i : ι) => Γ i) (fun (x : ι) => (fun (i : ι) => _inst_1 i) x)) ((fun (i : ι) => _inst_1 i) i) (Turing.proj.{u1, u2} ι Γ (fun (i : ι) => _inst_1 i) i) L) n) (Turing.ListBlank.nth.{max u1 u2} (forall (i : ι), Γ i) (Pi.inhabited.{succ u1, succ u2} ι (fun (i : ι) => Γ i) (fun (x : ι) => (fun (i : ι) => _inst_1 i) x)) L n i)
-but is expected to have type
-  forall {ι : Type.{u2}} {Γ : ι -> Type.{u1}} [_inst_1 : forall (i : ι), Inhabited.{succ u1} (Γ i)] (i : ι) (L : Turing.ListBlank.{max u2 u1} (forall (i : ι), Γ i) (instInhabitedForAll_1.{succ u2, succ u1} ι (fun (i : ι) => Γ i) (fun (x : ι) => _inst_1 x))) (n : Nat), Eq.{succ u1} (Γ i) (Turing.ListBlank.nth.{u1} (Γ i) (_inst_1 i) (Turing.ListBlank.map.{max u2 u1, u1} (forall (i : ι), Γ i) (Γ i) (instInhabitedForAll_1.{succ u2, succ u1} ι (fun (i : ι) => Γ i) (fun (x : ι) => _inst_1 x)) (_inst_1 i) (Turing.proj.{u2, u1} ι Γ (fun (i : ι) => _inst_1 i) i) L) n) (Turing.ListBlank.nth.{max u2 u1} (forall (i : ι), Γ i) (instInhabitedForAll_1.{succ u2, succ u1} ι (fun (i : ι) => Γ i) (fun (x : ι) => _inst_1 x)) L n i)
-Case conversion may be inaccurate. Consider using '#align turing.proj_map_nth Turing.proj_map_nthₓ'. -/
 theorem proj_map_nth {ι : Type _} {Γ : ι → Type _} [∀ i, Inhabited (Γ i)] (i : ι) (L n) :
     (ListBlank.map (@proj ι Γ _ i) L).get? n = L.get? n i := by rw [list_blank.nth_map] <;> rfl
 #align turing.proj_map_nth Turing.proj_map_nth
 
-/- warning: turing.list_blank.map_modify_nth -> Turing.ListBlank.map_modifyNth is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} {Γ' : Type.{u2}} [_inst_1 : Inhabited.{succ u1} Γ] [_inst_2 : Inhabited.{succ u2} Γ'] (F : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (f : Γ -> Γ) (f' : Γ' -> Γ'), (forall (x : Γ), Eq.{succ u2} Γ' (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) F (f x)) (f' (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) F x))) -> (forall (n : Nat) (L : Turing.ListBlank.{u1} Γ _inst_1), Eq.{succ u2} (Turing.ListBlank.{u2} Γ' _inst_2) (Turing.ListBlank.map.{u1, u2} Γ Γ' _inst_1 _inst_2 F (Turing.ListBlank.modifyNth.{u1} Γ _inst_1 f n L)) (Turing.ListBlank.modifyNth.{u2} Γ' _inst_2 f' n (Turing.ListBlank.map.{u1, u2} Γ Γ' _inst_1 _inst_2 F L)))
-but is expected to have type
-  forall {Γ : Type.{u2}} {Γ' : Type.{u1}} [_inst_1 : Inhabited.{succ u2} Γ] [_inst_2 : Inhabited.{succ u1} Γ'] (F : Turing.PointedMap.{u2, u1} Γ Γ' _inst_1 _inst_2) (f : Γ -> Γ) (f' : Γ' -> Γ'), (forall (x : Γ), Eq.{succ u1} Γ' (Turing.PointedMap.f.{u2, u1} Γ Γ' _inst_1 _inst_2 F (f x)) (f' (Turing.PointedMap.f.{u2, u1} Γ Γ' _inst_1 _inst_2 F x))) -> (forall (n : Nat) (L : Turing.ListBlank.{u2} Γ _inst_1), Eq.{succ u1} (Turing.ListBlank.{u1} Γ' _inst_2) (Turing.ListBlank.map.{u2, u1} Γ Γ' _inst_1 _inst_2 F (Turing.ListBlank.modifyNth.{u2} Γ _inst_1 f n L)) (Turing.ListBlank.modifyNth.{u1} Γ' _inst_2 f' n (Turing.ListBlank.map.{u2, u1} Γ Γ' _inst_1 _inst_2 F L)))
-Case conversion may be inaccurate. Consider using '#align turing.list_blank.map_modify_nth Turing.ListBlank.map_modifyNthₓ'. -/
 theorem ListBlank.map_modifyNth {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (F : PointedMap Γ Γ')
     (f : Γ → Γ) (f' : Γ' → Γ') (H : ∀ x, F (f x) = f' (F x)) (n) (L : ListBlank Γ) :
     (L.modifyNth f n).map F = (L.map F).modifyNth f' n := by
@@ -652,24 +586,12 @@ def ListBlank.bind {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (l : ListBlank Γ) (f
 #align turing.list_blank.bind Turing.ListBlank.bind
 -/
 
-/- warning: turing.list_blank.bind_mk -> Turing.ListBlank.bind_mk is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} {Γ' : Type.{u2}} [_inst_1 : Inhabited.{succ u1} Γ] [_inst_2 : Inhabited.{succ u2} Γ'] (l : List.{u1} Γ) (f : Γ -> (List.{u2} Γ')) (hf : Exists.{1} Nat (fun (n : Nat) => Eq.{succ u2} (List.{u2} Γ') (f (Inhabited.default.{succ u1} Γ _inst_1)) (List.replicate.{u2} Γ' n (Inhabited.default.{succ u2} Γ' _inst_2)))), Eq.{succ u2} (Turing.ListBlank.{u2} Γ' _inst_2) (Turing.ListBlank.bind.{u1, u2} Γ Γ' _inst_1 _inst_2 (Turing.ListBlank.mk.{u1} Γ _inst_1 l) f hf) (Turing.ListBlank.mk.{u2} Γ' _inst_2 (List.bind.{u1, u2} Γ Γ' l f))
-but is expected to have type
-  forall {Γ : Type.{u2}} {Γ' : Type.{u1}} [_inst_1 : Inhabited.{succ u2} Γ] [_inst_2 : Inhabited.{succ u1} Γ'] (l : List.{u2} Γ) (f : Γ -> (List.{u1} Γ')) (hf : Exists.{1} Nat (fun (n : Nat) => Eq.{succ u1} (List.{u1} Γ') (f (Inhabited.default.{succ u2} Γ _inst_1)) (List.replicate.{u1} Γ' n (Inhabited.default.{succ u1} Γ' _inst_2)))), Eq.{succ u1} (Turing.ListBlank.{u1} Γ' _inst_2) (Turing.ListBlank.bind.{u2, u1} Γ Γ' _inst_1 _inst_2 (Turing.ListBlank.mk.{u2} Γ _inst_1 l) f hf) (Turing.ListBlank.mk.{u1} Γ' _inst_2 (List.bind.{u2, u1} Γ Γ' l f))
-Case conversion may be inaccurate. Consider using '#align turing.list_blank.bind_mk Turing.ListBlank.bind_mkₓ'. -/
 @[simp]
 theorem ListBlank.bind_mk {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (l : List Γ) (f : Γ → List Γ') (hf) :
     (ListBlank.mk l).bind f hf = ListBlank.mk (l.bind f) :=
   rfl
 #align turing.list_blank.bind_mk Turing.ListBlank.bind_mk
 
-/- warning: turing.list_blank.cons_bind -> Turing.ListBlank.cons_bind is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} {Γ' : Type.{u2}} [_inst_1 : Inhabited.{succ u1} Γ] [_inst_2 : Inhabited.{succ u2} Γ'] (a : Γ) (l : Turing.ListBlank.{u1} Γ _inst_1) (f : Γ -> (List.{u2} Γ')) (hf : Exists.{1} Nat (fun (n : Nat) => Eq.{succ u2} (List.{u2} Γ') (f (Inhabited.default.{succ u1} Γ _inst_1)) (List.replicate.{u2} Γ' n (Inhabited.default.{succ u2} Γ' _inst_2)))), Eq.{succ u2} (Turing.ListBlank.{u2} Γ' _inst_2) (Turing.ListBlank.bind.{u1, u2} Γ Γ' _inst_1 _inst_2 (Turing.ListBlank.cons.{u1} Γ _inst_1 a l) f hf) (Turing.ListBlank.append.{u2} Γ' _inst_2 (f a) (Turing.ListBlank.bind.{u1, u2} Γ Γ' _inst_1 _inst_2 l f hf))
-but is expected to have type
-  forall {Γ : Type.{u2}} {Γ' : Type.{u1}} [_inst_1 : Inhabited.{succ u2} Γ] [_inst_2 : Inhabited.{succ u1} Γ'] (a : Γ) (l : Turing.ListBlank.{u2} Γ _inst_1) (f : Γ -> (List.{u1} Γ')) (hf : Exists.{1} Nat (fun (n : Nat) => Eq.{succ u1} (List.{u1} Γ') (f (Inhabited.default.{succ u2} Γ _inst_1)) (List.replicate.{u1} Γ' n (Inhabited.default.{succ u1} Γ' _inst_2)))), Eq.{succ u1} (Turing.ListBlank.{u1} Γ' _inst_2) (Turing.ListBlank.bind.{u2, u1} Γ Γ' _inst_1 _inst_2 (Turing.ListBlank.cons.{u2} Γ _inst_1 a l) f hf) (Turing.ListBlank.append.{u1} Γ' _inst_2 (f a) (Turing.ListBlank.bind.{u2, u1} Γ Γ' _inst_1 _inst_2 l f hf))
-Case conversion may be inaccurate. Consider using '#align turing.list_blank.cons_bind Turing.ListBlank.cons_bindₓ'. -/
 @[simp]
 theorem ListBlank.cons_bind {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (a : Γ) (l : ListBlank Γ)
     (f : Γ → List Γ') (hf) : (l.cons a).bind f hf = (l.bind f hf).append (f a) :=
@@ -905,12 +827,6 @@ theorem Tape.write_self {Γ} [Inhabited Γ] : ∀ T : Tape Γ, T.write T.1 = T :
 #align turing.tape.write_self Turing.Tape.write_self
 -/
 
-/- warning: turing.tape.write_nth -> Turing.Tape.write_nth is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] (b : Γ) (T : Turing.Tape.{u1} Γ _inst_1) {i : Int}, Eq.{succ u1} Γ (Turing.Tape.nth.{u1} Γ _inst_1 (Turing.Tape.write.{u1} Γ _inst_1 b T) i) (ite.{succ u1} Γ (Eq.{1} Int i (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero)))) (Int.decidableEq i (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero)))) b (Turing.Tape.nth.{u1} Γ _inst_1 T i))
-but is expected to have type
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] (b : Γ) (T : Turing.Tape.{u1} Γ _inst_1) {i : Int}, Eq.{succ u1} Γ (Turing.Tape.nth.{u1} Γ _inst_1 (Turing.Tape.write.{u1} Γ _inst_1 b T) i) (ite.{succ u1} Γ (Eq.{1} Int i (OfNat.ofNat.{0} Int 0 (instOfNatInt 0))) (Int.instDecidableEqInt i (OfNat.ofNat.{0} Int 0 (instOfNatInt 0))) b (Turing.Tape.nth.{u1} Γ _inst_1 T i))
-Case conversion may be inaccurate. Consider using '#align turing.tape.write_nth Turing.Tape.write_nthₓ'. -/
 @[simp]
 theorem Tape.write_nth {Γ} [Inhabited Γ] (b : Γ) :
     ∀ (T : Tape Γ) {i : ℤ}, (T.write b).get? i = if i = 0 then b else T.get? i
@@ -935,23 +851,11 @@ def Tape.map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') (T
 #align turing.tape.map Turing.Tape.map
 -/
 
-/- warning: turing.tape.map_fst -> Turing.Tape.map_fst is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} {Γ' : Type.{u2}} [_inst_1 : Inhabited.{succ u1} Γ] [_inst_2 : Inhabited.{succ u2} Γ'] (f : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (T : Turing.Tape.{u1} Γ _inst_1), Eq.{succ u2} Γ' (Turing.Tape.head.{u2} Γ' _inst_2 (Turing.Tape.map.{u1, u2} Γ Γ' _inst_1 _inst_2 f T)) (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) f (Turing.Tape.head.{u1} Γ _inst_1 T))
-but is expected to have type
-  forall {Γ : Type.{u2}} {Γ' : Type.{u1}} [_inst_1 : Inhabited.{succ u2} Γ] [_inst_2 : Inhabited.{succ u1} Γ'] (f : Turing.PointedMap.{u2, u1} Γ Γ' _inst_1 _inst_2) (T : Turing.Tape.{u2} Γ _inst_1), Eq.{succ u1} Γ' (Turing.Tape.head.{u1} Γ' _inst_2 (Turing.Tape.map.{u2, u1} Γ Γ' _inst_1 _inst_2 f T)) (Turing.PointedMap.f.{u2, u1} Γ Γ' _inst_1 _inst_2 f (Turing.Tape.head.{u2} Γ _inst_1 T))
-Case conversion may be inaccurate. Consider using '#align turing.tape.map_fst Turing.Tape.map_fstₓ'. -/
 @[simp]
 theorem Tape.map_fst {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') :
     ∀ T : Tape Γ, (T.map f).1 = f T.1 := by rintro ⟨⟩ <;> rfl
 #align turing.tape.map_fst Turing.Tape.map_fst
 
-/- warning: turing.tape.map_write -> Turing.Tape.map_write is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} {Γ' : Type.{u2}} [_inst_1 : Inhabited.{succ u1} Γ] [_inst_2 : Inhabited.{succ u2} Γ'] (f : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (b : Γ) (T : Turing.Tape.{u1} Γ _inst_1), Eq.{succ u2} (Turing.Tape.{u2} Γ' _inst_2) (Turing.Tape.map.{u1, u2} Γ Γ' _inst_1 _inst_2 f (Turing.Tape.write.{u1} Γ _inst_1 b T)) (Turing.Tape.write.{u2} Γ' _inst_2 (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) f b) (Turing.Tape.map.{u1, u2} Γ Γ' _inst_1 _inst_2 f T))
-but is expected to have type
-  forall {Γ : Type.{u2}} {Γ' : Type.{u1}} [_inst_1 : Inhabited.{succ u2} Γ] [_inst_2 : Inhabited.{succ u1} Γ'] (f : Turing.PointedMap.{u2, u1} Γ Γ' _inst_1 _inst_2) (b : Γ) (T : Turing.Tape.{u2} Γ _inst_1), Eq.{succ u1} (Turing.Tape.{u1} Γ' _inst_2) (Turing.Tape.map.{u2, u1} Γ Γ' _inst_1 _inst_2 f (Turing.Tape.write.{u2} Γ _inst_1 b T)) (Turing.Tape.write.{u1} Γ' _inst_2 (Turing.PointedMap.f.{u2, u1} Γ Γ' _inst_1 _inst_2 f b) (Turing.Tape.map.{u2, u1} Γ Γ' _inst_1 _inst_2 f T))
-Case conversion may be inaccurate. Consider using '#align turing.tape.map_write Turing.Tape.map_writeₓ'. -/
 @[simp]
 theorem Tape.map_write {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') (b : Γ) :
     ∀ T : Tape Γ, (T.write b).map f = (T.map f).write (f b) := by rintro ⟨⟩ <;> rfl
@@ -971,12 +875,6 @@ theorem Tape.write_move_right_n {Γ} [Inhabited Γ] (f : Γ → Γ) (L R : ListB
 #align turing.tape.write_move_right_n Turing.Tape.write_move_right_n
 -/
 
-/- warning: turing.tape.map_move -> Turing.Tape.map_move is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} {Γ' : Type.{u2}} [_inst_1 : Inhabited.{succ u1} Γ] [_inst_2 : Inhabited.{succ u2} Γ'] (f : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (T : Turing.Tape.{u1} Γ _inst_1) (d : Turing.Dir), Eq.{succ u2} (Turing.Tape.{u2} Γ' _inst_2) (Turing.Tape.map.{u1, u2} Γ Γ' _inst_1 _inst_2 f (Turing.Tape.move.{u1} Γ _inst_1 d T)) (Turing.Tape.move.{u2} Γ' _inst_2 d (Turing.Tape.map.{u1, u2} Γ Γ' _inst_1 _inst_2 f T))
-but is expected to have type
-  forall {Γ : Type.{u2}} {Γ' : Type.{u1}} [_inst_1 : Inhabited.{succ u2} Γ] [_inst_2 : Inhabited.{succ u1} Γ'] (f : Turing.PointedMap.{u2, u1} Γ Γ' _inst_1 _inst_2) (T : Turing.Tape.{u2} Γ _inst_1) (d : Turing.Dir), Eq.{succ u1} (Turing.Tape.{u1} Γ' _inst_2) (Turing.Tape.map.{u2, u1} Γ Γ' _inst_1 _inst_2 f (Turing.Tape.move.{u2} Γ _inst_1 d T)) (Turing.Tape.move.{u1} Γ' _inst_2 d (Turing.Tape.map.{u2, u1} Γ Γ' _inst_1 _inst_2 f T))
-Case conversion may be inaccurate. Consider using '#align turing.tape.map_move Turing.Tape.map_moveₓ'. -/
 theorem Tape.map_move {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') (T : Tape Γ) (d) :
     (T.move d).map f = (T.map f).move d := by
   cases T <;> cases d <;>
@@ -984,35 +882,17 @@ theorem Tape.map_move {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ
       and_self_iff, list_blank.tail_map]
 #align turing.tape.map_move Turing.Tape.map_move
 
-/- warning: turing.tape.map_mk' -> Turing.Tape.map_mk' is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} {Γ' : Type.{u2}} [_inst_1 : Inhabited.{succ u1} Γ] [_inst_2 : Inhabited.{succ u2} Γ'] (f : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (L : Turing.ListBlank.{u1} Γ _inst_1) (R : Turing.ListBlank.{u1} Γ _inst_1), Eq.{succ u2} (Turing.Tape.{u2} Γ' _inst_2) (Turing.Tape.map.{u1, u2} Γ Γ' _inst_1 _inst_2 f (Turing.Tape.mk'.{u1} Γ _inst_1 L R)) (Turing.Tape.mk'.{u2} Γ' _inst_2 (Turing.ListBlank.map.{u1, u2} Γ Γ' _inst_1 _inst_2 f L) (Turing.ListBlank.map.{u1, u2} Γ Γ' _inst_1 _inst_2 f R))
-but is expected to have type
-  forall {Γ : Type.{u2}} {Γ' : Type.{u1}} [_inst_1 : Inhabited.{succ u2} Γ] [_inst_2 : Inhabited.{succ u1} Γ'] (f : Turing.PointedMap.{u2, u1} Γ Γ' _inst_1 _inst_2) (L : Turing.ListBlank.{u2} Γ _inst_1) (R : Turing.ListBlank.{u2} Γ _inst_1), Eq.{succ u1} (Turing.Tape.{u1} Γ' _inst_2) (Turing.Tape.map.{u2, u1} Γ Γ' _inst_1 _inst_2 f (Turing.Tape.mk'.{u2} Γ _inst_1 L R)) (Turing.Tape.mk'.{u1} Γ' _inst_2 (Turing.ListBlank.map.{u2, u1} Γ Γ' _inst_1 _inst_2 f L) (Turing.ListBlank.map.{u2, u1} Γ Γ' _inst_1 _inst_2 f R))
-Case conversion may be inaccurate. Consider using '#align turing.tape.map_mk' Turing.Tape.map_mk'ₓ'. -/
 theorem Tape.map_mk' {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') (L R : ListBlank Γ) :
     (Tape.mk' L R).map f = Tape.mk' (L.map f) (R.map f) := by
   simp only [tape.mk', tape.map, list_blank.head_map, eq_self_iff_true, and_self_iff,
     list_blank.tail_map]
 #align turing.tape.map_mk' Turing.Tape.map_mk'
 
-/- warning: turing.tape.map_mk₂ -> Turing.Tape.map_mk₂ is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} {Γ' : Type.{u2}} [_inst_1 : Inhabited.{succ u1} Γ] [_inst_2 : Inhabited.{succ u2} Γ'] (f : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (L : List.{u1} Γ) (R : List.{u1} Γ), Eq.{succ u2} (Turing.Tape.{u2} Γ' _inst_2) (Turing.Tape.map.{u1, u2} Γ Γ' _inst_1 _inst_2 f (Turing.Tape.mk₂.{u1} Γ _inst_1 L R)) (Turing.Tape.mk₂.{u2} Γ' _inst_2 (List.map.{u1, u2} Γ Γ' (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) f) L) (List.map.{u1, u2} Γ Γ' (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) f) R))
-but is expected to have type
-  forall {Γ : Type.{u2}} {Γ' : Type.{u1}} [_inst_1 : Inhabited.{succ u2} Γ] [_inst_2 : Inhabited.{succ u1} Γ'] (f : Turing.PointedMap.{u2, u1} Γ Γ' _inst_1 _inst_2) (L : List.{u2} Γ) (R : List.{u2} Γ), Eq.{succ u1} (Turing.Tape.{u1} Γ' _inst_2) (Turing.Tape.map.{u2, u1} Γ Γ' _inst_1 _inst_2 f (Turing.Tape.mk₂.{u2} Γ _inst_1 L R)) (Turing.Tape.mk₂.{u1} Γ' _inst_2 (List.map.{u2, u1} Γ Γ' (Turing.PointedMap.f.{u2, u1} Γ Γ' _inst_1 _inst_2 f) L) (List.map.{u2, u1} Γ Γ' (Turing.PointedMap.f.{u2, u1} Γ Γ' _inst_1 _inst_2 f) R))
-Case conversion may be inaccurate. Consider using '#align turing.tape.map_mk₂ Turing.Tape.map_mk₂ₓ'. -/
 theorem Tape.map_mk₂ {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') (L R : List Γ) :
     (Tape.mk₂ L R).map f = Tape.mk₂ (L.map f) (R.map f) := by
   simp only [tape.mk₂, tape.map_mk', list_blank.map_mk]
 #align turing.tape.map_mk₂ Turing.Tape.map_mk₂
 
-/- warning: turing.tape.map_mk₁ -> Turing.Tape.map_mk₁ is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} {Γ' : Type.{u2}} [_inst_1 : Inhabited.{succ u1} Γ] [_inst_2 : Inhabited.{succ u2} Γ'] (f : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (l : List.{u1} Γ), Eq.{succ u2} (Turing.Tape.{u2} Γ' _inst_2) (Turing.Tape.map.{u1, u2} Γ Γ' _inst_1 _inst_2 f (Turing.Tape.mk₁.{u1} Γ _inst_1 l)) (Turing.Tape.mk₁.{u2} Γ' _inst_2 (List.map.{u1, u2} Γ Γ' (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) f) l))
-but is expected to have type
-  forall {Γ : Type.{u2}} {Γ' : Type.{u1}} [_inst_1 : Inhabited.{succ u2} Γ] [_inst_2 : Inhabited.{succ u1} Γ'] (f : Turing.PointedMap.{u2, u1} Γ Γ' _inst_1 _inst_2) (l : List.{u2} Γ), Eq.{succ u1} (Turing.Tape.{u1} Γ' _inst_2) (Turing.Tape.map.{u2, u1} Γ Γ' _inst_1 _inst_2 f (Turing.Tape.mk₁.{u2} Γ _inst_1 l)) (Turing.Tape.mk₁.{u1} Γ' _inst_2 (List.map.{u2, u1} Γ Γ' (Turing.PointedMap.f.{u2, u1} Γ Γ' _inst_1 _inst_2 f) l))
-Case conversion may be inaccurate. Consider using '#align turing.tape.map_mk₁ Turing.Tape.map_mk₁ₓ'. -/
 theorem Tape.map_mk₁ {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ') (l : List Γ) :
     (Tape.mk₁ l).map f = Tape.mk₁ (l.map f) :=
   Tape.map_mk₂ _ _ _
@@ -1217,12 +1097,6 @@ def Respects {σ₁ σ₂} (f₁ : σ₁ → Option σ₁) (f₂ : σ₂ → Opt
 #align turing.respects Turing.Respects
 -/
 
-/- warning: turing.tr_reaches₁ -> Turing.tr_reaches₁ is a dubious translation:
-lean 3 declaration is
-  forall {σ₁ : Type.{u1}} {σ₂ : Type.{u2}} {f₁ : σ₁ -> (Option.{u1} σ₁)} {f₂ : σ₂ -> (Option.{u2} σ₂)} {tr : σ₁ -> σ₂ -> Prop}, (Turing.Respects.{u1, u2} σ₁ σ₂ f₁ f₂ tr) -> (forall {a₁ : σ₁} {a₂ : σ₂}, (tr a₁ a₂) -> (forall {b₁ : σ₁}, (Turing.Reaches₁.{u1} σ₁ f₁ a₁ b₁) -> (Exists.{succ u2} σ₂ (fun (b₂ : σ₂) => And (tr b₁ b₂) (Turing.Reaches₁.{u2} σ₂ f₂ a₂ b₂)))))
-but is expected to have type
-  forall {σ₁ : Type.{u2}} {σ₂ : Type.{u1}} {f₁ : σ₁ -> (Option.{u2} σ₁)} {f₂ : σ₂ -> (Option.{u1} σ₂)} {tr : σ₁ -> σ₂ -> Prop}, (Turing.Respects.{u2, u1} σ₁ σ₂ f₁ f₂ tr) -> (forall {a₁ : σ₁} {a₂ : σ₂}, (tr a₁ a₂) -> (forall {b₁ : σ₁}, (Turing.Reaches₁.{u2} σ₁ f₁ a₁ b₁) -> (Exists.{succ u1} σ₂ (fun (b₂ : σ₂) => And (tr b₁ b₂) (Turing.Reaches₁.{u1} σ₂ f₂ a₂ b₂)))))
-Case conversion may be inaccurate. Consider using '#align turing.tr_reaches₁ Turing.tr_reaches₁ₓ'. -/
 theorem tr_reaches₁ {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H : Respects f₁ f₂ tr) {a₁ a₂}
     (aa : tr a₁ a₂) {b₁} (ab : Reaches₁ f₁ a₁ b₁) : ∃ b₂, tr b₁ b₂ ∧ Reaches₁ f₂ a₂ b₂ :=
   by
@@ -1236,12 +1110,6 @@ theorem tr_reaches₁ {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H
     exact ⟨_, dd, ac₂.trans cd₂⟩
 #align turing.tr_reaches₁ Turing.tr_reaches₁
 
-/- warning: turing.tr_reaches -> Turing.tr_reaches is a dubious translation:
-lean 3 declaration is
-  forall {σ₁ : Type.{u1}} {σ₂ : Type.{u2}} {f₁ : σ₁ -> (Option.{u1} σ₁)} {f₂ : σ₂ -> (Option.{u2} σ₂)} {tr : σ₁ -> σ₂ -> Prop}, (Turing.Respects.{u1, u2} σ₁ σ₂ f₁ f₂ tr) -> (forall {a₁ : σ₁} {a₂ : σ₂}, (tr a₁ a₂) -> (forall {b₁ : σ₁}, (Turing.Reaches.{u1} σ₁ f₁ a₁ b₁) -> (Exists.{succ u2} σ₂ (fun (b₂ : σ₂) => And (tr b₁ b₂) (Turing.Reaches.{u2} σ₂ f₂ a₂ b₂)))))
-but is expected to have type
-  forall {σ₁ : Type.{u2}} {σ₂ : Type.{u1}} {f₁ : σ₁ -> (Option.{u2} σ₁)} {f₂ : σ₂ -> (Option.{u1} σ₂)} {tr : σ₁ -> σ₂ -> Prop}, (Turing.Respects.{u2, u1} σ₁ σ₂ f₁ f₂ tr) -> (forall {a₁ : σ₁} {a₂ : σ₂}, (tr a₁ a₂) -> (forall {b₁ : σ₁}, (Turing.Reaches.{u2} σ₁ f₁ a₁ b₁) -> (Exists.{succ u1} σ₂ (fun (b₂ : σ₂) => And (tr b₁ b₂) (Turing.Reaches.{u1} σ₂ f₂ a₂ b₂)))))
-Case conversion may be inaccurate. Consider using '#align turing.tr_reaches Turing.tr_reachesₓ'. -/
 theorem tr_reaches {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H : Respects f₁ f₂ tr) {a₁ a₂}
     (aa : tr a₁ a₂) {b₁} (ab : Reaches f₁ a₁ b₁) : ∃ b₂, tr b₁ b₂ ∧ Reaches f₂ a₂ b₂ :=
   by
@@ -1253,12 +1121,6 @@ theorem tr_reaches {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H :
       ⟨b₂, bb, h.to_reflTransGen⟩
 #align turing.tr_reaches Turing.tr_reaches
 
-/- warning: turing.tr_reaches_rev -> Turing.tr_reaches_rev is a dubious translation:
-lean 3 declaration is
-  forall {σ₁ : Type.{u1}} {σ₂ : Type.{u2}} {f₁ : σ₁ -> (Option.{u1} σ₁)} {f₂ : σ₂ -> (Option.{u2} σ₂)} {tr : σ₁ -> σ₂ -> Prop}, (Turing.Respects.{u1, u2} σ₁ σ₂ f₁ f₂ tr) -> (forall {a₁ : σ₁} {a₂ : σ₂}, (tr a₁ a₂) -> (forall {b₂ : σ₂}, (Turing.Reaches.{u2} σ₂ f₂ a₂ b₂) -> (Exists.{succ u1} σ₁ (fun (c₁ : σ₁) => Exists.{succ u2} σ₂ (fun (c₂ : σ₂) => And (Turing.Reaches.{u2} σ₂ f₂ b₂ c₂) (And (tr c₁ c₂) (Turing.Reaches.{u1} σ₁ f₁ a₁ c₁)))))))
-but is expected to have type
-  forall {σ₁ : Type.{u2}} {σ₂ : Type.{u1}} {f₁ : σ₁ -> (Option.{u2} σ₁)} {f₂ : σ₂ -> (Option.{u1} σ₂)} {tr : σ₁ -> σ₂ -> Prop}, (Turing.Respects.{u2, u1} σ₁ σ₂ f₁ f₂ tr) -> (forall {a₁ : σ₁} {a₂ : σ₂}, (tr a₁ a₂) -> (forall {b₂ : σ₂}, (Turing.Reaches.{u1} σ₂ f₂ a₂ b₂) -> (Exists.{succ u2} σ₁ (fun (c₁ : σ₁) => Exists.{succ u1} σ₂ (fun (c₂ : σ₂) => And (Turing.Reaches.{u1} σ₂ f₂ b₂ c₂) (And (tr c₁ c₂) (Turing.Reaches.{u2} σ₁ f₁ a₁ c₁)))))))
-Case conversion may be inaccurate. Consider using '#align turing.tr_reaches_rev Turing.tr_reaches_revₓ'. -/
 theorem tr_reaches_rev {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H : Respects f₁ f₂ tr) {a₁ a₂}
     (aa : tr a₁ a₂) {b₂} (ab : Reaches f₂ a₂ b₂) :
     ∃ c₁ c₂, Reaches f₂ b₂ c₂ ∧ tr c₁ c₂ ∧ Reaches f₁ a₁ c₁ :=
@@ -1278,12 +1140,6 @@ theorem tr_reaches_rev {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (
       exact ⟨_, _, de, ee, ae⟩
 #align turing.tr_reaches_rev Turing.tr_reaches_rev
 
-/- warning: turing.tr_eval -> Turing.tr_eval is a dubious translation:
-lean 3 declaration is
-  forall {σ₁ : Type.{u1}} {σ₂ : Type.{u2}} {f₁ : σ₁ -> (Option.{u1} σ₁)} {f₂ : σ₂ -> (Option.{u2} σ₂)} {tr : σ₁ -> σ₂ -> Prop}, (Turing.Respects.{u1, u2} σ₁ σ₂ f₁ f₂ tr) -> (forall {a₁ : σ₁} {b₁ : σ₁} {a₂ : σ₂}, (tr a₁ a₂) -> (Membership.Mem.{u1, u1} σ₁ (Part.{u1} σ₁) (Part.hasMem.{u1} σ₁) b₁ (Turing.eval.{u1} σ₁ f₁ a₁)) -> (Exists.{succ u2} σ₂ (fun (b₂ : σ₂) => And (tr b₁ b₂) (Membership.Mem.{u2, u2} σ₂ (Part.{u2} σ₂) (Part.hasMem.{u2} σ₂) b₂ (Turing.eval.{u2} σ₂ f₂ a₂)))))
-but is expected to have type
-  forall {σ₁ : Type.{u2}} {σ₂ : Type.{u1}} {f₁ : σ₁ -> (Option.{u2} σ₁)} {f₂ : σ₂ -> (Option.{u1} σ₂)} {tr : σ₁ -> σ₂ -> Prop}, (Turing.Respects.{u2, u1} σ₁ σ₂ f₁ f₂ tr) -> (forall {a₁ : σ₁} {b₁ : σ₁} {a₂ : σ₂}, (tr a₁ a₂) -> (Membership.mem.{u2, u2} σ₁ (Part.{u2} σ₁) (Part.instMembershipPart.{u2} σ₁) b₁ (Turing.eval.{u2} σ₁ f₁ a₁)) -> (Exists.{succ u1} σ₂ (fun (b₂ : σ₂) => And (tr b₁ b₂) (Membership.mem.{u1, u1} σ₂ (Part.{u1} σ₂) (Part.instMembershipPart.{u1} σ₂) b₂ (Turing.eval.{u1} σ₂ f₂ a₂)))))
-Case conversion may be inaccurate. Consider using '#align turing.tr_eval Turing.tr_evalₓ'. -/
 theorem tr_eval {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H : Respects f₁ f₂ tr) {a₁ b₁ a₂}
     (aa : tr a₁ a₂) (ab : b₁ ∈ eval f₁ a₁) : ∃ b₂, tr b₁ b₂ ∧ b₂ ∈ eval f₂ a₂ :=
   by
@@ -1293,12 +1149,6 @@ theorem tr_eval {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H : Res
   have := H bb; rwa [b0] at this
 #align turing.tr_eval Turing.tr_eval
 
-/- warning: turing.tr_eval_rev -> Turing.tr_eval_rev is a dubious translation:
-lean 3 declaration is
-  forall {σ₁ : Type.{u1}} {σ₂ : Type.{u2}} {f₁ : σ₁ -> (Option.{u1} σ₁)} {f₂ : σ₂ -> (Option.{u2} σ₂)} {tr : σ₁ -> σ₂ -> Prop}, (Turing.Respects.{u1, u2} σ₁ σ₂ f₁ f₂ tr) -> (forall {a₁ : σ₁} {b₂ : σ₂} {a₂ : σ₂}, (tr a₁ a₂) -> (Membership.Mem.{u2, u2} σ₂ (Part.{u2} σ₂) (Part.hasMem.{u2} σ₂) b₂ (Turing.eval.{u2} σ₂ f₂ a₂)) -> (Exists.{succ u1} σ₁ (fun (b₁ : σ₁) => And (tr b₁ b₂) (Membership.Mem.{u1, u1} σ₁ (Part.{u1} σ₁) (Part.hasMem.{u1} σ₁) b₁ (Turing.eval.{u1} σ₁ f₁ a₁)))))
-but is expected to have type
-  forall {σ₁ : Type.{u2}} {σ₂ : Type.{u1}} {f₁ : σ₁ -> (Option.{u2} σ₁)} {f₂ : σ₂ -> (Option.{u1} σ₂)} {tr : σ₁ -> σ₂ -> Prop}, (Turing.Respects.{u2, u1} σ₁ σ₂ f₁ f₂ tr) -> (forall {a₁ : σ₁} {b₂ : σ₂} {a₂ : σ₂}, (tr a₁ a₂) -> (Membership.mem.{u1, u1} σ₂ (Part.{u1} σ₂) (Part.instMembershipPart.{u1} σ₂) b₂ (Turing.eval.{u1} σ₂ f₂ a₂)) -> (Exists.{succ u2} σ₁ (fun (b₁ : σ₁) => And (tr b₁ b₂) (Membership.mem.{u2, u2} σ₁ (Part.{u2} σ₁) (Part.instMembershipPart.{u2} σ₁) b₁ (Turing.eval.{u2} σ₁ f₁ a₁)))))
-Case conversion may be inaccurate. Consider using '#align turing.tr_eval_rev Turing.tr_eval_revₓ'. -/
 theorem tr_eval_rev {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H : Respects f₁ f₂ tr) {a₁ b₂ a₂}
     (aa : tr a₁ a₂) (ab : b₂ ∈ eval f₂ a₂) : ∃ b₁, tr b₁ b₂ ∧ b₁ ∈ eval f₁ a₁ :=
   by
@@ -1312,12 +1162,6 @@ theorem tr_eval_rev {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H :
   cases b0.symm.trans h
 #align turing.tr_eval_rev Turing.tr_eval_rev
 
-/- warning: turing.tr_eval_dom -> Turing.tr_eval_dom is a dubious translation:
-lean 3 declaration is
-  forall {σ₁ : Type.{u1}} {σ₂ : Type.{u2}} {f₁ : σ₁ -> (Option.{u1} σ₁)} {f₂ : σ₂ -> (Option.{u2} σ₂)} {tr : σ₁ -> σ₂ -> Prop}, (Turing.Respects.{u1, u2} σ₁ σ₂ f₁ f₂ tr) -> (forall {a₁ : σ₁} {a₂ : σ₂}, (tr a₁ a₂) -> (Iff (Part.Dom.{u2} σ₂ (Turing.eval.{u2} σ₂ f₂ a₂)) (Part.Dom.{u1} σ₁ (Turing.eval.{u1} σ₁ f₁ a₁))))
-but is expected to have type
-  forall {σ₁ : Type.{u2}} {σ₂ : Type.{u1}} {f₁ : σ₁ -> (Option.{u2} σ₁)} {f₂ : σ₂ -> (Option.{u1} σ₂)} {tr : σ₁ -> σ₂ -> Prop}, (Turing.Respects.{u2, u1} σ₁ σ₂ f₁ f₂ tr) -> (forall {a₁ : σ₁} {a₂ : σ₂}, (tr a₁ a₂) -> (Iff (Part.Dom.{u1} σ₂ (Turing.eval.{u1} σ₂ f₂ a₂)) (Part.Dom.{u2} σ₁ (Turing.eval.{u2} σ₁ f₁ a₁))))
-Case conversion may be inaccurate. Consider using '#align turing.tr_eval_dom Turing.tr_eval_domₓ'. -/
 theorem tr_eval_dom {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (H : Respects f₁ f₂ tr) {a₁ a₂}
     (aa : tr a₁ a₂) : (eval f₂ a₂).Dom ↔ (eval f₁ a₁).Dom :=
   ⟨fun h =>
@@ -1336,36 +1180,18 @@ def FRespects {σ₁ σ₂} (f₂ : σ₂ → Option σ₂) (tr : σ₁ → σ
 #align turing.frespects Turing.FRespects
 -/
 
-/- warning: turing.frespects_eq -> Turing.frespects_eq is a dubious translation:
-lean 3 declaration is
-  forall {σ₁ : Type.{u1}} {σ₂ : Type.{u2}} {f₂ : σ₂ -> (Option.{u2} σ₂)} {tr : σ₁ -> σ₂} {a₂ : σ₂} {b₂ : σ₂}, (Eq.{succ u2} (Option.{u2} σ₂) (f₂ a₂) (f₂ b₂)) -> (forall {b₁ : Option.{u1} σ₁}, Iff (Turing.FRespects.{u1, u2} σ₁ σ₂ f₂ tr a₂ b₁) (Turing.FRespects.{u1, u2} σ₁ σ₂ f₂ tr b₂ b₁))
-but is expected to have type
-  forall {σ₁ : Type.{u2}} {σ₂ : Type.{u1}} {f₂ : σ₂ -> (Option.{u1} σ₂)} {tr : σ₁ -> σ₂} {a₂ : σ₂} {b₂ : σ₂}, (Eq.{succ u1} (Option.{u1} σ₂) (f₂ a₂) (f₂ b₂)) -> (forall {b₁ : Option.{u2} σ₁}, Iff (Turing.FRespects.{u2, u1} σ₁ σ₂ f₂ tr a₂ b₁) (Turing.FRespects.{u2, u1} σ₁ σ₂ f₂ tr b₂ b₁))
-Case conversion may be inaccurate. Consider using '#align turing.frespects_eq Turing.frespects_eqₓ'. -/
 theorem frespects_eq {σ₁ σ₂} {f₂ : σ₂ → Option σ₂} {tr : σ₁ → σ₂} {a₂ b₂} (h : f₂ a₂ = f₂ b₂) :
     ∀ {b₁}, FRespects f₂ tr a₂ b₁ ↔ FRespects f₂ tr b₂ b₁
   | some b₁ => reaches₁_eq h
   | none => by unfold frespects <;> rw [h]
 #align turing.frespects_eq Turing.frespects_eq
 
-/- warning: turing.fun_respects -> Turing.fun_respects is a dubious translation:
-lean 3 declaration is
-  forall {σ₁ : Type.{u1}} {σ₂ : Type.{u2}} {f₁ : σ₁ -> (Option.{u1} σ₁)} {f₂ : σ₂ -> (Option.{u2} σ₂)} {tr : σ₁ -> σ₂}, Iff (Turing.Respects.{u1, u2} σ₁ σ₂ f₁ f₂ (fun (a : σ₁) (b : σ₂) => Eq.{succ u2} σ₂ (tr a) b)) (forall {{a₁ : σ₁}}, Turing.FRespects.{u1, u2} σ₁ σ₂ f₂ tr (tr a₁) (f₁ a₁))
-but is expected to have type
-  forall {σ₁ : Type.{u2}} {σ₂ : Type.{u1}} {f₁ : σ₁ -> (Option.{u2} σ₁)} {f₂ : σ₂ -> (Option.{u1} σ₂)} {tr : σ₁ -> σ₂}, Iff (Turing.Respects.{u2, u1} σ₁ σ₂ f₁ f₂ (fun (a : σ₁) (b : σ₂) => Eq.{succ u1} σ₂ (tr a) b)) (forall {{a₁ : σ₁}}, Turing.FRespects.{u2, u1} σ₁ σ₂ f₂ tr (tr a₁) (f₁ a₁))
-Case conversion may be inaccurate. Consider using '#align turing.fun_respects Turing.fun_respectsₓ'. -/
 theorem fun_respects {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂} :
     (Respects f₁ f₂ fun a b => tr a = b) ↔ ∀ ⦃a₁⦄, FRespects f₂ tr (tr a₁) (f₁ a₁) :=
   forall_congr' fun a₁ => by
     cases f₁ a₁ <;> simp only [frespects, respects, exists_eq_left', forall_eq']
 #align turing.fun_respects Turing.fun_respects
 
-/- warning: turing.tr_eval' -> Turing.tr_eval' is a dubious translation:
-lean 3 declaration is
-  forall {σ₁ : Type.{u1}} {σ₂ : Type.{u1}} (f₁ : σ₁ -> (Option.{u1} σ₁)) (f₂ : σ₂ -> (Option.{u1} σ₂)) (tr : σ₁ -> σ₂), (Turing.Respects.{u1, u1} σ₁ σ₂ f₁ f₂ (fun (a : σ₁) (b : σ₂) => Eq.{succ u1} σ₂ (tr a) b)) -> (forall (a₁ : σ₁), Eq.{succ u1} (Part.{u1} σ₂) (Turing.eval.{u1} σ₂ f₂ (tr a₁)) (Functor.map.{u1, u1} Part.{u1} (Applicative.toFunctor.{u1, u1} Part.{u1} (Monad.toApplicative.{u1, u1} Part.{u1} Part.monad.{u1})) σ₁ σ₂ tr (Turing.eval.{u1} σ₁ f₁ a₁)))
-but is expected to have type
-  forall {σ₁ : Type.{u1}} {σ₂ : Type.{u1}} (f₁ : σ₁ -> (Option.{u1} σ₁)) (f₂ : σ₂ -> (Option.{u1} σ₂)) (tr : σ₁ -> σ₂), (Turing.Respects.{u1, u1} σ₁ σ₂ f₁ f₂ (fun (a : σ₁) (b : σ₂) => Eq.{succ u1} σ₂ (tr a) b)) -> (forall (a₁ : σ₁), Eq.{succ u1} (Part.{u1} σ₂) (Turing.eval.{u1} σ₂ f₂ (tr a₁)) (Functor.map.{u1, u1} Part.{u1} (Applicative.toFunctor.{u1, u1} Part.{u1} (Monad.toApplicative.{u1, u1} Part.{u1} Part.instMonadPart.{u1})) σ₁ σ₂ tr (Turing.eval.{u1} σ₁ f₁ a₁)))
-Case conversion may be inaccurate. Consider using '#align turing.tr_eval' Turing.tr_eval'ₓ'. -/
 theorem tr_eval' {σ₁ σ₂} (f₁ : σ₁ → Option σ₁) (f₂ : σ₂ → Option σ₂) (tr : σ₁ → σ₂)
     (H : Respects f₁ f₂ fun a b => tr a = b) (a₁) : eval f₂ (tr a₁) = tr <$> eval f₁ a₁ :=
   Part.ext fun b₂ =>
@@ -1412,12 +1238,6 @@ parameter (Γ : Type _)[Inhabited Γ]
 -- type of tape symbols
 parameter (Λ : Type _)[Inhabited Λ]
 
-/- warning: turing.TM0.stmt -> Turing.TM0.Stmt is a dubious translation:
-lean 3 declaration is
-  forall (Γ : Type.{u1}) [_inst_1 : Inhabited.{succ u1} Γ], Type.{u1}
-but is expected to have type
-  Type.{u1} -> Type.{u1}
-Case conversion may be inaccurate. Consider using '#align turing.TM0.stmt Turing.TM0.Stmtₓ'. -/
 -- type of "labels" or TM states
 /-- A Turing machine "statement" is just a command to either move
   left or right, or write a symbol on the tape. -/
@@ -1432,12 +1252,6 @@ instance Stmt.inhabited : Inhabited stmt :=
 #align turing.TM0.stmt.inhabited Turing.TM0.Stmt.inhabited
 -/
 
-/- warning: turing.TM0.machine -> Turing.TM0.Machine is a dubious translation:
-lean 3 declaration is
-  forall (Γ : Type.{u1}) [_inst_1 : Inhabited.{succ u1} Γ] (Λ : Type.{u2}) [_inst_2 : Inhabited.{succ u2} Λ], Sort.{max (succ u2) (succ u1) (succ (max u2 u1))}
-but is expected to have type
-  Type.{u1} -> (forall (_inst_1 : Type.{u2}) [Λ : Inhabited.{succ u2} _inst_1], Sort.{max (max (succ u1) (succ u2)) (succ (max u1 u2))})
-Case conversion may be inaccurate. Consider using '#align turing.TM0.machine Turing.TM0.Machineₓ'. -/
 -- [inhabited Λ]: this is a deliberate addition, see comment
 /-- A Post-Turing machine with symbol type `Γ` and label type `Λ`
   is a function which, given the current state `q : Λ` and
@@ -1453,21 +1267,9 @@ def Machine :=
   Λ → Γ → Option (Λ × stmt)
 #align turing.TM0.machine Turing.TM0.Machine
 
-/- warning: turing.TM0.machine.inhabited -> Turing.TM0.Machine.inhabited is a dubious translation:
-lean 3 declaration is
-  forall (Γ : Type.{u1}) [_inst_1 : Inhabited.{succ u1} Γ] (Λ : Type.{u2}) [_inst_2 : Inhabited.{succ u2} Λ], Inhabited.{max (succ u2) (succ u1) (succ (max u2 u1))} (Turing.TM0.Machine.{u1, u2} Γ _inst_1 Λ _inst_2)
-but is expected to have type
-  forall (Γ : Type.{u1}) (_inst_1 : Type.{u2}) [Λ : Inhabited.{succ u2} _inst_1], Inhabited.{max (succ u2) (succ u1)} (Turing.TM0.Machine.{u1, u2} Γ _inst_1 Λ)
-Case conversion may be inaccurate. Consider using '#align turing.TM0.machine.inhabited Turing.TM0.Machine.inhabitedₓ'. -/
 instance Machine.inhabited : Inhabited machine := by unfold machine <;> infer_instance
 #align turing.TM0.machine.inhabited Turing.TM0.Machine.inhabited
 
-/- warning: turing.TM0.cfg -> Turing.TM0.Cfg is a dubious translation:
-lean 3 declaration is
-  forall (Γ : Type.{u1}) [_inst_1 : Inhabited.{succ u1} Γ] (Λ : Type.{u2}) [_inst_2 : Inhabited.{succ u2} Λ], Sort.{max (succ u1) (succ u2)}
-but is expected to have type
-  forall (Γ : Type.{u1}) [_inst_1 : Inhabited.{succ u1} Γ], Type.{u2} -> Sort.{max (succ u1) (succ u2)}
-Case conversion may be inaccurate. Consider using '#align turing.TM0.cfg Turing.TM0.Cfgₓ'. -/
 /-- The configuration state of a Turing machine during operation
   consists of a label (machine state), and a tape, represented in
   the form `(a, L, R)` meaning the tape looks like `L.rev ++ [a] ++ R`
@@ -1521,12 +1323,6 @@ def eval (M : machine) (l : List Γ) : Part (ListBlank Γ) :=
 #align turing.TM0.eval Turing.TM0.eval
 -/
 
-/- warning: turing.TM0.supports -> Turing.TM0.Supports is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ], (Turing.TM0.Machine.{u1, u2} Γ _inst_1 Λ _inst_2) -> (Set.{u2} Λ) -> Prop
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} [Λ : Inhabited.{succ u2} _inst_1], (Turing.TM0.Machine.{u1, u2} Γ _inst_1 Λ) -> (Set.{u2} _inst_1) -> Prop
-Case conversion may be inaccurate. Consider using '#align turing.TM0.supports Turing.TM0.Supportsₓ'. -/
 /-- The raw definition of a Turing machine does not require that
   `Γ` and `Λ` are finite, and in practice we will be interested
   in the infinite `Λ` case. We recover instead a notion of
@@ -1538,12 +1334,6 @@ def Supports (M : machine) (S : Set Λ) :=
   default ∈ S ∧ ∀ {q a q' s}, (q', s) ∈ M q a → q ∈ S → q' ∈ S
 #align turing.TM0.supports Turing.TM0.Supports
 
-/- warning: turing.TM0.step_supports -> Turing.TM0.step_supports is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Turing.TM0.Machine.{u1, u2} Γ _inst_1 Λ _inst_2) {S : Set.{u2} Λ}, (Turing.TM0.Supports.{u1, u2} Γ _inst_1 Λ _inst_2 M S) -> (forall {c : Turing.TM0.Cfg.{u1, u2} Γ _inst_1 Λ _inst_2} {c' : Turing.TM0.Cfg.{u1, u2} Γ _inst_1 Λ _inst_2}, (Membership.Mem.{max u1 u2, max u1 u2} (Turing.TM0.Cfg.{u1, u2} Γ _inst_1 Λ _inst_2) (Option.{max u1 u2} (Turing.TM0.Cfg.{u1, u2} Γ _inst_1 Λ _inst_2)) (Option.hasMem.{max u1 u2} (Turing.TM0.Cfg.{u1, u2} Γ _inst_1 Λ _inst_2)) c' (Turing.TM0.step.{u1, u2} Γ _inst_1 Λ _inst_2 M c)) -> (Membership.Mem.{u2, u2} Λ (Set.{u2} Λ) (Set.hasMem.{u2} Λ) (Turing.TM0.Cfg.q.{u1, u2} Γ _inst_1 Λ _inst_2 c) S) -> (Membership.Mem.{u2, u2} Λ (Set.{u2} Λ) (Set.hasMem.{u2} Λ) (Turing.TM0.Cfg.q.{u1, u2} Γ _inst_1 Λ _inst_2 c') S))
-but is expected to have type
-  forall {Γ : Type.{u2}} [_inst_1 : Inhabited.{succ u2} Γ] {Λ : Type.{u1}} [_inst_2 : Inhabited.{succ u1} Λ] (M : Turing.TM0.Machine.{u2, u1} Γ Λ _inst_2) {S : Set.{u1} Λ}, (Turing.TM0.Supports.{u2, u1} Γ Λ _inst_2 M S) -> (forall {c : Turing.TM0.Cfg.{u2, u1} Γ _inst_1 Λ} {c' : Turing.TM0.Cfg.{u2, u1} Γ _inst_1 Λ}, (Membership.mem.{max u2 u1, max u1 u2} (Turing.TM0.Cfg.{u2, u1} Γ _inst_1 Λ) (Option.{max u1 u2} (Turing.TM0.Cfg.{u2, u1} Γ _inst_1 Λ)) (Option.instMembershipOption.{max u2 u1} (Turing.TM0.Cfg.{u2, u1} Γ _inst_1 Λ)) c' (Turing.TM0.step.{u2, u1} Γ _inst_1 Λ _inst_2 M c)) -> (Membership.mem.{u1, u1} Λ (Set.{u1} Λ) (Set.instMembershipSet.{u1} Λ) (Turing.TM0.Cfg.q.{u2, u1} Γ _inst_1 Λ c) S) -> (Membership.mem.{u1, u1} Λ (Set.{u1} Λ) (Set.instMembershipSet.{u1} Λ) (Turing.TM0.Cfg.q.{u2, u1} Γ _inst_1 Λ c') S))
-Case conversion may be inaccurate. Consider using '#align turing.TM0.step_supports Turing.TM0.step_supportsₓ'. -/
 theorem step_supports (M : machine) {S} (ss : supports M S) :
     ∀ {c c' : cfg}, c' ∈ step M c → c.q ∈ S → c'.q ∈ S
   | ⟨q, T⟩, c', h₁, h₂ =>
@@ -1552,12 +1342,6 @@ theorem step_supports (M : machine) {S} (ss : supports M S) :
     exact ss.2 h h₂
 #align turing.TM0.step_supports Turing.TM0.step_supports
 
-/- warning: turing.TM0.univ_supports -> Turing.TM0.univ_supports is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Turing.TM0.Machine.{u1, u2} Γ _inst_1 Λ _inst_2), Turing.TM0.Supports.{u1, u2} Γ _inst_1 Λ _inst_2 M (Set.univ.{u2} Λ)
-but is expected to have type
-  forall {Γ : Type.{u2}} {_inst_1 : Type.{u1}} [Λ : Inhabited.{succ u1} _inst_1] (_inst_2 : Turing.TM0.Machine.{u2, u1} Γ _inst_1 Λ), Turing.TM0.Supports.{u2, u1} Γ _inst_1 Λ _inst_2 (Set.univ.{u1} _inst_1)
-Case conversion may be inaccurate. Consider using '#align turing.TM0.univ_supports Turing.TM0.univ_supportsₓ'. -/
 theorem univ_supports (M : machine) : supports M Set.univ :=
   ⟨trivial, fun q a q' s h₁ h₂ => trivial⟩
 #align turing.TM0.univ_supports Turing.TM0.univ_supports
@@ -1583,12 +1367,6 @@ def Stmt.map (f : PointedMap Γ Γ') : Stmt Γ → Stmt Γ'
 #align turing.TM0.stmt.map Turing.TM0.Stmt.map
 -/
 
-/- warning: turing.TM0.cfg.map -> Turing.TM0.Cfg.map is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Γ' : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Γ'] {Λ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} Λ] {Λ' : Type.{u4}} [_inst_4 : Inhabited.{succ u4} Λ'], (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) -> (Λ -> Λ') -> (Turing.TM0.Cfg.{u1, u3} Γ _inst_1 Λ _inst_3) -> (Turing.TM0.Cfg.{u2, u4} Γ' _inst_2 Λ' _inst_4)
-but is expected to have type
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Γ' : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Γ'] {Λ : Type.{u3}} {_inst_3 : Type.{u4}}, (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) -> (Λ -> _inst_3) -> (Turing.TM0.Cfg.{u1, u3} Γ _inst_1 Λ) -> (Turing.TM0.Cfg.{u2, u4} Γ' _inst_2 _inst_3)
-Case conversion may be inaccurate. Consider using '#align turing.TM0.cfg.map Turing.TM0.Cfg.mapₓ'. -/
 /-- Map a configuration across a function, given `f : Γ → Γ'` a map of the alphabets and
 `g : Λ → Λ'` a map of the machine states. -/
 def Cfg.map (f : PointedMap Γ Γ') (g : Λ → Λ') : Cfg Γ Λ → Cfg Γ' Λ'
@@ -1606,9 +1384,6 @@ def Machine.map : Machine Γ' Λ'
 #align turing.TM0.machine.map Turing.TM0.Machine.map
 -/
 
-/- warning: turing.TM0.machine.map_step -> Turing.TM0.Machine.map_step is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align turing.TM0.machine.map_step Turing.TM0.Machine.map_stepₓ'. -/
 theorem Machine.map_step {S : Set Λ} (f₂₁ : Function.RightInverse f₁ f₂)
     (g₂₁ : ∀ q ∈ S, g₂ (g₁ q) = q) :
     ∀ c : Cfg Γ Λ,
@@ -1621,19 +1396,10 @@ theorem Machine.map_step {S : Set Λ} (f₂₁ : Function.RightInverse f₁ f₂
     · simp only [step, cfg.map, Option.map_some', tape.map_write]; rfl
 #align turing.TM0.machine.map_step Turing.TM0.Machine.map_step
 
-/- warning: turing.TM0.map_init -> Turing.TM0.map_init is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Γ' : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Γ'] {Λ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} Λ] {Λ' : Type.{u4}} [_inst_4 : Inhabited.{succ u4} Λ'] (f₁ : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (g₁ : Turing.PointedMap.{u3, u4} Λ Λ' _inst_3 _inst_4) (l : List.{u1} Γ), Eq.{max (succ u2) (succ u4)} (Turing.TM0.Cfg.{u2, u4} Γ' _inst_2 Λ' _inst_4) (Turing.TM0.Cfg.map.{u1, u2, u3, u4} Γ _inst_1 Γ' _inst_2 Λ _inst_3 Λ' _inst_4 f₁ (coeFn.{succ (max u3 u4), max (succ u3) (succ u4)} (Turing.PointedMap.{u3, u4} Λ Λ' _inst_3 _inst_4) (fun (_x : Turing.PointedMap.{u3, u4} Λ Λ' _inst_3 _inst_4) => Λ -> Λ') (Turing.PointedMap.hasCoeToFun.{u3, u4} Λ Λ' _inst_3 _inst_4) g₁) (Turing.TM0.init.{u1, u3} Γ _inst_1 Λ _inst_3 l)) (Turing.TM0.init.{u2, u4} Γ' _inst_2 Λ' _inst_4 (List.map.{u1, u2} Γ Γ' (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) f₁) l))
-but is expected to have type
-  forall {Γ : Type.{u2}} [_inst_1 : Inhabited.{succ u2} Γ] {Γ' : Type.{u1}} [_inst_2 : Inhabited.{succ u1} Γ'] {Λ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} Λ] {Λ' : Type.{u3}} [_inst_4 : Inhabited.{succ u3} Λ'] (f₁ : Turing.PointedMap.{u2, u1} Γ Γ' _inst_1 _inst_2) (g₁ : Turing.PointedMap.{u4, u3} Λ Λ' _inst_3 _inst_4) (l : List.{u2} Γ), Eq.{max (succ u1) (succ u3)} (Turing.TM0.Cfg.{u1, u3} Γ' _inst_2 Λ') (Turing.TM0.Cfg.map.{u2, u1, u4, u3} Γ _inst_1 Γ' _inst_2 Λ Λ' f₁ (Turing.PointedMap.f.{u4, u3} Λ Λ' _inst_3 _inst_4 g₁) (Turing.TM0.init.{u2, u4} Γ _inst_1 Λ _inst_3 l)) (Turing.TM0.init.{u1, u3} Γ' _inst_2 Λ' _inst_4 (List.map.{u2, u1} Γ Γ' (Turing.PointedMap.f.{u2, u1} Γ Γ' _inst_1 _inst_2 f₁) l))
-Case conversion may be inaccurate. Consider using '#align turing.TM0.map_init Turing.TM0.map_initₓ'. -/
 theorem map_init (g₁ : PointedMap Λ Λ') (l : List Γ) : (init l).map f₁ g₁ = init (l.map f₁) :=
   congr (congr_arg Cfg.mk g₁.map_pt) (Tape.map_mk₁ _ _)
 #align turing.TM0.map_init Turing.TM0.map_init
 
-/- warning: turing.TM0.machine.map_respects -> Turing.TM0.Machine.map_respects is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align turing.TM0.machine.map_respects Turing.TM0.Machine.map_respectsₓ'. -/
 theorem Machine.map_respects (g₁ : PointedMap Λ Λ') (g₂ : Λ' → Λ) {S} (ss : Supports M S)
     (f₂₁ : Function.RightInverse f₁ f₂) (g₂₁ : ∀ q ∈ S, g₂ (g₁ q) = q) :
     Respects (step M) (step (M.map f₁ f₂ g₁ g₂)) fun a b => a.q ∈ S ∧ Cfg.map f₁ g₁ a = b
@@ -1690,12 +1456,6 @@ parameter (Λ : Type _)
 -- Type of function labels
 parameter (σ : Type _)
 
-/- warning: turing.TM1.stmt -> Turing.TM1.Stmt is a dubious translation:
-lean 3 declaration is
-  forall (Γ : Type.{u1}) [_inst_1 : Inhabited.{succ u1} Γ], Type.{u2} -> Type.{u3} -> Sort.{max (succ u1) (succ u2) (succ u3)}
-but is expected to have type
-  Type.{u1} -> Type.{u2} -> Type.{u3} -> Sort.{max (max (succ u1) (succ u2)) (succ u3)}
-Case conversion may be inaccurate. Consider using '#align turing.TM1.stmt Turing.TM1.Stmtₓ'. -/
 -- Type of variable settings
 /-- The TM1 model is a simplification and extension of TM0
   (Post-Turing model) in the direction of Wang B-machines. The machine's
@@ -1720,12 +1480,6 @@ inductive Stmt
 
 open Stmt
 
-/- warning: turing.TM1.stmt.inhabited -> Turing.TM1.Stmt.inhabited is a dubious translation:
-lean 3 declaration is
-  forall (Γ : Type.{u1}) [_inst_1 : Inhabited.{succ u1} Γ] (Λ : Type.{u2}) (σ : Type.{u3}), Inhabited.{max (succ u1) (succ u2) (succ u3)} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)
-but is expected to have type
-  forall (Γ : Type.{u1}) (_inst_1 : Type.{u2}) (Λ : Type.{u3}), Inhabited.{max (max (succ u3) (succ u2)) (succ u1)} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ)
-Case conversion may be inaccurate. Consider using '#align turing.TM1.stmt.inhabited Turing.TM1.Stmt.inhabitedₓ'. -/
 instance Stmt.inhabited : Inhabited stmt :=
   ⟨halt⟩
 #align turing.TM1.stmt.inhabited Turing.TM1.Stmt.inhabited
@@ -1768,12 +1522,6 @@ def step (M : Λ → stmt) : cfg → Option cfg
 #align turing.TM1.step Turing.TM1.step
 -/
 
-/- warning: turing.TM1.supports_stmt -> Turing.TM1.SupportsStmt is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {σ : Type.{u3}}, (Finset.{u2} Λ) -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ) -> Prop
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}}, (Finset.{u2} _inst_1) -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ) -> Prop
-Case conversion may be inaccurate. Consider using '#align turing.TM1.supports_stmt Turing.TM1.SupportsStmtₓ'. -/
 /-- A set `S` of labels supports the statement `q` if all the `goto`
   statements in `q` refer only to other functions in `S`. -/
 def SupportsStmt (S : Finset Λ) : stmt → Prop
@@ -1787,12 +1535,6 @@ def SupportsStmt (S : Finset Λ) : stmt → Prop
 
 open Classical
 
-/- warning: turing.TM1.stmts₁ -> Turing.TM1.stmts₁ is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {σ : Type.{u3}}, (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ) -> (Finset.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ))
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}}, (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ) -> (Finset.{max (max u3 u2) u1} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ))
-Case conversion may be inaccurate. Consider using '#align turing.TM1.stmts₁ Turing.TM1.stmts₁ₓ'. -/
 /-- The subterm closure of a statement. -/
 noncomputable def stmts₁ : stmt → Finset stmt
   | Q@(move d q) => insert Q (stmts₁ q)
@@ -1802,22 +1544,10 @@ noncomputable def stmts₁ : stmt → Finset stmt
   | Q => {Q}
 #align turing.TM1.stmts₁ Turing.TM1.stmts₁
 
-/- warning: turing.TM1.stmts₁_self -> Turing.TM1.stmts₁_self is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {σ : Type.{u3}} {q : Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ}, Membership.Mem.{max u1 u2 u3, max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ) (Finset.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) (Finset.hasMem.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) q (Turing.TM1.stmts₁.{u1, u2, u3} Γ _inst_1 Λ σ q)
-but is expected to have type
-  forall {Γ : Type.{u3}} {_inst_1 : Type.{u2}} {Λ : Type.{u1}} {σ : Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ}, Membership.mem.{max (max u3 u2) u1, max (max u1 u2) u3} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ) (Finset.{max (max u1 u2) u3} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ)) (Finset.instMembershipFinset.{max (max u3 u2) u1} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ)) σ (Turing.TM1.stmts₁.{u3, u2, u1} Γ _inst_1 Λ σ)
-Case conversion may be inaccurate. Consider using '#align turing.TM1.stmts₁_self Turing.TM1.stmts₁_selfₓ'. -/
 theorem stmts₁_self {q} : q ∈ stmts₁ q := by
   cases q <;> apply_rules [Finset.mem_insert_self, Finset.mem_singleton_self]
 #align turing.TM1.stmts₁_self Turing.TM1.stmts₁_self
 
-/- warning: turing.TM1.stmts₁_trans -> Turing.TM1.stmts₁_trans is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {σ : Type.{u3}} {q₁ : Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ} {q₂ : Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ}, (Membership.Mem.{max u1 u2 u3, max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ) (Finset.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) (Finset.hasMem.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) q₁ (Turing.TM1.stmts₁.{u1, u2, u3} Γ _inst_1 Λ σ q₂)) -> (HasSubset.Subset.{max u1 u2 u3} (Finset.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) (Finset.hasSubset.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) (Turing.TM1.stmts₁.{u1, u2, u3} Γ _inst_1 Λ σ q₁) (Turing.TM1.stmts₁.{u1, u2, u3} Γ _inst_1 Λ σ q₂))
-but is expected to have type
-  forall {Γ : Type.{u3}} {_inst_1 : Type.{u2}} {Λ : Type.{u1}} {σ : Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ} {q₁ : Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ}, (Membership.mem.{max (max u3 u2) u1, max (max u1 u2) u3} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ) (Finset.{max (max u1 u2) u3} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ)) (Finset.instMembershipFinset.{max (max u3 u2) u1} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ)) σ (Turing.TM1.stmts₁.{u3, u2, u1} Γ _inst_1 Λ q₁)) -> (HasSubset.Subset.{max (max u1 u2) u3} (Finset.{max (max u1 u2) u3} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ)) (Finset.instHasSubsetFinset.{max (max u3 u2) u1} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ)) (Turing.TM1.stmts₁.{u3, u2, u1} Γ _inst_1 Λ σ) (Turing.TM1.stmts₁.{u3, u2, u1} Γ _inst_1 Λ q₁))
-Case conversion may be inaccurate. Consider using '#align turing.TM1.stmts₁_trans Turing.TM1.stmts₁_transₓ'. -/
 theorem stmts₁_trans {q₁ q₂} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ ⊆ stmts₁ q₂ :=
   by
   intro h₁₂ q₀ h₀₁
@@ -1836,12 +1566,6 @@ theorem stmts₁_trans {q₁ q₂} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ 
   case halt => subst h₁₂; exact h₀₁
 #align turing.TM1.stmts₁_trans Turing.TM1.stmts₁_trans
 
-/- warning: turing.TM1.stmts₁_supports_stmt_mono -> Turing.TM1.stmts₁_supportsStmt_mono is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {σ : Type.{u3}} {S : Finset.{u2} Λ} {q₁ : Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ} {q₂ : Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ}, (Membership.Mem.{max u1 u2 u3, max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ) (Finset.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) (Finset.hasMem.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) q₁ (Turing.TM1.stmts₁.{u1, u2, u3} Γ _inst_1 Λ σ q₂)) -> (Turing.TM1.SupportsStmt.{u1, u2, u3} Γ _inst_1 Λ σ S q₂) -> (Turing.TM1.SupportsStmt.{u1, u2, u3} Γ _inst_1 Λ σ S q₁)
-but is expected to have type
-  forall {Γ : Type.{u2}} {_inst_1 : Type.{u3}} {Λ : Type.{u1}} {σ : Finset.{u3} _inst_1} {S : Turing.TM1.Stmt.{u2, u3, u1} Γ _inst_1 Λ} {q₁ : Turing.TM1.Stmt.{u2, u3, u1} Γ _inst_1 Λ}, (Membership.mem.{max (max u2 u3) u1, max (max u1 u3) u2} (Turing.TM1.Stmt.{u2, u3, u1} Γ _inst_1 Λ) (Finset.{max (max u1 u3) u2} (Turing.TM1.Stmt.{u2, u3, u1} Γ _inst_1 Λ)) (Finset.instMembershipFinset.{max (max u2 u3) u1} (Turing.TM1.Stmt.{u2, u3, u1} Γ _inst_1 Λ)) S (Turing.TM1.stmts₁.{u2, u3, u1} Γ _inst_1 Λ q₁)) -> (Turing.TM1.SupportsStmt.{u2, u3, u1} Γ _inst_1 Λ σ q₁) -> (Turing.TM1.SupportsStmt.{u2, u3, u1} Γ _inst_1 Λ σ S)
-Case conversion may be inaccurate. Consider using '#align turing.TM1.stmts₁_supports_stmt_mono Turing.TM1.stmts₁_supportsStmt_monoₓ'. -/
 theorem stmts₁_supportsStmt_mono {S q₁ q₂} (h : q₁ ∈ stmts₁ q₂) (hs : supports_stmt S q₂) :
     supports_stmt S q₁ :=
   by
@@ -1854,24 +1578,12 @@ theorem stmts₁_supportsStmt_mono {S q₁ q₂} (h : q₁ ∈ stmts₁ q₂) (h
   case halt => subst h; trivial
 #align turing.TM1.stmts₁_supports_stmt_mono Turing.TM1.stmts₁_supportsStmt_mono
 
-/- warning: turing.TM1.stmts -> Turing.TM1.stmts is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {σ : Type.{u3}}, (Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) -> (Finset.{u2} Λ) -> (Finset.{max u1 u2 u3} (Option.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)))
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}}, (_inst_1 -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ)) -> (Finset.{u2} _inst_1) -> (Finset.{max (max u3 u2) u1} (Option.{max (max u3 u2) u1} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ)))
-Case conversion may be inaccurate. Consider using '#align turing.TM1.stmts Turing.TM1.stmtsₓ'. -/
 /-- The set of all statements in a turing machine, plus one extra value `none` representing the
 halt state. This is used in the TM1 to TM0 reduction. -/
 noncomputable def stmts (M : Λ → stmt) (S : Finset Λ) : Finset (Option stmt) :=
   (S.biUnion fun q => stmts₁ (M q)).insertNone
 #align turing.TM1.stmts Turing.TM1.stmts
 
-/- warning: turing.TM1.stmts_trans -> Turing.TM1.stmts_trans is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {σ : Type.{u3}} {M : Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)} {S : Finset.{u2} Λ} {q₁ : Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ} {q₂ : Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ}, (Membership.Mem.{max u1 u2 u3, max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ) (Finset.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) (Finset.hasMem.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) q₁ (Turing.TM1.stmts₁.{u1, u2, u3} Γ _inst_1 Λ σ q₂)) -> (Membership.Mem.{max u1 u2 u3, max u1 u2 u3} (Option.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) (Finset.{max u1 u2 u3} (Option.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ))) (Finset.hasMem.{max u1 u2 u3} (Option.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ))) (Option.some.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ) q₂) (Turing.TM1.stmts.{u1, u2, u3} Γ _inst_1 Λ σ M S)) -> (Membership.Mem.{max u1 u2 u3, max u1 u2 u3} (Option.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) (Finset.{max u1 u2 u3} (Option.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ))) (Finset.hasMem.{max u1 u2 u3} (Option.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ))) (Option.some.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ) q₁) (Turing.TM1.stmts.{u1, u2, u3} Γ _inst_1 Λ σ M S))
-but is expected to have type
-  forall {Γ : Type.{u3}} {_inst_1 : Type.{u2}} {Λ : Type.{u1}} {σ : _inst_1 -> (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ)} {M : Finset.{u2} _inst_1} {S : Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ} {q₁ : Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ}, (Membership.mem.{max (max u3 u2) u1, max (max u1 u2) u3} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ) (Finset.{max (max u1 u2) u3} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ)) (Finset.instMembershipFinset.{max (max u3 u2) u1} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ)) S (Turing.TM1.stmts₁.{u3, u2, u1} Γ _inst_1 Λ q₁)) -> (Membership.mem.{max (max u3 u2) u1, max (max u1 u2) u3} (Option.{max (max u3 u2) u1} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ)) (Finset.{max (max u1 u2) u3} (Option.{max (max u1 u2) u3} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ))) (Finset.instMembershipFinset.{max (max u3 u2) u1} (Option.{max (max u1 u2) u3} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ))) (Option.some.{max (max u3 u2) u1} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ) q₁) (Turing.TM1.stmts.{u3, u2, u1} Γ _inst_1 Λ σ M)) -> (Membership.mem.{max (max u3 u2) u1, max (max u1 u2) u3} (Option.{max (max u3 u2) u1} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ)) (Finset.{max (max u1 u2) u3} (Option.{max (max u1 u2) u3} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ))) (Finset.instMembershipFinset.{max (max u3 u2) u1} (Option.{max (max u1 u2) u3} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ))) (Option.some.{max (max u3 u2) u1} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ) S) (Turing.TM1.stmts.{u3, u2, u1} Γ _inst_1 Λ σ M))
-Case conversion may be inaccurate. Consider using '#align turing.TM1.stmts_trans Turing.TM1.stmts_transₓ'. -/
 theorem stmts_trans {M : Λ → stmt} {S q₁ q₂} (h₁ : q₁ ∈ stmts₁ q₂) :
     some q₂ ∈ stmts M S → some q₁ ∈ stmts M S := by
   simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, forall_eq',
@@ -1881,12 +1593,6 @@ theorem stmts_trans {M : Λ → stmt} {S q₁ q₂} (h₁ : q₁ ∈ stmts₁ q
 
 variable [Inhabited Λ]
 
-/- warning: turing.TM1.supports -> Turing.TM1.Supports is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {σ : Type.{u3}} [_inst_2 : Inhabited.{succ u2} Λ], (Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) -> (Finset.{u2} Λ) -> Prop
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}} [σ : Inhabited.{succ u2} _inst_1], (_inst_1 -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ)) -> (Finset.{u2} _inst_1) -> Prop
-Case conversion may be inaccurate. Consider using '#align turing.TM1.supports Turing.TM1.Supportsₓ'. -/
 /-- A set `S` of labels supports machine `M` if all the `goto`
   statements in the functions in `S` refer only to other functions
   in `S`. -/
@@ -1894,12 +1600,6 @@ def Supports (M : Λ → stmt) (S : Finset Λ) :=
   default ∈ S ∧ ∀ q ∈ S, supports_stmt S (M q)
 #align turing.TM1.supports Turing.TM1.Supports
 
-/- warning: turing.TM1.stmts_supports_stmt -> Turing.TM1.stmts_supportsStmt is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {σ : Type.{u3}} [_inst_2 : Inhabited.{succ u2} Λ] {M : Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)} {S : Finset.{u2} Λ} {q : Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ}, (Turing.TM1.Supports.{u1, u2, u3} Γ _inst_1 Λ σ _inst_2 M S) -> (Membership.Mem.{max u1 u2 u3, max u1 u2 u3} (Option.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) (Finset.{max u1 u2 u3} (Option.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ))) (Finset.hasMem.{max u1 u2 u3} (Option.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ))) (Option.some.{max u1 u2 u3} (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ) q) (Turing.TM1.stmts.{u1, u2, u3} Γ _inst_1 Λ σ M S)) -> (Turing.TM1.SupportsStmt.{u1, u2, u3} Γ _inst_1 Λ σ S q)
-but is expected to have type
-  forall {Γ : Type.{u3}} {_inst_1 : Type.{u2}} {Λ : Type.{u1}} [σ : Inhabited.{succ u2} _inst_1] {_inst_2 : _inst_1 -> (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ)} {M : Finset.{u2} _inst_1} {S : Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ}, (Turing.TM1.Supports.{u3, u2, u1} Γ _inst_1 Λ σ _inst_2 M) -> (Membership.mem.{max (max u3 u2) u1, max (max u1 u2) u3} (Option.{max (max u3 u2) u1} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ)) (Finset.{max (max u1 u2) u3} (Option.{max (max u1 u2) u3} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ))) (Finset.instMembershipFinset.{max (max u3 u2) u1} (Option.{max (max u1 u2) u3} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ))) (Option.some.{max (max u3 u2) u1} (Turing.TM1.Stmt.{u3, u2, u1} Γ _inst_1 Λ) S) (Turing.TM1.stmts.{u3, u2, u1} Γ _inst_1 Λ _inst_2 M)) -> (Turing.TM1.SupportsStmt.{u3, u2, u1} Γ _inst_1 Λ M S)
-Case conversion may be inaccurate. Consider using '#align turing.TM1.stmts_supports_stmt Turing.TM1.stmts_supportsStmtₓ'. -/
 theorem stmts_supportsStmt {M : Λ → stmt} {S q} (ss : supports M S) :
     some q ∈ stmts M S → supports_stmt S q := by
   simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, forall_eq',
@@ -1907,9 +1607,6 @@ theorem stmts_supportsStmt {M : Λ → stmt} {S q} (ss : supports M S) :
     exact fun l ls h => stmts₁_supports_stmt_mono h (ss.2 _ ls)
 #align turing.TM1.stmts_supports_stmt Turing.TM1.stmts_supportsStmt
 
-/- warning: turing.TM1.step_supports -> Turing.TM1.step_supports is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align turing.TM1.step_supports Turing.TM1.step_supportsₓ'. -/
 theorem step_supports (M : Λ → stmt) {S} (ss : supports M S) :
     ∀ {c c' : cfg}, c' ∈ step M c → c.l ∈ S.insertNone → c'.l ∈ S.insertNone
   | ⟨some l₁, v, T⟩, c', h₁, h₂ =>
@@ -1990,12 +1687,6 @@ parameter (M : Λ → stmt₁)
 
 include M
 
-/- warning: turing.TM1to0.Λ' -> Turing.TM1to0.Λ' is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ], (Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) -> Sort.{max (succ (max u1 u2 u3)) (succ u3)}
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}}, (_inst_1 -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ)) -> Sort.{max (succ (max (max u3 u2) u1)) (succ u3)}
-Case conversion may be inaccurate. Consider using '#align turing.TM1to0.Λ' Turing.TM1to0.Λ'ₓ'. -/
 -- [inhabited Λ] [inhabited σ] (M : Λ → stmt₁): We need the M assumption
 -- because of the inhabited instance, but we could avoid the inhabited instances on Λ and σ here.
 -- But they are parameters so we cannot easily skip them for just this definition.
@@ -2014,12 +1705,6 @@ instance : Inhabited Λ' :=
 
 open TM0.Stmt
 
-/- warning: turing.TM1to0.tr_aux -> Turing.TM1to0.trAux is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] (M : Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)), Γ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ) -> σ -> (Prod.{max (max u1 u2 u3) u3, u1} (Turing.TM1to0.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M) (Turing.TM0.Stmt.{u1} Γ _inst_1))
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}} (_inst_2 : _inst_1 -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ)), Γ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ) -> Λ -> (Prod.{max (max u3 u2) u1, u1} (Turing.TM1to0.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2) (Turing.TM0.Stmt.{u1} Γ))
-Case conversion may be inaccurate. Consider using '#align turing.TM1to0.tr_aux Turing.TM1to0.trAuxₓ'. -/
 /-- The core TM1 → TM0 translation function. Here `s` is the current value on the tape, and the
 `stmt₁` is the TM1 statement to translate, with local state `v : σ`. We evaluate all regular
 instructions recursively until we reach either a `move` or `write` command, or a `goto`; in the
@@ -2036,24 +1721,12 @@ def trAux (s : Γ) : stmt₁ → σ → Λ' × stmt₀
 -- mathport name: exprcfg₀
 local notation "cfg₀" => TM0.Cfg Γ Λ'
 
-/- warning: turing.TM1to0.tr -> Turing.TM1to0.tr is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] (M : Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)), Turing.TM0.Machine.{u1, max (max u1 u2 u3) u3} Γ _inst_1 (Turing.TM1to0.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M) (Turing.TM1to0.Λ'.inhabited.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M)
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} [Λ : Inhabited.{succ u2} _inst_1] {_inst_2 : Type.{u3}} [σ : Inhabited.{succ u3} _inst_2] (_inst_3 : _inst_1 -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 _inst_2)), Turing.TM0.Machine.{u1, max (max u3 u2) u1} Γ (Turing.TM1to0.Λ'.{u1, u2, u3} Γ _inst_1 _inst_2 _inst_3) (Turing.TM1to0.instInhabitedΛ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3)
-Case conversion may be inaccurate. Consider using '#align turing.TM1to0.tr Turing.TM1to0.trₓ'. -/
 /-- The translated TM0 machine (given the TM1 machine input). -/
 def tr : TM0.Machine Γ Λ'
   | (none, v), s => none
   | (some q, v), s => some (tr_aux s q v)
 #align turing.TM1to0.tr Turing.TM1to0.tr
 
-/- warning: turing.TM1to0.tr_cfg -> Turing.TM1to0.trCfg is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] (M : Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)), (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ) -> (Turing.TM0.Cfg.{u1, max (max u1 u2 u3) u3} Γ _inst_1 (Turing.TM1to0.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M) (Turing.TM1to0.Λ'.inhabited.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M))
-but is expected to have type
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {_inst_2 : Type.{u3}} (σ : Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ Λ _inst_2)), (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ _inst_2) -> (Turing.TM0.Cfg.{u1, max (max u3 u2) u1} Γ _inst_1 (Turing.TM1to0.Λ'.{u1, u2, u3} Γ Λ _inst_2 σ))
-Case conversion may be inaccurate. Consider using '#align turing.TM1to0.tr_cfg Turing.TM1to0.trCfgₓ'. -/
 /-- Translate configurations from TM1 to TM0. -/
 def trCfg : cfg₁ → cfg₀
   | ⟨l, v, T⟩ => ⟨(l.map M, v), T⟩
@@ -2077,12 +1750,6 @@ theorem tr_respects : Respects (TM1.step M) (TM0.step tr) fun c₁ c₂ => tr_cf
 #align turing.TM1to0.tr_respects Turing.TM1to0.tr_respects
 -/
 
-/- warning: turing.TM1to0.tr_eval -> Turing.TM1to0.tr_eval is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] (M : Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) (l : List.{u1} Γ), Eq.{succ u1} (Part.{u1} (Turing.ListBlank.{u1} Γ _inst_1)) (Turing.TM0.eval.{u1, max (max u1 u2 u3) u3} Γ _inst_1 (Turing.TM1to0.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M) (Turing.TM1to0.Λ'.inhabited.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M) (Turing.TM1to0.tr.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M) l) (Turing.TM1.eval.{u1, u2, u3} Γ _inst_1 Λ σ _inst_2 _inst_3 M l)
-but is expected to have type
-  forall {Γ : Type.{u3}} [_inst_1 : Inhabited.{succ u3} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u1}} [_inst_3 : Inhabited.{succ u1} σ] (M : Λ -> (Turing.TM1.Stmt.{u3, u2, u1} Γ Λ σ)) (l : List.{u3} Γ), Eq.{succ u3} (Part.{u3} (Turing.ListBlank.{u3} Γ _inst_1)) (Turing.TM0.eval.{u3, max (max u3 u2) u1} Γ _inst_1 (Turing.TM1to0.Λ'.{u3, u2, u1} Γ Λ σ M) (Turing.TM1to0.instInhabitedΛ'.{u3, u2, u1} Γ Λ _inst_2 σ _inst_3 M) (Turing.TM1to0.tr.{u3, u2, u1} Γ Λ _inst_2 σ _inst_3 M) l) (Turing.TM1.eval.{u3, u2, u1} Γ _inst_1 Λ σ _inst_2 _inst_3 M l)
-Case conversion may be inaccurate. Consider using '#align turing.TM1to0.tr_eval Turing.TM1to0.tr_evalₓ'. -/
 theorem tr_eval (l : List Γ) : TM0.eval tr l = TM1.eval M l :=
   (congr_arg _ (tr_eval' _ _ _ tr_respects ⟨some _, _, _⟩)).trans
     (by
@@ -2092,12 +1759,6 @@ theorem tr_eval (l : List Γ) : TM0.eval tr l = TM1.eval M l :=
 
 variable [Fintype σ]
 
-/- warning: turing.TM1to0.tr_stmts -> Turing.TM1to0.trStmts is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] (M : Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) [_inst_4 : Fintype.{u3} σ], (Finset.{u2} Λ) -> (Finset.{max (max u1 u2 u3) u3} (Turing.TM1to0.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M))
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}} (_inst_2 : _inst_1 -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ)) [σ : Fintype.{u3} Λ], (Finset.{u2} _inst_1) -> (Finset.{max (max u3 u2) u1} (Turing.TM1to0.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2))
-Case conversion may be inaccurate. Consider using '#align turing.TM1to0.tr_stmts Turing.TM1to0.trStmtsₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /-- Given a finite set of accessible `Λ` machine states, there is a finite set of accessible
 machine states in the target (even though the type `Λ'` is infinite). -/
@@ -2109,12 +1770,6 @@ open Classical
 
 attribute [local simp] TM1.stmts₁_self
 
-/- warning: turing.TM1to0.tr_supports -> Turing.TM1to0.tr_supports is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] (M : Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) [_inst_4 : Fintype.{u3} σ] {S : Finset.{u2} Λ}, (Turing.TM1.Supports.{u1, u2, u3} Γ _inst_1 Λ σ _inst_2 M S) -> (Turing.TM0.Supports.{u1, max (max u1 u2 u3) u3} Γ _inst_1 (Turing.TM1to0.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M) (Turing.TM1to0.Λ'.inhabited.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M) (Turing.TM1to0.tr.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M) ((fun (a : Type.{max (max u1 u2 u3) u3}) (b : Type.{max (max u1 u2 u3) u3}) [self : HasLiftT.{succ (max (max u1 u2 u3) u3), succ (max (max u1 u2 u3) u3)} a b] => self.0) (Finset.{max (max u1 u2 u3) u3} (Turing.TM1to0.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M)) (Set.{max (max u1 u2 u3) u3} (Turing.TM1to0.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M)) (HasLiftT.mk.{succ (max (max u1 u2 u3) u3), succ (max (max u1 u2 u3) u3)} (Finset.{max (max u1 u2 u3) u3} (Turing.TM1to0.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M)) (Set.{max (max u1 u2 u3) u3} (Turing.TM1to0.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M)) (CoeTCₓ.coe.{succ (max (max u1 u2 u3) u3), succ (max (max u1 u2 u3) u3)} (Finset.{max (max u1 u2 u3) u3} (Turing.TM1to0.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M)) (Set.{max (max u1 u2 u3) u3} (Turing.TM1to0.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M)) (Finset.Set.hasCoeT.{max (max u1 u2 u3) u3} (Turing.TM1to0.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M)))) (Turing.TM1to0.trStmts.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M _inst_4 S)))
-but is expected to have type
-  forall {Γ : Type.{u2}} {_inst_1 : Type.{u3}} [Λ : Inhabited.{succ u3} _inst_1] {_inst_2 : Type.{u1}} [σ : Inhabited.{succ u1} _inst_2] (_inst_3 : _inst_1 -> (Turing.TM1.Stmt.{u2, u3, u1} Γ _inst_1 _inst_2)) [M : Fintype.{u1} _inst_2] {_inst_4 : Finset.{u3} _inst_1}, (Turing.TM1.Supports.{u2, u3, u1} Γ _inst_1 _inst_2 Λ _inst_3 _inst_4) -> (Turing.TM0.Supports.{u2, max (max u2 u3) u1} Γ (Turing.TM1to0.Λ'.{u2, u3, u1} Γ _inst_1 _inst_2 _inst_3) (Turing.TM1to0.instInhabitedΛ'.{u2, u3, u1} Γ _inst_1 Λ _inst_2 σ _inst_3) (Turing.TM1to0.tr.{u2, u3, u1} Γ _inst_1 Λ _inst_2 σ _inst_3) (Finset.toSet.{max (max u2 u3) u1} (Turing.TM1to0.Λ'.{u2, u3, u1} Γ _inst_1 _inst_2 _inst_3) (Turing.TM1to0.trStmts.{u2, u3, u1} Γ _inst_1 _inst_2 _inst_3 M _inst_4)))
-Case conversion may be inaccurate. Consider using '#align turing.TM1to0.tr_supports Turing.TM1to0.tr_supportsₓ'. -/
 theorem tr_supports {S : Finset Λ} (ss : TM1.Supports M S) : TM0.Supports tr ↑(tr_stmts S) :=
   ⟨Finset.mem_product.2
       ⟨Finset.some_mem_insertNone.2 (Finset.mem_biUnion.2 ⟨_, ss.1, TM1.stmts₁_self⟩),
@@ -2218,12 +1873,6 @@ local notation "stmt₁" => Stmt Γ Λ σ
 -- mathport name: exprcfg₁
 local notation "cfg₁" => Cfg Γ Λ σ
 
-/- warning: turing.TM1to1.Λ' -> Turing.TM1to1.Λ' is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ], Type.{max u1 u2 u3}
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}}, Sort.{max (max (succ u1) (succ u2)) (succ u3)}
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.Λ' Turing.TM1to1.Λ'ₓ'. -/
 /-- The configuration state of the TM. -/
 inductive Λ' : Type max u_1 u_2 u_3
   | normal : Λ → Λ'
@@ -2239,12 +1888,6 @@ local notation "stmt'" => Stmt Bool Λ' σ
 -- mathport name: exprcfg'
 local notation "cfg'" => Cfg Bool Λ' σ
 
-/- warning: turing.TM1to1.read_aux -> Turing.TM1to1.readAux is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] (n : Nat), ((Vector.{0} Bool n) -> (Turing.TM1.Stmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ)) -> (Turing.TM1.Stmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ)
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}} (_inst_2 : Nat), ((Vector.{0} Bool _inst_2) -> (Turing.TM1.Stmt.{0, max (max u3 u2) u1, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ)) -> (Turing.TM1.Stmt.{0, max (max u3 u2) u1, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ)
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.read_aux Turing.TM1to1.readAuxₓ'. -/
 /-- Read a vector of length `n` from the tape. -/
 def readAux : ∀ n, (Vector Bool n → stmt') → stmt'
   | 0, f => f Vector.nil
@@ -2255,47 +1898,23 @@ def readAux : ∀ n, (Vector Bool n → stmt') → stmt'
 
 parameter {n : ℕ}(enc : Γ → Vector Bool n)(dec : Vector Bool n → Γ)
 
-/- warning: turing.TM1to1.move -> Turing.TM1to1.move is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] {n : Nat}, Turing.Dir -> (Turing.TM1.Stmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ) -> (Turing.TM1.Stmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ)
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}} {_inst_2 : Nat}, Turing.Dir -> (Turing.TM1.Stmt.{0, max (max u3 u2) u1, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ) -> (Turing.TM1.Stmt.{0, max (max u3 u2) u1, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ)
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.move Turing.TM1to1.moveₓ'. -/
 /-- A move left or right corresponds to `n` moves across the super-cell. -/
 def move (d : Dir) (q : stmt') : stmt' :=
   (Stmt.move d^[n]) q
 #align turing.TM1to1.move Turing.TM1to1.move
 
-/- warning: turing.TM1to1.read -> Turing.TM1to1.read is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] {n : Nat}, ((Vector.{0} Bool n) -> Γ) -> (Γ -> (Turing.TM1.Stmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ)) -> (Turing.TM1.Stmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ)
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}} {_inst_2 : Nat}, ((Vector.{0} Bool _inst_2) -> Γ) -> (Γ -> (Turing.TM1.Stmt.{0, max (max u3 u2) u1, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ)) -> (Turing.TM1.Stmt.{0, max (max u3 u2) u1, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ)
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.read Turing.TM1to1.readₓ'. -/
 /-- To read a symbol from the tape, we use `read_aux` to traverse the symbol,
 then return to the original position with `n` moves to the left. -/
 def read (f : Γ → stmt') : stmt' :=
   read_aux n fun v => move Dir.left <| f (dec v)
 #align turing.TM1to1.read Turing.TM1to1.read
 
-/- warning: turing.TM1to1.write -> Turing.TM1to1.write is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ], (List.{0} Bool) -> (Turing.TM1.Stmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ) -> (Turing.TM1.Stmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ)
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}}, (List.{0} Bool) -> (Turing.TM1.Stmt.{0, max (max u3 u2) u1, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ) -> (Turing.TM1.Stmt.{0, max (max u3 u2) u1, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ)
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.write Turing.TM1to1.writeₓ'. -/
 /-- Write a list of bools on the tape. -/
 def write : List Bool → stmt' → stmt'
   | [], q => q
   | a :: l, q => (Stmt.write fun _ _ => a) <| Stmt.move Dir.right <| write l q
 #align turing.TM1to1.write Turing.TM1to1.write
 
-/- warning: turing.TM1to1.tr_normal -> Turing.TM1to1.trNormal is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] {n : Nat}, ((Vector.{0} Bool n) -> Γ) -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ) -> (Turing.TM1.Stmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ)
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}} {_inst_2 : Nat}, ((Vector.{0} Bool _inst_2) -> Γ) -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ) -> (Turing.TM1.Stmt.{0, max (max u3 u2) u1, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ)
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.tr_normal Turing.TM1to1.trNormalₓ'. -/
 /-- Translate a normal instruction. For the `write` command, we use a `goto` indirection so that
 we can access the current value of the tape. -/
 def trNormal : stmt₁ → stmt'
@@ -2308,12 +1927,6 @@ def trNormal : stmt₁ → stmt'
   | stmt.halt => Stmt.halt
 #align turing.TM1to1.tr_normal Turing.TM1to1.trNormal
 
-/- warning: turing.TM1to1.step_aux_move -> Turing.TM1to1.stepAux_move is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] {n : Nat} (d : Turing.Dir) (q : Turing.TM1.Stmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ) (v : σ) (T : Turing.Tape.{0} Bool Bool.inhabited), Eq.{max 1 (succ (max u1 u2 u3)) (succ u3)} (Turing.TM1.Cfg.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ) (Turing.TM1.stepAux.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ (Turing.TM1to1.move.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 n d q) v T) (Turing.TM1.stepAux.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ q v (Nat.iterate.{1} (Turing.Tape.{0} Bool Bool.inhabited) (Turing.Tape.move.{0} Bool Bool.inhabited d) n T))
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}} {_inst_2 : Nat} (σ : Turing.Dir) (_inst_3 : Turing.TM1.Stmt.{0, max (max u3 u2) u1, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ) (n : Λ) (d : Turing.Tape.{0} Bool instInhabitedBool), Eq.{max (max (succ u1) (succ u2)) (succ u3)} (Turing.TM1.Cfg.{0, max (max u1 u2) u3, u3} Bool instInhabitedBool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ) (Turing.TM1.stepAux.{0, max (max u1 u2) u3, u3} Bool instInhabitedBool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ (Turing.TM1to1.move.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) n d) (Turing.TM1.stepAux.{0, max (max u1 u2) u3, u3} Bool instInhabitedBool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ _inst_3 n (Nat.iterate.{1} (Turing.Tape.{0} Bool instInhabitedBool) (Turing.Tape.move.{0} Bool instInhabitedBool σ) _inst_2 d))
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.step_aux_move Turing.TM1to1.stepAux_moveₓ'. -/
 theorem stepAux_move (d q v T) : stepAux (move d q) v T = stepAux q v ((Tape.move d^[n]) T) :=
   by
   suffices : ∀ i, step_aux ((stmt.move d^[i]) q) v T = step_aux q v ((tape.move d^[i]) T)
@@ -2322,34 +1935,16 @@ theorem stepAux_move (d q v T) : stepAux (move d q) v T = stepAux q v ((Tape.mov
   rw [iterate_succ', step_aux, IH, iterate_succ]
 #align turing.TM1to1.step_aux_move Turing.TM1to1.stepAux_move
 
-/- warning: turing.TM1to1.supports_stmt_move -> Turing.TM1to1.supportsStmt_move is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] {n : Nat} {S : Finset.{max u1 u2 u3} (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3)} {d : Turing.Dir} {q : Turing.TM1.Stmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ}, Eq.{1} Prop (Turing.TM1.SupportsStmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ S (Turing.TM1to1.move.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 n d q)) (Turing.TM1.SupportsStmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ S q)
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}} {_inst_2 : Nat} {σ : Finset.{max (max u3 u2) u1} (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ)} {_inst_3 : Turing.Dir} {n : Turing.TM1.Stmt.{0, max (max u3 u2) u1, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ}, Eq.{1} Prop (Turing.TM1.SupportsStmt.{0, max (max u1 u2) u3, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ σ (Turing.TM1to1.move.{u1, u2, u3} Γ _inst_1 Λ _inst_2 _inst_3 n)) (Turing.TM1.SupportsStmt.{0, max (max u1 u2) u3, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ σ n)
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.supports_stmt_move Turing.TM1to1.supportsStmt_moveₓ'. -/
 theorem supportsStmt_move {S d q} : SupportsStmt S (move d q) = SupportsStmt S q :=
   by
   suffices ∀ {i}, SupportsStmt S ((Stmt.move d^[i]) q) = _ from this
   intro <;> induction i generalizing q <;> simp only [*, iterate] <;> rfl
 #align turing.TM1to1.supports_stmt_move Turing.TM1to1.supportsStmt_move
 
-/- warning: turing.TM1to1.supports_stmt_write -> Turing.TM1to1.supportsStmt_write is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] {S : Finset.{max u1 u2 u3} (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3)} {l : List.{0} Bool} {q : Turing.TM1.Stmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ}, Eq.{1} Prop (Turing.TM1.SupportsStmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ S (Turing.TM1to1.write.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 l q)) (Turing.TM1.SupportsStmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ S q)
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}} {_inst_2 : Finset.{max (max u3 u2) u1} (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ)} {σ : List.{0} Bool} {_inst_3 : Turing.TM1.Stmt.{0, max (max u3 u2) u1, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ}, Eq.{1} Prop (Turing.TM1.SupportsStmt.{0, max (max u1 u2) u3, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ _inst_2 (Turing.TM1to1.write.{u1, u2, u3} Γ _inst_1 Λ σ _inst_3)) (Turing.TM1.SupportsStmt.{0, max (max u1 u2) u3, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ _inst_2 _inst_3)
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.supports_stmt_write Turing.TM1to1.supportsStmt_writeₓ'. -/
 theorem supportsStmt_write {S l q} : SupportsStmt S (write l q) = SupportsStmt S q := by
   induction' l with a l IH <;> simp only [write, supports_stmt, *]
 #align turing.TM1to1.supports_stmt_write Turing.TM1to1.supportsStmt_write
 
-/- warning: turing.TM1to1.supports_stmt_read -> Turing.TM1to1.supportsStmt_read is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] {n : Nat} (dec : (Vector.{0} Bool n) -> Γ) {S : Finset.{max u1 u2 u3} (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3)} {f : Γ -> (Turing.TM1.Stmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ)}, (forall (a : Γ), Turing.TM1.SupportsStmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ S (f a)) -> (Turing.TM1.SupportsStmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ S (Turing.TM1to1.read.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 n dec f))
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}} {_inst_2 : Nat} (σ : (Vector.{0} Bool _inst_2) -> Γ) {_inst_3 : Finset.{max (max u3 u2) u1} (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ)} {n : Γ -> (Turing.TM1.Stmt.{0, max (max u3 u2) u1, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ)}, (forall (ᾰ : Γ), Turing.TM1.SupportsStmt.{0, max (max u1 u2) u3, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ _inst_3 (n ᾰ)) -> (Turing.TM1.SupportsStmt.{0, max (max u1 u2) u3, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ _inst_3 (Turing.TM1to1.read.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ n))
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.supports_stmt_read Turing.TM1to1.supportsStmt_readₓ'. -/
 theorem supportsStmt_read {S} :
     ∀ {f : Γ → stmt'}, (∀ a, SupportsStmt S (f a)) → SupportsStmt S (read f) :=
   suffices
@@ -2395,24 +1990,12 @@ end
 
 parameter (M : Λ → stmt₁)
 
-/- warning: turing.TM1to1.tr -> Turing.TM1to1.tr is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] {n : Nat}, (Γ -> (Vector.{0} Bool n)) -> ((Vector.{0} Bool n) -> Γ) -> (Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) -> (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) -> (Turing.TM1.Stmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ)
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}} {_inst_2 : Nat}, (Γ -> (Vector.{0} Bool _inst_2)) -> ((Vector.{0} Bool _inst_2) -> Γ) -> (_inst_1 -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ)) -> (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) -> (Turing.TM1.Stmt.{0, max (max u3 u2) u1, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ) Λ)
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.tr Turing.TM1to1.trₓ'. -/
 /-- The top level program. -/
 def tr : Λ' → stmt'
   | Λ'.normal l => tr_normal (M l)
   | Λ'.write a q => write (enc a).toList <| move Dir.left <| tr_normal q
 #align turing.TM1to1.tr Turing.TM1to1.tr
 
-/- warning: turing.TM1to1.tr_cfg -> Turing.TM1to1.trCfg is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] {n : Nat} {enc : Γ -> (Vector.{0} Bool n)}, (Eq.{1} (Vector.{0} Bool n) (enc (Inhabited.default.{succ u1} Γ _inst_1)) (Vector.replicate.{0} Bool n Bool.false)) -> (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ) -> (Turing.TM1.Cfg.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ)
-but is expected to have type
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {_inst_2 : Type.{u3}} {σ : Nat} (_inst_3 : Γ -> (Vector.{0} Bool σ)), (Eq.{1} (Vector.{0} Bool σ) (_inst_3 (Inhabited.default.{succ u1} Γ _inst_1)) (Vector.replicate.{0} Bool σ Bool.false)) -> (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ _inst_2) -> (Turing.TM1.Cfg.{0, max (max u3 u2) u1, u3} Bool instInhabitedBool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ Λ _inst_2) _inst_2)
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.tr_cfg Turing.TM1to1.trCfgₓ'. -/
 /-- The machine configuration translation. -/
 def trCfg : cfg₁ → cfg'
   | ⟨l, v, T⟩ => ⟨l.map Λ'.normal, v, tr_tape T⟩
@@ -2457,12 +2040,6 @@ theorem trTape'_move_right (L R) :
 #align turing.TM1to1.tr_tape'_move_right Turing.TM1to1.trTape'_move_right
 -/
 
-/- warning: turing.TM1to1.step_aux_write -> Turing.TM1to1.stepAux_write is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] {n : Nat} {enc : Γ -> (Vector.{0} Bool n)} (enc0 : Eq.{1} (Vector.{0} Bool n) (enc (Inhabited.default.{succ u1} Γ _inst_1)) (Vector.replicate.{0} Bool n Bool.false)) (q : Turing.TM1.Stmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ) (v : σ) (a : Γ) (b : Γ) (L : Turing.ListBlank.{u1} Γ _inst_1) (R : Turing.ListBlank.{u1} Γ _inst_1), Eq.{max 1 (succ (max u1 u2 u3)) (succ u3)} (Turing.TM1.Cfg.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ) (Turing.TM1.stepAux.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ (Turing.TM1to1.write.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 (Vector.toList.{0} Bool n (enc a)) q) v (Turing.TM1to1.trTape'.{u1} Γ _inst_1 n enc enc0 L (Turing.ListBlank.cons.{u1} Γ _inst_1 b R))) (Turing.TM1.stepAux.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ q v (Turing.TM1to1.trTape'.{u1} Γ _inst_1 n enc enc0 (Turing.ListBlank.cons.{u1} Γ _inst_1 a L) R))
-but is expected to have type
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {_inst_2 : Type.{u3}} {σ : Nat} {_inst_3 : Γ -> (Vector.{0} Bool σ)} (n : Eq.{1} (Vector.{0} Bool σ) (_inst_3 (Inhabited.default.{succ u1} Γ _inst_1)) (Vector.replicate.{0} Bool σ Bool.false)) (enc : Turing.TM1.Stmt.{0, max (max u3 u2) u1, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ Λ _inst_2) _inst_2) (enc0 : _inst_2) (q : Γ) (v : Γ) (a : Turing.ListBlank.{u1} Γ _inst_1) (b : Turing.ListBlank.{u1} Γ _inst_1), Eq.{max (max (succ u1) (succ u2)) (succ u3)} (Turing.TM1.Cfg.{0, max (max u3 u2) u1, u3} Bool instInhabitedBool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ Λ _inst_2) _inst_2) (Turing.TM1.stepAux.{0, max (max u3 u2) u1, u3} Bool instInhabitedBool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ Λ _inst_2) _inst_2 (Turing.TM1to1.write.{u1, u2, u3} Γ Λ _inst_2 (Vector.toList.{0} Bool σ (_inst_3 q)) enc) enc0 (Turing.TM1to1.trTape'.{u1} Γ _inst_1 σ _inst_3 n a (Turing.ListBlank.cons.{u1} Γ _inst_1 v b))) (Turing.TM1.stepAux.{0, max (max u1 u2) u3, u3} Bool instInhabitedBool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ Λ _inst_2) _inst_2 enc enc0 (Turing.TM1to1.trTape'.{u1} Γ _inst_1 σ _inst_3 n (Turing.ListBlank.cons.{u1} Γ _inst_1 q a) b))
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.step_aux_write Turing.TM1to1.stepAux_writeₓ'. -/
 theorem stepAux_write (q v a b L R) :
     stepAux (write (enc a).toList q) v (tr_tape' L (ListBlank.cons b R)) =
       stepAux q v (tr_tape' (ListBlank.cons a L) R) :=
@@ -2487,12 +2064,6 @@ parameter (encdec : ∀ a, dec (enc a) = a)
 
 include encdec
 
-/- warning: turing.TM1to1.step_aux_read -> Turing.TM1to1.stepAux_read is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] {n : Nat} {enc : Γ -> (Vector.{0} Bool n)} (dec : (Vector.{0} Bool n) -> Γ) (enc0 : Eq.{1} (Vector.{0} Bool n) (enc (Inhabited.default.{succ u1} Γ _inst_1)) (Vector.replicate.{0} Bool n Bool.false)), (forall (a : Γ), Eq.{succ u1} Γ (dec (enc a)) a) -> (forall (f : Γ -> (Turing.TM1.Stmt.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ)) (v : σ) (L : Turing.ListBlank.{u1} Γ _inst_1) (R : Turing.ListBlank.{u1} Γ _inst_1), Eq.{max 1 (succ (max u1 u2 u3)) (succ u3)} (Turing.TM1.Cfg.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ) (Turing.TM1.stepAux.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ (Turing.TM1to1.read.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 n dec f) v (Turing.TM1to1.trTape'.{u1} Γ _inst_1 n enc enc0 L R)) (Turing.TM1.stepAux.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ (f (Turing.ListBlank.head.{u1} Γ _inst_1 R)) v (Turing.TM1to1.trTape'.{u1} Γ _inst_1 n enc enc0 L R)))
-but is expected to have type
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {_inst_2 : Type.{u3}} {σ : Nat} {_inst_3 : Γ -> (Vector.{0} Bool σ)} (n : (Vector.{0} Bool σ) -> Γ) (enc : Eq.{1} (Vector.{0} Bool σ) (_inst_3 (Inhabited.default.{succ u1} Γ _inst_1)) (Vector.replicate.{0} Bool σ Bool.false)), (forall (ᾰ : Γ), Eq.{succ u1} Γ (n (_inst_3 ᾰ)) ᾰ) -> (forall (enc0 : Γ -> (Turing.TM1.Stmt.{0, max (max u3 u2) u1, u3} Bool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ Λ _inst_2) _inst_2)) (encdec : _inst_2) (f : Turing.ListBlank.{u1} Γ _inst_1) (v : Turing.ListBlank.{u1} Γ _inst_1), Eq.{max (max (succ u1) (succ u2)) (succ u3)} (Turing.TM1.Cfg.{0, max (max u3 u2) u1, u3} Bool instInhabitedBool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ Λ _inst_2) _inst_2) (Turing.TM1.stepAux.{0, max (max u3 u2) u1, u3} Bool instInhabitedBool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ Λ _inst_2) _inst_2 (Turing.TM1to1.read.{u1, u2, u3} Γ Λ _inst_2 σ n enc0) encdec (Turing.TM1to1.trTape'.{u1} Γ _inst_1 σ _inst_3 enc f v)) (Turing.TM1.stepAux.{0, max (max u1 u2) u3, u3} Bool instInhabitedBool (Turing.TM1to1.Λ'.{u1, u2, u3} Γ Λ _inst_2) _inst_2 (enc0 (Turing.ListBlank.head.{u1} Γ _inst_1 v)) encdec (Turing.TM1to1.trTape'.{u1} Γ _inst_1 σ _inst_3 enc f v)))
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.step_aux_read Turing.TM1to1.stepAux_readₓ'. -/
 theorem stepAux_read (f v L R) :
     stepAux (read f) v (tr_tape' L R) = stepAux (f R.headI) v (tr_tape' L R) :=
   by
@@ -2520,12 +2091,6 @@ theorem stepAux_read (f v L R) :
   rw [← list_blank.append, IH]; rfl
 #align turing.TM1to1.step_aux_read Turing.TM1to1.stepAux_read
 
-/- warning: turing.TM1to1.tr_respects -> Turing.TM1to1.tr_respects is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] {n : Nat} {enc : Γ -> (Vector.{0} Bool n)} (dec : (Vector.{0} Bool n) -> Γ) (enc0 : Eq.{1} (Vector.{0} Bool n) (enc (Inhabited.default.{succ u1} Γ _inst_1)) (Vector.replicate.{0} Bool n Bool.false)) (M : Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)), (forall (a : Γ), Eq.{succ u1} Γ (dec (enc a)) a) -> (Turing.Respects.{max u1 u2 u3, max (max u1 u2 u3) u3} (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ) (Turing.TM1.Cfg.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ) (Turing.TM1.step.{u1, u2, u3} Γ _inst_1 Λ σ M) (Turing.TM1.step.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ (Turing.TM1to1.tr.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 n enc dec M)) (fun (c₁ : Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ) (c₂ : Turing.TM1.Cfg.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ) => Eq.{max 1 (succ (max u1 u2 u3)) (succ u3)} (Turing.TM1.Cfg.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ) (Turing.TM1to1.trCfg.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 n enc enc0 c₁) c₂))
-but is expected to have type
-  forall {Γ : Type.{u3}} [_inst_1 : Inhabited.{succ u3} Γ] {Λ : Type.{u1}} {_inst_2 : Type.{u2}} {σ : Nat} {_inst_3 : Γ -> (Vector.{0} Bool σ)} (n : (Vector.{0} Bool σ) -> Γ), (Eq.{1} (Vector.{0} Bool σ) (_inst_3 (Inhabited.default.{succ u3} Γ _inst_1)) (Vector.replicate.{0} Bool σ Bool.false)) -> (forall (dec : Λ -> (Turing.TM1.Stmt.{u3, u1, u2} Γ Λ _inst_2)), (forall (a : Γ), Eq.{succ u3} Γ (n (_inst_3 a)) a) -> (forall {M : Eq.{1} (Vector.{0} Bool σ) (_inst_3 (Inhabited.default.{succ u3} Γ _inst_1)) (Vector.replicate.{0} Bool σ Bool.false)}, Turing.Respects.{max (max u2 u1) u3, max u2 (max u2 u1) u3} (Turing.TM1.Cfg.{u3, u1, u2} Γ _inst_1 Λ _inst_2) (Turing.TM1.Cfg.{0, max (max u2 u1) u3, u2} Bool instInhabitedBool (Turing.TM1to1.Λ'.{u3, u1, u2} Γ Λ _inst_2) _inst_2) (Turing.TM1.step.{u3, u1, u2} Γ _inst_1 Λ _inst_2 dec) (Turing.TM1.step.{0, max (max u2 u1) u3, u2} Bool instInhabitedBool (Turing.TM1to1.Λ'.{u3, u1, u2} Γ Λ _inst_2) _inst_2 (Turing.TM1to1.tr.{u3, u1, u2} Γ Λ _inst_2 σ _inst_3 n dec)) (fun (c₁ : Turing.TM1.Cfg.{u3, u1, u2} Γ _inst_1 Λ _inst_2) (c₂ : Turing.TM1.Cfg.{0, max (max u2 u1) u3, u2} Bool instInhabitedBool (Turing.TM1to1.Λ'.{u3, u1, u2} Γ Λ _inst_2) _inst_2) => Eq.{max (max (succ u3) (succ u1)) (succ u2)} (Turing.TM1.Cfg.{0, max (max u2 u1) u3, u2} Bool instInhabitedBool (Turing.TM1to1.Λ'.{u3, u1, u2} Γ Λ _inst_2) _inst_2) (Turing.TM1to1.trCfg.{u3, u1, u2} Γ _inst_1 Λ _inst_2 σ _inst_3 M c₁) c₂)))
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.tr_respects Turing.TM1to1.tr_respectsₓ'. -/
 theorem tr_respects : Respects (step M) (step tr) fun c₁ c₂ => tr_cfg c₁ = c₂ :=
   fun_respects.2 fun ⟨l₁, v, T⟩ =>
     by
@@ -2576,12 +2141,6 @@ open Classical
 
 parameter [Fintype Γ]
 
-/- warning: turing.TM1to1.writes -> Turing.TM1to1.writes is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] [_inst_4 : Fintype.{u1} Γ], (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ) -> (Finset.{max u1 u2 u3} (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3))
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Fintype.{u1} Γ], (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ) -> (Finset.{max (max u3 u2) u1} (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ))
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.writes Turing.TM1to1.writesₓ'. -/
 /-- The set of accessible `Λ'.write` machine states. -/
 noncomputable def writes : stmt₁ → Finset Λ'
   | stmt.move d q => writes q
@@ -2592,24 +2151,12 @@ noncomputable def writes : stmt₁ → Finset Λ'
   | stmt.halt => ∅
 #align turing.TM1to1.writes Turing.TM1to1.writes
 
-/- warning: turing.TM1to1.tr_supp -> Turing.TM1to1.trSupp is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ], (Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) -> (forall [_inst_4 : Fintype.{u1} Γ], (Finset.{u2} Λ) -> (Finset.{max u1 u2 u3} (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3)))
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} {Λ : Type.{u3}}, (_inst_1 -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ)) -> (forall [σ : Fintype.{u1} Γ], (Finset.{u2} _inst_1) -> (Finset.{max (max u3 u2) u1} (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ)))
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.tr_supp Turing.TM1to1.trSuppₓ'. -/
 /-- The set of accessible machine states, assuming that the input machine is supported on `S`,
 are the normal states embedded from `S`, plus all write states accessible from these states. -/
 noncomputable def trSupp (S : Finset Λ) : Finset Λ' :=
   S.biUnion fun l => insert (Λ'.normal l) (writes (M l))
 #align turing.TM1to1.tr_supp Turing.TM1to1.trSupp
 
-/- warning: turing.TM1to1.tr_supports -> Turing.TM1to1.tr_supports is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] {n : Nat} {enc : Γ -> (Vector.{0} Bool n)} (dec : (Vector.{0} Bool n) -> Γ) (M : Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) [_inst_4 : Fintype.{u1} Γ] {S : Finset.{u2} Λ}, (Turing.TM1.Supports.{u1, u2, u3} Γ _inst_1 Λ σ _inst_2 M S) -> (Turing.TM1.Supports.{0, max u1 u2 u3, u3} Bool Bool.inhabited (Turing.TM1to1.Λ'.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) σ (Turing.TM1to1.Λ'.inhabited.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3) (Turing.TM1to1.tr.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 n enc dec M) (Turing.TM1to1.trSupp.{u1, u2, u3} Γ _inst_1 Λ _inst_2 σ _inst_3 M _inst_4 S))
-but is expected to have type
-  forall {Γ : Type.{u2}} {_inst_1 : Type.{u3}} [Λ : Inhabited.{succ u3} _inst_1] {_inst_2 : Type.{u1}} {σ : Nat} {_inst_3 : Γ -> (Vector.{0} Bool σ)} (n : (Vector.{0} Bool σ) -> Γ) (enc : _inst_1 -> (Turing.TM1.Stmt.{u2, u3, u1} Γ _inst_1 _inst_2)) [dec : Fintype.{u2} Γ] {M : Finset.{u3} _inst_1}, (Turing.TM1.Supports.{u2, u3, u1} Γ _inst_1 _inst_2 Λ enc M) -> (Turing.TM1.Supports.{0, max (max u1 u3) u2, u1} Bool (Turing.TM1to1.Λ'.{u2, u3, u1} Γ _inst_1 _inst_2) _inst_2 (Turing.TM1to1.instInhabitedΛ'.{u2, u3, u1} Γ _inst_1 Λ _inst_2) (Turing.TM1to1.tr.{u2, u3, u1} Γ _inst_1 _inst_2 σ _inst_3 n enc) (Turing.TM1to1.trSupp.{u2, u3, u1} Γ _inst_1 _inst_2 enc dec M))
-Case conversion may be inaccurate. Consider using '#align turing.TM1to1.tr_supports Turing.TM1to1.tr_supportsₓ'. -/
 theorem tr_supports {S} (ss : Supports M S) : Supports tr (tr_supp S) :=
   ⟨Finset.mem_biUnion.2 ⟨_, ss.1, Finset.mem_insert_self _ _⟩, fun q h =>
     by
@@ -2685,12 +2232,6 @@ parameter {Γ : Type _}[Inhabited Γ]
 
 parameter {Λ : Type _}[Inhabited Λ]
 
-/- warning: turing.TM0to1.Λ' -> Turing.TM0to1.Λ' is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ], Sort.{max (succ u1) (succ u2)}
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}}, Sort.{max (succ u1) (succ u2)}
-Case conversion may be inaccurate. Consider using '#align turing.TM0to1.Λ' Turing.TM0to1.Λ'ₓ'. -/
 /-- The machine states for a TM1 emulating a TM0 machine. States of the TM0 machine are embedded
 as `normal q` states, but the actual operation is split into two parts, a jump to `act s q`
 followed by the action and a jump to the next `normal` state.  -/
@@ -2715,12 +2256,6 @@ parameter (M : TM0.Machine Γ Λ)
 
 open TM1.Stmt
 
-/- warning: turing.TM0to1.tr -> Turing.TM0to1.tr is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ], (Turing.TM0.Machine.{u1, u2} Γ _inst_1 Λ _inst_2) -> (Turing.TM0to1.Λ'.{u1, u2} Γ _inst_1 Λ _inst_2) -> (Turing.TM1.Stmt.{u1, max u1 u2, 0} Γ _inst_1 (Turing.TM0to1.Λ'.{u1, u2} Γ _inst_1 Λ _inst_2) Unit)
-but is expected to have type
-  forall {Γ : Type.{u1}} {_inst_1 : Type.{u2}} [Λ : Inhabited.{succ u2} _inst_1], (Turing.TM0.Machine.{u1, u2} Γ _inst_1 Λ) -> (Turing.TM0to1.Λ'.{u1, u2} Γ _inst_1) -> (Turing.TM1.Stmt.{u1, max u2 u1, 0} Γ (Turing.TM0to1.Λ'.{u1, u2} Γ _inst_1) Unit)
-Case conversion may be inaccurate. Consider using '#align turing.TM0to1.tr Turing.TM0to1.trₓ'. -/
 /-- The program.  -/
 def tr : Λ' → stmt₁
   | Λ'.normal q =>
@@ -2812,12 +2347,6 @@ parameter (Λ : Type _)
 -- Type of function labels
 parameter (σ : Type _)
 
-/- warning: turing.TM2.stmt -> Turing.TM2.Stmt is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K], (K -> Type.{u2}) -> Type.{u3} -> Type.{u4} -> Sort.{max (succ u1) (succ u2) (succ u3) (succ u4)}
-but is expected to have type
-  forall {K : Type.{u1}}, (K -> Type.{u2}) -> Type.{u3} -> Type.{u4} -> Sort.{max (max (max (succ u1) (succ u2)) (succ u3)) (succ u4)}
-Case conversion may be inaccurate. Consider using '#align turing.TM2.stmt Turing.TM2.Stmtₓ'. -/
 -- Type of variable settings
 /-- The TM2 model removes the tape entirely from the TM1 model,
   replacing it with an arbitrary (finite) collection of stacks.
@@ -2837,22 +2366,10 @@ inductive Stmt
 
 open Stmt
 
-/- warning: turing.TM2.stmt.inhabited -> Turing.TM2.Stmt.inhabited is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] (Γ : K -> Type.{u2}) (Λ : Type.{u3}) (σ : Type.{u4}), Inhabited.{max (succ u1) (succ u2) (succ u3) (succ u4)} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)
-but is expected to have type
-  forall {K : Type.{u1}} (_inst_1 : K -> Type.{u2}) (Γ : Type.{u3}) (Λ : Type.{u4}), Inhabited.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ)
-Case conversion may be inaccurate. Consider using '#align turing.TM2.stmt.inhabited Turing.TM2.Stmt.inhabitedₓ'. -/
 instance Stmt.inhabited : Inhabited stmt :=
   ⟨halt⟩
 #align turing.TM2.stmt.inhabited Turing.TM2.Stmt.inhabited
 
-/- warning: turing.TM2.cfg -> Turing.TM2.Cfg is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K], (K -> Type.{u2}) -> Type.{u3} -> Type.{u4} -> Sort.{max (succ u1) (succ u2) (succ u3) (succ u4)}
-but is expected to have type
-  forall {K : Type.{u1}}, (K -> Type.{u2}) -> Type.{u3} -> Type.{u4} -> Sort.{max (max (max (succ u1) (succ u2)) (succ u3)) (succ u4)}
-Case conversion may be inaccurate. Consider using '#align turing.TM2.cfg Turing.TM2.Cfgₓ'. -/
 /-- A configuration in the TM2 model is a label (or `none` for the halt state), the state of
 local variables, and the stacks. (Note that the stacks are not `list_blank`s, they have a definite
 size.) -/
@@ -2862,12 +2379,6 @@ structure Cfg where
   stk : ∀ k, List (Γ k)
 #align turing.TM2.cfg Turing.TM2.Cfg
 
-/- warning: turing.TM2.cfg.inhabited -> Turing.TM2.Cfg.inhabited is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] (Γ : K -> Type.{u2}) (Λ : Type.{u3}) (σ : Type.{u4}) [_inst_2 : Inhabited.{succ u4} σ], Inhabited.{max (succ u1) (succ u2) (succ u3) (succ u4)} (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)
-but is expected to have type
-  forall {K : Type.{u1}} (_inst_1 : K -> Type.{u2}) (Γ : Type.{u3}) (Λ : Type.{u4}) [σ : Inhabited.{succ u4} Λ], Inhabited.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ)
-Case conversion may be inaccurate. Consider using '#align turing.TM2.cfg.inhabited Turing.TM2.Cfg.inhabitedₓ'. -/
 instance Cfg.inhabited [Inhabited σ] : Inhabited cfg :=
   ⟨⟨default, default, default⟩⟩
 #align turing.TM2.cfg.inhabited Turing.TM2.Cfg.inhabited
@@ -2904,12 +2415,6 @@ def Reaches (M : Λ → stmt) : cfg → cfg → Prop :=
 #align turing.TM2.reaches Turing.TM2.Reaches
 -/
 
-/- warning: turing.TM2.supports_stmt -> Turing.TM2.SupportsStmt is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} {σ : Type.{u4}}, (Finset.{u3} Λ) -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ) -> Prop
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}} {Γ : Type.{u3}} {Λ : Type.{u4}}, (Finset.{u3} Γ) -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ) -> Prop
-Case conversion may be inaccurate. Consider using '#align turing.TM2.supports_stmt Turing.TM2.SupportsStmtₓ'. -/
 /-- Given a set `S` of states, `support_stmt S q` means that `q` only jumps to states in `S`. -/
 def SupportsStmt (S : Finset Λ) : stmt → Prop
   | push k f q => supports_stmt q
@@ -2923,12 +2428,6 @@ def SupportsStmt (S : Finset Λ) : stmt → Prop
 
 open Classical
 
-/- warning: turing.TM2.stmts₁ -> Turing.TM2.stmts₁ is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} {σ : Type.{u4}}, (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ) -> (Finset.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ))
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}} {Γ : Type.{u3}} {Λ : Type.{u4}}, (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ) -> (Finset.{max (max (max u4 u3) u2) u1} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ))
-Case conversion may be inaccurate. Consider using '#align turing.TM2.stmts₁ Turing.TM2.stmts₁ₓ'. -/
 /-- The set of subtree statements in a statement. -/
 noncomputable def stmts₁ : stmt → Finset stmt
   | Q@(push k f q) => insert Q (stmts₁ q)
@@ -2940,22 +2439,10 @@ noncomputable def stmts₁ : stmt → Finset stmt
   | Q@halt => {Q}
 #align turing.TM2.stmts₁ Turing.TM2.stmts₁
 
-/- warning: turing.TM2.stmts₁_self -> Turing.TM2.stmts₁_self is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} {σ : Type.{u4}} {q : Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ}, Membership.Mem.{max u1 u2 u3 u4, max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ) (Finset.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) (Finset.hasMem.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) q (Turing.TM2.stmts₁.{u1, u2, u3, u4} K _inst_1 Γ Λ σ q)
-but is expected to have type
-  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u2}} {Λ : Type.{u1}} {σ : Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ}, Membership.mem.{max (max (max u4 u3) u2) u1, max (max (max u1 u2) u3) u4} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ) (Finset.{max (max (max u1 u2) u3) u4} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ)) (Finset.instMembershipFinset.{max (max (max u4 u3) u2) u1} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ)) σ (Turing.TM2.stmts₁.{u4, u3, u2, u1} K _inst_1 Γ Λ σ)
-Case conversion may be inaccurate. Consider using '#align turing.TM2.stmts₁_self Turing.TM2.stmts₁_selfₓ'. -/
 theorem stmts₁_self {q} : q ∈ stmts₁ q := by
   cases q <;> apply_rules [Finset.mem_insert_self, Finset.mem_singleton_self]
 #align turing.TM2.stmts₁_self Turing.TM2.stmts₁_self
 
-/- warning: turing.TM2.stmts₁_trans -> Turing.TM2.stmts₁_trans is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} {σ : Type.{u4}} {q₁ : Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ} {q₂ : Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ}, (Membership.Mem.{max u1 u2 u3 u4, max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ) (Finset.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) (Finset.hasMem.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) q₁ (Turing.TM2.stmts₁.{u1, u2, u3, u4} K _inst_1 Γ Λ σ q₂)) -> (HasSubset.Subset.{max u1 u2 u3 u4} (Finset.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) (Finset.hasSubset.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) (Turing.TM2.stmts₁.{u1, u2, u3, u4} K _inst_1 Γ Λ σ q₁) (Turing.TM2.stmts₁.{u1, u2, u3, u4} K _inst_1 Γ Λ σ q₂))
-but is expected to have type
-  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u2}} {Λ : Type.{u1}} {σ : Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ} {q₁ : Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ}, (Membership.mem.{max (max (max u4 u3) u2) u1, max (max (max u1 u2) u3) u4} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ) (Finset.{max (max (max u1 u2) u3) u4} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ)) (Finset.instMembershipFinset.{max (max (max u4 u3) u2) u1} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ)) σ (Turing.TM2.stmts₁.{u4, u3, u2, u1} K _inst_1 Γ Λ q₁)) -> (HasSubset.Subset.{max (max (max u1 u2) u3) u4} (Finset.{max (max (max u1 u2) u3) u4} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ)) (Finset.instHasSubsetFinset.{max (max (max u4 u3) u2) u1} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ)) (Turing.TM2.stmts₁.{u4, u3, u2, u1} K _inst_1 Γ Λ σ) (Turing.TM2.stmts₁.{u4, u3, u2, u1} K _inst_1 Γ Λ q₁))
-Case conversion may be inaccurate. Consider using '#align turing.TM2.stmts₁_trans Turing.TM2.stmts₁_transₓ'. -/
 theorem stmts₁_trans {q₁ q₂} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ ⊆ stmts₁ q₂ :=
   by
   intro h₁₂ q₀ h₀₁
@@ -2974,12 +2461,6 @@ theorem stmts₁_trans {q₁ q₂} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ 
   case halt => subst h₁₂; exact h₀₁
 #align turing.TM2.stmts₁_trans Turing.TM2.stmts₁_trans
 
-/- warning: turing.TM2.stmts₁_supports_stmt_mono -> Turing.TM2.stmts₁_supportsStmt_mono is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} {σ : Type.{u4}} {S : Finset.{u3} Λ} {q₁ : Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ} {q₂ : Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ}, (Membership.Mem.{max u1 u2 u3 u4, max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ) (Finset.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) (Finset.hasMem.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) q₁ (Turing.TM2.stmts₁.{u1, u2, u3, u4} K _inst_1 Γ Λ σ q₂)) -> (Turing.TM2.SupportsStmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ S q₂) -> (Turing.TM2.SupportsStmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ S q₁)
-but is expected to have type
-  forall {K : Type.{u3}} {_inst_1 : K -> Type.{u2}} {Γ : Type.{u4}} {Λ : Type.{u1}} {σ : Finset.{u4} Γ} {S : Turing.TM2.Stmt.{u3, u2, u4, u1} K _inst_1 Γ Λ} {q₁ : Turing.TM2.Stmt.{u3, u2, u4, u1} K _inst_1 Γ Λ}, (Membership.mem.{max (max (max u3 u2) u4) u1, max (max (max u1 u4) u2) u3} (Turing.TM2.Stmt.{u3, u2, u4, u1} K _inst_1 Γ Λ) (Finset.{max (max (max u1 u4) u2) u3} (Turing.TM2.Stmt.{u3, u2, u4, u1} K _inst_1 Γ Λ)) (Finset.instMembershipFinset.{max (max (max u3 u2) u4) u1} (Turing.TM2.Stmt.{u3, u2, u4, u1} K _inst_1 Γ Λ)) S (Turing.TM2.stmts₁.{u3, u2, u4, u1} K _inst_1 Γ Λ q₁)) -> (Turing.TM2.SupportsStmt.{u3, u2, u4, u1} K _inst_1 Γ Λ σ q₁) -> (Turing.TM2.SupportsStmt.{u3, u2, u4, u1} K _inst_1 Γ Λ σ S)
-Case conversion may be inaccurate. Consider using '#align turing.TM2.stmts₁_supports_stmt_mono Turing.TM2.stmts₁_supportsStmt_monoₓ'. -/
 theorem stmts₁_supportsStmt_mono {S q₁ q₂} (h : q₁ ∈ stmts₁ q₂) (hs : supports_stmt S q₂) :
     supports_stmt S q₁ :=
   by
@@ -2992,23 +2473,11 @@ theorem stmts₁_supportsStmt_mono {S q₁ q₂} (h : q₁ ∈ stmts₁ q₂) (h
   case halt => subst h; trivial
 #align turing.TM2.stmts₁_supports_stmt_mono Turing.TM2.stmts₁_supportsStmt_mono
 
-/- warning: turing.TM2.stmts -> Turing.TM2.stmts is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} {σ : Type.{u4}}, (Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) -> (Finset.{u3} Λ) -> (Finset.{max u1 u2 u3 u4} (Option.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)))
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}} {Γ : Type.{u3}} {Λ : Type.{u4}}, (Γ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ)) -> (Finset.{u3} Γ) -> (Finset.{max (max (max u4 u3) u2) u1} (Option.{max (max (max u4 u3) u2) u1} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ)))
-Case conversion may be inaccurate. Consider using '#align turing.TM2.stmts Turing.TM2.stmtsₓ'. -/
 /-- The set of statements accessible from initial set `S` of labels. -/
 noncomputable def stmts (M : Λ → stmt) (S : Finset Λ) : Finset (Option stmt) :=
   (S.biUnion fun q => stmts₁ (M q)).insertNone
 #align turing.TM2.stmts Turing.TM2.stmts
 
-/- warning: turing.TM2.stmts_trans -> Turing.TM2.stmts_trans is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} {σ : Type.{u4}} {M : Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)} {S : Finset.{u3} Λ} {q₁ : Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ} {q₂ : Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ}, (Membership.Mem.{max u1 u2 u3 u4, max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ) (Finset.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) (Finset.hasMem.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) q₁ (Turing.TM2.stmts₁.{u1, u2, u3, u4} K _inst_1 Γ Λ σ q₂)) -> (Membership.Mem.{max u1 u2 u3 u4, max u1 u2 u3 u4} (Option.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) (Finset.{max u1 u2 u3 u4} (Option.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ))) (Finset.hasMem.{max u1 u2 u3 u4} (Option.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ))) (Option.some.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ) q₂) (Turing.TM2.stmts.{u1, u2, u3, u4} K _inst_1 Γ Λ σ M S)) -> (Membership.Mem.{max u1 u2 u3 u4, max u1 u2 u3 u4} (Option.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) (Finset.{max u1 u2 u3 u4} (Option.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ))) (Finset.hasMem.{max u1 u2 u3 u4} (Option.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ))) (Option.some.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ) q₁) (Turing.TM2.stmts.{u1, u2, u3, u4} K _inst_1 Γ Λ σ M S))
-but is expected to have type
-  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u2}} {Λ : Type.{u1}} {σ : Γ -> (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ)} {M : Finset.{u2} Γ} {S : Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ} {q₁ : Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ}, (Membership.mem.{max (max (max u4 u3) u2) u1, max (max (max u1 u2) u3) u4} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ) (Finset.{max (max (max u1 u2) u3) u4} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ)) (Finset.instMembershipFinset.{max (max (max u4 u3) u2) u1} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ)) S (Turing.TM2.stmts₁.{u4, u3, u2, u1} K _inst_1 Γ Λ q₁)) -> (Membership.mem.{max (max (max u4 u3) u2) u1, max (max (max u1 u2) u3) u4} (Option.{max (max (max u4 u3) u2) u1} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ)) (Finset.{max (max (max u1 u2) u3) u4} (Option.{max (max (max u1 u2) u3) u4} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ))) (Finset.instMembershipFinset.{max (max (max u4 u3) u2) u1} (Option.{max (max (max u1 u2) u3) u4} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ))) (Option.some.{max (max (max u4 u3) u2) u1} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ) q₁) (Turing.TM2.stmts.{u4, u3, u2, u1} K _inst_1 Γ Λ σ M)) -> (Membership.mem.{max (max (max u4 u3) u2) u1, max (max (max u1 u2) u3) u4} (Option.{max (max (max u4 u3) u2) u1} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ)) (Finset.{max (max (max u1 u2) u3) u4} (Option.{max (max (max u1 u2) u3) u4} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ))) (Finset.instMembershipFinset.{max (max (max u4 u3) u2) u1} (Option.{max (max (max u1 u2) u3) u4} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ))) (Option.some.{max (max (max u4 u3) u2) u1} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ) S) (Turing.TM2.stmts.{u4, u3, u2, u1} K _inst_1 Γ Λ σ M))
-Case conversion may be inaccurate. Consider using '#align turing.TM2.stmts_trans Turing.TM2.stmts_transₓ'. -/
 theorem stmts_trans {M : Λ → stmt} {S q₁ q₂} (h₁ : q₁ ∈ stmts₁ q₂) :
     some q₂ ∈ stmts M S → some q₁ ∈ stmts M S := by
   simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, forall_eq',
@@ -3018,24 +2487,12 @@ theorem stmts_trans {M : Λ → stmt} {S q₁ q₂} (h₁ : q₁ ∈ stmts₁ q
 
 variable [Inhabited Λ]
 
-/- warning: turing.TM2.supports -> Turing.TM2.Supports is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} {σ : Type.{u4}} [_inst_2 : Inhabited.{succ u3} Λ], (Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) -> (Finset.{u3} Λ) -> Prop
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}} {Γ : Type.{u3}} {Λ : Type.{u4}} [σ : Inhabited.{succ u3} Γ], (Γ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ)) -> (Finset.{u3} Γ) -> Prop
-Case conversion may be inaccurate. Consider using '#align turing.TM2.supports Turing.TM2.Supportsₓ'. -/
 /-- Given a TM2 machine `M` and a set `S` of states, `supports M S` means that all states in
 `S` jump only to other states in `S`. -/
 def Supports (M : Λ → stmt) (S : Finset Λ) :=
   default ∈ S ∧ ∀ q ∈ S, supports_stmt S (M q)
 #align turing.TM2.supports Turing.TM2.Supports
 
-/- warning: turing.TM2.stmts_supports_stmt -> Turing.TM2.stmts_supportsStmt is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} {σ : Type.{u4}} [_inst_2 : Inhabited.{succ u3} Λ] {M : Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)} {S : Finset.{u3} Λ} {q : Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ}, (Turing.TM2.Supports.{u1, u2, u3, u4} K _inst_1 Γ Λ σ _inst_2 M S) -> (Membership.Mem.{max u1 u2 u3 u4, max u1 u2 u3 u4} (Option.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) (Finset.{max u1 u2 u3 u4} (Option.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ))) (Finset.hasMem.{max u1 u2 u3 u4} (Option.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ))) (Option.some.{max u1 u2 u3 u4} (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ) q) (Turing.TM2.stmts.{u1, u2, u3, u4} K _inst_1 Γ Λ σ M S)) -> (Turing.TM2.SupportsStmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ S q)
-but is expected to have type
-  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u2}} {Λ : Type.{u1}} [σ : Inhabited.{succ u2} Γ] {_inst_2 : Γ -> (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ)} {M : Finset.{u2} Γ} {S : Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ}, (Turing.TM2.Supports.{u4, u3, u2, u1} K _inst_1 Γ Λ σ _inst_2 M) -> (Membership.mem.{max (max (max u4 u3) u2) u1, max (max (max u1 u2) u3) u4} (Option.{max (max (max u4 u3) u2) u1} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ)) (Finset.{max (max (max u1 u2) u3) u4} (Option.{max (max (max u1 u2) u3) u4} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ))) (Finset.instMembershipFinset.{max (max (max u4 u3) u2) u1} (Option.{max (max (max u1 u2) u3) u4} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ))) (Option.some.{max (max (max u4 u3) u2) u1} (Turing.TM2.Stmt.{u4, u3, u2, u1} K _inst_1 Γ Λ) S) (Turing.TM2.stmts.{u4, u3, u2, u1} K _inst_1 Γ Λ _inst_2 M)) -> (Turing.TM2.SupportsStmt.{u4, u3, u2, u1} K _inst_1 Γ Λ M S)
-Case conversion may be inaccurate. Consider using '#align turing.TM2.stmts_supports_stmt Turing.TM2.stmts_supportsStmtₓ'. -/
 theorem stmts_supportsStmt {M : Λ → stmt} {S q} (ss : supports M S) :
     some q ∈ stmts M S → supports_stmt S q := by
   simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, forall_eq',
@@ -3043,9 +2500,6 @@ theorem stmts_supportsStmt {M : Λ → stmt} {S q} (ss : supports M S) :
     exact fun l ls h => stmts₁_supports_stmt_mono h (ss.2 _ ls)
 #align turing.TM2.stmts_supports_stmt Turing.TM2.stmts_supportsStmt
 
-/- warning: turing.TM2.step_supports -> Turing.TM2.step_supports is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align turing.TM2.step_supports Turing.TM2.step_supportsₓ'. -/
 theorem step_supports (M : Λ → stmt) {S} (ss : supports M S) :
     ∀ {c c' : cfg}, c' ∈ step M c → c.l ∈ S.insertNone → c'.l ∈ S.insertNone
   | ⟨some l₁, v, T⟩, c', h₁, h₂ =>
@@ -3123,12 +2577,6 @@ steps to run when emulated in TM1, where `m` is the length of the input.
 
 namespace TM2to1
 
-/- warning: turing.TM2to1.stk_nth_val -> Turing.TM2to1.stk_nth_val is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} {Γ : K -> Type.{u2}} {L : Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)))} {k : K} {S : List.{u2} (Γ k)} (n : Nat), (Eq.{succ u2} (Turing.ListBlank.{u2} (Option.{u2} (Γ k)) (Option.inhabited.{u2} (Γ k))) (Turing.ListBlank.map.{max u1 u2, u2} (forall (i : K), Option.{u2} (Γ i)) (Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (i : K) => Option.{u2} (Γ i)) (fun (x : K) => Option.inhabited.{u2} (Γ x))) (Option.inhabited.{u2} (Γ k)) (Turing.proj.{u1, u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)) k) L) (Turing.ListBlank.mk.{u2} (Option.{u2} (Γ k)) (Option.inhabited.{u2} (Γ k)) (List.reverse.{u2} (Option.{u2} (Γ k)) (List.map.{u2, u2} (Γ k) (Option.{u2} (Γ k)) (Option.some.{u2} (Γ k)) S)))) -> (Eq.{succ u2} (Option.{u2} (Γ k)) (Turing.ListBlank.nth.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x))) L n k) (List.get?.{u2} (Γ k) (List.reverse.{u2} (Γ k) S) n))
-but is expected to have type
-  forall {K : Type.{u2}} {Γ : K -> Type.{u1}} {L : Turing.ListBlank.{max u2 u1} (forall (k : K), Option.{u1} (Γ k)) (instInhabitedForAll_1.{succ u2, succ u1} K (fun (k : K) => Option.{u1} (Γ k)) (fun (x : K) => instInhabitedOption.{u1} (Γ x)))} {k : K} {S : List.{u1} (Γ k)} (n : Nat), (Eq.{succ u1} (Turing.ListBlank.{u1} (Option.{u1} (Γ k)) (instInhabitedOption.{u1} (Γ k))) (Turing.ListBlank.map.{max u1 u2, u1} (forall (i : K), Option.{u1} (Γ i)) (Option.{u1} (Γ k)) (instInhabitedForAll_1.{succ u2, succ u1} K (fun (i : K) => Option.{u1} (Γ i)) (fun (x : K) => instInhabitedOption.{u1} (Γ x))) (instInhabitedOption.{u1} (Γ k)) (Turing.proj.{u2, u1} K (fun (k : K) => Option.{u1} (Γ k)) (fun (x : K) => instInhabitedOption.{u1} (Γ x)) k) L) (Turing.ListBlank.mk.{u1} (Option.{u1} (Γ k)) (instInhabitedOption.{u1} (Γ k)) (List.reverse.{u1} (Option.{u1} (Γ k)) (List.map.{u1, u1} (Γ k) (Option.{u1} (Γ k)) (Option.some.{u1} (Γ k)) S)))) -> (Eq.{succ u1} (Option.{u1} (Γ k)) (Turing.ListBlank.nth.{max u2 u1} (forall (k : K), Option.{u1} (Γ k)) (instInhabitedForAll_1.{succ u2, succ u1} K (fun (k : K) => Option.{u1} (Γ k)) (fun (x : K) => instInhabitedOption.{u1} (Γ x))) L n k) (List.get?.{u1} (Γ k) (List.reverse.{u1} (Γ k) S) n))
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.stk_nth_val Turing.TM2to1.stk_nth_valₓ'. -/
 -- A displaced lemma proved in unnecessary generality
 theorem stk_nth_val {K : Type _} {Γ : K → Type _} {L : ListBlank (∀ k, Option (Γ k))} {k S} (n)
     (hL : ListBlank.map (proj k) L = ListBlank.mk (List.map some S).reverse) :
@@ -3155,12 +2603,6 @@ local notation "stmt₂" => TM2.Stmt Γ Λ σ
 -- mathport name: exprcfg₂
 local notation "cfg₂" => TM2.Cfg Γ Λ σ
 
-/- warning: turing.TM2to1.Γ' -> Turing.TM2to1.Γ' is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}}, Type.{max u1 u2}
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}}, Type.{max u1 u2}
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.Γ' Turing.TM2to1.Γ'ₓ'. -/
 -- [decidable_eq K]: Because K is a parameter, we cannot easily skip
 -- the decidable_eq assumption, and this is a local definition anyway so it's not important.
 /-- The alphabet of the TM2 simulator on TM1 is a marker for the stack bottom,
@@ -3170,12 +2612,6 @@ def Γ' :=
   Bool × ∀ k, Option (Γ k)
 #align turing.TM2to1.Γ' Turing.TM2to1.Γ'
 
-/- warning: turing.TM2to1.Γ'.inhabited -> Turing.TM2to1.Γ'.inhabited is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}}, Inhabited.{succ (max u1 u2)} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ)
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}}, Inhabited.{max (succ u2) (succ u1)} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1)
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.Γ'.inhabited Turing.TM2to1.Γ'.inhabitedₓ'. -/
 instance Γ'.inhabited : Inhabited Γ' :=
   ⟨⟨false, fun _ => none⟩⟩
 #align turing.TM2to1.Γ'.inhabited Turing.TM2to1.Γ'.inhabited
@@ -3186,24 +2622,12 @@ instance Γ'.fintype [Fintype K] [∀ k, Fintype (Γ k)] : Fintype Γ' :=
 #align turing.TM2to1.Γ'.fintype Turing.TM2to1.Γ'.fintype
 -/
 
-/- warning: turing.TM2to1.add_bottom -> Turing.TM2to1.addBottom is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}}, (Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)))) -> (Turing.ListBlank.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ))
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}}, (Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (_inst_1 k)) (instInhabitedForAll_1.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (_inst_1 k)) (fun (a : K) => instInhabitedOption.{u2} (_inst_1 a)))) -> (Turing.ListBlank.{max u2 u1} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1))
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.add_bottom Turing.TM2to1.addBottomₓ'. -/
 /-- The bottom marker is fixed throughout the calculation, so we use the `add_bottom` function
 to express the program state in terms of a tape with only the stacks themselves. -/
 def addBottom (L : ListBlank (∀ k, Option (Γ k))) : ListBlank Γ' :=
   ListBlank.cons (true, L.headI) (L.tail.map ⟨Prod.mk false, rfl⟩)
 #align turing.TM2to1.add_bottom Turing.TM2to1.addBottom
 
-/- warning: turing.TM2to1.add_bottom_map -> Turing.TM2to1.addBottom_map is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} (L : Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)))), Eq.{succ (max u1 u2)} (Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)))) (Turing.ListBlank.map.{max u1 u2, max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (forall (k : K), Option.{u2} (Γ k)) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x))) (Turing.PointedMap.mk.{max u1 u2, max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (forall (k : K), Option.{u2} (Γ k)) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x))) (Prod.snd.{0, max u1 u2} Bool (forall (k : K), Option.{u2} (Γ k))) (rfl.{succ (max u1 u2)} (forall (k : K), Option.{u2} (Γ k)) (Prod.snd.{0, max u1 u2} Bool (forall (k : K), Option.{u2} (Γ k)) (Inhabited.default.{succ (max u1 u2)} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ))))) (Turing.TM2to1.addBottom.{u1, u2} K _inst_1 Γ L)) L
-but is expected to have type
-  forall {K : Type.{u2}} {_inst_1 : K -> Type.{u1}} (Γ : Turing.ListBlank.{max u2 u1} (forall (k : K), Option.{u1} (_inst_1 k)) (instInhabitedForAll_1.{succ u2, succ u1} K (fun (k : K) => Option.{u1} (_inst_1 k)) (fun (a : K) => instInhabitedOption.{u1} (_inst_1 a)))), Eq.{max (succ u2) (succ u1)} (Turing.ListBlank.{max u2 u1} (forall (k : K), Option.{u1} ((fun (k : K) => _inst_1 k) k)) (instInhabitedForAll_1.{succ u2, succ u1} K (fun (k : K) => Option.{u1} ((fun (k : K) => _inst_1 k) k)) (fun (a : K) => instInhabitedOption.{u1} ((fun (k : K) => _inst_1 k) a)))) (Turing.ListBlank.map.{max u2 u1, max u2 u1} (Prod.{0, max u2 u1} Bool (forall (k : K), Option.{u1} ((fun (k : K) => _inst_1 k) k))) (forall (k : K), Option.{u1} ((fun (k : K) => _inst_1 k) k)) (Turing.TM2to1.Γ'.inhabited.{u2, u1} K (fun (k : K) => _inst_1 k)) (instInhabitedForAll_1.{succ u2, succ u1} K (fun (k : K) => Option.{u1} ((fun (k : K) => _inst_1 k) k)) (fun (a : K) => instInhabitedOption.{u1} ((fun (k : K) => _inst_1 k) a))) (Turing.PointedMap.mk.{max u2 u1, max u2 u1} (Prod.{0, max u2 u1} Bool (forall (k : K), Option.{u1} ((fun (k : K) => _inst_1 k) k))) (forall (k : K), Option.{u1} ((fun (k : K) => _inst_1 k) k)) (Turing.TM2to1.Γ'.inhabited.{u2, u1} K (fun (k : K) => _inst_1 k)) (instInhabitedForAll_1.{succ u2, succ u1} K (fun (k : K) => Option.{u1} ((fun (k : K) => _inst_1 k) k)) (fun (a : K) => instInhabitedOption.{u1} ((fun (k : K) => _inst_1 k) a))) (Prod.snd.{0, max u2 u1} Bool (forall (k : K), Option.{u1} ((fun (k : K) => _inst_1 k) k))) (Eq.refl.{succ (max u2 u1)} (forall (k : K), Option.{u1} ((fun (k : K) => _inst_1 k) k)) (Prod.snd.{0, max u2 u1} Bool (forall (k : K), Option.{u1} ((fun (k : K) => _inst_1 k) k)) (Inhabited.default.{succ (max u2 u1)} (Prod.{0, max u2 u1} Bool (forall (k : K), Option.{u1} ((fun (k : K) => _inst_1 k) k))) (Turing.TM2to1.Γ'.inhabited.{u2, u1} K (fun (k : K) => _inst_1 k)))))) (Turing.TM2to1.addBottom.{u2, u1} K (fun (k : K) => _inst_1 k) Γ)) Γ
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.add_bottom_map Turing.TM2to1.addBottom_mapₓ'. -/
 theorem addBottom_map (L) : (add_bottom L).map ⟨Prod.snd, rfl⟩ = L :=
   by
   simp only [add_bottom, list_blank.map_cons] <;> convert list_blank.cons_head_tail _
@@ -3211,12 +2635,6 @@ theorem addBottom_map (L) : (add_bottom L).map ⟨Prod.snd, rfl⟩ = L :=
   refine' L'.induction_on fun l => _; simp
 #align turing.TM2to1.add_bottom_map Turing.TM2to1.addBottom_map
 
-/- warning: turing.TM2to1.add_bottom_modify_nth -> Turing.TM2to1.addBottom_modifyNth is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} (f : (forall (k : K), Option.{u2} (Γ k)) -> (forall (k : K), Option.{u2} (Γ k))) (L : Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)))) (n : Nat), Eq.{succ (max u1 u2)} (Turing.ListBlank.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ)) (Turing.ListBlank.modifyNth.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (fun (a : Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) => Prod.mk.{0, max u1 u2} Bool (forall (k : K), Option.{u2} (Γ k)) (Prod.fst.{0, max u1 u2} Bool (forall (k : K), Option.{u2} (Γ k)) a) (f (Prod.snd.{0, max u1 u2} Bool (forall (k : K), Option.{u2} (Γ k)) a))) n (Turing.TM2to1.addBottom.{u1, u2} K _inst_1 Γ L)) (Turing.TM2to1.addBottom.{u1, u2} K _inst_1 Γ (Turing.ListBlank.modifyNth.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x))) f n L))
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}} (Γ : (forall (k : K), Option.{u2} (_inst_1 k)) -> (forall (k : K), Option.{u2} (_inst_1 k))) (f : Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (_inst_1 k)) (instInhabitedForAll_1.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (_inst_1 k)) (fun (a : K) => instInhabitedOption.{u2} (_inst_1 a)))) (L : Nat), Eq.{max (succ u1) (succ u2)} (Turing.ListBlank.{max u1 u2} (Prod.{0, max u1 u2} Bool (forall (k : K), Option.{u2} (_inst_1 k))) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K (fun (k : K) => _inst_1 k))) (Turing.ListBlank.modifyNth.{max u1 u2} (Prod.{0, max u1 u2} Bool (forall (k : K), Option.{u2} (_inst_1 k))) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K (fun (k : K) => _inst_1 k)) (fun (a : Prod.{0, max u1 u2} Bool (forall (k : K), Option.{u2} (_inst_1 k))) => Prod.mk.{0, max u1 u2} Bool (forall (k : K), Option.{u2} (_inst_1 k)) (Prod.fst.{0, max u1 u2} Bool (forall (k : K), Option.{u2} (_inst_1 k)) a) (Γ (Prod.snd.{0, max u1 u2} Bool (forall (k : K), Option.{u2} (_inst_1 k)) a))) L (Turing.TM2to1.addBottom.{u1, u2} K (fun (k : K) => _inst_1 k) f)) (Turing.TM2to1.addBottom.{u1, u2} K (fun (k : K) => _inst_1 k) (Turing.ListBlank.modifyNth.{max u2 u1} (forall (k : K), Option.{u2} (_inst_1 k)) (instInhabitedForAll_1.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (_inst_1 k)) (fun (a : K) => instInhabitedOption.{u2} (_inst_1 a))) Γ L f))
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.add_bottom_modify_nth Turing.TM2to1.addBottom_modifyNthₓ'. -/
 theorem addBottom_modifyNth (f : (∀ k, Option (Γ k)) → ∀ k, Option (Γ k)) (L n) :
     (add_bottom L).modifyNth (fun a => (a.1, f a.2)) n = add_bottom (L.modifyNth f n) :=
   by
@@ -3225,12 +2643,6 @@ theorem addBottom_modifyNth (f : (∀ k, Option (Γ k)) → ∀ k, Option (Γ k)
   congr ; symm; apply list_blank.map_modify_nth; intro ; rfl
 #align turing.TM2to1.add_bottom_modify_nth Turing.TM2to1.addBottom_modifyNth
 
-/- warning: turing.TM2to1.add_bottom_nth_snd -> Turing.TM2to1.addBottom_nth_snd is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} (L : Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)))) (n : Nat), Eq.{max (succ u1) (succ u2)} (forall (k : K), Option.{u2} (Γ k)) (Prod.snd.{0, max u1 u2} Bool (forall (k : K), Option.{u2} (Γ k)) (Turing.ListBlank.nth.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.addBottom.{u1, u2} K _inst_1 Γ L) n)) (Turing.ListBlank.nth.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x))) L n)
-but is expected to have type
-  forall {K : Type.{u2}} {_inst_1 : K -> Type.{u1}} (Γ : Turing.ListBlank.{max u2 u1} (forall (k : K), Option.{u1} (_inst_1 k)) (instInhabitedForAll_1.{succ u2, succ u1} K (fun (k : K) => Option.{u1} (_inst_1 k)) (fun (a : K) => instInhabitedOption.{u1} (_inst_1 a)))) (L : Nat), Eq.{max (succ u2) (succ u1)} (forall (k : K), Option.{u1} ((fun (k : K) => _inst_1 k) k)) (Prod.snd.{0, max u2 u1} Bool (forall (k : K), Option.{u1} ((fun (k : K) => _inst_1 k) k)) (Turing.ListBlank.nth.{max u2 u1} (Turing.TM2to1.Γ'.{u2, u1} K (fun (k : K) => _inst_1 k)) (Turing.TM2to1.Γ'.inhabited.{u2, u1} K (fun (k : K) => _inst_1 k)) (Turing.TM2to1.addBottom.{u2, u1} K (fun (k : K) => _inst_1 k) Γ) L)) (Turing.ListBlank.nth.{max u2 u1} (forall (k : K), Option.{u1} (_inst_1 k)) (instInhabitedForAll_1.{succ u2, succ u1} K (fun (k : K) => Option.{u1} (_inst_1 k)) (fun (a : K) => instInhabitedOption.{u1} (_inst_1 a))) Γ L)
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.add_bottom_nth_snd Turing.TM2to1.addBottom_nth_sndₓ'. -/
 theorem addBottom_nth_snd (L n) : ((add_bottom L).get? n).2 = L.get? n := by
   conv =>
       rhs
@@ -3238,32 +2650,14 @@ theorem addBottom_nth_snd (L n) : ((add_bottom L).get? n).2 = L.get? n := by
     rfl
 #align turing.TM2to1.add_bottom_nth_snd Turing.TM2to1.addBottom_nth_snd
 
-/- warning: turing.TM2to1.add_bottom_nth_succ_fst -> Turing.TM2to1.addBottom_nth_succ_fst is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} (L : Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)))) (n : Nat), Eq.{1} Bool (Prod.fst.{0, max u1 u2} Bool (forall (k : K), Option.{u2} (Γ k)) (Turing.ListBlank.nth.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.addBottom.{u1, u2} K _inst_1 Γ L) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) Bool.false
-but is expected to have type
-  forall {K : Type.{u2}} {_inst_1 : K -> Type.{u1}} (Γ : Turing.ListBlank.{max u2 u1} (forall (k : K), Option.{u1} (_inst_1 k)) (instInhabitedForAll_1.{succ u2, succ u1} K (fun (k : K) => Option.{u1} (_inst_1 k)) (fun (a : K) => instInhabitedOption.{u1} (_inst_1 a)))) (L : Nat), Eq.{1} Bool (Prod.fst.{0, max u2 u1} Bool (forall (k : K), Option.{u1} ((fun (k : K) => _inst_1 k) k)) (Turing.ListBlank.nth.{max u2 u1} (Turing.TM2to1.Γ'.{u2, u1} K (fun (k : K) => _inst_1 k)) (Turing.TM2to1.Γ'.inhabited.{u2, u1} K (fun (k : K) => _inst_1 k)) (Turing.TM2to1.addBottom.{u2, u1} K (fun (k : K) => _inst_1 k) Γ) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) L (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) Bool.false
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.add_bottom_nth_succ_fst Turing.TM2to1.addBottom_nth_succ_fstₓ'. -/
 theorem addBottom_nth_succ_fst (L n) : ((add_bottom L).get? (n + 1)).1 = false := by
   rw [list_blank.nth_succ, add_bottom, list_blank.tail_cons, list_blank.nth_map] <;> rfl
 #align turing.TM2to1.add_bottom_nth_succ_fst Turing.TM2to1.addBottom_nth_succ_fst
 
-/- warning: turing.TM2to1.add_bottom_head_fst -> Turing.TM2to1.addBottom_head_fst is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} (L : Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)))), Eq.{1} Bool (Prod.fst.{0, max u1 u2} Bool (forall (k : K), Option.{u2} (Γ k)) (Turing.ListBlank.head.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.addBottom.{u1, u2} K _inst_1 Γ L))) Bool.true
-but is expected to have type
-  forall {K : Type.{u2}} {_inst_1 : K -> Type.{u1}} (Γ : Turing.ListBlank.{max u2 u1} (forall (k : K), Option.{u1} (_inst_1 k)) (instInhabitedForAll_1.{succ u2, succ u1} K (fun (k : K) => Option.{u1} (_inst_1 k)) (fun (a : K) => instInhabitedOption.{u1} (_inst_1 a)))), Eq.{1} Bool (Prod.fst.{0, max u2 u1} Bool (forall (k : K), Option.{u1} ((fun (k : K) => _inst_1 k) k)) (Turing.ListBlank.head.{max u2 u1} (Turing.TM2to1.Γ'.{u2, u1} K (fun (k : K) => _inst_1 k)) (Turing.TM2to1.Γ'.inhabited.{u2, u1} K (fun (k : K) => _inst_1 k)) (Turing.TM2to1.addBottom.{u2, u1} K (fun (k : K) => _inst_1 k) Γ))) Bool.true
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.add_bottom_head_fst Turing.TM2to1.addBottom_head_fstₓ'. -/
 theorem addBottom_head_fst (L) : (add_bottom L).headI.1 = true := by
   rw [add_bottom, list_blank.head_cons] <;> rfl
 #align turing.TM2to1.add_bottom_head_fst Turing.TM2to1.addBottom_head_fst
 
-/- warning: turing.TM2to1.st_act -> Turing.TM2to1.StAct is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ], K -> Sort.{max (succ u2) (succ u3)}
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}} {Γ : Type.{u3}}, K -> Sort.{max (succ u2) (succ u3)}
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.st_act Turing.TM2to1.StActₓ'. -/
 /-- A stack action is a command that interacts with the top of a stack. Our default position
 is at the bottom of all the stacks, so we have to hold on to this action while going to the end
 to modify the stack. -/
@@ -3273,12 +2667,6 @@ inductive StAct (k : K)
   | pop : (σ → Option (Γ k) → σ) → st_act
 #align turing.TM2to1.st_act Turing.TM2to1.StAct
 
-/- warning: turing.TM2to1.st_act.inhabited -> Turing.TM2to1.StAct.inhabited is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] {k : K}, Inhabited.{max (succ u2) (succ u3)} (Turing.TM2to1.StAct.{u1, u2, u3} K _inst_1 Γ σ _inst_3 k)
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}} {Γ : Type.{u3}} {σ : K}, Inhabited.{max (succ u2) (succ u3)} (Turing.TM2to1.StAct.{u1, u2, u3} K _inst_1 Γ σ)
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.st_act.inhabited Turing.TM2to1.StAct.inhabitedₓ'. -/
 instance StAct.inhabited {k} : Inhabited (st_act k) :=
   ⟨st_act.peek fun s _ => s⟩
 #align turing.TM2to1.st_act.inhabited Turing.TM2to1.StAct.inhabited
@@ -3287,12 +2675,6 @@ section
 
 open StAct
 
-/- warning: turing.TM2to1.st_run -> Turing.TM2to1.stRun is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] {k : K}, (Turing.TM2to1.StAct.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k) -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ) -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ)
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}} {Γ : Type.{u3}} {Λ : Type.{u4}} {_inst_2 : K}, (Turing.TM2to1.StAct.{u1, u2, u4} K _inst_1 Λ _inst_2) -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ) -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ)
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.st_run Turing.TM2to1.stRunₓ'. -/
 -- [inhabited Λ]: as this is a local definition it is more trouble than
 -- it is worth to omit the typeclass assumption without breaking the parameters
 /-- The TM2 statement corresponding to a stack action. -/
@@ -3303,12 +2685,6 @@ def stRun {k : K} : st_act k → stmt₂ → stmt₂
   | pop f => TM2.Stmt.pop k f
 #align turing.TM2to1.st_run Turing.TM2to1.stRun
 
-/- warning: turing.TM2to1.st_var -> Turing.TM2to1.stVar is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] {k : K}, σ -> (List.{u2} (Γ k)) -> (Turing.TM2to1.StAct.{u1, u2, u3} K _inst_1 Γ σ _inst_3 k) -> σ
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}} {Γ : Type.{u3}} {σ : K}, Γ -> (List.{u2} (_inst_1 σ)) -> (Turing.TM2to1.StAct.{u1, u2, u3} K _inst_1 Γ σ) -> Γ
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.st_var Turing.TM2to1.stVarₓ'. -/
 /-- The effect of a stack action on the local variables, given the value of the stack. -/
 def stVar {k : K} (v : σ) (l : List (Γ k)) : st_act k → σ
   | push f => v
@@ -3316,12 +2692,6 @@ def stVar {k : K} (v : σ) (l : List (Γ k)) : st_act k → σ
   | pop f => f v l.head?
 #align turing.TM2to1.st_var Turing.TM2to1.stVar
 
-/- warning: turing.TM2to1.st_write -> Turing.TM2to1.stWrite is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {σ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} σ] {k : K}, σ -> (List.{u2} (Γ k)) -> (Turing.TM2to1.StAct.{u1, u2, u3} K _inst_1 Γ σ _inst_3 k) -> (List.{u2} (Γ k))
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}} {Γ : Type.{u3}} {σ : K}, Γ -> (List.{u2} (_inst_1 σ)) -> (Turing.TM2to1.StAct.{u1, u2, u3} K _inst_1 Γ σ) -> (List.{u2} (_inst_1 σ))
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.st_write Turing.TM2to1.stWriteₓ'. -/
 /-- The effect of a stack action on the stack. -/
 def stWrite {k : K} (v : σ) (l : List (Γ k)) : st_act k → List (Γ k)
   | push f => f v :: l
@@ -3329,12 +2699,6 @@ def stWrite {k : K} (v : σ) (l : List (Γ k)) : st_act k → List (Γ k)
   | pop f => l.tail
 #align turing.TM2to1.st_write Turing.TM2to1.stWrite
 
-/- warning: turing.TM2to1.stmt_st_rec -> Turing.TM2to1.stmtStRec is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] {C : (Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ) -> Sort.{u5}}, (forall (k : K) (s : Turing.TM2to1.StAct.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k) (q : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ), (C q) -> (C (Turing.TM2to1.stRun.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q))) -> (forall (a : σ -> σ) (q : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ), (C q) -> (C (Turing.TM2.Stmt.load.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ a q))) -> (forall (p : σ -> Bool) (q₁ : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ) (q₂ : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ), (C q₁) -> (C q₂) -> (C (Turing.TM2.Stmt.branch.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ p q₁ q₂))) -> (forall (l : σ -> Λ), C (Turing.TM2.Stmt.goto.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ l)) -> (C (Turing.TM2.Stmt.halt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ)) -> (forall (n : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ), C n)
-but is expected to have type
-  forall {K : Type.{u2}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u4}} {Λ : Type.{u5}} {_inst_2 : (Turing.TM2.Stmt.{u2, u3, u4, u5} K _inst_1 Γ Λ) -> Sort.{u1}}, (forall (k : K) (s : Turing.TM2to1.StAct.{u2, u3, u5} K _inst_1 Λ k) (q : Turing.TM2.Stmt.{u2, u3, u4, u5} K _inst_1 Γ Λ), (_inst_2 q) -> (_inst_2 (Turing.TM2to1.stRun.{u2, u3, u4, u5} K _inst_1 Γ Λ k s q))) -> (forall (a : Λ -> Λ) (q : Turing.TM2.Stmt.{u2, u3, u4, u5} K _inst_1 Γ Λ), (_inst_2 q) -> (_inst_2 (Turing.TM2.Stmt.load.{u2, u3, u4, u5} K _inst_1 Γ Λ a q))) -> (forall (ᾰ : Λ -> Bool) (q₁ : Turing.TM2.Stmt.{u2, u3, u4, u5} K _inst_1 Γ Λ) (q₂ : Turing.TM2.Stmt.{u2, u3, u4, u5} K _inst_1 Γ Λ), (_inst_2 q₁) -> (_inst_2 q₂) -> (_inst_2 (Turing.TM2.Stmt.branch.{u2, u3, u4, u5} K _inst_1 Γ Λ ᾰ q₁ q₂))) -> (forall (k : Λ -> Γ), _inst_2 (Turing.TM2.Stmt.goto.{u2, u3, u4, u5} K _inst_1 Γ Λ k)) -> (_inst_2 (Turing.TM2.Stmt.halt.{u2, u3, u4, u5} K _inst_1 Γ Λ)) -> (forall (H₃ : Turing.TM2.Stmt.{u2, u3, u4, u5} K _inst_1 Γ Λ), _inst_2 H₃)
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.stmt_st_rec Turing.TM2to1.stmtStRecₓ'. -/
 /-- We have partitioned the TM2 statements into "stack actions", which require going to the end
 of the stack, and all other actions, which do not. This is a modified recursor which lumps the
 stack actions into one. -/
@@ -3352,24 +2716,12 @@ def stmtStRec.{l} {C : stmt₂ → Sort l} (H₁ : ∀ (k) (s : st_act k) (q) (I
   | TM2.stmt.halt => H₅
 #align turing.TM2to1.stmt_st_rec Turing.TM2to1.stmtStRec
 
-/- warning: turing.TM2to1.supports_run -> Turing.TM2to1.supports_run is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] (S : Finset.{u3} Λ) {k : K} (s : Turing.TM2to1.StAct.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k) (q : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ), Iff (Turing.TM2.SupportsStmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ S (Turing.TM2to1.stRun.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q)) (Turing.TM2.SupportsStmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ S q)
-but is expected to have type
-  forall {K : Type.{u3}} {_inst_1 : K -> Type.{u2}} {Γ : Type.{u4}} {Λ : Type.{u1}} (_inst_2 : Finset.{u4} Γ) {σ : K} (_inst_3 : Turing.TM2to1.StAct.{u3, u2, u1} K _inst_1 Λ σ) (S : Turing.TM2.Stmt.{u3, u2, u4, u1} K _inst_1 Γ Λ), Iff (Turing.TM2.SupportsStmt.{u3, u2, u4, u1} K _inst_1 Γ Λ _inst_2 (Turing.TM2to1.stRun.{u3, u2, u4, u1} K _inst_1 Γ Λ σ _inst_3 S)) (Turing.TM2.SupportsStmt.{u3, u2, u4, u1} K _inst_1 Γ Λ _inst_2 S)
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.supports_run Turing.TM2to1.supports_runₓ'. -/
 theorem supports_run (S : Finset Λ) {k} (s : st_act k) (q) :
     TM2.SupportsStmt S (st_run s q) ↔ TM2.SupportsStmt S q := by rcases s with (_ | _ | _) <;> rfl
 #align turing.TM2to1.supports_run Turing.TM2to1.supports_run
 
 end
 
-/- warning: turing.TM2to1.Λ' -> Turing.TM2to1.Λ' is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ], Type.{max u1 u2 u3 u4}
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}} {Γ : Type.{u3}} {Λ : Type.{u4}}, Sort.{max (max (max (succ u1) (succ u2)) (succ u3)) (succ u4)}
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.Λ' Turing.TM2to1.Λ'ₓ'. -/
 /-- The machine states of the TM2 emulator. We can either be in a normal state when waiting for the
 next TM2 action, or we can be in the "go" and "return" states to go to the top of the stack and
 return to the bottom, respectively. -/
@@ -3381,12 +2733,6 @@ inductive Λ' : Type max u_1 u_2 u_3 u_4
 
 open Λ'
 
-/- warning: turing.TM2to1.Λ'.inhabited -> Turing.TM2to1.Λ'.inhabited is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ], Inhabited.{succ (max u1 u2 u3 u4)} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3)
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}} {Γ : Type.{u3}} [Λ : Inhabited.{succ u3} Γ] {_inst_2 : Type.{u4}}, Inhabited.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ _inst_2)
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.Λ'.inhabited Turing.TM2to1.Λ'.inhabitedₓ'. -/
 instance Λ'.inhabited : Inhabited Λ' :=
   ⟨normal default⟩
 #align turing.TM2to1.Λ'.inhabited Turing.TM2to1.Λ'.inhabited
@@ -3399,12 +2745,6 @@ local notation "cfg₁" => TM1.Cfg Γ' Λ' σ
 
 open TM1.Stmt
 
-/- warning: turing.TM2to1.tr_st_act -> Turing.TM2to1.trStAct is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] {k : K}, (Turing.TM1.Stmt.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) -> (Turing.TM2to1.StAct.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k) -> (Turing.TM1.Stmt.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ)
-but is expected to have type
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} {_inst_2 : Type.{u4}} {σ : K}, (Turing.TM1.Stmt.{max u2 u1, max (max (max u4 u3) u2) u1, u4} (Turing.TM2to1.Γ'.{u1, u2} K Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K Γ Λ _inst_2) _inst_2) -> (Turing.TM2to1.StAct.{u1, u2, u4} K Γ _inst_2 σ) -> (Turing.TM1.Stmt.{max u2 u1, max (max (max u4 u3) u2) u1, u4} (Turing.TM2to1.Γ'.{u1, u2} K Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K Γ Λ _inst_2) _inst_2)
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_st_act Turing.TM2to1.trStActₓ'. -/
 /-- The program corresponding to state transitions at the end of a stack. Here we start out just
 after the top of the stack, and should end just after the new top of the stack. -/
 def trStAct {k} (q : stmt₁) : st_act k → stmt₁
@@ -3425,12 +2765,6 @@ def trInit (k) (L : List (Γ k)) : List Γ' :=
 #align turing.TM2to1.tr_init Turing.TM2to1.trInit
 -/
 
-/- warning: turing.TM2to1.step_run -> Turing.TM2to1.step_run is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] {k : K} (q : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ) (v : σ) (S : forall (k : K), List.{u2} (Γ k)) (s : Turing.TM2to1.StAct.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k), Eq.{max (succ u1) (succ u2) (succ u3) (succ u4)} (Turing.TM2.Cfg.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ) (Turing.TM2.stepAux.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ (Turing.TM2to1.stRun.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q) v S) (Turing.TM2.stepAux.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ q (Turing.TM2to1.stVar.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k v (S k) s) (Function.update.{succ u1, succ u2} K (fun (k : K) => List.{u2} (Γ k)) (fun (a : K) (b : K) => _inst_1 a b) S k (Turing.TM2to1.stWrite.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k v (S k) s)))
-but is expected to have type
-  forall {K : Type.{u4}} [_inst_1 : DecidableEq.{succ u4} K] {Γ : K -> Type.{u3}} {Λ : Type.{u2}} {_inst_2 : Type.{u1}} {σ : K} (_inst_3 : Turing.TM2.Stmt.{u4, u3, u2, u1} K Γ Λ _inst_2) (k : _inst_2) (q : forall (k : K), List.{u3} (Γ k)) (v : Turing.TM2to1.StAct.{u4, u3, u1} K Γ _inst_2 σ), Eq.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ _inst_2) (Turing.TM2.stepAux.{u4, u3, u2, u1} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ _inst_2 (Turing.TM2to1.stRun.{u4, u3, u2, u1} K Γ Λ _inst_2 σ v _inst_3) k q) (Turing.TM2.stepAux.{u4, u3, u2, u1} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ _inst_2 _inst_3 (Turing.TM2to1.stVar.{u4, u3, u1} K Γ _inst_2 σ k (q σ) v) (Function.update.{succ u4, succ u3} K (fun (k : K) => List.{u3} (Γ k)) (fun (a : K) (b : K) => _inst_1 a b) q σ (Turing.TM2to1.stWrite.{u4, u3, u1} K Γ _inst_2 σ k (q σ) v)))
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.step_run Turing.TM2to1.step_runₓ'. -/
 theorem step_run {k : K} (q v S) :
     ∀ s : st_act k,
       TM2.stepAux (st_run s q) v S =
@@ -3440,12 +2774,6 @@ theorem step_run {k : K} (q v S) :
   | st_act.pop f => rfl
 #align turing.TM2to1.step_run Turing.TM2to1.step_run
 
-/- warning: turing.TM2to1.tr_normal -> Turing.TM2to1.trNormal is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ], (Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ) -> (Turing.TM1.Stmt.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ)
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}} {Γ : Type.{u3}} {Λ : Type.{u4}}, (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ) -> (Turing.TM1.Stmt.{max u2 u1, max (max (max u4 u3) u2) u1, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ) Λ)
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_normal Turing.TM2to1.trNormalₓ'. -/
 /-- The translation of TM2 statements to TM1 statements. regular actions have direct equivalents,
 but stack actions are deferred by going to the corresponding `go` state, so that we can find the
 appropriate stack top. -/
@@ -3459,24 +2787,12 @@ def trNormal : stmt₂ → stmt₁
   | TM2.stmt.halt => halt
 #align turing.TM2to1.tr_normal Turing.TM2to1.trNormal
 
-/- warning: turing.TM2to1.tr_normal_run -> Turing.TM2to1.trNormal_run is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] {k : K} (s : Turing.TM2to1.StAct.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k) (q : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ), Eq.{max (succ (max u1 u2)) (succ (max u1 u2 u3 u4)) (succ u4)} (Turing.TM1.Stmt.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) (Turing.TM2to1.trNormal.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 (Turing.TM2to1.stRun.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q)) (Turing.TM1.Stmt.goto.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (fun (_x : Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (_x : σ) => Turing.TM2to1.Λ'.go.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q))
-but is expected to have type
-  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u1}} {Λ : Type.{u2}} {_inst_2 : K} (σ : Turing.TM2to1.StAct.{u4, u3, u2} K _inst_1 Λ _inst_2) (_inst_3 : Turing.TM2.Stmt.{u4, u3, u1, u2} K _inst_1 Γ Λ), Eq.{max (max (max (succ u4) (succ u3)) (succ u1)) (succ u2)} (Turing.TM1.Stmt.{max u3 u4, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ) (Turing.TM2to1.trNormal.{u4, u3, u1, u2} K _inst_1 Γ Λ (Turing.TM2to1.stRun.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Turing.TM1.Stmt.goto.{max u4 u3, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ (fun (x._@.Mathlib.Computability.TuringMachine._hyg.57719 : Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (x._@.Mathlib.Computability.TuringMachine._hyg.57721 : Λ) => Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3))
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_normal_run Turing.TM2to1.trNormal_runₓ'. -/
 theorem trNormal_run {k} (s q) : tr_normal (st_run s q) = goto fun _ _ => go k s q := by
   rcases s with (_ | _ | _) <;> rfl
 #align turing.TM2to1.tr_normal_run Turing.TM2to1.trNormal_run
 
 open Classical
 
-/- warning: turing.TM2to1.tr_stmts₁ -> Turing.TM2to1.trStmts₁ is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ], (Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ) -> (Finset.{max u1 u2 u3 u4} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3))
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}} {Γ : Type.{u3}} {Λ : Type.{u4}}, (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ) -> (Finset.{max (max (max u4 u3) u2) u1} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ))
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_stmts₁ Turing.TM2to1.trStmts₁ₓ'. -/
 /-- The set of machine states accessible from an initial TM2 statement. -/
 noncomputable def trStmts₁ : stmt₂ → Finset Λ'
   | TM2.stmt.push k f q => {go k (st_act.push f) q, ret q} ∪ tr_stmts₁ q
@@ -3487,19 +2803,10 @@ noncomputable def trStmts₁ : stmt₂ → Finset Λ'
   | _ => ∅
 #align turing.TM2to1.tr_stmts₁ Turing.TM2to1.trStmts₁
 
-/- warning: turing.TM2to1.tr_stmts₁_run -> Turing.TM2to1.trStmts₁_run is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] {k : K} {s : Turing.TM2to1.StAct.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k} {q : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ}, Eq.{succ (max u1 u2 u3 u4)} (Finset.{max u1 u2 u3 u4} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Turing.TM2to1.trStmts₁.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 (Turing.TM2to1.stRun.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q)) (Union.union.{max u1 u2 u3 u4} (Finset.{max u1 u2 u3 u4} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Finset.hasUnion.{max u1 u2 u3 u4} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) (fun (a : Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) (b : Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) => Classical.propDecidable (Eq.{succ (max u1 u2 u3 u4)} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) a b))) (Insert.insert.{max u1 u2 u3 u4, max u1 u2 u3 u4} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) (Finset.{max u1 u2 u3 u4} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Finset.hasInsert.{max u1 u2 u3 u4} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) (fun (a : Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) (b : Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) => Classical.propDecidable (Eq.{succ (max u1 u2 u3 u4)} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) a b))) (Turing.TM2to1.Λ'.go.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q) (Singleton.singleton.{max u1 u2 u3 u4, max u1 u2 u3 u4} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) (Finset.{max u1 u2 u3 u4} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Finset.hasSingleton.{max u1 u2 u3 u4} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Turing.TM2to1.Λ'.ret.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 q))) (Turing.TM2to1.trStmts₁.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 q))
-but is expected to have type
-  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u1}} {Λ : Type.{u2}} {_inst_2 : K} {σ : Turing.TM2to1.StAct.{u4, u3, u2} K _inst_1 Λ _inst_2} {_inst_3 : Turing.TM2.Stmt.{u4, u3, u1, u2} K _inst_1 Γ Λ}, Eq.{max (max (max (succ u4) (succ u3)) (succ u1)) (succ u2)} (Finset.{max (max (max u2 u1) u3) u4} (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ)) (Turing.TM2to1.trStmts₁.{u4, u3, u1, u2} K _inst_1 Γ Λ (Turing.TM2to1.stRun.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Union.union.{max (max (max u2 u1) u3) u4} (Finset.{max (max (max u2 u1) u3) u4} (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ)) (Finset.instUnionFinset.{max (max (max u4 u3) u1) u2} (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) (fun (a : Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) (b : Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) => Classical.propDecidable (Eq.{succ (max (max (max u4 u3) u1) u2)} (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) a b))) (Insert.insert.{max (max (max u2 u1) u3) u4, max (max (max u2 u1) u3) u4} (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) (Finset.{max (max (max u2 u1) u3) u4} (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ)) (Finset.instInsertFinset.{max (max (max u4 u3) u1) u2} (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) (fun (a : Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) (b : Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) => Classical.propDecidable (Eq.{succ (max (max (max u4 u3) u1) u2)} (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) a b))) (Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3) (Singleton.singleton.{max (max (max u2 u1) u3) u4, max (max (max u2 u1) u3) u4} (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) (Finset.{max (max (max u2 u1) u3) u4} (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ)) (Finset.instSingletonFinset.{max (max (max u4 u3) u1) u2} (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ)) (Turing.TM2to1.Λ'.ret.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_3))) (Turing.TM2to1.trStmts₁.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_3))
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_stmts₁_run Turing.TM2to1.trStmts₁_runₓ'. -/
 theorem trStmts₁_run {k s q} : tr_stmts₁ (st_run s q) = {go k s q, ret q} ∪ tr_stmts₁ q := by
   rcases s with (_ | _ | _) <;> unfold tr_stmts₁ st_run
 #align turing.TM2to1.tr_stmts₁_run Turing.TM2to1.trStmts₁_run
 
-/- warning: turing.TM2to1.tr_respects_aux₂ -> Turing.TM2to1.tr_respects_aux₂ is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_respects_aux₂ Turing.TM2to1.tr_respects_aux₂ₓ'. -/
 theorem tr_respects_aux₂ {k q v} {S : ∀ k, List (Γ k)} {L : ListBlank (∀ k, Option (Γ k))}
     (hL : ∀ k, L.map (proj k) = ListBlank.mk ((S k).map some).reverse) (o) :
     let v' := st_var v (S k) o
@@ -3581,12 +2888,6 @@ parameter (M : Λ → stmt₂)
 
 include M
 
-/- warning: turing.TM2to1.tr -> Turing.TM2to1.tr is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ], (Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ)) -> (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) -> (Turing.TM1.Stmt.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ)
-but is expected to have type
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} {_inst_2 : Type.{u4}}, (Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K Γ Λ _inst_2)) -> (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K Γ Λ _inst_2) -> (Turing.TM1.Stmt.{max u2 u1, max (max (max u4 u3) u2) u1, u4} (Turing.TM2to1.Γ'.{u1, u2} K Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K Γ Λ _inst_2) _inst_2)
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr Turing.TM2to1.trₓ'. -/
 /-- The TM2 emulator machine states written as a TM1 program.
 This handles the `go` and `ret` states, which shuttle to and from a stack top. -/
 def tr : Λ' → stmt₁
@@ -3599,12 +2900,6 @@ def tr : Λ' → stmt₁
 
 attribute [local pp_using_anonymous_constructor] Turing.TM1.Cfg
 
-/- warning: turing.TM2to1.tr_cfg -> Turing.TM2to1.TrCfg is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ], (Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ)) -> (Turing.TM2.Cfg.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ) -> (Turing.TM1.Cfg.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) -> Prop
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}} {Γ : Type.{u3}} {Λ : Type.{u4}}, (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ) -> (Turing.TM1.Cfg.{max u2 u1, max (max (max u4 u3) u2) u1, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ) Λ) -> Prop
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_cfg Turing.TM2to1.TrCfgₓ'. -/
 /-- The relation between TM2 configurations and TM1 configurations of the TM2 emulator. -/
 inductive TrCfg : cfg₂ → cfg₁ → Prop
   |
@@ -3613,9 +2908,6 @@ inductive TrCfg : cfg₂ → cfg₁ → Prop
       tr_cfg ⟨q, v, S⟩ ⟨q.map normal, v, Tape.mk' ∅ (add_bottom L)⟩
 #align turing.TM2to1.tr_cfg Turing.TM2to1.TrCfg
 
-/- warning: turing.TM2to1.tr_respects_aux₁ -> Turing.TM2to1.tr_respects_aux₁ is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_respects_aux₁ Turing.TM2to1.tr_respects_aux₁ₓ'. -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (n «expr ≤ » S.length) -/
 theorem tr_respects_aux₁ {k} (o q v) {S : List (Γ k)} {L : ListBlank (∀ k, Option (Γ k))}
     (hL : L.map (proj k) = ListBlank.mk (S.map some).reverse) (n) (_ : n ≤ S.length) :
@@ -3630,12 +2922,6 @@ theorem tr_respects_aux₁ {k} (o q v) {S : List (Γ k)} {L : ListBlank (∀ k,
   rw [stk_nth_val _ hL, List.nthLe_get?]; rfl; rwa [List.length_reverse]
 #align turing.TM2to1.tr_respects_aux₁ Turing.TM2to1.tr_respects_aux₁
 
-/- warning: turing.TM2to1.tr_respects_aux₃ -> Turing.TM2to1.tr_respects_aux₃ is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] (M : Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ)) {q : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ} {v : σ} {L : Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)))} (n : Nat), Turing.Reaches₀.{max (max u1 u2) (max u1 u2 u3 u4) u4} (Turing.TM1.Cfg.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) (Turing.TM1.step.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (Turing.TM2to1.tr.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 M)) (Turing.TM1.Cfg.mk.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (Option.some.{max u1 u2 u3 u4} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) (Turing.TM2to1.Λ'.ret.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 q)) v (Nat.iterate.{succ (max u1 u2)} (Turing.Tape.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ)) (Turing.Tape.move.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) Turing.Dir.right) n (Turing.Tape.mk'.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (EmptyCollection.emptyCollection.{max u1 u2} (Turing.ListBlank.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ)) (Turing.ListBlank.hasEmptyc.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ))) (Turing.TM2to1.addBottom.{u1, u2} K _inst_1 Γ L)))) (Turing.TM1.Cfg.mk.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (Option.some.{max u1 u2 u3 u4} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) (Turing.TM2to1.Λ'.ret.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 q)) v (Turing.Tape.mk'.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (EmptyCollection.emptyCollection.{max u1 u2} (Turing.ListBlank.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ)) (Turing.ListBlank.hasEmptyc.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ))) (Turing.TM2to1.addBottom.{u1, u2} K _inst_1 Γ L)))
-but is expected to have type
-  forall {K : Type.{u4}} [_inst_1 : DecidableEq.{succ u4} K] {Γ : K -> Type.{u3}} {Λ : Type.{u2}} {_inst_2 : Type.{u1}} (σ : Λ -> (Turing.TM2.Stmt.{u4, u3, u2, u1} K Γ Λ _inst_2)) {_inst_3 : Turing.TM2.Stmt.{u4, u3, u2, u1} K Γ Λ _inst_2} {M : _inst_2} {q : Turing.ListBlank.{max u4 u3} (forall (k : K), Option.{u3} (Γ k)) (instInhabitedForAll_1.{succ u4, succ u3} K (fun (k : K) => Option.{u3} (Γ k)) (fun (a : K) => instInhabitedOption.{u3} (Γ a)))} (v : Nat), Turing.Reaches₀.{max (max u1 (max (max u1 u2) u3) u4) u3 u4} (Turing.TM1.Cfg.{max u3 u4, max (max (max u1 u2) u3) u4, u1} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u2, u1} K Γ Λ _inst_2) _inst_2) (Turing.TM1.step.{max u3 u4, max (max (max u1 u2) u3) u4, u1} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u2, u1} K Γ Λ _inst_2) _inst_2 (Turing.TM2to1.tr.{u4, u3, u2, u1} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ _inst_2 σ)) (Turing.TM1.Cfg.mk.{max u4 u3, max (max (max u4 u3) u2) u1, u1} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u2, u1} K Γ Λ _inst_2) _inst_2 (Option.some.{max (max (max u4 u3) u2) u1} (Turing.TM2to1.Λ'.{u4, u3, u2, u1} K Γ Λ _inst_2) (Turing.TM2to1.Λ'.ret.{u4, u3, u2, u1} K Γ Λ _inst_2 _inst_3)) M (Nat.iterate.{succ (max u4 u3)} (Turing.Tape.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ)) (Turing.Tape.move.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) Turing.Dir.right) v (Turing.Tape.mk'.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (EmptyCollection.emptyCollection.{max u4 u3} (Turing.ListBlank.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ)) (Turing.ListBlank.hasEmptyc.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ))) (Turing.TM2to1.addBottom.{u4, u3} K Γ q)))) (Turing.TM1.Cfg.mk.{max u4 u3, max (max (max u4 u3) u2) u1, u1} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u2, u1} K Γ Λ _inst_2) _inst_2 (Option.some.{max (max (max u4 u3) u2) u1} (Turing.TM2to1.Λ'.{u4, u3, u2, u1} K Γ Λ _inst_2) (Turing.TM2to1.Λ'.ret.{u4, u3, u2, u1} K Γ Λ _inst_2 _inst_3)) M (Turing.Tape.mk'.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (EmptyCollection.emptyCollection.{max u4 u3} (Turing.ListBlank.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ)) (Turing.ListBlank.hasEmptyc.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ))) (Turing.TM2to1.addBottom.{u4, u3} K Γ q)))
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_respects_aux₃ Turing.TM2to1.tr_respects_aux₃ₓ'. -/
 theorem tr_respects_aux₃ {q v} {L : ListBlank (∀ k, Option (Γ k))} (n) :
     Reaches₀ (TM1.step tr) ⟨some (ret q), v, (Tape.move Dir.right^[n]) (Tape.mk' ∅ (add_bottom L))⟩
       ⟨some (ret q), v, Tape.mk' ∅ (add_bottom L)⟩ :=
@@ -3647,9 +2933,6 @@ theorem tr_respects_aux₃ {q v} {L : ListBlank (∀ k, Option (Γ k))} (n) :
   rfl
 #align turing.TM2to1.tr_respects_aux₃ Turing.TM2to1.tr_respects_aux₃
 
-/- warning: turing.TM2to1.tr_respects_aux -> Turing.TM2to1.tr_respects_aux is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_respects_aux Turing.TM2to1.tr_respects_auxₓ'. -/
 theorem tr_respects_aux {q v T k} {S : ∀ k, List (Γ k)}
     (hT : ∀ k, ListBlank.map (proj k) T = ListBlank.mk ((S k).map some).reverse) (o : st_act k)
     (IH :
@@ -3679,12 +2962,6 @@ theorem tr_respects_aux {q v T k} {S : ∀ k, List (Γ k)}
 
 attribute [local simp] respects TM2.step TM2.step_aux tr_normal
 
-/- warning: turing.TM2to1.tr_respects -> Turing.TM2to1.tr_respects is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] (M : Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ)), Turing.Respects.{max u1 u2 u3 u4, max (max u1 u2) (max u1 u2 u3 u4) u4} (Turing.TM2.Cfg.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ) (Turing.TM1.Cfg.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) (Turing.TM2.step.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ M) (Turing.TM1.step.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (Turing.TM2to1.tr.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 M)) (Turing.TM2to1.TrCfg.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 M)
-but is expected to have type
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} {_inst_2 : Type.{u4}} (σ : Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K Γ Λ _inst_2)), Turing.Respects.{max (max (max u4 u3) u2) u1, max (max u4 (max (max u4 u3) u2) u1) u2 u1} (Turing.TM2.Cfg.{u1, u2, u3, u4} K Γ Λ _inst_2) (Turing.TM1.Cfg.{max u2 u1, max (max (max u4 u3) u2) u1, u4} (Turing.TM2to1.Γ'.{u1, u2} K Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K Γ Λ _inst_2) _inst_2) (Turing.TM2.step.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ _inst_2 σ) (Turing.TM1.step.{max u2 u1, max (max (max u4 u3) u2) u1, u4} (Turing.TM2to1.Γ'.{u1, u2} K Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K Γ Λ _inst_2) _inst_2 (Turing.TM2to1.tr.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ _inst_2 σ)) (Turing.TM2to1.TrCfg.{u1, u2, u3, u4} K Γ Λ _inst_2)
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_respects Turing.TM2to1.tr_respectsₓ'. -/
 theorem tr_respects : Respects (TM2.step M) (TM1.step tr) tr_cfg := fun c₁ c₂ h =>
   by
   cases' h with l v S L hT; clear h
@@ -3702,12 +2979,6 @@ theorem tr_respects : Respects (TM2.step M) (TM1.step tr) tr_cfg := fun c₁ c
   · exact ⟨_, ⟨_, hT⟩, refl_trans_gen.refl⟩
 #align turing.TM2to1.tr_respects Turing.TM2to1.tr_respects
 
-/- warning: turing.TM2to1.tr_cfg_init -> Turing.TM2to1.trCfg_init is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] (M : Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ)) (k : K) (L : List.{u2} (Γ k)), Turing.TM2to1.TrCfg.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 M (Turing.TM2.init.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ _inst_2 _inst_3 k L) (Turing.TM1.init.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (Turing.TM2to1.Λ'.inhabited.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) _inst_3 (Turing.TM2to1.trInit.{u1, u2} K _inst_1 Γ k L))
-but is expected to have type
-  forall {K : Type.{u3}} [_inst_1 : DecidableEq.{succ u3} K] {Γ : K -> Type.{u4}} {Λ : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Λ] {σ : Type.{u1}} [_inst_3 : Inhabited.{succ u1} σ] (M : K) (k : List.{u4} (Γ M)), Turing.TM2to1.TrCfg.{u3, u4, u2, u1} K Γ Λ σ (Turing.TM2.init.{u3, u4, u2, u1} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ _inst_2 _inst_3 M k) (Turing.TM1.init.{max u3 u4, max (max (max u3 u4) u2) u1, u1} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ) (Turing.TM2to1.Λ'.{u3, u4, u2, u1} K Γ Λ σ) σ (Turing.TM2to1.Λ'.inhabited.{u3, u4, u2, u1} K Γ Λ _inst_2 σ) _inst_3 (Turing.TM2to1.trInit.{u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ M k))
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_cfg_init Turing.TM2to1.trCfg_initₓ'. -/
 theorem trCfg_init (k) (L : List (Γ k)) : tr_cfg (TM2.init k L) (TM1.init (tr_init k L)) :=
   by
   rw [(_ : TM1.init _ = _)]
@@ -3725,19 +2996,10 @@ theorem trCfg_init (k) (L : List (Γ k)) : tr_cfg (TM2.init k L) (TM1.init (tr_i
     simp only [List.map_map, List.tail_cons, List.map]; rfl
 #align turing.TM2to1.tr_cfg_init Turing.TM2to1.trCfg_init
 
-/- warning: turing.TM2to1.tr_eval_dom -> Turing.TM2to1.tr_eval_dom is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] (M : Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ)) (k : K) (L : List.{u2} (Γ k)), Iff (Part.Dom.{max u1 u2} (Turing.ListBlank.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ)) (Turing.TM1.eval.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (Turing.TM2to1.Λ'.inhabited.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) _inst_3 (Turing.TM2to1.tr.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 M) (Turing.TM2to1.trInit.{u1, u2} K _inst_1 Γ k L))) (Part.Dom.{u2} (List.{u2} (Γ k)) (Turing.TM2.eval.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ _inst_2 _inst_3 M k L))
-but is expected to have type
-  forall {K : Type.{u3}} [_inst_1 : DecidableEq.{succ u3} K] {Γ : K -> Type.{u4}} {Λ : Type.{u1}} [_inst_2 : Inhabited.{succ u1} Λ] {σ : Type.{u2}} [_inst_3 : Inhabited.{succ u2} σ] (M : Λ -> (Turing.TM2.Stmt.{u3, u4, u1, u2} K Γ Λ σ)) (k : K) (L : List.{u4} (Γ k)), Iff (Part.Dom.{max u3 u4} (Turing.ListBlank.{max u4 u3} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ)) (Turing.TM1.eval.{max u4 u3, max (max (max u2 u1) u4) u3, u2} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ) (Turing.TM2to1.Λ'.{u3, u4, u1, u2} K Γ Λ σ) σ (Turing.TM2to1.Λ'.inhabited.{u3, u4, u1, u2} K Γ Λ _inst_2 σ) _inst_3 (Turing.TM2to1.tr.{u3, u4, u1, u2} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ M) (Turing.TM2to1.trInit.{u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ k L))) (Part.Dom.{u4} (List.{u4} (Γ k)) (Turing.TM2.eval.{u3, u4, u1, u2} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ _inst_2 _inst_3 M k L))
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_eval_dom Turing.TM2to1.tr_eval_domₓ'. -/
 theorem tr_eval_dom (k) (L : List (Γ k)) : (TM1.eval tr (tr_init k L)).Dom ↔ (TM2.eval M k L).Dom :=
   tr_eval_dom tr_respects (tr_cfg_init _ _)
 #align turing.TM2to1.tr_eval_dom Turing.TM2to1.tr_eval_dom
 
-/- warning: turing.TM2to1.tr_eval -> Turing.TM2to1.tr_eval is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_eval Turing.TM2to1.tr_evalₓ'. -/
 theorem tr_eval (k) (L : List (Γ k)) {L₁ L₂} (H₁ : L₁ ∈ TM1.eval tr (tr_init k L))
     (H₂ : L₂ ∈ TM2.eval M k L) :
     ∃ (S : ∀ k, List (Γ k))(L' : ListBlank (∀ k, Option (Γ k))),
@@ -3751,23 +3013,11 @@ theorem tr_eval (k) (L : List (Γ k)) {L₁ L₂} (H₁ : L₁ ∈ TM1.eval tr (
   exact ⟨_, L', by simp only [tape.mk'_right₀], hT, rfl⟩
 #align turing.TM2to1.tr_eval Turing.TM2to1.tr_eval
 
-/- warning: turing.TM2to1.tr_supp -> Turing.TM2to1.trSupp is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ], (Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ)) -> (Finset.{u3} Λ) -> (Finset.{max u1 u2 u3 u4} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3))
-but is expected to have type
-  forall {K : Type.{u1}} {_inst_1 : K -> Type.{u2}} {Γ : Type.{u3}} {Λ : Type.{u4}}, (Γ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ)) -> (Finset.{u3} Γ) -> (Finset.{max (max (max u4 u3) u2) u1} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ))
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_supp Turing.TM2to1.trSuppₓ'. -/
 /-- The support of a set of TM2 states in the TM2 emulator. -/
 noncomputable def trSupp (S : Finset Λ) : Finset Λ' :=
   S.biUnion fun l => insert (normal l) (tr_stmts₁ (M l))
 #align turing.TM2to1.tr_supp Turing.TM2to1.trSupp
 
-/- warning: turing.TM2to1.tr_supports -> Turing.TM2to1.tr_supports is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] (M : Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ)) {S : Finset.{u3} Λ}, (Turing.TM2.Supports.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ _inst_2 M S) -> (Turing.TM1.Supports.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (Turing.TM2to1.Λ'.inhabited.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) (Turing.TM2to1.tr.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 M) (Turing.TM2to1.trSupp.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 M S))
-but is expected to have type
-  forall {K : Type.{u3}} [_inst_1 : DecidableEq.{succ u3} K] {Γ : K -> Type.{u2}} {Λ : Type.{u4}} [_inst_2 : Inhabited.{succ u4} Λ] {σ : Type.{u1}} (_inst_3 : Λ -> (Turing.TM2.Stmt.{u3, u2, u4, u1} K Γ Λ σ)) {M : Finset.{u4} Λ}, (Turing.TM2.Supports.{u3, u2, u4, u1} K Γ Λ σ _inst_2 _inst_3 M) -> (Turing.TM1.Supports.{max u2 u3, max (max (max u1 u4) u2) u3, u1} (Turing.TM2to1.Γ'.{u3, u2} K Γ) (Turing.TM2to1.Λ'.{u3, u2, u4, u1} K Γ Λ σ) σ (Turing.TM2to1.Λ'.inhabited.{u3, u2, u4, u1} K Γ Λ _inst_2 σ) (Turing.TM2to1.tr.{u3, u2, u4, u1} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ _inst_3) (Turing.TM2to1.trSupp.{u3, u2, u4, u1} K Γ Λ σ _inst_3 M))
-Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_supports Turing.TM2to1.tr_supportsₓ'. -/
 theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports tr (tr_supp S) :=
   ⟨Finset.mem_biUnion.2 ⟨_, ss.1, Finset.mem_insert.2 <| Or.inl rfl⟩, fun l' h =>
     by
Diff
@@ -93,9 +93,7 @@ theorem BlankExtends.refl {Γ} [Inhabited Γ] (l : List Γ) : BlankExtends l l :
 #print Turing.BlankExtends.trans /-
 @[trans]
 theorem BlankExtends.trans {Γ} [Inhabited Γ] {l₁ l₂ l₃ : List Γ} :
-    BlankExtends l₁ l₂ → BlankExtends l₂ l₃ → BlankExtends l₁ l₃ :=
-  by
-  rintro ⟨i, rfl⟩ ⟨j, rfl⟩
+    BlankExtends l₁ l₂ → BlankExtends l₂ l₃ → BlankExtends l₁ l₃ := by rintro ⟨i, rfl⟩ ⟨j, rfl⟩;
   exact ⟨i + j, by simp [List.replicate_add]⟩
 #align turing.blank_extends.trans Turing.BlankExtends.trans
 -/
@@ -401,8 +399,7 @@ theorem ListBlank.ext {Γ} [Inhabited Γ] {L₁ L₂ : ListBlank Γ} :
       by
       wlog h : l₁.length ≤ l₂.length
       · cases le_total l₁.length l₂.length <;> [skip;symm] <;> apply_assumption <;> try assumption
-        intro
-        rw [H]
+        intro ; rw [H]
       refine' Quotient.sound' (Or.inl ⟨l₂.length - l₁.length, _⟩)
       refine' List.ext_nthLe _ fun i h h₂ => Eq.symm _
       · simp only [add_tsub_cancel_of_le h, List.length_append, List.length_replicate]
@@ -1166,8 +1163,7 @@ theorem mem_eval {σ} {f : σ → Option σ} {a b} : b ∈ eval f a ↔ Reaches
     by
     refine' refl_trans_gen.head_induction_on h₁ _ fun a a' h _ IH => _
     · refine' PFun.mem_fix_iff.2 (Or.inl _)
-      rw [h₂]
-      apply Part.mem_some
+      rw [h₂]; apply Part.mem_some
     · refine' PFun.mem_fix_iff.2 (Or.inr ⟨_, _, IH⟩)
       rw [show f a = _ from h]
       apply Part.mem_some⟩
@@ -1271,11 +1267,9 @@ theorem tr_reaches_rev {σ₁ σ₂ f₁ f₂} {tr : σ₁ → σ₂ → Prop} (
   · exact ⟨_, _, refl_trans_gen.refl, aa, refl_trans_gen.refl⟩
   · rcases IH with ⟨e₁, e₂, ce, ee, ae⟩
     rcases refl_trans_gen.cases_head ce with (rfl | ⟨d', cd', de⟩)
-    · have := H ee
-      revert this
+    · have := H ee; revert this
       cases' eg : f₁ e₁ with g₁ <;> simp only [respects, and_imp, exists_imp]
-      · intro c0
-        cases cd.symm.trans c0
+      · intro c0; cases cd.symm.trans c0
       · intro g₂ gg cg
         rcases trans_gen.head'_iff.1 cg with ⟨d', cd', dg⟩
         cases Option.mem_unique cd cd'
@@ -1623,10 +1617,8 @@ theorem Machine.map_step {S : Set Λ} (f₂₁ : Function.RightInverse f₁ f₂
     unfold step machine.map cfg.map
     simp only [Turing.Tape.map_fst, g₂₁ q h, f₂₁ _]
     rcases M q T.1 with (_ | ⟨q', d | a⟩); · rfl
-    · simp only [step, cfg.map, Option.map_some', tape.map_move f₁]
-      rfl
-    · simp only [step, cfg.map, Option.map_some', tape.map_write]
-      rfl
+    · simp only [step, cfg.map, Option.map_some', tape.map_move f₁]; rfl
+    · simp only [step, cfg.map, Option.map_some', tape.map_write]; rfl
 #align turing.TM0.machine.map_step Turing.TM0.Machine.map_step
 
 /- warning: turing.TM0.map_init -> Turing.TM0.map_init is a dubious translation:
@@ -1647,11 +1639,9 @@ theorem Machine.map_respects (g₁ : PointedMap Λ Λ') (g₂ : Λ' → Λ) {S}
     Respects (step M) (step (M.map f₁ f₂ g₁ g₂)) fun a b => a.q ∈ S ∧ Cfg.map f₁ g₁ a = b
   | c, _, ⟨cs, rfl⟩ => by
     cases' e : step M c with c' <;> unfold respects
-    · rw [← M.map_step f₁ f₂ g₁ g₂ f₂₁ g₂₁ _ cs, e]
-      rfl
+    · rw [← M.map_step f₁ f₂ g₁ g₂ f₂₁ g₂₁ _ cs, e]; rfl
     · refine' ⟨_, ⟨step_supports M ss e cs, rfl⟩, trans_gen.single _⟩
-      rw [← M.map_step f₁ f₂ g₁ g₂ f₂₁ g₂₁ _ cs, e]
-      exact rfl
+      rw [← M.map_step f₁ f₂ g₁ g₂ f₂₁ g₂₁ _ cs, e]; exact rfl
 #align turing.TM0.machine.map_respects Turing.TM0.Machine.map_respects
 
 end
@@ -1835,13 +1825,11 @@ theorem stmts₁_trans {q₁ q₂} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ 
     simp only [Finset.mem_insert, Finset.mem_union, Finset.mem_singleton] at h₁₂
   iterate 3 
     rcases h₁₂ with (rfl | h₁₂)
-    · unfold stmts₁ at h₀₁
-      exact h₀₁
+    · unfold stmts₁ at h₀₁; exact h₀₁
     · exact Finset.mem_insert_of_mem (IH h₁₂)
   case branch p q₁ q₂ IH₁ IH₂ =>
     rcases h₁₂ with (rfl | h₁₂ | h₁₂)
-    · unfold stmts₁ at h₀₁
-      exact h₀₁
+    · unfold stmts₁ at h₀₁; exact h₀₁
     · exact Finset.mem_insert_of_mem (Finset.mem_union_left _ <| IH₁ h₁₂)
     · exact Finset.mem_insert_of_mem (Finset.mem_union_right _ <| IH₂ h₁₂)
   case goto l => subst h₁₂; exact h₀₁
@@ -2447,10 +2435,8 @@ theorem trTape'_move_left (L R) :
         tape.mk' L' (list_blank.append (Vector.toList (enc a)) R')
     by
     simpa only [List.length_reverse, Vector.toList_length] using this (List.reverse_reverse _).symm
-  intros
-  induction' l₁ with b l₁ IH generalizing l₂
-  · cases e
-    rfl
+  intros ; induction' l₁ with b l₁ IH generalizing l₂
+  · cases e; rfl
   simp only [List.length, List.cons_append, iterate_succ_apply]
   convert IH e
   simp only [list_blank.tail_cons, list_blank.append, tape.move_left_mk', list_blank.head_cons]
@@ -2466,9 +2452,7 @@ theorem trTape'_move_right (L R) :
     refine' (Eq.symm _).trans (this n _)
     simp only [tr_tape'_move_left, list_blank.cons_head_tail, list_blank.head_cons,
       list_blank.tail_cons]
-  intros
-  induction' i with i IH
-  · rfl
+  intros ; induction' i with i IH; · rfl
   rw [iterate_succ_apply, iterate_succ_apply', tape.move_left_right, IH]
 #align turing.TM1to1.tr_tape'_move_right Turing.TM1to1.trTape'_move_right
 -/
@@ -2489,11 +2473,9 @@ theorem stepAux_write (q v a b L R) :
       step_aux (write l₂ q) v (tape.mk' (list_blank.append l₁ L') (list_blank.append l₂' R')) =
         step_aux q v (tape.mk' (L'.append (List.reverseAux l₂ l₁)) R')
     by convert this [] _ _ ((enc b).2.trans (enc a).2.symm) <;> rw [list_blank.cons_bind] <;> rfl
-  clear a b L R
-  intros
+  clear a b L R; intros
   induction' l₂ with a l₂ IH generalizing l₁ l₂'
-  · cases List.length_eq_zero.1 e
-    rfl
+  · cases List.length_eq_zero.1 e; rfl
   cases' l₂' with b l₂' <;> injection e with e
   dsimp only [write, step_aux]
   convert IH _ _ e using 1
@@ -2528,22 +2510,14 @@ theorem stepAux_read (f v L R) :
     ∀ i f L' R' l₁ l₂ h,
       step_aux (read_aux i f) v (tape.mk' (list_blank.append l₁ L') (list_blank.append l₂ R')) =
         step_aux (f ⟨l₂, h⟩) v (tape.mk' (list_blank.append (l₂.reverseAux l₁) L') R')
-    by
-    intro f
-    convert this n f _ _ _ _ (enc a).2 <;> simp
-  clear f L a R
-  intros
-  subst i
-  induction' l₂ with a l₂ IH generalizing l₁
-  · rfl
+    by intro f; convert this n f _ _ _ _ (enc a).2 <;> simp
+  clear f L a R; intros ; subst i
+  induction' l₂ with a l₂ IH generalizing l₁; · rfl
   trans
     step_aux (read_aux l₂.length fun v => f (a ::ᵥ v)) v
       (tape.mk' ((L'.append l₁).cons a) (R'.append l₂))
-  · dsimp [read_aux, step_aux]
-    simp
-    cases a <;> rfl
-  rw [← list_blank.append, IH]
-  rfl
+  · dsimp [read_aux, step_aux]; simp; cases a <;> rfl
+  rw [← list_blank.append, IH]; rfl
 #align turing.TM1to1.step_aux_read Turing.TM1to1.stepAux_read
 
 /- warning: turing.TM1to1.tr_respects -> Turing.TM1to1.tr_respects is a dubious translation:
@@ -2556,18 +2530,13 @@ theorem tr_respects : Respects (step M) (step tr) fun c₁ c₂ => tr_cfg c₁ =
   fun_respects.2 fun ⟨l₁, v, T⟩ =>
     by
     obtain ⟨L, R, rfl⟩ := T.exists_mk'
-    cases' l₁ with l₁
-    · exact rfl
+    cases' l₁ with l₁; · exact rfl
     suffices
       ∀ q R,
         reaches (step (tr enc dec M)) (step_aux (tr_normal dec q) v (tr_tape' enc0 L R))
           (tr_cfg enc0 (step_aux q v (tape.mk' L R)))
-      by
-      refine' trans_gen.head' rfl _
-      rw [tr_tape_mk']
-      exact this _ R
-    clear R l₁
-    intros
+      by refine' trans_gen.head' rfl _; rw [tr_tape_mk']; exact this _ R
+    clear R l₁; intros
     induction' q with _ q IH _ q IH _ q IH generalizing v L R
     case move d q IH =>
       cases d <;>
@@ -2656,8 +2625,7 @@ theorem tr_supports {S} (ss : Supports M S) : Supports tr (tr_supp S) :=
         this _ (ss.2 _ hl) fun q' hq => Finset.mem_biUnion.2 ⟨_, hl, Finset.mem_insert_of_mem hq⟩
       rcases Finset.mem_insert.1 h with (rfl | h)
       exacts[this.1, this.2 _ h]
-    intro q hs hw
-    induction q
+    intro q hs hw; induction q
     case move d q IH =>
       unfold writes at hw⊢
       replace IH := IH hs hw; refine' ⟨_, IH.2⟩
@@ -2788,13 +2756,11 @@ theorem tr_respects : Respects (TM0.step M) (TM1.step tr) fun a b => tr_cfg a =
       by cases' s with d a <;> rfl
     refine' trans_gen.head _ (trans_gen.head' this _)
     · unfold TM1.step TM1.step_aux tr Membership.Mem
-      rw [e]
-      rfl
+      rw [e]; rfl
     cases e' : M q' _
     · apply refl_trans_gen.single
       unfold TM1.step TM1.step_aux tr Membership.Mem
-      rw [e']
-      rfl
+      rw [e']; rfl
     · rfl
 #align turing.TM0to1.tr_respects Turing.TM0to1.tr_respects
 -/
@@ -2997,13 +2963,11 @@ theorem stmts₁_trans {q₁ q₂} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ 
     simp only [Finset.mem_insert, Finset.mem_singleton, Finset.mem_union] at h₁₂
   iterate 4 
     rcases h₁₂ with (rfl | h₁₂)
-    · unfold stmts₁ at h₀₁
-      exact h₀₁
+    · unfold stmts₁ at h₀₁; exact h₀₁
     · exact Finset.mem_insert_of_mem (IH h₁₂)
   case branch f q₁ q₂ IH₁ IH₂ =>
     rcases h₁₂ with (rfl | h₁₂ | h₁₂)
-    · unfold stmts₁ at h₀₁
-      exact h₀₁
+    · unfold stmts₁ at h₀₁; exact h₀₁
     · exact Finset.mem_insert_of_mem (Finset.mem_union_left _ (IH₁ h₁₂))
     · exact Finset.mem_insert_of_mem (Finset.mem_union_right _ (IH₂ h₁₂))
   case goto l => subst h₁₂; exact h₀₁
@@ -3559,7 +3523,7 @@ theorem tr_respects_aux₂ {k q v} {S : ∀ k, List (Γ k)} {L : ListBlank (∀
     refine' list_blank.ext fun i => _
     rw [list_blank.nth_map, list_blank.nth_modify_nth, proj, pointed_map.mk_val]
     by_cases h' : k' = k
-    · subst k'
+    · subst k';
       split_ifs <;> simp only [List.reverse_cons, Function.update_same, list_blank.nth_mk, List.map]
       ·
         rw [List.getI_eq_nthLe, List.nthLe_append_right] <;>
@@ -3567,8 +3531,7 @@ theorem tr_respects_aux₂ {k q v} {S : ∀ k, List (Γ k)} {L : ListBlank (∀
             List.length_append, lt_add_iff_pos_right, List.length]
       rw [← proj_map_nth, hL, list_blank.nth_mk]
       cases' lt_or_gt_of_ne h with h h
-      · rw [List.getI_append]
-        simpa only [List.length_map, List.length_reverse] using h
+      · rw [List.getI_append]; simpa only [List.length_map, List.length_reverse] using h
       · rw [gt_iff_lt] at h
         rw [List.getI_eq_default, List.getI_eq_default] <;>
           simp only [Nat.add_one_le_iff, h, List.length, le_of_lt, List.length_reverse,
@@ -3587,8 +3550,7 @@ theorem tr_respects_aux₂ {k q v} {S : ∀ k, List (Γ k)} {L : ListBlank (∀
     cases e : S k
     · simp only [tape.mk'_head, list_blank.head_cons, tape.move_left_mk', List.length,
         tape.write_mk', List.head?, iterate_zero_apply, List.tail_nil]
-      rw [← e, Function.update_eq_self]
-      exact ⟨L, hL, by rw [add_bottom_head_fst, cond]⟩
+      rw [← e, Function.update_eq_self]; exact ⟨L, hL, by rw [add_bottom_head_fst, cond]⟩
     · refine'
         ⟨_, fun k' => _, by
           rw [List.length_cons, tape.move_right_n_head, tape.mk'_nth_nat, add_bottom_nth_succ_fst,
@@ -3602,16 +3564,12 @@ theorem tr_respects_aux₂ {k q v} {S : ∀ k, List (Γ k)} {L : ListBlank (∀
       refine' list_blank.ext fun i => _
       rw [list_blank.nth_map, list_blank.nth_modify_nth, proj, pointed_map.mk_val]
       by_cases h' : k' = k
-      · subst k'
-        split_ifs <;> simp only [Function.update_same, list_blank.nth_mk, List.tail]
-        · rw [List.getI_eq_default]
-          · rfl
-          rw [h, List.length_reverse, List.length_map]
+      · subst k'; split_ifs <;> simp only [Function.update_same, list_blank.nth_mk, List.tail]
+        · rw [List.getI_eq_default]; · rfl; rw [h, List.length_reverse, List.length_map]
         rw [← proj_map_nth, hL, list_blank.nth_mk, e, List.map, List.reverse_cons]
         cases' lt_or_gt_of_ne h with h h
-        · rw [List.getI_append]
-          simpa only [List.length_map, List.length_reverse] using h
-        · rw [gt_iff_lt] at h
+        · rw [List.getI_append]; simpa only [List.length_map, List.length_reverse] using h
+        · rw [gt_iff_lt] at h;
           rw [List.getI_eq_default, List.getI_eq_default] <;>
             simp only [Nat.add_one_le_iff, h, List.length, le_of_lt, List.length_reverse,
               List.length_append, List.length_map]
@@ -3758,17 +3716,13 @@ theorem trCfg_init (k) (L : List (Γ k)) : tr_cfg (TM2.init k L) (TM1.init (tr_i
     rw [list_blank.map_mk, list_blank.nth_mk, List.getI_eq_iget_get?, List.map_map, (· ∘ ·),
       List.get?_map, proj, pointed_map.mk_val]
     by_cases k' = k
-    · subst k'
-      simp only [Function.update_same]
+    · subst k'; simp only [Function.update_same]
       rw [list_blank.nth_mk, List.getI_eq_iget_get?, ← List.map_reverse, List.get?_map]
     · simp only [Function.update_noteq h]
       rw [list_blank.nth_mk, List.getI_eq_iget_get?, List.map, List.reverse_nil, List.get?]
       cases L.reverse.nth i <;> rfl
-  · rw [tr_init, TM1.init]
-    dsimp only
-    congr <;> cases L.reverse <;> try rfl
-    simp only [List.map_map, List.tail_cons, List.map]
-    rfl
+  · rw [tr_init, TM1.init]; dsimp only; congr <;> cases L.reverse <;> try rfl
+    simp only [List.map_map, List.tail_cons, List.map]; rfl
 #align turing.TM2to1.tr_cfg_init Turing.TM2to1.trCfg_init
 
 /- warning: turing.TM2to1.tr_eval_dom -> Turing.TM2to1.tr_eval_dom is a dubious translation:
@@ -3826,8 +3780,7 @@ theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports tr (tr_supp S) :=
       have :=
         this _ (ss.2 l lS) fun x hx => Finset.mem_biUnion.2 ⟨_, lS, Finset.mem_insert_of_mem hx⟩
       rcases Finset.mem_insert.1 h with (rfl | h) <;> [exact this.1;exact this.2 _ h]
-    clear h l'
-    refine' stmt_st_rec _ _ _ _ _ <;> intros
+    clear h l'; refine' stmt_st_rec _ _ _ _ _ <;> intros
     · -- stack op
       rw [TM2to1.supports_run] at ss'
       simp only [TM2to1.tr_stmts₁_run, Finset.mem_union, Finset.mem_insert, Finset.mem_singleton] at
@@ -3860,8 +3813,7 @@ theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports tr (tr_supp S) :=
       rw [tr_stmts₁] at h
       rcases Finset.mem_union.1 h with (h | h) <;> [exact IH₁₂ _ h;exact IH₂₂ _ h]
     · -- goto
-      rw [tr_stmts₁]
-      unfold TM2to1.tr_normal TM1.supports_stmt
+      rw [tr_stmts₁]; unfold TM2to1.tr_normal TM1.supports_stmt
       unfold TM2.supports_stmt at ss'
       exact
         ⟨fun _ v => Finset.mem_biUnion.2 ⟨_, ss' v, Finset.mem_insert_self _ _⟩, fun _ =>
Diff
@@ -1613,10 +1613,7 @@ def Machine.map : Machine Γ' Λ'
 -/
 
 /- warning: turing.TM0.machine.map_step -> Turing.TM0.Machine.map_step is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Γ' : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Γ'] {Λ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} Λ] {Λ' : Type.{u4}} [_inst_4 : Inhabited.{succ u4} Λ'] (M : Turing.TM0.Machine.{u1, u3} Γ _inst_1 Λ _inst_3) (f₁ : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (f₂ : Turing.PointedMap.{u2, u1} Γ' Γ _inst_2 _inst_1) (g₁ : Λ -> Λ') (g₂ : Λ' -> Λ) {S : Set.{u3} Λ}, (Function.RightInverse.{succ u2, succ u1} Γ' Γ (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) f₁) (coeFn.{succ (max u2 u1), max (succ u2) (succ u1)} (Turing.PointedMap.{u2, u1} Γ' Γ _inst_2 _inst_1) (fun (_x : Turing.PointedMap.{u2, u1} Γ' Γ _inst_2 _inst_1) => Γ' -> Γ) (Turing.PointedMap.hasCoeToFun.{u2, u1} Γ' Γ _inst_2 _inst_1) f₂)) -> (forall (q : Λ), (Membership.Mem.{u3, u3} Λ (Set.{u3} Λ) (Set.hasMem.{u3} Λ) q S) -> (Eq.{succ u3} Λ (g₂ (g₁ q)) q)) -> (forall (c : Turing.TM0.Cfg.{u1, u3} Γ _inst_1 Λ _inst_3), (Membership.Mem.{u3, u3} Λ (Set.{u3} Λ) (Set.hasMem.{u3} Λ) (Turing.TM0.Cfg.q.{u1, u3} Γ _inst_1 Λ _inst_3 c) S) -> (Eq.{succ (max u2 u4)} (Option.{max u2 u4} (Turing.TM0.Cfg.{u2, u4} Γ' _inst_2 Λ' _inst_4)) (Option.map.{max u1 u3, max u2 u4} (Turing.TM0.Cfg.{u1, u3} Γ _inst_1 Λ _inst_3) (Turing.TM0.Cfg.{u2, u4} Γ' _inst_2 Λ' _inst_4) (Turing.TM0.Cfg.map.{u1, u2, u3, u4} Γ _inst_1 Γ' _inst_2 Λ _inst_3 Λ' _inst_4 f₁ g₁) (Turing.TM0.step.{u1, u3} Γ _inst_1 Λ _inst_3 M c)) (Turing.TM0.step.{u2, u4} Γ' _inst_2 Λ' _inst_4 (Turing.TM0.Machine.map.{u1, u2, u3, u4} Γ _inst_1 Γ' _inst_2 Λ _inst_3 Λ' _inst_4 M f₁ f₂ g₁ g₂) (Turing.TM0.Cfg.map.{u1, u2, u3, u4} Γ _inst_1 Γ' _inst_2 Λ _inst_3 Λ' _inst_4 f₁ g₁ c))))
-but is expected to have type
-  forall {Γ : Type.{u2}} [_inst_1 : Inhabited.{succ u2} Γ] {Γ' : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Γ'] {Λ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} Λ] {Λ' : Type.{u1}} [_inst_4 : Inhabited.{succ u1} Λ'] (M : Turing.TM0.Machine.{u2, u4} Γ Λ _inst_3) (f₁ : Turing.PointedMap.{u2, u3} Γ Γ' _inst_1 _inst_2) (f₂ : Turing.PointedMap.{u3, u2} Γ' Γ _inst_2 _inst_1) (g₁ : Λ -> Λ') (g₂ : Λ' -> Λ) {S : Set.{u4} Λ}, (Function.RightInverse.{succ u3, succ u2} Γ' Γ (Turing.PointedMap.f.{u2, u3} Γ Γ' _inst_1 _inst_2 f₁) (Turing.PointedMap.f.{u3, u2} Γ' Γ _inst_2 _inst_1 f₂)) -> (forall (q : Λ), (Membership.mem.{u4, u4} Λ (Set.{u4} Λ) (Set.instMembershipSet.{u4} Λ) q S) -> (Eq.{succ u4} Λ (g₂ (g₁ q)) q)) -> (forall (c : Turing.TM0.Cfg.{u2, u4} Γ _inst_1 Λ), (Membership.mem.{u4, u4} Λ (Set.{u4} Λ) (Set.instMembershipSet.{u4} Λ) (Turing.TM0.Cfg.q.{u2, u4} Γ _inst_1 Λ c) S) -> (Eq.{max (succ u3) (succ u1)} (Option.{max u1 u3} (Turing.TM0.Cfg.{u3, u1} Γ' _inst_2 Λ')) (Option.map.{max u4 u2, max u1 u3} (Turing.TM0.Cfg.{u2, u4} Γ _inst_1 Λ) (Turing.TM0.Cfg.{u3, u1} Γ' _inst_2 Λ') (Turing.TM0.Cfg.map.{u2, u3, u4, u1} Γ _inst_1 Γ' _inst_2 Λ Λ' f₁ g₁) (Turing.TM0.step.{u2, u4} Γ _inst_1 Λ _inst_3 M c)) (Turing.TM0.step.{u3, u1} Γ' _inst_2 Λ' _inst_4 (Turing.TM0.Machine.map.{u2, u3, u4, u1} Γ _inst_1 Γ' _inst_2 Λ _inst_3 Λ' _inst_4 M f₁ f₂ g₁ g₂) (Turing.TM0.Cfg.map.{u2, u3, u4, u1} Γ _inst_1 Γ' _inst_2 Λ Λ' f₁ g₁ c))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align turing.TM0.machine.map_step Turing.TM0.Machine.map_stepₓ'. -/
 theorem Machine.map_step {S : Set Λ} (f₂₁ : Function.RightInverse f₁ f₂)
     (g₂₁ : ∀ q ∈ S, g₂ (g₁ q) = q) :
@@ -1643,10 +1640,7 @@ theorem map_init (g₁ : PointedMap Λ Λ') (l : List Γ) : (init l).map f₁ g
 #align turing.TM0.map_init Turing.TM0.map_init
 
 /- warning: turing.TM0.machine.map_respects -> Turing.TM0.Machine.map_respects is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Γ' : Type.{u2}} [_inst_2 : Inhabited.{succ u2} Γ'] {Λ : Type.{u3}} [_inst_3 : Inhabited.{succ u3} Λ] {Λ' : Type.{u4}} [_inst_4 : Inhabited.{succ u4} Λ'] (M : Turing.TM0.Machine.{u1, u3} Γ _inst_1 Λ _inst_3) (f₁ : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (f₂ : Turing.PointedMap.{u2, u1} Γ' Γ _inst_2 _inst_1) (g₁ : Turing.PointedMap.{u3, u4} Λ Λ' _inst_3 _inst_4) (g₂ : Λ' -> Λ) {S : Set.{u3} Λ}, (Turing.TM0.Supports.{u1, u3} Γ _inst_1 Λ _inst_3 M S) -> (Function.RightInverse.{succ u2, succ u1} Γ' Γ (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) (fun (_x : Turing.PointedMap.{u1, u2} Γ Γ' _inst_1 _inst_2) => Γ -> Γ') (Turing.PointedMap.hasCoeToFun.{u1, u2} Γ Γ' _inst_1 _inst_2) f₁) (coeFn.{succ (max u2 u1), max (succ u2) (succ u1)} (Turing.PointedMap.{u2, u1} Γ' Γ _inst_2 _inst_1) (fun (_x : Turing.PointedMap.{u2, u1} Γ' Γ _inst_2 _inst_1) => Γ' -> Γ) (Turing.PointedMap.hasCoeToFun.{u2, u1} Γ' Γ _inst_2 _inst_1) f₂)) -> (forall (q : Λ), (Membership.Mem.{u3, u3} Λ (Set.{u3} Λ) (Set.hasMem.{u3} Λ) q S) -> (Eq.{succ u3} Λ (g₂ (coeFn.{succ (max u3 u4), max (succ u3) (succ u4)} (Turing.PointedMap.{u3, u4} Λ Λ' _inst_3 _inst_4) (fun (_x : Turing.PointedMap.{u3, u4} Λ Λ' _inst_3 _inst_4) => Λ -> Λ') (Turing.PointedMap.hasCoeToFun.{u3, u4} Λ Λ' _inst_3 _inst_4) g₁ q)) q)) -> (Turing.Respects.{max u1 u3, max u2 u4} (Turing.TM0.Cfg.{u1, u3} Γ _inst_1 Λ _inst_3) (Turing.TM0.Cfg.{u2, u4} Γ' _inst_2 Λ' _inst_4) (Turing.TM0.step.{u1, u3} Γ _inst_1 Λ _inst_3 M) (Turing.TM0.step.{u2, u4} Γ' _inst_2 Λ' _inst_4 (Turing.TM0.Machine.map.{u1, u2, u3, u4} Γ _inst_1 Γ' _inst_2 Λ _inst_3 Λ' _inst_4 M f₁ f₂ (coeFn.{succ (max u3 u4), max (succ u3) (succ u4)} (Turing.PointedMap.{u3, u4} Λ Λ' _inst_3 _inst_4) (fun (_x : Turing.PointedMap.{u3, u4} Λ Λ' _inst_3 _inst_4) => Λ -> Λ') (Turing.PointedMap.hasCoeToFun.{u3, u4} Λ Λ' _inst_3 _inst_4) g₁) g₂)) (fun (a : Turing.TM0.Cfg.{u1, u3} Γ _inst_1 Λ _inst_3) (b : Turing.TM0.Cfg.{u2, u4} Γ' _inst_2 Λ' _inst_4) => And (Membership.Mem.{u3, u3} Λ (Set.{u3} Λ) (Set.hasMem.{u3} Λ) (Turing.TM0.Cfg.q.{u1, u3} Γ _inst_1 Λ _inst_3 a) S) (Eq.{max (succ u2) (succ u4)} (Turing.TM0.Cfg.{u2, u4} Γ' _inst_2 Λ' _inst_4) (Turing.TM0.Cfg.map.{u1, u2, u3, u4} Γ _inst_1 Γ' _inst_2 Λ _inst_3 Λ' _inst_4 f₁ (coeFn.{succ (max u3 u4), max (succ u3) (succ u4)} (Turing.PointedMap.{u3, u4} Λ Λ' _inst_3 _inst_4) (fun (_x : Turing.PointedMap.{u3, u4} Λ Λ' _inst_3 _inst_4) => Λ -> Λ') (Turing.PointedMap.hasCoeToFun.{u3, u4} Λ Λ' _inst_3 _inst_4) g₁) a) b)))
-but is expected to have type
-  forall {Γ : Type.{u2}} [_inst_1 : Inhabited.{succ u2} Γ] {Γ' : Type.{u1}} [_inst_2 : Inhabited.{succ u1} Γ'] {Λ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} Λ] {Λ' : Type.{u3}} [_inst_4 : Inhabited.{succ u3} Λ'] (M : Turing.TM0.Machine.{u2, u4} Γ Λ _inst_3) (f₁ : Turing.PointedMap.{u2, u1} Γ Γ' _inst_1 _inst_2) (f₂ : Turing.PointedMap.{u1, u2} Γ' Γ _inst_2 _inst_1) (g₁ : Turing.PointedMap.{u4, u3} Λ Λ' _inst_3 _inst_4) (g₂ : Λ' -> Λ) {S : Set.{u4} Λ}, (Turing.TM0.Supports.{u2, u4} Γ Λ _inst_3 M S) -> (Function.RightInverse.{succ u1, succ u2} Γ' Γ (Turing.PointedMap.f.{u2, u1} Γ Γ' _inst_1 _inst_2 f₁) (Turing.PointedMap.f.{u1, u2} Γ' Γ _inst_2 _inst_1 f₂)) -> (forall (q : Λ), (Membership.mem.{u4, u4} Λ (Set.{u4} Λ) (Set.instMembershipSet.{u4} Λ) q S) -> (Eq.{succ u4} Λ (g₂ (Turing.PointedMap.f.{u4, u3} Λ Λ' _inst_3 _inst_4 g₁ q)) q)) -> (Turing.Respects.{max u4 u2, max u3 u1} (Turing.TM0.Cfg.{u2, u4} Γ _inst_1 Λ) (Turing.TM0.Cfg.{u1, u3} Γ' _inst_2 Λ') (Turing.TM0.step.{u2, u4} Γ _inst_1 Λ _inst_3 M) (Turing.TM0.step.{u1, u3} Γ' _inst_2 Λ' _inst_4 (Turing.TM0.Machine.map.{u2, u1, u4, u3} Γ _inst_1 Γ' _inst_2 Λ _inst_3 Λ' _inst_4 M f₁ f₂ (Turing.PointedMap.f.{u4, u3} Λ Λ' _inst_3 _inst_4 g₁) g₂)) (fun (a : Turing.TM0.Cfg.{u2, u4} Γ _inst_1 Λ) (b : Turing.TM0.Cfg.{u1, u3} Γ' _inst_2 Λ') => And (Membership.mem.{u4, u4} Λ (Set.{u4} Λ) (Set.instMembershipSet.{u4} Λ) (Turing.TM0.Cfg.q.{u2, u4} Γ _inst_1 Λ a) S) (Eq.{max (succ u1) (succ u3)} (Turing.TM0.Cfg.{u1, u3} Γ' _inst_2 Λ') (Turing.TM0.Cfg.map.{u2, u1, u4, u3} Γ _inst_1 Γ' _inst_2 Λ Λ' f₁ (Turing.PointedMap.f.{u4, u3} Λ Λ' _inst_3 _inst_4 g₁) a) b)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align turing.TM0.machine.map_respects Turing.TM0.Machine.map_respectsₓ'. -/
 theorem Machine.map_respects (g₁ : PointedMap Λ Λ') (g₂ : Λ' → Λ) {S} (ss : Supports M S)
     (f₂₁ : Function.RightInverse f₁ f₂) (g₂₁ : ∀ q ∈ S, g₂ (g₁ q) = q) :
@@ -1926,10 +1920,7 @@ theorem stmts_supportsStmt {M : Λ → stmt} {S q} (ss : supports M S) :
 #align turing.TM1.stmts_supports_stmt Turing.TM1.stmts_supportsStmt
 
 /- warning: turing.TM1.step_supports -> Turing.TM1.step_supports is a dubious translation:
-lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {σ : Type.{u3}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) {S : Finset.{u2} Λ}, (Turing.TM1.Supports.{u1, u2, u3} Γ _inst_1 Λ σ _inst_2 M S) -> (forall {c : Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ} {c' : Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ}, (Membership.Mem.{max u1 u2 u3, max u1 u2 u3} (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ) (Option.{max u1 u2 u3} (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ)) (Option.hasMem.{max u1 u2 u3} (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ)) c' (Turing.TM1.step.{u1, u2, u3} Γ _inst_1 Λ σ M c)) -> (Membership.Mem.{u2, u2} (Option.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Finset.hasMem.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u1, u2, u3} Γ _inst_1 Λ σ c) (coeFn.{succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (fun (_x : RelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) => (Finset.{u2} Λ) -> (Finset.{u2} (Option.{u2} Λ))) (RelEmbedding.hasCoeToFun.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) (Finset.insertNone.{u2} Λ) S)) -> (Membership.Mem.{u2, u2} (Option.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Finset.hasMem.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u1, u2, u3} Γ _inst_1 Λ σ c') (coeFn.{succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (fun (_x : RelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) => (Finset.{u2} Λ) -> (Finset.{u2} (Option.{u2} Λ))) (RelEmbedding.hasCoeToFun.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) (Finset.insertNone.{u2} Λ) S)))
-but is expected to have type
-  forall {Γ : Type.{u3}} [_inst_1 : Inhabited.{succ u3} Γ] {Λ : Type.{u2}} {σ : Type.{u1}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Λ -> (Turing.TM1.Stmt.{u3, u2, u1} Γ Λ σ)) {S : Finset.{u2} Λ}, (Turing.TM1.Supports.{u3, u2, u1} Γ Λ σ _inst_2 M S) -> (forall {c : Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ} {c' : Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ}, (Membership.mem.{max (max u3 u2) u1, max (max u1 u2) u3} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ) (Option.{max (max u1 u2) u3} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ)) (Option.instMembershipOption.{max (max u3 u2) u1} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ)) c' (Turing.TM1.step.{u3, u2, u1} Γ _inst_1 Λ σ M c)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.869 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u3, u2, u1} Γ _inst_1 Λ σ c) (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.869 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699))) (Finset.insertNone.{u2} Λ) S)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.869 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u3, u2, u1} Γ _inst_1 Λ σ c') (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.869 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699))) (Finset.insertNone.{u2} Λ) S)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align turing.TM1.step_supports Turing.TM1.step_supportsₓ'. -/
 theorem step_supports (M : Λ → stmt) {S} (ss : supports M S) :
     ∀ {c c' : cfg}, c' ∈ step M c → c.l ∈ S.insertNone → c'.l ∈ S.insertNone
@@ -3089,10 +3080,7 @@ theorem stmts_supportsStmt {M : Λ → stmt} {S q} (ss : supports M S) :
 #align turing.TM2.stmts_supports_stmt Turing.TM2.stmts_supportsStmt
 
 /- warning: turing.TM2.step_supports -> Turing.TM2.step_supports is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} {σ : Type.{u4}} [_inst_2 : Inhabited.{succ u3} Λ] (M : Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) {S : Finset.{u3} Λ}, (Turing.TM2.Supports.{u1, u2, u3, u4} K _inst_1 Γ Λ σ _inst_2 M S) -> (forall {c : Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ} {c' : Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ}, (Membership.Mem.{max u1 u2 u3 u4, max u1 u2 u3 u4} (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ) (Option.{max u1 u2 u3 u4} (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) (Option.hasMem.{max u1 u2 u3 u4} (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) c' (Turing.TM2.step.{u1, u2, u3, u4} K _inst_1 Γ Λ σ M c)) -> (Membership.Mem.{u3, u3} (Option.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Finset.hasMem.{u3} (Option.{u3} Λ)) (Turing.TM2.Cfg.l.{u1, u2, u3, u4} K _inst_1 Γ Λ σ c) (coeFn.{succ u3, succ u3} (OrderEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ))) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ))))) (fun (_x : RelEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) => (Finset.{u3} Λ) -> (Finset.{u3} (Option.{u3} Λ))) (RelEmbedding.hasCoeToFun.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) (Finset.insertNone.{u3} Λ) S)) -> (Membership.Mem.{u3, u3} (Option.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Finset.hasMem.{u3} (Option.{u3} Λ)) (Turing.TM2.Cfg.l.{u1, u2, u3, u4} K _inst_1 Γ Λ σ c') (coeFn.{succ u3, succ u3} (OrderEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ))) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ))))) (fun (_x : RelEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) => (Finset.{u3} Λ) -> (Finset.{u3} (Option.{u3} Λ))) (RelEmbedding.hasCoeToFun.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) (Finset.insertNone.{u3} Λ) S)))
-but is expected to have type
-  forall {K : Type.{u4}} [_inst_1 : DecidableEq.{succ u4} K] {Γ : K -> Type.{u3}} {Λ : Type.{u2}} {σ : Type.{u1}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Λ -> (Turing.TM2.Stmt.{u4, u3, u2, u1} K Γ Λ σ)) {S : Finset.{u2} Λ}, (Turing.TM2.Supports.{u4, u3, u2, u1} K Γ Λ σ _inst_2 M S) -> (forall {c : Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ} {c' : Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ}, (Membership.mem.{max (max (max u4 u3) u2) u1, max (max (max u1 u2) u3) u4} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ) (Option.{max (max (max u1 u2) u3) u4} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ)) (Option.instMembershipOption.{max (max (max u4 u3) u2) u1} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ)) c' (Turing.TM2.step.{u4, u3, u2, u1} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ M c)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.869 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM2.Cfg.l.{u4, u3, u2, u1} K Γ Λ σ c) (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.869 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699))) (Finset.insertNone.{u2} Λ) S)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.869 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM2.Cfg.l.{u4, u3, u2, u1} K Γ Λ σ c') (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.869 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699))) (Finset.insertNone.{u2} Λ) S)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align turing.TM2.step_supports Turing.TM2.step_supportsₓ'. -/
 theorem step_supports (M : Λ → stmt) {S} (ss : supports M S) :
     ∀ {c c' : cfg}, c' ∈ step M c → c.l ∈ S.insertNone → c'.l ∈ S.insertNone
@@ -3546,10 +3534,7 @@ theorem trStmts₁_run {k s q} : tr_stmts₁ (st_run s q) = {go k s q, ret q} 
 #align turing.TM2to1.tr_stmts₁_run Turing.TM2to1.trStmts₁_run
 
 /- warning: turing.TM2to1.tr_respects_aux₂ -> Turing.TM2to1.tr_respects_aux₂ is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] {k : K} {q : Turing.TM1.Stmt.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ} {v : σ} {S : forall (k : K), List.{u2} (Γ k)} {L : Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)))}, (forall (k : K), Eq.{succ u2} (Turing.ListBlank.{u2} (Option.{u2} (Γ k)) (Option.inhabited.{u2} (Γ k))) (Turing.ListBlank.map.{max u1 u2, u2} (forall (k : K), Option.{u2} (Γ k)) (Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x))) (Option.inhabited.{u2} (Γ k)) (Turing.proj.{u1, u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)) k) L) (Turing.ListBlank.mk.{u2} (Option.{u2} (Γ k)) (Option.inhabited.{u2} (Γ k)) (List.reverse.{u2} (Option.{u2} (Γ k)) (List.map.{u2, u2} (Γ k) (Option.{u2} (Γ k)) (Option.some.{u2} (Γ k)) (S k))))) -> (forall (o : Turing.TM2to1.StAct.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k), let v' : σ := Turing.TM2to1.stVar.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k v (S k) o; let Sk' : List.{u2} (Γ k) := Turing.TM2to1.stWrite.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k v (S k) o; let S' : forall (a : K), List.{u2} (Γ a) := Function.update.{succ u1, succ u2} K (fun (k : K) => List.{u2} (Γ k)) (fun (a : K) (b : K) => _inst_1 a b) S k Sk'; Exists.{succ (max u1 u2)} (Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)))) (fun (L' : Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)))) => And (forall (k : K), Eq.{succ u2} (Turing.ListBlank.{u2} (Option.{u2} (Γ k)) (Option.inhabited.{u2} (Γ k))) (Turing.ListBlank.map.{max u1 u2, u2} (forall (k : K), Option.{u2} (Γ k)) (Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x))) (Option.inhabited.{u2} (Γ k)) (Turing.proj.{u1, u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)) k) L') (Turing.ListBlank.mk.{u2} (Option.{u2} (Γ k)) (Option.inhabited.{u2} (Γ k)) (List.reverse.{u2} (Option.{u2} (Γ k)) (List.map.{u2, u2} (Γ k) (Option.{u2} (Γ k)) (Option.some.{u2} (Γ k)) (S' k))))) (Eq.{max (succ (max u1 u2)) (succ (max u1 u2 u3 u4)) (succ u4)} (Turing.TM1.Cfg.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) (Turing.TM1.stepAux.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (Turing.TM2to1.trStAct.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k q o) v (Nat.iterate.{succ (max u1 u2)} (Turing.Tape.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ)) (Turing.Tape.move.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) Turing.Dir.right) (List.length.{u2} (Γ k) (S k)) (Turing.Tape.mk'.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (EmptyCollection.emptyCollection.{max u1 u2} (Turing.ListBlank.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ)) (Turing.ListBlank.hasEmptyc.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ))) (Turing.TM2to1.addBottom.{u1, u2} K _inst_1 Γ L)))) (Turing.TM1.stepAux.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ q v' (Nat.iterate.{succ (max u1 u2)} (Turing.Tape.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ)) (Turing.Tape.move.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) Turing.Dir.right) (List.length.{u2} (Γ k) (S' k)) (Turing.Tape.mk'.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (EmptyCollection.emptyCollection.{max u1 u2} (Turing.ListBlank.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ)) (Turing.ListBlank.hasEmptyc.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ))) (Turing.TM2to1.addBottom.{u1, u2} K _inst_1 Γ L')))))))
-but is expected to have type
-  forall {K : Type.{u3}} [_inst_1 : DecidableEq.{succ u3} K] {Γ : K -> Type.{u4}} {Λ : Type.{u1}} {_inst_2 : Type.{u2}} {σ : K} {_inst_3 : Turing.TM1.Stmt.{max u4 u3, max (max (max u2 u1) u4) u3, u2} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Λ'.{u3, u4, u1, u2} K Γ Λ _inst_2) _inst_2} {k : _inst_2} {q : forall (k : K), List.{u4} (Γ k)} {v : Turing.ListBlank.{max u3 u4} (forall (k : K), Option.{u4} (Γ k)) (instInhabitedForAll_1.{succ u3, succ u4} K (fun (k : K) => Option.{u4} (Γ k)) (fun (a : K) => instInhabitedOption.{u4} (Γ a)))}, (forall (k : K), Eq.{succ u4} (Turing.ListBlank.{u4} (Option.{u4} (Γ k)) (instInhabitedOption.{u4} (Γ k))) (Turing.ListBlank.map.{max u4 u3, u4} (forall (i : K), Option.{u4} (Γ i)) (Option.{u4} (Γ k)) (instInhabitedForAll_1.{succ u3, succ u4} K (fun (i : K) => Option.{u4} (Γ i)) (fun (a : K) => instInhabitedOption.{u4} (Γ a))) (instInhabitedOption.{u4} (Γ k)) (Turing.proj.{u3, u4} K (fun (k : K) => Option.{u4} (Γ k)) (fun (a : K) => instInhabitedOption.{u4} (Γ a)) k) v) (Turing.ListBlank.mk.{u4} (Option.{u4} (Γ k)) (instInhabitedOption.{u4} (Γ k)) (List.reverse.{u4} (Option.{u4} (Γ k)) (List.map.{u4, u4} (Γ k) (Option.{u4} (Γ k)) (Option.some.{u4} (Γ k)) (q k))))) -> (forall (L : Turing.TM2to1.StAct.{u3, u4, u2} K Γ _inst_2 σ), let v' : _inst_2 := Turing.TM2to1.stVar.{u3, u4, u2} K Γ _inst_2 σ k (q σ) L; let Sk' : List.{u4} (Γ σ) := Turing.TM2to1.stWrite.{u3, u4, u2} K Γ _inst_2 σ k (q σ) L; let S' : forall (a : K), List.{u4} (Γ a) := Function.update.{succ u3, succ u4} K (fun (a : K) => List.{u4} (Γ a)) (fun (a : K) (b : K) => _inst_1 a b) q σ Sk'; Exists.{max (succ u3) (succ u4)} (Turing.ListBlank.{max u3 u4} (forall (k : K), Option.{u4} (Γ k)) (instInhabitedForAll_1.{succ u3, succ u4} K (fun (k : K) => Option.{u4} (Γ k)) (fun (a : K) => instInhabitedOption.{u4} (Γ a)))) (fun (L' : Turing.ListBlank.{max u3 u4} (forall (k : K), Option.{u4} (Γ k)) (instInhabitedForAll_1.{succ u3, succ u4} K (fun (k : K) => Option.{u4} (Γ k)) (fun (a : K) => instInhabitedOption.{u4} (Γ a)))) => And (forall (k : K), Eq.{succ u4} (Turing.ListBlank.{u4} (Option.{u4} (Γ k)) (instInhabitedOption.{u4} (Γ k))) (Turing.ListBlank.map.{max u4 u3, u4} (forall (i : K), Option.{u4} (Γ i)) (Option.{u4} (Γ k)) (instInhabitedForAll_1.{succ u3, succ u4} K (fun (i : K) => Option.{u4} (Γ i)) (fun (a : K) => instInhabitedOption.{u4} (Γ a))) (instInhabitedOption.{u4} (Γ k)) (Turing.proj.{u3, u4} K (fun (k : K) => Option.{u4} (Γ k)) (fun (a : K) => instInhabitedOption.{u4} (Γ a)) k) L') (Turing.ListBlank.mk.{u4} (Option.{u4} (Γ k)) (instInhabitedOption.{u4} (Γ k)) (List.reverse.{u4} (Option.{u4} (Γ k)) (List.map.{u4, u4} (Γ k) (Option.{u4} (Γ k)) (Option.some.{u4} (Γ k)) (S' k))))) (Eq.{max (max (max (succ u3) (succ u4)) (succ u1)) (succ u2)} (Turing.TM1.Cfg.{max u4 u3, max (max (max u2 u1) u4) u3, u2} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ) (Turing.TM2to1.Λ'.{u3, u4, u1, u2} K Γ Λ _inst_2) _inst_2) (Turing.TM1.stepAux.{max u4 u3, max (max (max u2 u1) u4) u3, u2} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ) (Turing.TM2to1.Λ'.{u3, u4, u1, u2} K Γ Λ _inst_2) _inst_2 (Turing.TM2to1.trStAct.{u3, u4, u1, u2} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ _inst_2 σ _inst_3 L) k (Nat.iterate.{succ (max u3 u4)} (Turing.Tape.{max u3 u4} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ)) (Turing.Tape.move.{max u3 u4} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ) Turing.Dir.right) (List.length.{u4} (Γ σ) (q σ)) (Turing.Tape.mk'.{max u3 u4} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ) (EmptyCollection.emptyCollection.{max u3 u4} (Turing.ListBlank.{max u3 u4} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ)) (Turing.ListBlank.hasEmptyc.{max u3 u4} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ))) (Turing.TM2to1.addBottom.{u3, u4} K Γ v)))) (Turing.TM1.stepAux.{max u3 u4, max (max (max u3 u4) u1) u2, u2} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ) (Turing.TM2to1.Λ'.{u3, u4, u1, u2} K Γ Λ _inst_2) _inst_2 _inst_3 v' (Nat.iterate.{succ (max u3 u4)} (Turing.Tape.{max u3 u4} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ)) (Turing.Tape.move.{max u3 u4} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ) Turing.Dir.right) (List.length.{u4} (Γ σ) (S' σ)) (Turing.Tape.mk'.{max u3 u4} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ) (EmptyCollection.emptyCollection.{max u3 u4} (Turing.ListBlank.{max u3 u4} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ)) (Turing.ListBlank.hasEmptyc.{max u3 u4} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ))) (Turing.TM2to1.addBottom.{u3, u4} K Γ L')))))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_respects_aux₂ Turing.TM2to1.tr_respects_aux₂ₓ'. -/
 theorem tr_respects_aux₂ {k q v} {S : ∀ k, List (Γ k)} {L : ListBlank (∀ k, Option (Γ k))}
     (hL : ∀ k, L.map (proj k) = ListBlank.mk ((S k).map some).reverse) (o) :
@@ -3671,10 +3656,7 @@ inductive TrCfg : cfg₂ → cfg₁ → Prop
 #align turing.TM2to1.tr_cfg Turing.TM2to1.TrCfg
 
 /- warning: turing.TM2to1.tr_respects_aux₁ -> Turing.TM2to1.tr_respects_aux₁ is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] (M : Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ)) {k : K} (o : Turing.TM2to1.StAct.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k) (q : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ) (v : σ) {S : List.{u2} (Γ k)} {L : Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)))}, (Eq.{succ u2} (Turing.ListBlank.{u2} (Option.{u2} (Γ k)) (Option.inhabited.{u2} (Γ k))) (Turing.ListBlank.map.{max u1 u2, u2} (forall (k : K), Option.{u2} (Γ k)) (Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x))) (Option.inhabited.{u2} (Γ k)) (Turing.proj.{u1, u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)) k) L) (Turing.ListBlank.mk.{u2} (Option.{u2} (Γ k)) (Option.inhabited.{u2} (Γ k)) (List.reverse.{u2} (Option.{u2} (Γ k)) (List.map.{u2, u2} (Γ k) (Option.{u2} (Γ k)) (Option.some.{u2} (Γ k)) S)))) -> (forall (n : Nat), (LE.le.{0} Nat Nat.hasLe n (List.length.{u2} (Γ k) S)) -> (Turing.Reaches₀.{max (max u1 u2) (max u1 u2 u3 u4) u4} (Turing.TM1.Cfg.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) (Turing.TM1.step.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (Turing.TM2to1.tr.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 M)) (Turing.TM1.Cfg.mk.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (Option.some.{max u1 u2 u3 u4} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) (Turing.TM2to1.Λ'.go.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k o q)) v (Turing.Tape.mk'.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (EmptyCollection.emptyCollection.{max u1 u2} (Turing.ListBlank.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ)) (Turing.ListBlank.hasEmptyc.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ))) (Turing.TM2to1.addBottom.{u1, u2} K _inst_1 Γ L))) (Turing.TM1.Cfg.mk.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (Option.some.{max u1 u2 u3 u4} (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) (Turing.TM2to1.Λ'.go.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k o q)) v (Nat.iterate.{succ (max u1 u2)} (Turing.Tape.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ)) (Turing.Tape.move.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) Turing.Dir.right) n (Turing.Tape.mk'.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (EmptyCollection.emptyCollection.{max u1 u2} (Turing.ListBlank.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ)) (Turing.ListBlank.hasEmptyc.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ))) (Turing.TM2to1.addBottom.{u1, u2} K _inst_1 Γ L))))))
-but is expected to have type
-  forall {K : Type.{u4}} [_inst_1 : DecidableEq.{succ u4} K] {Γ : K -> Type.{u3}} {Λ : Type.{u1}} {_inst_2 : Type.{u2}} (σ : Λ -> (Turing.TM2.Stmt.{u4, u3, u1, u2} K Γ Λ _inst_2)) {_inst_3 : K} (M : Turing.TM2to1.StAct.{u4, u3, u2} K Γ _inst_2 _inst_3) (k : Turing.TM2.Stmt.{u4, u3, u1, u2} K Γ Λ _inst_2) (o : _inst_2) {q : List.{u3} (Γ _inst_3)} {v : Turing.ListBlank.{max u4 u3} (forall (k : K), Option.{u3} (Γ k)) (instInhabitedForAll_1.{succ u4, succ u3} K (fun (k : K) => Option.{u3} (Γ k)) (fun (a : K) => instInhabitedOption.{u3} (Γ a)))}, (Eq.{succ u3} (Turing.ListBlank.{u3} (Option.{u3} (Γ _inst_3)) (instInhabitedOption.{u3} (Γ _inst_3))) (Turing.ListBlank.map.{max u4 u3, u3} (forall (i : K), Option.{u3} (Γ i)) (Option.{u3} (Γ _inst_3)) (instInhabitedForAll_1.{succ u4, succ u3} K (fun (i : K) => Option.{u3} (Γ i)) (fun (a : K) => instInhabitedOption.{u3} (Γ a))) (instInhabitedOption.{u3} (Γ _inst_3)) (Turing.proj.{u4, u3} K (fun (k : K) => Option.{u3} (Γ k)) (fun (a : K) => instInhabitedOption.{u3} (Γ a)) _inst_3) v) (Turing.ListBlank.mk.{u3} (Option.{u3} (Γ _inst_3)) (instInhabitedOption.{u3} (Γ _inst_3)) (List.reverse.{u3} (Option.{u3} (Γ _inst_3)) (List.map.{u3, u3} (Γ _inst_3) (Option.{u3} (Γ _inst_3)) (Option.some.{u3} (Γ _inst_3)) q)))) -> (forall (L : Nat), (LE.le.{0} Nat instLENat L (List.length.{u3} (Γ _inst_3) q)) -> (Turing.Reaches₀.{max (max u2 (max (max u2 u1) u3) u4) u3 u4} (Turing.TM1.Cfg.{max u3 u4, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K Γ Λ _inst_2) _inst_2) (Turing.TM1.step.{max u3 u4, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K Γ Λ _inst_2) _inst_2 (Turing.TM2to1.tr.{u4, u3, u1, u2} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ _inst_2 σ)) (Turing.TM1.Cfg.mk.{max u4 u3, max (max (max u4 u3) u1) u2, u2} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K Γ Λ _inst_2) _inst_2 (Option.some.{max (max (max u4 u3) u1) u2} (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K Γ Λ _inst_2) (Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K Γ Λ _inst_2 _inst_3 M k)) o (Turing.Tape.mk'.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (EmptyCollection.emptyCollection.{max u4 u3} (Turing.ListBlank.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ)) (Turing.ListBlank.hasEmptyc.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ))) (Turing.TM2to1.addBottom.{u4, u3} K Γ v))) (Turing.TM1.Cfg.mk.{max u4 u3, max (max (max u4 u3) u1) u2, u2} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K Γ Λ _inst_2) _inst_2 (Option.some.{max (max (max u4 u3) u1) u2} (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K Γ Λ _inst_2) (Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K Γ Λ _inst_2 _inst_3 M k)) o (Nat.iterate.{succ (max u4 u3)} (Turing.Tape.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ)) (Turing.Tape.move.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) Turing.Dir.right) L (Turing.Tape.mk'.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (EmptyCollection.emptyCollection.{max u4 u3} (Turing.ListBlank.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ)) (Turing.ListBlank.hasEmptyc.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ))) (Turing.TM2to1.addBottom.{u4, u3} K Γ v))))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_respects_aux₁ Turing.TM2to1.tr_respects_aux₁ₓ'. -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (n «expr ≤ » S.length) -/
 theorem tr_respects_aux₁ {k} (o q v) {S : List (Γ k)} {L : ListBlank (∀ k, Option (Γ k))}
@@ -3708,10 +3690,7 @@ theorem tr_respects_aux₃ {q v} {L : ListBlank (∀ k, Option (Γ k))} (n) :
 #align turing.TM2to1.tr_respects_aux₃ Turing.TM2to1.tr_respects_aux₃
 
 /- warning: turing.TM2to1.tr_respects_aux -> Turing.TM2to1.tr_respects_aux is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] (M : Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ)) {q : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ} {v : σ} {T : Turing.ListBlank.{max u1 u2} (forall (i : K), Option.{u2} (Γ i)) (Pi.inhabited.{succ u1, succ u2} K (fun (i : K) => Option.{u2} (Γ i)) (fun (x : K) => Option.inhabited.{u2} (Γ x)))} {k : K} {S : forall (k : K), List.{u2} (Γ k)}, (forall (k : K), Eq.{succ u2} (Turing.ListBlank.{u2} (Option.{u2} (Γ k)) (Option.inhabited.{u2} (Γ k))) (Turing.ListBlank.map.{max u1 u2, u2} (forall (i : K), Option.{u2} (Γ i)) (Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (i : K) => Option.{u2} (Γ i)) (fun (x : K) => Option.inhabited.{u2} (Γ x))) (Option.inhabited.{u2} (Γ k)) (Turing.proj.{u1, u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (k : K) => Option.inhabited.{u2} (Γ k)) k) T) (Turing.ListBlank.mk.{u2} (Option.{u2} (Γ k)) (Option.inhabited.{u2} (Γ k)) (List.reverse.{u2} (Option.{u2} (Γ k)) (List.map.{u2, u2} (Γ k) (Option.{u2} (Γ k)) (Option.some.{u2} (Γ k)) (S k))))) -> (forall (o : Turing.TM2to1.StAct.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k), (forall {v : σ} {S : forall (k : K), List.{u2} (Γ k)} {T : Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (i : K) => Option.inhabited.{u2} (Γ i)))}, (forall (k : K), Eq.{succ u2} (Turing.ListBlank.{u2} (Option.{u2} (Γ k)) (Option.inhabited.{u2} (Γ k))) (Turing.ListBlank.map.{max u1 u2, u2} (forall (i : K), Option.{u2} (Γ i)) (Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (i : K) => Option.{u2} (Γ i)) (fun (x : K) => Option.inhabited.{u2} (Γ x))) (Option.inhabited.{u2} (Γ k)) (Turing.proj.{u1, u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (i : K) => Option.inhabited.{u2} (Γ i)) k) T) (Turing.ListBlank.mk.{u2} (Option.{u2} (Γ k)) (Option.inhabited.{u2} (Γ k)) (List.reverse.{u2} (Option.{u2} (Γ k)) (List.map.{u2, u2} (Γ k) (Option.{u2} (Γ k)) (Option.some.{u2} (Γ k)) (S k))))) -> (Exists.{max (succ (max u1 u2)) (succ (max u1 u2 u3 u4)) (succ u4)} (Turing.TM1.Cfg.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) (fun (b : Turing.TM1.Cfg.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) => And (Turing.TM2to1.TrCfg.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 M (Turing.TM2.stepAux.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ q v S) b) (Turing.Reaches.{max (max u1 u2) (max u1 u2 u3 u4) u4} (Turing.TM1.Cfg.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) (Turing.TM1.step.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (Turing.TM2to1.tr.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 M)) (Turing.TM1.stepAux.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (Turing.TM2to1.trNormal.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 q) v (Turing.Tape.mk'.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (EmptyCollection.emptyCollection.{max u1 u2} (Turing.ListBlank.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ)) (Turing.ListBlank.hasEmptyc.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ))) (Turing.TM2to1.addBottom.{u1, u2} K _inst_1 Γ T))) b)))) -> (Exists.{max (succ (max u1 u2)) (succ (max u1 u2 u3 u4)) (succ u4)} (Turing.TM1.Cfg.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) (fun (b : Turing.TM1.Cfg.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) => And (Turing.TM2to1.TrCfg.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 M (Turing.TM2.stepAux.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ (Turing.TM2to1.stRun.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k o q) v S) b) (Turing.Reaches.{max (max u1 u2) (max u1 u2 u3 u4) u4} (Turing.TM1.Cfg.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) (Turing.TM1.step.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (Turing.TM2to1.tr.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 M)) (Turing.TM1.stepAux.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (Turing.TM2to1.trNormal.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 (Turing.TM2to1.stRun.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k o q)) v (Turing.Tape.mk'.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (EmptyCollection.emptyCollection.{max u1 u2} (Turing.ListBlank.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ)) (Turing.ListBlank.hasEmptyc.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ))) (Turing.TM2to1.addBottom.{u1, u2} K _inst_1 Γ T))) b))))
-but is expected to have type
-  forall {K : Type.{u4}} [_inst_1 : DecidableEq.{succ u4} K] {Γ : K -> Type.{u3}} {Λ : Type.{u2}} {_inst_2 : Type.{u1}} (σ : Λ -> (Turing.TM2.Stmt.{u4, u3, u2, u1} K Γ Λ _inst_2)) {_inst_3 : Turing.TM2.Stmt.{u4, u3, u2, u1} K (fun (k : K) => Γ k) Λ _inst_2} {M : _inst_2} {q : Turing.ListBlank.{max u3 u4} (forall (i : K), Option.{u3} (Γ i)) (instInhabitedForAll_1.{succ u4, succ u3} K (fun (i : K) => Option.{u3} (Γ i)) (fun (a : K) => instInhabitedOption.{u3} (Γ a)))} {v : K} {T : forall (k : K), List.{u3} (Γ k)}, (forall (k : K), Eq.{succ u3} (Turing.ListBlank.{u3} (Option.{u3} (Γ k)) (instInhabitedOption.{u3} (Γ k))) (Turing.ListBlank.map.{max u3 u4, u3} (forall (i : K), Option.{u3} (Γ i)) (Option.{u3} (Γ k)) (instInhabitedForAll_1.{succ u4, succ u3} K (fun (i : K) => Option.{u3} (Γ i)) (fun (a : K) => instInhabitedOption.{u3} (Γ a))) (instInhabitedOption.{u3} (Γ k)) (Turing.proj.{u4, u3} K (fun (k : K) => Option.{u3} (Γ k)) (fun (i : K) => instInhabitedOption.{u3} (Γ i)) k) q) (Turing.ListBlank.mk.{u3} (Option.{u3} (Γ k)) (instInhabitedOption.{u3} (Γ k)) (List.reverse.{u3} (Option.{u3} (Γ k)) (List.map.{u3, u3} (Γ k) (Option.{u3} (Γ k)) (Option.some.{u3} (Γ k)) (T k))))) -> (forall (S : Turing.TM2to1.StAct.{u4, u3, u1} K Γ _inst_2 v), (forall {k : _inst_2} {S : forall (k : K), List.{u3} (Γ k)} {T : Turing.ListBlank.{max u4 u3} (forall (k : K), Option.{u3} (Γ k)) (instInhabitedForAll_1.{succ u4, succ u3} K (fun (k : K) => Option.{u3} (Γ k)) (fun (a : K) => instInhabitedOption.{u3} (Γ a)))}, (forall (k : K), Eq.{succ u3} (Turing.ListBlank.{u3} (Option.{u3} (Γ k)) (instInhabitedOption.{u3} (Γ k))) (Turing.ListBlank.map.{max u3 u4, u3} (forall (i : K), Option.{u3} (Γ i)) (Option.{u3} (Γ k)) (instInhabitedForAll_1.{succ u4, succ u3} K (fun (i : K) => Option.{u3} (Γ i)) (fun (a : K) => instInhabitedOption.{u3} (Γ a))) (instInhabitedOption.{u3} (Γ k)) (Turing.proj.{u4, u3} K (fun (i : K) => Option.{u3} (Γ i)) (fun (a : K) => instInhabitedOption.{u3} (Γ a)) k) T) (Turing.ListBlank.mk.{u3} (Option.{u3} (Γ k)) (instInhabitedOption.{u3} (Γ k)) (List.reverse.{u3} (Option.{u3} (Γ k)) (List.map.{u3, u3} (Γ k) (Option.{u3} (Γ k)) (Option.some.{u3} (Γ k)) (S k))))) -> (Exists.{max (max (max (succ u4) (succ u3)) (succ u1)) (succ u2)} (Turing.TM1.Cfg.{max u3 u4, max (max (max u1 u2) u3) u4, u1} (Turing.TM2to1.Γ'.{u4, u3} K (fun (k : K) => Γ k)) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K (fun (k : K) => Γ k)) (Turing.TM2to1.Λ'.{u4, u3, u2, u1} K (fun (k : K) => Γ k) Λ _inst_2) _inst_2) (fun (b : Turing.TM1.Cfg.{max u3 u4, max (max (max u1 u2) u3) u4, u1} (Turing.TM2to1.Γ'.{u4, u3} K (fun (k : K) => Γ k)) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K (fun (k : K) => Γ k)) (Turing.TM2to1.Λ'.{u4, u3, u2, u1} K (fun (k : K) => Γ k) Λ _inst_2) _inst_2) => And (Turing.TM2to1.TrCfg.{u4, u3, u2, u1} K (fun (k : K) => Γ k) Λ _inst_2 (Turing.TM2.stepAux.{u4, u3, u2, u1} K (fun (a : K) (b : K) => _inst_1 a b) (fun (k : K) => Γ k) Λ _inst_2 _inst_3 k S) b) (Turing.Reaches.{max (max u1 (max (max u1 u2) u3) u4) u3 u4} (Turing.TM1.Cfg.{max u3 u4, max (max (max u1 u2) u3) u4, u1} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u2, u1} K Γ Λ _inst_2) _inst_2) (Turing.TM1.step.{max u3 u4, max (max (max u1 u2) u3) u4, u1} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u2, u1} K Γ Λ _inst_2) _inst_2 (Turing.TM2to1.tr.{u4, u3, u2, u1} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ _inst_2 σ)) (Turing.TM1.stepAux.{max u4 u3, max (max (max u4 u3) u2) u1, u1} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u2, u1} K Γ Λ _inst_2) _inst_2 (Turing.TM2to1.trNormal.{u4, u3, u2, u1} K Γ Λ _inst_2 _inst_3) k (Turing.Tape.mk'.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (EmptyCollection.emptyCollection.{max u4 u3} (Turing.ListBlank.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ)) (Turing.ListBlank.hasEmptyc.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ))) (Turing.TM2to1.addBottom.{u4, u3} K Γ T))) b)))) -> (Exists.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} (Turing.TM1.Cfg.{max u3 u4, max (max (max u1 u2) u3) u4, u1} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u2, u1} K Γ Λ _inst_2) _inst_2) (fun (b : Turing.TM1.Cfg.{max u3 u4, max (max (max u1 u2) u3) u4, u1} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u2, u1} K Γ Λ _inst_2) _inst_2) => And (Turing.TM2to1.TrCfg.{u4, u3, u2, u1} K Γ Λ _inst_2 (Turing.TM2.stepAux.{u4, u3, u2, u1} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ _inst_2 (Turing.TM2to1.stRun.{u4, u3, u2, u1} K Γ Λ _inst_2 v S _inst_3) M T) b) (Turing.Reaches.{max (max u1 (max (max u1 u2) u3) u4) u3 u4} (Turing.TM1.Cfg.{max u3 u4, max (max (max u1 u2) u3) u4, u1} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u2, u1} K Γ Λ _inst_2) _inst_2) (Turing.TM1.step.{max u3 u4, max (max (max u1 u2) u3) u4, u1} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u2, u1} K Γ Λ _inst_2) _inst_2 (Turing.TM2to1.tr.{u4, u3, u2, u1} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ _inst_2 σ)) (Turing.TM1.stepAux.{max u4 u3, max (max (max u4 u3) u2) u1, u1} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u2, u1} K Γ Λ _inst_2) _inst_2 (Turing.TM2to1.trNormal.{u4, u3, u2, u1} K Γ Λ _inst_2 (Turing.TM2to1.stRun.{u4, u3, u2, u1} K Γ Λ _inst_2 v S _inst_3)) M (Turing.Tape.mk'.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (EmptyCollection.emptyCollection.{max u4 u3} (Turing.ListBlank.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ)) (Turing.ListBlank.hasEmptyc.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ))) (Turing.TM2to1.addBottom.{u4, u3} K Γ q))) b))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_respects_aux Turing.TM2to1.tr_respects_auxₓ'. -/
 theorem tr_respects_aux {q v T k} {S : ∀ k, List (Γ k)}
     (hT : ∀ k, ListBlank.map (proj k) T = ListBlank.mk ((S k).map some).reverse) (o : st_act k)
@@ -3803,10 +3782,7 @@ theorem tr_eval_dom (k) (L : List (Γ k)) : (TM1.eval tr (tr_init k L)).Dom ↔
 #align turing.TM2to1.tr_eval_dom Turing.TM2to1.tr_eval_dom
 
 /- warning: turing.TM2to1.tr_eval -> Turing.TM2to1.tr_eval is a dubious translation:
-lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] (M : Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ)) (k : K) (L : List.{u2} (Γ k)) {L₁ : Turing.ListBlank.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ)} {L₂ : List.{u2} (Γ k)}, (Membership.Mem.{max u1 u2, max u1 u2} (Turing.ListBlank.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ)) (Part.{max u1 u2} (Turing.ListBlank.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ))) (Part.hasMem.{max u1 u2} (Turing.ListBlank.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ))) L₁ (Turing.TM1.eval.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (Turing.TM2to1.Λ'.inhabited.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) _inst_3 (Turing.TM2to1.tr.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 M) (Turing.TM2to1.trInit.{u1, u2} K _inst_1 Γ k L))) -> (Membership.Mem.{u2, u2} (List.{u2} (Γ k)) (Part.{u2} (List.{u2} (Γ k))) (Part.hasMem.{u2} (List.{u2} (Γ k))) L₂ (Turing.TM2.eval.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ _inst_2 _inst_3 M k L)) -> (Exists.{max (succ u1) (succ u2)} (forall (k : K), List.{u2} (Γ k)) (fun (S : forall (k : K), List.{u2} (Γ k)) => Exists.{succ (max u1 u2)} (Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)))) (fun (L' : Turing.ListBlank.{max u1 u2} (forall (k : K), Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)))) => And (Eq.{succ (max u1 u2)} (Turing.ListBlank.{max u1 u2} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ)) (Turing.TM2to1.addBottom.{u1, u2} K _inst_1 Γ L') L₁) (And (forall (k : K), Eq.{succ u2} (Turing.ListBlank.{u2} (Option.{u2} (Γ k)) (Option.inhabited.{u2} (Γ k))) (Turing.ListBlank.map.{max u1 u2, u2} (forall (k : K), Option.{u2} (Γ k)) (Option.{u2} (Γ k)) (Pi.inhabited.{succ u1, succ u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x))) (Option.inhabited.{u2} (Γ k)) (Turing.proj.{u1, u2} K (fun (k : K) => Option.{u2} (Γ k)) (fun (x : K) => Option.inhabited.{u2} (Γ x)) k) L') (Turing.ListBlank.mk.{u2} (Option.{u2} (Γ k)) (Option.inhabited.{u2} (Γ k)) (List.reverse.{u2} (Option.{u2} (Γ k)) (List.map.{u2, u2} (Γ k) (Option.{u2} (Γ k)) (Option.some.{u2} (Γ k)) (S k))))) (Eq.{succ u2} (List.{u2} (Γ k)) (S k) L₂)))))
-but is expected to have type
-  forall {K : Type.{u3}} [_inst_1 : DecidableEq.{succ u3} K] {Γ : K -> Type.{u4}} {Λ : Type.{u1}} [_inst_2 : Inhabited.{succ u1} Λ] {σ : Type.{u2}} [_inst_3 : Inhabited.{succ u2} σ] (M : Λ -> (Turing.TM2.Stmt.{u3, u4, u1, u2} K Γ Λ σ)) (k : K) (L : List.{u4} (Γ k)) {L₁ : Turing.ListBlank.{max u4 u3} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ)} {L₂ : List.{u4} (Γ k)}, (Membership.mem.{max u3 u4, max u4 u3} (Turing.ListBlank.{max u4 u3} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ)) (Part.{max u4 u3} (Turing.ListBlank.{max u4 u3} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ))) (Part.instMembershipPart.{max u3 u4} (Turing.ListBlank.{max u4 u3} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ))) L₁ (Turing.TM1.eval.{max u4 u3, max (max (max u2 u1) u4) u3, u2} (Turing.TM2to1.Γ'.{u3, u4} K Γ) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K Γ) (Turing.TM2to1.Λ'.{u3, u4, u1, u2} K Γ Λ σ) σ (Turing.TM2to1.Λ'.inhabited.{u3, u4, u1, u2} K Γ Λ _inst_2 σ) _inst_3 (Turing.TM2to1.tr.{u3, u4, u1, u2} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ M) (Turing.TM2to1.trInit.{u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ k L))) -> (Membership.mem.{u4, u4} (List.{u4} (Γ k)) (Part.{u4} (List.{u4} (Γ k))) (Part.instMembershipPart.{u4} (List.{u4} (Γ k))) L₂ (Turing.TM2.eval.{u3, u4, u1, u2} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ _inst_2 _inst_3 M k L)) -> (Exists.{max (succ u3) (succ u4)} (forall (k : K), List.{u4} (Γ k)) (fun (S : forall (k : K), List.{u4} (Γ k)) => Exists.{max (succ u3) (succ u4)} (Turing.ListBlank.{max u3 u4} (forall (k : K), Option.{u4} (Γ k)) (instInhabitedForAll_1.{succ u3, succ u4} K (fun (k : K) => Option.{u4} (Γ k)) (fun (x : K) => instInhabitedOption.{u4} (Γ x)))) (fun (L' : Turing.ListBlank.{max u3 u4} (forall (k : K), Option.{u4} (Γ k)) (instInhabitedForAll_1.{succ u3, succ u4} K (fun (k : K) => Option.{u4} (Γ k)) (fun (x : K) => instInhabitedOption.{u4} (Γ x)))) => And (Eq.{max (succ u3) (succ u4)} (Turing.ListBlank.{max u4 u3} (Turing.TM2to1.Γ'.{u3, u4} K (fun (k : K) => Γ k)) (Turing.TM2to1.Γ'.inhabited.{u3, u4} K (fun (k : K) => Γ k))) (Turing.TM2to1.addBottom.{u3, u4} K (fun (k : K) => Γ k) L') L₁) (And (forall (k : K), Eq.{succ u4} (Turing.ListBlank.{u4} (Option.{u4} (Γ k)) (instInhabitedOption.{u4} (Γ k))) (Turing.ListBlank.map.{max u4 u3, u4} (forall (k : K), Option.{u4} (Γ k)) (Option.{u4} (Γ k)) (instInhabitedForAll_1.{succ u3, succ u4} K (fun (k : K) => Option.{u4} (Γ k)) (fun (x : K) => instInhabitedOption.{u4} (Γ x))) (instInhabitedOption.{u4} (Γ k)) (Turing.proj.{u3, u4} K (fun (k : K) => Option.{u4} (Γ k)) (fun (x : K) => instInhabitedOption.{u4} (Γ x)) k) L') (Turing.ListBlank.mk.{u4} (Option.{u4} (Γ k)) (instInhabitedOption.{u4} (Γ k)) (List.reverse.{u4} (Option.{u4} (Γ k)) (List.map.{u4, u4} (Γ k) (Option.{u4} (Γ k)) (Option.some.{u4} (Γ k)) (S k))))) (Eq.{succ u4} (List.{u4} (Γ k)) (S k) L₂)))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_eval Turing.TM2to1.tr_evalₓ'. -/
 theorem tr_eval (k) (L : List (Γ k)) {L₁ L₂} (H₁ : L₁ ∈ TM1.eval tr (tr_init k L))
     (H₂ : L₂ ∈ TM2.eval M k L) :
Diff
@@ -238,7 +238,7 @@ precondition `blank_extends` instead of `blank_rel`. -/
 @[elab_as_elim, reducible]
 protected def ListBlank.liftOn {Γ} [Inhabited Γ] {α} (l : ListBlank Γ) (f : List Γ → α)
     (H : ∀ a b, BlankExtends a b → f a = f b) : α :=
-  l.liftOn' f <| by rintro a b (h | h) <;> [exact H _ _ h, exact (H _ _ h).symm]
+  l.liftOn' f <| by rintro a b (h | h) <;> [exact H _ _ h;exact (H _ _ h).symm]
 #align turing.list_blank.lift_on Turing.ListBlank.liftOn
 -/
 
@@ -282,7 +282,7 @@ def ListBlank.tail {Γ} [Inhabited Γ] (l : ListBlank Γ) : ListBlank Γ :=
     (by
       rintro _ _ ⟨i, rfl⟩
       refine' Quotient.sound' (Or.inl _)
-      cases a <;> [· cases i <;> [exact ⟨0, rfl⟩, exact ⟨i, rfl⟩], exact ⟨i, rfl⟩])
+      cases a <;> [· cases i <;> [exact ⟨0, rfl⟩;exact ⟨i, rfl⟩];exact ⟨i, rfl⟩])
 #align turing.list_blank.tail Turing.ListBlank.tail
 -/
 
@@ -400,7 +400,7 @@ theorem ListBlank.ext {Γ} [Inhabited Γ] {L₁ L₂ : ListBlank Γ} :
     ListBlank.induction_on L₂ fun l₂ H =>
       by
       wlog h : l₁.length ≤ l₂.length
-      · cases le_total l₁.length l₂.length <;> [skip, symm] <;> apply_assumption <;> try assumption
+      · cases le_total l₁.length l₂.length <;> [skip;symm] <;> apply_assumption <;> try assumption
         intro
         rw [H]
       refine' Quotient.sound' (Or.inl ⟨l₂.length - l₁.length, _⟩)
@@ -494,7 +494,7 @@ Case conversion may be inaccurate. Consider using '#align turing.pointed_map.hea
 @[simp]
 theorem PointedMap.headI_map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ')
     (l : List Γ) : (l.map f).headI = f l.headI := by
-  cases l <;> [exact (pointed_map.map_pt f).symm, rfl]
+  cases l <;> [exact (pointed_map.map_pt f).symm;rfl]
 #align turing.pointed_map.head_map Turing.PointedMap.headI_map
 
 #print Turing.ListBlank.map /-
@@ -890,8 +890,8 @@ theorem Tape.move_right_nth {Γ} [Inhabited Γ] (T : Tape Γ) (i : ℤ) :
 @[simp]
 theorem Tape.move_right_n_head {Γ} [Inhabited Γ] (T : Tape Γ) (i : ℕ) :
     ((Tape.move Dir.right^[i]) T).headI = T.get? i := by
-  induction i generalizing T <;> [rfl,
-    simp only [*, tape.move_right_nth, Int.ofNat_succ, iterate_succ]]
+  induction i generalizing T <;>
+    [rfl;simp only [*, tape.move_right_nth, Int.ofNat_succ, iterate_succ]]
 #align turing.tape.move_right_n_head Turing.Tape.move_right_n_head
 -/
 
@@ -1866,7 +1866,7 @@ theorem stmts₁_supportsStmt_mono {S q₁ q₂} (h : q₁ ∈ stmts₁ q₂) (h
   induction' q₂ with _ q IH _ q IH _ q IH <;>
     simp only [stmts₁, supports_stmt, Finset.mem_insert, Finset.mem_union, Finset.mem_singleton] at
       h hs
-  iterate 3 rcases h with (rfl | h) <;> [exact hs, exact IH h hs]
+  iterate 3 rcases h with (rfl | h) <;> [exact hs;exact IH h hs]
   case branch p q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts[hs, IH₁ h hs.1, IH₂ h hs.2]
   case goto l => subst h; exact hs
   case halt => subst h; trivial
@@ -2598,7 +2598,7 @@ theorem tr_respects : Respects (step M) (step tr) fun c₁ c₂ => tr_cfg c₁ =
     case
       branch p q₁ q₂ IH₁ IH₂ =>
       simp only [tr_normal, step_aux_read dec enc0 encdec, step_aux]
-      cases p R.head v <;> [apply IH₂, apply IH₁]
+      cases p R.head v <;> [apply IH₂;apply IH₁]
     case
       goto l =>
       simp only [tr_normal, step_aux_read dec enc0 encdec, step_aux, tr_cfg, tr_tape_mk']
@@ -3031,7 +3031,7 @@ theorem stmts₁_supportsStmt_mono {S q₁ q₂} (h : q₁ ∈ stmts₁ q₂) (h
   induction' q₂ with _ _ q IH _ _ q IH _ _ q IH _ q IH <;>
     simp only [stmts₁, supports_stmt, Finset.mem_insert, Finset.mem_union, Finset.mem_singleton] at
       h hs
-  iterate 4 rcases h with (rfl | h) <;> [exact hs, exact IH h hs]
+  iterate 4 rcases h with (rfl | h) <;> [exact hs;exact IH h hs]
   case branch f q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts[hs, IH₁ h hs.1, IH₂ h hs.2]
   case goto l => subst h; exact hs
   case halt => subst h; trivial
@@ -3760,7 +3760,7 @@ theorem tr_respects : Respects (TM2.step M) (TM1.step tr) tr_cfg := fun c₁ c
   · exact tr_respects_aux M hT s @IH
   · exact IH _ hT
   · unfold TM2.step_aux tr_normal TM1.step_aux
-    cases p v <;> [exact IH₂ _ hT, exact IH₁ _ hT]
+    cases p v <;> [exact IH₂ _ hT;exact IH₁ _ hT]
   · exact ⟨_, ⟨_, hT⟩, refl_trans_gen.refl⟩
   · exact ⟨_, ⟨_, hT⟩, refl_trans_gen.refl⟩
 #align turing.TM2to1.tr_respects Turing.TM2to1.tr_respects
@@ -3849,7 +3849,7 @@ theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports tr (tr_supp S) :=
       rcases Finset.mem_biUnion.1 h with ⟨l, lS, h⟩
       have :=
         this _ (ss.2 l lS) fun x hx => Finset.mem_biUnion.2 ⟨_, lS, Finset.mem_insert_of_mem hx⟩
-      rcases Finset.mem_insert.1 h with (rfl | h) <;> [exact this.1, exact this.2 _ h]
+      rcases Finset.mem_insert.1 h with (rfl | h) <;> [exact this.1;exact this.2 _ h]
     clear h l'
     refine' stmt_st_rec _ _ _ _ _ <;> intros
     · -- stack op
@@ -3882,7 +3882,7 @@ theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports tr (tr_supp S) :=
       cases' IH₂ ss'.2 fun x hx => sub x <| Finset.mem_union_right _ hx with IH₂₁ IH₂₂
       refine' ⟨⟨IH₁₁, IH₂₁⟩, fun l h => _⟩
       rw [tr_stmts₁] at h
-      rcases Finset.mem_union.1 h with (h | h) <;> [exact IH₁₂ _ h, exact IH₂₂ _ h]
+      rcases Finset.mem_union.1 h with (h | h) <;> [exact IH₁₂ _ h;exact IH₂₂ _ h]
     · -- goto
       rw [tr_stmts₁]
       unfold TM2to1.tr_normal TM1.supports_stmt
Diff
@@ -1929,7 +1929,7 @@ theorem stmts_supportsStmt {M : Λ → stmt} {S q} (ss : supports M S) :
 lean 3 declaration is
   forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {σ : Type.{u3}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) {S : Finset.{u2} Λ}, (Turing.TM1.Supports.{u1, u2, u3} Γ _inst_1 Λ σ _inst_2 M S) -> (forall {c : Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ} {c' : Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ}, (Membership.Mem.{max u1 u2 u3, max u1 u2 u3} (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ) (Option.{max u1 u2 u3} (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ)) (Option.hasMem.{max u1 u2 u3} (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ)) c' (Turing.TM1.step.{u1, u2, u3} Γ _inst_1 Λ σ M c)) -> (Membership.Mem.{u2, u2} (Option.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Finset.hasMem.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u1, u2, u3} Γ _inst_1 Λ σ c) (coeFn.{succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (fun (_x : RelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) => (Finset.{u2} Λ) -> (Finset.{u2} (Option.{u2} Λ))) (RelEmbedding.hasCoeToFun.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) (Finset.insertNone.{u2} Λ) S)) -> (Membership.Mem.{u2, u2} (Option.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Finset.hasMem.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u1, u2, u3} Γ _inst_1 Λ σ c') (coeFn.{succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (fun (_x : RelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) => (Finset.{u2} Λ) -> (Finset.{u2} (Option.{u2} Λ))) (RelEmbedding.hasCoeToFun.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) (Finset.insertNone.{u2} Λ) S)))
 but is expected to have type
-  forall {Γ : Type.{u3}} [_inst_1 : Inhabited.{succ u3} Γ] {Λ : Type.{u2}} {σ : Type.{u1}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Λ -> (Turing.TM1.Stmt.{u3, u2, u1} Γ Λ σ)) {S : Finset.{u2} Λ}, (Turing.TM1.Supports.{u3, u2, u1} Γ Λ σ _inst_2 M S) -> (forall {c : Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ} {c' : Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ}, (Membership.mem.{max (max u3 u2) u1, max (max u1 u2) u3} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ) (Option.{max (max u1 u2) u3} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ)) (Option.instMembershipOption.{max (max u3 u2) u1} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ)) c' (Turing.TM1.step.{u3, u2, u1} Γ _inst_1 Λ σ M c)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u3, u2, u1} Γ _inst_1 Λ σ c) (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697))) (Finset.insertNone.{u2} Λ) S)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u3, u2, u1} Γ _inst_1 Λ σ c') (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697))) (Finset.insertNone.{u2} Λ) S)))
+  forall {Γ : Type.{u3}} [_inst_1 : Inhabited.{succ u3} Γ] {Λ : Type.{u2}} {σ : Type.{u1}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Λ -> (Turing.TM1.Stmt.{u3, u2, u1} Γ Λ σ)) {S : Finset.{u2} Λ}, (Turing.TM1.Supports.{u3, u2, u1} Γ Λ σ _inst_2 M S) -> (forall {c : Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ} {c' : Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ}, (Membership.mem.{max (max u3 u2) u1, max (max u1 u2) u3} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ) (Option.{max (max u1 u2) u3} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ)) (Option.instMembershipOption.{max (max u3 u2) u1} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ)) c' (Turing.TM1.step.{u3, u2, u1} Γ _inst_1 Λ σ M c)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.869 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u3, u2, u1} Γ _inst_1 Λ σ c) (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.869 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699))) (Finset.insertNone.{u2} Λ) S)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.869 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u3, u2, u1} Γ _inst_1 Λ σ c') (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.869 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699))) (Finset.insertNone.{u2} Λ) S)))
 Case conversion may be inaccurate. Consider using '#align turing.TM1.step_supports Turing.TM1.step_supportsₓ'. -/
 theorem step_supports (M : Λ → stmt) {S} (ss : supports M S) :
     ∀ {c c' : cfg}, c' ∈ step M c → c.l ∈ S.insertNone → c'.l ∈ S.insertNone
@@ -3092,7 +3092,7 @@ theorem stmts_supportsStmt {M : Λ → stmt} {S q} (ss : supports M S) :
 lean 3 declaration is
   forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} {σ : Type.{u4}} [_inst_2 : Inhabited.{succ u3} Λ] (M : Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) {S : Finset.{u3} Λ}, (Turing.TM2.Supports.{u1, u2, u3, u4} K _inst_1 Γ Λ σ _inst_2 M S) -> (forall {c : Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ} {c' : Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ}, (Membership.Mem.{max u1 u2 u3 u4, max u1 u2 u3 u4} (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ) (Option.{max u1 u2 u3 u4} (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) (Option.hasMem.{max u1 u2 u3 u4} (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) c' (Turing.TM2.step.{u1, u2, u3, u4} K _inst_1 Γ Λ σ M c)) -> (Membership.Mem.{u3, u3} (Option.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Finset.hasMem.{u3} (Option.{u3} Λ)) (Turing.TM2.Cfg.l.{u1, u2, u3, u4} K _inst_1 Γ Λ σ c) (coeFn.{succ u3, succ u3} (OrderEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ))) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ))))) (fun (_x : RelEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) => (Finset.{u3} Λ) -> (Finset.{u3} (Option.{u3} Λ))) (RelEmbedding.hasCoeToFun.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) (Finset.insertNone.{u3} Λ) S)) -> (Membership.Mem.{u3, u3} (Option.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Finset.hasMem.{u3} (Option.{u3} Λ)) (Turing.TM2.Cfg.l.{u1, u2, u3, u4} K _inst_1 Γ Λ σ c') (coeFn.{succ u3, succ u3} (OrderEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ))) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ))))) (fun (_x : RelEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) => (Finset.{u3} Λ) -> (Finset.{u3} (Option.{u3} Λ))) (RelEmbedding.hasCoeToFun.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) (Finset.insertNone.{u3} Λ) S)))
 but is expected to have type
-  forall {K : Type.{u4}} [_inst_1 : DecidableEq.{succ u4} K] {Γ : K -> Type.{u3}} {Λ : Type.{u2}} {σ : Type.{u1}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Λ -> (Turing.TM2.Stmt.{u4, u3, u2, u1} K Γ Λ σ)) {S : Finset.{u2} Λ}, (Turing.TM2.Supports.{u4, u3, u2, u1} K Γ Λ σ _inst_2 M S) -> (forall {c : Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ} {c' : Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ}, (Membership.mem.{max (max (max u4 u3) u2) u1, max (max (max u1 u2) u3) u4} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ) (Option.{max (max (max u1 u2) u3) u4} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ)) (Option.instMembershipOption.{max (max (max u4 u3) u2) u1} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ)) c' (Turing.TM2.step.{u4, u3, u2, u1} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ M c)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM2.Cfg.l.{u4, u3, u2, u1} K Γ Λ σ c) (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697))) (Finset.insertNone.{u2} Λ) S)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM2.Cfg.l.{u4, u3, u2, u1} K Γ Λ σ c') (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697))) (Finset.insertNone.{u2} Λ) S)))
+  forall {K : Type.{u4}} [_inst_1 : DecidableEq.{succ u4} K] {Γ : K -> Type.{u3}} {Λ : Type.{u2}} {σ : Type.{u1}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Λ -> (Turing.TM2.Stmt.{u4, u3, u2, u1} K Γ Λ σ)) {S : Finset.{u2} Λ}, (Turing.TM2.Supports.{u4, u3, u2, u1} K Γ Λ σ _inst_2 M S) -> (forall {c : Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ} {c' : Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ}, (Membership.mem.{max (max (max u4 u3) u2) u1, max (max (max u1 u2) u3) u4} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ) (Option.{max (max (max u1 u2) u3) u4} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ)) (Option.instMembershipOption.{max (max (max u4 u3) u2) u1} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ)) c' (Turing.TM2.step.{u4, u3, u2, u1} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ M c)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.869 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM2.Cfg.l.{u4, u3, u2, u1} K Γ Λ σ c) (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.869 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699))) (Finset.insertNone.{u2} Λ) S)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.869 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM2.Cfg.l.{u4, u3, u2, u1} K Γ Λ σ c') (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.869 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699))) (Finset.insertNone.{u2} Λ) S)))
 Case conversion may be inaccurate. Consider using '#align turing.TM2.step_supports Turing.TM2.step_supportsₓ'. -/
 theorem step_supports (M : Λ → stmt) {S} (ss : supports M S) :
     ∀ {c c' : cfg}, c' ∈ step M c → c.l ∈ S.insertNone → c'.l ∈ S.insertNone
Diff
@@ -1927,7 +1927,7 @@ theorem stmts_supportsStmt {M : Λ → stmt} {S q} (ss : supports M S) :
 
 /- warning: turing.TM1.step_supports -> Turing.TM1.step_supports is a dubious translation:
 lean 3 declaration is
-  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {σ : Type.{u3}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) {S : Finset.{u2} Λ}, (Turing.TM1.Supports.{u1, u2, u3} Γ _inst_1 Λ σ _inst_2 M S) -> (forall {c : Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ} {c' : Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ}, (Membership.Mem.{max u1 u2 u3, max u1 u2 u3} (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ) (Option.{max u1 u2 u3} (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ)) (Option.hasMem.{max u1 u2 u3} (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ)) c' (Turing.TM1.step.{u1, u2, u3} Γ _inst_1 Λ σ M c)) -> (Membership.Mem.{u2, u2} (Option.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Finset.hasMem.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u1, u2, u3} Γ _inst_1 Λ σ c) (coeFn.{succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (fun (_x : RelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) => (Finset.{u2} Λ) -> (Finset.{u2} (Option.{u2} Λ))) (RelEmbedding.hasCoeToFun.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) (Finset.insertNone.{u2} Λ) S)) -> (Membership.Mem.{u2, u2} (Option.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Finset.hasMem.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u1, u2, u3} Γ _inst_1 Λ σ c') (coeFn.{succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (fun (_x : RelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) => (Finset.{u2} Λ) -> (Finset.{u2} (Option.{u2} Λ))) (RelEmbedding.hasCoeToFun.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) (Finset.insertNone.{u2} Λ) S)))
+  forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {σ : Type.{u3}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) {S : Finset.{u2} Λ}, (Turing.TM1.Supports.{u1, u2, u3} Γ _inst_1 Λ σ _inst_2 M S) -> (forall {c : Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ} {c' : Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ}, (Membership.Mem.{max u1 u2 u3, max u1 u2 u3} (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ) (Option.{max u1 u2 u3} (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ)) (Option.hasMem.{max u1 u2 u3} (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ)) c' (Turing.TM1.step.{u1, u2, u3} Γ _inst_1 Λ σ M c)) -> (Membership.Mem.{u2, u2} (Option.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Finset.hasMem.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u1, u2, u3} Γ _inst_1 Λ σ c) (coeFn.{succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (fun (_x : RelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) => (Finset.{u2} Λ) -> (Finset.{u2} (Option.{u2} Λ))) (RelEmbedding.hasCoeToFun.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) (Finset.insertNone.{u2} Λ) S)) -> (Membership.Mem.{u2, u2} (Option.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Finset.hasMem.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u1, u2, u3} Γ _inst_1 Λ σ c') (coeFn.{succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (fun (_x : RelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) => (Finset.{u2} Λ) -> (Finset.{u2} (Option.{u2} Λ))) (RelEmbedding.hasCoeToFun.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toHasLe.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toHasLe.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) (Finset.insertNone.{u2} Λ) S)))
 but is expected to have type
   forall {Γ : Type.{u3}} [_inst_1 : Inhabited.{succ u3} Γ] {Λ : Type.{u2}} {σ : Type.{u1}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Λ -> (Turing.TM1.Stmt.{u3, u2, u1} Γ Λ σ)) {S : Finset.{u2} Λ}, (Turing.TM1.Supports.{u3, u2, u1} Γ Λ σ _inst_2 M S) -> (forall {c : Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ} {c' : Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ}, (Membership.mem.{max (max u3 u2) u1, max (max u1 u2) u3} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ) (Option.{max (max u1 u2) u3} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ)) (Option.instMembershipOption.{max (max u3 u2) u1} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ)) c' (Turing.TM1.step.{u3, u2, u1} Γ _inst_1 Λ σ M c)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u3, u2, u1} Γ _inst_1 Λ σ c) (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697))) (Finset.insertNone.{u2} Λ) S)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u3, u2, u1} Γ _inst_1 Λ σ c') (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697))) (Finset.insertNone.{u2} Λ) S)))
 Case conversion may be inaccurate. Consider using '#align turing.TM1.step_supports Turing.TM1.step_supportsₓ'. -/
@@ -3090,7 +3090,7 @@ theorem stmts_supportsStmt {M : Λ → stmt} {S q} (ss : supports M S) :
 
 /- warning: turing.TM2.step_supports -> Turing.TM2.step_supports is a dubious translation:
 lean 3 declaration is
-  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} {σ : Type.{u4}} [_inst_2 : Inhabited.{succ u3} Λ] (M : Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) {S : Finset.{u3} Λ}, (Turing.TM2.Supports.{u1, u2, u3, u4} K _inst_1 Γ Λ σ _inst_2 M S) -> (forall {c : Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ} {c' : Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ}, (Membership.Mem.{max u1 u2 u3 u4, max u1 u2 u3 u4} (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ) (Option.{max u1 u2 u3 u4} (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) (Option.hasMem.{max u1 u2 u3 u4} (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) c' (Turing.TM2.step.{u1, u2, u3, u4} K _inst_1 Γ Λ σ M c)) -> (Membership.Mem.{u3, u3} (Option.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Finset.hasMem.{u3} (Option.{u3} Λ)) (Turing.TM2.Cfg.l.{u1, u2, u3, u4} K _inst_1 Γ Λ σ c) (coeFn.{succ u3, succ u3} (OrderEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Preorder.toLE.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ))) (Preorder.toLE.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ))))) (fun (_x : RelEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toLE.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toLE.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) => (Finset.{u3} Λ) -> (Finset.{u3} (Option.{u3} Λ))) (RelEmbedding.hasCoeToFun.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toLE.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toLE.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) (Finset.insertNone.{u3} Λ) S)) -> (Membership.Mem.{u3, u3} (Option.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Finset.hasMem.{u3} (Option.{u3} Λ)) (Turing.TM2.Cfg.l.{u1, u2, u3, u4} K _inst_1 Γ Λ σ c') (coeFn.{succ u3, succ u3} (OrderEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Preorder.toLE.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ))) (Preorder.toLE.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ))))) (fun (_x : RelEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toLE.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toLE.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) => (Finset.{u3} Λ) -> (Finset.{u3} (Option.{u3} Λ))) (RelEmbedding.hasCoeToFun.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toLE.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toLE.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) (Finset.insertNone.{u3} Λ) S)))
+  forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} {σ : Type.{u4}} [_inst_2 : Inhabited.{succ u3} Λ] (M : Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) {S : Finset.{u3} Λ}, (Turing.TM2.Supports.{u1, u2, u3, u4} K _inst_1 Γ Λ σ _inst_2 M S) -> (forall {c : Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ} {c' : Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ}, (Membership.Mem.{max u1 u2 u3 u4, max u1 u2 u3 u4} (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ) (Option.{max u1 u2 u3 u4} (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) (Option.hasMem.{max u1 u2 u3 u4} (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) c' (Turing.TM2.step.{u1, u2, u3, u4} K _inst_1 Γ Λ σ M c)) -> (Membership.Mem.{u3, u3} (Option.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Finset.hasMem.{u3} (Option.{u3} Λ)) (Turing.TM2.Cfg.l.{u1, u2, u3, u4} K _inst_1 Γ Λ σ c) (coeFn.{succ u3, succ u3} (OrderEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ))) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ))))) (fun (_x : RelEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) => (Finset.{u3} Λ) -> (Finset.{u3} (Option.{u3} Λ))) (RelEmbedding.hasCoeToFun.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) (Finset.insertNone.{u3} Λ) S)) -> (Membership.Mem.{u3, u3} (Option.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Finset.hasMem.{u3} (Option.{u3} Λ)) (Turing.TM2.Cfg.l.{u1, u2, u3, u4} K _inst_1 Γ Λ σ c') (coeFn.{succ u3, succ u3} (OrderEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ))) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ))))) (fun (_x : RelEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) => (Finset.{u3} Λ) -> (Finset.{u3} (Option.{u3} Λ))) (RelEmbedding.hasCoeToFun.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toHasLe.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toHasLe.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) (Finset.insertNone.{u3} Λ) S)))
 but is expected to have type
   forall {K : Type.{u4}} [_inst_1 : DecidableEq.{succ u4} K] {Γ : K -> Type.{u3}} {Λ : Type.{u2}} {σ : Type.{u1}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Λ -> (Turing.TM2.Stmt.{u4, u3, u2, u1} K Γ Λ σ)) {S : Finset.{u2} Λ}, (Turing.TM2.Supports.{u4, u3, u2, u1} K Γ Λ σ _inst_2 M S) -> (forall {c : Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ} {c' : Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ}, (Membership.mem.{max (max (max u4 u3) u2) u1, max (max (max u1 u2) u3) u4} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ) (Option.{max (max (max u1 u2) u3) u4} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ)) (Option.instMembershipOption.{max (max (max u4 u3) u2) u1} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ)) c' (Turing.TM2.step.{u4, u3, u2, u1} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ M c)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM2.Cfg.l.{u4, u3, u2, u1} K Γ Λ σ c) (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697))) (Finset.insertNone.{u2} Λ) S)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM2.Cfg.l.{u4, u3, u2, u1} K Γ Λ σ c') (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697))) (Finset.insertNone.{u2} Λ) S)))
 Case conversion may be inaccurate. Consider using '#align turing.TM2.step_supports Turing.TM2.step_supportsₓ'. -/
Diff
@@ -3511,7 +3511,7 @@ def trNormal : stmt₂ → stmt₁
 lean 3 declaration is
   forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] {k : K} (s : Turing.TM2to1.StAct.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k) (q : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ), Eq.{max (succ (max u1 u2)) (succ (max u1 u2 u3 u4)) (succ u4)} (Turing.TM1.Stmt.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) (Turing.TM2to1.trNormal.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 (Turing.TM2to1.stRun.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q)) (Turing.TM1.Stmt.goto.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (fun (_x : Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (_x : σ) => Turing.TM2to1.Λ'.go.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q))
 but is expected to have type
-  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u1}} {Λ : Type.{u2}} {_inst_2 : K} (σ : Turing.TM2to1.StAct.{u4, u3, u2} K _inst_1 Λ _inst_2) (_inst_3 : Turing.TM2.Stmt.{u4, u3, u1, u2} K _inst_1 Γ Λ), Eq.{max (max (max (succ u4) (succ u3)) (succ u1)) (succ u2)} (Turing.TM1.Stmt.{max u3 u4, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ) (Turing.TM2to1.trNormal.{u4, u3, u1, u2} K _inst_1 Γ Λ (Turing.TM2to1.stRun.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Turing.TM1.Stmt.goto.{max u4 u3, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ (fun (x._@.Mathlib.Computability.TuringMachine._hyg.57723 : Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (x._@.Mathlib.Computability.TuringMachine._hyg.57725 : Λ) => Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3))
+  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u1}} {Λ : Type.{u2}} {_inst_2 : K} (σ : Turing.TM2to1.StAct.{u4, u3, u2} K _inst_1 Λ _inst_2) (_inst_3 : Turing.TM2.Stmt.{u4, u3, u1, u2} K _inst_1 Γ Λ), Eq.{max (max (max (succ u4) (succ u3)) (succ u1)) (succ u2)} (Turing.TM1.Stmt.{max u3 u4, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ) (Turing.TM2to1.trNormal.{u4, u3, u1, u2} K _inst_1 Γ Λ (Turing.TM2to1.stRun.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Turing.TM1.Stmt.goto.{max u4 u3, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ (fun (x._@.Mathlib.Computability.TuringMachine._hyg.57719 : Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (x._@.Mathlib.Computability.TuringMachine._hyg.57721 : Λ) => Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3))
 Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_normal_run Turing.TM2to1.trNormal_runₓ'. -/
 theorem trNormal_run {k} (s q) : tr_normal (st_run s q) = goto fun _ _ => go k s q := by
   rcases s with (_ | _ | _) <;> rfl
Diff
@@ -1881,7 +1881,7 @@ Case conversion may be inaccurate. Consider using '#align turing.TM1.stmts Turin
 /-- The set of all statements in a turing machine, plus one extra value `none` representing the
 halt state. This is used in the TM1 to TM0 reduction. -/
 noncomputable def stmts (M : Λ → stmt) (S : Finset Λ) : Finset (Option stmt) :=
-  (S.bunionᵢ fun q => stmts₁ (M q)).insertNone
+  (S.biUnion fun q => stmts₁ (M q)).insertNone
 #align turing.TM1.stmts Turing.TM1.stmts
 
 /- warning: turing.TM1.stmts_trans -> Turing.TM1.stmts_trans is a dubious translation:
@@ -1892,7 +1892,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align turing.TM1.stmts_trans Turing.TM1.stmts_transₓ'. -/
 theorem stmts_trans {M : Λ → stmt} {S q₁ q₂} (h₁ : q₁ ∈ stmts₁ q₂) :
     some q₂ ∈ stmts M S → some q₁ ∈ stmts M S := by
-  simp only [stmts, Finset.mem_insertNone, Finset.mem_bunionᵢ, Option.mem_def, forall_eq',
+  simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, forall_eq',
       exists_imp] <;>
     exact fun l ls h₂ => ⟨_, ls, stmts₁_trans h₂ h₁⟩
 #align turing.TM1.stmts_trans Turing.TM1.stmts_trans
@@ -1920,7 +1920,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align turing.TM1.stmts_supports_stmt Turing.TM1.stmts_supportsStmtₓ'. -/
 theorem stmts_supportsStmt {M : Λ → stmt} {S q} (ss : supports M S) :
     some q ∈ stmts M S → supports_stmt S q := by
-  simp only [stmts, Finset.mem_insertNone, Finset.mem_bunionᵢ, Option.mem_def, forall_eq',
+  simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, forall_eq',
       exists_imp] <;>
     exact fun l ls h => stmts₁_supports_stmt_mono h (ss.2 _ ls)
 #align turing.TM1.stmts_supports_stmt Turing.TM1.stmts_supportsStmt
@@ -2138,7 +2138,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align turing.TM1to0.tr_supports Turing.TM1to0.tr_supportsₓ'. -/
 theorem tr_supports {S : Finset Λ} (ss : TM1.Supports M S) : TM0.Supports tr ↑(tr_stmts S) :=
   ⟨Finset.mem_product.2
-      ⟨Finset.some_mem_insertNone.2 (Finset.mem_bunionᵢ.2 ⟨_, ss.1, TM1.stmts₁_self⟩),
+      ⟨Finset.some_mem_insertNone.2 (Finset.mem_biUnion.2 ⟨_, ss.1, TM1.stmts₁_self⟩),
         Finset.mem_univ _⟩,
     fun q a q' s h₁ h₂ => by
     rcases q with ⟨_ | q, v⟩; · cases h₁
@@ -2171,7 +2171,7 @@ theorem tr_supports {S : Finset Λ} (ss : TM1.Supports M S) : TM0.Supports tr 
         unfold TM1.stmts₁
         exact Finset.mem_insert_of_mem (Finset.mem_union_left _ TM1.stmts₁_self)
     case goto l => cases h₁;
-      exact Finset.some_mem_insertNone.2 (Finset.mem_bunionᵢ.2 ⟨_, hs _ _, TM1.stmts₁_self⟩)
+      exact Finset.some_mem_insertNone.2 (Finset.mem_biUnion.2 ⟨_, hs _ _, TM1.stmts₁_self⟩)
     case halt => cases h₁⟩
 #align turing.TM1to0.tr_supports Turing.TM1to0.tr_supports
 
@@ -2641,7 +2641,7 @@ Case conversion may be inaccurate. Consider using '#align turing.TM1to1.tr_supp
 /-- The set of accessible machine states, assuming that the input machine is supported on `S`,
 are the normal states embedded from `S`, plus all write states accessible from these states. -/
 noncomputable def trSupp (S : Finset Λ) : Finset Λ' :=
-  S.bunionᵢ fun l => insert (Λ'.normal l) (writes (M l))
+  S.biUnion fun l => insert (Λ'.normal l) (writes (M l))
 #align turing.TM1to1.tr_supp Turing.TM1to1.trSupp
 
 /- warning: turing.TM1to1.tr_supports -> Turing.TM1to1.tr_supports is a dubious translation:
@@ -2651,7 +2651,7 @@ but is expected to have type
   forall {Γ : Type.{u2}} {_inst_1 : Type.{u3}} [Λ : Inhabited.{succ u3} _inst_1] {_inst_2 : Type.{u1}} {σ : Nat} {_inst_3 : Γ -> (Vector.{0} Bool σ)} (n : (Vector.{0} Bool σ) -> Γ) (enc : _inst_1 -> (Turing.TM1.Stmt.{u2, u3, u1} Γ _inst_1 _inst_2)) [dec : Fintype.{u2} Γ] {M : Finset.{u3} _inst_1}, (Turing.TM1.Supports.{u2, u3, u1} Γ _inst_1 _inst_2 Λ enc M) -> (Turing.TM1.Supports.{0, max (max u1 u3) u2, u1} Bool (Turing.TM1to1.Λ'.{u2, u3, u1} Γ _inst_1 _inst_2) _inst_2 (Turing.TM1to1.instInhabitedΛ'.{u2, u3, u1} Γ _inst_1 Λ _inst_2) (Turing.TM1to1.tr.{u2, u3, u1} Γ _inst_1 _inst_2 σ _inst_3 n enc) (Turing.TM1to1.trSupp.{u2, u3, u1} Γ _inst_1 _inst_2 enc dec M))
 Case conversion may be inaccurate. Consider using '#align turing.TM1to1.tr_supports Turing.TM1to1.tr_supportsₓ'. -/
 theorem tr_supports {S} (ss : Supports M S) : Supports tr (tr_supp S) :=
-  ⟨Finset.mem_bunionᵢ.2 ⟨_, ss.1, Finset.mem_insert_self _ _⟩, fun q h =>
+  ⟨Finset.mem_biUnion.2 ⟨_, ss.1, Finset.mem_insert_self _ _⟩, fun q h =>
     by
     suffices
       ∀ q,
@@ -2660,9 +2660,9 @@ theorem tr_supports {S} (ss : Supports M S) : Supports tr (tr_supp S) :=
             supports_stmt (tr_supp M S) (tr_normal dec q) ∧
               ∀ q' ∈ writes q, supports_stmt (tr_supp M S) (tr enc dec M q')
       by
-      rcases Finset.mem_bunionᵢ.1 h with ⟨l, hl, h⟩
+      rcases Finset.mem_biUnion.1 h with ⟨l, hl, h⟩
       have :=
-        this _ (ss.2 _ hl) fun q' hq => Finset.mem_bunionᵢ.2 ⟨_, hl, Finset.mem_insert_of_mem hq⟩
+        this _ (ss.2 _ hl) fun q' hq => Finset.mem_biUnion.2 ⟨_, hl, Finset.mem_insert_of_mem hq⟩
       rcases Finset.mem_insert.1 h with (rfl | h)
       exacts[this.1, this.2 _ h]
     intro q hs hw
@@ -2693,7 +2693,7 @@ theorem tr_supports {S} (ss : Supports M S) : Supports tr (tr_supp S) :=
     case goto l =>
       refine' ⟨_, fun _ => False.elim⟩
       refine' supports_stmt_read _ fun a _ s => _
-      exact Finset.mem_bunionᵢ.2 ⟨_, hs _ _, Finset.mem_insert_self _ _⟩
+      exact Finset.mem_biUnion.2 ⟨_, hs _ _, Finset.mem_insert_self _ _⟩
     case halt =>
       refine' ⟨_, fun _ => False.elim⟩
       simp only [supports_stmt, supports_stmt_move, tr_normal]⟩
@@ -3045,7 +3045,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align turing.TM2.stmts Turing.TM2.stmtsₓ'. -/
 /-- The set of statements accessible from initial set `S` of labels. -/
 noncomputable def stmts (M : Λ → stmt) (S : Finset Λ) : Finset (Option stmt) :=
-  (S.bunionᵢ fun q => stmts₁ (M q)).insertNone
+  (S.biUnion fun q => stmts₁ (M q)).insertNone
 #align turing.TM2.stmts Turing.TM2.stmts
 
 /- warning: turing.TM2.stmts_trans -> Turing.TM2.stmts_trans is a dubious translation:
@@ -3056,7 +3056,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align turing.TM2.stmts_trans Turing.TM2.stmts_transₓ'. -/
 theorem stmts_trans {M : Λ → stmt} {S q₁ q₂} (h₁ : q₁ ∈ stmts₁ q₂) :
     some q₂ ∈ stmts M S → some q₁ ∈ stmts M S := by
-  simp only [stmts, Finset.mem_insertNone, Finset.mem_bunionᵢ, Option.mem_def, forall_eq',
+  simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, forall_eq',
       exists_imp] <;>
     exact fun l ls h₂ => ⟨_, ls, stmts₁_trans h₂ h₁⟩
 #align turing.TM2.stmts_trans Turing.TM2.stmts_trans
@@ -3083,7 +3083,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align turing.TM2.stmts_supports_stmt Turing.TM2.stmts_supportsStmtₓ'. -/
 theorem stmts_supportsStmt {M : Λ → stmt} {S q} (ss : supports M S) :
     some q ∈ stmts M S → supports_stmt S q := by
-  simp only [stmts, Finset.mem_insertNone, Finset.mem_bunionᵢ, Option.mem_def, forall_eq',
+  simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, forall_eq',
       exists_imp] <;>
     exact fun l ls h => stmts₁_supports_stmt_mono h (ss.2 _ ls)
 #align turing.TM2.stmts_supports_stmt Turing.TM2.stmts_supportsStmt
@@ -3829,7 +3829,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_supp Turing.TM2to1.trSuppₓ'. -/
 /-- The support of a set of TM2 states in the TM2 emulator. -/
 noncomputable def trSupp (S : Finset Λ) : Finset Λ' :=
-  S.bunionᵢ fun l => insert (normal l) (tr_stmts₁ (M l))
+  S.biUnion fun l => insert (normal l) (tr_stmts₁ (M l))
 #align turing.TM2to1.tr_supp Turing.TM2to1.trSupp
 
 /- warning: turing.TM2to1.tr_supports -> Turing.TM2to1.tr_supports is a dubious translation:
@@ -3839,16 +3839,16 @@ but is expected to have type
   forall {K : Type.{u3}} [_inst_1 : DecidableEq.{succ u3} K] {Γ : K -> Type.{u2}} {Λ : Type.{u4}} [_inst_2 : Inhabited.{succ u4} Λ] {σ : Type.{u1}} (_inst_3 : Λ -> (Turing.TM2.Stmt.{u3, u2, u4, u1} K Γ Λ σ)) {M : Finset.{u4} Λ}, (Turing.TM2.Supports.{u3, u2, u4, u1} K Γ Λ σ _inst_2 _inst_3 M) -> (Turing.TM1.Supports.{max u2 u3, max (max (max u1 u4) u2) u3, u1} (Turing.TM2to1.Γ'.{u3, u2} K Γ) (Turing.TM2to1.Λ'.{u3, u2, u4, u1} K Γ Λ σ) σ (Turing.TM2to1.Λ'.inhabited.{u3, u2, u4, u1} K Γ Λ _inst_2 σ) (Turing.TM2to1.tr.{u3, u2, u4, u1} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ _inst_3) (Turing.TM2to1.trSupp.{u3, u2, u4, u1} K Γ Λ σ _inst_3 M))
 Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_supports Turing.TM2to1.tr_supportsₓ'. -/
 theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports tr (tr_supp S) :=
-  ⟨Finset.mem_bunionᵢ.2 ⟨_, ss.1, Finset.mem_insert.2 <| Or.inl rfl⟩, fun l' h =>
+  ⟨Finset.mem_biUnion.2 ⟨_, ss.1, Finset.mem_insert.2 <| Or.inl rfl⟩, fun l' h =>
     by
     suffices
       ∀ (q) (ss' : TM2.supports_stmt S q) (sub : ∀ x ∈ tr_stmts₁ q, x ∈ tr_supp M S),
         TM1.supports_stmt (tr_supp M S) (tr_normal q) ∧
           ∀ l' ∈ tr_stmts₁ q, TM1.supports_stmt (tr_supp M S) (tr M l')
       by
-      rcases Finset.mem_bunionᵢ.1 h with ⟨l, lS, h⟩
+      rcases Finset.mem_biUnion.1 h with ⟨l, lS, h⟩
       have :=
-        this _ (ss.2 l lS) fun x hx => Finset.mem_bunionᵢ.2 ⟨_, lS, Finset.mem_insert_of_mem hx⟩
+        this _ (ss.2 l lS) fun x hx => Finset.mem_biUnion.2 ⟨_, lS, Finset.mem_insert_of_mem hx⟩
       rcases Finset.mem_insert.1 h with (rfl | h) <;> [exact this.1, exact this.2 _ h]
     clear h l'
     refine' stmt_st_rec _ _ _ _ _ <;> intros
@@ -3888,7 +3888,7 @@ theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports tr (tr_supp S) :=
       unfold TM2to1.tr_normal TM1.supports_stmt
       unfold TM2.supports_stmt at ss'
       exact
-        ⟨fun _ v => Finset.mem_bunionᵢ.2 ⟨_, ss' v, Finset.mem_insert_self _ _⟩, fun _ =>
+        ⟨fun _ v => Finset.mem_biUnion.2 ⟨_, ss' v, Finset.mem_insert_self _ _⟩, fun _ =>
           False.elim⟩
     · exact ⟨trivial, fun _ => False.elim⟩⟩
 #align turing.TM2to1.tr_supports Turing.TM2to1.tr_supports
Diff
@@ -3511,7 +3511,7 @@ def trNormal : stmt₂ → stmt₁
 lean 3 declaration is
   forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] {k : K} (s : Turing.TM2to1.StAct.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k) (q : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ), Eq.{max (succ (max u1 u2)) (succ (max u1 u2 u3 u4)) (succ u4)} (Turing.TM1.Stmt.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) (Turing.TM2to1.trNormal.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 (Turing.TM2to1.stRun.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q)) (Turing.TM1.Stmt.goto.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (fun (_x : Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (_x : σ) => Turing.TM2to1.Λ'.go.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q))
 but is expected to have type
-  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u1}} {Λ : Type.{u2}} {_inst_2 : K} (σ : Turing.TM2to1.StAct.{u4, u3, u2} K _inst_1 Λ _inst_2) (_inst_3 : Turing.TM2.Stmt.{u4, u3, u1, u2} K _inst_1 Γ Λ), Eq.{max (max (max (succ u4) (succ u3)) (succ u1)) (succ u2)} (Turing.TM1.Stmt.{max u3 u4, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ) (Turing.TM2to1.trNormal.{u4, u3, u1, u2} K _inst_1 Γ Λ (Turing.TM2to1.stRun.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Turing.TM1.Stmt.goto.{max u4 u3, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ (fun (x._@.Mathlib.Computability.TuringMachine._hyg.57672 : Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (x._@.Mathlib.Computability.TuringMachine._hyg.57674 : Λ) => Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3))
+  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u1}} {Λ : Type.{u2}} {_inst_2 : K} (σ : Turing.TM2to1.StAct.{u4, u3, u2} K _inst_1 Λ _inst_2) (_inst_3 : Turing.TM2.Stmt.{u4, u3, u1, u2} K _inst_1 Γ Λ), Eq.{max (max (max (succ u4) (succ u3)) (succ u1)) (succ u2)} (Turing.TM1.Stmt.{max u3 u4, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ) (Turing.TM2to1.trNormal.{u4, u3, u1, u2} K _inst_1 Γ Λ (Turing.TM2to1.stRun.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Turing.TM1.Stmt.goto.{max u4 u3, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ (fun (x._@.Mathlib.Computability.TuringMachine._hyg.57723 : Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (x._@.Mathlib.Computability.TuringMachine._hyg.57725 : Λ) => Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3))
 Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_normal_run Turing.TM2to1.trNormal_runₓ'. -/
 theorem trNormal_run {k} (s q) : tr_normal (st_run s q) = goto fun _ _ => go k s q := by
   rcases s with (_ | _ | _) <;> rfl
Diff
@@ -1929,7 +1929,7 @@ theorem stmts_supportsStmt {M : Λ → stmt} {S q} (ss : supports M S) :
 lean 3 declaration is
   forall {Γ : Type.{u1}} [_inst_1 : Inhabited.{succ u1} Γ] {Λ : Type.{u2}} {σ : Type.{u3}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Λ -> (Turing.TM1.Stmt.{u1, u2, u3} Γ _inst_1 Λ σ)) {S : Finset.{u2} Λ}, (Turing.TM1.Supports.{u1, u2, u3} Γ _inst_1 Λ σ _inst_2 M S) -> (forall {c : Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ} {c' : Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ}, (Membership.Mem.{max u1 u2 u3, max u1 u2 u3} (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ) (Option.{max u1 u2 u3} (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ)) (Option.hasMem.{max u1 u2 u3} (Turing.TM1.Cfg.{u1, u2, u3} Γ _inst_1 Λ σ)) c' (Turing.TM1.step.{u1, u2, u3} Γ _inst_1 Λ σ M c)) -> (Membership.Mem.{u2, u2} (Option.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Finset.hasMem.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u1, u2, u3} Γ _inst_1 Λ σ c) (coeFn.{succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (fun (_x : RelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) => (Finset.{u2} Λ) -> (Finset.{u2} (Option.{u2} Λ))) (RelEmbedding.hasCoeToFun.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) (Finset.insertNone.{u2} Λ) S)) -> (Membership.Mem.{u2, u2} (Option.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Finset.hasMem.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u1, u2, u3} Γ _inst_1 Λ σ c') (coeFn.{succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (fun (_x : RelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) => (Finset.{u2} Λ) -> (Finset.{u2} (Option.{u2} Λ))) (RelEmbedding.hasCoeToFun.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ)))) (LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))))) (Finset.insertNone.{u2} Λ) S)))
 but is expected to have type
-  forall {Γ : Type.{u3}} [_inst_1 : Inhabited.{succ u3} Γ] {Λ : Type.{u2}} {σ : Type.{u1}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Λ -> (Turing.TM1.Stmt.{u3, u2, u1} Γ Λ σ)) {S : Finset.{u2} Λ}, (Turing.TM1.Supports.{u3, u2, u1} Γ Λ σ _inst_2 M S) -> (forall {c : Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ} {c' : Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ}, (Membership.mem.{max (max u3 u2) u1, max (max u1 u2) u3} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ) (Option.{max (max u1 u2) u3} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ)) (Option.instMembershipOption.{max (max u3 u2) u1} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ)) c' (Turing.TM1.step.{u3, u2, u1} Γ _inst_1 Λ σ M c)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u3, u2, u1} Γ _inst_1 Λ σ c) (FunLike.coe.{succ u2, succ u2, succ u2} (Function.Embedding.{succ u2, succ u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (EmbeddingLike.toFunLike.{succ u2, succ u2, succ u2} (Function.Embedding.{succ u2, succ u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Function.instEmbeddingLikeEmbedding.{succ u2, succ u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)))) (RelEmbedding.toEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (Finset.insertNone.{u2} Λ)) S)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u3, u2, u1} Γ _inst_1 Λ σ c') (FunLike.coe.{succ u2, succ u2, succ u2} (Function.Embedding.{succ u2, succ u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (EmbeddingLike.toFunLike.{succ u2, succ u2, succ u2} (Function.Embedding.{succ u2, succ u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Function.instEmbeddingLikeEmbedding.{succ u2, succ u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)))) (RelEmbedding.toEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (Finset.insertNone.{u2} Λ)) S)))
+  forall {Γ : Type.{u3}} [_inst_1 : Inhabited.{succ u3} Γ] {Λ : Type.{u2}} {σ : Type.{u1}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Λ -> (Turing.TM1.Stmt.{u3, u2, u1} Γ Λ σ)) {S : Finset.{u2} Λ}, (Turing.TM1.Supports.{u3, u2, u1} Γ Λ σ _inst_2 M S) -> (forall {c : Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ} {c' : Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ}, (Membership.mem.{max (max u3 u2) u1, max (max u1 u2) u3} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ) (Option.{max (max u1 u2) u3} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ)) (Option.instMembershipOption.{max (max u3 u2) u1} (Turing.TM1.Cfg.{u3, u2, u1} Γ _inst_1 Λ σ)) c' (Turing.TM1.step.{u3, u2, u1} Γ _inst_1 Λ σ M c)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u3, u2, u1} Γ _inst_1 Λ σ c) (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697))) (Finset.insertNone.{u2} Λ) S)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM1.Cfg.l.{u3, u2, u1} Γ _inst_1 Λ σ c') (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697))) (Finset.insertNone.{u2} Λ) S)))
 Case conversion may be inaccurate. Consider using '#align turing.TM1.step_supports Turing.TM1.step_supportsₓ'. -/
 theorem step_supports (M : Λ → stmt) {S} (ss : supports M S) :
     ∀ {c c' : cfg}, c' ∈ step M c → c.l ∈ S.insertNone → c'.l ∈ S.insertNone
@@ -3092,7 +3092,7 @@ theorem stmts_supportsStmt {M : Λ → stmt} {S q} (ss : supports M S) :
 lean 3 declaration is
   forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} {σ : Type.{u4}} [_inst_2 : Inhabited.{succ u3} Λ] (M : Λ -> (Turing.TM2.Stmt.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) {S : Finset.{u3} Λ}, (Turing.TM2.Supports.{u1, u2, u3, u4} K _inst_1 Γ Λ σ _inst_2 M S) -> (forall {c : Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ} {c' : Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ}, (Membership.Mem.{max u1 u2 u3 u4, max u1 u2 u3 u4} (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ) (Option.{max u1 u2 u3 u4} (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) (Option.hasMem.{max u1 u2 u3 u4} (Turing.TM2.Cfg.{u1, u2, u3, u4} K _inst_1 Γ Λ σ)) c' (Turing.TM2.step.{u1, u2, u3, u4} K _inst_1 Γ Λ σ M c)) -> (Membership.Mem.{u3, u3} (Option.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Finset.hasMem.{u3} (Option.{u3} Λ)) (Turing.TM2.Cfg.l.{u1, u2, u3, u4} K _inst_1 Γ Λ σ c) (coeFn.{succ u3, succ u3} (OrderEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Preorder.toLE.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ))) (Preorder.toLE.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ))))) (fun (_x : RelEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toLE.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toLE.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) => (Finset.{u3} Λ) -> (Finset.{u3} (Option.{u3} Λ))) (RelEmbedding.hasCoeToFun.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toLE.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toLE.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) (Finset.insertNone.{u3} Λ) S)) -> (Membership.Mem.{u3, u3} (Option.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Finset.hasMem.{u3} (Option.{u3} Λ)) (Turing.TM2.Cfg.l.{u1, u2, u3, u4} K _inst_1 Γ Λ σ c') (coeFn.{succ u3, succ u3} (OrderEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (Preorder.toLE.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ))) (Preorder.toLE.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ))))) (fun (_x : RelEmbedding.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toLE.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toLE.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) => (Finset.{u3} Λ) -> (Finset.{u3} (Option.{u3} Λ))) (RelEmbedding.hasCoeToFun.{u3, u3} (Finset.{u3} Λ) (Finset.{u3} (Option.{u3} Λ)) (LE.le.{u3} (Finset.{u3} Λ) (Preorder.toLE.{u3} (Finset.{u3} Λ) (PartialOrder.toPreorder.{u3} (Finset.{u3} Λ) (Finset.partialOrder.{u3} Λ)))) (LE.le.{u3} (Finset.{u3} (Option.{u3} Λ)) (Preorder.toLE.{u3} (Finset.{u3} (Option.{u3} Λ)) (PartialOrder.toPreorder.{u3} (Finset.{u3} (Option.{u3} Λ)) (Finset.partialOrder.{u3} (Option.{u3} Λ)))))) (Finset.insertNone.{u3} Λ) S)))
 but is expected to have type
-  forall {K : Type.{u4}} [_inst_1 : DecidableEq.{succ u4} K] {Γ : K -> Type.{u3}} {Λ : Type.{u2}} {σ : Type.{u1}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Λ -> (Turing.TM2.Stmt.{u4, u3, u2, u1} K Γ Λ σ)) {S : Finset.{u2} Λ}, (Turing.TM2.Supports.{u4, u3, u2, u1} K Γ Λ σ _inst_2 M S) -> (forall {c : Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ} {c' : Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ}, (Membership.mem.{max (max (max u4 u3) u2) u1, max (max (max u1 u2) u3) u4} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ) (Option.{max (max (max u1 u2) u3) u4} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ)) (Option.instMembershipOption.{max (max (max u4 u3) u2) u1} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ)) c' (Turing.TM2.step.{u4, u3, u2, u1} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ M c)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM2.Cfg.l.{u4, u3, u2, u1} K Γ Λ σ c) (FunLike.coe.{succ u2, succ u2, succ u2} (Function.Embedding.{succ u2, succ u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (EmbeddingLike.toFunLike.{succ u2, succ u2, succ u2} (Function.Embedding.{succ u2, succ u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Function.instEmbeddingLikeEmbedding.{succ u2, succ u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)))) (RelEmbedding.toEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (Finset.insertNone.{u2} Λ)) S)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM2.Cfg.l.{u4, u3, u2, u1} K Γ Λ σ c') (FunLike.coe.{succ u2, succ u2, succ u2} (Function.Embedding.{succ u2, succ u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (EmbeddingLike.toFunLike.{succ u2, succ u2, succ u2} (Function.Embedding.{succ u2, succ u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Function.instEmbeddingLikeEmbedding.{succ u2, succ u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)))) (RelEmbedding.toEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (Finset.insertNone.{u2} Λ)) S)))
+  forall {K : Type.{u4}} [_inst_1 : DecidableEq.{succ u4} K] {Γ : K -> Type.{u3}} {Λ : Type.{u2}} {σ : Type.{u1}} [_inst_2 : Inhabited.{succ u2} Λ] (M : Λ -> (Turing.TM2.Stmt.{u4, u3, u2, u1} K Γ Λ σ)) {S : Finset.{u2} Λ}, (Turing.TM2.Supports.{u4, u3, u2, u1} K Γ Λ σ _inst_2 M S) -> (forall {c : Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ} {c' : Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ}, (Membership.mem.{max (max (max u4 u3) u2) u1, max (max (max u1 u2) u3) u4} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ) (Option.{max (max (max u1 u2) u3) u4} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ)) (Option.instMembershipOption.{max (max (max u4 u3) u2) u1} (Turing.TM2.Cfg.{u4, u3, u2, u1} K Γ Λ σ)) c' (Turing.TM2.step.{u4, u3, u2, u1} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ M c)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM2.Cfg.l.{u4, u3, u2, u1} K Γ Λ σ c) (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697))) (Finset.insertNone.{u2} Λ) S)) -> (Membership.mem.{u2, u2} (Option.{u2} Λ) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) S) (Finset.instMembershipFinset.{u2} (Option.{u2} Λ)) (Turing.TM2.Cfg.l.{u4, u3, u2, u1} K Γ Λ σ c') (FunLike.coe.{succ u2, succ u2, succ u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (fun (_x : Finset.{u2} Λ) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : Finset.{u2} Λ) => Finset.{u2} (Option.{u2} Λ)) _x) (RelHomClass.toFunLike.{u2, u2, u2} (OrderEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ))))) (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (RelEmbedding.instRelHomClassRelEmbedding.{u2, u2} (Finset.{u2} Λ) (Finset.{u2} (Option.{u2} Λ)) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Finset.{u2} Λ) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Finset.{u2} Λ) => LE.le.{u2} (Finset.{u2} Λ) (Preorder.toLE.{u2} (Finset.{u2} Λ) (PartialOrder.toPreorder.{u2} (Finset.{u2} Λ) (Finset.partialOrder.{u2} Λ))) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Finset.{u2} (Option.{u2} Λ)) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Finset.{u2} (Option.{u2} Λ)) => LE.le.{u2} (Finset.{u2} (Option.{u2} Λ)) (Preorder.toLE.{u2} (Finset.{u2} (Option.{u2} Λ)) (PartialOrder.toPreorder.{u2} (Finset.{u2} (Option.{u2} Λ)) (Finset.partialOrder.{u2} (Option.{u2} Λ)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697))) (Finset.insertNone.{u2} Λ) S)))
 Case conversion may be inaccurate. Consider using '#align turing.TM2.step_supports Turing.TM2.step_supportsₓ'. -/
 theorem step_supports (M : Λ → stmt) {S} (ss : supports M S) :
     ∀ {c c' : cfg}, c' ∈ step M c → c.l ∈ S.insertNone → c'.l ∈ S.insertNone
Diff
@@ -3511,7 +3511,7 @@ def trNormal : stmt₂ → stmt₁
 lean 3 declaration is
   forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] {k : K} (s : Turing.TM2to1.StAct.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k) (q : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ), Eq.{max (succ (max u1 u2)) (succ (max u1 u2 u3 u4)) (succ u4)} (Turing.TM1.Stmt.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) (Turing.TM2to1.trNormal.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 (Turing.TM2to1.stRun.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q)) (Turing.TM1.Stmt.goto.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (fun (_x : Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (_x : σ) => Turing.TM2to1.Λ'.go.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q))
 but is expected to have type
-  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u1}} {Λ : Type.{u2}} {_inst_2 : K} (σ : Turing.TM2to1.StAct.{u4, u3, u2} K _inst_1 Λ _inst_2) (_inst_3 : Turing.TM2.Stmt.{u4, u3, u1, u2} K _inst_1 Γ Λ), Eq.{max (max (max (succ u4) (succ u3)) (succ u1)) (succ u2)} (Turing.TM1.Stmt.{max u3 u4, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ) (Turing.TM2to1.trNormal.{u4, u3, u1, u2} K _inst_1 Γ Λ (Turing.TM2to1.stRun.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Turing.TM1.Stmt.goto.{max u4 u3, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ (fun (x._@.Mathlib.Computability.TuringMachine._hyg.57664 : Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (x._@.Mathlib.Computability.TuringMachine._hyg.57666 : Λ) => Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3))
+  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u1}} {Λ : Type.{u2}} {_inst_2 : K} (σ : Turing.TM2to1.StAct.{u4, u3, u2} K _inst_1 Λ _inst_2) (_inst_3 : Turing.TM2.Stmt.{u4, u3, u1, u2} K _inst_1 Γ Λ), Eq.{max (max (max (succ u4) (succ u3)) (succ u1)) (succ u2)} (Turing.TM1.Stmt.{max u3 u4, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ) (Turing.TM2to1.trNormal.{u4, u3, u1, u2} K _inst_1 Γ Λ (Turing.TM2to1.stRun.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Turing.TM1.Stmt.goto.{max u4 u3, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ (fun (x._@.Mathlib.Computability.TuringMachine._hyg.57672 : Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (x._@.Mathlib.Computability.TuringMachine._hyg.57674 : Λ) => Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3))
 Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_normal_run Turing.TM2to1.trNormal_runₓ'. -/
 theorem trNormal_run {k} (s q) : tr_normal (st_run s q) = goto fun _ _ => go k s q := by
   rcases s with (_ | _ | _) <;> rfl
Diff
@@ -3511,7 +3511,7 @@ def trNormal : stmt₂ → stmt₁
 lean 3 declaration is
   forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] {k : K} (s : Turing.TM2to1.StAct.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k) (q : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ), Eq.{max (succ (max u1 u2)) (succ (max u1 u2 u3 u4)) (succ u4)} (Turing.TM1.Stmt.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) (Turing.TM2to1.trNormal.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 (Turing.TM2to1.stRun.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q)) (Turing.TM1.Stmt.goto.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (fun (_x : Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (_x : σ) => Turing.TM2to1.Λ'.go.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q))
 but is expected to have type
-  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u1}} {Λ : Type.{u2}} {_inst_2 : K} (σ : Turing.TM2to1.StAct.{u4, u3, u2} K _inst_1 Λ _inst_2) (_inst_3 : Turing.TM2.Stmt.{u4, u3, u1, u2} K _inst_1 Γ Λ), Eq.{max (max (max (succ u4) (succ u3)) (succ u1)) (succ u2)} (Turing.TM1.Stmt.{max u3 u4, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ) (Turing.TM2to1.trNormal.{u4, u3, u1, u2} K _inst_1 Γ Λ (Turing.TM2to1.stRun.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Turing.TM1.Stmt.goto.{max u4 u3, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ (fun (x._@.Mathlib.Computability.TuringMachine._hyg.57505 : Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (x._@.Mathlib.Computability.TuringMachine._hyg.57507 : Λ) => Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3))
+  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u1}} {Λ : Type.{u2}} {_inst_2 : K} (σ : Turing.TM2to1.StAct.{u4, u3, u2} K _inst_1 Λ _inst_2) (_inst_3 : Turing.TM2.Stmt.{u4, u3, u1, u2} K _inst_1 Γ Λ), Eq.{max (max (max (succ u4) (succ u3)) (succ u1)) (succ u2)} (Turing.TM1.Stmt.{max u3 u4, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ) (Turing.TM2to1.trNormal.{u4, u3, u1, u2} K _inst_1 Γ Λ (Turing.TM2to1.stRun.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Turing.TM1.Stmt.goto.{max u4 u3, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ (fun (x._@.Mathlib.Computability.TuringMachine._hyg.57664 : Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (x._@.Mathlib.Computability.TuringMachine._hyg.57666 : Λ) => Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3))
 Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_normal_run Turing.TM2to1.trNormal_runₓ'. -/
 theorem trNormal_run {k} (s q) : tr_normal (st_run s q) = goto fun _ _ => go k s q := by
   rcases s with (_ | _ | _) <;> rfl
Diff
@@ -3511,7 +3511,7 @@ def trNormal : stmt₂ → stmt₁
 lean 3 declaration is
   forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] {k : K} (s : Turing.TM2to1.StAct.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k) (q : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ), Eq.{max (succ (max u1 u2)) (succ (max u1 u2 u3 u4)) (succ u4)} (Turing.TM1.Stmt.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) (Turing.TM2to1.trNormal.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 (Turing.TM2to1.stRun.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q)) (Turing.TM1.Stmt.goto.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (fun (_x : Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (_x : σ) => Turing.TM2to1.Λ'.go.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q))
 but is expected to have type
-  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u1}} {Λ : Type.{u2}} {_inst_2 : K} (σ : Turing.TM2to1.StAct.{u4, u3, u2} K _inst_1 Λ _inst_2) (_inst_3 : Turing.TM2.Stmt.{u4, u3, u1, u2} K _inst_1 Γ Λ), Eq.{max (max (max (succ u4) (succ u3)) (succ u1)) (succ u2)} (Turing.TM1.Stmt.{max u3 u4, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ) (Turing.TM2to1.trNormal.{u4, u3, u1, u2} K _inst_1 Γ Λ (Turing.TM2to1.stRun.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Turing.TM1.Stmt.goto.{max u4 u3, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ (fun (x._@.Mathlib.Computability.TuringMachine._hyg.57504 : Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (x._@.Mathlib.Computability.TuringMachine._hyg.57506 : Λ) => Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3))
+  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u1}} {Λ : Type.{u2}} {_inst_2 : K} (σ : Turing.TM2to1.StAct.{u4, u3, u2} K _inst_1 Λ _inst_2) (_inst_3 : Turing.TM2.Stmt.{u4, u3, u1, u2} K _inst_1 Γ Λ), Eq.{max (max (max (succ u4) (succ u3)) (succ u1)) (succ u2)} (Turing.TM1.Stmt.{max u3 u4, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ) (Turing.TM2to1.trNormal.{u4, u3, u1, u2} K _inst_1 Γ Λ (Turing.TM2to1.stRun.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Turing.TM1.Stmt.goto.{max u4 u3, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ (fun (x._@.Mathlib.Computability.TuringMachine._hyg.57505 : Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (x._@.Mathlib.Computability.TuringMachine._hyg.57507 : Λ) => Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3))
 Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_normal_run Turing.TM2to1.trNormal_runₓ'. -/
 theorem trNormal_run {k} (s q) : tr_normal (st_run s q) = goto fun _ _ => go k s q := by
   rcases s with (_ | _ | _) <;> rfl
Diff
@@ -3511,7 +3511,7 @@ def trNormal : stmt₂ → stmt₁
 lean 3 declaration is
   forall {K : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} K] {Γ : K -> Type.{u2}} {Λ : Type.{u3}} [_inst_2 : Inhabited.{succ u3} Λ] {σ : Type.{u4}} [_inst_3 : Inhabited.{succ u4} σ] {k : K} (s : Turing.TM2to1.StAct.{u1, u2, u4} K _inst_1 Γ σ _inst_3 k) (q : Turing.TM2.Stmt.{u1, u2, u3, u4} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ σ), Eq.{max (succ (max u1 u2)) (succ (max u1 u2 u3 u4)) (succ u4)} (Turing.TM1.Stmt.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ) (Turing.TM2to1.trNormal.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 (Turing.TM2to1.stRun.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q)) (Turing.TM1.Stmt.goto.{max u1 u2, max u1 u2 u3 u4, u4} (Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Γ'.inhabited.{u1, u2} K _inst_1 Γ) (Turing.TM2to1.Λ'.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3) σ (fun (_x : Turing.TM2to1.Γ'.{u1, u2} K _inst_1 Γ) (_x : σ) => Turing.TM2to1.Λ'.go.{u1, u2, u3, u4} K _inst_1 Γ Λ _inst_2 σ _inst_3 k s q))
 but is expected to have type
-  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u1}} {Λ : Type.{u2}} {_inst_2 : K} (σ : Turing.TM2to1.StAct.{u4, u3, u2} K _inst_1 Λ _inst_2) (_inst_3 : Turing.TM2.Stmt.{u4, u3, u1, u2} K _inst_1 Γ Λ), Eq.{max (max (max (succ u4) (succ u3)) (succ u1)) (succ u2)} (Turing.TM1.Stmt.{max u3 u4, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ) (Turing.TM2to1.trNormal.{u4, u3, u1, u2} K _inst_1 Γ Λ (Turing.TM2to1.stRun.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Turing.TM1.Stmt.goto.{max u4 u3, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ (fun (x._@.Mathlib.Computability.TuringMachine._hyg.57464 : Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (x._@.Mathlib.Computability.TuringMachine._hyg.57466 : Λ) => Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3))
+  forall {K : Type.{u4}} {_inst_1 : K -> Type.{u3}} {Γ : Type.{u1}} {Λ : Type.{u2}} {_inst_2 : K} (σ : Turing.TM2to1.StAct.{u4, u3, u2} K _inst_1 Λ _inst_2) (_inst_3 : Turing.TM2.Stmt.{u4, u3, u1, u2} K _inst_1 Γ Λ), Eq.{max (max (max (succ u4) (succ u3)) (succ u1)) (succ u2)} (Turing.TM1.Stmt.{max u3 u4, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ) (Turing.TM2to1.trNormal.{u4, u3, u1, u2} K _inst_1 Γ Λ (Turing.TM2to1.stRun.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3)) (Turing.TM1.Stmt.goto.{max u4 u3, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K _inst_1 Γ Λ) Λ (fun (x._@.Mathlib.Computability.TuringMachine._hyg.57504 : Turing.TM2to1.Γ'.{u4, u3} K _inst_1) (x._@.Mathlib.Computability.TuringMachine._hyg.57506 : Λ) => Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K _inst_1 Γ Λ _inst_2 σ _inst_3))
 Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_normal_run Turing.TM2to1.trNormal_runₓ'. -/
 theorem trNormal_run {k} (s q) : tr_normal (st_run s q) = goto fun _ _ => go k s q := by
   rcases s with (_ | _ | _) <;> rfl
Diff
@@ -3676,7 +3676,7 @@ lean 3 declaration is
 but is expected to have type
   forall {K : Type.{u4}} [_inst_1 : DecidableEq.{succ u4} K] {Γ : K -> Type.{u3}} {Λ : Type.{u1}} {_inst_2 : Type.{u2}} (σ : Λ -> (Turing.TM2.Stmt.{u4, u3, u1, u2} K Γ Λ _inst_2)) {_inst_3 : K} (M : Turing.TM2to1.StAct.{u4, u3, u2} K Γ _inst_2 _inst_3) (k : Turing.TM2.Stmt.{u4, u3, u1, u2} K Γ Λ _inst_2) (o : _inst_2) {q : List.{u3} (Γ _inst_3)} {v : Turing.ListBlank.{max u4 u3} (forall (k : K), Option.{u3} (Γ k)) (instInhabitedForAll_1.{succ u4, succ u3} K (fun (k : K) => Option.{u3} (Γ k)) (fun (a : K) => instInhabitedOption.{u3} (Γ a)))}, (Eq.{succ u3} (Turing.ListBlank.{u3} (Option.{u3} (Γ _inst_3)) (instInhabitedOption.{u3} (Γ _inst_3))) (Turing.ListBlank.map.{max u4 u3, u3} (forall (i : K), Option.{u3} (Γ i)) (Option.{u3} (Γ _inst_3)) (instInhabitedForAll_1.{succ u4, succ u3} K (fun (i : K) => Option.{u3} (Γ i)) (fun (a : K) => instInhabitedOption.{u3} (Γ a))) (instInhabitedOption.{u3} (Γ _inst_3)) (Turing.proj.{u4, u3} K (fun (k : K) => Option.{u3} (Γ k)) (fun (a : K) => instInhabitedOption.{u3} (Γ a)) _inst_3) v) (Turing.ListBlank.mk.{u3} (Option.{u3} (Γ _inst_3)) (instInhabitedOption.{u3} (Γ _inst_3)) (List.reverse.{u3} (Option.{u3} (Γ _inst_3)) (List.map.{u3, u3} (Γ _inst_3) (Option.{u3} (Γ _inst_3)) (Option.some.{u3} (Γ _inst_3)) q)))) -> (forall (L : Nat), (LE.le.{0} Nat instLENat L (List.length.{u3} (Γ _inst_3) q)) -> (Turing.Reaches₀.{max (max u2 (max (max u2 u1) u3) u4) u3 u4} (Turing.TM1.Cfg.{max u3 u4, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K Γ Λ _inst_2) _inst_2) (Turing.TM1.step.{max u3 u4, max (max (max u2 u1) u3) u4, u2} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K Γ Λ _inst_2) _inst_2 (Turing.TM2to1.tr.{u4, u3, u1, u2} K (fun (a : K) (b : K) => _inst_1 a b) Γ Λ _inst_2 σ)) (Turing.TM1.Cfg.mk.{max u4 u3, max (max (max u4 u3) u1) u2, u2} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K Γ Λ _inst_2) _inst_2 (Option.some.{max (max (max u4 u3) u1) u2} (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K Γ Λ _inst_2) (Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K Γ Λ _inst_2 _inst_3 M k)) o (Turing.Tape.mk'.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (EmptyCollection.emptyCollection.{max u4 u3} (Turing.ListBlank.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ)) (Turing.ListBlank.hasEmptyc.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ))) (Turing.TM2to1.addBottom.{u4, u3} K Γ v))) (Turing.TM1.Cfg.mk.{max u4 u3, max (max (max u4 u3) u1) u2, u2} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K Γ Λ _inst_2) _inst_2 (Option.some.{max (max (max u4 u3) u1) u2} (Turing.TM2to1.Λ'.{u4, u3, u1, u2} K Γ Λ _inst_2) (Turing.TM2to1.Λ'.go.{u4, u3, u1, u2} K Γ Λ _inst_2 _inst_3 M k)) o (Nat.iterate.{succ (max u4 u3)} (Turing.Tape.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ)) (Turing.Tape.move.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) Turing.Dir.right) L (Turing.Tape.mk'.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ) (EmptyCollection.emptyCollection.{max u4 u3} (Turing.ListBlank.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ)) (Turing.ListBlank.hasEmptyc.{max u4 u3} (Turing.TM2to1.Γ'.{u4, u3} K Γ) (Turing.TM2to1.Γ'.inhabited.{u4, u3} K Γ))) (Turing.TM2to1.addBottom.{u4, u3} K Γ v))))))
 Case conversion may be inaccurate. Consider using '#align turing.TM2to1.tr_respects_aux₁ Turing.TM2to1.tr_respects_aux₁ₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (n «expr ≤ » S.length) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (n «expr ≤ » S.length) -/
 theorem tr_respects_aux₁ {k} (o q v) {S : List (Γ k)} {L : ListBlank (∀ k, Option (Γ k))}
     (hL : L.map (proj k) = ListBlank.mk (S.map some).reverse) (n) (_ : n ≤ S.length) :
     Reaches₀ (TM1.step tr) ⟨some (go k o q), v, Tape.mk' ∅ (add_bottom L)⟩

Changes in mathlib4

mathlib3
mathlib4
chore: adapt to multiple goal linter 1 (#12338)

A PR accompanying #12339.

Zulip discussion

Diff
@@ -148,8 +148,8 @@ def BlankRel.above {Γ} [Inhabited Γ] {l₁ l₂ : List Γ} (h : BlankRel l₁
   refine'
     if hl : l₁.length ≤ l₂.length then ⟨l₂, Or.elim h id fun h' ↦ _, BlankExtends.refl _⟩
     else ⟨l₁, BlankExtends.refl _, Or.elim h (fun h' ↦ _) id⟩
-  exact (BlankExtends.refl _).above_of_le h' hl
-  exact (BlankExtends.refl _).above_of_le h' (le_of_not_ge hl)
+  · exact (BlankExtends.refl _).above_of_le h' hl
+  · exact (BlankExtends.refl _).above_of_le h' (le_of_not_ge hl)
 #align turing.blank_rel.above Turing.BlankRel.above
 
 /-- Given two `BlankRel` lists, there exists (constructively) a common meet. -/
@@ -158,8 +158,8 @@ def BlankRel.below {Γ} [Inhabited Γ] {l₁ l₂ : List Γ} (h : BlankRel l₁
   refine'
     if hl : l₁.length ≤ l₂.length then ⟨l₁, BlankExtends.refl _, Or.elim h id fun h' ↦ _⟩
     else ⟨l₂, Or.elim h (fun h' ↦ _) id, BlankExtends.refl _⟩
-  exact (BlankExtends.refl _).above_of_le h' hl
-  exact (BlankExtends.refl _).above_of_le h' (le_of_not_ge hl)
+  · exact (BlankExtends.refl _).above_of_le h' hl
+  · exact (BlankExtends.refl _).above_of_le h' (le_of_not_ge hl)
 #align turing.blank_rel.below Turing.BlankRel.below
 
 theorem BlankRel.equivalence (Γ) [Inhabited Γ] : Equivalence (@BlankRel Γ _) :=
@@ -471,7 +471,8 @@ def ListBlank.bind {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (l : ListBlank Γ) (f
   apply l.liftOn (fun l ↦ ListBlank.mk (List.bind l f))
   rintro l _ ⟨i, rfl⟩; cases' hf with n e; refine' Quotient.sound' (Or.inl ⟨i * n, _⟩)
   rw [List.append_bind, mul_comm]; congr
-  induction' i with i IH; rfl
+  induction' i with i IH
+  · rfl
   simp only [IH, e, List.replicate_add, Nat.mul_succ, add_comm, List.replicate_succ, List.cons_bind]
 #align turing.list_blank.bind Turing.ListBlank.bind
 
@@ -2650,7 +2651,9 @@ theorem tr_respects_aux₁ {k} (o q v) {S : List (Γ k)} {L : ListBlank (∀ k,
   rw [iterate_succ_apply'];
   simp only [TM1.step, TM1.stepAux, tr, Tape.mk'_nth_nat, Tape.move_right_n_head,
     addBottom_nth_snd, Option.mem_def]
-  rw [stk_nth_val _ hL, List.get?_eq_get]; rfl; rwa [List.length_reverse]
+  rw [stk_nth_val _ hL, List.get?_eq_get]
+  · rfl
+  · rwa [List.length_reverse]
 #align turing.TM2to1.tr_respects_aux₁ Turing.TM2to1.tr_respects_aux₁
 
 theorem tr_respects_aux₃ {q v} {L : ListBlank (∀ k, Option (Γ k))} (n) : Reaches₀ (TM1.step (tr M))
chore: classify porting notes about additional necessary beta reduction (#12130)

This subsumes some of the notes in #10752 and #10971. I'm on the fence as to whether replacing the dsimp only by beta_reduce is useful; this is easy to revert if needed.

Diff
@@ -2688,11 +2688,10 @@ theorem tr_respects_aux {q v T k} {S : ∀ k, List (Γ k)}
 attribute [local simp] Respects TM2.step TM2.stepAux trNormal
 
 theorem tr_respects : Respects (TM2.step M) (TM1.step (tr M)) TrCfg := by
-  -- Porting note: `simp only`s are required for beta reductions.
+  -- Porting note(#12129): additional beta reduction needed
   intro c₁ c₂ h
   cases' h with l v S L hT
   cases' l with l; · constructor
-  simp only [TM2.step, Respects, Option.map_some']
   rsuffices ⟨b, c, r⟩ : ∃ b, _ ∧ Reaches (TM1.step (tr M)) _ _
   · exact ⟨b, c, TransGen.head' rfl r⟩
   simp only [tr]
@@ -2703,7 +2702,7 @@ theorem tr_respects : Respects (TM2.step M) (TM1.step (tr M)) TrCfg := by
   | H₂ a _ IH => exact IH _ hT
   | H₃ p q₁ q₂ IH₁ IH₂ =>
     unfold TM2.stepAux trNormal TM1.stepAux
-    simp only []
+    beta_reduce
     cases p v <;> [exact IH₂ _ hT; exact IH₁ _ hT]
   | H₄ => exact ⟨_, ⟨_, hT⟩, ReflTransGen.refl⟩
   | H₅ => exact ⟨_, ⟨_, hT⟩, ReflTransGen.refl⟩
chore: Rename mul-div cancellation lemmas (#11530)

Lemma names around cancellation of multiplication and division are a mess.

This PR renames a handful of them according to the following table (each big row contains the multiplicative statement, then the three rows contain the GroupWithZero lemma name, the Group lemma, the AddGroup lemma name).

| Statement | New name | Old name | |

Diff
@@ -633,7 +633,7 @@ theorem Tape.move_left_nth {Γ} [Inhabited Γ] :
   | ⟨_, L, _⟩, 0 => (ListBlank.nth_zero _).symm
   | ⟨a, L, R⟩, 1 => (ListBlank.nth_zero _).trans (ListBlank.head_cons _ _)
   | ⟨a, L, R⟩, (n + 1 : ℕ) + 1 => by
-    rw [add_sub_cancel]
+    rw [add_sub_cancel_right]
     change (R.cons a).nth (n + 1) = R.nth n
     rw [ListBlank.nth_succ, ListBlank.tail_cons]
 #align turing.tape.move_left_nth Turing.Tape.move_left_nth
@@ -642,7 +642,7 @@ theorem Tape.move_left_nth {Γ} [Inhabited Γ] :
 theorem Tape.move_right_nth {Γ} [Inhabited Γ] (T : Tape Γ) (i : ℤ) :
     (T.move Dir.right).nth i = T.nth (i + 1) := by
   conv => rhs; rw [← T.move_right_left]
-  rw [Tape.move_left_nth, add_sub_cancel]
+  rw [Tape.move_left_nth, add_sub_cancel_right]
 #align turing.tape.move_right_nth Turing.Tape.move_right_nth
 
 @[simp]
chore(*): remove empty lines between variable statements (#11418)

Empty lines were removed by executing the following Python script twice

import os
import re


# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
  for filename in files:
    if filename.endswith('.lean'):
      file_path = os.path.join(dir_path, filename)

      # Open the file and read its contents
      with open(file_path, 'r') as file:
        content = file.read()

      # Use a regular expression to replace sequences of "variable" lines separated by empty lines
      # with sequences without empty lines
      modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)

      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
Diff
@@ -1123,11 +1123,8 @@ end
 section
 
 variable {Γ : Type*} [Inhabited Γ]
-
 variable {Γ' : Type*} [Inhabited Γ']
-
 variable {Λ : Type*} [Inhabited Λ]
-
 variable {Λ' : Type*} [Inhabited Λ']
 
 /-- Map a TM statement across a function. This does nothing to move statements and maps the write
@@ -1438,9 +1435,7 @@ set_option linter.uppercaseLean3 false
 section
 
 variable {Γ : Type*} [Inhabited Γ]
-
 variable {Λ : Type*} [Inhabited Λ]
-
 variable {σ : Type*} [Inhabited σ]
 
 local notation "Stmt₁" => TM1.Stmt Γ Λ σ
@@ -1629,7 +1624,6 @@ theorem exists_enc_dec [Finite Γ] : ∃ (n : ℕ) (enc : Γ → Vector Bool n)
 #align turing.TM1to1.exists_enc_dec Turing.TM1to1.exists_enc_dec
 
 variable {Λ : Type*} [Inhabited Λ]
-
 variable {σ : Type*} [Inhabited σ]
 
 local notation "Stmt₁" => Stmt Γ Λ σ
@@ -1977,7 +1971,6 @@ set_option linter.uppercaseLean3 false
 section
 
 variable {Γ : Type*} [Inhabited Γ]
-
 variable {Λ : Type*} [Inhabited Λ]
 
 /-- The machine states for a TM1 emulating a TM0 machine. States of the TM0 machine are embedded
@@ -2332,11 +2325,8 @@ theorem stk_nth_val {K : Type*} {Γ : K → Type*} {L : ListBlank (∀ k, Option
 section
 
 variable {K : Type*} [DecidableEq K]
-
 variable {Γ : K → Type*}
-
 variable {Λ : Type*} [Inhabited Λ]
-
 variable {σ : Type*} [Inhabited σ]
 
 local notation "Stmt₂" => TM2.Stmt Γ Λ σ
chore(Computability): Encodable/Fintype -> Countable/Finite (#10869)

Also golf a proof

Diff
@@ -1616,18 +1616,16 @@ section
 
 variable {Γ : Type*} [Inhabited Γ]
 
-theorem exists_enc_dec [Fintype Γ] : ∃ (n : ℕ) (enc : Γ → Vector Bool n) (dec : Vector Bool n → Γ),
+theorem exists_enc_dec [Finite Γ] : ∃ (n : ℕ) (enc : Γ → Vector Bool n) (dec : Vector Bool n → Γ),
     enc default = Vector.replicate n false ∧ ∀ a, dec (enc a) = a := by
-  letI := Classical.decEq Γ
-  let n := Fintype.card Γ
-  obtain ⟨F⟩ := Fintype.truncEquivFin Γ
+  rcases Finite.exists_equiv_fin Γ with ⟨n, ⟨e⟩⟩
+  letI : DecidableEq Γ := e.decidableEq
   let G : Fin n ↪ Fin n → Bool :=
     ⟨fun a b ↦ a = b, fun a b h ↦
       Bool.of_decide_true <| (congr_fun h b).trans <| Bool.decide_true rfl⟩
-  let H := (F.toEmbedding.trans G).trans (Equiv.vectorEquivFin _ _).symm.toEmbedding
-  classical
-    let enc := H.setValue default (Vector.replicate n false)
-    exact ⟨_, enc, Function.invFun enc, H.setValue_eq _ _, Function.leftInverse_invFun enc.2⟩
+  let H := (e.toEmbedding.trans G).trans (Equiv.vectorEquivFin _ _).symm.toEmbedding
+  let enc := H.setValue default (Vector.replicate n false)
+  exact ⟨_, enc, Function.invFun enc, H.setValue_eq _ _, Function.leftInverse_invFun enc.2⟩
 #align turing.TM1to1.exists_enc_dec Turing.TM1to1.exists_enc_dec
 
 variable {Λ : Type*} [Inhabited Λ]
chore: scope open Classical (#11199)

We remove all but one open Classicals, instead preferring to use open scoped Classical. The only real side-effect this led to is moving a couple declarations to use Exists.choose instead of Classical.choose.

The first few commits are explicitly labelled regex replaces for ease of review.

Diff
@@ -1304,7 +1304,7 @@ def SupportsStmt (S : Finset Λ) : Stmt₁ → Prop
   | halt => True
 #align turing.TM1.supports_stmt Turing.TM1.SupportsStmt
 
-open Classical
+open scoped Classical
 
 /-- The subterm closure of a statement. -/
 noncomputable def stmts₁ : Stmt₁ → Finset Stmt₁
@@ -1528,7 +1528,7 @@ noncomputable def trStmts (S : Finset Λ) : Finset Λ'₁₀ :=
   (TM1.stmts M S) ×ˢ Finset.univ
 #align turing.TM1to0.tr_stmts Turing.TM1to0.trStmts
 
-open Classical
+open scoped Classical
 
 attribute [local simp] TM1.stmts₁_self
 
@@ -1888,7 +1888,7 @@ theorem tr_respects {enc₀} :
       apply ReflTransGen.refl
 #align turing.TM1to1.tr_respects Turing.TM1to1.tr_respects
 
-open Classical
+open scoped Classical
 
 variable [Fintype Γ]
 
@@ -2172,7 +2172,7 @@ def SupportsStmt (S : Finset Λ) : Stmt₂ → Prop
   | halt => True
 #align turing.TM2.supports_stmt Turing.TM2.SupportsStmt
 
-open Classical
+open scoped Classical
 
 /-- The set of subtree statements in a statement. -/
 noncomputable def stmts₁ : Stmt₂ → Finset Stmt₂
@@ -2529,7 +2529,7 @@ theorem trNormal_run {k : K} (s : StAct₂ k) (q : Stmt₂) :
   cases s <;> rfl
 #align turing.TM2to1.tr_normal_run Turing.TM2to1.trNormal_run
 
-open Classical
+open scoped Classical
 
 /-- The set of machine states accessible from an initial TM2 statement. -/
 noncomputable def trStmts₁ : Stmt₂ → Finset Λ'₂₁
chore: move Mathlib to v4.7.0-rc1 (#11162)

This is a very large PR, but it has been reviewed piecemeal already in PRs to the bump/v4.7.0 branch as we update to intermediate nightlies.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: damiano <adomani@gmail.com>

Diff
@@ -1877,7 +1877,7 @@ theorem tr_respects {enc₀} :
       simp only [trNormal, stepAux_read dec enc0 encdec]
       apply IH
     | branch p q₁ q₂ IH₁ IH₂ =>
-      simp only [trNormal, stepAux_read dec enc0 encdec, stepAux]
+      simp only [trNormal, stepAux_read dec enc0 encdec, stepAux, Tape.mk'_head]
       cases p R.head v <;> [apply IH₂; apply IH₁]
     | goto l =>
       simp only [trNormal, stepAux_read dec enc0 encdec, stepAux, trCfg, trTape_mk']
chore: remove terminal, terminal refines (#10762)

I replaced a few "terminal" refine/refine's with exact.

The strategy was very simple-minded: essentially any refine whose following line had smaller indentation got replaced by exact and then I cleaned up the mess.

This PR certainly leaves some further terminal refines, but maybe the current change is beneficial.

Diff
@@ -1801,7 +1801,7 @@ theorem stepAux_write (q : Stmt'₁) (v : σ) (a b : Γ) (L R : ListBlank Γ) :
   suffices ∀ {L' R'} (l₁ l₂ l₂' : List Bool) (_ : l₂'.length = l₂.length),
       stepAux (write l₂ q) v (Tape.mk' (ListBlank.append l₁ L') (ListBlank.append l₂' R')) =
       stepAux q v (Tape.mk' (L'.append (List.reverseAux l₂ l₁)) R') by
-    refine' this [] _ _ ((enc b).2.trans (enc a).2.symm)
+    exact this [] _ _ ((enc b).2.trans (enc a).2.symm)
   clear a b L R
   intro L' R' l₁ l₂ l₂' e
   induction' l₂ with a l₂ IH generalizing l₁ l₂'
@@ -1936,7 +1936,7 @@ theorem tr_supports {S : Finset Λ} (ss : Supports M S) : Supports (tr enc dec M
     | load a q IH =>
       unfold writes at hw ⊢
       replace IH := IH hs hw
-      refine' ⟨supportsStmt_read _ fun _ ↦ IH.1, IH.2⟩
+      exact ⟨supportsStmt_read _ fun _ ↦ IH.1, IH.2⟩
     | branch p q₁ q₂ IH₁ IH₂ =>
       unfold writes at hw ⊢
       simp only [Finset.mem_union] at hw ⊢
chore: classify dsimp can prove this porting notes (#10686)

Classifies by adding issue number (#10685) to porting notes claiming dsimp can prove this.

Diff
@@ -358,7 +358,7 @@ instance {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] : Inhabited (PointedMap Γ Γ')
 instance {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] : CoeFun (PointedMap Γ Γ') fun _ ↦ Γ → Γ' :=
   ⟨PointedMap.f⟩
 
--- @[simp] -- Porting note: dsimp can prove this
+-- @[simp] -- Porting note (#10685): dsimp can prove this
 theorem PointedMap.mk_val {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : Γ → Γ') (pt) :
     (PointedMap.mk f pt : Γ → Γ') = f :=
   rfl
chore: classify added to clean up types porting notes (#10751)

Classifies by adding issue number (#10750) to porting notes claiming added to clean up types.

Diff
@@ -1028,7 +1028,7 @@ inductive Stmt
   | write : Γ → Stmt
 #align turing.TM0.stmt Turing.TM0.Stmt
 
-local notation "Stmt₀" => Stmt Γ  -- Porting note: Added this to clean up types.
+local notation "Stmt₀" => Stmt Γ  -- Porting note (#10750): added this to clean up types.
 
 instance Stmt.inhabited : Inhabited Stmt₀ :=
   ⟨Stmt.write default⟩
@@ -1048,7 +1048,7 @@ def Machine [Inhabited Λ] :=
   Λ → Γ → Option (Λ × Stmt₀)
 #align turing.TM0.machine Turing.TM0.Machine
 
-local notation "Machine₀" => Machine Γ Λ  -- Porting note: Added this to clean up types.
+local notation "Machine₀" => Machine Γ Λ  -- Porting note (#10750): added this to clean up types.
 
 instance Machine.inhabited : Inhabited Machine₀ := by
   unfold Machine; infer_instance
@@ -1064,7 +1064,7 @@ structure Cfg where
   Tape : Tape Γ
 #align turing.TM0.cfg Turing.TM0.Cfg
 
-local notation "Cfg₀" => Cfg Γ Λ  -- Porting note: Added this to clean up types.
+local notation "Cfg₀" => Cfg Γ Λ  -- Porting note (#10750): added this to clean up types.
 
 instance Cfg.inhabited : Inhabited Cfg₀ :=
   ⟨⟨default, default⟩⟩
@@ -1253,7 +1253,7 @@ inductive Stmt
   | halt : Stmt
 #align turing.TM1.stmt Turing.TM1.Stmt
 
-local notation "Stmt₁" => Stmt Γ Λ σ  -- Porting note: Added this to clean up types.
+local notation "Stmt₁" => Stmt Γ Λ σ  -- Porting note (#10750): added this to clean up types.
 
 open Stmt
 
@@ -1269,7 +1269,7 @@ structure Cfg where
   Tape : Tape Γ
 #align turing.TM1.cfg Turing.TM1.Cfg
 
-local notation "Cfg₁" => Cfg Γ Λ σ  -- Porting note: Added this to clean up types.
+local notation "Cfg₁" => Cfg Γ Λ σ  -- Porting note (#10750): added this to clean up types.
 
 instance Cfg.inhabited [Inhabited σ] : Inhabited Cfg₁ :=
   ⟨⟨default, default, default⟩⟩
@@ -1463,7 +1463,7 @@ def Λ' (M : Λ → TM1.Stmt Γ Λ σ) :=
   Option Stmt₁ × σ
 #align turing.TM1to0.Λ' Turing.TM1to0.Λ'
 
-local notation "Λ'₁₀" => Λ' M -- Porting note: Added this to clean up types.
+local notation "Λ'₁₀" => Λ' M -- Porting note (#10750): added this to clean up types.
 
 instance : Inhabited Λ'₁₀ :=
   ⟨(some (M default), default)⟩
@@ -1644,7 +1644,7 @@ inductive Λ'
   | write : Γ → Stmt₁ → Λ'
 #align turing.TM1to1.Λ' Turing.TM1to1.Λ'
 
-local notation "Λ'₁" => @Λ' Γ Λ σ  -- Porting note: Added this to clean up types.
+local notation "Λ'₁" => @Λ' Γ Λ σ  -- Porting note (#10750): added this to clean up types.
 
 instance : Inhabited Λ'₁ :=
   ⟨Λ'.normal default⟩
@@ -1668,7 +1668,7 @@ def move (d : Dir) (q : Stmt'₁) : Stmt'₁ :=
   (Stmt.move d)^[n] q
 #align turing.TM1to1.move Turing.TM1to1.move
 
-local notation "moveₙ" => @move Γ Λ σ n  -- Porting note: Added this to clean up types.
+local notation "moveₙ" => @move Γ Λ σ n  -- Porting note (#10750): added this to clean up types.
 
 /-- To read a symbol from the tape, we use `readAux` to traverse the symbol,
 then return to the original position with `n` moves to the left. -/
@@ -1990,7 +1990,7 @@ inductive Λ'
   | act : TM0.Stmt Γ → Λ → Λ'
 #align turing.TM0to1.Λ' Turing.TM0to1.Λ'
 
-local notation "Λ'₁" => @Λ' Γ Λ  -- Porting note: Added this to clean up types.
+local notation "Λ'₁" => @Λ' Γ Λ  -- Porting note (#10750): added this to clean up types.
 
 instance : Inhabited Λ'₁ :=
   ⟨Λ'.normal default⟩
@@ -2112,7 +2112,7 @@ inductive Stmt
   | halt : Stmt
 #align turing.TM2.stmt Turing.TM2.Stmt
 
-local notation "Stmt₂" => Stmt Γ Λ σ  -- Porting note: Added this to clean up types.
+local notation "Stmt₂" => Stmt Γ Λ σ  -- Porting note (#10750): added this to clean up types.
 
 open Stmt
 
@@ -2129,7 +2129,7 @@ structure Cfg where
   stk : ∀ k, List (Γ k)
 #align turing.TM2.cfg Turing.TM2.Cfg
 
-local notation "Cfg₂" => Cfg Γ Λ σ  -- Porting note: Added this to clean up types.
+local notation "Cfg₂" => Cfg Γ Λ σ  -- Porting note (#10750): added this to clean up types.
 
 instance Cfg.inhabited [Inhabited σ] : Inhabited Cfg₂ :=
   ⟨⟨default, default, default⟩⟩
@@ -2352,7 +2352,7 @@ def Γ' :=
   Bool × ∀ k, Option (Γ k)
 #align turing.TM2to1.Γ' Turing.TM2to1.Γ'
 
-local notation "Γ'₂₁" => @Γ' K Γ  -- Porting note: Added this to clean up types.
+local notation "Γ'₂₁" => @Γ' K Γ  -- Porting note (#10750): added this to clean up types.
 
 instance Γ'.inhabited : Inhabited Γ'₂₁ :=
   ⟨⟨false, fun _ ↦ none⟩⟩
@@ -2407,7 +2407,7 @@ inductive StAct (k : K)
   | pop : (σ → Option (Γ k) → σ) → StAct k
 #align turing.TM2to1.st_act Turing.TM2to1.StAct
 
-local notation "StAct₂" => @StAct K Γ σ  -- Porting note: Added this to clean up types.
+local notation "StAct₂" => @StAct K Γ σ  -- Porting note (#10750): added this to clean up types.
 
 instance StAct.inhabited {k : K} : Inhabited (StAct₂ k) :=
   ⟨StAct.peek fun s _ ↦ s⟩
@@ -2472,7 +2472,7 @@ inductive Λ'
   | ret : Stmt₂ → Λ'
 #align turing.TM2to1.Λ' Turing.TM2to1.Λ'
 
-local notation "Λ'₂₁" => @Λ' K Γ Λ σ  -- Porting note: Added this to clean up types.
+local notation "Λ'₂₁" => @Λ' K Γ Λ σ  -- Porting note (#10750): added this to clean up types.
 
 open Λ'
 
chore: tidy various files (#10311)
Diff
@@ -1015,10 +1015,10 @@ set_option linter.uppercaseLean3 false
 
 section
 
--- type of "labels" or TM states
+-- type of tape symbols
 variable (Γ : Type*) [Inhabited Γ]
 
--- type of tape symbols
+-- type of "labels" or TM states
 variable (Λ : Type*) [Inhabited Λ]
 
 /-- A Turing machine "statement" is just a command to either move
chore: remove duplicates about List.append (#9376)

Replace duplicates in Mathlib with theorems in Lean core.

  • List.append_left_cancelList.append_cancel_left
  • List.append_right_cancelList.append_cancel_right
Diff
@@ -105,7 +105,7 @@ def BlankExtends.above {Γ} [Inhabited Γ] {l l₁ l₂ : List Γ} (h₁ : Blank
 theorem BlankExtends.above_of_le {Γ} [Inhabited Γ] {l l₁ l₂ : List Γ} :
     BlankExtends l₁ l → BlankExtends l₂ l → l₁.length ≤ l₂.length → BlankExtends l₁ l₂ := by
   rintro ⟨i, rfl⟩ ⟨j, e⟩ h; use i - j
-  refine' List.append_right_cancel (e.symm.trans _)
+  refine' List.append_cancel_right (e.symm.trans _)
   rw [List.append_assoc, ← List.replicate_add, tsub_add_cancel_of_le]
   apply_fun List.length at e
   simp only [List.length_append, List.length_replicate] at e
style: use cases x with | ... instead of cases x; case => ... (#9321)

This converts usages of the pattern

cases h
case inl h' => ...
case inr h' => ...

which derive from mathported code, to the "structured cases" syntax:

cases h with
| inl h' => ...
| inr h' => ...

The case where the subgoals are handled with · instead of case is more contentious (and much more numerous) so I left those alone. This pattern also appears with cases', induction, induction', and rcases. Furthermore, there is a similar transformation for by_cases:

by_cases h : cond
case pos => ...
case neg => ...

is replaced by:

if h : cond then
  ...
else
  ...

Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -1321,32 +1321,32 @@ theorem stmts₁_self {q : Stmt₁} : q ∈ stmts₁ q := by
 
 theorem stmts₁_trans {q₁ q₂ : Stmt₁} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ ⊆ stmts₁ q₂ := by
   intro h₁₂ q₀ h₀₁
-  induction' q₂ with _ q IH _ q IH _ q IH <;> simp only [stmts₁] at h₁₂ ⊢ <;>
-    simp only [Finset.mem_insert, Finset.mem_union, Finset.mem_singleton] at h₁₂
-  iterate 3
-    rcases h₁₂ with (rfl | h₁₂)
-    · unfold stmts₁ at h₀₁
-      exact h₀₁
-    · exact Finset.mem_insert_of_mem (IH h₁₂)
-  case branch p q₁ q₂ IH₁ IH₂ =>
+  induction q₂ with (
+    simp only [stmts₁] at h₁₂ ⊢
+    simp only [Finset.mem_insert, Finset.mem_union, Finset.mem_singleton] at h₁₂)
+  | branch p q₁ q₂ IH₁ IH₂ =>
     rcases h₁₂ with (rfl | h₁₂ | h₁₂)
     · unfold stmts₁ at h₀₁
       exact h₀₁
     · exact Finset.mem_insert_of_mem (Finset.mem_union_left _ <| IH₁ h₁₂)
     · exact Finset.mem_insert_of_mem (Finset.mem_union_right _ <| IH₂ h₁₂)
-  case goto l => subst h₁₂; exact h₀₁
-  case halt => subst h₁₂; exact h₀₁
+  | goto l => subst h₁₂; exact h₀₁
+  | halt => subst h₁₂; exact h₀₁
+  | _ _ q IH =>
+    rcases h₁₂ with rfl | h₁₂
+    · exact h₀₁
+    · exact Finset.mem_insert_of_mem (IH h₁₂)
 #align turing.TM1.stmts₁_trans Turing.TM1.stmts₁_trans
 
 theorem stmts₁_supportsStmt_mono {S : Finset Λ} {q₁ q₂ : Stmt₁} (h : q₁ ∈ stmts₁ q₂)
     (hs : SupportsStmt S q₂) : SupportsStmt S q₁ := by
-  induction' q₂ with _ q IH _ q IH _ q IH <;>
+  induction q₂ with
     simp only [stmts₁, SupportsStmt, Finset.mem_insert, Finset.mem_union, Finset.mem_singleton]
       at h hs
-  iterate 3 rcases h with (rfl | h) <;> [exact hs; exact IH h hs]
-  case branch p q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts [hs, IH₁ h hs.1, IH₂ h hs.2]
-  case goto l => subst h; exact hs
-  case halt => subst h; trivial
+  | branch p q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts [hs, IH₁ h hs.1, IH₂ h hs.2]
+  | goto l => subst h; exact hs
+  | halt => subst h; trivial
+  | _ _ q IH => rcases h with (rfl | h) <;> [exact hs; exact IH h hs]
 #align turing.TM1.stmts₁_supports_stmt_mono Turing.TM1.stmts₁_supportsStmt_mono
 
 /-- The set of all statements in a Turing machine, plus one extra value `none` representing the
@@ -1383,14 +1383,14 @@ theorem step_supports (M : Λ → Stmt₁) {S : Finset Λ} (ss : Supports M S) :
   | ⟨some l₁, v, T⟩, c', h₁, h₂ => by
     replace h₂ := ss.2 _ (Finset.some_mem_insertNone.1 h₂)
     simp only [step, Option.mem_def, Option.some.injEq] at h₁; subst c'
-    revert h₂; induction' M l₁ with _ q IH _ q IH _ q IH generalizing v T <;> intro hs
-    iterate 3 exact IH _ _ hs
-    case branch p q₁' q₂' IH₁ IH₂ =>
+    revert h₂; induction M l₁ generalizing v T with intro hs
+    | branch p q₁' q₂' IH₁ IH₂ =>
       unfold stepAux; cases p T.1 v
       · exact IH₂ _ _ hs.2
       · exact IH₁ _ _ hs.1
-    case goto => exact Finset.some_mem_insertNone.2 (hs _ _)
-    case halt => apply Multiset.mem_cons_self
+    | goto => exact Finset.some_mem_insertNone.2 (hs _ _)
+    | halt => apply Multiset.mem_cons_self
+    | _ _ q IH => exact IH _ _ hs
 #align turing.TM1.step_supports Turing.TM1.step_supports
 
 variable [Inhabited σ]
@@ -1501,15 +1501,15 @@ theorem tr_respects :
   fun_respects.2 fun ⟨l₁, v, T⟩ ↦ by
     cases' l₁ with l₁; · exact rfl
     simp only [trCfg, TM1.step, FRespects, Option.map]
-    induction' M l₁ with _ _ IH _ _ IH _ _ IH generalizing v T
-    case move _ _ IH => exact TransGen.head rfl (IH _ _)
-    case write _ _ IH => exact TransGen.head rfl (IH _ _)
-    case load _ _ IH => exact (reaches₁_eq (by rfl)).2 (IH _ _)
-    case branch p _ _ IH₁ IH₂ =>
+    induction M l₁ generalizing v T with
+    | move _ _ IH => exact TransGen.head rfl (IH _ _)
+    | write _ _ IH => exact TransGen.head rfl (IH _ _)
+    | load _ _ IH => exact (reaches₁_eq (by rfl)).2 (IH _ _)
+    | branch p _ _ IH₁ IH₂ =>
       unfold TM1.stepAux; cases e : p T.1 v
       · exact (reaches₁_eq (by simp only [TM0.step, tr, trAux, e]; rfl)).2 (IH₂ _ _)
       · exact (reaches₁_eq (by simp only [TM0.step, tr, trAux, e]; rfl)).2 (IH₁ _ _)
-    iterate 2
+    | _ =>
       exact TransGen.single (congr_arg some (congr (congr_arg TM0.Cfg.mk rfl) (Tape.write_self T)))
 #align turing.TM1to0.tr_respects Turing.TM1to0.tr_respects
 
@@ -1550,20 +1550,20 @@ theorem tr_supports {S : Finset Λ} (ss : TM1.Supports M S) :
     cases q'; · exact Multiset.mem_cons_self _ _
     simp only [tr, Option.mem_def] at h₁
     have := TM1.stmts_supportsStmt ss h₂
-    revert this; induction q generalizing v <;> intro hs
-    case move d q =>
+    revert this; induction q generalizing v with intro hs
+    | move d q =>
       cases h₁; refine' TM1.stmts_trans _ h₂
       unfold TM1.stmts₁
       exact Finset.mem_insert_of_mem TM1.stmts₁_self
-    case write b q =>
+    | write b q =>
       cases h₁; refine' TM1.stmts_trans _ h₂
       unfold TM1.stmts₁
       exact Finset.mem_insert_of_mem TM1.stmts₁_self
-    case load b q IH =>
+    | load b q IH =>
       refine' IH _ (TM1.stmts_trans _ h₂) h₁ hs
       unfold TM1.stmts₁
       exact Finset.mem_insert_of_mem TM1.stmts₁_self
-    case branch p q₁ q₂ IH₁ IH₂ =>
+    | branch p q₁ q₂ IH₁ IH₂ =>
       cases h : p a v <;> rw [trAux, h] at h₁
       · refine' IH₂ _ (TM1.stmts_trans _ h₂) h₁ hs.2
         unfold TM1.stmts₁
@@ -1571,10 +1571,10 @@ theorem tr_supports {S : Finset Λ} (ss : TM1.Supports M S) :
       · refine' IH₁ _ (TM1.stmts_trans _ h₂) h₁ hs.1
         unfold TM1.stmts₁
         exact Finset.mem_insert_of_mem (Finset.mem_union_left _ TM1.stmts₁_self)
-    case goto l =>
+    | goto l =>
       cases h₁
       exact Finset.some_mem_insertNone.2 (Finset.mem_biUnion.2 ⟨_, hs _ _, TM1.stmts₁_self⟩)
-    case halt => cases h₁
+    | halt => cases h₁
 #align turing.TM1to0.tr_supports Turing.TM1to0.tr_supports
 
 end
@@ -1859,30 +1859,30 @@ theorem tr_respects {enc₀} :
       exact this _ R
     clear R l₁
     intro q R
-    induction' q generalizing v L R
-    case move d q IH =>
+    induction q generalizing v L R with
+    | move d q IH =>
       cases d <;>
           simp only [trNormal, iterate, stepAux_move, stepAux, ListBlank.head_cons,
             Tape.move_left_mk', ListBlank.cons_head_tail, ListBlank.tail_cons,
             trTape'_move_left enc0, trTape'_move_right enc0] <;>
         apply IH
-    case write f q IH =>
+    | write f q IH =>
       simp only [trNormal, stepAux_read dec enc0 encdec, stepAux]
       refine' ReflTransGen.head rfl _
       obtain ⟨a, R, rfl⟩ := R.exists_cons
       rw [tr, Tape.mk'_head, stepAux_write, ListBlank.head_cons, stepAux_move,
         trTape'_move_left enc0, ListBlank.head_cons, ListBlank.tail_cons, Tape.write_mk']
       apply IH
-    case load a q IH =>
+    | load a q IH =>
       simp only [trNormal, stepAux_read dec enc0 encdec]
       apply IH
-    case branch p q₁ q₂ IH₁ IH₂ =>
+    | branch p q₁ q₂ IH₁ IH₂ =>
       simp only [trNormal, stepAux_read dec enc0 encdec, stepAux]
       cases p R.head v <;> [apply IH₂; apply IH₁]
-    case goto l =>
+    | goto l =>
       simp only [trNormal, stepAux_read dec enc0 encdec, stepAux, trCfg, trTape_mk']
       apply ReflTransGen.refl
-    case halt =>
+    | halt =>
       simp only [trNormal, stepAux, trCfg, stepAux_move, trTape'_move_left enc0,
         trTape'_move_right enc0, trTape_mk']
       apply ReflTransGen.refl
@@ -1919,12 +1919,12 @@ theorem tr_supports {S : Finset Λ} (ss : Supports M S) : Supports (tr enc dec M
       rcases Finset.mem_insert.1 h with (rfl | h)
       exacts [this.1, this.2 _ h]
     intro q hs hw
-    induction q
-    case move d q IH =>
+    induction q with
+    | move d q IH =>
       unfold writes at hw ⊢
       replace IH := IH hs hw; refine' ⟨_, IH.2⟩
       cases d <;> simp only [trNormal, iterate, supportsStmt_move, IH]
-    case write f q IH =>
+    | write f q IH =>
       unfold writes at hw ⊢
       simp only [Finset.mem_image, Finset.mem_union, Finset.mem_univ, exists_prop, true_and_iff]
         at hw ⊢
@@ -1933,21 +1933,21 @@ theorem tr_supports {S : Finset Λ} (ss : Supports M S) : Supports (tr enc dec M
       rcases hq with (⟨a, q₂, rfl⟩ | hq)
       · simp only [tr, supportsStmt_write, supportsStmt_move, IH.1]
       · exact IH.2 _ hq
-    case load a q IH =>
+    | load a q IH =>
       unfold writes at hw ⊢
       replace IH := IH hs hw
       refine' ⟨supportsStmt_read _ fun _ ↦ IH.1, IH.2⟩
-    case branch p q₁ q₂ IH₁ IH₂ =>
+    | branch p q₁ q₂ IH₁ IH₂ =>
       unfold writes at hw ⊢
       simp only [Finset.mem_union] at hw ⊢
       replace IH₁ := IH₁ hs.1 fun q hq ↦ hw q (Or.inl hq)
       replace IH₂ := IH₂ hs.2 fun q hq ↦ hw q (Or.inr hq)
       exact ⟨supportsStmt_read _ fun _ ↦ ⟨IH₁.1, IH₂.1⟩, fun q ↦ Or.rec (IH₁.2 _) (IH₂.2 _)⟩
-    case goto l =>
+    | goto l =>
       simp only [writes, Finset.not_mem_empty]; refine' ⟨_, fun _ ↦ False.elim⟩
       refine' supportsStmt_read _ fun a _ s ↦ _
       exact Finset.mem_biUnion.2 ⟨_, hs _ _, Finset.mem_insert_self _ _⟩
-    case halt =>
+    | halt =>
       simp only [writes, Finset.not_mem_empty]; refine' ⟨_, fun _ ↦ False.elim⟩
       simp only [SupportsStmt, supportsStmt_move, trNormal]⟩
 #align turing.TM1to1.tr_supports Turing.TM1to1.tr_supports
@@ -2191,32 +2191,33 @@ theorem stmts₁_self {q : Stmt₂} : q ∈ stmts₁ q := by
 
 theorem stmts₁_trans {q₁ q₂ : Stmt₂} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ ⊆ stmts₁ q₂ := by
   intro h₁₂ q₀ h₀₁
-  induction' q₂ with _ _ q IH _ _ q IH _ _ q IH _ q IH <;> simp only [stmts₁] at h₁₂ ⊢ <;>
-    simp only [Finset.mem_insert, Finset.mem_singleton, Finset.mem_union] at h₁₂
-  iterate 4
-    rcases h₁₂ with (rfl | h₁₂)
-    · unfold stmts₁ at h₀₁
-      exact h₀₁
-    · exact Finset.mem_insert_of_mem (IH h₁₂)
-  case branch f q₁ q₂ IH₁ IH₂ =>
+  induction q₂ with (
+    simp only [stmts₁] at h₁₂ ⊢
+    simp only [Finset.mem_insert, Finset.mem_singleton, Finset.mem_union] at h₁₂)
+  | branch f q₁ q₂ IH₁ IH₂ =>
     rcases h₁₂ with (rfl | h₁₂ | h₁₂)
     · unfold stmts₁ at h₀₁
       exact h₀₁
     · exact Finset.mem_insert_of_mem (Finset.mem_union_left _ (IH₁ h₁₂))
     · exact Finset.mem_insert_of_mem (Finset.mem_union_right _ (IH₂ h₁₂))
-  case goto l => subst h₁₂; exact h₀₁
-  case halt => subst h₁₂; exact h₀₁
+  | goto l => subst h₁₂; exact h₀₁
+  | halt => subst h₁₂; exact h₀₁
+  | load  _ q IH | _ _ _ q IH =>
+    rcases h₁₂ with (rfl | h₁₂)
+    · unfold stmts₁ at h₀₁
+      exact h₀₁
+    · exact Finset.mem_insert_of_mem (IH h₁₂)
 #align turing.TM2.stmts₁_trans Turing.TM2.stmts₁_trans
 
 theorem stmts₁_supportsStmt_mono {S : Finset Λ} {q₁ q₂ : Stmt₂} (h : q₁ ∈ stmts₁ q₂)
     (hs : SupportsStmt S q₂) : SupportsStmt S q₁ := by
-  induction' q₂ with _ _ q IH _ _ q IH _ _ q IH _ q IH <;>
+  induction q₂ with
     simp only [stmts₁, SupportsStmt, Finset.mem_insert, Finset.mem_union, Finset.mem_singleton]
       at h hs
-  iterate 4 rcases h with (rfl | h) <;> [exact hs; exact IH h hs]
-  case branch f q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts [hs, IH₁ h hs.1, IH₂ h hs.2]
-  case goto l => subst h; exact hs
-  case halt => subst h; trivial
+  | branch f q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts [hs, IH₁ h hs.1, IH₂ h hs.2]
+  | goto l => subst h; exact hs
+  | halt => subst h; trivial
+  | load _ _ IH | _ _ _ _ IH => rcases h with (rfl | h) <;> [exact hs; exact IH h hs]
 #align turing.TM2.stmts₁_supports_stmt_mono Turing.TM2.stmts₁_supportsStmt_mono
 
 /-- The set of statements accessible from initial set `S` of labels. -/
@@ -2251,14 +2252,14 @@ theorem step_supports (M : Λ → Stmt₂) {S : Finset Λ} (ss : Supports M S) :
   | ⟨some l₁, v, T⟩, c', h₁, h₂ => by
     replace h₂ := ss.2 _ (Finset.some_mem_insertNone.1 h₂)
     simp only [step, Option.mem_def, Option.some.injEq] at h₁; subst c'
-    revert h₂; induction' M l₁ with _ _ q IH _ _ q IH _ _ q IH _ q IH generalizing v T <;> intro hs
-    iterate 4 exact IH _ _ hs
-    case branch p q₁' q₂' IH₁ IH₂ =>
+    revert h₂; induction M l₁ generalizing v T with intro hs
+    | branch p q₁' q₂' IH₁ IH₂ =>
       unfold stepAux; cases p v
       · exact IH₂ _ _ hs.2
       · exact IH₁ _ _ hs.1
-    case goto => exact Finset.some_mem_insertNone.2 (hs _)
-    case halt => apply Multiset.mem_cons_self
+    | goto => exact Finset.some_mem_insertNone.2 (hs _)
+    | halt => apply Multiset.mem_cons_self
+    | load _ _ IH | _ _ _ _ IH => exact IH _ _ hs
 #align turing.TM2.step_supports Turing.TM2.step_supports
 
 variable [Inhabited σ]
@@ -2556,8 +2557,8 @@ theorem tr_respects_aux₂ {k : K} {q : Stmt₂₁} {v : σ} {S : ∀ k, List (
         TM1.stepAux (trStAct q o) v
             ((Tape.move Dir.right)^[(S k).length] (Tape.mk' ∅ (addBottom L))) =
           TM1.stepAux q v' ((Tape.move Dir.right)^[(S' k).length] (Tape.mk' ∅ (addBottom L'))) := by
-  dsimp only; simp; cases o <;> simp only [stWrite, stVar, trStAct, TM1.stepAux]
-  case push f =>
+  dsimp only; simp; cases o with simp only [stWrite, stVar, trStAct, TM1.stepAux]
+  | push f =>
     have := Tape.write_move_right_n fun a : Γ' ↦ (a.1, update a.2 k (some (f v)))
     refine'
       ⟨_, fun k' ↦ _, by
@@ -2586,7 +2587,7 @@ theorem tr_respects_aux₂ {k : K} {q : Stmt₂₁} {v : σ} {S : ∀ k, List (
             List.length_append, List.length_map]
     · split_ifs <;> rw [Function.update_noteq h', ← proj_map_nth, hL]
       rw [Function.update_noteq h']
-  case peek f =>
+  | peek f =>
     rw [Function.update_eq_self]
     use L, hL; rw [Tape.move_left_right]; congr
     cases e : S k; · rfl
@@ -2594,7 +2595,7 @@ theorem tr_respects_aux₂ {k : K} {q : Stmt₂₁} {v : σ} {S : ∀ k, List (
       Tape.move_right_n_head, Tape.mk'_nth_nat, addBottom_nth_snd, stk_nth_val _ (hL k), e,
       List.reverse_cons, ← List.length_reverse, List.get?_concat_length]
     rfl
-  case pop f =>
+  | pop f =>
     cases' e : S k with hd tl
     · simp only [Tape.mk'_head, ListBlank.head_cons, Tape.move_left_mk', List.length,
         Tape.write_mk', List.head?, iterate_zero_apply, List.tail_nil]
doc:Move misplaced docstring (#9296)
Diff
@@ -1015,12 +1015,12 @@ set_option linter.uppercaseLean3 false
 
 section
 
+-- type of "labels" or TM states
 variable (Γ : Type*) [Inhabited Γ]
 
 -- type of tape symbols
 variable (Λ : Type*) [Inhabited Λ]
 
--- type of "labels" or TM states
 /-- A Turing machine "statement" is just a command to either move
   left or right, or write a symbol on the tape. -/
 inductive Stmt
@@ -1207,8 +1207,8 @@ state, but the statements themselves have a fixed structure. The `Stmt`s can be
 
 Note that here most statements do not have labels; `goto` commands can only go to a new function.
 Only the `goto` and `halt` statements actually take a step; the rest is done by recursion on
-statements and so take 0 steps. (There is a uniform bound on many statements can be executed before
-the next `goto`, so this is an `O(1)` speedup with the constant depending on the machine.)
+statements and so take 0 steps. (There is a uniform bound on how many statements can be executed
+before the next `goto`, so this is an `O(1)` speedup with the constant depending on the machine.)
 
 The `halt` command has a one step stutter before actually halting so that any changes made before
 the halt have a chance to be "committed", since the `eval` relation uses the final configuration
chore: remove uses of cases' (#9171)

I literally went through and regex'd some uses of cases', replacing them with rcases; this is meant to be a low effort PR as I hope that tools can do this in the future.

rcases is an easier replacement than cases, though with better tools we could in future do a second pass converting simple rcases added here (and existing ones) to cases.

Diff
@@ -133,10 +133,10 @@ theorem BlankRel.trans {Γ} [Inhabited Γ] {l₁ l₂ l₃ : List Γ} :
     BlankRel l₁ l₂ → BlankRel l₂ l₃ → BlankRel l₁ l₃ := by
   rintro (h₁ | h₁) (h₂ | h₂)
   · exact Or.inl (h₁.trans h₂)
-  · cases' le_total l₁.length l₃.length with h h
+  · rcases le_total l₁.length l₃.length with h | h
     · exact Or.inl (h₁.above_of_le h₂ h)
     · exact Or.inr (h₂.above_of_le h₁ h)
-  · cases' le_total l₁.length l₃.length with h h
+  · rcases le_total l₁.length l₃.length with h | h
     · exact Or.inl (h₁.below_of_le h₂ h)
     · exact Or.inr (h₂.below_of_le h₁ h)
   · exact Or.inr (h₂.trans h₁)
@@ -284,7 +284,7 @@ def ListBlank.nth {Γ} [Inhabited Γ] (l : ListBlank Γ) (n : ℕ) : Γ := by
   cases' lt_or_le n _ with h h
   · rw [List.getI_append _ _ _ h]
   rw [List.getI_eq_default _ h]
-  cases' le_or_lt _ n with h₂ h₂
+  rcases le_or_lt _ n with h₂ | h₂
   · rw [List.getI_eq_default _ h₂]
   rw [List.getI_eq_get _ h₂, List.get_append_right' h, List.get_replicate]
 #align turing.list_blank.nth Turing.ListBlank.nth
doc(Computability/Halting): Mark named theorems (#8577)

Mark these named theorems: Rice, Downward and Upward Skolem

Diff
@@ -504,7 +504,7 @@ instance Tape.inhabited {Γ} [Inhabited Γ] : Inhabited (Tape Γ) :=
   ⟨by constructor <;> apply default⟩
 #align turing.tape.inhabited Turing.Tape.inhabited
 
-/-- A direction for the turing machine `move` command, either
+/-- A direction for the Turing machine `move` command, either
   left or right. -/
 inductive Dir
   | left
@@ -986,7 +986,7 @@ theorem tr_eval' {σ₁ σ₂} (f₁ : σ₁ → Option σ₁) (f₂ : σ₂ →
 /-!
 ## The TM0 model
 
-A TM0 turing machine is essentially a Post-Turing machine, adapted for type theory.
+A TM0 Turing machine is essentially a Post-Turing machine, adapted for type theory.
 
 A Post-Turing machine with symbol type `Γ` and label type `Λ` is a function
 `Λ → Γ → Option (Λ × Stmt)`, where a `Stmt` can be either `move left`, `move right` or `write a`
@@ -1349,7 +1349,7 @@ theorem stmts₁_supportsStmt_mono {S : Finset Λ} {q₁ q₂ : Stmt₁} (h : q
   case halt => subst h; trivial
 #align turing.TM1.stmts₁_supports_stmt_mono Turing.TM1.stmts₁_supportsStmt_mono
 
-/-- The set of all statements in a turing machine, plus one extra value `none` representing the
+/-- The set of all statements in a Turing machine, plus one extra value `none` representing the
 halt state. This is used in the TM1 to TM0 reduction. -/
 noncomputable def stmts (M : Λ → Stmt₁) (S : Finset Λ) : Finset (Option Stmt₁) :=
   Finset.insertNone (S.biUnion fun q ↦ stmts₁ (M q))
fix(Tactic/Cases): fix context for induction' (#7684)

Adding a test case for induction' that failed and fixing it: induction' a would accidentally leave a and variables depending on a in context.

Diff
@@ -1501,11 +1501,11 @@ theorem tr_respects :
   fun_respects.2 fun ⟨l₁, v, T⟩ ↦ by
     cases' l₁ with l₁; · exact rfl
     simp only [trCfg, TM1.step, FRespects, Option.map]
-    induction' M l₁ with _ q IH _ q IH _ q IH generalizing v T
-    case move d q IH => exact TransGen.head rfl (IH _ _)
-    case write a q IH => exact TransGen.head rfl (IH _ _)
-    case load a q IH => exact (reaches₁_eq (by rfl)).2 (IH _ _)
-    case branch p q₁ q₂ IH₁ IH₂ =>
+    induction' M l₁ with _ _ IH _ _ IH _ _ IH generalizing v T
+    case move _ _ IH => exact TransGen.head rfl (IH _ _)
+    case write _ _ IH => exact TransGen.head rfl (IH _ _)
+    case load _ _ IH => exact (reaches₁_eq (by rfl)).2 (IH _ _)
+    case branch p _ _ IH₁ IH₂ =>
       unfold TM1.stepAux; cases e : p T.1 v
       · exact (reaches₁_eq (by simp only [TM0.step, tr, trAux, e]; rfl)).2 (IH₂ _ _)
       · exact (reaches₁_eq (by simp only [TM0.step, tr, trAux, e]; rfl)).2 (IH₁ _ _)
chore: missing spaces after rcases, convert and congrm (#7725)

Replace rcases( with rcases (. Same thing for convert( and congrm(. No other change.

Diff
@@ -978,7 +978,7 @@ theorem tr_eval' {σ₁ σ₂} (f₁ : σ₁ → Option σ₁) (f₂ : σ₂ →
       let ⟨b₁, bb, hb⟩ := tr_eval_rev H rfl h
       (Part.mem_map_iff _).2 ⟨b₁, hb, bb⟩,
       fun h ↦ by
-      rcases(Part.mem_map_iff _).1 h with ⟨b₁, ab, bb⟩
+      rcases (Part.mem_map_iff _).1 h with ⟨b₁, ab, bb⟩
       rcases tr_eval H rfl ab with ⟨_, rfl, h⟩
       rwa [bb] at h⟩
 #align turing.tr_eval' Turing.tr_eval'
chore: fix nonterminal simps (#7497)

Fixes the nonterminal simps identified by #7496

Diff
@@ -1840,7 +1840,7 @@ theorem stepAux_read (f : Γ → Stmt'₁) (v : σ) (L R : ListBlank Γ) :
     stepAux (readAux l₂.length fun v ↦ f (a ::ᵥ v)) v
       (Tape.mk' ((L'.append l₁).cons a) (R'.append l₂))
   · dsimp [readAux, stepAux]
-    simp
+    simp only [ListBlank.head_cons, Tape.move_right_mk', ListBlank.tail_cons]
     cases a <;> rfl
   rw [← ListBlank.append, IH]
   rfl
chore: avoid lean3 style have/suffices (#6964)

Many proofs use the "stream of consciousness" style from Lean 3, rather than have ... := or suffices ... from/by.

This PR updates a fraction of these to the preferred Lean 4 style.

I think a good goal would be to delete the "deferred" versions of have, suffices, and let at the bottom of Mathlib.Tactic.Have

(Anyone who would like to contribute more cleanup is welcome to push directly to this branch.)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -1696,8 +1696,7 @@ def trNormal : Stmt₁ → Stmt'₁
 
 theorem stepAux_move (d : Dir) (q : Stmt'₁) (v : σ) (T : Tape Bool) :
     stepAux (moveₙ d q) v T = stepAux q v ((Tape.move d)^[n] T) := by
-  suffices : ∀ i, stepAux ((Stmt.move d)^[i] q) v T = stepAux q v ((Tape.move d)^[i] T)
-  exact this n
+  suffices ∀ i, stepAux ((Stmt.move d)^[i] q) v T = stepAux q v ((Tape.move d)^[i] T) from this n
   intro i; induction' i with i IH generalizing T; · rfl
   rw [iterate_succ', iterate_succ]
   simp only [stepAux, Function.comp_apply]
chore: remove unused simps (#6632)

Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -2560,7 +2560,6 @@ theorem tr_respects_aux₂ {k : K} {q : Stmt₂₁} {v : σ} {S : ∀ k, List (
   dsimp only; simp; cases o <;> simp only [stWrite, stVar, trStAct, TM1.stepAux]
   case push f =>
     have := Tape.write_move_right_n fun a : Γ' ↦ (a.1, update a.2 k (some (f v)))
-    dsimp only at this
     refine'
       ⟨_, fun k' ↦ _, by
         -- Porting note: `rw [...]` to `erw [...]; rfl`.
@@ -2725,7 +2724,6 @@ theorem tr_respects : Respects (TM2.step M) (TM1.step (tr M)) TrCfg := by
 theorem trCfg_init (k) (L : List (Γ k)) : TrCfg (TM2.init k L) (TM1.init (trInit k L) : Cfg₂₁) := by
   rw [(_ : TM1.init _ = _)]
   · refine' ⟨ListBlank.mk (L.reverse.map fun a ↦ update default k (some a)), fun k' ↦ _⟩
-    simp only [TM2.Cfg.stk, TM2.init]
     refine' ListBlank.ext fun i ↦ _
     rw [ListBlank.map_mk, ListBlank.nth_mk, List.getI_eq_iget_get?, List.map_map]
     have : ((proj k').f ∘ fun a => update (β := fun k => Option (Γ k)) default k (some a))
feat(Data/List/Basic): remove bind_append (#6599)

This removes bind_append, since an identical append_bind is already in std.

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -470,7 +470,7 @@ def ListBlank.bind {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (l : ListBlank Γ) (f
     (hf : ∃ n, f default = List.replicate n default) : ListBlank Γ' := by
   apply l.liftOn (fun l ↦ ListBlank.mk (List.bind l f))
   rintro l _ ⟨i, rfl⟩; cases' hf with n e; refine' Quotient.sound' (Or.inl ⟨i * n, _⟩)
-  rw [List.bind_append, mul_comm]; congr
+  rw [List.append_bind, mul_comm]; congr
   induction' i with i IH; rfl
   simp only [IH, e, List.replicate_add, Nat.mul_succ, add_comm, List.replicate_succ, List.cons_bind]
 #align turing.list_blank.bind Turing.ListBlank.bind
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -425,12 +425,12 @@ theorem ListBlank.nth_map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMa
 #align turing.list_blank.nth_map Turing.ListBlank.nth_map
 
 /-- The `i`-th projection as a pointed map. -/
-def proj {ι : Type _} {Γ : ι → Type _} [∀ i, Inhabited (Γ i)] (i : ι) :
+def proj {ι : Type*} {Γ : ι → Type*} [∀ i, Inhabited (Γ i)] (i : ι) :
     PointedMap (∀ i, Γ i) (Γ i) :=
   ⟨fun a ↦ a i, rfl⟩
 #align turing.proj Turing.proj
 
-theorem proj_map_nth {ι : Type _} {Γ : ι → Type _} [∀ i, Inhabited (Γ i)] (i : ι) (L n) :
+theorem proj_map_nth {ι : Type*} {Γ : ι → Type*} [∀ i, Inhabited (Γ i)] (i : ι) (L n) :
     (ListBlank.map (@proj ι Γ _ i) L).nth n = L.nth n i := by
   rw [ListBlank.nth_map]; rfl
 #align turing.proj_map_nth Turing.proj_map_nth
@@ -494,7 +494,7 @@ theorem ListBlank.cons_bind {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (a : Γ) (l
 current position of the head), together with two `ListBlank`s denoting the portions of the tape
 going off to the left and right. When the Turing machine moves right, an element is pulled from the
 right side and becomes the new head, while the head element is consed onto the left side. -/
-structure Tape (Γ : Type _) [Inhabited Γ] where
+structure Tape (Γ : Type*) [Inhabited Γ] where
   head : Γ
   left : ListBlank Γ
   right : ListBlank Γ
@@ -821,7 +821,7 @@ which is either terminal (meaning `a = b`) or where the next point also satisfie
 holds of any point where `eval f a` evaluates to `b`. This formalizes the notion that if
 `eval f a` evaluates to `b` then it reaches terminal state `b` in finitely many steps. -/
 @[elab_as_elim]
-def evalInduction {σ} {f : σ → Option σ} {b : σ} {C : σ → Sort _} {a : σ}
+def evalInduction {σ} {f : σ → Option σ} {b : σ} {C : σ → Sort*} {a : σ}
     (h : b ∈ eval f a) (H : ∀ a, b ∈ eval f a → (∀ a', f a = some a' → C a') → C a) : C a :=
   PFun.fixInduction h fun a' ha' h' ↦
     H _ ha' fun b' e ↦ h' _ <| Part.mem_some_iff.2 <| by rw [e]; rfl
@@ -1015,10 +1015,10 @@ set_option linter.uppercaseLean3 false
 
 section
 
-variable (Γ : Type _) [Inhabited Γ]
+variable (Γ : Type*) [Inhabited Γ]
 
 -- type of tape symbols
-variable (Λ : Type _) [Inhabited Λ]
+variable (Λ : Type*) [Inhabited Λ]
 
 -- type of "labels" or TM states
 /-- A Turing machine "statement" is just a command to either move
@@ -1122,13 +1122,13 @@ end
 
 section
 
-variable {Γ : Type _} [Inhabited Γ]
+variable {Γ : Type*} [Inhabited Γ]
 
-variable {Γ' : Type _} [Inhabited Γ']
+variable {Γ' : Type*} [Inhabited Γ']
 
-variable {Λ : Type _} [Inhabited Λ]
+variable {Λ : Type*} [Inhabited Λ]
 
-variable {Λ' : Type _} [Inhabited Λ']
+variable {Λ' : Type*} [Inhabited Λ']
 
 /-- Map a TM statement across a function. This does nothing to move statements and maps the write
 values. -/
@@ -1223,13 +1223,13 @@ set_option linter.uppercaseLean3 false
 
 section
 
-variable (Γ : Type _) [Inhabited Γ]
+variable (Γ : Type*) [Inhabited Γ]
 
 -- Type of tape symbols
-variable (Λ : Type _)
+variable (Λ : Type*)
 
 -- Type of function labels
-variable (σ : Type _)
+variable (σ : Type*)
 
 -- Type of variable settings
 /-- The TM1 model is a simplification and extension of TM0
@@ -1437,11 +1437,11 @@ set_option linter.uppercaseLean3 false
 
 section
 
-variable {Γ : Type _} [Inhabited Γ]
+variable {Γ : Type*} [Inhabited Γ]
 
-variable {Λ : Type _} [Inhabited Λ]
+variable {Λ : Type*} [Inhabited Λ]
 
-variable {σ : Type _} [Inhabited σ]
+variable {σ : Type*} [Inhabited σ]
 
 local notation "Stmt₁" => TM1.Stmt Γ Λ σ
 
@@ -1614,7 +1614,7 @@ open TM1
 
 section
 
-variable {Γ : Type _} [Inhabited Γ]
+variable {Γ : Type*} [Inhabited Γ]
 
 theorem exists_enc_dec [Fintype Γ] : ∃ (n : ℕ) (enc : Γ → Vector Bool n) (dec : Vector Bool n → Γ),
     enc default = Vector.replicate n false ∧ ∀ a, dec (enc a) = a := by
@@ -1630,9 +1630,9 @@ theorem exists_enc_dec [Fintype Γ] : ∃ (n : ℕ) (enc : Γ → Vector Bool n)
     exact ⟨_, enc, Function.invFun enc, H.setValue_eq _ _, Function.leftInverse_invFun enc.2⟩
 #align turing.TM1to1.exists_enc_dec Turing.TM1to1.exists_enc_dec
 
-variable {Λ : Type _} [Inhabited Λ]
+variable {Λ : Type*} [Inhabited Λ]
 
-variable {σ : Type _} [Inhabited σ]
+variable {σ : Type*} [Inhabited σ]
 
 local notation "Stmt₁" => Stmt Γ Λ σ
 
@@ -1979,9 +1979,9 @@ set_option linter.uppercaseLean3 false
 
 section
 
-variable {Γ : Type _} [Inhabited Γ]
+variable {Γ : Type*} [Inhabited Γ]
 
-variable {Λ : Type _} [Inhabited Λ]
+variable {Λ : Type*} [Inhabited Λ]
 
 /-- The machine states for a TM1 emulating a TM0 machine. States of the TM0 machine are embedded
 as `normal q` states, but the actual operation is split into two parts, a jump to `act s q`
@@ -2085,16 +2085,16 @@ set_option linter.uppercaseLean3 false
 
 section
 
-variable {K : Type _} [DecidableEq K]
+variable {K : Type*} [DecidableEq K]
 
 -- Index type of stacks
-variable (Γ : K → Type _)
+variable (Γ : K → Type*)
 
 -- Type of stack elements
-variable (Λ : Type _)
+variable (Λ : Type*)
 
 -- Type of function labels
-variable (σ : Type _)
+variable (σ : Type*)
 
 -- Type of variable settings
 /-- The TM2 model removes the tape entirely from the TM1 model,
@@ -2323,7 +2323,7 @@ namespace TM2to1
 set_option linter.uppercaseLean3 false
 
 -- A displaced lemma proved in unnecessary generality
-theorem stk_nth_val {K : Type _} {Γ : K → Type _} {L : ListBlank (∀ k, Option (Γ k))} {k S} (n)
+theorem stk_nth_val {K : Type*} {Γ : K → Type*} {L : ListBlank (∀ k, Option (Γ k))} {k S} (n)
     (hL : ListBlank.map (proj k) L = ListBlank.mk (List.map some S).reverse) :
     L.nth n k = S.reverse.get? n := by
   rw [← proj_map_nth, hL, ← List.map_reverse, ListBlank.nth_mk, List.getI_eq_iget_get?,
@@ -2333,13 +2333,13 @@ theorem stk_nth_val {K : Type _} {Γ : K → Type _} {L : ListBlank (∀ k, Opti
 
 section
 
-variable {K : Type _} [DecidableEq K]
+variable {K : Type*} [DecidableEq K]
 
-variable {Γ : K → Type _}
+variable {Γ : K → Type*}
 
-variable {Λ : Type _} [Inhabited Λ]
+variable {Λ : Type*} [Inhabited Λ]
 
-variable {σ : Type _} [Inhabited σ]
+variable {σ : Type*} [Inhabited σ]
 
 local notation "Stmt₂" => TM2.Stmt Γ Λ σ
 
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,11 +2,6 @@
 Copyright (c) 2018 Mario Carneiro. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Mario Carneiro
-
-! This file was ported from Lean 3 source module computability.turing_machine
-! leanprover-community/mathlib commit 4c19a16e4b705bf135cf9a80ac18fcc99c438514
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Data.Fintype.Option
 import Mathlib.Data.Fintype.Prod
@@ -17,6 +12,8 @@ import Mathlib.Logic.Function.Iterate
 import Mathlib.Order.Basic
 import Mathlib.Tactic.ApplyFun
 
+#align_import computability.turing_machine from "leanprover-community/mathlib"@"4c19a16e4b705bf135cf9a80ac18fcc99c438514"
+
 /-!
 # Turing machines
 
chore: remove occurrences of semicolon after space (#5713)

This is the second half of the changes originally in #5699, removing all occurrences of ; after a space and implementing a linter rule to enforce it.

In most cases this 2-character substring has a space after it, so the following command was run first:

find . -type f -name "*.lean" -exec sed -i -E 's/ ; /; /g' {} \;

The remaining cases were few enough in number that they were done manually.

Diff
@@ -2384,7 +2384,7 @@ theorem addBottom_modifyNth (f : (∀ k, Option (Γ k)) → ∀ k, Option (Γ k)
     (addBottom L).modifyNth (fun a ↦ (a.1, f a.2)) n = addBottom (L.modifyNth f n) := by
   cases n <;>
     simp only [addBottom, ListBlank.head_cons, ListBlank.modifyNth, ListBlank.tail_cons]
-  congr ; symm; apply ListBlank.map_modifyNth; intro ; rfl
+  congr; symm; apply ListBlank.map_modifyNth; intro; rfl
 #align turing.TM2to1.add_bottom_modify_nth Turing.TM2to1.addBottom_modifyNth
 
 theorem addBottom_nth_snd (L : ListBlank (∀ k, Option (Γ k))) (n : ℕ) :
fix precedence of Nat.iterate (#5589)
Diff
@@ -650,7 +650,7 @@ theorem Tape.move_right_nth {Γ} [Inhabited Γ] (T : Tape Γ) (i : ℤ) :
 
 @[simp]
 theorem Tape.move_right_n_head {Γ} [Inhabited Γ] (T : Tape Γ) (i : ℕ) :
-    ((Tape.move Dir.right^[i]) T).head = T.nth i := by
+    ((Tape.move Dir.right)^[i] T).head = T.nth i := by
   induction i generalizing T
   · rfl
   · simp only [*, Tape.move_right_nth, Int.ofNat_succ, iterate_succ, Function.comp_apply]
@@ -702,8 +702,8 @@ theorem Tape.map_write {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap 
 --               itself, but it does indeed.
 @[simp, nolint simpNF]
 theorem Tape.write_move_right_n {Γ} [Inhabited Γ] (f : Γ → Γ) (L R : ListBlank Γ) (n : ℕ) :
-    ((Tape.move Dir.right^[n]) (Tape.mk' L R)).write (f (R.nth n)) =
-      (Tape.move Dir.right^[n]) (Tape.mk' L (R.modifyNth f n)) := by
+    ((Tape.move Dir.right)^[n] (Tape.mk' L R)).write (f (R.nth n)) =
+      (Tape.move Dir.right)^[n] (Tape.mk' L (R.modifyNth f n)) := by
   induction' n with n IH generalizing L R
   · simp only [ListBlank.nth_zero, ListBlank.modifyNth, iterate_zero_apply, Nat.zero_eq]
     rw [← Tape.write_mk', ListBlank.cons_head_tail]
@@ -1668,7 +1668,7 @@ variable {n : ℕ} (enc : Γ → Vector Bool n) (dec : Vector Bool n → Γ)
 
 /-- A move left or right corresponds to `n` moves across the super-cell. -/
 def move (d : Dir) (q : Stmt'₁) : Stmt'₁ :=
-  (Stmt.move d^[n]) q
+  (Stmt.move d)^[n] q
 #align turing.TM1to1.move Turing.TM1to1.move
 
 local notation "moveₙ" => @move Γ Λ σ n  -- Porting note: Added this to clean up types.
@@ -1698,8 +1698,8 @@ def trNormal : Stmt₁ → Stmt'₁
 #align turing.TM1to1.tr_normal Turing.TM1to1.trNormal
 
 theorem stepAux_move (d : Dir) (q : Stmt'₁) (v : σ) (T : Tape Bool) :
-    stepAux (moveₙ d q) v T = stepAux q v ((Tape.move d^[n]) T) := by
-  suffices : ∀ 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) := by
+  suffices : ∀ i, stepAux ((Stmt.move d)^[i] q) v T = stepAux q v ((Tape.move d)^[i] T)
   exact this n
   intro i; induction' i with i IH generalizing T; · rfl
   rw [iterate_succ', iterate_succ]
@@ -1709,7 +1709,7 @@ theorem stepAux_move (d : Dir) (q : Stmt'₁) (v : σ) (T : Tape Bool) :
 
 theorem supportsStmt_move {S : Finset Λ'₁} {d : Dir} {q : Stmt'₁} :
     SupportsStmt S (moveₙ d q) = SupportsStmt S q := by
-  suffices ∀ {i}, SupportsStmt S ((Stmt.move d^[i]) q) = _ from this
+  suffices ∀ {i}, SupportsStmt S ((Stmt.move d)^[i] q) = _ from this
   intro i; induction i generalizing q <;> simp only [*, iterate]; rfl
 #align turing.TM1to1.supports_stmt_move Turing.TM1to1.supportsStmt_move
 
@@ -1769,11 +1769,11 @@ def trCfg : Cfg₁ → Cfg'₁
 variable {enc}
 
 theorem trTape'_move_left (L R : ListBlank Γ) :
-    (Tape.move Dir.left^[n]) (trTape' enc0 L R) = trTape' enc0 L.tail (R.cons L.head) := by
+    (Tape.move Dir.left)^[n] (trTape' enc0 L R) = trTape' enc0 L.tail (R.cons L.head) := by
   obtain ⟨a, L, rfl⟩ := L.exists_cons
   simp only [trTape', ListBlank.cons_bind, ListBlank.head_cons, ListBlank.tail_cons]
   suffices ∀ {L' R' l₁ l₂} (_ : Vector.toList (enc a) = List.reverseAux l₁ l₂),
-      (Tape.move Dir.left^[l₁.length])
+      (Tape.move Dir.left)^[l₁.length]
       (Tape.mk' (ListBlank.append l₁ L') (ListBlank.append l₂ R')) =
       Tape.mk' L' (ListBlank.append (Vector.toList (enc a)) R') by
     simpa only [List.length_reverse, Vector.toList_length] using this (List.reverse_reverse _).symm
@@ -1787,8 +1787,8 @@ theorem trTape'_move_left (L R : ListBlank Γ) :
 #align turing.TM1to1.tr_tape'_move_left Turing.TM1to1.trTape'_move_left
 
 theorem trTape'_move_right (L R : ListBlank Γ) :
-    (Tape.move Dir.right^[n]) (trTape' enc0 L R) = trTape' enc0 (L.cons R.head) R.tail := by
-  suffices ∀ i L, (Tape.move Dir.right^[i]) ((Tape.move Dir.left^[i]) L) = L by
+    (Tape.move Dir.right)^[n] (trTape' enc0 L R) = trTape' enc0 (L.cons R.head) R.tail := by
+  suffices ∀ i L, (Tape.move Dir.right)^[i] ((Tape.move Dir.left)^[i] L) = L by
     refine' (Eq.symm _).trans (this n _)
     simp only [trTape'_move_left, ListBlank.cons_head_tail, ListBlank.head_cons,
       ListBlank.tail_cons]
@@ -2558,8 +2558,8 @@ theorem tr_respects_aux₂ {k : K} {q : Stmt₂₁} {v : σ} {S : ∀ k, List (
     ∃ L' : ListBlank (∀ k, Option (Γ k)),
       (∀ k, L'.map (proj k) = ListBlank.mk ((S' k).map some).reverse) ∧
         TM1.stepAux (trStAct q o) v
-            ((Tape.move Dir.right^[(S k).length]) (Tape.mk' ∅ (addBottom L))) =
-          TM1.stepAux q v' ((Tape.move Dir.right^[(S' k).length]) (Tape.mk' ∅ (addBottom L'))) := by
+            ((Tape.move Dir.right)^[(S k).length] (Tape.mk' ∅ (addBottom L))) =
+          TM1.stepAux q v' ((Tape.move Dir.right)^[(S' k).length] (Tape.mk' ∅ (addBottom L'))) := by
   dsimp only; simp; cases o <;> simp only [stWrite, stVar, trStAct, TM1.stepAux]
   case push f =>
     have := Tape.write_move_right_n fun a : Γ' ↦ (a.1, update a.2 k (some (f v)))
@@ -2660,7 +2660,7 @@ inductive TrCfg : Cfg₂ → Cfg₂₁ → Prop
 theorem tr_respects_aux₁ {k} (o q v) {S : List (Γ k)} {L : ListBlank (∀ k, Option (Γ k))}
     (hL : L.map (proj k) = ListBlank.mk (S.map some).reverse) (n) (H : n ≤ S.length) :
     Reaches₀ (TM1.step (tr M)) ⟨some (go k o q), v, Tape.mk' ∅ (addBottom L)⟩
-      ⟨some (go k o q), v, (Tape.move Dir.right^[n]) (Tape.mk' ∅ (addBottom L))⟩ := by
+      ⟨some (go k o q), v, (Tape.move Dir.right)^[n] (Tape.mk' ∅ (addBottom L))⟩ := by
   induction' n with n IH; · rfl
   apply (IH (le_of_lt H)).tail
   rw [iterate_succ_apply'];
@@ -2670,7 +2670,7 @@ theorem tr_respects_aux₁ {k} (o q v) {S : List (Γ k)} {L : ListBlank (∀ k,
 #align turing.TM2to1.tr_respects_aux₁ Turing.TM2to1.tr_respects_aux₁
 
 theorem tr_respects_aux₃ {q v} {L : ListBlank (∀ k, Option (Γ k))} (n) : Reaches₀ (TM1.step (tr M))
-    ⟨some (ret q), v, (Tape.move Dir.right^[n]) (Tape.mk' ∅ (addBottom L))⟩
+    ⟨some (ret q), v, (Tape.move Dir.right)^[n] (Tape.mk' ∅ (addBottom L))⟩
     ⟨some (ret q), v, Tape.mk' ∅ (addBottom L)⟩ := by
   induction' n with n IH; · rfl
   refine' Reaches₀.head _ IH
chore: disable relaxedAutoImplicit (#5277)

We disable the "relaxed" auto-implicit feature, so only single character identifiers become eligible as auto-implicits. See discussion on zulip and 2.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au>

Diff
@@ -1850,7 +1850,8 @@ theorem stepAux_read (f : Γ → Stmt'₁) (v : σ) (L R : ListBlank Γ) :
   rfl
 #align turing.TM1to1.step_aux_read Turing.TM1to1.stepAux_read
 
-theorem tr_respects : Respects (step M) (step (tr enc dec M)) fun c₁ c₂ ↦ trCfg enc enc₀ c₁ = c₂ :=
+theorem tr_respects {enc₀} :
+    Respects (step M) (step (tr enc dec M)) fun c₁ c₂ ↦ trCfg enc enc₀ c₁ = c₂ :=
   fun_respects.2 fun ⟨l₁, v, T⟩ ↦ by
     obtain ⟨L, R, rfl⟩ := T.exists_mk'
     cases' l₁ with l₁
chore: clean up spacing around at and goals (#5387)

Changes are of the form

  • some_tactic at h⊢ -> some_tactic at h ⊢
  • some_tactic at h -> some_tactic at h
Diff
@@ -1324,7 +1324,7 @@ theorem stmts₁_self {q : Stmt₁} : q ∈ stmts₁ q := by
 
 theorem stmts₁_trans {q₁ q₂ : Stmt₁} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ ⊆ stmts₁ q₂ := by
   intro h₁₂ q₀ h₀₁
-  induction' q₂ with _ q IH _ q IH _ q IH <;> simp only [stmts₁] at h₁₂⊢ <;>
+  induction' q₂ with _ q IH _ q IH _ q IH <;> simp only [stmts₁] at h₁₂ ⊢ <;>
     simp only [Finset.mem_insert, Finset.mem_union, Finset.mem_singleton] at h₁₂
   iterate 3
     rcases h₁₂ with (rfl | h₁₂)
@@ -1547,9 +1547,9 @@ theorem tr_supports {S : Finset Λ} (ss : TM1.Supports M S) :
   · intro q a q' s h₁ h₂
     rcases q with ⟨_ | q, v⟩; · cases h₁
     cases' q' with q' v'
-    simp only [trStmts, Finset.mem_coe] at h₂⊢
-    rw [Finset.mem_product] at h₂⊢
-    simp only [Finset.mem_univ, and_true_iff] at h₂⊢
+    simp only [trStmts, Finset.mem_coe] at h₂ ⊢
+    rw [Finset.mem_product] at h₂ ⊢
+    simp only [Finset.mem_univ, and_true_iff] at h₂ ⊢
     cases q'; · exact Multiset.mem_cons_self _ _
     simp only [tr, Option.mem_def] at h₁
     have := TM1.stmts_supportsStmt ss h₂
@@ -1924,25 +1924,25 @@ theorem tr_supports {S : Finset Λ} (ss : Supports M S) : Supports (tr enc dec M
     intro q hs hw
     induction q
     case move d q IH =>
-      unfold writes at hw⊢
+      unfold writes at hw ⊢
       replace IH := IH hs hw; refine' ⟨_, IH.2⟩
       cases d <;> simp only [trNormal, iterate, supportsStmt_move, IH]
     case write f q IH =>
-      unfold writes at hw⊢
+      unfold writes at hw ⊢
       simp only [Finset.mem_image, Finset.mem_union, Finset.mem_univ, exists_prop, true_and_iff]
-        at hw⊢
+        at hw ⊢
       replace IH := IH hs fun q hq ↦ hw q (Or.inr hq)
       refine' ⟨supportsStmt_read _ fun a _ s ↦ hw _ (Or.inl ⟨_, rfl⟩), fun q' hq ↦ _⟩
       rcases hq with (⟨a, q₂, rfl⟩ | hq)
       · simp only [tr, supportsStmt_write, supportsStmt_move, IH.1]
       · exact IH.2 _ hq
     case load a q IH =>
-      unfold writes at hw⊢
+      unfold writes at hw ⊢
       replace IH := IH hs hw
       refine' ⟨supportsStmt_read _ fun _ ↦ IH.1, IH.2⟩
     case branch p q₁ q₂ IH₁ IH₂ =>
-      unfold writes at hw⊢
-      simp only [Finset.mem_union] at hw⊢
+      unfold writes at hw ⊢
+      simp only [Finset.mem_union] at hw ⊢
       replace IH₁ := IH₁ hs.1 fun q hq ↦ hw q (Or.inl hq)
       replace IH₂ := IH₂ hs.2 fun q hq ↦ hw q (Or.inr hq)
       exact ⟨supportsStmt_read _ fun _ ↦ ⟨IH₁.1, IH₂.1⟩, fun q ↦ Or.rec (IH₁.2 _) (IH₂.2 _)⟩
@@ -2194,7 +2194,7 @@ theorem stmts₁_self {q : Stmt₂} : q ∈ stmts₁ q := by
 
 theorem stmts₁_trans {q₁ q₂ : Stmt₂} : q₁ ∈ stmts₁ q₂ → stmts₁ q₁ ⊆ stmts₁ q₂ := by
   intro h₁₂ q₀ h₀₁
-  induction' q₂ with _ _ q IH _ _ q IH _ _ q IH _ q IH <;> simp only [stmts₁] at h₁₂⊢ <;>
+  induction' q₂ with _ _ q IH _ _ q IH _ _ q IH _ q IH <;> simp only [stmts₁] at h₁₂ ⊢ <;>
     simp only [Finset.mem_insert, Finset.mem_singleton, Finset.mem_union] at h₁₂
   iterate 4
     rcases h₁₂ with (rfl | h₁₂)
@@ -2801,7 +2801,7 @@ theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports (tr M) (trSupp M
         exact ⟨IH₁, fun _ _ ↦ hret⟩
       · exact IH₂ _ h
     · intro _ _ IH ss' sub -- load
-      unfold TM2to1.trStmts₁ at ss' sub⊢
+      unfold TM2to1.trStmts₁ at ss' sub ⊢
       exact IH ss' sub
     · intro _ _ _ IH₁ IH₂ ss' sub -- branch
       unfold TM2to1.trStmts₁ at sub
chore: add links to issue for rw regressions (#5167)

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au>

Diff
@@ -2566,6 +2566,7 @@ theorem tr_respects_aux₂ {k : K} {q : Stmt₂₁} {v : σ} {S : ∀ k, List (
     refine'
       ⟨_, fun k' ↦ _, by
         -- Porting note: `rw [...]` to `erw [...]; rfl`.
+        -- https://github.com/leanprover-community/mathlib4/issues/5164
         erw [Tape.move_right_n_head, List.length, Tape.mk'_nth_nat, this,
           addBottom_modifyNth fun a ↦ update a k (some (f v)), Nat.add_one, iterate_succ']
         rfl⟩
chore: formatting issues (#4947)

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -2754,7 +2754,7 @@ theorem tr_eval_dom (k) (L : List (Γ k)) :
 
 theorem tr_eval (k) (L : List (Γ k)) {L₁ L₂} (H₁ : L₁ ∈ TM1.eval (tr M) (trInit k L))
     (H₂ : L₂ ∈ TM2.eval M k L) :
-    ∃ (S : ∀ k, List (Γ k))(L' : ListBlank (∀ k, Option (Γ k))),
+    ∃ (S : ∀ k, List (Γ k)) (L' : ListBlank (∀ k, Option (Γ k))),
       addBottom L' = L₁ ∧
         (∀ k, L'.map (proj k) = ListBlank.mk ((S k).map some).reverse) ∧ S k = L₂ := by
   obtain ⟨c₁, h₁, rfl⟩ := (Part.mem_map_iff _).1 H₁
chore: add space after exacts (#4945)

Too often tempted to change these during other PRs, so doing a mass edit here.

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au>

Diff
@@ -1347,7 +1347,7 @@ theorem stmts₁_supportsStmt_mono {S : Finset Λ} {q₁ q₂ : Stmt₁} (h : q
     simp only [stmts₁, SupportsStmt, Finset.mem_insert, Finset.mem_union, Finset.mem_singleton]
       at h hs
   iterate 3 rcases h with (rfl | h) <;> [exact hs; exact IH h hs]
-  case branch p q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts[hs, IH₁ h hs.1, IH₂ h hs.2]
+  case branch p q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts [hs, IH₁ h hs.1, IH₂ h hs.2]
   case goto l => subst h; exact hs
   case halt => subst h; trivial
 #align turing.TM1.stmts₁_supports_stmt_mono Turing.TM1.stmts₁_supportsStmt_mono
@@ -1920,7 +1920,7 @@ theorem tr_supports {S : Finset Λ} (ss : Supports M S) : Supports (tr enc dec M
       have :=
         this _ (ss.2 _ hl) fun q' hq ↦ Finset.mem_biUnion.2 ⟨_, hl, Finset.mem_insert_of_mem hq⟩
       rcases Finset.mem_insert.1 h with (rfl | h)
-      exacts[this.1, this.2 _ h]
+      exacts [this.1, this.2 _ h]
     intro q hs hw
     induction q
     case move d q IH =>
@@ -2217,7 +2217,7 @@ theorem stmts₁_supportsStmt_mono {S : Finset Λ} {q₁ q₂ : Stmt₂} (h : q
     simp only [stmts₁, SupportsStmt, Finset.mem_insert, Finset.mem_union, Finset.mem_singleton]
       at h hs
   iterate 4 rcases h with (rfl | h) <;> [exact hs; exact IH h hs]
-  case branch f q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts[hs, IH₁ h hs.1, IH₂ h hs.2]
+  case branch f q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts [hs, IH₁ h hs.1, IH₂ h hs.2]
   case goto l => subst h; exact hs
   case halt => subst h; trivial
 #align turing.TM2.stmts₁_supports_stmt_mono Turing.TM2.stmts₁_supportsStmt_mono
chore: fix typos (#4518)

I ran codespell Mathlib and got tired halfway through the suggestions.

Diff
@@ -1965,7 +1965,7 @@ end TM1to1
 To establish that TM0 and TM1 are equivalent computational models, we must also have a TM0 emulator
 in TM1. The main complication here is that TM0 allows an action to depend on the value at the head
 and local state, while TM1 doesn't (in order to have more programming language-like semantics).
-So we use a computed `goto` to go to a state that performes the desired action and then returns to
+So we use a computed `goto` to go to a state that performs the desired action and then returns to
 normal execution.
 
 One issue with this is that the `halt` instruction is supposed to halt immediately, not take a step
refactor: use the typeclass SProd to implement overloaded notation · ×ˢ · (#4200)

Currently, the following notations are changed from · ×ˢ · because Lean 4 can't deal with ambiguous notations. | Definition | Notation | | :

Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: Chris Hughes <chrishughes24@gmail.com>

Diff
@@ -1527,9 +1527,8 @@ variable [Fintype σ]
 
 /-- Given a finite set of accessible `Λ` machine states, there is a finite set of accessible
 machine states in the target (even though the type `Λ'` is infinite). -/
--- Porting note: Unfolded `×ˢ` to `Finset.product`.
 noncomputable def trStmts (S : Finset Λ) : Finset Λ'₁₀ :=
-  Finset.product (TM1.stmts M S) Finset.univ
+  (TM1.stmts M S) ×ˢ Finset.univ
 #align turing.TM1to0.tr_stmts Turing.TM1to0.trStmts
 
 open Classical
chore: update std 05-22 (#4248)

The main breaking change is that tac <;> [t1, t2] is now written tac <;> [t1; t2], to avoid clashing with tactics like cases and use that take comma-separated lists.

Diff
@@ -194,7 +194,7 @@ precondition `BlankExtends` instead of `BlankRel`. -/
 @[reducible]  -- Porting note: Removed `@[elab_as_elim]`
 protected def ListBlank.liftOn {Γ} [Inhabited Γ] {α} (l : ListBlank Γ) (f : List Γ → α)
     (H : ∀ a b, BlankExtends a b → f a = f b) : α :=
-  l.liftOn' f <| by rintro a b (h | h) <;> [exact H _ _ h, exact (H _ _ h).symm]
+  l.liftOn' f <| by rintro a b (h | h) <;> [exact H _ _ h; exact (H _ _ h).symm]
 #align turing.list_blank.lift_on Turing.ListBlank.liftOn
 
 /-- The quotient map turning a `List` into a `ListBlank`. -/
@@ -229,7 +229,7 @@ def ListBlank.tail {Γ} [Inhabited Γ] (l : ListBlank Γ) : ListBlank Γ := by
   rintro a _ ⟨i, rfl⟩
   refine' Quotient.sound' (Or.inl _)
   cases a
-  · cases' i with i <;> [exact ⟨0, rfl⟩, exact ⟨i, rfl⟩]
+  · cases' i with i <;> [exact ⟨0, rfl⟩; exact ⟨i, rfl⟩]
   exact ⟨i, rfl⟩
 #align turing.list_blank.tail Turing.ListBlank.tail
 
@@ -316,7 +316,7 @@ theorem ListBlank.ext {Γ} [i : Inhabited Γ] {L₁ L₂ : ListBlank Γ} :
     (∀ i, L₁.nth i = L₂.nth i) → L₁ = L₂ := by
   refine' ListBlank.induction_on L₁ fun l₁ ↦ ListBlank.induction_on L₂ fun l₂ H ↦ _
   wlog h : l₁.length ≤ l₂.length
-  · cases le_total l₁.length l₂.length <;> [skip, symm] <;> apply this <;> try assumption
+  · cases le_total l₁.length l₂.length <;> [skip; symm] <;> apply this <;> try assumption
     intro
     rw [H]
   refine' Quotient.sound' (Or.inl ⟨l₂.length - l₁.length, _⟩)
@@ -376,7 +376,7 @@ theorem PointedMap.map_pt {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMa
 @[simp]
 theorem PointedMap.headI_map {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap Γ Γ')
     (l : List Γ) : (l.map f).headI = f l.headI := by
-  cases l <;> [exact (PointedMap.map_pt f).symm, rfl]
+  cases l <;> [exact (PointedMap.map_pt f).symm; rfl]
 #align turing.pointed_map.head_map Turing.PointedMap.headI_map
 
 /-- The `map` function on lists is well defined on `ListBlank`s provided that the map is
@@ -1346,7 +1346,7 @@ theorem stmts₁_supportsStmt_mono {S : Finset Λ} {q₁ q₂ : Stmt₁} (h : q
   induction' q₂ with _ q IH _ q IH _ q IH <;>
     simp only [stmts₁, SupportsStmt, Finset.mem_insert, Finset.mem_union, Finset.mem_singleton]
       at h hs
-  iterate 3 rcases h with (rfl | h) <;> [exact hs, exact IH h hs]
+  iterate 3 rcases h with (rfl | h) <;> [exact hs; exact IH h hs]
   case branch p q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts[hs, IH₁ h hs.1, IH₂ h hs.2]
   case goto l => subst h; exact hs
   case halt => subst h; trivial
@@ -1882,7 +1882,7 @@ theorem tr_respects : Respects (step M) (step (tr enc dec M)) fun c₁ c₂ ↦
       apply IH
     case branch p q₁ q₂ IH₁ IH₂ =>
       simp only [trNormal, stepAux_read dec enc0 encdec, stepAux]
-      cases p R.head v <;> [apply IH₂, apply IH₁]
+      cases p R.head v <;> [apply IH₂; apply IH₁]
     case goto l =>
       simp only [trNormal, stepAux_read dec enc0 encdec, stepAux, trCfg, trTape_mk']
       apply ReflTransGen.refl
@@ -2217,7 +2217,7 @@ theorem stmts₁_supportsStmt_mono {S : Finset Λ} {q₁ q₂ : Stmt₂} (h : q
   induction' q₂ with _ _ q IH _ _ q IH _ _ q IH _ q IH <;>
     simp only [stmts₁, SupportsStmt, Finset.mem_insert, Finset.mem_union, Finset.mem_singleton]
       at h hs
-  iterate 4 rcases h with (rfl | h) <;> [exact hs, exact IH h hs]
+  iterate 4 rcases h with (rfl | h) <;> [exact hs; exact IH h hs]
   case branch f q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts[hs, IH₁ h hs.1, IH₂ h hs.2]
   case goto l => subst h; exact hs
   case halt => subst h; trivial
@@ -2719,7 +2719,7 @@ theorem tr_respects : Respects (TM2.step M) (TM1.step (tr M)) TrCfg := by
   | H₃ p q₁ q₂ IH₁ IH₂ =>
     unfold TM2.stepAux trNormal TM1.stepAux
     simp only []
-    cases p v <;> [exact IH₂ _ hT, exact IH₁ _ hT]
+    cases p v <;> [exact IH₂ _ hT; exact IH₁ _ hT]
   | H₄ => exact ⟨_, ⟨_, hT⟩, ReflTransGen.refl⟩
   | H₅ => exact ⟨_, ⟨_, hT⟩, ReflTransGen.refl⟩
 #align turing.TM2to1.tr_respects Turing.TM2to1.tr_respects
@@ -2778,7 +2778,7 @@ theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports (tr M) (trSupp M
       rcases Finset.mem_biUnion.1 h with ⟨l, lS, h⟩
       have :=
         this _ (ss.2 l lS) fun x hx ↦ Finset.mem_biUnion.2 ⟨_, lS, Finset.mem_insert_of_mem hx⟩
-      rcases Finset.mem_insert.1 h with (rfl | h) <;> [exact this.1, exact this.2 _ h]
+      rcases Finset.mem_insert.1 h with (rfl | h) <;> [exact this.1; exact this.2 _ h]
     clear h l'
     refine' stmtStRec _ _ _ _ _
     · intro _ s _ IH ss' sub -- stack op
@@ -2809,7 +2809,7 @@ theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports (tr M) (trSupp M
       cases' IH₂ ss'.2 fun x hx ↦ sub x <| Finset.mem_union_right _ hx with IH₂₁ IH₂₂
       refine' ⟨⟨IH₁₁, IH₂₁⟩, fun l h ↦ _⟩
       rw [trStmts₁] at h
-      rcases Finset.mem_union.1 h with (h | h) <;> [exact IH₁₂ _ h, exact IH₂₂ _ h]
+      rcases Finset.mem_union.1 h with (h | h) <;> [exact IH₁₂ _ h; exact IH₂₂ _ h]
     · intro _ ss' _ -- goto
       simp only [trStmts₁, Finset.not_mem_empty]; refine' ⟨_, fun _ ↦ False.elim⟩
       exact fun _ v ↦ Finset.mem_biUnion.2 ⟨_, ss' v, Finset.mem_insert_self _ _⟩
feat: add Mathlib.Tactic.Common, and import (#4056)

This makes a mathlib4 version of mathlib3's tactic.basic, now called Mathlib.Tactic.Common, which imports all tactics which do not have significant theory requirements, and then is imported all across the base of the hierarchy.

This ensures that all common tactics are available nearly everywhere in the library, rather than having to be imported one-by-one as you need them.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -16,8 +16,6 @@ import Mathlib.Data.PFun
 import Mathlib.Logic.Function.Iterate
 import Mathlib.Order.Basic
 import Mathlib.Tactic.ApplyFun
-import Mathlib.Tactic.WLOG
-import Mathlib.Tactic.RSuffices
 
 /-!
 # Turing machines
chore: Rename to sSup/iSup (#3938)

As discussed on Zulip

Renames

  • supₛsSup
  • infₛsInf
  • supᵢiSup
  • infᵢiInf
  • bsupₛbsSup
  • binfₛbsInf
  • bsupᵢbiSup
  • binfᵢbiInf
  • csupₛcsSup
  • cinfₛcsInf
  • csupᵢciSup
  • cinfᵢciInf
  • unionₛsUnion
  • interₛsInter
  • unionᵢiUnion
  • interᵢiInter
  • bunionₛbsUnion
  • binterₛbsInter
  • bunionᵢbiUnion
  • binterᵢbiInter

Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -1357,12 +1357,12 @@ theorem stmts₁_supportsStmt_mono {S : Finset Λ} {q₁ q₂ : Stmt₁} (h : q
 /-- The set of all statements in a turing machine, plus one extra value `none` representing the
 halt state. This is used in the TM1 to TM0 reduction. -/
 noncomputable def stmts (M : Λ → Stmt₁) (S : Finset Λ) : Finset (Option Stmt₁) :=
-  Finset.insertNone (S.bunionᵢ fun q ↦ stmts₁ (M q))
+  Finset.insertNone (S.biUnion fun q ↦ stmts₁ (M q))
 #align turing.TM1.stmts Turing.TM1.stmts
 
 theorem stmts_trans {M : Λ → Stmt₁} {S : Finset Λ} {q₁ q₂ : Stmt₁} (h₁ : q₁ ∈ stmts₁ q₂) :
     some q₂ ∈ stmts M S → some q₁ ∈ stmts M S := by
-  simp only [stmts, Finset.mem_insertNone, Finset.mem_bunionᵢ, Option.mem_def, Option.some.injEq,
+  simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, Option.some.injEq,
     forall_eq', exists_imp, and_imp]
   exact fun l ls h₂ ↦ ⟨_, ls, stmts₁_trans h₂ h₁⟩
 #align turing.TM1.stmts_trans Turing.TM1.stmts_trans
@@ -1378,7 +1378,7 @@ def Supports (M : Λ → Stmt₁) (S : Finset Λ) :=
 
 theorem stmts_supportsStmt {M : Λ → Stmt₁} {S : Finset Λ} {q : Stmt₁} (ss : Supports M S) :
     some q ∈ stmts M S → SupportsStmt S q := by
-  simp only [stmts, Finset.mem_insertNone, Finset.mem_bunionᵢ, Option.mem_def, Option.some.injEq,
+  simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, Option.some.injEq,
     forall_eq', exists_imp, and_imp]
   exact fun l ls h ↦ stmts₁_supportsStmt_mono h (ss.2 _ ls)
 #align turing.TM1.stmts_supports_stmt Turing.TM1.stmts_supportsStmt
@@ -1544,7 +1544,7 @@ theorem tr_supports {S : Finset Λ} (ss : TM1.Supports M S) :
   · apply Finset.mem_product.2
     constructor
     · simp only [default, TM1.stmts, Finset.mem_insertNone, Option.mem_def, Option.some_inj,
-        forall_eq', Finset.mem_bunionᵢ]
+        forall_eq', Finset.mem_biUnion]
       exact ⟨_, ss.1, TM1.stmts₁_self⟩
     · apply Finset.mem_univ
   · intro q a q' s h₁ h₂
@@ -1579,7 +1579,7 @@ theorem tr_supports {S : Finset Λ} (ss : TM1.Supports M S) :
         exact Finset.mem_insert_of_mem (Finset.mem_union_left _ TM1.stmts₁_self)
     case goto l =>
       cases h₁
-      exact Finset.some_mem_insertNone.2 (Finset.mem_bunionᵢ.2 ⟨_, hs _ _, TM1.stmts₁_self⟩)
+      exact Finset.some_mem_insertNone.2 (Finset.mem_biUnion.2 ⟨_, hs _ _, TM1.stmts₁_self⟩)
     case halt => cases h₁
 #align turing.TM1to0.tr_supports Turing.TM1to0.tr_supports
 
@@ -1911,17 +1911,17 @@ noncomputable def writes : Stmt₁ → Finset Λ'₁
 /-- The set of accessible machine states, assuming that the input machine is supported on `S`,
 are the normal states embedded from `S`, plus all write states accessible from these states. -/
 noncomputable def trSupp (S : Finset Λ) : Finset Λ'₁ :=
-  S.bunionᵢ fun l ↦ insert (Λ'.normal l) (writes (M l))
+  S.biUnion fun l ↦ insert (Λ'.normal l) (writes (M l))
 #align turing.TM1to1.tr_supp Turing.TM1to1.trSupp
 
 theorem tr_supports {S : Finset Λ} (ss : Supports M S) : Supports (tr enc dec M) (trSupp M S) :=
-  ⟨Finset.mem_bunionᵢ.2 ⟨_, ss.1, Finset.mem_insert_self _ _⟩, fun q h ↦ by
+  ⟨Finset.mem_biUnion.2 ⟨_, ss.1, Finset.mem_insert_self _ _⟩, fun q h ↦ by
     suffices ∀ q, SupportsStmt S q → (∀ q' ∈ writes q, q' ∈ trSupp M S) →
         SupportsStmt (trSupp M S) (trNormal dec q) ∧
         ∀ q' ∈ writes q, SupportsStmt (trSupp M S) (tr enc dec M q') by
-      rcases Finset.mem_bunionᵢ.1 h with ⟨l, hl, h⟩
+      rcases Finset.mem_biUnion.1 h with ⟨l, hl, h⟩
       have :=
-        this _ (ss.2 _ hl) fun q' hq ↦ Finset.mem_bunionᵢ.2 ⟨_, hl, Finset.mem_insert_of_mem hq⟩
+        this _ (ss.2 _ hl) fun q' hq ↦ Finset.mem_biUnion.2 ⟨_, hl, Finset.mem_insert_of_mem hq⟩
       rcases Finset.mem_insert.1 h with (rfl | h)
       exacts[this.1, this.2 _ h]
     intro q hs hw
@@ -1952,7 +1952,7 @@ theorem tr_supports {S : Finset Λ} (ss : Supports M S) : Supports (tr enc dec M
     case goto l =>
       simp only [writes, Finset.not_mem_empty]; refine' ⟨_, fun _ ↦ False.elim⟩
       refine' supportsStmt_read _ fun a _ s ↦ _
-      exact Finset.mem_bunionᵢ.2 ⟨_, hs _ _, Finset.mem_insert_self _ _⟩
+      exact Finset.mem_biUnion.2 ⟨_, hs _ _, Finset.mem_insert_self _ _⟩
     case halt =>
       simp only [writes, Finset.not_mem_empty]; refine' ⟨_, fun _ ↦ False.elim⟩
       simp only [SupportsStmt, supportsStmt_move, trNormal]⟩
@@ -2227,12 +2227,12 @@ theorem stmts₁_supportsStmt_mono {S : Finset Λ} {q₁ q₂ : Stmt₂} (h : q
 
 /-- The set of statements accessible from initial set `S` of labels. -/
 noncomputable def stmts (M : Λ → Stmt₂) (S : Finset Λ) : Finset (Option Stmt₂) :=
-  Finset.insertNone (S.bunionᵢ fun q ↦ stmts₁ (M q))
+  Finset.insertNone (S.biUnion fun q ↦ stmts₁ (M q))
 #align turing.TM2.stmts Turing.TM2.stmts
 
 theorem stmts_trans {M : Λ → Stmt₂} {S : Finset Λ} {q₁ q₂ : Stmt₂} (h₁ : q₁ ∈ stmts₁ q₂) :
     some q₂ ∈ stmts M S → some q₁ ∈ stmts M S := by
-  simp only [stmts, Finset.mem_insertNone, Finset.mem_bunionᵢ, Option.mem_def, Option.some.injEq,
+  simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, Option.some.injEq,
     forall_eq', exists_imp, and_imp]
   exact fun l ls h₂ ↦ ⟨_, ls, stmts₁_trans h₂ h₁⟩
 #align turing.TM2.stmts_trans Turing.TM2.stmts_trans
@@ -2247,7 +2247,7 @@ def Supports (M : Λ → Stmt₂) (S : Finset Λ) :=
 
 theorem stmts_supportsStmt {M : Λ → Stmt₂} {S : Finset Λ} {q : Stmt₂} (ss : Supports M S) :
     some q ∈ stmts M S → SupportsStmt S q := by
-  simp only [stmts, Finset.mem_insertNone, Finset.mem_bunionᵢ, Option.mem_def, Option.some.injEq,
+  simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, Option.some.injEq,
     forall_eq', exists_imp, and_imp]
   exact fun l ls h ↦ stmts₁_supportsStmt_mono h (ss.2 _ ls)
 #align turing.TM2.stmts_supports_stmt Turing.TM2.stmts_supportsStmt
@@ -2769,17 +2769,17 @@ theorem tr_eval (k) (L : List (Γ k)) {L₁ L₂} (H₁ : L₁ ∈ TM1.eval (tr
 
 /-- The support of a set of TM2 states in the TM2 emulator. -/
 noncomputable def trSupp (S : Finset Λ) : Finset Λ'₂₁ :=
-  S.bunionᵢ fun l ↦ insert (normal l) (trStmts₁ (M l))
+  S.biUnion fun l ↦ insert (normal l) (trStmts₁ (M l))
 #align turing.TM2to1.tr_supp Turing.TM2to1.trSupp
 
 theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports (tr M) (trSupp M S) :=
-  ⟨Finset.mem_bunionᵢ.2 ⟨_, ss.1, Finset.mem_insert.2 <| Or.inl rfl⟩, fun l' h ↦ by
+  ⟨Finset.mem_biUnion.2 ⟨_, ss.1, Finset.mem_insert.2 <| Or.inl rfl⟩, fun l' h ↦ by
     suffices ∀ (q) (_ : TM2.SupportsStmt S q) (_ : ∀ x ∈ trStmts₁ q, x ∈ trSupp M S),
         TM1.SupportsStmt (trSupp M S) (trNormal q) ∧
         ∀ l' ∈ trStmts₁ q, TM1.SupportsStmt (trSupp M S) (tr M l') by
-      rcases Finset.mem_bunionᵢ.1 h with ⟨l, lS, h⟩
+      rcases Finset.mem_biUnion.1 h with ⟨l, lS, h⟩
       have :=
-        this _ (ss.2 l lS) fun x hx ↦ Finset.mem_bunionᵢ.2 ⟨_, lS, Finset.mem_insert_of_mem hx⟩
+        this _ (ss.2 l lS) fun x hx ↦ Finset.mem_biUnion.2 ⟨_, lS, Finset.mem_insert_of_mem hx⟩
       rcases Finset.mem_insert.1 h with (rfl | h) <;> [exact this.1, exact this.2 _ h]
     clear h l'
     refine' stmtStRec _ _ _ _ _
@@ -2814,7 +2814,7 @@ theorem tr_supports {S} (ss : TM2.Supports M S) : TM1.Supports (tr M) (trSupp M
       rcases Finset.mem_union.1 h with (h | h) <;> [exact IH₁₂ _ h, exact IH₂₂ _ h]
     · intro _ ss' _ -- goto
       simp only [trStmts₁, Finset.not_mem_empty]; refine' ⟨_, fun _ ↦ False.elim⟩
-      exact fun _ v ↦ Finset.mem_bunionᵢ.2 ⟨_, ss' v, Finset.mem_insert_self _ _⟩
+      exact fun _ v ↦ Finset.mem_biUnion.2 ⟨_, ss' v, Finset.mem_insert_self _ _⟩
     · intro _ _ -- halt
       simp only [trStmts₁, Finset.not_mem_empty]
       exact ⟨trivial, fun _ ↦ False.elim⟩⟩
feat: make Acc.rec and many related defs computable (#3535)

Lean 4 code generator has had no native supports for Acc.rec. This PR makes Acc.rec computable. This change makes many defs computable. Especially, computable PFun.fix and Part.hasFix enables us to reason about partial functions. This PR also renames some instances and gives PFun.lift @[coe] attr.

Diff
@@ -739,8 +739,7 @@ theorem Tape.map_mk₁ {Γ Γ'} [Inhabited Γ] [Inhabited Γ'] (f : PointedMap 
 /-- Run a state transition function `σ → Option σ` "to completion". The return value is the last
 state returned before a `none` result. If the state transition function always returns `some`,
 then the computation diverges, returning `Part.none`. -/
--- Porting note: Added noncomputable, because `PFun.fix` is noncomputable.
-noncomputable def eval {σ} (f : σ → Option σ) : σ → Part σ :=
+def eval {σ} (f : σ → Option σ) : σ → Part σ :=
   PFun.fix fun s ↦ Part.some <| (f s).elim (Sum.inl s) Sum.inr
 #align turing.eval Turing.eval
 
@@ -826,9 +825,8 @@ theorem Reaches₀.tail' {σ} {f : σ → Option σ} {a b c : σ} (h : Reaches
 which is either terminal (meaning `a = b`) or where the next point also satisfies `C`, then it
 holds of any point where `eval f a` evaluates to `b`. This formalizes the notion that if
 `eval f a` evaluates to `b` then it reaches terminal state `b` in finitely many steps. -/
--- Porting note: Added noncomputable
 @[elab_as_elim]
-noncomputable def evalInduction {σ} {f : σ → Option σ} {b : σ} {C : σ → Sort _} {a : σ}
+def evalInduction {σ} {f : σ → Option σ} {b : σ} {C : σ → Sort _} {a : σ}
     (h : b ∈ eval f a) (H : ∀ a, b ∈ eval f a → (∀ a', f a = some a' → C a') → C a) : C a :=
   PFun.fixInduction h fun a' ha' h' ↦
     H _ ha' fun b' e ↦ h' _ <| Part.mem_some_iff.2 <| by rw [e]; rfl
@@ -1099,8 +1097,7 @@ def init (l : List Γ) : Cfg₀ :=
 
 /-- Evaluate a Turing machine on initial input to a final state,
   if it terminates. -/
--- Porting note: Added noncomputable
-noncomputable def eval (M : Machine₀) (l : List Γ) : Part (ListBlank Γ) :=
+def eval (M : Machine₀) (l : List Γ) : Part (ListBlank Γ) :=
   (Turing.eval (step M) (init l)).map fun c ↦ c.Tape.right₀
 #align turing.TM0.eval Turing.TM0.eval
 
@@ -1411,8 +1408,7 @@ def init (l : List Γ) : Cfg₁ :=
 
 /-- Evaluate a TM to completion, resulting in an output list on the tape (with an indeterminate
 number of blanks on the end). -/
--- Porting note: Added noncomputable
-noncomputable def eval (M : Λ → Stmt₁) (l : List Γ) : Part (ListBlank Γ) :=
+def eval (M : Λ → Stmt₁) (l : List Γ) : Part (ListBlank Γ) :=
   (Turing.eval (step M) (init l)).map fun c ↦ c.Tape.right₀
 #align turing.TM1.eval Turing.TM1.eval
 
@@ -2279,8 +2275,7 @@ def init (k : K) (L : List (Γ k)) : Cfg₂ :=
 #align turing.TM2.init Turing.TM2.init
 
 /-- Evaluates a TM2 program to completion, with the output on the same stack as the input. -/
--- Porting note: Added noncomputable
-noncomputable def eval (M : Λ → Stmt₂) (k : K) (L : List (Γ k)) : Part (List (Γ k)) :=
+def eval (M : Λ → Stmt₂) (k : K) (L : List (Γ k)) : Part (List (Γ k)) :=
   (Turing.eval (step M) (init k L)).map fun c ↦ c.stk k
 #align turing.TM2.eval Turing.TM2.eval
 
chore: add missing hypothesis names to by_cases (#2679)
Diff
@@ -2741,7 +2741,7 @@ theorem trCfg_init (k) (L : List (Γ k)) : TrCfg (TM2.init k L) (TM1.init (trIni
       = fun a => (proj k').f (update (β := fun k => Option (Γ k)) default k (some a)) := rfl
     rw [this, List.get?_map, proj, PointedMap.mk_val]
     simp only []
-    by_cases k' = k
+    by_cases h : k' = k
     · subst k'
       simp only [Function.update_same]
       rw [ListBlank.nth_mk, List.getI_eq_iget_get?, ← List.map_reverse, List.get?_map]
feat: port Computability.TuringMachine (#2125)

Dependencies 6 + 186

187 files ported (96.9%)
86340 lines ported (97.6%)
Show graph

The unported dependencies are