(set-option :produce-models true) (set-option :pull-nested-quantifiers true) (set-option :mbqi true) (declare-const x (_ BitVec 10)) (declare-const y (_ BitVec 10)) (declare-const xs (_ BitVec 10)) ; --- Parsed BLIF network from Z:\Projects\Z3 4Biology\Code\v0.1\models\fission_yeast.cnet-------- (declare-fun T ((_ BitVec 10) (_ BitVec 10) ) bool) ; -------------- Transition Relation: ----------------- (assert (forall ((x (_ BitVec 10)) (y (_ BitVec 10)) )(= (T x y) (and (= (= ((_ extract 0 0) y) (_ bv1 1)) (or false)) (= (= ((_ extract 1 1) y) (_ bv1 1)) (or (and (= ((_ extract 0 0) x) (_ bv1 1))))) (= (= ((_ extract 2 2) y) (_ bv1 1)) (or (and (not (= ((_ extract 1 1) x) (_ bv1 1))) (= ((_ extract 2 2) x) (_ bv1 1)) (not (= ((_ extract 3 3) x) (_ bv1 1))) (not (= ((_ extract 9 9) x) (_ bv1 1)))) (and (= ((_ extract 2 2) x) (_ bv1 1)) (not (= ((_ extract 3 3) x) (_ bv1 1))) (= ((_ extract 5 5) x) (_ bv1 1)) (not (= ((_ extract 9 9) x) (_ bv1 1)))) (and (not (= ((_ extract 1 1) x) (_ bv1 1))) (= ((_ extract 2 2) x) (_ bv1 1)) (= ((_ extract 5 5) x) (_ bv1 1)) (not (= ((_ extract 9 9) x) (_ bv1 1)))) (and (not (= ((_ extract 1 1) x) (_ bv1 1))) (= ((_ extract 2 2) x) (_ bv1 1)) (not (= ((_ extract 3 3) x) (_ bv1 1))) (= ((_ extract 5 5) x) (_ bv1 1))) (and (not (= ((_ extract 1 1) x) (_ bv1 1))) (not (= ((_ extract 3 3) x) (_ bv1 1))) (= ((_ extract 5 5) x) (_ bv1 1)) (not (= ((_ extract 9 9) x) (_ bv1 1)))))) (= (= ((_ extract 3 3) y) (_ bv1 1)) (or (and (= ((_ extract 3 3) x) (_ bv1 1)) (not (= ((_ extract 4 4) x) (_ bv1 1))) (not (= ((_ extract 7 7) x) (_ bv1 1)))) (and (not (= ((_ extract 2 2) x) (_ bv1 1))) (= ((_ extract 3 3) x) (_ bv1 1)) (not (= ((_ extract 7 7) x) (_ bv1 1)))) (and (not (= ((_ extract 2 2) x) (_ bv1 1))) (= ((_ extract 3 3) x) (_ bv1 1)) (not (= ((_ extract 4 4) x) (_ bv1 1)))) (and (not (= ((_ extract 2 2) x) (_ bv1 1))) (not (= ((_ extract 4 4) x) (_ bv1 1))) (not (= ((_ extract 7 7) x) (_ bv1 1)))))) (= (= ((_ extract 4 4) y) (_ bv1 1)) (or (and (not (= ((_ extract 3 3) x) (_ bv1 1))) (= ((_ extract 4 4) x) (_ bv1 1)) (= ((_ extract 5 5) x) (_ bv1 1)) (= ((_ extract 9 9) x) (_ bv1 1))) (and (not (= ((_ extract 1 1) x) (_ bv1 1))) (not (= ((_ extract 3 3) x) (_ bv1 1))) (= ((_ extract 4 4) x) (_ bv1 1)) (not (= ((_ extract 9 9) x) (_ bv1 1)))) (and (not (= ((_ extract 1 1) x) (_ bv1 1))) (= ((_ extract 4 4) x) (_ bv1 1)) (= ((_ extract 5 5) x) (_ bv1 1)) (not (= ((_ extract 9 9) x) (_ bv1 1)))) (and (not (= ((_ extract 1 1) x) (_ bv1 1))) (not (= ((_ extract 3 3) x) (_ bv1 1))) (= ((_ extract 5 5) x) (_ bv1 1)) (not (= ((_ extract 9 9) x) (_ bv1 1)))))) (= (= ((_ extract 5 5) y) (_ bv1 1)) (or (and (= ((_ extract 7 7) x) (_ bv1 1))))) (= (= ((_ extract 6 6) y) (_ bv1 1)) (or (and (not (= ((_ extract 5 5) x) (_ bv1 1))) (= ((_ extract 6 6) x) (_ bv1 1))) (and (= ((_ extract 3 3) x) (_ bv1 1)) (= ((_ extract 6 6) x) (_ bv1 1))) (and (= ((_ extract 3 3) x) (_ bv1 1)) (not (= ((_ extract 5 5) x) (_ bv1 1)))))) (= (= ((_ extract 7 7) y) (_ bv1 1)) (or (and (= ((_ extract 9 9) x) (_ bv1 1))))) (= (= ((_ extract 8 8) y) (_ bv1 1)) (or (and (not (= ((_ extract 3 3) x) (_ bv1 1))) (= ((_ extract 8 8) x) (_ bv1 1))) (and (= ((_ extract 5 5) x) (_ bv1 1)) (= ((_ extract 8 8) x) (_ bv1 1))) (and (not (= ((_ extract 3 3) x) (_ bv1 1))) (= ((_ extract 5 5) x) (_ bv1 1))))) (= (= ((_ extract 9 9) y) (_ bv1 1)) (or (and (not (= ((_ extract 2 2) x) (_ bv1 1))) (not (= ((_ extract 4 4) x) (_ bv1 1))) (= ((_ extract 6 6) x) (_ bv1 1)) (not (= ((_ extract 7 7) x) (_ bv1 1))) (not (= ((_ extract 8 8) x) (_ bv1 1))) (= ((_ extract 9 9) x) (_ bv1 1))))))))) ; ------------------ END ------------------------------ (echo "Testing the stability of model fission_yeast") (echo "-----------------------------------------------------------") (echo "Is the system non-deterministic?") (push) (assert (and (T x y) (T x xs) (not (= y xs)))) (check-sat) (pop) (declare-const p0 (_ BitVec 10)) (declare-const p1 (_ BitVec 10)) (assert (T p0 p1)) (echo "Is oscillation possible (k=1)?") (push) (assert (not (T p1 p1))) (check-sat) (pop) (echo "Is stabilization possible (k=1)?") (push) (assert (T p1 p1)) (check-sat) (pop) (push) (echo "Can a simple path be generated (k=1)?") ; ---------- Loop Free: --------------- (assert (and (and (not (= p1 p0))))) ; --------------- END (Loop free)------------------ (check-sat) (pop) (declare-const p2 (_ BitVec 10)) (assert (T p1 p2)) (echo "Is oscillation possible (k=2)?") (push) (assert (not (T p2 p2))) (check-sat) (pop) (echo "Is stabilization possible (k=2)?") (push) (assert (T p2 p2)) (check-sat) (pop) (push) (echo "Can a simple path be generated (k=2)?") ; ---------- Loop Free: --------------- (assert (and (and (not (= p1 p0))) (and (not (= p2 p0)) (not (= p2 p1))))) ; --------------- END (Loop free)------------------ (check-sat) (pop) (declare-const p3 (_ BitVec 10)) (assert (T p2 p3)) (echo "Is oscillation possible (k=3)?") (push) (assert (not (T p3 p3))) (check-sat) (pop) (echo "Is stabilization possible (k=3)?") (push) (assert (T p3 p3)) (check-sat) (pop) (push) (echo "Can a simple path be generated (k=3)?") ; ---------- Loop Free: --------------- (assert (and (and (not (= p1 p0))) (and (not (= p2 p0)) (not (= p2 p1))) (and (not (= p3 p0)) (not (= p3 p1)) (not (= p3 p2))))) ; --------------- END (Loop free)------------------ (check-sat) (pop) (declare-const p4 (_ BitVec 10)) (assert (T p3 p4)) (echo "Is oscillation possible (k=4)?") (push) (assert (not (T p4 p4))) (check-sat) (pop) (echo "Is stabilization possible (k=4)?") (push) (assert (T p4 p4)) (check-sat) (pop) (push) (echo "Can a simple path be generated (k=4)?") ; ---------- Loop Free: --------------- (assert (and (and (not (= p1 p0))) (and (not (= p2 p0)) (not (= p2 p1))) (and (not (= p3 p0)) (not (= p3 p1)) (not (= p3 p2))) (and (not (= p4 p0)) (not (= p4 p1)) (not (= p4 p2)) (not (= p4 p3))))) ; --------------- END (Loop free)------------------ (check-sat) (pop) (declare-const p5 (_ BitVec 10)) (assert (T p4 p5)) (echo "Is oscillation possible (k=5)?") (push) (assert (not (T p5 p5))) (check-sat) (pop) (get-info :all-statistics)