Bi-tag system

From Esolang
Jump to navigation Jump to search

A bi-tag system is a type of tag system where there are two disjoint sets of symbols with different semantics.

Neary and Woods present the following definition for the concept:[1]

  • Bi-tag system definitions have
    • Two disjoint sets of symbols and
    • A halting symbol
    • A set of productions , each being in one of three forms

The starting word for a bi-tag system has at least one symbol and exactly one symbol. A regular expression which matches a valid starting word, with \A being the symbol/character group for the symbols and \E for the symbols, is as follows: \A*(\A\E|\E\A)\A*.

Rules are applied like so:

  • If the word starts with halt
  • If the word starts with an symbol , then remove it, find the corresponding production rule and add to the end of the word
  • If the word starts with an symbol followed by an , remove them both as and find the corresponding production rule or , and append the production to the end of the word

Note that these rules mean that the word will only ever have exactly one symbol in it during the entire execution of the system. This means that during execution, if the word starts with an symbol followed by an symbol, or the word consists of just a singular symbol, the machine entered an invalid state at some point.

Neary and Woods proved bi-tag systems Turing complete by providing a method of simulating clockwise Turing machines.

References

  1. Neary, T., Woods, D. (2007). Four Small Universal Turing Machines. In: Durand-Lose, J., Margenstern, M. (eds) Machines, Computations, and Universality. MCU 2007. Lecture Notes in Computer Science, vol 4664. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-74593-8_21