https://www.toothycat.net/~hologram/Turing/HowItWorks.html
For more accidentally Turing complete systems, see
http://beza1e1.tuxen.de/articles/accidentally_turing_complet...
https://www.toothycat.net/~hologram/Turing/HowItWorks.html
For more accidentally Turing complete systems, see
http://beza1e1.tuxen.de/articles/accidentally_turing_complet...
For a more complete proof one needs to take into account the fact that the text printed on existing cards is a derivation from some grammar - the grammar of the M:tG "ability text" (there is no official name for the game's language). In other words, the ability text on existing cards is no the whole ability text language. The complete language is a superset of the strings on existing cards. To prove the game as Turing complete, one needs to prove this language is Turing complete- not a subset of its strings.
To give an analogy, think of the game's rules as the JVM, the ability text grammar as the syntax of the Java language and the actually printed cards as some arbitrarily chosen set of Java programs. You can perhaps put together a Turing machine by stitching together those Java programs, but that will not tell you anything about the Turing completeness of the language itself. Instead, the straightforward proof is to use the Java syntax to write a Turing machine and run it on the JVM.
There is, of course a slight problem with taking this approach for M:tG; that the game's rules are very well defined (there's the Comprehensive Rules that go a long way towards resolving any ambiguity) but there is no full specification for the ability text language itself. So the M:tG machine is not well defined.
Then again, it's easy to derive at least a subset of the rules of ability text. For instance, if you see a card that says "Destroy target Elf creature", and you know that "Elf" is a "creature" type, you can substitute "Elf" for any creature type and generate any number of very probably correct ability text sentences- "Destroy target Goblin creature", "Destroy target Cat creature", "Destroy target Pirate creature" etc [1].
In this way it may be possible to generate the appropriate ability text expressions to construct a Turing machine- and prove that the M:tG game is Turing-complete.
________________
[1] Actually the ability to generate arbitrarily many well-formed expressions in a language is a hallmark of Turing-completeness. If we can't assume that the ability text on existing, printed cards is not the whole language, then Turing completeness becomes much harder to argue for.
It is not clear to me how a subset of a language could be Turing complete but not the whole language. Can you elaborate?
I'm sorry to not have a better turn of phrase. I'll keep working on it. At this point I think the best I can do is to insist on my analogy of constructing a Turing machine out of programs written in Java, rather than writing a new program implementing a Turing machine.
I dont' think there is any other language for which we assume that the only strings that belong to it are the sum of its printed texts (which in the case of M:tG ability text are printed cards). I don't see why we should make this assumption for ability text. That's not how languages work, in general.
Note that all this has nothing to do with "official" status, or the acceptance of specific strings by players of the game, or anyone. Either ability text is some unique construct, the likes of which has never been seen before, or it's a language like any other and it can be analysed in the same way as any other language.