Files
universal-computer/README.md
Alexa Amundson efffc8e4d6 Add CI pipeline, 15-test suite, enhanced README
- GitHub Actions CI: Python 3.10/3.11/3.12, pytest, smoke tests
- Tests: tape representation, incrementer, even/odd, halt detection,
  step limits, missing transitions, stay direction
- README with badges, theory section, machine creation docs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

RoadChain-SHA2048: d4d129eaf6941a81
RoadChain-Identity: alexa@sovereign
RoadChain-Full: d4d129eaf6941a815dd5b84bad71115b294f7425d4f184f52ff6770ec641cad192fd361ccea269edefdb8330de6c61b50063d8c103e231bd138fd73fb956d152054336332321ec9e6d1dffa3f3d81cb6295d46d2722116bb9a8239a18d21c6d6d3145e98ff8aff3d5026645db418c5fd0a049f109f8b9e2ee29518a927aade77f315e411b2d0cdfec578f764dcec90da4a0686a39ad1ebcb0bdb9511488efb7f3e14155fe77a550d3b7d07838006a43a3847f239fb2487ca55b22c019ce4ffabc42d0e8e617180ca1aa1ace8fdfcc3ca0f0f24dc7e4be8ed510efcb8f18745217907aa3d5ee94c33b18ff21638ff0b5c0936e5a090f8ad50a1c31ec93787b9fd
2026-03-09 16:25:11 -05:00

2.2 KiB

Universal Computer

CI Python 3.10+ License

A universal Turing machine simulator in Python. Demonstrates the foundational concept of computability: a single machine that can simulate any other Turing machine.

How It Works

A Turing machine has a tape (infinite in both directions), a read/write head, a set of states, and a transition function. Given a state and the symbol under the head, the machine writes a new symbol, moves left/right/stay, and transitions to a new state. It halts when it reaches the halt state.

This implementation uses:

  • Dictionary-based tape -- positions map to symbols, missing positions are blank
  • JSON machine descriptions -- portable, human-readable definitions
  • Configurable step limit -- prevents infinite loops

Usage

# Increment binary number: 1101 (13) -> 1110 (14)
python3 utm.py machines/incrementer.json --tape "1101"

# Check parity
python3 utm.py machines/even_odd.json --tape "1111"

Included Machines

Machine File Description
Binary Incrementer incrementer.json Adds 1 to a binary number
Even/Odd even_odd.json Determines parity of a unary number

Creating Your Own Machine

{
  "states": ["q0", "q1", "halt"],
  "alphabet": ["0", "1"],
  "blank": "_",
  "transitions": {
    "q0:0": ["q0", "0", "R"],
    "q0:1": ["q1", "1", "R"],
    "q0:_": ["halt", "_", "S"]
  },
  "start": "q0",
  "halt": "halt"
}

Each transition key is "state:symbol" mapping to [next_state, write_symbol, direction] where direction is L (left), R (right), or S (stay).

Development

pip install pytest
pytest tests/ -v

Theory

Alan Turing proved in 1936 that a universal Turing machine can compute anything that any Turing machine can compute. Every computer is a physical realization of this idea.

License

Proprietary -- BlackRoad OS, Inc.