There seems to be a semantic problem here, though, because an infinite cellular automaton that applies rule 110 over and over again is Turing complete. Whereas this CSS application applies one iteration of rule 110 at a time in a way that the human user can then choose to repeat by pressing keys when prompted.
Isn't that analogous to how a CPU only applies one instruction at a time?
Replace the user clicking a button with an automated process and it's easy to see that the CSS+HTML is what is doing the actual processing.
Alternatively, putting a button on a computer that must be pressed to have the CPU execute an instruction and move on to the next doesn't mean that programs on this computer aren't turing complete.
>Replace the user clicking a button with an automated process and it's easy to see that the CSS+HTML is what is doing the actual processing.
In which case the complete system including the "automated process" is Turing complete, but the CSS itself is not.
>Alternatively, putting a button on a computer that must be pressed to have the CPU execute an instruction and move on to the next doesn't mean that programs on this computer aren't Turing complete.
"Programs" can't be Turing complete, it's a property of computation systems. And putting the button on the computer would indeed mean it wasn't Turing complete (unless you consider the human pushing the button part of the system).
Non-termination is a fundamental property of turing machines; after all, if all programs terminate, a halting problem decider is trivial to write. While you could certainly argue that the CSS + human system is a turing-complete system, the CSS is a bit superfluous there; the human could just be doing all the work on their own. As such, when a language or system is proven to be turing complete, it generally has to be shown to emulate another turing-complete system _until termination_ without external assistance.
https://en.wikipedia.org/wiki/Rule_110#Interesting_propertie...