/
inconsistent-ls-of-ls.defs.smt2
100 lines (75 loc) · 1.35 KB
/
inconsistent-ls-of-ls.defs.smt2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
(set-logic QF_SHID)
(set-info :source |
James Brotherston, Carsten Fuhs, Nikos Gorogiannis, and Juan Navarro Pérez.
A decision procedure for satisfiability in separation logic with inductive
predicates. CSL-LICS, 2014.
https://github.com/ngorogiannis/cyclist/releases/tag/CSL-LICS14
|)
(set-info :smt-lib-version 2.0)
(set-info :category "crafted")
(set-info :status unsat)
(set-info :version "2014-05-31")
; Sorts for locations, one by cell sort
(declare-sort RefGTyp 0)
; Types of cells in the heap
(declare-datatypes (
(GTyp 0)
) (
((c_GTyp (f0 RefGTyp) (f1 RefGTyp) ))
)
)
; Type of heap
(declare-heap (RefGTyp GTyp)
)
; User defined predicates
(define-funs-rec (
(P ((x RefGTyp)) Bool
)
(R ((x RefGTyp)) Bool
)
(Q ((x RefGTyp)(y RefGTyp)) Bool
)
)
((or
(and
(= (as nil RefGTyp) x)
(_ emp RefGTyp GTyp)
)
(and
(distinct (as nil RefGTyp) x)
(Q x x )
)
)
(and
(distinct (as nil RefGTyp) x)
(P x )
)
(or (exists ((d RefGTyp)(c RefGTyp))
(and
(= (as nil RefGTyp) y)
(distinct (as nil RefGTyp) x)
(sep
(pto x (c_GTyp d c ))
(P d )
)
)
)
(exists ((d RefGTyp)(c RefGTyp))
(and
(distinct (as nil RefGTyp) y)
(sep
(pto y (c_GTyp d c ))
(Q x c )
)
)
)
)
)
)
(check-sat)
;; variables
(declare-const x0 RefGTyp)
(assert
(R x0 )
)
(check-sat)