├── .github
└── workflows
│ └── build-latex-pdf.yml
├── .gitignore
├── .vscode
└── settings.json
├── LICENSE.txt
├── README.md
└── deciders
├── .vscode
└── settings.json
├── README.md
├── correctness-deciders.bib
├── correctness-deciders.tex
├── feedback
├── bouncers2.pdf
└── bouncers_annot.pdf
├── figures
├── FAR-finite-automata-reduction
│ ├── FAR-texts.pdf
│ ├── FAR.pdf
│ ├── FAR.svg
│ ├── FAR_tree_accept.dot
│ ├── FAR_tree_accept.dot.svg
│ ├── FAR_tree_reject.dot
│ ├── FAR_tree_reject.dot.svg
│ ├── standalone-far-machine
│ │ ├── standalone-far-machine.pdf
│ │ └── standalone-far-machine.tex
│ └── standalone-far-nfa
│ │ ├── standalone-far-nfa.pdf
│ │ └── standalone-far-nfa.tex
├── backward-reasoning
│ ├── backward-reasoning-French.pdf
│ ├── backward-reasoning-French.svg
│ ├── backward-reasoning.pdf
│ └── backward-reasoning.svg
├── bouncers
│ ├── 10866122.png
│ ├── 11657517.png
│ ├── 11964870.png
│ ├── 5228688.png
│ ├── 5608043.png
│ ├── 7341465.png
│ ├── 80747967.png
│ ├── 88427177.png
│ ├── 9281450.png
│ ├── bouncers.pdf
│ └── bouncers.svg
├── halting-segment
│ ├── halting-segment.pdf
│ └── halting-segment.svg
└── space-time-diagrams
│ ├── backward_reasoning_55897188.png
│ ├── cycler_279081.pdf
│ ├── cycler_279081.svg
│ ├── cycler_4239083.pdf
│ ├── cycler_4239083.svg
│ ├── finite-automata-reduction-counter4-halt.pdf
│ ├── finite-automata-reduction-counter4-halt.svg
│ ├── finite-automata-reduction-counter4.pdf
│ ├── finite-automata-reduction-counter4.svg
│ ├── four_state_counter.png
│ ├── translated_cycler_44394115.pdf
│ ├── translated_cycler_44394115.svg
│ ├── translated_cycler_44394115_annotated.pdf
│ ├── translated_cycler_44394115_annotated.png
│ ├── translated_cycler_44394115_annotated.svg
│ ├── translated_cycler_44394115_annotated_French.svg
│ └── translated_cycler_59090563.png
└── sections
├── decider-FAR-finite-automata-reduction.tex
├── decider-backward-reasoning.tex
├── decider-bouncers.tex
├── decider-cyclers.tex
├── decider-halting-segment.tex
├── decider-translated-cyclers.tex
├── savasks-bouncers-writeup.pdf
└── savasks-bouncers-writeup.tex
/.github/workflows/build-latex-pdf.yml:
--------------------------------------------------------------------------------
1 | name: Build LaTeX PDF
2 | on:
3 | push:
4 | branches:
5 | - main
6 | jobs:
7 | build_correctness_deciders:
8 | runs-on: ubuntu-latest
9 | steps:
10 | - name: Set up Git repository
11 | uses: actions/checkout@v3
12 | - name: Compile correctness-deciders.pdf
13 | uses: xu-cheng/latex-action@v3
14 | with:
15 | root_file: deciders/correctness-deciders.tex
16 | work_in_root_file_dir: true
17 | - name: Create branch with PDF file
18 | uses: EndBug/add-and-commit@v9
19 | with:
20 | add: '-f deciders/correctness-deciders.pdf'
21 | default_author: github_actions
22 | new_branch: build-latex-pdf
23 | push: 'origin build-latex-pdf --set-upstream --force'
24 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 |
3 | # Auto-generated pdf
4 | deciders/correctness-deciders.pdf
5 |
6 | ## Core latex/pdflatex auxiliary files:
7 | *.aux
8 | *.lof
9 | *.log
10 | *.lot
11 | *.fls
12 | *.out
13 | *.toc
14 | *.fmt
15 | *.fot
16 | *.cb
17 | *.cb2
18 | .*.lb
19 |
20 | ## Intermediate documents:
21 | *.dvi
22 | *.xdv
23 | *-converted-to.*
24 | # these rules might exclude image files for figures etc.
25 | # *.ps
26 | # *.eps
27 | # *.pdf
28 |
29 | ## Generated if empty string is given at "Please type another file name for output:"
30 | .pdf
31 |
32 | ## Bibliography auxiliary files (bibtex/biblatex/biber):
33 | *.bbl
34 | *.bcf
35 | *.blg
36 | *-blx.aux
37 | *-blx.bib
38 | *.run.xml
39 |
40 | ## Build tool auxiliary files:
41 | *.fdb_latexmk
42 | *.synctex
43 | *.synctex(busy)
44 | *.synctex.gz
45 | *.synctex.gz(busy)
46 | *.pdfsync
47 |
48 | ## Build tool directories for auxiliary files
49 | # latexrun
50 | latex.out/
51 |
52 | ## Auxiliary and intermediate files from other packages:
53 | # algorithms
54 | *.alg
55 | *.loa
56 |
57 | # achemso
58 | acs-*.bib
59 |
60 | # amsthm
61 | *.thm
62 |
63 | # beamer
64 | *.nav
65 | *.pre
66 | *.snm
67 | *.vrb
68 |
69 | # changes
70 | *.soc
71 |
72 | # comment
73 | *.cut
74 |
75 | # cprotect
76 | *.cpt
77 |
78 | # elsarticle (documentclass of Elsevier journals)
79 | *.spl
80 |
81 | # endnotes
82 | *.ent
83 |
84 | # fixme
85 | *.lox
86 |
87 | # feynmf/feynmp
88 | *.mf
89 | *.mp
90 | *.t[1-9]
91 | *.t[1-9][0-9]
92 | *.tfm
93 |
94 | #(r)(e)ledmac/(r)(e)ledpar
95 | *.end
96 | *.?end
97 | *.[1-9]
98 | *.[1-9][0-9]
99 | *.[1-9][0-9][0-9]
100 | *.[1-9]R
101 | *.[1-9][0-9]R
102 | *.[1-9][0-9][0-9]R
103 | *.eledsec[1-9]
104 | *.eledsec[1-9]R
105 | *.eledsec[1-9][0-9]
106 | *.eledsec[1-9][0-9]R
107 | *.eledsec[1-9][0-9][0-9]
108 | *.eledsec[1-9][0-9][0-9]R
109 |
110 | # glossaries
111 | *.acn
112 | *.acr
113 | *.glg
114 | *.glo
115 | *.gls
116 | *.glsdefs
117 | *.lzo
118 | *.lzs
119 |
120 | # uncomment this for glossaries-extra (will ignore makeindex's style files!)
121 | # *.ist
122 |
123 | # gnuplottex
124 | *-gnuplottex-*
125 |
126 | # gregoriotex
127 | *.gaux
128 | *.gtex
129 |
130 | # htlatex
131 | *.4ct
132 | *.4tc
133 | *.idv
134 | *.lg
135 | *.trc
136 | *.xref
137 |
138 | # hyperref
139 | *.brf
140 |
141 | # knitr
142 | *-concordance.tex
143 | # TODO Comment the next line if you want to keep your tikz graphics files
144 | *.tikz
145 | *-tikzDictionary
146 |
147 | # listings
148 | *.lol
149 |
150 | # luatexja-ruby
151 | *.ltjruby
152 |
153 | # makeidx
154 | *.idx
155 | *.ilg
156 | *.ind
157 |
158 | # minitoc
159 | *.maf
160 | *.mlf
161 | *.mlt
162 | *.mtc[0-9]*
163 | *.slf[0-9]*
164 | *.slt[0-9]*
165 | *.stc[0-9]*
166 |
167 | # minted
168 | _minted*
169 | *.pyg
170 |
171 | # morewrites
172 | *.mw
173 |
174 | # nomencl
175 | *.nlg
176 | *.nlo
177 | *.nls
178 |
179 | # pax
180 | *.pax
181 |
182 | # pdfpcnotes
183 | *.pdfpc
184 |
185 | # sagetex
186 | *.sagetex.sage
187 | *.sagetex.py
188 | *.sagetex.scmd
189 |
190 | # scrwfile
191 | *.wrt
192 |
193 | # sympy
194 | *.sout
195 | *.sympy
196 | sympy-plots-for-*.tex/
197 |
198 | # pdfcomment
199 | *.upa
200 | *.upb
201 |
202 | # pythontex
203 | *.pytxcode
204 | pythontex-files-*/
205 |
206 | # tcolorbox
207 | *.listing
208 |
209 | # thmtools
210 | *.loe
211 |
212 | # TikZ & PGF
213 | *.dpth
214 | *.md5
215 | *.auxlock
216 |
217 | # todonotes
218 | *.tdo
219 |
220 | # vhistory
221 | *.hst
222 | *.ver
223 |
224 | # easy-todo
225 | *.lod
226 |
227 | # xcolor
228 | *.xcp
229 |
230 | # xmpincl
231 | *.xmpi
232 |
233 | # xindy
234 | *.xdy
235 |
236 | # xypic precompiled matrices and outlines
237 | *.xyc
238 | *.xyd
239 |
240 | # endfloat
241 | *.ttt
242 | *.fff
243 |
244 | # Latexian
245 | TSWLatexianTemp*
246 |
247 | ## Editors:
248 | # WinEdt
249 | *.bak
250 | *.sav
251 |
252 | # Texpad
253 | .texpadtmp
254 |
255 | # LyX
256 | *.lyx~
257 |
258 | # Kile
259 | *.backup
260 |
261 | # gummi
262 | .*.swp
263 |
264 | # KBibTeX
265 | *~[0-9]*
266 |
267 | # TeXnicCenter
268 | *.tps
269 |
270 | # auto folder when using emacs and auctex
271 | ./auto/*
272 | *.el
273 |
274 | # expex forward references with \gathertags
275 | *-tags.tex
276 |
277 | # standalone packages
278 | *.sta
279 |
280 | # Makeindex log files
281 | *.lpz
282 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "latex-workshop.latex.outDir": ".",
3 | "editor.quickSuggestions": {
4 | "other": "off"
5 | },
6 | "latex-workshop.formatting.latex": "latexindent"
7 | }
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Attribution 4.0 International
2 |
3 | =======================================================================
4 |
5 | Creative Commons Corporation ("Creative Commons") is not a law firm and
6 | does not provide legal services or legal advice. Distribution of
7 | Creative Commons public licenses does not create a lawyer-client or
8 | other relationship. Creative Commons makes its licenses and related
9 | information available on an "as-is" basis. Creative Commons gives no
10 | warranties regarding its licenses, any material licensed under their
11 | terms and conditions, or any related information. Creative Commons
12 | disclaims all liability for damages resulting from their use to the
13 | fullest extent possible.
14 |
15 | Using Creative Commons Public Licenses
16 |
17 | Creative Commons public licenses provide a standard set of terms and
18 | conditions that creators and other rights holders may use to share
19 | original works of authorship and other material subject to copyright
20 | and certain other rights specified in the public license below. The
21 | following considerations are for informational purposes only, are not
22 | exhaustive, and do not form part of our licenses.
23 |
24 | Considerations for licensors: Our public licenses are
25 | intended for use by those authorized to give the public
26 | permission to use material in ways otherwise restricted by
27 | copyright and certain other rights. Our licenses are
28 | irrevocable. Licensors should read and understand the terms
29 | and conditions of the license they choose before applying it.
30 | Licensors should also secure all rights necessary before
31 | applying our licenses so that the public can reuse the
32 | material as expected. Licensors should clearly mark any
33 | material not subject to the license. This includes other CC-
34 | licensed material, or material used under an exception or
35 | limitation to copyright. More considerations for licensors:
36 | wiki.creativecommons.org/Considerations_for_licensors
37 |
38 | Considerations for the public: By using one of our public
39 | licenses, a licensor grants the public permission to use the
40 | licensed material under specified terms and conditions. If
41 | the licensor's permission is not necessary for any reason--for
42 | example, because of any applicable exception or limitation to
43 | copyright--then that use is not regulated by the license. Our
44 | licenses grant only permissions under copyright and certain
45 | other rights that a licensor has authority to grant. Use of
46 | the licensed material may still be restricted for other
47 | reasons, including because others have copyright or other
48 | rights in the material. A licensor may make special requests,
49 | such as asking that all changes be marked or described.
50 | Although not required by our licenses, you are encouraged to
51 | respect those requests where reasonable. More considerations
52 | for the public:
53 | wiki.creativecommons.org/Considerations_for_licensees
54 |
55 | =======================================================================
56 |
57 | Creative Commons Attribution 4.0 International Public License
58 |
59 | By exercising the Licensed Rights (defined below), You accept and agree
60 | to be bound by the terms and conditions of this Creative Commons
61 | Attribution 4.0 International Public License ("Public License"). To the
62 | extent this Public License may be interpreted as a contract, You are
63 | granted the Licensed Rights in consideration of Your acceptance of
64 | these terms and conditions, and the Licensor grants You such rights in
65 | consideration of benefits the Licensor receives from making the
66 | Licensed Material available under these terms and conditions.
67 |
68 |
69 | Section 1 -- Definitions.
70 |
71 | a. Adapted Material means material subject to Copyright and Similar
72 | Rights that is derived from or based upon the Licensed Material
73 | and in which the Licensed Material is translated, altered,
74 | arranged, transformed, or otherwise modified in a manner requiring
75 | permission under the Copyright and Similar Rights held by the
76 | Licensor. For purposes of this Public License, where the Licensed
77 | Material is a musical work, performance, or sound recording,
78 | Adapted Material is always produced where the Licensed Material is
79 | synched in timed relation with a moving image.
80 |
81 | b. Adapter's License means the license You apply to Your Copyright
82 | and Similar Rights in Your contributions to Adapted Material in
83 | accordance with the terms and conditions of this Public License.
84 |
85 | c. Copyright and Similar Rights means copyright and/or similar rights
86 | closely related to copyright including, without limitation,
87 | performance, broadcast, sound recording, and Sui Generis Database
88 | Rights, without regard to how the rights are labeled or
89 | categorized. For purposes of this Public License, the rights
90 | specified in Section 2(b)(1)-(2) are not Copyright and Similar
91 | Rights.
92 |
93 | d. Effective Technological Measures means those measures that, in the
94 | absence of proper authority, may not be circumvented under laws
95 | fulfilling obligations under Article 11 of the WIPO Copyright
96 | Treaty adopted on December 20, 1996, and/or similar international
97 | agreements.
98 |
99 | e. Exceptions and Limitations means fair use, fair dealing, and/or
100 | any other exception or limitation to Copyright and Similar Rights
101 | that applies to Your use of the Licensed Material.
102 |
103 | f. Licensed Material means the artistic or literary work, database,
104 | or other material to which the Licensor applied this Public
105 | License.
106 |
107 | g. Licensed Rights means the rights granted to You subject to the
108 | terms and conditions of this Public License, which are limited to
109 | all Copyright and Similar Rights that apply to Your use of the
110 | Licensed Material and that the Licensor has authority to license.
111 |
112 | h. Licensor means the individual(s) or entity(ies) granting rights
113 | under this Public License.
114 |
115 | i. Share means to provide material to the public by any means or
116 | process that requires permission under the Licensed Rights, such
117 | as reproduction, public display, public performance, distribution,
118 | dissemination, communication, or importation, and to make material
119 | available to the public including in ways that members of the
120 | public may access the material from a place and at a time
121 | individually chosen by them.
122 |
123 | j. Sui Generis Database Rights means rights other than copyright
124 | resulting from Directive 96/9/EC of the European Parliament and of
125 | the Council of 11 March 1996 on the legal protection of databases,
126 | as amended and/or succeeded, as well as other essentially
127 | equivalent rights anywhere in the world.
128 |
129 | k. You means the individual or entity exercising the Licensed Rights
130 | under this Public License. Your has a corresponding meaning.
131 |
132 |
133 | Section 2 -- Scope.
134 |
135 | a. License grant.
136 |
137 | 1. Subject to the terms and conditions of this Public License,
138 | the Licensor hereby grants You a worldwide, royalty-free,
139 | non-sublicensable, non-exclusive, irrevocable license to
140 | exercise the Licensed Rights in the Licensed Material to:
141 |
142 | a. reproduce and Share the Licensed Material, in whole or
143 | in part; and
144 |
145 | b. produce, reproduce, and Share Adapted Material.
146 |
147 | 2. Exceptions and Limitations. For the avoidance of doubt, where
148 | Exceptions and Limitations apply to Your use, this Public
149 | License does not apply, and You do not need to comply with
150 | its terms and conditions.
151 |
152 | 3. Term. The term of this Public License is specified in Section
153 | 6(a).
154 |
155 | 4. Media and formats; technical modifications allowed. The
156 | Licensor authorizes You to exercise the Licensed Rights in
157 | all media and formats whether now known or hereafter created,
158 | and to make technical modifications necessary to do so. The
159 | Licensor waives and/or agrees not to assert any right or
160 | authority to forbid You from making technical modifications
161 | necessary to exercise the Licensed Rights, including
162 | technical modifications necessary to circumvent Effective
163 | Technological Measures. For purposes of this Public License,
164 | simply making modifications authorized by this Section 2(a)
165 | (4) never produces Adapted Material.
166 |
167 | 5. Downstream recipients.
168 |
169 | a. Offer from the Licensor -- Licensed Material. Every
170 | recipient of the Licensed Material automatically
171 | receives an offer from the Licensor to exercise the
172 | Licensed Rights under the terms and conditions of this
173 | Public License.
174 |
175 | b. No downstream restrictions. You may not offer or impose
176 | any additional or different terms or conditions on, or
177 | apply any Effective Technological Measures to, the
178 | Licensed Material if doing so restricts exercise of the
179 | Licensed Rights by any recipient of the Licensed
180 | Material.
181 |
182 | 6. No endorsement. Nothing in this Public License constitutes or
183 | may be construed as permission to assert or imply that You
184 | are, or that Your use of the Licensed Material is, connected
185 | with, or sponsored, endorsed, or granted official status by,
186 | the Licensor or others designated to receive attribution as
187 | provided in Section 3(a)(1)(A)(i).
188 |
189 | b. Other rights.
190 |
191 | 1. Moral rights, such as the right of integrity, are not
192 | licensed under this Public License, nor are publicity,
193 | privacy, and/or other similar personality rights; however, to
194 | the extent possible, the Licensor waives and/or agrees not to
195 | assert any such rights held by the Licensor to the limited
196 | extent necessary to allow You to exercise the Licensed
197 | Rights, but not otherwise.
198 |
199 | 2. Patent and trademark rights are not licensed under this
200 | Public License.
201 |
202 | 3. To the extent possible, the Licensor waives any right to
203 | collect royalties from You for the exercise of the Licensed
204 | Rights, whether directly or through a collecting society
205 | under any voluntary or waivable statutory or compulsory
206 | licensing scheme. In all other cases the Licensor expressly
207 | reserves any right to collect such royalties.
208 |
209 |
210 | Section 3 -- License Conditions.
211 |
212 | Your exercise of the Licensed Rights is expressly made subject to the
213 | following conditions.
214 |
215 | a. Attribution.
216 |
217 | 1. If You Share the Licensed Material (including in modified
218 | form), You must:
219 |
220 | a. retain the following if it is supplied by the Licensor
221 | with the Licensed Material:
222 |
223 | i. identification of the creator(s) of the Licensed
224 | Material and any others designated to receive
225 | attribution, in any reasonable manner requested by
226 | the Licensor (including by pseudonym if
227 | designated);
228 |
229 | ii. a copyright notice;
230 |
231 | iii. a notice that refers to this Public License;
232 |
233 | iv. a notice that refers to the disclaimer of
234 | warranties;
235 |
236 | v. a URI or hyperlink to the Licensed Material to the
237 | extent reasonably practicable;
238 |
239 | b. indicate if You modified the Licensed Material and
240 | retain an indication of any previous modifications; and
241 |
242 | c. indicate the Licensed Material is licensed under this
243 | Public License, and include the text of, or the URI or
244 | hyperlink to, this Public License.
245 |
246 | 2. You may satisfy the conditions in Section 3(a)(1) in any
247 | reasonable manner based on the medium, means, and context in
248 | which You Share the Licensed Material. For example, it may be
249 | reasonable to satisfy the conditions by providing a URI or
250 | hyperlink to a resource that includes the required
251 | information.
252 |
253 | 3. If requested by the Licensor, You must remove any of the
254 | information required by Section 3(a)(1)(A) to the extent
255 | reasonably practicable.
256 |
257 | 4. If You Share Adapted Material You produce, the Adapter's
258 | License You apply must not prevent recipients of the Adapted
259 | Material from complying with this Public License.
260 |
261 |
262 | Section 4 -- Sui Generis Database Rights.
263 |
264 | Where the Licensed Rights include Sui Generis Database Rights that
265 | apply to Your use of the Licensed Material:
266 |
267 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right
268 | to extract, reuse, reproduce, and Share all or a substantial
269 | portion of the contents of the database;
270 |
271 | b. if You include all or a substantial portion of the database
272 | contents in a database in which You have Sui Generis Database
273 | Rights, then the database in which You have Sui Generis Database
274 | Rights (but not its individual contents) is Adapted Material; and
275 |
276 | c. You must comply with the conditions in Section 3(a) if You Share
277 | all or a substantial portion of the contents of the database.
278 |
279 | For the avoidance of doubt, this Section 4 supplements and does not
280 | replace Your obligations under this Public License where the Licensed
281 | Rights include other Copyright and Similar Rights.
282 |
283 |
284 | Section 5 -- Disclaimer of Warranties and Limitation of Liability.
285 |
286 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
287 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
288 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
289 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
290 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
291 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
292 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
293 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
294 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
295 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
296 |
297 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
298 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
299 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
300 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
301 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
302 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
303 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
304 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
305 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
306 |
307 | c. The disclaimer of warranties and limitation of liability provided
308 | above shall be interpreted in a manner that, to the extent
309 | possible, most closely approximates an absolute disclaimer and
310 | waiver of all liability.
311 |
312 |
313 | Section 6 -- Term and Termination.
314 |
315 | a. This Public License applies for the term of the Copyright and
316 | Similar Rights licensed here. However, if You fail to comply with
317 | this Public License, then Your rights under this Public License
318 | terminate automatically.
319 |
320 | b. Where Your right to use the Licensed Material has terminated under
321 | Section 6(a), it reinstates:
322 |
323 | 1. automatically as of the date the violation is cured, provided
324 | it is cured within 30 days of Your discovery of the
325 | violation; or
326 |
327 | 2. upon express reinstatement by the Licensor.
328 |
329 | For the avoidance of doubt, this Section 6(b) does not affect any
330 | right the Licensor may have to seek remedies for Your violations
331 | of this Public License.
332 |
333 | c. For the avoidance of doubt, the Licensor may also offer the
334 | Licensed Material under separate terms or conditions or stop
335 | distributing the Licensed Material at any time; however, doing so
336 | will not terminate this Public License.
337 |
338 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
339 | License.
340 |
341 |
342 | Section 7 -- Other Terms and Conditions.
343 |
344 | a. The Licensor shall not be bound by any additional or different
345 | terms or conditions communicated by You unless expressly agreed.
346 |
347 | b. Any arrangements, understandings, or agreements regarding the
348 | Licensed Material not stated herein are separate from and
349 | independent of the terms and conditions of this Public License.
350 |
351 |
352 | Section 8 -- Interpretation.
353 |
354 | a. For the avoidance of doubt, this Public License does not, and
355 | shall not be interpreted to, reduce, limit, restrict, or impose
356 | conditions on any use of the Licensed Material that could lawfully
357 | be made without permission under this Public License.
358 |
359 | b. To the extent possible, if any provision of this Public License is
360 | deemed unenforceable, it shall be automatically reformed to the
361 | minimum extent necessary to make it enforceable. If the provision
362 | cannot be reformed, it shall be severed from this Public License
363 | without affecting the enforceability of the remaining terms and
364 | conditions.
365 |
366 | c. No term or condition of this Public License will be waived and no
367 | failure to comply consented to unless expressly agreed to by the
368 | Licensor.
369 |
370 | d. Nothing in this Public License constitutes or may be interpreted
371 | as a limitation upon, or waiver of, any privileges and immunities
372 | that apply to the Licensor or You, including from the legal
373 | processes of any jurisdiction or authority.
374 |
375 |
376 | =======================================================================
377 |
378 | Creative Commons is not a party to its public
379 | licenses. Notwithstanding, Creative Commons may elect to apply one of
380 | its public licenses to material it publishes and in those instances
381 | will be considered the “Licensor.” The text of the Creative Commons
382 | public licenses is dedicated to the public domain under the CC0 Public
383 | Domain Dedication. Except for the limited purpose of indicating that
384 | material is shared under a Creative Commons public license or as
385 | otherwise permitted by the Creative Commons policies published at
386 | creativecommons.org/policies, Creative Commons does not authorize the
387 | use of the trademark "Creative Commons" or any other trademark or logo
388 | of Creative Commons without its prior written consent including,
389 | without limitation, in connection with any unauthorized modifications
390 | to any of its public licenses or any other arrangements,
391 | understandings, or agreements concerning use of licensed material. For
392 | the avoidance of doubt, this paragraph does not form part of the
393 | public licenses.
394 |
395 | Creative Commons may be contacted at creativecommons.org.
396 |
397 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # bbchallenge's proofs
2 |
3 | For [The Busy Beaver Challenge](https://bbchallenge.org) to be successful we want to formally prove as many of the challenge's results as possible.
4 |
5 | This includes:
6 | - Proving the correctness of [deciders](https://bbchallenge.org/method#deciders) (https://github.com/bbchallenge/bbchallenge-deciders)
7 | - Proving the non-halting/halting of specific individual machines that are not covered by deciders
8 |
9 | Please see our [reproducibility and verifiability statement](https://bbchallenge.org/method#reproducibility-and-verifiability-statement) for more.
10 |
11 | We elaborate and store these proofs here.
12 |
13 | ## Future work: using theorem provers
14 |
15 | At the moment we focus on writing standard plain-English proofs but future work includes a translation to formal proof systems such as [Lean](https://leanprover.github.io/) or [Coq](https://coq.inria.fr/).
16 |
17 | ## License
18 |
19 | This work is licensed under a
20 | Creative Commons Attribution 4.0 International License.
21 |
22 | You should have received a copy of the license along with this
23 | work. If not, see .
24 |
--------------------------------------------------------------------------------
/deciders/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "editor.quickSuggestions": {
3 | "comments": "off",
4 | "strings": "off",
5 | "other": "off"
6 | },
7 | }
--------------------------------------------------------------------------------
/deciders/README.md:
--------------------------------------------------------------------------------
1 | # Deciders' correctness
2 |
3 | Here we give correctness proofs of the [decider programs](https://bbchallenge.org/method#deciders) of The Busy Beaver Challenge.
4 |
--------------------------------------------------------------------------------
/deciders/correctness-deciders.bib:
--------------------------------------------------------------------------------
1 | @article{BusyBeaverFrontier,
2 | author = {Aaronson, Scott},
3 | title = {{T}he {B}usy {B}eaver {F}rontier},
4 | year = {2020},
5 | issue_date = {August 2020},
6 | publisher = {Association for Computing Machinery},
7 | address = {New York, NY, USA},
8 | volume = {51},
9 | number = {3},
10 | issn = {0163-5700},
11 | url = {https://doi.org/10.1145/3427361.3427369},
12 | doi = {10.1145/3427361.3427369},
13 | abstract = {The Busy Beaver function, with its incomprehensibly rapid growth, has captivated generations of computer scientists, mathematicians, and hobbyists. In this survey, I o er a personal view of the BB function 58 years after its introduction, emphasizing lesser-known insights, recent progress, and especially favorite open problems. Examples of such problems include: when does the BB function rst exceed the Ackermann function? Is the value of BB(20) independent of set theory? Can we prove that BB(n + 1) > 2BB(n) for large enough n? Given BB(n), how many advice bits are needed to compute BB(n + 1)? Do all Busy Beavers halt on all inputs, not just the 0 input? Is it decidable, given n, whether BB(n) is even or odd?},
14 | journal = {SIGACT News},
15 | month = sep,
16 | pages = {32–54},
17 | numpages = {23},
18 | note = {\url{https://www.scottaaronson.com/papers/bb.pdf}}
19 | }
20 |
21 | @unpublished{bbchallenge2025,
22 | author = {{The bbchallenge Collaboration}},
23 | title = {{Determination of the fifth Busy Beaver value}},
24 | year = {2025},
25 | note = {In submission}
26 | }
27 |
28 | @phdthesis{Lin1963,
29 | author = {Shen Lin},
30 | title = {{Computer studies of Turing machine problems}},
31 | school = {Ohio State University, Graduate School},
32 | year = {1963}
33 | }
34 |
35 | @article{Rado_1962,
36 | title = {On non-computable functions},
37 | volume = {41},
38 | number = {3},
39 | journal = {Bell System Technical Journal},
40 | author = {Rad\'{o}, Tibor},
41 | year = {1962},
42 | pages = {877–884},
43 | note = {\href{https://archive.org/details/bstj41-3-877/mode/2up}{https://archive.org/details/bstj41-3-877/mode/2up}}
44 | }
45 |
46 | @article{Marxen_1990,
47 | title = {{Attacking the Busy Beaver 5}},
48 | author = {H. Marxen and J{\"u}rgen Buntrock},
49 | journal = {Bull. EATCS},
50 | year = {1990},
51 | volume = {40},
52 | pages = {247-251}
53 | }
54 |
55 | @article{Brady83,
56 | issn = {00255718, 10886842},
57 | url = {http://www.jstor.org/stable/2007539},
58 | author = {Allen H. Brady},
59 | journal = {Mathematics of Computation},
60 | number = {162},
61 | pages = {647--665},
62 | publisher = {American Mathematical Society},
63 | title = {The Determination of the Value of Rado's Noncomputable Function $|sum(k)$ for Four-State Turing Machines},
64 | urldate = {2024-04-26},
65 | volume = {40},
66 | year = {1983}
67 | }
68 |
69 | @inproceedings{BEM_1997,
70 | title = {Reachability analysis of pushdown automata: Application to model-checking},
71 | author = {Bouajjani, Ahmed and Esparza, Javier and Maler, Oded},
72 | booktitle = {International Conference on Concurrency Theory},
73 | pages = {135--150},
74 | year = {1997},
75 | organization = {Springer}
76 | }
77 |
78 | @inproceedings{Biere_2020,
79 | author = {Armin Biere and Katalin Fazekas and Mathias Fleury and Maximillian Heisinger},
80 | title = {{CaDiCaL}, {Kissat}, {Paracooba}, {Plingeling} and {Treengeling}
81 | Entering the {SAT Competition 2020}},
82 | pages = {51--53},
83 | editor = {Tomas Balyo and Nils Froleyks and Marijn Heule and
84 | Markus Iser and Matti J{\"a}rvisalo and Martin Suda},
85 | booktitle = {Proc.~of {SAT Competition} 2020 -- Solver and Benchmark Descriptions},
86 | volume = {B-2020-1},
87 | series = {Department of Computer Science Report Series B},
88 | publisher = {University of Helsinki},
89 | year = 2020
90 | }
91 |
92 | @article{CUNINGHAMEGREEN1991251,
93 | title = {Minimax algebra and applications},
94 | journal = {Fuzzy Sets and Systems},
95 | volume = {41},
96 | number = {3},
97 | pages = {251-267},
98 | year = {1991},
99 | issn = {0165-0114},
100 | doi = {https://doi.org/10.1016/0165-0114(91)90130-I},
101 | url = {https://www.sciencedirect.com/science/article/pii/016501149190130I},
102 | author = {R.A. Cuninghame-Green},
103 | keywords = {Minimax algebra, combinatorial optimisation, discrete applied mathematics},
104 | abstract = {We consider theories of linear and of polynomial algebra, over two scalar systems, often called max-algebra and min-algebra. Here, max-algebra is the system M = (R ∪ {−∞}, ⊛, ⊗) where x ⊛ y = max(x, y) and x ⊛ y = x + y. Min-algebra is the dual system M′ = R ∪ {+∞}, ⊛, ⊗′ with x ⊛′ y = min(x, y) and x ⊗′ y = x + y. Towards the end we also consider minimax algebra, the system M″ = (R ∪ {−∞, +∞}, ⊛, ⊗, ⊛′, ⊗′). Application fields discussed include location problems, machine scheduling, cutting and packing problems, discrete-event systems and path-finding problems.}
105 | }
106 |
107 | @book{Sipser,
108 | author = {Sipser, Michael},
109 | title = {Introduction to the Theory of Computation},
110 | year = {1996},
111 | isbn = {053494728X},
112 | publisher = {International Thomson Publishing},
113 | edition = {1st},
114 | abstract = {From the Publisher:Michael Sipser's philosophy in writing this book is simple: make the subject interesting and relevant, and the students will learn. His emphasis on unifying computer science theory - rather than offering a collection of low-level details - sets the book apart, as do his intuitive explanations. Throughout the book, Sipser - a noted authority on the theory of computation - builds students' knowledge of conceptual tools used in computer science, the aesthetic sense they need to create elegant systems, and the ability to think through problems on their own. INTRODUCTION TO THE THEORY OF COMPUTATION provides a mathematical treatment of computation theory grounded in theorems and proofs. Proofs are presented with a "proof idea" component to reveal the concepts underpinning the formalism. Algorithms are presented using prose instead of pseudocode to focus attention on the algorithms themselves, rather than on specific computational models. Topic coverage, terminology, and order of presentation are traditional for an upper-level course in computer science theory. Users of the Preliminary Edition (now out of print) will be interested to note several new chapters on complexity theory: Chapter 8 on space complexity; Chapter 9 on provable intractability, and Chapter 10 on advanced topics, including approximation algorithms, alternation, interactive proof systems, cryptography, and parallel computing.}
115 | }
116 |
117 | @misc{ShawnCTL,
118 | author = {Ligocki, Shawn},
119 | title = {{CTL Filter}},
120 | howpublished = {Blog: \url{https://www.sligocki.com/2022/06/10/ctl.html}},
121 | note = {Accessed: 2023-03-20}
122 | }
123 |
124 |
125 | @misc{BruteforceCTL,
126 | author = {Iijil},
127 | title = {Bruteforce-CTL},
128 | year = {2022},
129 | publisher = {GitHub},
130 | journal = {GitHub repository},
131 | howpublished = {\url{https://github.com/Iijil1/Bruteforce-CTL}},
132 | commit = {6d97079dbb2d272f7e82c799c21b6dd0bd3286ed}
133 | }
134 |
--------------------------------------------------------------------------------
/deciders/correctness-deciders.tex:
--------------------------------------------------------------------------------
1 | % !TeX root = correctness-deciders.tex
2 |
3 | \title{Turing machines deciders, part I}
4 | \author{
5 | The bbchallenge Collaboration\thanks{\url{https://bbchallenge.org}} \and
6 | Justin Blanchard \and
7 | Konrad Deka \and
8 | Nathan Fenner \and
9 | Tony Guilfoyle \and
10 | Iijil \and
11 | Maja Kądziołka \and
12 | Pavel Kropitz \and
13 | Shawn Ligocki \and
14 | Pascal Michel \and
15 | Mateusz Na\'{s}ciszewski \and
16 | Tristan Stérin
17 | }
18 |
19 | \documentclass[a4paper,british]{article}
20 |
21 | \usepackage{babel}
22 | \usepackage[utf8]{inputenc}
23 | \usepackage[T1]{fontenc}
24 | \usepackage[margin=1in]{geometry}
25 | %\usepackage{subfig}
26 | \usepackage[hidelinks]{hyperref}
27 | \usepackage{caption}
28 | \usepackage{floatpag}
29 | \usepackage{subcaption}
30 | \usepackage{tikz}
31 |
32 | \usepackage{algorithm}
33 | \usepackage[noend]{algpseudocode}
34 |
35 |
36 | \usepackage{graphicx}
37 | \usepackage{mathtools}
38 |
39 | \usepackage{amsmath,amsfonts,amssymb,amsthm}
40 |
41 | \theoremstyle{definition} % don't use italics
42 | \newtheorem{theorem}{Theorem}[section]
43 | \newtheorem{definition}{Definition}[section]
44 | \newtheorem{lemma}{Lemma}[section]
45 | \newtheorem{proposition}{Proposition}[section]
46 | \newtheorem{corollary}{Corollary}[section]
47 | \numberwithin{equation}{section}
48 |
49 |
50 | \theoremstyle{definition} % emphasize the "Remark N." with italics, not bold
51 | \newtheorem{observation}{Observation}[section]
52 | \newtheorem{example}{Example}[section]
53 | \newtheorem{remark}{Remark}[section]
54 |
55 | \usepackage{xassoccnt}
56 | \DeclareCoupledCountersGroup{theorems}
57 | \DeclareCoupledCounters[name=theorems]{theorem,definition,lemma,proposition,corollary,remark,observation,example}
58 |
59 | \usepackage{microtype,xspace,wrapfig,multicol}
60 | \usepackage[textsize=tiny,color=lightgray]{todonotes}
61 | \usepackage[normalem]{ulem} % sout
62 | \usepackage{stmaryrd}
63 |
64 | \newcommand{\ts}[1]{{\color{red}#1}}
65 | \newcommand{\tsi}[1]{\todo[inline]{TS: #1}}
66 | \newcommand{\tsm}[1]{\todo{TS: #1}}
67 | \newcommand{\tss}[2]{{\ts{\sout{#1}}} {\ts{#2}}}
68 | \newcommand{\jb}[1]{{\color{blue}#1}}
69 | \newcommand{\jbi}[1]{\todo[inline]{JB: #1}}
70 | \newcommand{\jbm}[1]{\todo{JB: #1}}
71 | \newcommand{\jbs}[2]{{\jb{\sout{#1}}} {\jb{#2}}}
72 | \newcommand{\tabi}{\hspace{\algorithmicindent}}
73 | \newcommand{\Lim}[1]{\raisebox{0.5ex}{\scalebox{0.8}{$\displaystyle \lim_{#1}\;$}}}
74 | \newcommand{\N}{\mathbb{N}}
75 | \newcommand{\Z}{\mathbb{Z}}
76 |
77 | \newcommand{\lhead}[1]{\stackrel{#1}\triangleleft}
78 | \newcommand{\rhead}[1]{\stackrel{#1}\triangleright}
79 |
80 | \usepackage{xcolor}
81 |
82 | \definecolor{colorA}{RGB}{255,0,0}
83 | \definecolor{colorB}{RGB}{255,128,0}
84 | \definecolor{colorC}{RGB}{0,0,255}
85 | \definecolor{colorD}{RGB}{0,255,0}
86 | \definecolor{colorE}{RGB}{255,0,255}
87 |
88 | \usepackage{titling}
89 | \setlength{\droptitle}{-8em}
90 |
91 | \begin{document}
92 | \date{}
93 |
94 | \maketitle
95 | \vspace{-3.7em}
96 | \begin{abstract}
97 | The Busy Beaver Challenge (or bbchallenge) aims at collaboratively solving the following conjecture: ``$S(5) = 47{,}176{,}870$'' [Radó, 1962]\nocite{Rado_1962}, [Marxen and Buntrock, 1990]\nocite{Marxen_1990}, [Aaronson, 2020]\nocite{BusyBeaverFrontier}. This conjecture says that if a 5-state Turing machine runs for more than 47,176,870 steps without halting, then it will never halt -- starting from the all-0 tape. Proving this conjecture amounts to deciding whether 181,385,789 Turing machines with 5 states halt or not -- starting from the all-0 tape \cite{bbchallenge2025}. To do so, we write \textit{deciders}: programs that take as input a Turing machine and output either \texttt{HALT}, \texttt{NONHALT}, or \texttt{UNKNOWN}. Each decider is specialised in recognising a particular type of non-halting behavior.\footnote{Because the halting problem is undecidable, there is no \textit{universal} decider, i.e.~that never returns \texttt{UNKNOWN}.}
98 |
99 | After two years of work, the Busy Beaver Challenge achieved its goal in July 2024 by delivering a proof of ``$S(5) = 47{,}176{,}870$'' formalised in Coq\footnote{Coq has been renamed Rocq. Also, the formalised proof is available at \url{https://github.com/ccz181078/Coq-BB5}.} \cite{bbchallenge2025}. In this document, we present deciders that were developed before the Coq proof and which \textbf{were not used} in the proof;\footnote{Apart from the verifier part of Finite Automata Reduction, Section~\ref{sec:finite-automata-reduction}, which is used in \cite{bbchallenge2025}.} nonetheless, they are relevant techniques for analysing Turing machines. Part II of this work is the decider section of our paper showing ``$S(5) = 47{,}176{,}870$'' \cite{bbchallenge2025}, presenting the deciders that were used in the Coq proof.
100 |
101 | \end{abstract}
102 |
103 | \setcounter{tocdepth}{2}
104 | \tableofcontents
105 |
106 | \newpage
107 | \section{Conventions}\label{sec:conventions}
108 |
109 | \begin{table}[h!]
110 | \centering
111 | \begin{tabular}{lll}
112 | & 0 & 1 \\
113 | A & 1RB & 1LC \\
114 | B & 1RC & 1RB \\
115 | C & 1RD & 0LE \\
116 | D & 1LA & 1LD \\
117 | E & - - - & 0LA
118 | \end{tabular}
119 | \caption{Transition table of the current 5-state busy beaver champion: it halts after 47,176,870 steps.\\\url{https://bbchallenge.org/1RB1LC_1RC1RB_1RD0LE_1LA1LD_---0LA&status=halt}}
120 | \end{table}\label{table:bb5}
121 |
122 | The set $\mathbb{N}$ denotes $\{0,1,2\dots\}$.
123 |
124 | \paragraph*{Turing machines.}The Turing machines that are studied in the context of bbchallenge use a binary alphabet and a single bi-infinite tape. Machine transitions are either undefined (in which case the machine halts) or given by (a) a symbol to write (b) a direction to move (right or left) and (c) a state to go to. Table~\ref{table:bb5} gives the transition table of the current 5-state busy beaver champion. The machine halts after 47,176,870 steps (starting from all-0 tape) when it reads a 0 in state E, which is undefined.
125 |
126 | A \textit{configuration} of a Turing machine is defined by the 3-tuple: (i) state (ii) position of the head (iii) content of the memory tape. In the context of bbchallenge, \textit{the initial configuration} of a machine is always (i) state is A, i.e. the first state to appear in the machine's description (ii) head's position is 0 (iii) the initial tape is all-0 -- i.e. each memory cell is containing 0. We write $c_1 \vdash_\mathcal{M} c_2$ if a configuration $c_2$ is obtained from $c_1$ in one computation step of machine $\mathcal{M}$. We omit $\mathcal{M}$ if it is clear from context. We let $c_1 \vdash^s c_2$ denote a sequence of $s$ computation steps, and let $c_1 \vdash^* c_2$ denote zero or more computation steps. % exact same wording as in https://dna.hamilton.ie/assets/dw/NearyWoodsFCT09.pdf
127 | We write $c_1 \vdash \bot$ if the machine halts after executing one computation step from configuration $c_1$. In the context of bbchallenge, halting happens when an undefined machine transition is met i.e. no instruction is given for when the machine is in the state, tape position and tape corresponding to configuration $c_1$.
128 |
129 | When discussing concrete configurations, we write
130 | $0^\infty\; s_1\; \cdots\; s_{k-1}\; [s_k]_q\; s_{k+1}\; \cdots\; s_n\; 0^\infty$
131 | to mean the configuration where the machine is in state $q$, with the head
132 | positioned on the symbol $s_k$, and the tape both starts and end by an infinite sequence of 0s, represented $0^\infty$. Thus, the initial configuration of the machine
133 | can be written as $0^\infty\; [0]_A\; 0^\infty$.
134 |
135 | \paragraph*{Directional Turing machines.} We will sometimes prefer to think of the tape head as being between
136 | symbols. Thus, we write $l \lhead{q} r$, with $l,r\in\{0,1\}^*$ to mean that the head is at the rightmost symbol
137 | of $l$, and $l \rhead{q} r$ to mean that the head is at the leftmost symbol of $r$.
138 | For example, $0^\infty\; [1]_A\; 0^\infty$ can be written as
139 | $0^\infty\; 1 \lhead A 0^\infty$ or $0^\infty \rhead A 1\; 0^\infty$.
140 |
141 |
142 | \paragraph*{Space-time diagram.} We use space-time diagrams to give a visual representation of the behavior of a given machine. The space-time diagram of machine $\mathcal{M}$ is an image where the $i^\text{th}$ row of the image gives:
143 | \begin{enumerate}
144 | \item The content of the tape after $i$ steps (black is 0 and white is 1).
145 | \item The position of the head is colored to give state information using the following colours for 5-state machines: \textcolor{colorA}{A}, \textcolor{colorB}{B}, \textcolor{colorC}{C}, \textcolor{colorD}{D}, \textcolor{colorE}{E}.
146 | \end{enumerate}
147 |
148 | \input{sections/decider-cyclers.tex}
149 | \input{sections/decider-translated-cyclers.tex}
150 | \input{sections/decider-backward-reasoning.tex}
151 | \input{sections/decider-halting-segment.tex}
152 | \input{sections/decider-FAR-finite-automata-reduction.tex}
153 | \input{sections/decider-bouncers.tex}
154 |
155 | \appendix
156 |
157 | \section{Author contributions}
158 |
159 | \paragraph{The bbchallenge Collaboration (credits).} The following contributions resulted in the present work: Iijil (Halting Segment); Mateusz Na\'{s}ciszewski, Nathan Fenner, Tony Guilfoyle (Halting Segment reproductions); Justin Blanchard, Mateusz Naściszewski, Konrad Deka (FAR); Tony Guilfoyle, Tristan Stérin (FAR reproductions); Tony Guilfoyle (Bouncers); Iijil, savask, Maja Kądziołka, Tristan Stérin (Bouncers reproductions); savask, Tristan Stérin (Bouncers theory); Tristan Stérin, Justin Blanchard, savask (paper writing); Pavel Kropitz, Shawn Ligocki, Pascal Michel (paper review).
160 |
161 | \begin{itemize}
162 | \item The bbchallenge Collaboration, \url{bbchallenge.org}, \texttt{bbchallenge@bbchallenge.org}
163 | \item Justin Blanchard, \texttt{UncombedCoconut@gmail.com}
164 | \item Konrad Deka, \texttt{deka.konrad@gmail.com}
165 | \item Nathan Fenner, \texttt{nfenneremail@gmail.com}
166 | \item Tony Guilfoyle, \texttt{tonyguil@gmail.com}
167 | \item Iijil, \texttt{hheussen@web.de}
168 | \item Maja Kądziołka, \texttt{bb@compilercrim.es}
169 | \item Pavel Kropitz
170 | \item Shawn Ligocki, \texttt{sligocki@gmail.com}
171 | \item Pascal Michel, \texttt{pascalmichel314@gmail.com}
172 | \item Mateusz Na\'{s}ciszewski
173 | \item Tristan Stérin, PRGM DEV, \texttt{tristan@prgm.dev}
174 | \end{itemize}
175 |
176 | \bibliographystyle{abbrv}
177 |
178 | \bibliography{correctness-deciders}
179 |
180 | \end{document}
181 |
--------------------------------------------------------------------------------
/deciders/feedback/bouncers2.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/feedback/bouncers2.pdf
--------------------------------------------------------------------------------
/deciders/feedback/bouncers_annot.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/feedback/bouncers_annot.pdf
--------------------------------------------------------------------------------
/deciders/figures/FAR-finite-automata-reduction/FAR-texts.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/FAR-finite-automata-reduction/FAR-texts.pdf
--------------------------------------------------------------------------------
/deciders/figures/FAR-finite-automata-reduction/FAR.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/FAR-finite-automata-reduction/FAR.pdf
--------------------------------------------------------------------------------
/deciders/figures/FAR-finite-automata-reduction/FAR_tree_accept.dot:
--------------------------------------------------------------------------------
1 | digraph A {
2 | nodesep=0.1
3 | rankir="TB"
4 | "start" [shape=plaintext]
5 | "r1_0" [label="0"]
6 | "start" -> "r1_0"
7 | "r2_0" [label="0"]
8 | "r1_0" -> "r2_0"
9 | "r3_0" [label="0"]
10 | "r2_0" -> "r3_0"
11 | "r4_0A" [label="0A"]
12 | "r3_0" -> "r4_0A"
13 | "r5_1B" [label="1B"]
14 | "r4_0A" -> "r5_1B"
15 | "r6_0B" [label="0B"]
16 | "r6_1B" [label="1B"]
17 | "r5_1B" -> "r6_0B"
18 | "r5_1B" -> "r6_1B"
19 | "r7_1A" [label="1A"]
20 | "r7_0A" [label="0A"]
21 | "r6_0B" -> "r7_1A"
22 | "r6_1B" -> "r7_0A"
23 | "r8_0B" [label="0B"]
24 | "r8_1B" [label="1B"]
25 | "r8_bot" [label="⊥",peripheries=2]
26 | "r7_1A" -> "r8_0B"
27 | "r7_1A" -> "r8_1B"
28 | "r7_0A" -> "r8_bot"
29 | "r9_1A" [label="1A"]
30 | "r9_0B" [label="0B"]
31 | "r9_1B" [label="1B"]
32 | "r9_bot" [label="⊥",peripheries=2]
33 | "r8_0B" -> "r9_1A"
34 | "r8_1B" -> "r9_0B"
35 | "r8_1B" -> "r9_1B"
36 | "r8_bot" -> "r9_bot"
37 | "r10_1A" [label="1A"]
38 | "r10_0Bx" [label="0B"]
39 | "r10_0By" [label="0B"]
40 | "r10_1B" [label="1B"]
41 | "r10_bot" [label="⊥",peripheries=2]
42 | "r9_1A" -> "r10_0Bx"
43 | "r9_0B" -> "r10_1A"
44 | "r9_1B" -> "r10_0By"
45 | "r9_1B" -> "r10_1B"
46 | "r9_bot" -> "r10_bot"
47 | }
48 |
--------------------------------------------------------------------------------
/deciders/figures/FAR-finite-automata-reduction/FAR_tree_accept.dot.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
274 |
--------------------------------------------------------------------------------
/deciders/figures/FAR-finite-automata-reduction/FAR_tree_reject.dot:
--------------------------------------------------------------------------------
1 | digraph R {
2 | nodesep=0.1
3 | rankir="TB"
4 | "start" [shape=plaintext]
5 | "r1_0" [label="0"]
6 | "start" -> "r1_0"
7 | "r2_0" [label="0"]
8 | "r1_0" -> "r2_0"
9 | "r3_0" [label="0"]
10 | "r2_0" -> "r3_0"
11 | "r4_0A" [label="0A"]
12 | "r3_0" -> "r4_0A"
13 | "r5_1B" [label="1B"]
14 | "r4_0A" -> "r5_1B"
15 | "r6_0B" [label="0B"]
16 | "r6_1B" [label="1B"]
17 | "r5_1B" -> "r6_0B"
18 | "r5_1B" -> "r6_1B"
19 | }
20 |
--------------------------------------------------------------------------------
/deciders/figures/FAR-finite-automata-reduction/FAR_tree_reject.dot.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
103 |
--------------------------------------------------------------------------------
/deciders/figures/FAR-finite-automata-reduction/standalone-far-machine/standalone-far-machine.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/FAR-finite-automata-reduction/standalone-far-machine/standalone-far-machine.pdf
--------------------------------------------------------------------------------
/deciders/figures/FAR-finite-automata-reduction/standalone-far-machine/standalone-far-machine.tex:
--------------------------------------------------------------------------------
1 | \documentclass{standalone}
2 |
3 | \usepackage{xcolor}
4 |
5 | \definecolor{colorA}{RGB}{255,0,0}
6 | \definecolor{colorB}{RGB}{255,128,0}
7 | \definecolor{colorC}{RGB}{0,0,255}
8 | \definecolor{colorD}{RGB}{0,255,0}
9 | \definecolor{colorE}{RGB}{255,0,255}
10 |
11 | \begin{document}
12 |
13 | \begin{tabular}{lll}
14 | & 0 & 1 \\
15 | \textcolor{colorA}{A} & 1R\textcolor{colorB}{B} & 0L\textcolor{colorD}{D} \\
16 | \textcolor{colorB}{B} & 1L\textcolor{colorC}{C} & 1R\textcolor{colorA}{A} \\
17 | \textcolor{colorC}{C} & 0R\textcolor{colorB}{B} & 0L\textcolor{colorC}{C} \\
18 | \textcolor{colorD}{D} & - - - & 1L\textcolor{colorA}{A} \\
19 | \end{tabular}
20 |
21 | \end{document}
22 |
--------------------------------------------------------------------------------
/deciders/figures/FAR-finite-automata-reduction/standalone-far-nfa/standalone-far-nfa.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/FAR-finite-automata-reduction/standalone-far-nfa/standalone-far-nfa.pdf
--------------------------------------------------------------------------------
/deciders/figures/FAR-finite-automata-reduction/standalone-far-nfa/standalone-far-nfa.tex:
--------------------------------------------------------------------------------
1 | \documentclass[a4paper,10pt]{article}
2 |
3 | \usepackage{tikz}
4 | \usepackage[psfixbb,graphics,tightpage,active]{preview}
5 |
6 | \usepackage{xcolor}
7 |
8 | \definecolor{colorA}{RGB}{255,0,0}
9 | \definecolor{colorB}{RGB}{255,128,0}
10 | \definecolor{colorC}{RGB}{0,0,255}
11 | \definecolor{colorD}{RGB}{0,255,0}
12 | \definecolor{colorE}{RGB}{255,0,255}
13 |
14 | \PreviewEnvironment{tikzpicture}
15 |
16 | \begin{document}
17 |
18 | \usetikzlibrary {automata, positioning}
19 |
20 | \begin{tikzpicture}[shorten >=1pt]
21 | \node[state,initial above] (0) at (-2, 2) {0};
22 | \node[state] (1) at (-2, -2) {1};
23 | \node[state,accepting] (H) at (2, 4) {$\bot$};
24 | \node[state] (0A) at (0, 2) {0A};
25 | \node[state,accepting] (0D) at (4, 2) {0D};
26 | \node[state] (0B) at (2, 0) {0B};
27 | \node[state] (0C) at (4, 0) {0C};
28 | \node[state] (1C) at (2, -2.5) {1C};
29 | \node[state] (1B) at (0, -4) {1B};
30 | \node[state] (1A) at (4, -4) {1A};
31 | \node[state,accepting] (1D) at (5.5, -2) {1D};
32 |
33 | \path[->] (0) edge [loop right] node {\texttt{0}} (0)
34 | edge node [right] {\texttt{1}} (1)
35 | (1) edge [bend left=15] node [above left] {\texttt{0}$|$\texttt{1}} (0)
36 | (0A) edge node [right] {\texttt{0}} (1B)
37 | edge node [above,rotate=60] {\texttt{1}} (H)
38 | (0C) edge node [above] {\texttt{0}} (0B)
39 | edge node [right] {\texttt{1}} (1A)
40 | (0D) edge node [above,rotate=300] {\texttt{0}} (H)
41 | edge node [above] {\texttt{1}} (0A)
42 | edge [bend left] node [left] {\texttt{1}} (1A)
43 | (1A) edge node [above] {\texttt{1}} (1B)
44 | (1A) edge [bend right=15] node [above,rotate=300] {\texttt{0}$|$\texttt{1}} (0B)
45 | (0B) edge [bend right=5] node [above,rotate=300] {\texttt{0}$|$\texttt{1}} (1A)
46 | (1B) edge node [above right,rotate=60] {\texttt{0}} (0B)
47 | edge [loop left] node {\texttt{0}} (1B)
48 | edge [bend left] node [right] {\texttt{1}} (0A)
49 | (1C) edge node [above right,rotate=270] {\texttt{0}$|$\texttt{1}} (0B)
50 | (1D) edge [bend right=48] node [below,rotate=300] {\texttt{0}$|$\texttt{1}} (H)
51 | (H) edge [loop above] node {\texttt{0}$|$\texttt{1}} (H)
52 | (0) edge [dotted,bend left] node {\textcolor{colorA}{\texttt{A}}} (0A)
53 | edge [dotted] node [left] {\textcolor{colorB}{\texttt{B}}} (0B)
54 | edge [dotted] node {\textcolor{colorC}{\texttt{C}}} (0C)
55 | edge [dotted,bend left] node [right] {\textcolor{colorD}{\texttt{D}}} (0D)
56 | (1) edge [dotted] node {\textcolor{colorB}{\texttt{B}}} (1B)
57 | edge [dotted] node {\textcolor{colorA}{\texttt{A}}} (1A)
58 | edge [dotted] node [left] {\textcolor{colorC}{\texttt{C}}} (1C)
59 | edge [dotted] node [left] {\textcolor{colorD}{\texttt{D}}} (1D);
60 | \end{tikzpicture}
61 |
62 |
63 |
64 | \end{document}
65 |
--------------------------------------------------------------------------------
/deciders/figures/backward-reasoning/backward-reasoning-French.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/backward-reasoning/backward-reasoning-French.pdf
--------------------------------------------------------------------------------
/deciders/figures/backward-reasoning/backward-reasoning.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/backward-reasoning/backward-reasoning.pdf
--------------------------------------------------------------------------------
/deciders/figures/bouncers/10866122.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/bouncers/10866122.png
--------------------------------------------------------------------------------
/deciders/figures/bouncers/11657517.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/bouncers/11657517.png
--------------------------------------------------------------------------------
/deciders/figures/bouncers/11964870.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/bouncers/11964870.png
--------------------------------------------------------------------------------
/deciders/figures/bouncers/5228688.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/bouncers/5228688.png
--------------------------------------------------------------------------------
/deciders/figures/bouncers/5608043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/bouncers/5608043.png
--------------------------------------------------------------------------------
/deciders/figures/bouncers/7341465.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/bouncers/7341465.png
--------------------------------------------------------------------------------
/deciders/figures/bouncers/80747967.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/bouncers/80747967.png
--------------------------------------------------------------------------------
/deciders/figures/bouncers/88427177.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/bouncers/88427177.png
--------------------------------------------------------------------------------
/deciders/figures/bouncers/9281450.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/bouncers/9281450.png
--------------------------------------------------------------------------------
/deciders/figures/bouncers/bouncers.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/bouncers/bouncers.pdf
--------------------------------------------------------------------------------
/deciders/figures/halting-segment/halting-segment.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/halting-segment/halting-segment.pdf
--------------------------------------------------------------------------------
/deciders/figures/space-time-diagrams/backward_reasoning_55897188.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/space-time-diagrams/backward_reasoning_55897188.png
--------------------------------------------------------------------------------
/deciders/figures/space-time-diagrams/cycler_279081.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/space-time-diagrams/cycler_279081.pdf
--------------------------------------------------------------------------------
/deciders/figures/space-time-diagrams/cycler_279081.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/deciders/figures/space-time-diagrams/cycler_4239083.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/space-time-diagrams/cycler_4239083.pdf
--------------------------------------------------------------------------------
/deciders/figures/space-time-diagrams/cycler_4239083.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/deciders/figures/space-time-diagrams/finite-automata-reduction-counter4-halt.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/space-time-diagrams/finite-automata-reduction-counter4-halt.pdf
--------------------------------------------------------------------------------
/deciders/figures/space-time-diagrams/finite-automata-reduction-counter4-halt.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/deciders/figures/space-time-diagrams/finite-automata-reduction-counter4.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/space-time-diagrams/finite-automata-reduction-counter4.pdf
--------------------------------------------------------------------------------
/deciders/figures/space-time-diagrams/finite-automata-reduction-counter4.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/deciders/figures/space-time-diagrams/four_state_counter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/space-time-diagrams/four_state_counter.png
--------------------------------------------------------------------------------
/deciders/figures/space-time-diagrams/translated_cycler_44394115.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/space-time-diagrams/translated_cycler_44394115.pdf
--------------------------------------------------------------------------------
/deciders/figures/space-time-diagrams/translated_cycler_44394115.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/deciders/figures/space-time-diagrams/translated_cycler_44394115_annotated.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/space-time-diagrams/translated_cycler_44394115_annotated.pdf
--------------------------------------------------------------------------------
/deciders/figures/space-time-diagrams/translated_cycler_44394115_annotated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/space-time-diagrams/translated_cycler_44394115_annotated.png
--------------------------------------------------------------------------------
/deciders/figures/space-time-diagrams/translated_cycler_59090563.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/figures/space-time-diagrams/translated_cycler_59090563.png
--------------------------------------------------------------------------------
/deciders/sections/decider-backward-reasoning.tex:
--------------------------------------------------------------------------------
1 | % !TeX root = ../correctness-deciders.tex
2 |
3 | \newpage
4 | \section{Backward Reasoning}\label{sec:backward-reasoning}
5 |
6 | \begin{figure}
7 | \centering
8 | \begin{subfigure}[m]{0.45\textwidth}
9 | \centering
10 | \includegraphics[width=\textwidth]{figures/space-time-diagrams/backward_reasoning_55897188.png}
11 | \caption{10,000-step space-time diagram of bbchallenge's machine \#55,897,188. \url{https://bbchallenge.org/55897188}}
12 | \label{fig:y equals x}
13 | \end{subfigure}
14 | \hfill
15 | \begin{subfigure}[m]{0.45\textwidth}
16 | \centering
17 | \begin{tabular}{lll}
18 | & 0 & 1 \\
19 | \textcolor{colorA}{A} & 1R\textcolor{colorB}{B} & 0LD \\
20 | \textcolor{colorB}{B} & 1L\textcolor{colorC}{C} & 0RE \\
21 | \textcolor{colorC}{C} & - - - & 1LD \\
22 | D & 1LA & 1LD \\
23 | E & 1RA & 0RA
24 | \end{tabular}
25 |
26 |
27 | \caption{Transition table of machine \#55,897,188.}
28 |
29 | \end{subfigure}
30 |
31 | \begin{subfigure}[m]{1\textwidth}
32 | \vspace{5ex}
33 | \centering
34 | \includegraphics[width=0.9\textwidth]{figures/backward-reasoning/backward-reasoning.pdf}
35 |
36 | \caption{Contradiction reached after 3 backward steps: machine \#55,897,188 cannot reach its halting configuration hence it does not halt.}
37 |
38 | \end{subfigure}
39 |
40 | \caption{Applying backward reasoning on bbchallenge's machine \#55,897,188. (a) 10,000-step space-time diagram of machine \#55,897,188. The \textit{forward} behavior of the machine looks very complex. (b) Transition table. (c) We are able to deduce that the machine will never halt thanks to only 3 backward reasoning steps: because a contradiction is met, it is impossible to reach the halting configuration in more than 3 steps -- and, by (a), the machine did not halt in 10,000 steps starting from all-0 tape.}
41 | \label{fig:backward-reasoning}
42 | \end{figure}
43 |
44 |
45 | Backward reasoning, as described in \cite{Marxen_1990}, takes a different approach than what has been done with deciders in Sections~\ref{sec:cyclers} and \ref{sec:translated-cyclers}. Indeed, instead of trying to recognise a particular kind of machine's behavior, the idea of backward reasoning is to show that, independently of the machine's behavior, the halting configurations are not reachable. In order to do so, the decider simulates the machine \textit{backwards} from halting configurations until it reaches some obvious contradiction.
46 |
47 | Figure~\ref{fig:backward-reasoning} illustrates this idea on bbchallenge's machine \#55,897,188. From the space-time diagram, the \textit{forward} behavior of the machine from all-0 tape looks to be extremely complex, Figure~\ref{fig:backward-reasoning}a. However, by reconstructing the sequence of transitions that would lead to the halting configuration (reading a 0 in state \textcolor{colorC}{C}), we reach a contradiction in only 3 steps, Figure~\ref{fig:backward-reasoning}c. Indeed, the only way to reach state \textcolor{colorC}{C} is to come from the right in state \textcolor{colorB}{B} where we read a 0. The only way to reach state \textcolor{colorB}{B} is to come from the left in state \textcolor{colorA}{A} where we read a 0. However, the transition table (Figure~\ref{fig:backward-reasoning}b) is instructing us to write a 1 in that case, which is not consistent with the 0 that we assumed was at this position in order for the machine to halt.
48 |
49 | Backward reasoning in the case of Figure~\ref{fig:backward-reasoning} was particularly simple because there was only one possible previous configuration for each backward step -- i.e. there is only one transition that can reach state \textcolor{colorC}{C} and same for state \textcolor{colorB}{B}. In general, this is not the case and the structure created by backward reasoning is a tree of configurations instead of just a chain. If all the leaves of a backward reasoning tree of depth $D$ reach a contradiction, we know that if the machine runs for $D$ steps from all-0 tape then the machine cannot reach a halting configuration and thus does not halt.
50 |
51 | \subsection{Pseudocode}
52 |
53 | \begin{algorithm}
54 | \caption{{\sc decider-backward-reasoning}}\label{alg:backward-reasoning}
55 |
56 | \begin{algorithmic}[1]
57 | \State{\textbf{const int} RIGHT, LEFT = 0, 1}
58 | \State \textbf{struct} Transition \{
59 | \State \tabi\textbf{State} state
60 | \State \tabi\textbf{int} read, write, move
61 | \State \}
62 | \State \textbf{struct} Configuration \{
63 | \State \tabi\textbf{State} state
64 | \State \tabi\textbf{int} headPosition
65 | \State \tabi\textbf{int $\boldsymbol{\to}$ int} tape
66 | \State \tabi\textbf{int} depth
67 | \State \}
68 |
69 | \State
70 |
71 | \Procedure{\textbf{Configuration} {\sc apply-transition-backwards}}{\textbf{Configuration} conf,\textbf{Transition} t}
72 | \State \textbf{int} reversedHeadMoveOffset = (t.move == RIGHT) ? -1 : 1
73 | \State \textbf{int} previousPosition = conf.headPosition+reversedHeadMoveOffset
74 | \If{previousPosition \textbf{in} conf.tape \textbf{and} conf.tape[previousPosition] != t.write}
75 | \State \textbf{return} \textbf{nil} // Backward contradiction spotted
76 | \EndIf
77 | \State \textbf{Configuration} previousConf = \{.state = t.state, .headPosition = previousPosition, .tape = conf.tape, .depth = conf.depth + 1\}
78 | \State previousConf.tape[previousPosition] = t.read
79 | \State \textbf{return} previousConf
80 | \EndProcedure
81 | \State
82 | \Procedure{\textbf{bool} {\sc decider-backward-reasoning}}{\textbf{TM} machine,\textbf{int} maxDepth}
83 |
84 | \State \textbf{Stack$\boldsymbol{<}$Configuration$\boldsymbol{>}$} configurationStack
85 | \For{\textbf{Pair$\boldsymbol{<}$State, int$\boldsymbol{>}$} (state,read) \textbf{in} {\sc get-undefined-transitions}(machine)}
86 | \State \textbf{Configuration} haltingConfiguration = \{.state = state, .headPosition = 0, .tape = \{0: read\}, .depth = 0\}
87 | \State configurationStack.\textbf{push}(haltingConfiguration)
88 | \EndFor
89 | \While{!configurationStack.\textbf{empty}()}
90 | \State \textbf{Configuration} currConf = configurationStack.\textbf{pop}()
91 | \If{currConf.depth $>$ maxDepth} \textbf{return} false \EndIf
92 |
93 | \For{\textbf{Transition} transition \textbf{in} {\sc get-transitions-reaching-state}(machine,currConf.state)}
94 | \State \textbf{Configuration} previousConf = {\sc apply-transition-backwards}(currConf, transition)
95 | \State // If no contradiction
96 | \If{previousConf != \textbf{nil}}
97 | \State configurationStack.\textbf{push}(previousConf)
98 | \EndIf
99 | \EndFor
100 | \EndWhile
101 |
102 | \State \textbf{return} true
103 | \EndProcedure
104 |
105 | \end{algorithmic}
106 | \end{algorithm}
107 |
108 | We assume that we are given routine {\sc get-undefined-transitions}(machine) which returns the list of (state,readSymbol) pairs of all the undefined transitions in the machine's transition table, for instance [(\textcolor{colorC}{C},0)] for the machine of Figure~\ref{fig:backward-reasoning}b. We also assume that we are given routine {\sc get-transitions-reaching-state}(machine,targetState) which returns the list of all machine's transitions that go to the specified target state, for instance [(\textcolor{colorA}{A},1,0LD),(\textcolor{colorC}{C},1,1LD),(D,1,1LD)] for target state D in the machine of Figure~\ref{fig:backward-reasoning}b. These two routines contain very minimal logic as they only lookup in the description of the machine for the required information.
109 |
110 | \subsection{Correctness}
111 |
112 | \begin{theorem}\label{th:backward-reasoning}
113 | Let $\mathcal{M}$ be a Turing machine and $D\in\mathbb{N}$.
114 | Then, {\sc decider-backward-reasoning}($\mathcal{M}$,$D$) returns \texttt{true} if and only if no undefined transition of $\mathcal{M}$ can be reached in more than $D$ steps.
115 | \end{theorem}
116 | \begin{proof}
117 | The tree of backward configurations is maintained in a DFS fashion through a stack (Algorithm~\ref{alg:backward-reasoning}, l.23). Initially, the stack is filled with the configurations where only one tape cell is defined and state is set such that the corresponding transition is undefined (i.e. the machine halts after that step), l.24-26.
118 |
119 | Then, the main loop runs until either (a) the stack is empty or (b) one leaf exceeded the maximum allowed depth, l.27 and l.29. Note that running the algorithm with increased maximum depth increases its chances to contradict all branches of the backward simulation tree. At each step of the loop, we remove the current configuration from the stack and we try to apply all the transitions that lead to this configuration backwards by calling routine {\sc apply-transition-backwards}(configuration, transition).
120 |
121 | The only case where it is not possible to apply a transition backwards, i.e. the case where a contradiction is reached, is when the tape symbol at the position where the transition comes from (i.e. to the right if transition movement is left and vice-versa) is defined but is not equal to the write instruction of the transition. Indeed, that means that the future (i.e. previous backward steps) is not consistent with the current transition's write instruction. This logic is in l.16. Otherwise, we can construct the previous configuration (i.e. next backward step) and augment depth by 1. We then stack this configuration in the main routine (l.34).
122 |
123 | The algorithm returns \texttt{true} if and only if the stack ever becomes empty which means that all leaves of the backward simulation tree of depth $D$ have reached a contradiction and thus, no undefined transition of the machine is reachable in more than $D$ steps.
124 | \end{proof}
125 |
126 | \begin{corollary}
127 | Let $\mathcal{M}$ be a Turing machine and $D\in\mathbb{N}$. If {\sc decider-backward-reasoning}($\mathcal{M}$,$D$) returns \texttt{true} and machine $\mathcal{M}$ can run $D$ steps from all-0 tape without halting then the behavior of $\mathcal{M}$ from all-0 tape has been decided: $\mathcal{M}$ does not halt.
128 | \end{corollary}
129 | \begin{proof}
130 | By Theorem~\ref{th:backward-reasoning} we know that no undefined transition of $\mathcal{M}$ can be reached in more than $D$ steps. Hence, if machine $\mathcal{M}$ can run $D$ steps from all-0 tape without halting, it will be able to run the next $D+1^{\text{th}}$ step. From there, the machine cannot halt or it would contradict the fact that halting trajectories have at most $D$ steps. Hence, $\mathcal{M}$ does not halt from all-0 tape.
131 | \end{proof}
132 |
133 | \subsection{Implementation}\label{sec:backward-reasoning-results}
134 |
135 | The decider was coded in \texttt{golang} and is accessible at this link: \url{https://github.com/bbchallenge/bbchallenge-deciders/blob/main/decider-backward-reasoning}. Note that collaborative work allowed to find a bug in the initial algorithm that was implemented\footnote{Thanks to collaborators \url{https://github.com/atticuscull} and \url{https://github.com/modderme123}.}.
136 |
137 | % The decider decided 2,035,598 machines, out of 3,574,222 machines that were left after deciders for ``Cyclers'' and ``Translated Cyclers'' (Section~\ref{sec:cyclers} and Section~\ref{sec:translated-cyclers}). Maximum depth was set to 300. More information about these results are available at: \url{https://discuss.bbchallenge.org/t/decider-backward-reasoning/35}.
138 |
--------------------------------------------------------------------------------
/deciders/sections/decider-cyclers.tex:
--------------------------------------------------------------------------------
1 | % !TeX root = ../correctness-deciders.tex
2 |
3 | \newpage
4 | \section{Cyclers}\label{sec:cyclers}
5 |
6 | \begin{figure}[h!]
7 | \centering
8 | \includegraphics[width=0.4\textwidth]{figures/space-time-diagrams/cycler_279081.pdf}
9 | \hspace{2ex}
10 | \includegraphics[width=0.4\textwidth]{figures/space-time-diagrams/cycler_4239083.pdf}
11 | \caption{Space-time diagrams of the 30 first steps of bbchallenge's machines \#279,081 (left) and \#4,239,083 (right) which are both ``Cyclers'': they eventually repeat the same configuration for ever. \\
12 | Access the machines at \url{https://bbchallenge.org/279081} and
13 | \url{https://bbchallenge.org/4239083}.}\label{fig:cyclers}
14 | \end{figure}
15 |
16 | The goal of this decider is to recognise Turing machines that cycle through the same configurations forever. Such machines never halt. The method is simple: remember every configuration seen by a machine and return \texttt{true} if one is visited twice. A time limit (maximum number of steps) is also given for running the test in practice: the algorithm recognises any machine whose cycle fits within this limit\footnote{In practice, for machines with 5 states the decider was run with 1000 steps time limit.}.
17 |
18 |
19 | \begin{example}\normalfont
20 | Figure~\ref{fig:cyclers} gives the space-time diagrams of the 30 first iterations of two ``Cyclers'' machines: bbchallenge's machines \#279,081 (left) and \#4,239,083 (right). Refer to \url{https://bbchallenge.org/279081} and
21 | \url{https://bbchallenge.org/4239083} for their transition tables. From these space-time diagrams we see that the machines eventually repeat the same configuration.
22 | \end{example}
23 |
24 | \subsection{Pseudocode}
25 |
26 | We assume that we are given a Turing Machine type \textbf{TM} that encodes the transition table of a machine as well as a procedure \textbf{TuringMachineStep}(machine,configuration) which computes the next configuration of a Turing machine from the given configuration or \textbf{nil} if the machine halts at that step. The pseudocode is given in Algorithm~\ref{alg:cyclers}.
27 |
28 | \begin{algorithm}
29 | \caption{{\sc decider-cyclers}}\label{alg:cyclers}
30 |
31 | \begin{algorithmic}[1]
32 |
33 | \State \textbf{struct} Configuration \{
34 | \State \tabi\textbf{State} state
35 | \State \tabi\textbf{int} headPosition
36 | \State \tabi\textbf{int $\boldsymbol{\to}$ int} tape
37 | \State \}
38 | \State
39 | \Procedure{\textbf{bool} {\sc decider-cyclers}}{\textbf{TM} machine,\textbf{int} timeLimit}
40 | \State \textbf{Configuration} currConfiguration = \{.state = \textcolor{colorA}{A}, .headPosition = 0, .tape = \{0:0\}\}
41 | \State \textbf{Set$\boldsymbol{<}$Configuration$\boldsymbol{>}$} configurationsSeen = \{\}
42 | \State \textbf{int} currTime = 0
43 |
44 | \While{currTime $\leq$ timeLimit}
45 | \If{currConfiguration \textbf{in} configurationsSeen} \label{j:alg:cyclers}
46 | \State \textbf{return} true
47 | \EndIf
48 | \State configurationsSeen.\textbf{insert}(currConfiguration) \label{i:alg:cyclers}
49 |
50 | \State currConfiguration = \textbf{TuringMachineStep}(machine,currConfiguration)
51 | \State currTime += 1
52 |
53 |
54 | \If{currConfiguration == \textbf{nil}}
55 | \State \textbf{return} false //machine has halted, it is not a Cycler
56 | \EndIf
57 | \EndWhile
58 |
59 | \State \textbf{return} false
60 | \EndProcedure
61 |
62 | \end{algorithmic}
63 | \end{algorithm}
64 |
65 | \subsection{Correctness}
66 |
67 |
68 |
69 | \begin{theorem}\label{th:cyclers} Let $\mathcal{M}$ be a Turing machine and $t \in \mathbb{N}$ a time limit. Let $c_0$ be the initial configuration of the machine. There exists $i\in\mathbb{N}$ and $j\in\mathbb{N}$ such that $c_0 \vdash^i c_i \vdash^{j-i} c_i$ with $i < j \leq t$ if and only if {\sc decider-cyclers}($\mathcal{M}$,$t$) returns \texttt{true} (Algorithm~\ref{alg:cyclers}).
70 | \end{theorem}
71 | \begin{proof}
72 | This follows directly from the behavior of {\sc decider-cyclers}($\mathcal{M}$,$t$): all configurations from $c_0$ to $c_t$ are recorded and the algorithm returns \texttt{true} if and only if one is visited twice. This mathematically translates to
73 | there exists $i\in\mathbb{N}$ and $j\in\mathbb{N}$ such that $c_0 \vdash^i c_i \vdash^{j-i} c_i$ with $i < j \leq t$, which is what we want. Index $i$ corresponds to the first time that $c_i$ is seen (l.\ref{i:alg:cyclers} in Algorithm~\ref{alg:cyclers}) while index $j$ corresponds to the second time that $c_i$ is seen (l.\ref{j:alg:cyclers} in Algorithm~\ref{alg:cyclers}).
74 | \end{proof}
75 |
76 | \begin{corollary}
77 | Let $\mathcal{M}$ be a Turing machine and $t \in \mathbb{N}$ a time limit. If {\sc decider-cyclers}($\mathcal{M}$,$t$) returns \texttt{true} then the behavior of $\mathcal{M}$ from all-0 tape has been decided: $\mathcal{M}$ does not halt.
78 | \end{corollary}
79 | \begin{proof}
80 | By Theorem~\ref{th:cyclers}, there exists $i\in\mathbb{N}$ and $j\in\mathbb{N}$ such that $c_0 \vdash^i c_i \vdash^{j-i} c_i$ with $i < j \leq t$. It follows that for all $k\in\mathbb{N}$, $c_0 \vdash^{i+k(j-i)} c_i$. The machine never halts as it will visit $c_i$ infinitely often.
81 | \end{proof}
82 |
83 | \subsection{Implementation}
84 |
85 | The decider was coded in \texttt{golang} and is accessible at this link: \url{https://github.com/bbchallenge/bbchallenge-deciders/tree/main/decider-cyclers}.
86 |
87 | % The decider found 11,229,238 ``Cyclers'', out of 88,664,064 machines in the seed database of the Busy Beaver Challenge (c.f. \url{https://bbchallenge.org/method#seed-database}). Time limit was set to 1000 and an additional memory limit (max number of visited cells) was set to 500. More information about these results are available at: \url{https://discuss.bbchallenge.org/t/decider-cyclers/33}.
88 |
--------------------------------------------------------------------------------
/deciders/sections/decider-halting-segment.tex:
--------------------------------------------------------------------------------
1 | % !TeX root = ../correctness-deciders.tex
2 |
3 | \newcommand{\HS}{Halting Segment\xspace}
4 |
5 | \newpage
6 | \section{Halting Segment}\label{sec:halting-segment}
7 |
8 | \paragraph{Acknowledgement.} Sincere thanks to bbchallenge's contributor Iijil who initially presented this method and the first implementation\footnote{See: \url{https://discuss.bbchallenge.org/t/decider-halting-segment}.}. Other contributors have contributed to this method by producing alternative implementations (see Section~\ref{sec:hs-implem}) or discussing and writing the formal proof presented here: Mateusz Naściszewski (Mateon1), Nathan Fenner, Tony Guilfoyle, Justin Blanchard, Tristan Stérin (cosmo), and, Pavel Kropitz (uni).
9 |
10 | \subsection{Overview}
11 |
12 | \begin{figure}[h!]
13 | \centering
14 | \includegraphics[width=1\textwidth]{figures/halting-segment/halting-segment.pdf}
15 | \caption{\HS graph for the 3-state machine \url{https://bbchallenge.org/1RB1RC_0LA0RA_0LB---} and segment size 2, see Definition~\ref{def:hs-graph}. Nodes of this graph correspond to \textit{segment configurations} (Definition~\ref{def:hs-conf}), i.e. configurations of the machine on a finite segment (here, of size 2). In a node, the machine's head position is represented between brackets and the symbol \texttt{-} represents the outside of the segment (either to the left or to the right). Nodes where the machine's head is within the segment (circle shape) only one have child corresponding to the next step of the machine and nodes where the head is outside of the segment (diamond shape) may have multiple children corresponding to all the theoretically possible ways (deduced from the machine's transition table) that the machine can enter the segment back or continue to stay out of it. In order to improve readability, edges that revisit a node are dotted. The machine presented here does not halt because the halting nodes (red outline) that are reachable from the initial nodes (blue outline) do not cover all the positions of the segment (there is no halting node for any of the two internal positions of the segment), by contraposition of Theorem~\ref{th:hs}. }\label{fig:hs}
16 | \end{figure}
17 |
18 | The idea of the \HS technique is to simulate a Turing machine on a finite segment of tape. When the machine leaves the segment in a certain state, we consider all the possible ways that it can re-enter the segment or stay out of it, based on the machine's transition table. For a given machine and segment size, this method naturally gives rise to a graph, the \HS graph (formally defined in Definition~\ref{def:hs-graph}).
19 |
20 | Figure~\ref{fig:hs} gives the \HS graph of the 3-state machine\footnote{We chose a 3-state machine in order to have a graph of reasonable size.} \url{https://bbchallenge.org/1RB1RC_0LA0RA_0LB---} for segment size 2. Let's describe this graph in more details:
21 |
22 | \begin{itemize}
23 | \item Nodes correspond to \textit{segment configurations} (Definition~\ref{def:hs-conf}), i.e. the state in which the machine is together with the content of the segment and the position of the head in the segment (or outside of it). For instance, the leftmost node in blue and diamond shape in Figure~\ref{fig:hs} is \texttt{A [-] 0 0 -} which means that the machine is in state A, that the segment currently contains \texttt{0 0} and that the machine's head is currently outside of the segment, to the left of it.
24 |
25 | \item Initial nodes (blue outline) correspond to all segment configurations that match the initial configuration of the machine (all-0 tape and state A). There are $n+2$ initial nodes with $n$ the size of the segment. Halting nodes (red outline) give the segment configurations where the machine has halted together with the halting transition that was used. For instance, in Figure~\ref{fig:hs}, the leftmost halting node \texttt{$\bot$ C1 [-] 0 0 -} signifies that the machine has halted ($\bot$), using halting transition \texttt{C1} (reading a 1 in state C), to the left of the segment which contains \texttt{0 0}.
26 |
27 | \item Nodes with a circle shape correspond to segment configurations where the tape's head is \textbf{inside} the segment. Such nodes only have one child, which corresponds to the next machine configuration.
28 |
29 | \item Nodes with a diamond shape correspond to segment configurations where the head is \textbf{outside} the segment. These nodes may have several children corresponding to all the ways that the head, in the current state, can stay outside of the segment or enter it back. For instance, the leftmost node in blue and diamond shape in Figure~\ref{fig:hs}, \texttt{A [-] 0 0 -}, has 4 children: \texttt{B [-] 0 0 -} and \texttt{B - [0] 0 -} and \texttt{C [-] 0 0 -} and \texttt{C - [0] 0 -}. This is because the transitions of the machine in state A are \texttt{1RB} and \texttt{1RC} and that the move \texttt{R} allows either to enter the segment back or to continue being out of it (if the head is far from the segment's left frontier). Note that the write symbol \texttt{1} of the transitions are ignored since we do not keep track of the tape outside of the segment.
30 |
31 | \item In order to increase the readability of Figure~\ref{fig:hs}, only one entrant edge for each node has been drawn with a solid line, corresponding to the first visit of that node in the particular order that the graph was visited. Later visits were drawn with a dotted line.
32 | \end{itemize}
33 |
34 | What is special about the \HS graph? We show in Theorem~\ref{th:hs} that if a machine halts, then, for all segment sizes, its \HS graph contains a set of halting nodes (red outline), for the same halting transition, that covers the entire segment and its outside, i.e. such that there is at least one such node per segment's position and outside of it (left and right). By contraposition, if there is no set of covering halting nodes for a halting transition, the machine does not halt. In Figure~\ref{fig:hs}, we deduce that machine \url{https://bbchallenge.org/1RB1RC_0LA0RA_0LB---} does not halt since the halting nodes of halting transition \texttt{C1} are \texttt{$\bot$ C1 [-] 0 0 -}, \texttt{$\bot$ C1 - 0 1 [-]} and \texttt{$\bot$ C1 - 0 0 [-]} which does not cover the entire segment (both internal segment positions are not covered).
35 |
36 | Interestingly, \HS is the method that was used by Newcomb Greenleaf to prove\footnote{\url{http://turbotm.de/~heiner/BB/TM4-proof.txt}} that Marxen \& Buntrock's chaotic machine\footnote{\url{https://bbchallenge.org/76708232}} \cite{Marxen_1990} does not halt.
37 |
38 | \subsection{Formal proof}
39 |
40 | \begin{definition}[Segment configurations]\label{def:hs-conf}
41 | Let the \textit{segment size} be $n \in \N$. A \textit{segment configuration} is a 3-tuple: (i) state, (ii) $w \in \{0,1\}^n$ which is the segment's content and (iii) the position of the machine's head is an integer $p \in \llbracket -1, n \rrbracket$ where positions $\llbracket 0,n \llbracket$ correspond to the interior of the segment, position $-1$ for outside to the left and $n$ for outside to the right. \textit{Halting segment configurations} are segment configurations where the state is $\bot$ and with an additional information (iv) of which halting transition of the machine has been used to halt.
42 | \end{definition}
43 |
44 | \begin{example}
45 | In Figure~\ref{fig:hs} we have $n=2$ and, the leftmost node in blue and diamond shape corresponds to segment configuration \texttt{A [-] 0 0 -} (i) state A, (ii) $w = \texttt{00}$ and (iii) $p = -1$. The rightmost node in red and diamond shape corresponds to halting segment configuration $\bot$ \texttt{C1 - 0 0 [-]} (i) state $\bot$, (ii) $w = \texttt{00}$, (iii) $p = 2$ and (iv) halting transition \texttt{C1}.
46 | \end{example}
47 |
48 | \begin{definition}[\HS graph]\label{def:hs-graph}
49 | Let $\mathcal{M}$ be a Turing machine and $n \in \N$ a segment size. The \HS graph for $\mathcal{M}$ and $n$ is a directed graph where the nodes are segment configurations (Definition~\ref{def:hs-conf}). The graph is generated from $n+2$ \textit{initial nodes} (blue outline in Figure~\ref{fig:hs}) that are all in state A with segment content $0^n$ ($n$ consecutive 0s) but where the head is at each of the $n+2$ possible positions, one per each initial node, see the blue nodes in Figure~\ref{fig:hs} for an example.
50 | Then, edges that go out of a given node $r$ are defined as follows:
51 | \begin{itemize}
52 | \item If $r$'s head position is inside the segment (circle nodes in Figure~\ref{fig:hs}), then $r$ only has one child corresponding to the next simulation step for machine $\mathcal{M}$. For instance, in Figure~\ref{fig:hs}, node \texttt{A - [0] 0 -} has a unique child \texttt{B - 1 [0] -}, following machine's transition \texttt{A0} which is \texttt{1RB}. That child can be a halting segment configuration if the transition to take is halting.
53 | \item If $r$'s head position is outside the segment (diamond nodes in Figure~\ref{fig:hs}), then, we consider each transition of $r$'s state. There are three cases:
54 | \begin{enumerate}
55 | \item If the transition is halting, we add a child to $r$ which is the halting segment configuration node corresponding to this transition. For instance, in Figure~\ref{fig:hs}, \texttt{C [-] 0 0 -} has halting child $\bot$ \texttt{C1 [-] 0 0 -} corresponding to halting transition \texttt{C1}.
56 | \item If the transition's movement goes further away from the segment (e.g. we are to the left of the segment, $p=-1$, and the transition movement is \texttt{L}), we add one child for this transition that only differs from its parent in the new state that it moves into. For instance, in Figure~\ref{fig:hs}, \texttt{A - 0 0 [-]} has child \texttt{B - 0 0 [-]} for transition \texttt{A0} which is \texttt{1RB}.
57 | \item If the transition's movement goes in the direction of the segment (e.g. we are to the left of the segment, $p=-1$, and the transition movement is \texttt{R}), we add two children for this transition. One corresponding to the case where that movement is made at the border of the segment and allows to re-enter the segment and the other one corresponding to the case where that movement is made farther away from the border and does not re-enter yet. For instance, in Figure~\ref{fig:hs}, node \texttt{A [-] 0 0 -} has children \texttt{B [-] 0 0 -} and \texttt{B - [0] 0 -} for transition \texttt{A0} which is \texttt{1RB}.
58 | \end{enumerate}
59 | \end{itemize}
60 |
61 | Halting nodes are nodes corresponding to halting segment configurations (red outline in Figure~\ref{fig:hs}).
62 |
63 | \end{definition}
64 |
65 | \begin{theorem}[\HS]\label{th:hs}
66 | Let $\mathcal{M}$ be a Turing machine and $n \in \N$ a segment size. Let $G$ be the \HS graph for $\mathcal{M}$ and $n$ (Definition~\ref{def:hs-graph}). If $\mathcal{M}$ halts in halting transition $T$ when started from state A and all-0 tape, then $G$ must contain a halting node for transition $T$ for each of the $n+2$ possible values of the head's position $p \in \llbracket -1, n \rrbracket$.
67 | \end{theorem}
68 | \begin{proof}
69 | Consider the trace of configurations of $\mathcal{M}$ (full configurations, not segment configurations, as defined in Section~\ref{sec:conventions}) from the initial configuration (state A and all-0 tape) to the halting configuration which happens using halting transition $T$. Starting from the halting configuration, construct the halting segment configuration (with segment size $n$) for $T$ using any position $p \in \llbracket -1, n \rrbracket$ in the segment and fill the segment's content from what is written on the tape around the head in the halting configuration of $\mathcal{M}$. From there, work your way up to the initial configuration: at each step construct the associated segment configuration. This sequence of segment configurations constitute a set of nodes in the \HS graph $G$ of $\mathcal{M}$ for segment size $n$ such that each node points to the next one. At the top of that chain there will be a node matching the initial configuration: state A, all-0 segment and head position somewhere in $\llbracket -1, n \rrbracket$, i.e. an initial node.
70 |
71 | Hence we have shown that all halting nodes for transition $T$ for each of the $n+2$ possible values of the head's position $p \in \llbracket -1, n \rrbracket$ are reachable from some initial node(s).
72 | \end{proof}
73 |
74 | \begin{remark}
75 | By contraposition of Theorem~\ref{th:hs}, if, for all halting transitions $T$ there is at least one halting node (red outline in Figure~\ref{fig:hs}) for some position in the segment that is not reachable from one of the initial node (blue outline in Figure~\ref{fig:hs}) then the machine does not halt. That way, in Figure~\ref{fig:hs}, we can conclude that machine \url{https://bbchallenge.org/1RB1RC_0LA0RA_0LB---} does not halt since the halting nodes of halting transition \texttt{C1} are \texttt{$\bot$ C1 [-] 0 0 -}, \texttt{$\bot$ C1 - 0 1 [-]} and \texttt{$\bot$ C1 - 0 0 [-]} which does not cover the entire segment (both internal segment positions are not covered).
76 |
77 | Note that if all of the segment's positions are covered for some halting transition, we cannot conclude that the machine does not halt, but it does not mean that the machine necessarily halts either.
78 | \end{remark}
79 |
80 | \begin{remark}
81 | Some non-halting machines cannot be decided using \HS for any segment size. Such a machine is for instance \url{https://bbchallenge.org/1RB---_1LC0RB_1LB1LA}.
82 | \end{remark}
83 |
84 | \subsection{Implementations}\label{sec:hs-implem}
85 |
86 |
87 | Here are the implementations of the method that were realised. Almost all of them construct the \HS graph from the halting nodes (backward implementation) instead of from the initial nodes (forward implementation):
88 |
89 | \begin{enumerate}
90 | \item Iijil's who originally proposed the method, \url{https://github.com/bbchallenge/bbchallenge-deciders/tree/main/decider-halting-segment}, and was independently reproduced by Tristan Stérin (cosmo) \url{https://github.com/bbchallenge/bbchallenge-deciders/tree/main/decider-halting-segment-reproduction} (backward implementation)
91 | \item Mateusz Naściszewski (Mateon1)'s: \url{https://gist.github.com/mateon1/7f5e10169abbb50d1537165c6e71733b} (forward implementation)
92 | \item Nathan Fenner's which has the interesting feature of being written in a language for formal verification (Dafny): \url{https://github.com/Nathan-Fenner/bbchallenge-dafny-deciders/blob/main/halting-segment.dfy} (backward implementation)
93 | \item Tony Guilfoyle: \url{https://github.com/TonyGuil/bbchallenge/tree/main/HaltingSegments} (backward implementation)
94 | \end{enumerate}
95 |
96 | Iijil's implementation (1) is a bit different from what is presented in this document because the \HS graph is constructed backward (i.e. from the halting nodes instead of from the initial nodes). Also, the method adopts a lazy strategy consisting in testing only odd segment sizes (up to size $n_\text{max}$) and placing the head's position at the center of the tape. Finally, the information of state is not stored for nodes where the head is outside the segment. These implementation choices make the implementation a bit weaker than what was presented here.
97 |
98 | % Nonetheless, results are impressive, for $n_\texttt{max} = 13$, the method decides 1,002,808 machines out of the 1,538,624 remaining after backward reasoning (see Section~\ref{sec:backward-reasoning-results}). Hence, after \HS, we have 535,816 machines left to be decided\footnote{In fact 535,801 because 15 additional translated cyclers were decided, including some Skelet's machines.}.
99 |
--------------------------------------------------------------------------------
/deciders/sections/decider-translated-cyclers.tex:
--------------------------------------------------------------------------------
1 | % !TeX root = ../correctness-deciders.tex
2 |
3 | \newpage
4 | \section{Translated Cyclers}\label{sec:translated-cyclers}
5 |
6 | \begin{figure}[h!]
7 | \centering
8 | % \includegraphics[width=0.5\textwidth]{figures/space-time-diagrams/translated_cycler_44394115.pdf}
9 | % \hspace{2ex}
10 | \includegraphics[width=0.54\textwidth]{figures/space-time-diagrams/translated_cycler_44394115_annotated.pdf}
11 |
12 | \caption{Example ``Translated cycler'': 45-step space-time diagram of bbchallenge's machine \#44,394,115. See \url{https://bbchallenge.org/44394115}. The same bounded pattern is being translated to the right forever. The text annotations illustrate the main idea for recognising ``Translated Cyclers'': find two configurations that break a record (i.e. visit a memory cell that was never visited before) in the same state (here state \textcolor{colorD}{D}) such that the content of the memory tape at distance $L$ from the record positions is the same in both record configurations. Distance $L$ is defined as being the maximum distance to record position 1 that was visited between the configuration of record 1 and record 2.}\label{fig:translated-cyclers}
13 | \end{figure}
14 |
15 | The goal of this decider is to recognise Turing machines that translate a bounded pattern forever. We call such machines ``Translated cyclers''. They are close to ``Cyclers'' (Section~\ref{sec:cyclers}) in the sense that they are only repeating a pattern but there is added complexity as they are able to translate the pattern in space at the same time, hence the decider for Cyclers cannot directly apply here.
16 |
17 | The main idea for this decider is illustrated in Figure~\ref{fig:translated-cyclers} which gives the space-time diagram of a ``Translated cycler'': bbchallenge's machine \#44,394,115 (c.f. \url{https://bbchallenge.org/44394115}). The idea is to find two configurations that break a record (i.e. visit a memory cell that was never visited before) in the same state (here state \textcolor{colorD}{D}) such that the content of the memory tape at distance $L$ from the record positions is the same in both record configurations. Distance $L$ is defined as being the maximum distance to record position 1 that was visited between the configuration of record 1 and record 2. In those conditions, we can prove that the machine will never halt. Similar ideas have been developed in \cite{Lin1963}.
18 |
19 | The translated cycler of Figure~\ref{fig:translated-cyclers} features a relatively simple repeating pattern and transient pattern (pattern occurring before the repeating patterns starts). The translated cycler of Figure~\ref{fig:translated-cyclers-more} features a significantly more complex pattern. The method for detecting the behavior is the same but more resources are needed.
20 |
21 |
22 | \begin{figure}
23 | \centering
24 | % \includegraphics[width=0.5\textwidth]{figures/space-time-diagrams/translated_cycler_44394115.pdf}
25 | % \hspace{2ex}
26 | \includegraphics[width=0.7\textwidth]{figures/space-time-diagrams/translated_cycler_59090563.png}
27 |
28 | \caption{More complex ``Translated cycler'': 10,000-step space-time diagram (no state colours) of bbchallenge's machine \#59,090,563. See \url{https://bbchallenge.org/59090563}.}\label{fig:translated-cyclers-more}
29 | \end{figure}
30 |
31 |
32 | \subsection{Pseudocode}
33 |
34 | We assume that we are given a Turing Machine type \textbf{TM} that encodes the transition table of a machine as well as a procedure \textbf{TuringMachineStep}(machine,configuration) which computes the next configuration of a Turing machine from the given configuration or \textbf{nil} if the machine halts at that step.
35 |
36 | One minor complication of the technique described above is that one has to track record-breaking configurations on both sides of the tape: a configuration can break a record on the right or on the left. Also, in order to compute distance $L$ (see above or Definition~\ref{def:distL}) it is useful to add to memory cells the information of the last time step at which it was visited.
37 |
38 | We also assume that we are given a routine {\sc get-extreme-position}(tape,sideOfTape) which gives us the rightmost or leftmost position of the given tape (well defined as we always manipulate finite tapes).
39 |
40 | \begin{algorithm}
41 | \caption{{\sc decider-translated-cyclers}}\label{alg:translated-cyclers}
42 |
43 | \begin{algorithmic}[1]
44 | \State \textbf{const int} RIGHT, LEFT = 0, 1
45 | \State \textbf{struct} ValueAndLastTimeVisited \{
46 | \State \tabi\textbf{int} value
47 | \State \tabi\textbf{int} lastTimeVisited
48 |
49 |
50 | \State \}
51 | \State \textbf{struct} Configuration \{
52 | \State \tabi\textbf{State} state
53 | \State \tabi\textbf{int} headPosition
54 | \State \tabi\textbf{int $\boldsymbol{\to}$ ValueAndLastTimeVisited} tape
55 | \State \}
56 | \State
57 |
58 |
59 | \Procedure{\textbf{bool} {\sc decider-translated-cyclers}}{\textbf{TM} machine,\textbf{int} timeLimit}
60 | \State \textbf{Configuration} currConfiguration = \{.state = \textcolor{colorA}{A}, .headPosition = 0, .tape = \{0:\{.value = 0, .lastTimeVisited = 0\}\}\}
61 | \State // 0: right records, 1: left records
62 | \State \textbf{List$\boldsymbol{<}$Configuration$\boldsymbol{>}$}
63 | recordBreakingConfigurations[2] = [[],[]]
64 | \State \textbf{int} extremePositions[2] = [0,0]
65 | \State \textbf{int} currTime = 0
66 |
67 | \While{currTime $<$ timeLimit}
68 | \State \textbf{int} headPosition = currConfiguration.headPosition
69 | \State currConfiguration.tape[headPosition].lastTimeVisited = currTime
70 | \If{headPosition $>$ extremePositions[RIGHT] \textbf{or} headPosition $<$ extremePositions[LEFT]}
71 | \State \textbf{int} recordSide = (headPosition $>$ extremePositions[RIGHT]) ? RIGHT : LEFT
72 | \State extremePositions[recordSide] = headPosition
73 | \If{{\sc aux-check-records}(currConfiguration, recordBreakingConfigurations[recordSide], recordSide)}
74 | \State \textbf{return} true
75 | \EndIf
76 | \State recordBreakingConfigurations[recordSide].\textbf{append}(currConfiguration)
77 | \EndIf
78 |
79 | \State currConfiguration = \textbf{TuringMachineStep}(machine,currConfiguration)
80 | \State currTime += 1
81 |
82 |
83 | \If{currConfiguration == \textbf{nil}}
84 | \State \textbf{return} false //machine has halted, it is not a Translated Cycler
85 | \EndIf
86 | \EndWhile
87 |
88 | \State \textbf{return} false
89 | \EndProcedure
90 |
91 | \end{algorithmic}
92 | \end{algorithm}
93 | \begin{algorithm}
94 | \begin{algorithmic}[1]
95 | \caption{{\sc compute-distance-L} and {\sc aux-check-records}}\label{alg:translated-cyclers-aux}
96 |
97 | \Procedure{\textbf{int} {\sc compute-distance-L}}{\textbf{Configuration} currRecord, \textbf{Configuration} olderRecord, \textbf{int} recordSide}
98 | \State \textbf{int} olderRecordPos = olderRecord.headPosition
99 | \State \textbf{int} olderRecordTime = olderRecord.tape[olderRecordPos].lastTimeVisited
100 | \State \textbf{int} currRecordTime = currRecord.tape[currRecord.headPosition].lastTimeVisited
101 | \State \textbf{int} distanceL = 0
102 | \For{\textbf{int} pos \textbf{in} currRecord.tape}
103 | \If{pos $>$ olderRecordPos \textbf{and} recordSide == RIGHT}
104 | \textbf{continue}
105 | \EndIf
106 | \If{pos $<$ olderRecordPos \textbf{and} recordSide == LEFT}
107 | \textbf{continue}
108 | \EndIf
109 |
110 | \State \textbf{int} lastTimeVisited = currRecord.tape[pos].lastTimeVisited
111 | \If{lastTimeVisited $\geq$ olderRecordTime \textbf{and} lastTimeVisited $\leq$ currRecordTime}
112 | \State distanceL = \textbf{max}(distanceL,\textbf{abs}(pos-olderRecordPos))
113 | \EndIf
114 |
115 | \EndFor
116 | \State \textbf{return} distanceL
117 | \EndProcedure
118 | \State
119 | \Procedure{\textbf{bool} {\sc aux-check-records}}{\textbf{Configuration} currRecord, \textbf{List$\boldsymbol{<}$Configuration$\boldsymbol{>}$} olderRecords, \textbf{int} recordSide}
120 |
121 | \For{\textbf{Configuration} olderRecord \textbf{in} olderRecords}
122 | \If{currRecord.state != olderRecord.state}
123 | \State \textbf{continue}
124 | \EndIf
125 | \State \textbf{int} distanceL = {\sc compute-distance-L}(currRecord,olderRecord,recordSide)
126 | \State \textbf{int} currExtremePos = {\sc get-extreme-position}(currRecord.tape,recordSide)
127 | \State \textbf{int} olderExtremePos = {\sc get-extreme-position}(olderRecord.tape,recordSide)
128 | \State \textbf{int} step = (recordSide == RIGHT) ? -1 : 1
129 | \State \textbf{bool} isSameLocalTape = true
130 | \For{\textbf{int} offset = 0; \textbf{abs}(offset) $\leq$ distanceL; offset += step}
131 | \If{currRecord.tape[currExtremePos+offset].value != \newline olderRecord.tape[olderExtremePos+offset].value}
132 | \State isSameLocalTape = false
133 | \State \textbf{break}
134 | \EndIf
135 | \EndFor
136 | \If{isSameLocalTape}
137 | \State \textbf{return} true
138 | \EndIf
139 | \EndFor
140 | \State \textbf{return} false
141 | \EndProcedure
142 |
143 | \end{algorithmic}
144 | \end{algorithm}
145 |
146 | \subsection{Correctness}
147 |
148 | \begin{definition}[record-breaking configurations]
149 | Let $\mathcal{M}$ be a Turing machine and $c_0$ its busy beaver initial configuration (i.e. state is 0, head position is 0 and tape is all-0).
150 | Let $c$ be a configuration reachable from $c_0$, i.e. $c_0 \vdash^* c$.
151 | Then $c$ is said to be \textit{record-breaking} if the current head position had never been visited before. Records can be broken to the \textit{right} (positive head position) or to the left (negative head position).
152 | \end{definition}
153 |
154 | \begin{definition}[Distance $L$ between record-breaking configurations]\label{def:distL}
155 | Let $\mathcal{M}$ be a Turing machine and $r_1,r_2$ be two record-breaking configurations on the same side of the tape at respective times $t_1$ and $t_2$ with $t_1 < t_2$. Let $p_1$ and $p_2$ be the tape positions of these records. Then, distance $L$ between $r_1$ and $r_2$ is defined as $\max\{|p_1 - p|\}$ with $p$ any position visited by $\mathcal{M}$ between $t_1$ and $t_2$ that is not beating record $p_1$ (i.e. $p \leq p_1$ for a record on the right and $p \geq p_1$ for a record on the left).
156 | \end{definition}
157 |
158 | \begin{lemma}\label{lem:translated-cyclers}
159 | Let $\mathcal{M}$ be a Turing machine. Let $r_1$ and $r_2$ be two configurations that broke a record in the same state and on the same side of the tape at respective times $t_1$ and $t_2$ with $t_1 < t_2$. Let $p_1$ and $p_2$ be the tape positions of these records. Let $L$ be the distance between $r_1$ and $r_2$ (Definition~\ref{def:distL}). If the content of the tape in $r_1$ at distance $L$ of $p_1$ is the same as the content of the tape in $r_2$ at distance $L$ of $p_2$ then $\mathcal{M}$ never halts.
160 | \end{lemma}
161 |
162 | \begin{proof}
163 | Let's suppose that the record-breaking configurations are on the right-hand side of the tape. By the hypotheses, we know the machine is in the same state in $r_1$ and $r_2$ and that the content of the tape at distance $L$ to the left of $p_1$ in $r_1$ is the same as the content of the tape at distance $L$ to the left of $p_2$ in $r_2$. Note that the content of the tape to the right of $p_1$ and $p_2$ is the same: all-0 since they are record positions. Furthermore, by Definition~\ref{def:distL}, we know that distance $L$ is the maximum distance that $\mathcal{M}$ can travel to the left of $p_1$ between times $t_1$ and $t_2$. Hence that after $r_2$, since it will read the same tape content the machine will reproduce the same behavior as it did after $r_1$ but translated at position $p_2$: after $t_2 - t_1$ steps, there will be a record-breaking configuration $r_3$ such that the distance between record-breaking configurations $r_2$ and $r_3$ is also $L$ (Definition~\ref{def:distL}). Hence the machine will keep breaking records to the right forever and will not halt. Analogous proof for records that are broken to the left.
164 | \end{proof}
165 |
166 | \begin{theorem}\label{th:translated-cyclers}
167 | Let $\mathcal{M}$ be a Turing machine and $t$ a time limit. The conditions of Lemma~\ref{lem:translated-cyclers} are met before time $t$ if and only if {\sc decider-translated-cyclers}($\mathcal{M}$,$t$) outputs \texttt{true} (Algorithm~\ref{alg:translated-cyclers}).
168 | \end{theorem}
169 | \begin{proof}
170 | The algorithm consists of a main function {\sc decider-translated-cyclers} (Algorithm~\ref{alg:translated-cyclers}) and two auxiliary functions {\sc compute-distance-L} and {\sc aux-check-records} (Algorithm~\ref{alg:translated-cyclers-aux}).
171 |
172 | The main loop of {\sc decider-translated-cyclers} (Algorithm~\ref{alg:translated-cyclers} l.18) simulates the machine with the particularity that (a) it keeps track of the last time it visited each memory cell (l.20) and (b) it keeps track of all record-breaking configurations that are met (l.21) before reaching time limit $t$. When a record-breaking configuration is found, it is compared to all the previous record-breaking configurations on the same side in seek of the conditions of Lemma~\ref{lem:translated-cyclers}. This is done by auxiliary routine {\sc aux-check-records} (Algorithm~\ref{alg:translated-cyclers-aux}).
173 |
174 | Auxiliary routine {\sc aux-check-records} (Algorithm~\ref{alg:translated-cyclers-aux}, l.14) loops over all older record-breaking configurations on the same side as the current one (l.15), and only examines older configurations that are in the same state as the current one (l.16). It computes distance $L$ (Definition~\ref{def:distL}) between the older and the current record-breaking configuration (l.18). This computation is done by auxiliary routine {\sc compute-distance-L}.
175 |
176 | Auxiliary routine {\sc compute-distance-L} (Algorithm~\ref{alg:translated-cyclers-aux}, l.1) uses the ``pebbles'' that were left on the tape to give the last time a memory cell was seen (field \texttt{lastTimeVisited}) in order to compute the farthest position from the old record position that was visited before meeting the new record position (l.10). Note that we discard intermediate positions that beat the old record position (l.7-8) as we know that the part of the tape after the record position in the old record-breaking configuration is all-0, same as the part of the tape after current record position in the current record-breaking position (part of the tape to the right of the red-circled green cell in Figure~\ref{fig:translated-cyclers}).
177 |
178 | Thanks to the computation of {\sc compute-distance-L} the routine {\sc aux-check-records} is able to check whether the tape content at distance $L$ of the record-breaking position in both record-holding configurations is the same or not (Algorithm~\ref{alg:translated-cyclers-aux}, l.23). The routine returns \texttt{true} if they are the same and the function {\sc decider-translated-cyclers} will return \texttt{true} as well in cascade (Algorithm~\ref{alg:translated-cyclers} l.24). That scenario is reached if and only if the algorithm has found two record-breaking configurations on the same side that satisfy the conditions of Lemma~\ref{lem:translated-cyclers}, which is what we wanted.
179 | \end{proof}
180 |
181 | \begin{corollary}
182 | Let $\mathcal{M}$ be a Turing machine and $t \in \mathbb{N}$ a time limit. If {\sc decider-translated-cyclers}($\mathcal{M}$,$t$) returns \texttt{true} then the behavior of $\mathcal{M}$ from all-0 tape has been decided: $\mathcal{M}$ does not halt.
183 | \end{corollary}
184 | \begin{proof}
185 | Immediate by combining Lemma~\ref{lem:translated-cyclers} and Theorem~\ref{th:translated-cyclers}.
186 | \end{proof}
187 |
188 | \subsection{Implementation}
189 |
190 | The decider was coded in \texttt{golang} and is accessible at this link: \url{https://github.com/bbchallenge/bbchallenge-deciders/tree/main/decider-translated-cyclers}.
191 |
192 | % The decider found 73,860,604 ``Translated cyclers'', out of 88,664,064 machines in the seed database of the Busy Beaver Challenge (c.f. \url{https://bbchallenge.org/method#seed-database}). Time limit was set to 1000 in a first run then increased to 10000 for the remaining machines and an additional memory limit (max number of visited cells) was set to 500 then 5000. More information about these results are available at: \url{https://discuss.bbchallenge.org/t/decider-translated-cyclers/34}.
193 |
--------------------------------------------------------------------------------
/deciders/sections/savasks-bouncers-writeup.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbchallenge/bbchallenge-proofs/e08488167a113e10fe5161715952a0a649bf49d7/deciders/sections/savasks-bouncers-writeup.pdf
--------------------------------------------------------------------------------
/deciders/sections/savasks-bouncers-writeup.tex:
--------------------------------------------------------------------------------
1 | \documentclass{article}
2 | \usepackage [utf8] {inputenc}
3 | \usepackage[left=1.25in, right=1.25in]{geometry}
4 | \usepackage{mathtools}
5 | \usepackage{amsthm}
6 | \usepackage{amssymb}
7 | \usepackage{url}
8 |
9 | \newtheorem{theorem}{Theorem}
10 | \newtheorem{proposition}{Proposition}
11 | \newtheorem{lemma}{Lemma}
12 | \newtheorem{corollary}{Corollary}
13 |
14 | \newcommand{\lhead}[1]{\stackrel{#1}\triangleleft}
15 | \newcommand{\rhead}[1]{\stackrel{#1}\triangleright}
16 |
17 | \title{Bouncers}
18 |
19 | \begin{document}
20 | \maketitle
21 |
22 | Consider a Turing machine with a finite symbol set \( \Sigma \) where \( 0 \in \Sigma \) is the blank symbol,
23 | a finite set of states \( S \) with an initial state \( A \in S \), and a transition function \( \delta : S \times \Sigma \to S \times \{ L, R \} \times \Sigma \).
24 | If for some \( s \in S \), \( x \in \Sigma \) we have \( \delta(s, x) = (s', d, x') \), \( d \in \{ L, R \} \), then the machine head writes \( x' \)
25 | on the current tape cell, switches to the state \( s' \) and moves in the direction \( d \), that is, left if \( d = L \) and right if \( d = R \).
26 | If the value of \( \delta(s, x) \) is undefined, then the machine halts.
27 |
28 | \subsection{Directional Turing machines}
29 |
30 | We will use an equivalent formulation of a Turing machine where the machine head lives in between the tape cells and can point to the left or to the right.
31 | We enhance the symbol set with a new symbol \( 0^\infty \) and write \( \overline{\Sigma} = \{ 0^\infty \} \cup \Sigma \).
32 | We also introduce \( 2 |S| \) new symbols denoting the machine head in two possible orientations, namely \( \Delta = \{ \lhead{s} \mid s \in S \} \cup \{ \rhead{s} \mid s \in S \} \).
33 |
34 | We define a \emph{tape} to be a (finite) word of the form \( u h v \), where \( u, v \in \overline{\Sigma}^* \) and \( h \in \Delta \),
35 | moreover, \( u \) and \( v \) have at most one occurrence of \( 0^\infty \) each, and if \( u \) contains \( 0^\infty \) then it is the first symbol of \( u \),
36 | and if \( v \) contains \( 0^\infty \) then it is the last symbol of \( v \).
37 | The initial tape is \( 0^\infty \rhead{A} 0^\infty \). Now we define tape rewrite rules which will be used to simulate the directional Turing machine.
38 | Given two tapes \( t \) and \( t' \), a rewrite rule transforming \( t \) into \( t' \) will be denoted by \( t \to t' \).
39 | Note that \( t \) and \( t' \) do not have to contain the symbol \( 0^\infty \), which is in line with the definition of a tape.
40 |
41 | Suppose that for \( s \in S \), \( x \in \Sigma \) we have \( \delta(s, x) = (s', d, x') \) where \( s' \in S \), \( d \in \{ L, R \} \), \( x' \in \Sigma \).
42 | If \( d = L \) then we add the following rewrite rules:
43 | \begin{align*}
44 | x \lhead{s}\,\,\, &\to \,\,\, \lhead{s'} x'\\
45 | \rhead{s} x\,\,\, &\to \,\,\, \lhead{s'} x'
46 | \end{align*}
47 | Moreover, if \( d = L \) and \( x = 0 \) we add the rules:
48 | \begin{align*}
49 | 0^\infty \lhead{s}\,\,\, &\to \,\,\, 0^\infty \lhead{s'} x'\\
50 | \rhead{s} 0^\infty\,\,\, &\to \,\,\, \lhead{s'} x'\, 0^\infty
51 | \end{align*}
52 | If \( d = R \) then we add the following rewrite rules:
53 | \begin{align*}
54 | x \lhead{s}\,\,\, &\to \,\,\, x' \rhead{s'}\\
55 | \rhead{s} x\,\,\, &\to \,\,\, x' \rhead{s'}
56 | \end{align*}
57 | Moreover, if \( d = R \) and \( x = 0 \) we add the rules:
58 | \begin{align*}
59 | 0^\infty \lhead{s}\,\,\, &\to \,\,\, 0^\infty \, x' \rhead{s'}\\
60 | \rhead{s} 0^\infty\,\,\, &\to \,\,\, x' \rhead{s'} 0^\infty
61 | \end{align*}
62 |
63 | Given a tape \( t = uvw \) and a word \( t' = uv'w \), where \( u, w \in \overline{\Sigma}^* \), \( v, v' \in (\overline{\Sigma} \cup \Delta)^* \),
64 | suppose that there is a rewrite rule \( v \to v' \). It is easy to see that \( t' \) also must be a tape.
65 | In this situation we will write \( t \vdash t' \), meaning that \( t' \) is obtained from \( t \) by one step of our simulation.
66 | Clearly to any given tape at most one rewrite rule applies, hence \( v \to v' \) is defined uniquely and \( \vdash \) is defined correctly.
67 | We will write \( t \vdash^* t' \) if there exist tapes \( t_1, \dots, t_n \), \( n \geq 2 \), such that \( t_1 = t \), \( t_n = t' \)
68 | and for \( i = 1, \dots, n-1 \) we have \( t_i \vdash t_{i+1} \).
69 |
70 | This reformulation of a Turing machine is equivalent to the classical one. For example, the tape \( 0^\infty uh \lhead{s} v 0^\infty \),
71 | where \( u,v \in \Sigma^* \), \( h \in \Sigma \), \( s \in S \), corresponds to the classical biinfinite tape \( \dots 0 uhv 0 \dots \),
72 | where the Turing machine head is in state \( s \) and rests right upon the symbol \( h \).
73 | \medskip
74 |
75 | \noindent\textbf{Example.} Consider a Turing machine with \( \Sigma = \{ 0, 1 \} \), \( S = \{ A, B, C, D, E \} \) and the following transition table:
76 | \[
77 | \begin{array}{l|ll}
78 | & 0 & 1\\
79 | \hline
80 | A &1RB & 1LE\\
81 | B & 1LC & 1RD\\
82 | C & 1LB & 1RC\\
83 | D & 1LA & 0RD\\
84 | E & \mbox{---} & 0LA
85 | \end{array}
86 | \]
87 | In the directional Turing machine format we will have the following rules having the state \( A \) in the left hand side:
88 | \begin{align*}
89 | 0 \lhead{A}\,\,\, &\to\,\,\, 1 \rhead{B}\\
90 | \rhead{A} 0\,\,\, &\to\,\,\, 1 \rhead{B}\\
91 | 1 \lhead{A}\,\,\, &\to\,\,\, \lhead{E} 1\\
92 | \rhead{A} 1\,\,\, &\to\,\,\, \lhead{E} 1\\
93 | 0^\infty \lhead{A}\,\,\, &\to\,\,\, 0^\infty 1 \rhead{B}\\
94 | \rhead{A} 0^\infty\,\,\, &\to\,\,\, 1 \rhead{B} 0^\infty
95 | \end{align*}
96 | Similarly there are rules with states \( B, C, D \) and \( E \) in the left hand side.
97 |
98 | If we simulate the machine for 4 steps, starting from the initial tape, we get the following tapes:
99 | \begin{align*}
100 | 0^\infty &\rhead{A} 0^\infty\\
101 | 0^\infty \, 1 &\rhead{B} 0^\infty\\
102 | 0^\infty \, 1 &\lhead{C} 1\, 0^\infty\\
103 | 0^\infty \, 1 &\rhead{C} 1\, 0^\infty\\
104 | 0^\infty \, 1 1 &\rhead{C} 0^\infty
105 | \end{align*}
106 | For example, \( 0^\infty \, 1 \lhead{C} 1\, 0^\infty \vdash 0^\infty \, 1 \rhead{C} 1\, 0^\infty \) and \( 0^\infty \rhead{A} 0^\infty \vdash^* 0^\infty \, 1 1 \rhead{C} 0^\infty \).
107 |
108 | \subsection{Formula tapes}
109 |
110 | We will consider regular expressions over the alphabet \( \Delta \cup \overline{\Sigma} \).
111 | Given \( u \in \Sigma^* \) we abbreviate the regular expression \( \{ u \}^* \) as \( (u) \).
112 | Given a regular expression \( f \) let \( M(f) \) denote the language described by \( f \), i.e.\ the set of words over \( \Delta \cup \overline{\Sigma} \) which match it.
113 | Observe that for \( u \in \Sigma^* \) we have
114 | \[ M(\, (u)\, ) = \{ \varnothing,\, u,\, uu,\, uuu, \dots \} = \{ u^k \mid k \geq 0 \}, \]
115 | where \( u^k \) denotes the concatenation of \( k \) copies of~\( u \).
116 |
117 | We define a \emph{formula tape} to be a regular expression of the form
118 | \[ u_1 (w_1) u_2 (w_2) \dots u_n (w_n) u_{n+1}\, h\, u'_1 (w'_1) u'_2 \dots (w'_m) u'_{m+1}, \]
119 | if the following conditions are met:
120 | \begin{align*}
121 | & n, m \geq 0,\\
122 | & h \in \Delta,\\
123 | & w_1, \dots, w_n, w'_1, \dots, w'_m \in \Sigma^* \setminus \{ \varnothing \},\\
124 | & u_2, \dots, u_{n+1}, u'_1, \dots, u'_m \in \Sigma^*,\\
125 | & u_1, u'_{m+1} \in \overline{\Sigma}^*.
126 | \end{align*}
127 | and, as in the definition of a tape, \( u_1 \) either does not contain the symbol \( 0^\infty \) or it starts with it, and \( u'_{m+1} \) either does not
128 | contain the symbol \( 0^\infty \) or it ends with it.
129 |
130 | Note that we allow \( n = m = 0 \) hence a usual tape is also a formula tape. The in-between words \( u_i,\, u'_j \) can be empty,
131 | while the words in brackets \( w_i,\, w'_j \), which we call \emph{repeaters}, must be nonempty.
132 |
133 | Suppose that a formula tape \( f \) decomposes as \( f = u h u' (w) v v' \), where \( h \in \Delta \), \( w, v \in \Sigma^* \setminus \{ \varnothing \} \)
134 | and \( u, u', v' \) are some (possibly empty) words. If for some \( w' \in \Sigma^* \setminus \{ \varnothing \} \) we have \( wv = vw' \), then the expression \( f' = u h u' v (w') v' \)
135 | is also a formula tape and \( M(f) = M(f') \). Indeed, this follows from the fact that for any natural \( n \) we have \( w^n v = v w'^n \).
136 | Similarly, if \( f \) decomposes as \( f = u' u (w) v' h v \), where \( h \in \Delta \), \( w, u \in \Sigma^* \setminus \{ \varnothing \} \)
137 | and \( u', v, v' \) are some words, and in addition \( uw = w'u \) for some \( w' \in \Sigma^* \setminus \{ \varnothing \} \), then \( f' = u' (w') u v' h v \)
138 | is a formula tape with \( M(f) = M(f') \). We will call the rewrite rules described above the alignment rules.
139 |
140 | It is easy to see that each alignment rule moves some repeater away from the Turing machine head. The order in which the alignment rules
141 | are applied does not matter, hence one can show that for any formula tape \( f \) there is a unique formula tape \( f' \) which can be obtained by a sequence of alignment rules,
142 | such that one can no longer apply any of the alignment rules to \( f' \) anymore. We will denote such \( f' \) by \( A(f) \). Clearly, \( A(f) = A(A(f)) \).
143 | \medskip
144 |
145 | \noindent\textbf{Example.} We use the setup of our previous example. The following is a formula tape:
146 | \[ f = 0 \rhead{D} (01) \]
147 | and \( M(f) = \{ 0 \rhead{D},\, 0 \rhead{D} 01,\, 0 \rhead{D} 0101,\, \dots \} \). This is also a formula tape:
148 | \[ f' = 0^\infty (111) 1110 \lhead{A} 010101 (01) 1 0^\infty. \]
149 | The following are examples of tapes lying in \( M(f') \):
150 | \begin{align*}
151 | 0^\infty 1110 &\lhead{A} 010101 1 0^\infty\\
152 | 0^\infty 1111110 &\lhead{A} 010101 1 0^\infty\\
153 | 0^\infty 1110 &\lhead{A} 01010101 1 0^\infty
154 | \end{align*}
155 | These strings are \emph{not} formula tapes:
156 | \begin{align*}
157 | 0 (01)\,\, \text{[no head symbol]}\\
158 | 10 (11) 0 () \rhead{A} 11\,\, \text{[empty repeater]}\\
159 | 11 (1 0^\infty 1) \lhead{B} 11\,\, [0^\infty \text{ inside the repeater]}
160 | \end{align*}
161 | Consider a formula tape
162 | \[ f'' = 0^\infty 101(11)0 \rhead{D} 10(100)11 0^\infty. \]
163 | The aligned formula tape is
164 | \[ A(f'') = 0^\infty 10(11)10 \rhead{D} 101(001)1 0^\infty. \]
165 | Here we rewrote \( 1(11) \) as \( (11)1 \) and \( (100)1 \) as \( 1(001) \).
166 | The formula tapes \( f \) and \( f' \), that we defined earlier, are already aligned, i.e.\ \( A(f) = f \) and \( A(f') = f' \).
167 | \medskip
168 |
169 | We wish to extend the Turing machine step relation \( \vdash \) to formula tapes. Suppose that for some \( u \in \Sigma^* \) and \( v, w \in \Sigma^* \setminus \{ \varnothing \} \)
170 | and some state \( s \in S \) we have \( u \rhead{s} v \vdash^* w u \rhead{s} \). Then for any \( n \geq 1 \) we have \( u \rhead{s} v^n \vdash^* w^n u \rhead{s} \);
171 | note that if it took \( m \) simulation steps to go from the tape \( u \rhead{s} v \) to \( w u \rhead{s} \), then it takes \( n \cdot m \) steps
172 | to go from \( u \rhead{s} v^n \) to \( w^n u \rhead{s} \). Under above assumptions, the rewrite rule for formula tapes which replaces a subword
173 | \( u \rhead{s} (v) \) by \( (w) u \rhead{s} \) will be called a (right) \emph{shift rule}. Similarly, if \( v \lhead{s} u \vdash^* \lhead{s} u w \)
174 | one obtains a (left) shift rule which rewrites \( (v) \lhead{s} u \) into \( \lhead{s} u (w) \).
175 |
176 | Now, let \( f \) and \( f' \) be formula tapes. We will write \( f \vdash f' \) if one of the following two situations holds:
177 | \begin{enumerate}
178 | \item[(Usual step)] If \( f = u v w \) and \( f' = u v' w \) for some words \( u, w \) and some tapes \( v \) and \( v' \) such that \( v \vdash v' \).
179 | \item[(Shift rule)] If \( f' \) is obtained from \( f \) by a left or right shift rule.
180 | \end{enumerate}
181 |
182 | In the ``Usual step'' case the subwords \( v \) and \( v' \) are not defined uniquely, but one can easily see that for any formula tape \( f \)
183 | there exists at most one formula tape \( f' \) such that \( f \vdash f' \).
184 | The ``Shift rule'' case can happen only if the Turing machine head points at a bracket symbol, i.e.\ if \( f \) contains a subword
185 | of the form \( (w) \lhead{s} \) or \( \rhead{s} (w) \) for some \( s \in S \), \( w \in \Sigma^* \setminus \{ \varnothing \} \). In particular,
186 | it is not possible for the ``Usual step'' and ``Shift rule'' cases to happen at the same time, so there is no ambiguity in the definition of \( \vdash \) for formula tapes.
187 | Clearly, for usual tapes our new definition of \( \vdash \) coincides with the old one.
188 |
189 | Given two formula tapes \( f \) and \( f' \) we will say that \( f' \) is a \emph{special case} of \( f \), if \( f' \) can
190 | be obtained from \( f \) by replacing subwords of the form \( (w) \), \( w \in \Sigma^* \setminus \{ \varnothing \} \) by
191 | \( w^n (w) w^m \) for some \( n, m \geq 0 \). Since any tape matching a regular expression \( w^n (w) w^m \) also matches \( (w) \),
192 | we obtain \( M(f') \subseteq M(f) \).
193 | \medskip
194 |
195 | \noindent\textbf{Example.} We continue with the Turing machine from the previous examples of this section.
196 | The rule
197 | \[ 0 \rhead{D} (01) \to (11) 0 \rhead{D} \]
198 | is a shift rule. Indeed, we have the following sequence of tapes:
199 | \begin{align*}
200 | 0 &\rhead{D} 01\\
201 | 0 &\lhead{A} 11\\
202 | 1 &\rhead{B} 11\\
203 | 11 &\rhead{D} 1\\
204 | 110 &\rhead{D}
205 | \end{align*}
206 | Hence \( 0 \rhead{D} 01 \vdash^* 110 \rhead{D} \), as required by the definition of shift rules.
207 |
208 | Consider the formula tape \( f' \) from the previous example:
209 | \[ 0^\infty (111) 1110 \lhead{A} 010101(01) 1 0^\infty. \]
210 | After performing one usual step we arrive at the formula tape
211 | \[ 0^\infty (111) 1111 \rhead{B} 010101(01) 1 0^\infty. \]
212 | After \( 12 \) more usual steps we get
213 | \[ 0^\infty (111) 1111110110 \rhead{D} (01) 1 0^\infty. \]
214 | No more usual steps apply. Now we use the shift rule \( 0 \rhead{D} (01) \to (11) 0 \rhead{D} \) to get
215 | \[ 0^\infty (111) 111111011 (11) 0 \rhead{D} 1 0^\infty. \]
216 | One more usual step gives
217 | \[ 0^\infty (111) 111111011 (11) 00 \rhead{D} 0^\infty. \]
218 | This tape is a special case of the following tape
219 | \[ 0^\infty (111) 1110 (11) 00 \rhead{D} 0^\infty. \]
220 | \medskip
221 |
222 | % As in the case of usual tapes, we write \( t \vdash^* t' \) if there exist formula tapes \( t_1, \dots, t_n \), \( n \geq 2 \), such that \( t_1 = t \), \( t_n = t' \) and for \( i = 1, \dots, n-1 \) we have \( t_i \vdash t_{i+1} \).
223 |
224 | We record some basic properties of formula tapes.
225 |
226 | \begin{proposition}\label{ftapeProps}
227 | The following is true.
228 | \begin{enumerate}
229 | \item If \( f \) is a formula tape, then \( M(f) = M(A(f)) \).
230 | \item Let \( f \) and \( f' \) be formula tapes with \( f \vdash f' \).
231 | Then for all \( t \in M(f) \) there exists some \( t' \in M(f') \) such that \( t \vdash^* t' \).
232 | \item If \( f \) and \( f' \) are formula tapes with \( f \vdash f' \), then there exists some formula tape \( f'' \)
233 | such that \( A(f) \vdash f'' \).
234 | \end{enumerate}
235 | \end{proposition}
236 | \begin{proof} (Sketch)
237 |
238 | 1. Obvious.
239 |
240 | 2. If \( f' \) follows from \( f \) by a usual step, then applying one usual step to \( t \) yields \( t' \in M(f') \).
241 | If \( f' \) follows from \( f \) by a shift rule, we apply several steps to \( t \) (as many as there are in the shift rule used)
242 | to obtain \( t' \in M(f') \).
243 |
244 | 3. If \( f' \) follows from \( f \) by a usual step, then \( A(f) \vdash f' \) and we may set \( f'' = f' \).
245 | If \( f' \) follows from \( f \) by a shift rule, then the head in tape \( f \) points at a repeater.
246 | If the head in \( A(f) \) also points at a repeater, then it is necessarily the same repeater as in \( f \)
247 | and hence a shift rule applies and \( f'' \) exists. If the head in \( A(f) \) does not point at a repeater,
248 | then it points at some symbol in \( \Sigma \) and a usual step potentially applies (or the machine halts).
249 | By parts~1 and~2 of this proposition, for any \( t \in M(A(f)) = M(f) \) there exists \( t' \in M(f') \) such that \( t \vdash^* t' \).
250 | Hence the machine does not halt and a usual step applies to \( A(f) \), proving that \( f'' \) exists.
251 | \end{proof}
252 |
253 | The following theorem is the main theoretical tool for deciding bouncers.
254 |
255 | \begin{theorem}\label{bouncers}
256 | Assume we are given some Turing machine and suppose there exists a tape \( t \) and some formula tapes \( f_0, \dots, f_n \), \( n \geq 1 \),
257 | such that \( 0^\infty \rhead{A} 0^\infty \vdash^* t \) where \( t \in M(f_0) \), and \( A(f_i) \vdash f_{i+1} \) for \( i = 0, \dots n-1 \).
258 | If \( A(f_n) \) is a special case of \( A(f_0) \), then the Turing machine does not halt.
259 | \end{theorem}
260 | \begin{proof}
261 | It follows from Proposition~\ref{ftapeProps} that there exist tapes \( t_0, \dots, t_n \) such that \( t_i \in M(f_i) \), \( i = 0, \dots, n \)
262 | and \( t_i \vdash^* t_{i+1} \), \( i = 0, \dots, n-1 \). Since \( A(f_n) \) is a special case of \( A(f_0) \), we get \( t_n \in M(f_0) \)
263 | and \( t \vdash^* t_n \). The same argument applies to \( t_n \) in place of \( t \), hence there is an infinite sequence of tapes \( t'_0, t'_1, t'_2, \dots \),
264 | where \( t'_0 = t \) and \( t'_i \vdash^* t'_{i+1} \), \( i \geq 0 \). The claim is proved.
265 | \end{proof}
266 |
267 | \noindent\textbf{Example.} We show that the Turing machine from our series of examples in this section is a bouncer, i.e.\ it satisfies the assumptions of Theorem~\ref{bouncers}.
268 |
269 | Starting from the blank tape, after 64 steps we arrive at the tape
270 | \[ t = 0^\infty 11111101100 \rhead{D} 0^\infty \]
271 | which is a special case of the formula tape
272 | \[ f_0 = 0^\infty (111) 1110 (11) 00 \rhead{D} 0^\infty. \]
273 | After 25 usual steps we arrive at the following formula tape (here we skip intermediate tapes \( f_1, \dots, f_{24} \))
274 | \[ f_{25} = 0^\infty (111) 1110 (11) \lhead{A} 0101011 0^\infty. \]
275 | One shift rule gives us
276 | \[ f_{26} = 0^\infty (111) 1110 \lhead{A} (01) 0101011 0^\infty. \]
277 | Note that after alignment we get
278 | \[ A(f_{26}) = 0^\infty (111) 1110 \lhead{A} 010101 (01) 1 0^\infty \]
279 | and one usual step gives us \( A(f_{26}) \vdash f_{27} \) where
280 | \[ f_{27} = 0^\infty (111) 1111 \rhead{B} 010101 (01) 1 0^\infty. \]
281 | After 12 usual steps we arrive at
282 | \[ f_{39} = 0^\infty (111) 1111110110 \rhead{D} (01) 1 0^\infty \]
283 | and one shift rule gives
284 | \[ f_{40} = 0^\infty (111) 111111011 (11) 0 \rhead{D} 1 0^\infty. \]
285 | Finally, one usual step
286 | \[ f_{41} = 0^\infty (111) 111111011 (11) 00 \rhead{D} 0^\infty. \]
287 | Now, \( A(f_0) = f_0 \) and
288 | \[ A(f_{41}) = 0^\infty (111) 1111110 (11) 1100 \rhead{D} 0^\infty. \]
289 | It can be easily seen that \( A(f_{41}) \) is a special case of \( A(f_0) \), hence the assumptions of Theorem~\ref{bouncers} are met and our Turing machine does not halt.
290 |
291 | \end{document}
292 |
--------------------------------------------------------------------------------