Advertisement
Guest User

Untitled

a guest
Aug 18th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.85 KB | None | 0 0
  1. from z3 import *
  2.  
  3. def test_list_elt_gt_1():
  4. ll = Datatype('ll')
  5. ll.declare('empty')
  6. ll.declare('cons', ('car', IntSort()), ('cdr', ll))
  7. ll = ll.create()
  8. list_sum = Function('list_sum', ll, IntSort(), BoolSort())
  9. list_len = Function('list_len', ll, IntSort(), BoolSort())
  10. a,e = Consts('a e', ll)
  11. b,c,d = Ints('b c d')
  12.  
  13. fp = Fixedpoint()
  14. fp.declare_var(a,b,c,d,e)
  15. fp.register_relation(list_sum, list_len)
  16. fp.rule(list_sum(a, 0), a == ll.empty)
  17. fp.rule(list_sum(a, d), [a != ll.empty, b < 1, ll.cons(b, e) == a, list_sum(e, c), b + c == d])
  18. fp.rule(list_len(a, 0), a == ll.empty)
  19. fp.rule(list_len(a, d), [a != ll.empty, b < 1, ll.cons(b, e) == a, list_len(e, c), 1 + c == d])
  20. assert fp.query(And(list_sum(a, b), list_len(a, c), a != ll.empty, b >= c)) == unsat
  21. assert fp.query(And(list_sum(a, b), list_len(a, c), a != ll.empty, b < c)) == sat
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement