├── .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 | 9 | 10 | A 11 | 12 | 13 | 14 | start 15 | start 16 | 17 | 18 | 19 | r1_0 20 | 21 | 0 22 | 23 | 24 | 25 | start->r1_0 26 | 27 | 28 | 29 | 30 | 31 | r2_0 32 | 33 | 0 34 | 35 | 36 | 37 | r1_0->r2_0 38 | 39 | 40 | 41 | 42 | 43 | r3_0 44 | 45 | 0 46 | 47 | 48 | 49 | r2_0->r3_0 50 | 51 | 52 | 53 | 54 | 55 | r4_0A 56 | 57 | 0A 58 | 59 | 60 | 61 | r3_0->r4_0A 62 | 63 | 64 | 65 | 66 | 67 | r5_1B 68 | 69 | 1B 70 | 71 | 72 | 73 | r4_0A->r5_1B 74 | 75 | 76 | 77 | 78 | 79 | r6_0B 80 | 81 | 0B 82 | 83 | 84 | 85 | r5_1B->r6_0B 86 | 87 | 88 | 89 | 90 | 91 | r6_1B 92 | 93 | 1B 94 | 95 | 96 | 97 | r5_1B->r6_1B 98 | 99 | 100 | 101 | 102 | 103 | r7_1A 104 | 105 | 1A 106 | 107 | 108 | 109 | r6_0B->r7_1A 110 | 111 | 112 | 113 | 114 | 115 | r7_0A 116 | 117 | 0A 118 | 119 | 120 | 121 | r6_1B->r7_0A 122 | 123 | 124 | 125 | 126 | 127 | r8_0B 128 | 129 | 0B 130 | 131 | 132 | 133 | r7_1A->r8_0B 134 | 135 | 136 | 137 | 138 | 139 | r8_1B 140 | 141 | 1B 142 | 143 | 144 | 145 | r7_1A->r8_1B 146 | 147 | 148 | 149 | 150 | 151 | r8_bot 152 | 153 | 154 | 155 | 156 | 157 | 158 | r7_0A->r8_bot 159 | 160 | 161 | 162 | 163 | 164 | r9_1A 165 | 166 | 1A 167 | 168 | 169 | 170 | r8_0B->r9_1A 171 | 172 | 173 | 174 | 175 | 176 | r9_0B 177 | 178 | 0B 179 | 180 | 181 | 182 | r8_1B->r9_0B 183 | 184 | 185 | 186 | 187 | 188 | r9_1B 189 | 190 | 1B 191 | 192 | 193 | 194 | r8_1B->r9_1B 195 | 196 | 197 | 198 | 199 | 200 | r9_bot 201 | 202 | 203 | 204 | 205 | 206 | 207 | r8_bot->r9_bot 208 | 209 | 210 | 211 | 212 | 213 | r10_0Bx 214 | 215 | 0B 216 | 217 | 218 | 219 | r9_1A->r10_0Bx 220 | 221 | 222 | 223 | 224 | 225 | r10_1A 226 | 227 | 1A 228 | 229 | 230 | 231 | r9_0B->r10_1A 232 | 233 | 234 | 235 | 236 | 237 | r10_0By 238 | 239 | 0B 240 | 241 | 242 | 243 | r9_1B->r10_0By 244 | 245 | 246 | 247 | 248 | 249 | r10_1B 250 | 251 | 1B 252 | 253 | 254 | 255 | r9_1B->r10_1B 256 | 257 | 258 | 259 | 260 | 261 | r10_bot 262 | 263 | 264 | 265 | 266 | 267 | 268 | r9_bot->r10_bot 269 | 270 | 271 | 272 | 273 | 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 | 9 | 10 | R 11 | 12 | 13 | 14 | start 15 | start 16 | 17 | 18 | 19 | r1_0 20 | 21 | 0 22 | 23 | 24 | 25 | start->r1_0 26 | 27 | 28 | 29 | 30 | 31 | r2_0 32 | 33 | 0 34 | 35 | 36 | 37 | r1_0->r2_0 38 | 39 | 40 | 41 | 42 | 43 | r3_0 44 | 45 | 0 46 | 47 | 48 | 49 | r2_0->r3_0 50 | 51 | 52 | 53 | 54 | 55 | r4_0A 56 | 57 | 0A 58 | 59 | 60 | 61 | r3_0->r4_0A 62 | 63 | 64 | 65 | 66 | 67 | r5_1B 68 | 69 | 1B 70 | 71 | 72 | 73 | r4_0A->r5_1B 74 | 75 | 76 | 77 | 78 | 79 | r6_0B 80 | 81 | 0B 82 | 83 | 84 | 85 | r5_1B->r6_0B 86 | 87 | 88 | 89 | 90 | 91 | r6_1B 92 | 93 | 1B 94 | 95 | 96 | 97 | r5_1B->r6_1B 98 | 99 | 100 | 101 | 102 | 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 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | -------------------------------------------------------------------------------- /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 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | -------------------------------------------------------------------------------- /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 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | -------------------------------------------------------------------------------- /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 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | -------------------------------------------------------------------------------- /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 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | -------------------------------------------------------------------------------- /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 | --------------------------------------------------------------------------------