1 (* Why driver for MetiTarski *)
2 (* main author: Piotr Trojanek <piotr.trojanek@gmail.com> *)
7 * real.PowerInt (incomplete)
9 * real.Polar (should work as is)
13 filename "%f-%t-%g.tptp"
15 valid "^SZS status Theorem"
16 valid "^SZS status Unsatisfiable"
17 unknown "^SZS status CounterSatisfiable" ""
18 unknown "^SZS status Satisfiable" ""
19 timeout "^SZS status Timeout"
20 unknown "^SZS status GaveUp" ""
21 fail "^SZS status Error" ""
23 time "why3cpulimit time : %s s"
27 transformation "inline_trivial"
28 transformation "eliminate_builtin"
29 transformation "inline_all"
30 transformation "eliminate_definition"
31 transformation "eliminate_inductive"
32 transformation "eliminate_algebraic"
33 transformation "eliminate_literal"
34 transformation "eliminate_if"
35 transformation "eliminate_epsilon"
36 transformation "eliminate_let"
37 transformation "eliminate_negative_constants" (* due to integers, see below *)
39 transformation "simplify_formula"
40 transformation "simplify_unknown_lsymbols"
41 transformation "simplify_trivial_quantification"
42 transformation "introduce_premises"
43 transformation "instantiate_predicate"
44 transformation "abstract_unknown_lsymbols"
46 transformation "discriminate"
47 transformation "encoding_tptp"
50 (* support for integers disabled because may be inconsistent
51 meta "encoding:kept" type int
53 meta "encoding:base" type real
54 syntax predicate (=) "(%1 = %2)"
55 meta "eliminate_algebraic" "no_index"
58 import "discrimination.gen"
62 syntax function zero "0.0"
63 syntax function one "1.0"
65 syntax function (+) "(%1 + %2)"
66 syntax function (-) "(%1 - %2)"
67 syntax function (-_) "(-%1)"
68 syntax function (*) "(%1 * %2)"
69 syntax function (/) "(%1 / %2)"
70 syntax function inv "(1/ %1)"
72 syntax predicate (<=) "(%1 <= %2)"
73 syntax predicate (<) "(%1 < %2)"
74 syntax predicate (>=) "(%1 >= %2)"
75 syntax predicate (>) "(%1 > %2)"
77 meta "inline:no" predicate (<=)
78 meta "inline:no" predicate (>=)
79 meta "inline:no" predicate (>)
81 (* These follow from Metitarski's axioms. *)
82 remove prop MulComm.Comm
83 remove prop MulAssoc.Assoc
84 remove prop Unit_def_l
85 remove prop Unit_def_r
89 remove prop Mul_distr_l
90 remove prop Mul_distr_r
98 remove prop NonTrivialRing
99 remove prop CompatOrderAdd
100 remove prop ZeroLessOne
105 remove prop assoc_mul_div
106 remove prop assoc_div_mul
107 remove prop assoc_div_div
108 remove prop CompatOrderMult
111 prelude "%%% this is a prelude for Metitarski"
112 prelude "include('Axioms/general.ax')."
115 prelude "%%% this is a prelude for Metitarski absolute value"
117 syntax function abs "abs(%1)"
119 prelude "include('Axioms/abs.ax')."
120 prelude "include('Axioms/abs2.ax')."
122 (* These follow from Metitarski's axioms. *)
127 remove prop triangular_inequality
131 prelude "%%% this is a prelude for Metitarski square"
133 prelude "include('Axioms/sqrt-general.ax')."
135 syntax function sqr "(%1)^2"
136 syntax function sqrt "sqrt(%1)"
138 (* This follows from Metitarski's general axioms. *)
139 remove prop Sqrt_positive
143 theory real.Trigonometry
144 prelude "%%% this is a prelude for Metitarski trigonometry"
147 prelude "include('Axioms/pi.ax')."
149 syntax function atan "arctan(%1)"
150 syntax function tan "tan(%1)"
152 prelude "include('Axioms/tan.ax')."
153 prelude "include('Axioms/arctan-lower.ax')."
154 prelude "include('Axioms/arctan-upper.ax')."
156 syntax function cos "cos(%1)"
157 syntax function sin "sin(%1)"
159 prelude "include('Axioms/cos.ax')."
160 prelude "include('Axioms/sin.ax')."
162 (* The following files "greatly increase the search space" and thus
163 cause failures. Do not include them! *)
165 prelude "include('Axioms/cos-constant.ax')."
166 prelude "include('Axioms/sin-constant.ax')."
172 prelude "%%% this is a prelude for Metitarski min-max"
174 prelude "include('Axioms/minmax.ax')."
176 syntax function min "min(%1,%2)"
177 syntax function max "max(%1,%2)"
183 remove prop Max_assoc
184 remove prop Min_assoc
187 (* support for integers disabled because may be inconsistent
189 syntax function power "%1^%2"
191 prelude "%%% this is a prelude for Metitarski power function"
193 prelude "include('Axioms/pow.ax')."
195 (* These follow from Metitarski's axioms. *)
200 syntax function exp "exp(%1)"
201 syntax function log "ln(%1)"
203 prelude "%%% this is a prelude for Metitarski exp/log"
205 prelude "include('Axioms/exp-general.ax')."
206 prelude "include('Axioms/ln-general.ax')."
208 (* These follow from Metitarski's axioms. *)
213 theory real.PowerReal
214 syntax function pow "pow(%1,%2)"
216 prelude "include('Axioms/pow.ax')."
218 (* These follow from Metitarski's axioms. *)
220 remove prop Pow_one_y
223 (* support for integers disabled because may be inconsistent
226 syntax function zero "0"
227 syntax function one "1"
229 syntax function (+) "(%1 + %2)"
230 syntax function (-) "(%1 - %2)"
231 syntax function (*) "(%1 * %2)"
232 syntax function (-_) "(-%1)"
234 syntax predicate (<=) "(%1 <= %2)"
235 syntax predicate (<) "(%1 < %2)"
236 syntax predicate (>=) "(%1 >= %2)"
237 syntax predicate (>) "(%1 > %2)"
239 (* These follow from Metitarski's axioms. *)
240 remove prop MulComm.Comm
241 remove prop MulAssoc.Assoc
242 remove prop Unit_def_l
243 remove prop Unit_def_r
244 remove prop Inv_def_l
245 remove prop Inv_def_r
247 remove prop Mul_distr_l
248 remove prop Mul_distr_r
255 remove prop NonTrivialRing
256 remove prop CompatOrderAdd
257 remove prop CompatOrderMult
258 remove prop ZeroLessOne