- Commit
- cd1104db431f811a02c74f08fc5968f92a0bfdf3
- Parent
- 5179b2ff1775066145a8eb74679c4d7f647d7493
- Author
- Pablo <pablo-escobar@riseup.net>
- Date
Updated the README
A OCaml module for manipulating unlimited register machines
Updated the README
1 file changed, 28 insertions, 2 deletions
Status | File Name | N° Changes | Insertions | Deletions |
Modified | README.md | 30 | 28 | 2 |
diff --git a/README.md b/README.md @@ -1,4 +1,30 @@ # Urm -A OCaml module for manipulating a [unlimited register -machines](https://sites.oxy.edu/rnaimi/home/URMsim.htm). +A OCaml module for manipulating unlimited register machines. + +This module provides various types and functions for manipulating unlimited +register machines (URMs). This implementation is besed on the specification +provided in [Ramin Naimi's URM +simulator](https://sites.oxy.edu/rnaimi/home/URMsim.htm), which is in turn +based on that of [Computability, An introduction to recursive function +theory](libgen.li/file.php?md5=147d472c8ebc58b832a0d93d02c03f3a) by Nigel J. +Cutland. For example, the instruction set is given by: + +* `T(n, m)` transfers the contents of the `n`-th register to `m`-th register. +* `Z(n)` sets the value of the `n`-th register to zero. +* `S(n)` increments the value of the `n`-th register. +* `J(n, m, i)` Jumps to the `i`-th instruction if the values of the `n`-th and + `m`-th coincide. The instruction count starts at 1, so `i = 1` jumps to the + first instruction. + +The register set, however, is a bit different. In Nigel's specification the +registers are indexed by natural numbers (starting from 1), while in this +implementation the registers are indexed by arbitrary integers. Also, in +Nigel's specification store natural numbers (starting from 0) and in this +implementation they store arbitrary integers. Good luck getting a negative +integer from a machine whose registers are initially set to natural numbers +though. + +## Documentation + +See `docs.pdf` for further documentation.