summaryrefslogtreecommitdiff
path: root/Binaries
diff options
context:
space:
mode:
authorGravatar rustanleino <unknown>2009-09-15 19:04:52 +0000
committerGravatar rustanleino <unknown>2009-09-15 19:04:52 +0000
commit9e7c3594b662f1c3102d419104da453d83eddfcd (patch)
tree35531361bb10ffa6b21751771429a2a04784f202 /Binaries
parent6fa676b575e1ba70c03b258420f29ad74b821b54 (diff)
Dafny: Added axioms for division and modulo.
Dafny: Make use of function preconditions in function well-definedness checks. Chalice: Changed old "install" to current "reorder" keyword in Emacs mode.
Diffstat (limited to 'Binaries')
-rw-r--r--Binaries/DafnyPrelude.bpl13
1 files changed, 13 insertions, 0 deletions
diff --git a/Binaries/DafnyPrelude.bpl b/Binaries/DafnyPrelude.bpl
index 9ff60f1b..40928306 100644
--- a/Binaries/DafnyPrelude.bpl
+++ b/Binaries/DafnyPrelude.bpl
@@ -189,6 +189,19 @@ axiom (forall h: HeapType, k: HeapType :: { $HeapSucc(h,k) }
// ---------------------------------------------------------------
+// the connection between % and /
+axiom (forall x:int, y:int :: {x % y} {x / y} x % y == x - x / y * y);
+
+// sign of denominator determines sign of remainder
+axiom (forall x:int, y:int :: {x % y} 0 < y ==> 0 <= x % y && x % y < y);
+axiom (forall x:int, y:int :: {x % y} y < 0 ==> y < x % y && x % y <= 0);
+
+// the following axiom has some unfortunate matching, but it does state a property about % that
+// is sometime useful
+axiom (forall a: int, b: int, d: int :: { a % d, b % d } 2 <= d && a % d == b % d && a < b ==> a + d <= b);
+
+// ---------------------------------------------------------------
+
type $token;
function $file_name_is(id:int, tok:$token) returns(bool);