diff options
author | Braxton Hall | 2022-10-23 23:23:24 +0000 |
---|---|---|
committer | GitHub | 2022-10-23 23:23:24 +0000 |
commit | 39b5564d73b4c26adbf4bb0fd8da80478a787d31 (patch) | |
tree | 0386f1c5444b8c455ab3ab5f0fc44e69193fefb7 /entries/funemy/z3 | |
parent | d85784ebff633fed6389b86078795ca36a6f61b6 (diff) | |
parent | a89c7847195a7b20e307b042fbc821e741ccdaa4 (diff) |
Merge pull request #7 from funemy/main
Z3 fib implementation
Diffstat (limited to 'entries/funemy/z3')
-rwxr-xr-x | entries/funemy/z3/z3fib.sh | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/entries/funemy/z3/z3fib.sh b/entries/funemy/z3/z3fib.sh new file mode 100755 index 0000000..9faa228 --- /dev/null +++ b/entries/funemy/z3/z3fib.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# Instruction: +# 1. having z3 installed and under you $PATH +# 2. making sure z3fib.sh is executable, by `chmod +x z3fib.sh` +# 3. running as `./z3fib.sh [length of the fib sequence]` +# 4. having fun :) + +if [ -e fib.smt2 ] +then + rm -f fib.smt2 + touch fib.smt2 +else + touch fib.smt2 +fi + +for i in $(seq 0 $1); +do + echo "(declare-const x$i Int)" >> fib.smt2 +done + +echo "" >> fib.smt2 + +echo "(assert" >> fib.smt2 +echo " (and" >> fib.smt2 + +for i in $(seq 0 $1); +do + echo " (>= x$i 0)" >> fib.smt2 +done + +echo " (= x0 0)" >> fib.smt2 +echo " (= x1 1)" >> fib.smt2 + +for i in $(seq 2 $1); +do + echo " (= x$i (+ x$(($i - 2)) x$(($i - 1))))" >> fib.smt2 +done + +echo " )" >> fib.smt2 +echo ")" >> fib.smt2 + +echo "" >> fib.smt2 + +echo "(check-sat)" >> fib.smt2 +echo "(get-model)" >> fib.smt2 + +z3 fib.smt2 |