aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md71
1 files changed, 71 insertions, 0 deletions
diff --git a/README.md b/README.md
index dc4c5e5..c91aa82 100644
--- a/README.md
+++ b/README.md
@@ -51,6 +51,76 @@ types can be `toString`ed:
Start = tree sqrt st
Start = seq sqrt st
+For example, the tree for `sqrt` in `st` with `st x = 9`:
+
+ (z:=0; o:=1; s:=1; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ z:=0
+ (o:=1; s:=1; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ o:=1
+ (s:=1; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ s:=1
+ (while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ (z:=z+1; o:=o+2; s:=s+o
+ z:=z+1
+ (o:=o+2; s:=s+o
+ o:=o+2
+ s:=s+o
+ )
+ )
+ (while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ (z:=z+1; o:=o+2; s:=s+o
+ z:=z+1
+ (o:=o+2; s:=s+o
+ o:=o+2
+ s:=s+o
+ )
+ )
+ (while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ (z:=z+1; o:=o+2; s:=s+o
+ z:=z+1
+ (o:=o+2; s:=s+o
+ o:=o+2
+ s:=s+o
+ )
+ )
+ while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ )
+ )
+ )
+ )
+ )
+ )
+
+And the sequence:
+
+ z:=0; o:=1; s:=1; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ o:=1; s:=1; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ s:=1; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ if s<=x then z:=z+1; o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done else skip
+ z:=z+1; o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ if s<=x then z:=z+1; o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done else skip
+ z:=z+1; o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ if s<=x then z:=z+1; o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done else skip
+ z:=z+1; o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ if s<=x then z:=z+1; o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done else skip
+ skip
+
+As you can see, neither method outputs the states. Since a `State` is actually
+a function (and not a `[(Var, Int)]`, for example), it is impossible to
+`toString` a `State` *an sich*. It *may* be possible to `toString` states in
+the context of a derivation tree or sequence, by looking for the variables
+present or modified. This is something for a next version.
+
## Warning
This breaks `StdEnv` completely. Only import what you need, as always, and use
@@ -62,6 +132,7 @@ qualified imports where needed.
- More boolean operators for testing integers besides `=` and `<=`
- Prettyprint for `DerivTree`
- Parser
+ - Add the state to the `toString` of `DerivTree` and `DerivSeq`
## Copyright &amp; license
Copyright &copy; 2016 Camil Staps. Licensed under MIT, see LICENSE.