Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
f2cb157
More pseudo-code for reachability.
crei Feb 21, 2026
c55d0ab
reachability and decrement.
crei Feb 21, 2026
b2085f7
Simplify semantics of succ.
crei Feb 22, 2026
b124101
Merge branch 'simplify_semantics_of_succ' into reachability
crei Feb 22, 2026
228dbb5
Decrement routine.
crei Feb 22, 2026
e68a127
finish inner algorithm
crei Feb 23, 2026
cdc5eb1
Finish complete algorithm.
crei Feb 23, 2026
ab69c63
Halting Turing machines.
crei Feb 24, 2026
0b98846
While loop using always-halting TMs.
crei Feb 24, 2026
55b1e3d
Fix lint warnings.
crei Feb 24, 2026
3c28eda
Merge remote-tracking branch 'self/multi-tape-turing-machine' into re…
crei Feb 24, 2026
668d56f
Merge remote-tracking branch 'self/total_tms' into reachability
crei Feb 24, 2026
f6818cf
correction for halting.
crei Feb 24, 2026
e4cedbc
partial inner loop loop semantics.
crei Feb 24, 2026
fcebfa3
Re-write algorithm without shortcuts.
crei Feb 25, 2026
608dd1c
Attempt at proving semantics of inner loop.
crei Feb 25, 2026
f81fde1
Prove first iteration.
crei Feb 26, 2026
b6d6e7e
proof of inner loop almost finished.
crei Feb 26, 2026
8372e39
prove inner loop semantics.
crei Feb 27, 2026
be8a3dc
some simplifications.
crei Feb 27, 2026
b0fe0c5
fix build
crei Mar 2, 2026
dee0072
Merge branch 'multi-tape-turing-machine' into reachability
crei Mar 5, 2026
b086dd2
Merge branch 'multi-tape-turing-machine' into reachability
crei Mar 5, 2026
957a878
remove noncomputable.
crei Mar 5, 2026
aca6541
claude tries to finish the proof.
crei Mar 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Cslib.lean
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ public import Cslib.Computability.Languages.RegularLanguage
public import Cslib.Computability.Machines.MultiTapeTuring.AddRoutine
public import Cslib.Computability.Machines.MultiTapeTuring.Basic
public import Cslib.Computability.Machines.MultiTapeTuring.CopyRoutine
public import Cslib.Computability.Machines.MultiTapeTuring.DecRoutine
public import Cslib.Computability.Machines.MultiTapeTuring.DuplicateRoutine
public import Cslib.Computability.Machines.MultiTapeTuring.EqualRoutine
public import Cslib.Computability.Machines.MultiTapeTuring.GraphReachability
public import Cslib.Computability.Machines.MultiTapeTuring.HeadStats
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ theorem add₀_eval_list {tapes : Fin 6 → List (List OneTwo)} :
dya_inv ((tapes 1).headD [])) :: (tapes 2)))) := by
simp [add₀]
by_cases h : dya_inv ((tapes 0).head?.getD []) = 0
· simp [h]; grind
· simp [h]
· grind

/--
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,11 @@ public def eq {k : ℕ} (q s t : Fin k)
MultiTapeTM k (WithSep OneTwo) :=
eq₀.with_tapes [q, s, t].get h_inj

-- TODO why does the linter complain about simp here?
@[grind =]
public theorem eq_eval_list {k : ℕ} {q s t : Fin k}
public theorem eq_eval_list {k : ℕ} {q s t : Fin k.succ}
(h_inj : [q, s, t].get.Injective)
{tapes : Fin k → List (List OneTwo)} :
{tapes : Fin k.succ → List (List OneTwo)} :
(eq q s t).eval_list tapes =
Part.some (Function.update tapes t ((if (tapes q).headD [] = (tapes s).headD [] then
[.one]
Expand Down
Loading
Loading