caml-urm

A OCaml module for manipulating unlimited register machines

Commit
cd1104db431f811a02c74f08fc5968f92a0bfdf3
Parent
5179b2ff1775066145a8eb74679c4d7f647d7493
Author
Pablo <pablo-escobar@riseup.net>
Date

Updated the README

Diffstat

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.