From ce1c2de044c91624370411e23acab13b0381949b Mon Sep 17 00:00:00 2001 From: mikebarnett Date: Wed, 15 Jul 2009 21:03:41 +0000 Subject: Initial set of files. --- Chalice/examples/iterator2.chalice | 134 +++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 Chalice/examples/iterator2.chalice (limited to 'Chalice/examples/iterator2.chalice') diff --git a/Chalice/examples/iterator2.chalice b/Chalice/examples/iterator2.chalice new file mode 100644 index 00000000..5b75c1ca --- /dev/null +++ b/Chalice/examples/iterator2.chalice @@ -0,0 +1,134 @@ +/* Iterator pattern in Chalice. */ + +class List module Collections { + var contents: seq; + + method init() + requires acc(contents); + ensures valid && size()==0; + { + contents := nil; + fold valid; + } + + method add(x: int) + requires valid; + ensures valid && size() == old(size()+1) && get(size()-1) == x; // I don't know why this happens. + ensures forall { i in [0:size()-1]; get(i) == old(get(i)) }; + { + unfold valid; + contents := contents ++ [x]; + fold valid; + } + + function get(index: int): int + requires rd(valid) && 0<=index && index