1 (* driver for Isabelle/HOL *)
2 (* main author: Stefan Berghofer <stefan.berghofer@secunet.com> *)
5 valid "Finished Why3 theory"
6 valid "All verification conditions have been proved"
7 unknown "The following verification conditions remain to be proved" "incomplete proof"
8 (* fail "\\*\\*\\* \\(.*\\)$" "\\1" *)
9 time "why3cpulimit time : %s s"
11 transformation "eliminate_negative_constants"
12 transformation "eliminate_literal"
13 transformation "eliminate_if_fmla"
14 transformation "eliminate_epsilon"
15 transformation "eliminate_let_fmla"
16 transformation "simplify_formula"
19 syntax type int "<type name=\"Int.int\"/>"
20 syntax type real "<type name=\"Real.real\"/>"
22 syntax predicate (=) "<app><const name=\"HOL.eq\"/>%1%2</app>"
26 syntax predicate ignore'term "<const name=\"HOL.True\"/>"
30 syntax type (->) "<fun>%1%2</fun>"
31 syntax function (@) "<app>%1%2</app>"
35 syntax type bool "<type name=\"HOL.bool\"/>"
37 syntax function True "<const name=\"HOL.True\"/>"
38 syntax function False "<const name=\"HOL.False\"/>"
42 syntax function andb "<app><const name=\"HOL.conj\"/>%1%2</app>"
43 syntax function orb "<app><const name=\"HOL.disj\"/>%1%2</app>"
44 syntax function xorb "<app><const name=\"HOL.Not\"/><app><const name=\"HOL.eq\"/>%1%2</app></app>"
45 syntax function notb "<app><const name=\"HOL.Not\"/>%1</app>"
46 syntax function implb "<app><const name=\"HOL.implies\"/>%1%2</app>"
50 syntax function zero "<number val=\"0\"><type name=\"Int.int\"/></number>"
51 syntax function one "<number val=\"1\"><type name=\"Int.int\"/></number>"
53 syntax function (+) "<app><const name=\"Groups.plus_class.plus\"/>%1%2</app>"
54 syntax function (-) "<app><const name=\"Groups.minus_class.minus\"/>%1%2</app>"
55 syntax function (*) "<app><const name=\"Groups.times_class.times\"/>%1%2</app>"
56 syntax function (-_) "<app><const name=\"Groups.uminus_class.uminus\"/>%1</app>"
58 syntax predicate (<=) "<app><const name=\"Orderings.ord_class.less_eq\"/>%1%2</app>"
59 syntax predicate (<) "<app><const name=\"Orderings.ord_class.less\"/>%1%2</app>"
60 syntax predicate (>=) "<app><const name=\"Orderings.ord_class.less_eq\"/>%2%1</app>"
61 syntax predicate (>) "<app><const name=\"Orderings.ord_class.less\"/>%2%1</app>"
63 remove prop MulComm.Comm
64 remove prop MulAssoc.Assoc
65 remove prop Unit_def_l
66 remove prop Unit_def_r
70 remove prop Mul_distr_l
71 remove prop Mul_distr_r
78 remove prop NonTrivialRing
79 remove prop CompatOrderAdd
80 remove prop CompatOrderMult
81 remove prop ZeroLessOne
85 syntax function abs "<app><const name=\"Groups.abs_class.abs\"/>%1</app>"
91 syntax function min "<app><const name=\"Orderings.ord_class.min\"/>%1%2</app>"
92 syntax function max "<app><const name=\"Orderings.ord_class.max\"/>%1%2</app>"
95 theory int.Exponentiation
96 syntax function power "<app><const name=\"Power.power_class.power\"/>%1<app><const name=\"Int.nat\"/>%2</app></app>"
100 syntax type list "<type name=\"List.list\">%1</type>"
102 syntax function Nil "<const name=\"List.list.Nil\">%t0</const>"
103 syntax function Cons "<app><const name=\"List.list.Cons\"/>%1%2</app>"
107 syntax function length "<app><const name=\"Nat.semiring_1_class.of_nat\"><fun><type name=\"Nat.nat\"/><type name=\"Int.int\"/></fun></const><app><const name=\"List.length\"/>%1</app></app>"
111 syntax function (++) "<app><const name=\"List.append\"/>%1%2</app>"
115 syntax function reverse "<app><const name=\"List.rev\"/>%1</app>"
119 syntax predicate mem "<app><const name=\"Set.member\"/>%1<app><const name=\"List.list.set\"/>%2</app></app>"
123 syntax function nth "<app><const name=\"List.nth\"/>%2<app><const name=\"Int.nat\"/>%1</app></app>"
126 theory list.HdTlNoOpt
127 syntax function hd "<app><const name=\"List.list.hd\"/>%1</app>"
128 syntax function tl "<app><const name=\"List.list.tl\"/>%1</app>"
132 syntax predicate distinct "<app><const name=\"List.distinct\"/>%1</app>"
136 syntax type option "<type name=\"Option.option\">%1</type>"
138 syntax function None "<const name=\"Option.option.None\">%t0</const>"
139 syntax function Some "<app><const name=\"Option.option.Some\"/>%1</app>"
143 syntax function get "<app>%1%2</app>"
144 syntax function ([]) "<app>%1%2</app>"
145 syntax function set "<app><const name=\"Fun.fun_upd\"/>%1%2%3</app>"
146 syntax function ([<-]) "<app><const name=\"Fun.fun_upd\"/>%1%2%3</app>"
150 syntax function cardinal "<app><const name=\"Nat.semiring_1_class.of_nat\"><fun><type name=\"Nat.nat\"/><type name=\"Int.int\"/></fun></const><app><const name=\"FSet.fcard\"/>%1</app></app>"
154 syntax predicate even "<app><const name=\"Parity.semiring_parity_class.even\"/>%1</app>"
155 syntax predicate odd "<app><const name=\"Parity.semiring_parity_class.odd\"/>%1</app>"
158 theory number.Divisibility
159 syntax predicate divides "<app><const name=\"Rings.dvd_class.dvd\"/>%1%2</app>"
163 syntax function gcd "<app><const name=\"GCD.gcd_class.gcd\"/>%1%2</app>"
167 syntax predicate prime "<app><const name=\"Factorial_Ring.normalization_semidom_class.prime\"/>%1</app>"
170 theory number.Coprime
171 syntax predicate coprime "<app><const name=\"Rings.algebraic_semidom_class.coprime\"/>%1%2</app>"
175 syntax function inv "<app><const name=\"Fields.inverse_class.inverse\"/>%1</app>"
176 syntax function (/) "<app><const name=\"Rings.divide_class.divide\"/>%1%2</app>"
180 syntax function zero "<number val=\"0\"><type name=\"Real.real\"/></number>"
181 syntax function one "<number val=\"1\"><type name=\"Real.real\"/></number>"
183 syntax function (+) "<app><const name=\"Groups.plus_class.plus\"/>%1%2</app>"
184 syntax function (-) "<app><const name=\"Groups.minus_class.minus\"/>%1%2</app>"
185 syntax function (*) "<app><const name=\"Groups.times_class.times\"/>%1%2</app>"
186 syntax function (-_) "<app><const name=\"Groups.uminus_class.uminus\"/>%1</app>"
188 syntax predicate (<=) "<app><const name=\"Orderings.ord_class.less_eq\"/>%1%2</app>"
189 syntax predicate (<) "<app><const name=\"Orderings.ord_class.less\"/>%1%2</app>"
190 syntax predicate (>=) "<app><const name=\"Orderings.ord_class.less_eq\"/>%2%1</app>"
191 syntax predicate (>) "<app><const name=\"Orderings.ord_class.less\"/>%2%1</app>"
193 remove prop MulComm.Comm
194 remove prop MulAssoc.Assoc
195 remove prop Unit_def_l
196 remove prop Unit_def_r
197 remove prop Inv_def_l
198 remove prop Inv_def_r
200 remove prop Mul_distr_l
201 remove prop Mul_distr_r
208 remove prop NonTrivialRing
209 remove prop CompatOrderAdd
210 remove prop CompatOrderMult
211 remove prop ZeroLessOne
215 syntax function abs "<app><const name=\"Groups.abs_class.abs\"/>%1</app>"
221 syntax function min "<app><const name=\"Orderings.ord_class.min\"/>%1%2</app>"
222 syntax function max "<app><const name=\"Orderings.ord_class.max\"/>%1%2</app>"
225 theory real.Trigonometry
226 syntax function tan "<app><const name=\"Transcendental.tan\"/>%1</app>"
230 meta "literal:keep" type t
231 syntax function to_int "<app><const name=\"Word.sint\"/>%1</app>"
235 meta "literal:keep" type t
239 meta "literal:keep" type t
243 meta "literal:keep" type t
247 meta "literal:keep" type t
250 (* this file has an extension .aux rather than .gen since it should not be distributed *)
251 import "isabelle-realizations.aux"