2 unknown "unfinished" "\"\\0\""
3 unknown "untried" "\"\\0\""
5 time "why3cpulimit time : %s s"
7 (* Performed introductions depending on whether counterexamples are
8 requested, as said by the meta "get_counterexmp". When this meta
9 set, this transformation introduces the model variables that are
10 still embedded in the goal. When it is not set, it removes all
11 these unused-ce-related variables, even in the context. *)
12 transformation "counterexamples_dependent_intros"
14 (*transformation "inline_trivial"*)
15 transformation "eliminate_builtin"
17 (* PVS does not support mutual recursion *)
18 transformation "eliminate_mutual_recursion"
19 (* though we could do better, we only use recursion on one argument *)
20 transformation "eliminate_non_struct_recursion"
22 transformation "eliminate_literal"
23 transformation "eliminate_epsilon"
25 (* PVS only has simple patterns *)
26 transformation "compile_match"
27 transformation "eliminate_projections"
29 transformation "simplify_formula"
33 syntax type real "real"
34 syntax predicate (=) "(%1 = %2)"
38 syntax predicate ignore'term "TRUE"
42 syntax type (->) "[%1 -> %2]"
43 syntax function (@) "%1(%2)"
47 syntax function get "%1(%2)"
48 syntax function ([]) "%1(%2)"
50 syntax function set "(%1 WITH [(%2) |-> %3])"
51 syntax function ([<-]) "(%1 WITH [(%2) |-> %3])"
55 syntax type bool "bool"
57 syntax function True "TRUE"
58 syntax function False "FALSE"
63 syntax function andb "(%1 AND %2)"
64 syntax function orb "(%1 OR %2)"
65 syntax function xorb "(%1 XOR %2)"
66 syntax function notb "(NOT %1)"
67 syntax function implb "(%1 => %2)"
73 syntax function zero "0"
74 syntax function one "1"
76 syntax function ( + ) "(%1 + %2)"
77 syntax function ( - ) "(%1 - %2)"
78 syntax function ( * ) "(%1 * %2)"
79 syntax function (-_) "(-%1)"
81 syntax predicate (<=) "(%1 <= %2)"
82 syntax predicate (<) "(%1 < %2)"
83 syntax predicate (>=) "(%1 >= %2)"
84 syntax predicate (>) "(%1 > %2)"
86 remove prop MulComm.Comm
87 remove prop MulAssoc.Assoc
88 remove prop Unit_def_l
89 remove prop Unit_def_r
93 remove prop Mul_distr_l
94 remove prop Mul_distr_r
101 remove prop NonTrivialRing
102 remove prop CompatOrderAdd
103 remove prop CompatOrderMult
104 remove prop ZeroLessOne
110 syntax function abs "abs(%1)"
118 syntax function min "min(%1, %2)"
119 syntax function max "max(%1, %2)"
125 syntax function zero "0"
126 syntax function one "1"
128 syntax function ( + ) "(%1 + %2)"
129 syntax function ( - ) "(%1 - %2)"
130 syntax function (-_) "(-%1)"
131 syntax function ( * ) "(%1 * %2)"
132 (* / and inv are defined in the realization *)
134 syntax predicate (<=) "(%1 <= %2)"
135 syntax predicate (<) "(%1 < %2)"
136 syntax predicate (>=) "(%1 >= %2)"
137 syntax predicate (>) "(%1 > %2)"
139 remove prop MulComm.Comm
140 remove prop MulAssoc.Assoc
141 remove prop Unit_def_l
142 remove prop Unit_def_r
143 remove prop Inv_def_l
144 remove prop Inv_def_r
146 remove prop Mul_distr_l
147 remove prop Mul_distr_r
151 remove prop NonTrivialRing
152 remove prop CompatOrderAdd
153 remove prop CompatOrderMult
154 remove prop ZeroLessOne
159 remove prop assoc_mul_div
160 remove prop assoc_div_mul
161 remove prop assoc_div_div
166 syntax function min "min(%1, %2)"
167 syntax function max "max(%1, %2)"
173 remove prop Max_assoc
174 remove prop Min_assoc
177 theory real.RealInfix
179 syntax function (+.) "(%1 + %2)"
180 syntax function (-.) "(%1 - %2)"
181 syntax function (-._) "(-%1)"
182 syntax function ( *.) "(%1 * %2)"
183 syntax function (/.) "real@Real.infix_sl(%1, %2)"
184 syntax function inv "real@Real.inv(%1)"
186 syntax predicate (<=.) "(%1 <= %2)"
187 syntax predicate (<.) "(%1 < %2)"
188 syntax predicate (>=.) "(%1 >= %2)"
189 syntax predicate (>.) "(%1 > %2)"
195 syntax function abs "abs(%1)"
204 syntax function from_int "(%1 :: real)"
215 theory real.PowerReal
217 syntax function pow "(%1 ^ %2)"
219 remove prop Pow_x_zero
220 remove prop Pow_x_one
221 remove prop Pow_one_y
228 syntax function sqrt "SQRT(%1)"
234 syntax function exp "EXP(%1)"
235 syntax function log "LOG(%1)"
239 theory real.Trigonometry
241 syntax function cos "COS(%1)"
242 syntax function sin "SIN(%1)"
244 syntax function pi "PI"
246 syntax function tan "TAN(%1)"
252 syntax type option "lift[%1]"
254 syntax function None "bottom"
255 syntax function Some "up(%1)"
260 syntax type list "list[%1]"
262 syntax function Nil "(null :: %t0)"
263 syntax function Cons "cons(%1, %2)"
268 syntax function length "length(%1)"
269 remove prop Length_nonnegative
270 remove prop Length_nil
274 syntax predicate mem "member(%1, %2)"
280 "IF 0 <= %1 AND %1 < length(%2) THEN up(nth(%2, %1)) ELSE bottom ENDIF"
284 syntax function (++) "append(%1, %2)"
286 remove prop Append_assoc
287 remove prop Append_l_nil
288 remove prop Append_length
289 (* FIXME? the following are not part of PVS prelude *)
290 remove prop mem_append
291 remove prop mem_decomp
295 syntax function reverse "reverse(%1)"
299 syntax type set "set[%1]"
301 syntax predicate mem "member(%1, %2)"
302 (* remove prop extensionality not present anymore *)
304 syntax predicate subset "subset?(%1, %2)"
305 remove prop subset_trans
307 syntax function empty "(emptyset :: %t0)"
308 syntax predicate is_empty "empty?(%1)"
309 remove prop is_empty_empty
311 syntax function add "add(%1, %2)"
312 syntax function singleton "singleton(%1)"
314 syntax function remove "remove(%1, %2)"
315 remove prop subset_remove
317 syntax function union "union(%1, %2)"
319 syntax function inter "intersection(%1, %2)"
321 syntax function diff "difference(%1, %2)"
322 remove prop subset_diff
326 syntax function all "fullset"
330 syntax type fset "finite_set[%1]"
332 syntax predicate mem "member(%1, %2)"
333 remove prop extensionality
335 syntax predicate subset "subset?(%1, %2)"
336 remove prop subset_trans
338 syntax function empty "(emptyset :: %t0)"
339 syntax predicate is_empty "empty?(%1)"
340 remove prop is_empty_empty
341 remove prop empty_is_empty
343 syntax function add "add(%1, %2)"
345 syntax function singleton "singleton(%1)"
347 syntax function remove "remove(%1, %2)"
348 remove prop remove_def
349 remove prop subset_remove
351 syntax function union "union(%1, %2)"
352 remove prop union_def
354 syntax function inter "intersection(%1, %2)"
355 remove prop inter_def
357 syntax function diff "difference(%1, %2)"
359 remove prop subset_diff
363 syntax function cardinal "Card(%1)"
364 remove prop cardinal_nonneg
365 remove prop cardinal_empty
366 remove prop cardinal_add
367 remove prop cardinal_remove
368 remove prop cardinal_subset
369 remove prop cardinal1
374 (* this file has an extension .aux rather than .gen
375 since it should not be distributed *)
376 import "pvs-realizations.aux"