summaryrefslogtreecommitdiff
path: root/Test/test2/LambdaPoly.bpl
diff options
context:
space:
mode:
authorGravatar MichalMoskal <unknown>2010-02-19 22:17:39 +0000
committerGravatar MichalMoskal <unknown>2010-02-19 22:17:39 +0000
commit5827ea8d4d4771174a864d5425d89bec22d62fa3 (patch)
tree02522e1c475eb6cf064242aac5edbd8f61ed0d57 /Test/test2/LambdaPoly.bpl
parent1127ea8d8037278415fa5cb2d8917d972b122983 (diff)
Fix up the polymorphic case for lambda; it probably still isn't quite correct.
Diffstat (limited to 'Test/test2/LambdaPoly.bpl')
-rw-r--r--Test/test2/LambdaPoly.bpl18
1 files changed, 18 insertions, 0 deletions
diff --git a/Test/test2/LambdaPoly.bpl b/Test/test2/LambdaPoly.bpl
new file mode 100644
index 00000000..6d56e7c5
--- /dev/null
+++ b/Test/test2/LambdaPoly.bpl
@@ -0,0 +1,18 @@
+type set a = [a]bool;
+function union<T>(a:set T, b:set T) : set T;
+axiom (forall<T> a,b:set T :: union(a,b) == (lambda x:T :: a[x] || b[x]));
+
+function diff<T>(a:set T, b:set T) : set T {(lambda x:T :: a[x] && !b[x]) }
+
+procedure a()
+{
+ var a:set int, b:set int;
+ assume a[1];
+ assume b[2];
+ assert union(a,b)[1];
+ assert union(a,b)[2];
+ assume !b[1];
+ assert diff(a,b)[1];
+ assert !diff(a,b)[2];
+}
+