equal
deleted
inserted
replaced
3 *) |
3 *) |
4 |
4 |
5 header {* Bindings to Satisfiability Modulo Theories (SMT) solvers *} |
5 header {* Bindings to Satisfiability Modulo Theories (SMT) solvers *} |
6 |
6 |
7 theory SMT |
7 theory SMT |
8 imports List |
8 imports Record |
9 uses |
9 uses |
10 "Tools/Datatype/datatype_selectors.ML" |
|
11 "Tools/SMT/smt_utils.ML" |
10 "Tools/SMT/smt_utils.ML" |
12 "Tools/SMT/smt_failure.ML" |
11 "Tools/SMT/smt_failure.ML" |
13 "Tools/SMT/smt_config.ML" |
12 "Tools/SMT/smt_config.ML" |
14 ("Tools/SMT/smt_monomorph.ML") |
13 ("Tools/SMT/smt_monomorph.ML") |
15 ("Tools/SMT/smt_builtin.ML") |
14 ("Tools/SMT/smt_builtin.ML") |
|
15 ("Tools/SMT/smt_datatypes.ML") |
16 ("Tools/SMT/smt_normalize.ML") |
16 ("Tools/SMT/smt_normalize.ML") |
17 ("Tools/SMT/smt_translate.ML") |
17 ("Tools/SMT/smt_translate.ML") |
18 ("Tools/SMT/smt_solver.ML") |
18 ("Tools/SMT/smt_solver.ML") |
19 ("Tools/SMT/smtlib_interface.ML") |
19 ("Tools/SMT/smtlib_interface.ML") |
20 ("Tools/SMT/z3_interface.ML") |
20 ("Tools/SMT/z3_interface.ML") |
121 definition term_true where "term_true = True" |
121 definition term_true where "term_true = True" |
122 definition term_false where "term_false = False" |
122 definition term_false where "term_false = False" |
123 |
123 |
124 |
124 |
125 |
125 |
126 |
|
127 subsection {* Integer division and modulo for Z3 *} |
126 subsection {* Integer division and modulo for Z3 *} |
128 |
127 |
129 definition z3div :: "int \<Rightarrow> int \<Rightarrow> int" where |
128 definition z3div :: "int \<Rightarrow> int \<Rightarrow> int" where |
130 "z3div k l = (if 0 \<le> l then k div l else -(k div (-l)))" |
129 "z3div k l = (if 0 \<le> l then k div l else -(k div (-l)))" |
131 |
130 |
136 |
135 |
137 subsection {* Setup *} |
136 subsection {* Setup *} |
138 |
137 |
139 use "Tools/SMT/smt_monomorph.ML" |
138 use "Tools/SMT/smt_monomorph.ML" |
140 use "Tools/SMT/smt_builtin.ML" |
139 use "Tools/SMT/smt_builtin.ML" |
|
140 use "Tools/SMT/smt_datatypes.ML" |
141 use "Tools/SMT/smt_normalize.ML" |
141 use "Tools/SMT/smt_normalize.ML" |
142 use "Tools/SMT/smt_translate.ML" |
142 use "Tools/SMT/smt_translate.ML" |
143 use "Tools/SMT/smt_solver.ML" |
143 use "Tools/SMT/smt_solver.ML" |
144 use "Tools/SMT/smtlib_interface.ML" |
144 use "Tools/SMT/smtlib_interface.ML" |
145 use "Tools/SMT/z3_interface.ML" |
145 use "Tools/SMT/z3_interface.ML" |
378 |
378 |
379 hide_type (open) pattern |
379 hide_type (open) pattern |
380 hide_const Pattern fun_app term_true term_false z3div z3mod |
380 hide_const Pattern fun_app term_true term_false z3div z3mod |
381 hide_const (open) trigger pat nopat weight |
381 hide_const (open) trigger pat nopat weight |
382 |
382 |
383 |
|
384 |
|
385 subsection {* Selectors for datatypes *} |
|
386 |
|
387 setup {* Datatype_Selectors.setup *} |
|
388 |
|
389 declare [[ selector Pair 1 = fst, selector Pair 2 = snd ]] |
|
390 declare [[ selector Cons 1 = hd, selector Cons 2 = tl ]] |
|
391 |
|
392 end |
383 end |