summaryrefslogtreecommitdiff
path: root/omega/examples/gist
diff options
context:
space:
mode:
authordhuth <derickhuth@gmail.com>2014-11-21 13:35:20 -0700
committerdhuth <derickhuth@gmail.com>2014-11-21 13:35:20 -0700
commita1834b22c43c282442b0cb164767e6c877cf0e5b (patch)
treebedc5be7d1bdb8d32c1868caa496a8a1530d8d8a /omega/examples/gist
parentded84bb4aec7461738e7b7033d782a518e2c606b (diff)
parenteb9236c5353785472ae132f27e1cfb9f1e4264a5 (diff)
downloadchill-a1834b22c43c282442b0cb164767e6c877cf0e5b.tar.gz
chill-a1834b22c43c282442b0cb164767e6c877cf0e5b.tar.bz2
chill-a1834b22c43c282442b0cb164767e6c877cf0e5b.zip
Merge branch 'master' into doe
Diffstat (limited to 'omega/examples/gist')
-rw-r--r--omega/examples/gist60
1 files changed, 60 insertions, 0 deletions
diff --git a/omega/examples/gist b/omega/examples/gist
new file mode 100644
index 0000000..5919b88
--- /dev/null
+++ b/omega/examples/gist
@@ -0,0 +1,60 @@
+#
+# Test gist function and code generation for modular equations
+#
+
+symbolic n;
+
+# basic gist function
+#
+R:={[t1,t2]: exists (aa : 2aa = t1 && 2 <= t1 && t1 <= 8)};
+known := {[t1,t2]: 1 <= t1 <= 9};
+gist R given known;
+
+
+# test modulo equations by coprime numbers
+#
+is := { [i,j] : 1 <= i <= n && i <= j <= n && exists (alpha, beta: i= 1+4*alpha && j = i+3*beta) };
+is;
+known := { [i,j] : 1 <= i <= n && exists (alpha: i = 1+4*alpha) };
+gist is given known;
+
+codegen is;
+
+# test modulo equations by numbers in multiple
+#
+is := { [i,j] : 1 <= i <= n && i <= j <= n && exists (alpha, beta: i= 1+4*alpha && j = i+8*beta) };
+is;
+known := { [i,j] : 1 <= i <= n && exists (alpha: i = 1+4*alpha) };
+gist is given known;
+
+codegen is;
+
+is := { [i,j] : 1 <= i <= n && i <= j <= n && exists (alpha, beta: i= 1+256*alpha && j = i+8*beta) };
+is;
+known := { [i,j] : 1 <= i <= n && exists (alpha: i = 1+256*alpha) };
+gist is given known;
+
+codegen is;
+
+# test modulo equations by gcd != 1
+#
+is := { [i,j] : 1 <= i <= n && i <= j <= n && exists (alpha, beta: i= 1+4*alpha && j = i+1+6*beta) };
+is;
+known := { [i,j] : 1 <= i <= n && exists (alpha: i = 1+4*alpha) };
+gist is given known;
+codegen is;
+
+is := { [i,j] : 1 <= i <= n && i <= j <= n && exists (alpha, beta: i= 1+6*alpha && j = i+4*beta) };
+is;
+known := { [i,j] : 1 <= i <= n && exists (alpha: i = 1+6*alpha) };
+gist is given known;
+codegen is;
+
+# gist won't simpilfy to the result we want, but the code generation
+# takes care of it
+#
+is := { [i,j] : 1 <= i <= n && i <= j <= n && exists (alpha, beta: i= 1+12*alpha && j = i+8*beta) };
+is;
+known := { [i,j] : 1 <= i <= n && exists (alpha: i = 1+12*alpha) };
+gist is given known;
+codegen is;