1 (* Why3 driver for beagle
2 see http://users.cecs.anu.edu.au/~baumgart/systems/beagle/ *)
8 invalid "Completion found"
9 valid "^% SZS status Theorem"
10 valid "^SZS status Theorem"
11 valid "^% SZS status Unsatisfiable"
12 unknown "^% SZS status CounterSatisfiable" ""
13 unknown "^% SZS status Satisfiable" ""
14 unknown "^Cannot normalize into a linear term:" ""
15 timeout "^% SZS status Timeout"
16 unknown "^% SZS status GaveUp" ""
17 fail "^% SZS status Error" ""
18 timeout "Ran out of time"
19 timeout "CPU time limit exceeded"
20 outofmemory "Out of Memory"
21 unknown "No Proof Found" ""
22 fail "Failure.*" "\"\\0\""
23 time "why3cpulimit time : %s s"
27 (* Performed introductions depending on whether counterexamples are
28 requested, as said by the meta "get_counterexmp". When this meta
29 set, this transformation introduces the model variables that are
30 still embedded in the goal. When it is not set, it removes all
31 these unused-ce-related variables, even in the context. *)
32 transformation "counterexamples_dependent_intros"
34 transformation "inline_trivial"
35 transformation "eliminate_builtin"
36 transformation "eliminate_definition"
37 transformation "eliminate_inductive"
38 (* currently, princess does not support $let and $ite *)
39 transformation "eliminate_if"
40 transformation "eliminate_epsilon"
41 transformation "eliminate_algebraic"
42 transformation "eliminate_literal"
43 transformation "eliminate_let"
45 transformation "discriminate"
46 transformation "encoding_smt"
48 import "discrimination.gen"
51 syntax predicate (=) "(%1 = %2)"
52 syntax type int "$int"
53 syntax type real "$real"
55 meta "encoding:kept" type int
56 meta "encoding:kept" type real
57 meta "eliminate_algebraic" "no_index"
61 syntax predicate ignore'term "true"
65 syntax function zero "0"
66 syntax function one "1"
68 syntax function (+) "$sum(%1,%2)"
69 syntax function (-) "$difference(%1,%2)"
70 syntax function (*) "$product(%1,%2)"
71 syntax function (-_) "$uminus(%1)"
73 syntax predicate (<=) "$lesseq(%1,%2)"
74 syntax predicate (<) "$less(%1,%2)"
75 syntax predicate (>=) "$greatereq(%1,%2)"
76 syntax predicate (>) "$greater(%1,%2)"
78 remove prop MulComm.Comm
79 remove prop MulAssoc.Assoc
80 remove prop Unit_def_l
81 remove prop Unit_def_r
85 remove prop Mul_distr_l
86 remove prop Mul_distr_r
93 remove prop NonTrivialRing
94 remove prop CompatOrderAdd
95 remove prop ZeroLessOne
97 (* Beagle fails on non-linear axioms *)
98 remove prop CompatOrderMult
102 syntax function zero "0.0"
103 syntax function one "1.0"
105 syntax function (+) "$sum(%1,%2)"
106 syntax function (-) "$difference(%1,%2)"
107 syntax function (*) "$product(%1,%2)"
108 syntax function (-_) "$uminus(%1)"
110 syntax function (/) "$quotient(%1,%2)"
111 syntax function inv "$quotient(1.0,%1)"
113 syntax predicate (<=) "$lesseq(%1,%2)"
114 syntax predicate (<) "$less(%1,%2)"
115 syntax predicate (>=) "$greatereq(%1,%2)"
116 syntax predicate (>) "$greater(%1,%2)"
118 remove prop MulComm.Comm
119 remove prop MulAssoc.Assoc
120 remove prop Unit_def_l
121 remove prop Unit_def_r
122 remove prop Inv_def_l
123 remove prop Inv_def_r
125 remove prop Mul_distr_l
126 remove prop Mul_distr_r
134 remove prop NonTrivialRing
135 remove prop CompatOrderAdd
136 remove prop ZeroLessOne
139 theory int.EuclideanDivision
140 syntax function div "$quotient_e(%1,%2)"
141 syntax function mod "$remainder_e(%1,%2)"
144 remove prop Div_bound
145 remove prop Mod_bound
149 remove prop Div_inf_neg
151 remove prop Div_1_left
152 remove prop Div_minus1_left
153 remove prop Mod_1_left
154 remove prop Mod_minus1_left
158 syntax type iType "$i"
160 meta "encoding:kept" type iType
164 syntax function floor "$floor(%1)"
165 syntax function ceiling "$ceiling(%1)"
166 syntax function truncate "$truncate(%1)"
167 syntax function round "$round(%1)"
169 syntax function to_int "$to_int(%1)"
171 syntax predicate is_int "$is_int(%1)"
172 syntax predicate is_rat "$is_rat(%1)"
176 syntax function div_t "$quotient_t(%1,%2)"
177 syntax function mod_t "$remainder_t(%1,%2)"
181 syntax function div_f "$quotient_f(%1,%2)"
182 syntax function mod_f "$remainder_f(%1,%2)"
186 syntax type rat "$rat"
188 syntax function zero "0/1"
189 syntax function one "1/1"
191 syntax function (+) "$sum(%1,%2)"
192 syntax function (-) "$difference(%1,%2)"
193 syntax function (*) "$product(%1,%2)"
194 syntax function (-_) "$uminus(%1)"
196 syntax function (/) "$quotient(%1,%2)"
197 syntax function inv "$quotient(1/1,%1)"
199 syntax predicate (<=) "$lesseq(%1,%2)"
200 syntax predicate (<) "$less(%1,%2)"
201 syntax predicate (>=) "$greatereq(%1,%2)"
202 syntax predicate (>) "$greater(%1,%2)"
204 syntax function to_rat "$to_rat(%1)"
206 syntax predicate is_int "$is_int(%1)"
207 syntax predicate is_rat "$is_rat(%1)"
209 remove prop MulComm.Comm
210 remove prop MulAssoc.Assoc
211 remove prop Unit_def_l
212 remove prop Unit_def_r
213 remove prop Inv_def_l
214 remove prop Inv_def_r
216 remove prop Mul_distr_l
217 remove prop Mul_distr_r
224 remove prop NonTrivialRing
225 remove prop CompatOrderAdd
226 remove prop ZeroLessOne
228 meta "encoding:kept" type rat
232 syntax function floor "$floor(%1)"
233 syntax function ceiling "$ceiling(%1)"
234 syntax function truncate "$truncate(%1)"
235 syntax function round "$round(%1)"
237 syntax function to_int "$to_int(%1)"
241 syntax function div "$quotient_e(%1,%2)"
242 syntax function mod "$remainder_e(%1,%2)"
246 syntax function div_t "$quotient_t(%1,%2)"
247 syntax function mod_t "$remainder_t(%1,%2)"
251 syntax function div_f "$quotient_f(%1,%2)"
252 syntax function mod_f "$remainder_f(%1,%2)"
256 syntax function to_real "$to_real(%1)"
260 syntax function from_int "$to_real(%1)"
271 syntax function floor "$to_int(%1)"
272 syntax function ceil "$to_int($ceiling(%1))"
273 syntax function truncate "$to_int($truncate(%1))"
275 remove prop Truncate_int
276 remove prop Truncate_down_pos
277 remove prop Truncate_up_neg
278 remove prop Real_of_truncate
279 remove prop Truncate_monotonic
280 remove prop Truncate_monotonic_int1
281 remove prop Truncate_monotonic_int2
282 remove prop Floor_int
284 remove prop Floor_down
286 remove prop Floor_monotonic
287 remove prop Ceil_monotonic
290 theory tptp.RealTrunc
291 syntax function floor "$floor(%1)"
292 syntax function ceiling "$ceiling(%1)"
293 syntax function truncate "$truncate(%1)"
294 syntax function round "$round(%1)"
296 syntax function to_int "$to_int(%1)"
298 syntax predicate is_int "$is_int(%1)"
299 syntax predicate is_rat "$is_rat(%1)"
303 syntax function div "$quotient_e(%1,%2)"
304 syntax function mod "$remainder_e(%1,%2)"
308 syntax function div_t "$quotient_t(%1,%2)"
309 syntax function mod_t "$remainder_t(%1,%2)"
313 syntax function div_f "$quotient_f(%1,%2)"
314 syntax function mod_f "$remainder_f(%1,%2)"
318 syntax function to_rat "$to_rat(%1)"
321 theory tptp.IntToReal
322 syntax function to_real "$to_real(%1)"
325 theory tptp.RealToRat
326 syntax function to_rat "$to_rat(%1)"
329 theory tptp.RatToReal
330 syntax function to_real "$to_real(%1)"