1.1 --- a/src/HOL/Tools/Qelim/generated_cooper.ML Tue Jul 10 09:23:14 2007 +0200
1.2 +++ b/src/HOL/Tools/Qelim/generated_cooper.ML Tue Jul 10 09:23:15 2007 +0200
1.3 @@ -1,1693 +1,2244 @@
1.4 -structure GeneratedCooper =
1.5 +(* Title: HOL/Tools/Presburger/generated_cooper.ML
1.6 + ID: $Id$
1.7 +
1.8 +This file is generated from HOL/ex/Reflected_Presburger.thy. DO NOT EDIT.
1.9 +*)
1.10 +
1.11 +structure GeneratedCooper =
1.12 struct
1.13 -nonfix oo;
1.14 -fun nat i = if i < 0 then 0 else i;
1.15
1.16 -val one_def0 : int = (0 + 1);
1.17 +structure Product_Type =
1.18 +struct
1.19
1.20 -datatype num = C of int | Bound of int | CX of int * num | Neg of num
1.21 - | Add of num * num | Sub of num * num | Mul of int * num;
1.22 +fun fst (y, b) = y;
1.23
1.24 -fun snd (a, b) = b;
1.25 +fun snd (a, y) = y;
1.26
1.27 -fun negateSnd x = (fn (q, r) => (q, ~ r)) x;
1.28 +end; (*struct Product_Type*)
1.29
1.30 -fun minus_def2 z w = (z + ~ w);
1.31 +structure Integer =
1.32 +struct
1.33 +
1.34 +datatype bit = B0 | B1;
1.35 +
1.36 +fun suc n = (IntInf.+ (n, (1 : IntInf.int)));
1.37 +
1.38 +val zero_nat : IntInf.int = (0 : IntInf.int);
1.39 +
1.40 +fun nat k = (if IntInf.< (k, (0 : IntInf.int)) then zero_nat else k);
1.41
1.42 fun adjust b =
1.43 - (fn (q, r) =>
1.44 - (if (0 <= minus_def2 r b) then (((2 * q) + 1), minus_def2 r b)
1.45 - else ((2 * q), r)));
1.46 + (fn a as (q, r) =>
1.47 + (if IntInf.<= ((0 : IntInf.int), IntInf.- (r, b))
1.48 + then (IntInf.+ (IntInf.* ((2 : IntInf.int), q), (1 : IntInf.int)),
1.49 + IntInf.- (r, b))
1.50 + else (IntInf.* ((2 : IntInf.int), q), r)));
1.51
1.52 fun negDivAlg a b =
1.53 - (if ((0 <= (a + b)) orelse (b <= 0)) then (~1, (a + b))
1.54 - else adjust b (negDivAlg a (2 * b)));
1.55 + (if IntInf.<= ((0 : IntInf.int), IntInf.+ (a, b)) orelse
1.56 + IntInf.<= (b, (0 : IntInf.int))
1.57 + then ((~1 : IntInf.int), IntInf.+ (a, b))
1.58 + else adjust b (negDivAlg a (IntInf.* ((2 : IntInf.int), b))));
1.59 +
1.60 +val negateSnd : IntInf.int * IntInf.int -> IntInf.int * IntInf.int =
1.61 + (fn a as (q, r) => (q, IntInf.~ r));
1.62
1.63 fun posDivAlg a b =
1.64 - (if ((a < b) orelse (b <= 0)) then (0, a)
1.65 - else adjust b (posDivAlg a (2 * b)));
1.66 + (if IntInf.< (a, b) orelse IntInf.<= (b, (0 : IntInf.int))
1.67 + then ((0 : IntInf.int), a)
1.68 + else adjust b (posDivAlg a (IntInf.* ((2 : IntInf.int), b))));
1.69
1.70 -fun divAlg x =
1.71 - (fn (a, b) =>
1.72 - (if (0 <= a)
1.73 - then (if (0 <= b) then posDivAlg a b
1.74 - else (if (a = 0) then (0, 0)
1.75 - else negateSnd (negDivAlg (~ a) (~ b))))
1.76 - else (if (0 < b) then negDivAlg a b
1.77 - else negateSnd (posDivAlg (~ a) (~ b)))))
1.78 - x;
1.79 +val divAlg : IntInf.int * IntInf.int -> IntInf.int * IntInf.int =
1.80 + (fn a as (aa, b) =>
1.81 + (if IntInf.<= ((0 : IntInf.int), aa)
1.82 + then (if IntInf.<= ((0 : IntInf.int), b) then posDivAlg aa b
1.83 + else (if ((aa : IntInf.int) = (0 : IntInf.int))
1.84 + then ((0 : IntInf.int), (0 : IntInf.int))
1.85 + else negateSnd (negDivAlg (IntInf.~ aa) (IntInf.~ b))))
1.86 + else (if IntInf.< ((0 : IntInf.int), b) then negDivAlg aa b
1.87 + else negateSnd (posDivAlg (IntInf.~ aa) (IntInf.~ b)))));
1.88
1.89 -fun mod_def1 a b = snd (divAlg (a, b));
1.90 +fun abs_int i = (if IntInf.< (i, (0 : IntInf.int)) then IntInf.~ i else i);
1.91
1.92 -fun dvd m n = (mod_def1 n m = 0);
1.93 +fun div_int a b = Product_Type.fst (divAlg (a, b));
1.94
1.95 -fun abs i = (if (i < 0) then ~ i else i);
1.96 +fun mod_int a b = Product_Type.snd (divAlg (a, b));
1.97
1.98 -fun less_def3 m n = ((m) < (n));
1.99 +fun dvd_int m n = (((mod_int n m) : IntInf.int) = (0 : IntInf.int));
1.100
1.101 -fun less_eq_def3 m n = Bool.not (less_def3 n m);
1.102 +fun eq_bit B0 B0 = true
1.103 + | eq_bit B1 B1 = true
1.104 + | eq_bit B0 B1 = false
1.105 + | eq_bit B1 B0 = false;
1.106
1.107 -fun numadd (Add (Mul (c1, Bound n1), r1), Add (Mul (c2, Bound n2), r2)) =
1.108 - (if (n1 = n2)
1.109 - then let val c = (c1 + c2)
1.110 - in (if (c = 0) then numadd (r1, r2)
1.111 - else Add (Mul (c, Bound n1), numadd (r1, r2)))
1.112 +fun int_aux i n =
1.113 + (if ((n : IntInf.int) = (0 : IntInf.int)) then i
1.114 + else int_aux (IntInf.+ (i, (1 : IntInf.int)))
1.115 + (IntInf.- (n, (1 : IntInf.int))));
1.116 +
1.117 +end; (*struct Integer*)
1.118 +
1.119 +structure Nat =
1.120 +struct
1.121 +
1.122 +fun div_nat m k = (Product_Type.fst (Integer.divAlg (m, k)));
1.123 +
1.124 +fun mod_nat m k = (Product_Type.snd (Integer.divAlg (m, k)));
1.125 +
1.126 +end; (*struct Nat*)
1.127 +
1.128 +structure GCD =
1.129 +struct
1.130 +
1.131 +fun gcd (m, n) =
1.132 + (if ((n : IntInf.int) = Integer.zero_nat) then m
1.133 + else gcd (n, Nat.mod_nat m n));
1.134 +
1.135 +val lcm : IntInf.int * IntInf.int -> IntInf.int =
1.136 + (fn a as (m, n) => Nat.div_nat (IntInf.* (m, n)) (gcd (m, n)));
1.137 +
1.138 +val ilcm : IntInf.int -> IntInf.int -> IntInf.int =
1.139 + (fn i => fn j =>
1.140 + Integer.int_aux (0 : IntInf.int)
1.141 + (lcm (Integer.nat (Integer.abs_int i), Integer.nat (Integer.abs_int j))));
1.142 +
1.143 +end; (*struct GCD*)
1.144 +
1.145 +structure HOL =
1.146 +struct
1.147 +
1.148 +type 'a eq = {eq : 'a -> 'a -> bool};
1.149 +fun eq (A_:'a eq) = #eq A_;
1.150 +
1.151 +end; (*struct HOL*)
1.152 +
1.153 +structure List =
1.154 +struct
1.155 +
1.156 +fun map f (x :: xs) = f x :: map f xs
1.157 + | map f [] = [];
1.158 +
1.159 +fun foldr f (x :: xs) a = f x (foldr f xs a)
1.160 + | foldr f [] y = y;
1.161 +
1.162 +fun append (x :: xs) ys = x :: append xs ys
1.163 + | append [] y = y;
1.164 +
1.165 +fun memberl A_ x (y :: ys) = HOL.eq A_ x y orelse memberl A_ x ys
1.166 + | memberl A_ x [] = false;
1.167 +
1.168 +fun remdups A_ (x :: xs) =
1.169 + (if memberl A_ x xs then remdups A_ xs else x :: remdups A_ xs)
1.170 + | remdups A_ [] = [];
1.171 +
1.172 +fun allpairs f (x :: xs) ys = append (map (f x) ys) (allpairs f xs ys)
1.173 + | allpairs f [] ys = [];
1.174 +
1.175 +fun size_list (a :: lista) =
1.176 + (IntInf.+ ((size_list lista), (Integer.suc Integer.zero_nat)))
1.177 + | size_list [] = Integer.zero_nat;
1.178 +
1.179 +end; (*struct List*)
1.180 +
1.181 +structure Reflected_Presburger =
1.182 +struct
1.183 +
1.184 +datatype num = C of IntInf.int | Bound of IntInf.int | Cx of IntInf.int * num |
1.185 + Neg of num | Add of num * num | Sub of num * num | Mul of IntInf.int * num;
1.186 +
1.187 +datatype fm = T | F | Lt of num | Le of num | Gt of num | Ge of num | Eq of num
1.188 + | NEq of num | Dvd of IntInf.int * num | NDvd of IntInf.int * num | Nota of fm
1.189 + | And of fm * fm | Or of fm * fm | Impa of fm * fm | Iffa of fm * fm | E of fm
1.190 + | A of fm | Closed of IntInf.int | NClosed of IntInf.int;
1.191 +
1.192 +fun disjuncts (NClosed aq) = [NClosed aq]
1.193 + | disjuncts (Closed ap) = [Closed ap]
1.194 + | disjuncts (A ao) = [A ao]
1.195 + | disjuncts (E an) = [E an]
1.196 + | disjuncts (Iffa (al, am)) = [Iffa (al, am)]
1.197 + | disjuncts (Impa (aj, ak)) = [Impa (aj, ak)]
1.198 + | disjuncts (And (af, ag)) = [And (af, ag)]
1.199 + | disjuncts (Nota ae) = [Nota ae]
1.200 + | disjuncts (NDvd (ac, ad)) = [NDvd (ac, ad)]
1.201 + | disjuncts (Dvd (aa, ab)) = [Dvd (aa, ab)]
1.202 + | disjuncts (NEq z) = [NEq z]
1.203 + | disjuncts (Eq y) = [Eq y]
1.204 + | disjuncts (Ge x) = [Ge x]
1.205 + | disjuncts (Gt w) = [Gt w]
1.206 + | disjuncts (Le v) = [Le v]
1.207 + | disjuncts (Lt u) = [Lt u]
1.208 + | disjuncts T = [T]
1.209 + | disjuncts F = []
1.210 + | disjuncts (Or (p, q)) = List.append (disjuncts p) (disjuncts q);
1.211 +
1.212 +fun eq_num (C int) (C int') = ((int : IntInf.int) = int')
1.213 + | eq_num (Bound nat) (Bound nat') = ((nat : IntInf.int) = nat')
1.214 + | eq_num (Cx (int, num)) (Cx (int', num')) =
1.215 + ((int : IntInf.int) = int') andalso eq_num num num'
1.216 + | eq_num (Neg num) (Neg num') = eq_num num num'
1.217 + | eq_num (Add (num1, num2)) (Add (num1', num2')) =
1.218 + eq_num num1 num1' andalso eq_num num2 num2'
1.219 + | eq_num (Sub (num1, num2)) (Sub (num1', num2')) =
1.220 + eq_num num1 num1' andalso eq_num num2 num2'
1.221 + | eq_num (Mul (int, num)) (Mul (int', num')) =
1.222 + ((int : IntInf.int) = int') andalso eq_num num num'
1.223 + | eq_num (C a) (Bound b) = false
1.224 + | eq_num (C a) (Cx (b, c)) = false
1.225 + | eq_num (C a) (Neg b) = false
1.226 + | eq_num (C a) (Add (b, c)) = false
1.227 + | eq_num (C a) (Sub (b, c)) = false
1.228 + | eq_num (C a) (Mul (b, c)) = false
1.229 + | eq_num (Bound a) (Cx (b, c)) = false
1.230 + | eq_num (Bound a) (Neg b) = false
1.231 + | eq_num (Bound a) (Add (b, c)) = false
1.232 + | eq_num (Bound a) (Sub (b, c)) = false
1.233 + | eq_num (Bound a) (Mul (b, c)) = false
1.234 + | eq_num (Cx (a, b)) (Neg c) = false
1.235 + | eq_num (Cx (a, b)) (Add (c, d)) = false
1.236 + | eq_num (Cx (a, b)) (Sub (c, d)) = false
1.237 + | eq_num (Cx (a, b)) (Mul (c, d)) = false
1.238 + | eq_num (Neg a) (Add (b, c)) = false
1.239 + | eq_num (Neg a) (Sub (b, c)) = false
1.240 + | eq_num (Neg a) (Mul (b, c)) = false
1.241 + | eq_num (Add (a, b)) (Sub (c, d)) = false
1.242 + | eq_num (Add (a, b)) (Mul (c, d)) = false
1.243 + | eq_num (Sub (a, b)) (Mul (c, d)) = false
1.244 + | eq_num (Bound b) (C a) = false
1.245 + | eq_num (Cx (b, c)) (C a) = false
1.246 + | eq_num (Neg b) (C a) = false
1.247 + | eq_num (Add (b, c)) (C a) = false
1.248 + | eq_num (Sub (b, c)) (C a) = false
1.249 + | eq_num (Mul (b, c)) (C a) = false
1.250 + | eq_num (Cx (b, c)) (Bound a) = false
1.251 + | eq_num (Neg b) (Bound a) = false
1.252 + | eq_num (Add (b, c)) (Bound a) = false
1.253 + | eq_num (Sub (b, c)) (Bound a) = false
1.254 + | eq_num (Mul (b, c)) (Bound a) = false
1.255 + | eq_num (Neg c) (Cx (a, b)) = false
1.256 + | eq_num (Add (c, d)) (Cx (a, b)) = false
1.257 + | eq_num (Sub (c, d)) (Cx (a, b)) = false
1.258 + | eq_num (Mul (c, d)) (Cx (a, b)) = false
1.259 + | eq_num (Add (b, c)) (Neg a) = false
1.260 + | eq_num (Sub (b, c)) (Neg a) = false
1.261 + | eq_num (Mul (b, c)) (Neg a) = false
1.262 + | eq_num (Sub (c, d)) (Add (a, b)) = false
1.263 + | eq_num (Mul (c, d)) (Add (a, b)) = false
1.264 + | eq_num (Mul (c, d)) (Sub (a, b)) = false;
1.265 +
1.266 +fun eq_fm T T = true
1.267 + | eq_fm F F = true
1.268 + | eq_fm (Lt num) (Lt num') = eq_num num num'
1.269 + | eq_fm (Le num) (Le num') = eq_num num num'
1.270 + | eq_fm (Gt num) (Gt num') = eq_num num num'
1.271 + | eq_fm (Ge num) (Ge num') = eq_num num num'
1.272 + | eq_fm (Eq num) (Eq num') = eq_num num num'
1.273 + | eq_fm (NEq num) (NEq num') = eq_num num num'
1.274 + | eq_fm (Dvd (int, num)) (Dvd (int', num')) =
1.275 + ((int : IntInf.int) = int') andalso eq_num num num'
1.276 + | eq_fm (NDvd (int, num)) (NDvd (int', num')) =
1.277 + ((int : IntInf.int) = int') andalso eq_num num num'
1.278 + | eq_fm (Nota fm) (Nota fm') = eq_fm fm fm'
1.279 + | eq_fm (And (fm1, fm2)) (And (fm1', fm2')) =
1.280 + eq_fm fm1 fm1' andalso eq_fm fm2 fm2'
1.281 + | eq_fm (Or (fm1, fm2)) (Or (fm1', fm2')) =
1.282 + eq_fm fm1 fm1' andalso eq_fm fm2 fm2'
1.283 + | eq_fm (Impa (fm1, fm2)) (Impa (fm1', fm2')) =
1.284 + eq_fm fm1 fm1' andalso eq_fm fm2 fm2'
1.285 + | eq_fm (Iffa (fm1, fm2)) (Iffa (fm1', fm2')) =
1.286 + eq_fm fm1 fm1' andalso eq_fm fm2 fm2'
1.287 + | eq_fm (E fm) (E fm') = eq_fm fm fm'
1.288 + | eq_fm (A fm) (A fm') = eq_fm fm fm'
1.289 + | eq_fm (Closed nat) (Closed nat') = ((nat : IntInf.int) = nat')
1.290 + | eq_fm (NClosed nat) (NClosed nat') = ((nat : IntInf.int) = nat')
1.291 + | eq_fm T F = false
1.292 + | eq_fm T (Lt a) = false
1.293 + | eq_fm T (Le a) = false
1.294 + | eq_fm T (Gt a) = false
1.295 + | eq_fm T (Ge a) = false
1.296 + | eq_fm T (Eq a) = false
1.297 + | eq_fm T (NEq a) = false
1.298 + | eq_fm T (Dvd (a, b)) = false
1.299 + | eq_fm T (NDvd (a, b)) = false
1.300 + | eq_fm T (Nota a) = false
1.301 + | eq_fm T (And (a, b)) = false
1.302 + | eq_fm T (Or (a, b)) = false
1.303 + | eq_fm T (Impa (a, b)) = false
1.304 + | eq_fm T (Iffa (a, b)) = false
1.305 + | eq_fm T (E a) = false
1.306 + | eq_fm T (A a) = false
1.307 + | eq_fm T (Closed a) = false
1.308 + | eq_fm T (NClosed a) = false
1.309 + | eq_fm F (Lt a) = false
1.310 + | eq_fm F (Le a) = false
1.311 + | eq_fm F (Gt a) = false
1.312 + | eq_fm F (Ge a) = false
1.313 + | eq_fm F (Eq a) = false
1.314 + | eq_fm F (NEq a) = false
1.315 + | eq_fm F (Dvd (a, b)) = false
1.316 + | eq_fm F (NDvd (a, b)) = false
1.317 + | eq_fm F (Nota a) = false
1.318 + | eq_fm F (And (a, b)) = false
1.319 + | eq_fm F (Or (a, b)) = false
1.320 + | eq_fm F (Impa (a, b)) = false
1.321 + | eq_fm F (Iffa (a, b)) = false
1.322 + | eq_fm F (E a) = false
1.323 + | eq_fm F (A a) = false
1.324 + | eq_fm F (Closed a) = false
1.325 + | eq_fm F (NClosed a) = false
1.326 + | eq_fm (Lt a) (Le b) = false
1.327 + | eq_fm (Lt a) (Gt b) = false
1.328 + | eq_fm (Lt a) (Ge b) = false
1.329 + | eq_fm (Lt a) (Eq b) = false
1.330 + | eq_fm (Lt a) (NEq b) = false
1.331 + | eq_fm (Lt a) (Dvd (b, c)) = false
1.332 + | eq_fm (Lt a) (NDvd (b, c)) = false
1.333 + | eq_fm (Lt a) (Nota b) = false
1.334 + | eq_fm (Lt a) (And (b, c)) = false
1.335 + | eq_fm (Lt a) (Or (b, c)) = false
1.336 + | eq_fm (Lt a) (Impa (b, c)) = false
1.337 + | eq_fm (Lt a) (Iffa (b, c)) = false
1.338 + | eq_fm (Lt a) (E b) = false
1.339 + | eq_fm (Lt a) (A b) = false
1.340 + | eq_fm (Lt a) (Closed b) = false
1.341 + | eq_fm (Lt a) (NClosed b) = false
1.342 + | eq_fm (Le a) (Gt b) = false
1.343 + | eq_fm (Le a) (Ge b) = false
1.344 + | eq_fm (Le a) (Eq b) = false
1.345 + | eq_fm (Le a) (NEq b) = false
1.346 + | eq_fm (Le a) (Dvd (b, c)) = false
1.347 + | eq_fm (Le a) (NDvd (b, c)) = false
1.348 + | eq_fm (Le a) (Nota b) = false
1.349 + | eq_fm (Le a) (And (b, c)) = false
1.350 + | eq_fm (Le a) (Or (b, c)) = false
1.351 + | eq_fm (Le a) (Impa (b, c)) = false
1.352 + | eq_fm (Le a) (Iffa (b, c)) = false
1.353 + | eq_fm (Le a) (E b) = false
1.354 + | eq_fm (Le a) (A b) = false
1.355 + | eq_fm (Le a) (Closed b) = false
1.356 + | eq_fm (Le a) (NClosed b) = false
1.357 + | eq_fm (Gt a) (Ge b) = false
1.358 + | eq_fm (Gt a) (Eq b) = false
1.359 + | eq_fm (Gt a) (NEq b) = false
1.360 + | eq_fm (Gt a) (Dvd (b, c)) = false
1.361 + | eq_fm (Gt a) (NDvd (b, c)) = false
1.362 + | eq_fm (Gt a) (Nota b) = false
1.363 + | eq_fm (Gt a) (And (b, c)) = false
1.364 + | eq_fm (Gt a) (Or (b, c)) = false
1.365 + | eq_fm (Gt a) (Impa (b, c)) = false
1.366 + | eq_fm (Gt a) (Iffa (b, c)) = false
1.367 + | eq_fm (Gt a) (E b) = false
1.368 + | eq_fm (Gt a) (A b) = false
1.369 + | eq_fm (Gt a) (Closed b) = false
1.370 + | eq_fm (Gt a) (NClosed b) = false
1.371 + | eq_fm (Ge a) (Eq b) = false
1.372 + | eq_fm (Ge a) (NEq b) = false
1.373 + | eq_fm (Ge a) (Dvd (b, c)) = false
1.374 + | eq_fm (Ge a) (NDvd (b, c)) = false
1.375 + | eq_fm (Ge a) (Nota b) = false
1.376 + | eq_fm (Ge a) (And (b, c)) = false
1.377 + | eq_fm (Ge a) (Or (b, c)) = false
1.378 + | eq_fm (Ge a) (Impa (b, c)) = false
1.379 + | eq_fm (Ge a) (Iffa (b, c)) = false
1.380 + | eq_fm (Ge a) (E b) = false
1.381 + | eq_fm (Ge a) (A b) = false
1.382 + | eq_fm (Ge a) (Closed b) = false
1.383 + | eq_fm (Ge a) (NClosed b) = false
1.384 + | eq_fm (Eq a) (NEq b) = false
1.385 + | eq_fm (Eq a) (Dvd (b, c)) = false
1.386 + | eq_fm (Eq a) (NDvd (b, c)) = false
1.387 + | eq_fm (Eq a) (Nota b) = false
1.388 + | eq_fm (Eq a) (And (b, c)) = false
1.389 + | eq_fm (Eq a) (Or (b, c)) = false
1.390 + | eq_fm (Eq a) (Impa (b, c)) = false
1.391 + | eq_fm (Eq a) (Iffa (b, c)) = false
1.392 + | eq_fm (Eq a) (E b) = false
1.393 + | eq_fm (Eq a) (A b) = false
1.394 + | eq_fm (Eq a) (Closed b) = false
1.395 + | eq_fm (Eq a) (NClosed b) = false
1.396 + | eq_fm (NEq a) (Dvd (b, c)) = false
1.397 + | eq_fm (NEq a) (NDvd (b, c)) = false
1.398 + | eq_fm (NEq a) (Nota b) = false
1.399 + | eq_fm (NEq a) (And (b, c)) = false
1.400 + | eq_fm (NEq a) (Or (b, c)) = false
1.401 + | eq_fm (NEq a) (Impa (b, c)) = false
1.402 + | eq_fm (NEq a) (Iffa (b, c)) = false
1.403 + | eq_fm (NEq a) (E b) = false
1.404 + | eq_fm (NEq a) (A b) = false
1.405 + | eq_fm (NEq a) (Closed b) = false
1.406 + | eq_fm (NEq a) (NClosed b) = false
1.407 + | eq_fm (Dvd (a, b)) (NDvd (c, d)) = false
1.408 + | eq_fm (Dvd (a, b)) (Nota c) = false
1.409 + | eq_fm (Dvd (a, b)) (And (c, d)) = false
1.410 + | eq_fm (Dvd (a, b)) (Or (c, d)) = false
1.411 + | eq_fm (Dvd (a, b)) (Impa (c, d)) = false
1.412 + | eq_fm (Dvd (a, b)) (Iffa (c, d)) = false
1.413 + | eq_fm (Dvd (a, b)) (E c) = false
1.414 + | eq_fm (Dvd (a, b)) (A c) = false
1.415 + | eq_fm (Dvd (a, b)) (Closed c) = false
1.416 + | eq_fm (Dvd (a, b)) (NClosed c) = false
1.417 + | eq_fm (NDvd (a, b)) (Nota c) = false
1.418 + | eq_fm (NDvd (a, b)) (And (c, d)) = false
1.419 + | eq_fm (NDvd (a, b)) (Or (c, d)) = false
1.420 + | eq_fm (NDvd (a, b)) (Impa (c, d)) = false
1.421 + | eq_fm (NDvd (a, b)) (Iffa (c, d)) = false
1.422 + | eq_fm (NDvd (a, b)) (E c) = false
1.423 + | eq_fm (NDvd (a, b)) (A c) = false
1.424 + | eq_fm (NDvd (a, b)) (Closed c) = false
1.425 + | eq_fm (NDvd (a, b)) (NClosed c) = false
1.426 + | eq_fm (Nota a) (And (b, c)) = false
1.427 + | eq_fm (Nota a) (Or (b, c)) = false
1.428 + | eq_fm (Nota a) (Impa (b, c)) = false
1.429 + | eq_fm (Nota a) (Iffa (b, c)) = false
1.430 + | eq_fm (Nota a) (E b) = false
1.431 + | eq_fm (Nota a) (A b) = false
1.432 + | eq_fm (Nota a) (Closed b) = false
1.433 + | eq_fm (Nota a) (NClosed b) = false
1.434 + | eq_fm (And (a, b)) (Or (c, d)) = false
1.435 + | eq_fm (And (a, b)) (Impa (c, d)) = false
1.436 + | eq_fm (And (a, b)) (Iffa (c, d)) = false
1.437 + | eq_fm (And (a, b)) (E c) = false
1.438 + | eq_fm (And (a, b)) (A c) = false
1.439 + | eq_fm (And (a, b)) (Closed c) = false
1.440 + | eq_fm (And (a, b)) (NClosed c) = false
1.441 + | eq_fm (Or (a, b)) (Impa (c, d)) = false
1.442 + | eq_fm (Or (a, b)) (Iffa (c, d)) = false
1.443 + | eq_fm (Or (a, b)) (E c) = false
1.444 + | eq_fm (Or (a, b)) (A c) = false
1.445 + | eq_fm (Or (a, b)) (Closed c) = false
1.446 + | eq_fm (Or (a, b)) (NClosed c) = false
1.447 + | eq_fm (Impa (a, b)) (Iffa (c, d)) = false
1.448 + | eq_fm (Impa (a, b)) (E c) = false
1.449 + | eq_fm (Impa (a, b)) (A c) = false
1.450 + | eq_fm (Impa (a, b)) (Closed c) = false
1.451 + | eq_fm (Impa (a, b)) (NClosed c) = false
1.452 + | eq_fm (Iffa (a, b)) (E c) = false
1.453 + | eq_fm (Iffa (a, b)) (A c) = false
1.454 + | eq_fm (Iffa (a, b)) (Closed c) = false
1.455 + | eq_fm (Iffa (a, b)) (NClosed c) = false
1.456 + | eq_fm (E a) (A b) = false
1.457 + | eq_fm (E a) (Closed b) = false
1.458 + | eq_fm (E a) (NClosed b) = false
1.459 + | eq_fm (A a) (Closed b) = false
1.460 + | eq_fm (A a) (NClosed b) = false
1.461 + | eq_fm (Closed a) (NClosed b) = false
1.462 + | eq_fm F T = false
1.463 + | eq_fm (Lt a) T = false
1.464 + | eq_fm (Le a) T = false
1.465 + | eq_fm (Gt a) T = false
1.466 + | eq_fm (Ge a) T = false
1.467 + | eq_fm (Eq a) T = false
1.468 + | eq_fm (NEq a) T = false
1.469 + | eq_fm (Dvd (a, b)) T = false
1.470 + | eq_fm (NDvd (a, b)) T = false
1.471 + | eq_fm (Nota a) T = false
1.472 + | eq_fm (And (a, b)) T = false
1.473 + | eq_fm (Or (a, b)) T = false
1.474 + | eq_fm (Impa (a, b)) T = false
1.475 + | eq_fm (Iffa (a, b)) T = false
1.476 + | eq_fm (E a) T = false
1.477 + | eq_fm (A a) T = false
1.478 + | eq_fm (Closed a) T = false
1.479 + | eq_fm (NClosed a) T = false
1.480 + | eq_fm (Lt a) F = false
1.481 + | eq_fm (Le a) F = false
1.482 + | eq_fm (Gt a) F = false
1.483 + | eq_fm (Ge a) F = false
1.484 + | eq_fm (Eq a) F = false
1.485 + | eq_fm (NEq a) F = false
1.486 + | eq_fm (Dvd (a, b)) F = false
1.487 + | eq_fm (NDvd (a, b)) F = false
1.488 + | eq_fm (Nota a) F = false
1.489 + | eq_fm (And (a, b)) F = false
1.490 + | eq_fm (Or (a, b)) F = false
1.491 + | eq_fm (Impa (a, b)) F = false
1.492 + | eq_fm (Iffa (a, b)) F = false
1.493 + | eq_fm (E a) F = false
1.494 + | eq_fm (A a) F = false
1.495 + | eq_fm (Closed a) F = false
1.496 + | eq_fm (NClosed a) F = false
1.497 + | eq_fm (Le b) (Lt a) = false
1.498 + | eq_fm (Gt b) (Lt a) = false
1.499 + | eq_fm (Ge b) (Lt a) = false
1.500 + | eq_fm (Eq b) (Lt a) = false
1.501 + | eq_fm (NEq b) (Lt a) = false
1.502 + | eq_fm (Dvd (b, c)) (Lt a) = false
1.503 + | eq_fm (NDvd (b, c)) (Lt a) = false
1.504 + | eq_fm (Nota b) (Lt a) = false
1.505 + | eq_fm (And (b, c)) (Lt a) = false
1.506 + | eq_fm (Or (b, c)) (Lt a) = false
1.507 + | eq_fm (Impa (b, c)) (Lt a) = false
1.508 + | eq_fm (Iffa (b, c)) (Lt a) = false
1.509 + | eq_fm (E b) (Lt a) = false
1.510 + | eq_fm (A b) (Lt a) = false
1.511 + | eq_fm (Closed b) (Lt a) = false
1.512 + | eq_fm (NClosed b) (Lt a) = false
1.513 + | eq_fm (Gt b) (Le a) = false
1.514 + | eq_fm (Ge b) (Le a) = false
1.515 + | eq_fm (Eq b) (Le a) = false
1.516 + | eq_fm (NEq b) (Le a) = false
1.517 + | eq_fm (Dvd (b, c)) (Le a) = false
1.518 + | eq_fm (NDvd (b, c)) (Le a) = false
1.519 + | eq_fm (Nota b) (Le a) = false
1.520 + | eq_fm (And (b, c)) (Le a) = false
1.521 + | eq_fm (Or (b, c)) (Le a) = false
1.522 + | eq_fm (Impa (b, c)) (Le a) = false
1.523 + | eq_fm (Iffa (b, c)) (Le a) = false
1.524 + | eq_fm (E b) (Le a) = false
1.525 + | eq_fm (A b) (Le a) = false
1.526 + | eq_fm (Closed b) (Le a) = false
1.527 + | eq_fm (NClosed b) (Le a) = false
1.528 + | eq_fm (Ge b) (Gt a) = false
1.529 + | eq_fm (Eq b) (Gt a) = false
1.530 + | eq_fm (NEq b) (Gt a) = false
1.531 + | eq_fm (Dvd (b, c)) (Gt a) = false
1.532 + | eq_fm (NDvd (b, c)) (Gt a) = false
1.533 + | eq_fm (Nota b) (Gt a) = false
1.534 + | eq_fm (And (b, c)) (Gt a) = false
1.535 + | eq_fm (Or (b, c)) (Gt a) = false
1.536 + | eq_fm (Impa (b, c)) (Gt a) = false
1.537 + | eq_fm (Iffa (b, c)) (Gt a) = false
1.538 + | eq_fm (E b) (Gt a) = false
1.539 + | eq_fm (A b) (Gt a) = false
1.540 + | eq_fm (Closed b) (Gt a) = false
1.541 + | eq_fm (NClosed b) (Gt a) = false
1.542 + | eq_fm (Eq b) (Ge a) = false
1.543 + | eq_fm (NEq b) (Ge a) = false
1.544 + | eq_fm (Dvd (b, c)) (Ge a) = false
1.545 + | eq_fm (NDvd (b, c)) (Ge a) = false
1.546 + | eq_fm (Nota b) (Ge a) = false
1.547 + | eq_fm (And (b, c)) (Ge a) = false
1.548 + | eq_fm (Or (b, c)) (Ge a) = false
1.549 + | eq_fm (Impa (b, c)) (Ge a) = false
1.550 + | eq_fm (Iffa (b, c)) (Ge a) = false
1.551 + | eq_fm (E b) (Ge a) = false
1.552 + | eq_fm (A b) (Ge a) = false
1.553 + | eq_fm (Closed b) (Ge a) = false
1.554 + | eq_fm (NClosed b) (Ge a) = false
1.555 + | eq_fm (NEq b) (Eq a) = false
1.556 + | eq_fm (Dvd (b, c)) (Eq a) = false
1.557 + | eq_fm (NDvd (b, c)) (Eq a) = false
1.558 + | eq_fm (Nota b) (Eq a) = false
1.559 + | eq_fm (And (b, c)) (Eq a) = false
1.560 + | eq_fm (Or (b, c)) (Eq a) = false
1.561 + | eq_fm (Impa (b, c)) (Eq a) = false
1.562 + | eq_fm (Iffa (b, c)) (Eq a) = false
1.563 + | eq_fm (E b) (Eq a) = false
1.564 + | eq_fm (A b) (Eq a) = false
1.565 + | eq_fm (Closed b) (Eq a) = false
1.566 + | eq_fm (NClosed b) (Eq a) = false
1.567 + | eq_fm (Dvd (b, c)) (NEq a) = false
1.568 + | eq_fm (NDvd (b, c)) (NEq a) = false
1.569 + | eq_fm (Nota b) (NEq a) = false
1.570 + | eq_fm (And (b, c)) (NEq a) = false
1.571 + | eq_fm (Or (b, c)) (NEq a) = false
1.572 + | eq_fm (Impa (b, c)) (NEq a) = false
1.573 + | eq_fm (Iffa (b, c)) (NEq a) = false
1.574 + | eq_fm (E b) (NEq a) = false
1.575 + | eq_fm (A b) (NEq a) = false
1.576 + | eq_fm (Closed b) (NEq a) = false
1.577 + | eq_fm (NClosed b) (NEq a) = false
1.578 + | eq_fm (NDvd (c, d)) (Dvd (a, b)) = false
1.579 + | eq_fm (Nota c) (Dvd (a, b)) = false
1.580 + | eq_fm (And (c, d)) (Dvd (a, b)) = false
1.581 + | eq_fm (Or (c, d)) (Dvd (a, b)) = false
1.582 + | eq_fm (Impa (c, d)) (Dvd (a, b)) = false
1.583 + | eq_fm (Iffa (c, d)) (Dvd (a, b)) = false
1.584 + | eq_fm (E c) (Dvd (a, b)) = false
1.585 + | eq_fm (A c) (Dvd (a, b)) = false
1.586 + | eq_fm (Closed c) (Dvd (a, b)) = false
1.587 + | eq_fm (NClosed c) (Dvd (a, b)) = false
1.588 + | eq_fm (Nota c) (NDvd (a, b)) = false
1.589 + | eq_fm (And (c, d)) (NDvd (a, b)) = false
1.590 + | eq_fm (Or (c, d)) (NDvd (a, b)) = false
1.591 + | eq_fm (Impa (c, d)) (NDvd (a, b)) = false
1.592 + | eq_fm (Iffa (c, d)) (NDvd (a, b)) = false
1.593 + | eq_fm (E c) (NDvd (a, b)) = false
1.594 + | eq_fm (A c) (NDvd (a, b)) = false
1.595 + | eq_fm (Closed c) (NDvd (a, b)) = false
1.596 + | eq_fm (NClosed c) (NDvd (a, b)) = false
1.597 + | eq_fm (And (b, c)) (Nota a) = false
1.598 + | eq_fm (Or (b, c)) (Nota a) = false
1.599 + | eq_fm (Impa (b, c)) (Nota a) = false
1.600 + | eq_fm (Iffa (b, c)) (Nota a) = false
1.601 + | eq_fm (E b) (Nota a) = false
1.602 + | eq_fm (A b) (Nota a) = false
1.603 + | eq_fm (Closed b) (Nota a) = false
1.604 + | eq_fm (NClosed b) (Nota a) = false
1.605 + | eq_fm (Or (c, d)) (And (a, b)) = false
1.606 + | eq_fm (Impa (c, d)) (And (a, b)) = false
1.607 + | eq_fm (Iffa (c, d)) (And (a, b)) = false
1.608 + | eq_fm (E c) (And (a, b)) = false
1.609 + | eq_fm (A c) (And (a, b)) = false
1.610 + | eq_fm (Closed c) (And (a, b)) = false
1.611 + | eq_fm (NClosed c) (And (a, b)) = false
1.612 + | eq_fm (Impa (c, d)) (Or (a, b)) = false
1.613 + | eq_fm (Iffa (c, d)) (Or (a, b)) = false
1.614 + | eq_fm (E c) (Or (a, b)) = false
1.615 + | eq_fm (A c) (Or (a, b)) = false
1.616 + | eq_fm (Closed c) (Or (a, b)) = false
1.617 + | eq_fm (NClosed c) (Or (a, b)) = false
1.618 + | eq_fm (Iffa (c, d)) (Impa (a, b)) = false
1.619 + | eq_fm (E c) (Impa (a, b)) = false
1.620 + | eq_fm (A c) (Impa (a, b)) = false
1.621 + | eq_fm (Closed c) (Impa (a, b)) = false
1.622 + | eq_fm (NClosed c) (Impa (a, b)) = false
1.623 + | eq_fm (E c) (Iffa (a, b)) = false
1.624 + | eq_fm (A c) (Iffa (a, b)) = false
1.625 + | eq_fm (Closed c) (Iffa (a, b)) = false
1.626 + | eq_fm (NClosed c) (Iffa (a, b)) = false
1.627 + | eq_fm (A b) (E a) = false
1.628 + | eq_fm (Closed b) (E a) = false
1.629 + | eq_fm (NClosed b) (E a) = false
1.630 + | eq_fm (Closed b) (A a) = false
1.631 + | eq_fm (NClosed b) (A a) = false
1.632 + | eq_fm (NClosed b) (Closed a) = false;
1.633 +
1.634 +fun djf f p q =
1.635 + (if eq_fm q T then T
1.636 + else (if eq_fm q F then f p
1.637 + else (case f p of T => T | F => q | Lt num => Or (f p, q)
1.638 + | Le num => Or (f p, q) | Gt num => Or (f p, q)
1.639 + | Ge num => Or (f p, q) | Eq num => Or (f p, q)
1.640 + | NEq num => Or (f p, q) | Dvd (int, num) => Or (f p, q)
1.641 + | NDvd (int, num) => Or (f p, q) | Nota fm => Or (f p, q)
1.642 + | And (fm1, fm2) => Or (f p, q)
1.643 + | Or (fm1, fm2) => Or (f p, q)
1.644 + | Impa (fm1, fm2) => Or (f p, q)
1.645 + | Iffa (fm1, fm2) => Or (f p, q) | E fm => Or (f p, q)
1.646 + | A fm => Or (f p, q) | Closed nat => Or (f p, q)
1.647 + | NClosed nat => Or (f p, q))));
1.648 +
1.649 +fun evaldjf f ps = List.foldr (djf f) ps F;
1.650 +
1.651 +fun dj f p = evaldjf f (disjuncts p);
1.652 +
1.653 +fun zsplit0 (Mul (i, a)) =
1.654 + let
1.655 + val (i', a') = zsplit0 a;
1.656 + in
1.657 + (IntInf.* (i, i'), Mul (i, a'))
1.658 + end
1.659 + | zsplit0 (Sub (a, b)) =
1.660 + let
1.661 + val (ia, a') = zsplit0 a;
1.662 + val (ib, b') = zsplit0 b;
1.663 + in
1.664 + (IntInf.- (ia, ib), Sub (a', b'))
1.665 + end
1.666 + | zsplit0 (Add (a, b)) =
1.667 + let
1.668 + val (ia, a') = zsplit0 a;
1.669 + val (ib, b') = zsplit0 b;
1.670 + in
1.671 + (IntInf.+ (ia, ib), Add (a', b'))
1.672 + end
1.673 + | zsplit0 (Neg a) =
1.674 + let
1.675 + val (i', a') = zsplit0 a;
1.676 + in
1.677 + (IntInf.~ i', Neg a')
1.678 + end
1.679 + | zsplit0 (Cx (i, a)) =
1.680 + let
1.681 + val (i', aa) = zsplit0 a;
1.682 + in
1.683 + (IntInf.+ (i, i'), aa)
1.684 + end
1.685 + | zsplit0 (Bound n) =
1.686 + (if ((n : IntInf.int) = Integer.zero_nat)
1.687 + then ((1 : IntInf.int), C (0 : IntInf.int))
1.688 + else ((0 : IntInf.int), Bound n))
1.689 + | zsplit0 (C c) = ((0 : IntInf.int), C c);
1.690 +
1.691 +fun zlfm (NClosed ar) = NClosed ar
1.692 + | zlfm (Closed aq) = Closed aq
1.693 + | zlfm (A ap) = A ap
1.694 + | zlfm (E ao) = E ao
1.695 + | zlfm (Nota (A cj)) = Nota (A cj)
1.696 + | zlfm (Nota (E ci)) = Nota (E ci)
1.697 + | zlfm F = F
1.698 + | zlfm T = T
1.699 + | zlfm (Nota (NClosed p)) = Closed p
1.700 + | zlfm (Nota (Closed p)) = NClosed p
1.701 + | zlfm (Nota (NDvd (i, a))) = zlfm (Dvd (i, a))
1.702 + | zlfm (Nota (Dvd (i, a))) = zlfm (NDvd (i, a))
1.703 + | zlfm (Nota (NEq a)) = zlfm (Eq a)
1.704 + | zlfm (Nota (Eq a)) = zlfm (NEq a)
1.705 + | zlfm (Nota (Ge a)) = zlfm (Lt a)
1.706 + | zlfm (Nota (Gt a)) = zlfm (Le a)
1.707 + | zlfm (Nota (Le a)) = zlfm (Gt a)
1.708 + | zlfm (Nota (Lt a)) = zlfm (Ge a)
1.709 + | zlfm (Nota F) = T
1.710 + | zlfm (Nota T) = F
1.711 + | zlfm (Nota (Nota p)) = zlfm p
1.712 + | zlfm (Nota (Iffa (p, q))) =
1.713 + Or (And (zlfm p, zlfm (Nota q)), And (zlfm (Nota p), zlfm q))
1.714 + | zlfm (Nota (Impa (p, q))) = And (zlfm p, zlfm (Nota q))
1.715 + | zlfm (Nota (Or (p, q))) = And (zlfm (Nota p), zlfm (Nota q))
1.716 + | zlfm (Nota (And (p, q))) = Or (zlfm (Nota p), zlfm (Nota q))
1.717 + | zlfm (NDvd (i, a)) =
1.718 + (if ((i : IntInf.int) = (0 : IntInf.int)) then zlfm (NEq a)
1.719 + else let
1.720 + val (c, r) = zsplit0 a;
1.721 + in
1.722 + (if ((c : IntInf.int) = (0 : IntInf.int))
1.723 + then NDvd (Integer.abs_int i, r)
1.724 + else (if IntInf.< ((0 : IntInf.int), c)
1.725 + then NDvd (Integer.abs_int i, Cx (c, r))
1.726 + else NDvd (Integer.abs_int i, Cx (IntInf.~ c, Neg r))))
1.727 + end)
1.728 + | zlfm (Dvd (i, a)) =
1.729 + (if ((i : IntInf.int) = (0 : IntInf.int)) then zlfm (Eq a)
1.730 + else let
1.731 + val (c, r) = zsplit0 a;
1.732 + in
1.733 + (if ((c : IntInf.int) = (0 : IntInf.int))
1.734 + then Dvd (Integer.abs_int i, r)
1.735 + else (if IntInf.< ((0 : IntInf.int), c)
1.736 + then Dvd (Integer.abs_int i, Cx (c, r))
1.737 + else Dvd (Integer.abs_int i, Cx (IntInf.~ c, Neg r))))
1.738 + end)
1.739 + | zlfm (NEq a) =
1.740 + let
1.741 + val (c, r) = zsplit0 a;
1.742 + in
1.743 + (if ((c : IntInf.int) = (0 : IntInf.int)) then NEq r
1.744 + else (if IntInf.< ((0 : IntInf.int), c) then NEq (Cx (c, r))
1.745 + else NEq (Cx (IntInf.~ c, Neg r))))
1.746 + end
1.747 + | zlfm (Eq a) =
1.748 + let
1.749 + val (c, r) = zsplit0 a;
1.750 + in
1.751 + (if ((c : IntInf.int) = (0 : IntInf.int)) then Eq r
1.752 + else (if IntInf.< ((0 : IntInf.int), c) then Eq (Cx (c, r))
1.753 + else Eq (Cx (IntInf.~ c, Neg r))))
1.754 + end
1.755 + | zlfm (Ge a) =
1.756 + let
1.757 + val (c, r) = zsplit0 a;
1.758 + in
1.759 + (if ((c : IntInf.int) = (0 : IntInf.int)) then Ge r
1.760 + else (if IntInf.< ((0 : IntInf.int), c) then Ge (Cx (c, r))
1.761 + else Le (Cx (IntInf.~ c, Neg r))))
1.762 + end
1.763 + | zlfm (Gt a) =
1.764 + let
1.765 + val (c, r) = zsplit0 a;
1.766 + in
1.767 + (if ((c : IntInf.int) = (0 : IntInf.int)) then Gt r
1.768 + else (if IntInf.< ((0 : IntInf.int), c) then Gt (Cx (c, r))
1.769 + else Lt (Cx (IntInf.~ c, Neg r))))
1.770 + end
1.771 + | zlfm (Le a) =
1.772 + let
1.773 + val (c, r) = zsplit0 a;
1.774 + in
1.775 + (if ((c : IntInf.int) = (0 : IntInf.int)) then Le r
1.776 + else (if IntInf.< ((0 : IntInf.int), c) then Le (Cx (c, r))
1.777 + else Ge (Cx (IntInf.~ c, Neg r))))
1.778 + end
1.779 + | zlfm (Lt a) =
1.780 + let
1.781 + val (c, r) = zsplit0 a;
1.782 + in
1.783 + (if ((c : IntInf.int) = (0 : IntInf.int)) then Lt r
1.784 + else (if IntInf.< ((0 : IntInf.int), c) then Lt (Cx (c, r))
1.785 + else Gt (Cx (IntInf.~ c, Neg r))))
1.786 + end
1.787 + | zlfm (Iffa (p, q)) =
1.788 + Or (And (zlfm p, zlfm q), And (zlfm (Nota p), zlfm (Nota q)))
1.789 + | zlfm (Impa (p, q)) = Or (zlfm (Nota p), zlfm q)
1.790 + | zlfm (Or (p, q)) = Or (zlfm p, zlfm q)
1.791 + | zlfm (And (p, q)) = And (zlfm p, zlfm q);
1.792 +
1.793 +fun zeta (NClosed aq) = (1 : IntInf.int)
1.794 + | zeta (Closed ap) = (1 : IntInf.int)
1.795 + | zeta (A ao) = (1 : IntInf.int)
1.796 + | zeta (E an) = (1 : IntInf.int)
1.797 + | zeta (Iffa (al, am)) = (1 : IntInf.int)
1.798 + | zeta (Impa (aj, ak)) = (1 : IntInf.int)
1.799 + | zeta (Nota ae) = (1 : IntInf.int)
1.800 + | zeta (NDvd (ac, Mul (hv, hw))) = (1 : IntInf.int)
1.801 + | zeta (NDvd (ac, Sub (ht, hu))) = (1 : IntInf.int)
1.802 + | zeta (NDvd (ac, Add (hr, hs))) = (1 : IntInf.int)
1.803 + | zeta (NDvd (ac, Neg hq)) = (1 : IntInf.int)
1.804 + | zeta (NDvd (ac, Bound hn)) = (1 : IntInf.int)
1.805 + | zeta (NDvd (ac, C hm)) = (1 : IntInf.int)
1.806 + | zeta (Dvd (aa, Mul (gz, ha))) = (1 : IntInf.int)
1.807 + | zeta (Dvd (aa, Sub (gx, gy))) = (1 : IntInf.int)
1.808 + | zeta (Dvd (aa, Add (gv, gw))) = (1 : IntInf.int)
1.809 + | zeta (Dvd (aa, Neg gu)) = (1 : IntInf.int)
1.810 + | zeta (Dvd (aa, Bound gr)) = (1 : IntInf.int)
1.811 + | zeta (Dvd (aa, C gq)) = (1 : IntInf.int)
1.812 + | zeta (NEq (Mul (gd, ge))) = (1 : IntInf.int)
1.813 + | zeta (NEq (Sub (gb, gc))) = (1 : IntInf.int)
1.814 + | zeta (NEq (Add (fz, ga))) = (1 : IntInf.int)
1.815 + | zeta (NEq (Neg fy)) = (1 : IntInf.int)
1.816 + | zeta (NEq (Bound fv)) = (1 : IntInf.int)
1.817 + | zeta (NEq (C fu)) = (1 : IntInf.int)
1.818 + | zeta (Eq (Mul (fh, fi))) = (1 : IntInf.int)
1.819 + | zeta (Eq (Sub (ff, fg))) = (1 : IntInf.int)
1.820 + | zeta (Eq (Add (fd, fe))) = (1 : IntInf.int)
1.821 + | zeta (Eq (Neg fc)) = (1 : IntInf.int)
1.822 + | zeta (Eq (Bound ez)) = (1 : IntInf.int)
1.823 + | zeta (Eq (C ey)) = (1 : IntInf.int)
1.824 + | zeta (Ge (Mul (el, em))) = (1 : IntInf.int)
1.825 + | zeta (Ge (Sub (ej, ek))) = (1 : IntInf.int)
1.826 + | zeta (Ge (Add (eh, ei))) = (1 : IntInf.int)
1.827 + | zeta (Ge (Neg eg)) = (1 : IntInf.int)
1.828 + | zeta (Ge (Bound ed)) = (1 : IntInf.int)
1.829 + | zeta (Ge (C ec)) = (1 : IntInf.int)
1.830 + | zeta (Gt (Mul (dp, dq))) = (1 : IntInf.int)
1.831 + | zeta (Gt (Sub (dn, doa))) = (1 : IntInf.int)
1.832 + | zeta (Gt (Add (dl, dm))) = (1 : IntInf.int)
1.833 + | zeta (Gt (Neg dk)) = (1 : IntInf.int)
1.834 + | zeta (Gt (Bound dh)) = (1 : IntInf.int)
1.835 + | zeta (Gt (C dg)) = (1 : IntInf.int)
1.836 + | zeta (Le (Mul (ct, cu))) = (1 : IntInf.int)
1.837 + | zeta (Le (Sub (cr, cs))) = (1 : IntInf.int)
1.838 + | zeta (Le (Add (cp, cq))) = (1 : IntInf.int)
1.839 + | zeta (Le (Neg co)) = (1 : IntInf.int)
1.840 + | zeta (Le (Bound cl)) = (1 : IntInf.int)
1.841 + | zeta (Le (C ck)) = (1 : IntInf.int)
1.842 + | zeta (Lt (Mul (bx, by))) = (1 : IntInf.int)
1.843 + | zeta (Lt (Sub (bv, bw))) = (1 : IntInf.int)
1.844 + | zeta (Lt (Add (bt, bu))) = (1 : IntInf.int)
1.845 + | zeta (Lt (Neg bs)) = (1 : IntInf.int)
1.846 + | zeta (Lt (Bound bp)) = (1 : IntInf.int)
1.847 + | zeta (Lt (C bo)) = (1 : IntInf.int)
1.848 + | zeta F = (1 : IntInf.int)
1.849 + | zeta T = (1 : IntInf.int)
1.850 + | zeta (NDvd (i, Cx (y, e))) = y
1.851 + | zeta (Dvd (i, Cx (y, e))) = y
1.852 + | zeta (Ge (Cx (y, e))) = y
1.853 + | zeta (Gt (Cx (y, e))) = y
1.854 + | zeta (Le (Cx (y, e))) = y
1.855 + | zeta (Lt (Cx (y, e))) = y
1.856 + | zeta (NEq (Cx (y, e))) = y
1.857 + | zeta (Eq (Cx (y, e))) = y
1.858 + | zeta (Or (p, q)) = GCD.ilcm (zeta p) (zeta q)
1.859 + | zeta (And (p, q)) = GCD.ilcm (zeta p) (zeta q);
1.860 +
1.861 +fun a_beta (NClosed aq) = (fn k => NClosed aq)
1.862 + | a_beta (Closed ap) = (fn k => Closed ap)
1.863 + | a_beta (A ao) = (fn k => A ao)
1.864 + | a_beta (E an) = (fn k => E an)
1.865 + | a_beta (Iffa (al, am)) = (fn k => Iffa (al, am))
1.866 + | a_beta (Impa (aj, ak)) = (fn k => Impa (aj, ak))
1.867 + | a_beta (Nota ae) = (fn k => Nota ae)
1.868 + | a_beta (NDvd (ac, Mul (hv, hw))) = (fn k => NDvd (ac, Mul (hv, hw)))
1.869 + | a_beta (NDvd (ac, Sub (ht, hu))) = (fn k => NDvd (ac, Sub (ht, hu)))
1.870 + | a_beta (NDvd (ac, Add (hr, hs))) = (fn k => NDvd (ac, Add (hr, hs)))
1.871 + | a_beta (NDvd (ac, Neg hq)) = (fn k => NDvd (ac, Neg hq))
1.872 + | a_beta (NDvd (ac, Bound hn)) = (fn k => NDvd (ac, Bound hn))
1.873 + | a_beta (NDvd (ac, C hm)) = (fn k => NDvd (ac, C hm))
1.874 + | a_beta (Dvd (aa, Mul (gz, ha))) = (fn k => Dvd (aa, Mul (gz, ha)))
1.875 + | a_beta (Dvd (aa, Sub (gx, gy))) = (fn k => Dvd (aa, Sub (gx, gy)))
1.876 + | a_beta (Dvd (aa, Add (gv, gw))) = (fn k => Dvd (aa, Add (gv, gw)))
1.877 + | a_beta (Dvd (aa, Neg gu)) = (fn k => Dvd (aa, Neg gu))
1.878 + | a_beta (Dvd (aa, Bound gr)) = (fn k => Dvd (aa, Bound gr))
1.879 + | a_beta (Dvd (aa, C gq)) = (fn k => Dvd (aa, C gq))
1.880 + | a_beta (NEq (Mul (gd, ge))) = (fn k => NEq (Mul (gd, ge)))
1.881 + | a_beta (NEq (Sub (gb, gc))) = (fn k => NEq (Sub (gb, gc)))
1.882 + | a_beta (NEq (Add (fz, ga))) = (fn k => NEq (Add (fz, ga)))
1.883 + | a_beta (NEq (Neg fy)) = (fn k => NEq (Neg fy))
1.884 + | a_beta (NEq (Bound fv)) = (fn k => NEq (Bound fv))
1.885 + | a_beta (NEq (C fu)) = (fn k => NEq (C fu))
1.886 + | a_beta (Eq (Mul (fh, fi))) = (fn k => Eq (Mul (fh, fi)))
1.887 + | a_beta (Eq (Sub (ff, fg))) = (fn k => Eq (Sub (ff, fg)))
1.888 + | a_beta (Eq (Add (fd, fe))) = (fn k => Eq (Add (fd, fe)))
1.889 + | a_beta (Eq (Neg fc)) = (fn k => Eq (Neg fc))
1.890 + | a_beta (Eq (Bound ez)) = (fn k => Eq (Bound ez))
1.891 + | a_beta (Eq (C ey)) = (fn k => Eq (C ey))
1.892 + | a_beta (Ge (Mul (el, em))) = (fn k => Ge (Mul (el, em)))
1.893 + | a_beta (Ge (Sub (ej, ek))) = (fn k => Ge (Sub (ej, ek)))
1.894 + | a_beta (Ge (Add (eh, ei))) = (fn k => Ge (Add (eh, ei)))
1.895 + | a_beta (Ge (Neg eg)) = (fn k => Ge (Neg eg))
1.896 + | a_beta (Ge (Bound ed)) = (fn k => Ge (Bound ed))
1.897 + | a_beta (Ge (C ec)) = (fn k => Ge (C ec))
1.898 + | a_beta (Gt (Mul (dp, dq))) = (fn k => Gt (Mul (dp, dq)))
1.899 + | a_beta (Gt (Sub (dn, doa))) = (fn k => Gt (Sub (dn, doa)))
1.900 + | a_beta (Gt (Add (dl, dm))) = (fn k => Gt (Add (dl, dm)))
1.901 + | a_beta (Gt (Neg dk)) = (fn k => Gt (Neg dk))
1.902 + | a_beta (Gt (Bound dh)) = (fn k => Gt (Bound dh))
1.903 + | a_beta (Gt (C dg)) = (fn k => Gt (C dg))
1.904 + | a_beta (Le (Mul (ct, cu))) = (fn k => Le (Mul (ct, cu)))
1.905 + | a_beta (Le (Sub (cr, cs))) = (fn k => Le (Sub (cr, cs)))
1.906 + | a_beta (Le (Add (cp, cq))) = (fn k => Le (Add (cp, cq)))
1.907 + | a_beta (Le (Neg co)) = (fn k => Le (Neg co))
1.908 + | a_beta (Le (Bound cl)) = (fn k => Le (Bound cl))
1.909 + | a_beta (Le (C ck)) = (fn k => Le (C ck))
1.910 + | a_beta (Lt (Mul (bx, by))) = (fn k => Lt (Mul (bx, by)))
1.911 + | a_beta (Lt (Sub (bv, bw))) = (fn k => Lt (Sub (bv, bw)))
1.912 + | a_beta (Lt (Add (bt, bu))) = (fn k => Lt (Add (bt, bu)))
1.913 + | a_beta (Lt (Neg bs)) = (fn k => Lt (Neg bs))
1.914 + | a_beta (Lt (Bound bp)) = (fn k => Lt (Bound bp))
1.915 + | a_beta (Lt (C bo)) = (fn k => Lt (C bo))
1.916 + | a_beta F = (fn k => F)
1.917 + | a_beta T = (fn k => T)
1.918 + | a_beta (NDvd (i, Cx (c, e))) =
1.919 + (fn k =>
1.920 + NDvd (IntInf.* (Integer.div_int k c, i),
1.921 + Cx ((1 : IntInf.int), Mul (Integer.div_int k c, e))))
1.922 + | a_beta (Dvd (i, Cx (c, e))) =
1.923 + (fn k =>
1.924 + Dvd (IntInf.* (Integer.div_int k c, i),
1.925 + Cx ((1 : IntInf.int), Mul (Integer.div_int k c, e))))
1.926 + | a_beta (Ge (Cx (c, e))) =
1.927 + (fn k => Ge (Cx ((1 : IntInf.int), Mul (Integer.div_int k c, e))))
1.928 + | a_beta (Gt (Cx (c, e))) =
1.929 + (fn k => Gt (Cx ((1 : IntInf.int), Mul (Integer.div_int k c, e))))
1.930 + | a_beta (Le (Cx (c, e))) =
1.931 + (fn k => Le (Cx ((1 : IntInf.int), Mul (Integer.div_int k c, e))))
1.932 + | a_beta (Lt (Cx (c, e))) =
1.933 + (fn k => Lt (Cx ((1 : IntInf.int), Mul (Integer.div_int k c, e))))
1.934 + | a_beta (NEq (Cx (c, e))) =
1.935 + (fn k => NEq (Cx ((1 : IntInf.int), Mul (Integer.div_int k c, e))))
1.936 + | a_beta (Eq (Cx (c, e))) =
1.937 + (fn k => Eq (Cx ((1 : IntInf.int), Mul (Integer.div_int k c, e))))
1.938 + | a_beta (Or (p, q)) = (fn k => Or (a_beta p k, a_beta q k))
1.939 + | a_beta (And (p, q)) = (fn k => And (a_beta p k, a_beta q k));
1.940 +
1.941 +fun delta (NClosed aq) = (1 : IntInf.int)
1.942 + | delta (Closed ap) = (1 : IntInf.int)
1.943 + | delta (A ao) = (1 : IntInf.int)
1.944 + | delta (E an) = (1 : IntInf.int)
1.945 + | delta (Iffa (al, am)) = (1 : IntInf.int)
1.946 + | delta (Impa (aj, ak)) = (1 : IntInf.int)
1.947 + | delta (Nota ae) = (1 : IntInf.int)
1.948 + | delta (NDvd (ac, Mul (ct, cu))) = (1 : IntInf.int)
1.949 + | delta (NDvd (ac, Sub (cr, cs))) = (1 : IntInf.int)
1.950 + | delta (NDvd (ac, Add (cp, cq))) = (1 : IntInf.int)
1.951 + | delta (NDvd (ac, Neg co)) = (1 : IntInf.int)
1.952 + | delta (NDvd (ac, Bound cl)) = (1 : IntInf.int)
1.953 + | delta (NDvd (ac, C ck)) = (1 : IntInf.int)
1.954 + | delta (Dvd (aa, Mul (bx, by))) = (1 : IntInf.int)
1.955 + | delta (Dvd (aa, Sub (bv, bw))) = (1 : IntInf.int)
1.956 + | delta (Dvd (aa, Add (bt, bu))) = (1 : IntInf.int)
1.957 + | delta (Dvd (aa, Neg bs)) = (1 : IntInf.int)
1.958 + | delta (Dvd (aa, Bound bp)) = (1 : IntInf.int)
1.959 + | delta (Dvd (aa, C bo)) = (1 : IntInf.int)
1.960 + | delta (NEq z) = (1 : IntInf.int)
1.961 + | delta (Eq y) = (1 : IntInf.int)
1.962 + | delta (Ge x) = (1 : IntInf.int)
1.963 + | delta (Gt w) = (1 : IntInf.int)
1.964 + | delta (Le v) = (1 : IntInf.int)
1.965 + | delta (Lt u) = (1 : IntInf.int)
1.966 + | delta F = (1 : IntInf.int)
1.967 + | delta T = (1 : IntInf.int)
1.968 + | delta (NDvd (y, Cx (c, e))) = y
1.969 + | delta (Dvd (y, Cx (c, e))) = y
1.970 + | delta (Or (p, q)) = GCD.ilcm (delta p) (delta q)
1.971 + | delta (And (p, q)) = GCD.ilcm (delta p) (delta q);
1.972 +
1.973 +fun beta (NClosed aq) = []
1.974 + | beta (Closed ap) = []
1.975 + | beta (A ao) = []
1.976 + | beta (E an) = []
1.977 + | beta (Iffa (al, am)) = []
1.978 + | beta (Impa (aj, ak)) = []
1.979 + | beta (Nota ae) = []
1.980 + | beta (NDvd (ac, ad)) = []
1.981 + | beta (Dvd (aa, ab)) = []
1.982 + | beta (NEq (Mul (gd, ge))) = []
1.983 + | beta (NEq (Sub (gb, gc))) = []
1.984 + | beta (NEq (Add (fz, ga))) = []
1.985 + | beta (NEq (Neg fy)) = []
1.986 + | beta (NEq (Bound fv)) = []
1.987 + | beta (NEq (C fu)) = []
1.988 + | beta (Eq (Mul (fh, fi))) = []
1.989 + | beta (Eq (Sub (ff, fg))) = []
1.990 + | beta (Eq (Add (fd, fe))) = []
1.991 + | beta (Eq (Neg fc)) = []
1.992 + | beta (Eq (Bound ez)) = []
1.993 + | beta (Eq (C ey)) = []
1.994 + | beta (Ge (Mul (el, em))) = []
1.995 + | beta (Ge (Sub (ej, ek))) = []
1.996 + | beta (Ge (Add (eh, ei))) = []
1.997 + | beta (Ge (Neg eg)) = []
1.998 + | beta (Ge (Bound ed)) = []
1.999 + | beta (Ge (C ec)) = []
1.1000 + | beta (Gt (Mul (dp, dq))) = []
1.1001 + | beta (Gt (Sub (dn, doa))) = []
1.1002 + | beta (Gt (Add (dl, dm))) = []
1.1003 + | beta (Gt (Neg dk)) = []
1.1004 + | beta (Gt (Bound dh)) = []
1.1005 + | beta (Gt (C dg)) = []
1.1006 + | beta (Le (Mul (ct, cu))) = []
1.1007 + | beta (Le (Sub (cr, cs))) = []
1.1008 + | beta (Le (Add (cp, cq))) = []
1.1009 + | beta (Le (Neg co)) = []
1.1010 + | beta (Le (Bound cl)) = []
1.1011 + | beta (Le (C ck)) = []
1.1012 + | beta (Lt (Mul (bx, by))) = []
1.1013 + | beta (Lt (Sub (bv, bw))) = []
1.1014 + | beta (Lt (Add (bt, bu))) = []
1.1015 + | beta (Lt (Neg bs)) = []
1.1016 + | beta (Lt (Bound bp)) = []
1.1017 + | beta (Lt (C bo)) = []
1.1018 + | beta F = []
1.1019 + | beta T = []
1.1020 + | beta (Ge (Cx (c, e))) = [Sub (C (~1 : IntInf.int), e)]
1.1021 + | beta (Gt (Cx (c, e))) = [Neg e]
1.1022 + | beta (Le (Cx (c, e))) = []
1.1023 + | beta (Lt (Cx (c, e))) = []
1.1024 + | beta (NEq (Cx (c, e))) = [Neg e]
1.1025 + | beta (Eq (Cx (c, e))) = [Sub (C (~1 : IntInf.int), e)]
1.1026 + | beta (Or (p, q)) = List.append (beta p) (beta q)
1.1027 + | beta (And (p, q)) = List.append (beta p) (beta q);
1.1028 +
1.1029 +fun alpha (NClosed aq) = []
1.1030 + | alpha (Closed ap) = []
1.1031 + | alpha (A ao) = []
1.1032 + | alpha (E an) = []
1.1033 + | alpha (Iffa (al, am)) = []
1.1034 + | alpha (Impa (aj, ak)) = []
1.1035 + | alpha (Nota ae) = []
1.1036 + | alpha (NDvd (ac, ad)) = []
1.1037 + | alpha (Dvd (aa, ab)) = []
1.1038 + | alpha (NEq (Mul (gd, ge))) = []
1.1039 + | alpha (NEq (Sub (gb, gc))) = []
1.1040 + | alpha (NEq (Add (fz, ga))) = []
1.1041 + | alpha (NEq (Neg fy)) = []
1.1042 + | alpha (NEq (Bound fv)) = []
1.1043 + | alpha (NEq (C fu)) = []
1.1044 + | alpha (Eq (Mul (fh, fi))) = []
1.1045 + | alpha (Eq (Sub (ff, fg))) = []
1.1046 + | alpha (Eq (Add (fd, fe))) = []
1.1047 + | alpha (Eq (Neg fc)) = []
1.1048 + | alpha (Eq (Bound ez)) = []
1.1049 + | alpha (Eq (C ey)) = []
1.1050 + | alpha (Ge (Mul (el, em))) = []
1.1051 + | alpha (Ge (Sub (ej, ek))) = []
1.1052 + | alpha (Ge (Add (eh, ei))) = []
1.1053 + | alpha (Ge (Neg eg)) = []
1.1054 + | alpha (Ge (Bound ed)) = []
1.1055 + | alpha (Ge (C ec)) = []
1.1056 + | alpha (Gt (Mul (dp, dq))) = []
1.1057 + | alpha (Gt (Sub (dn, doa))) = []
1.1058 + | alpha (Gt (Add (dl, dm))) = []
1.1059 + | alpha (Gt (Neg dk)) = []
1.1060 + | alpha (Gt (Bound dh)) = []
1.1061 + | alpha (Gt (C dg)) = []
1.1062 + | alpha (Le (Mul (ct, cu))) = []
1.1063 + | alpha (Le (Sub (cr, cs))) = []
1.1064 + | alpha (Le (Add (cp, cq))) = []
1.1065 + | alpha (Le (Neg co)) = []
1.1066 + | alpha (Le (Bound cl)) = []
1.1067 + | alpha (Le (C ck)) = []
1.1068 + | alpha (Lt (Mul (bx, by))) = []
1.1069 + | alpha (Lt (Sub (bv, bw))) = []
1.1070 + | alpha (Lt (Add (bt, bu))) = []
1.1071 + | alpha (Lt (Neg bs)) = []
1.1072 + | alpha (Lt (Bound bp)) = []
1.1073 + | alpha (Lt (C bo)) = []
1.1074 + | alpha F = []
1.1075 + | alpha T = []
1.1076 + | alpha (Ge (Cx (c, e))) = []
1.1077 + | alpha (Gt (Cx (c, e))) = []
1.1078 + | alpha (Le (Cx (c, e))) = [Add (C (~1 : IntInf.int), e)]
1.1079 + | alpha (Lt (Cx (c, e))) = [e]
1.1080 + | alpha (NEq (Cx (c, e))) = [e]
1.1081 + | alpha (Eq (Cx (c, e))) = [Add (C (~1 : IntInf.int), e)]
1.1082 + | alpha (Or (p, q)) = List.append (alpha p) (alpha q)
1.1083 + | alpha (And (p, q)) = List.append (alpha p) (alpha q);
1.1084 +
1.1085 +fun numadd (Mul (ar, asa), Mul (aza, azb)) = Add (Mul (ar, asa), Mul (aza, azb))
1.1086 + | numadd (Mul (ar, asa), Sub (ayy, ayz)) = Add (Mul (ar, asa), Sub (ayy, ayz))
1.1087 + | numadd (Mul (ar, asa), Add (Mul (azw, Mul (bas, bat)), ayx)) =
1.1088 + Add (Mul (ar, asa), Add (Mul (azw, Mul (bas, bat)), ayx))
1.1089 + | numadd (Mul (ar, asa), Add (Mul (azw, Sub (baq, bar)), ayx)) =
1.1090 + Add (Mul (ar, asa), Add (Mul (azw, Sub (baq, bar)), ayx))
1.1091 + | numadd (Mul (ar, asa), Add (Mul (azw, Add (bao, bap)), ayx)) =
1.1092 + Add (Mul (ar, asa), Add (Mul (azw, Add (bao, bap)), ayx))
1.1093 + | numadd (Mul (ar, asa), Add (Mul (azw, Neg ban), ayx)) =
1.1094 + Add (Mul (ar, asa), Add (Mul (azw, Neg ban), ayx))
1.1095 + | numadd (Mul (ar, asa), Add (Mul (azw, Cx (bal, bam)), ayx)) =
1.1096 + Add (Mul (ar, asa), Add (Mul (azw, Cx (bal, bam)), ayx))
1.1097 + | numadd (Mul (ar, asa), Add (Mul (azw, C baj), ayx)) =
1.1098 + Add (Mul (ar, asa), Add (Mul (azw, C baj), ayx))
1.1099 + | numadd (Mul (ar, asa), Add (Sub (azu, azv), ayx)) =
1.1100 + Add (Mul (ar, asa), Add (Sub (azu, azv), ayx))
1.1101 + | numadd (Mul (ar, asa), Add (Add (azs, azt), ayx)) =
1.1102 + Add (Mul (ar, asa), Add (Add (azs, azt), ayx))
1.1103 + | numadd (Mul (ar, asa), Add (Neg azr, ayx)) =
1.1104 + Add (Mul (ar, asa), Add (Neg azr, ayx))
1.1105 + | numadd (Mul (ar, asa), Add (Cx (azp, azq), ayx)) =
1.1106 + Add (Mul (ar, asa), Add (Cx (azp, azq), ayx))
1.1107 + | numadd (Mul (ar, asa), Add (Bound azo, ayx)) =
1.1108 + Add (Mul (ar, asa), Add (Bound azo, ayx))
1.1109 + | numadd (Mul (ar, asa), Add (C azn, ayx)) =
1.1110 + Add (Mul (ar, asa), Add (C azn, ayx))
1.1111 + | numadd (Mul (ar, asa), Neg ayv) = Add (Mul (ar, asa), Neg ayv)
1.1112 + | numadd (Mul (ar, asa), Cx (ayt, ayu)) = Add (Mul (ar, asa), Cx (ayt, ayu))
1.1113 + | numadd (Mul (ar, asa), Bound ays) = Add (Mul (ar, asa), Bound ays)
1.1114 + | numadd (Mul (ar, asa), C ayr) = Add (Mul (ar, asa), C ayr)
1.1115 + | numadd (Sub (ap, aq), Mul (awm, awn)) = Add (Sub (ap, aq), Mul (awm, awn))
1.1116 + | numadd (Sub (ap, aq), Sub (awk, awl)) = Add (Sub (ap, aq), Sub (awk, awl))
1.1117 + | numadd (Sub (ap, aq), Add (Mul (axi, Mul (aye, ayf)), awj)) =
1.1118 + Add (Sub (ap, aq), Add (Mul (axi, Mul (aye, ayf)), awj))
1.1119 + | numadd (Sub (ap, aq), Add (Mul (axi, Sub (ayc, ayd)), awj)) =
1.1120 + Add (Sub (ap, aq), Add (Mul (axi, Sub (ayc, ayd)), awj))
1.1121 + | numadd (Sub (ap, aq), Add (Mul (axi, Add (aya, ayb)), awj)) =
1.1122 + Add (Sub (ap, aq), Add (Mul (axi, Add (aya, ayb)), awj))
1.1123 + | numadd (Sub (ap, aq), Add (Mul (axi, Neg axz), awj)) =
1.1124 + Add (Sub (ap, aq), Add (Mul (axi, Neg axz), awj))
1.1125 + | numadd (Sub (ap, aq), Add (Mul (axi, Cx (axx, axy)), awj)) =
1.1126 + Add (Sub (ap, aq), Add (Mul (axi, Cx (axx, axy)), awj))
1.1127 + | numadd (Sub (ap, aq), Add (Mul (axi, C axv), awj)) =
1.1128 + Add (Sub (ap, aq), Add (Mul (axi, C axv), awj))
1.1129 + | numadd (Sub (ap, aq), Add (Sub (axg, axh), awj)) =
1.1130 + Add (Sub (ap, aq), Add (Sub (axg, axh), awj))
1.1131 + | numadd (Sub (ap, aq), Add (Add (axe, axf), awj)) =
1.1132 + Add (Sub (ap, aq), Add (Add (axe, axf), awj))
1.1133 + | numadd (Sub (ap, aq), Add (Neg axd, awj)) =
1.1134 + Add (Sub (ap, aq), Add (Neg axd, awj))
1.1135 + | numadd (Sub (ap, aq), Add (Cx (axb, axc), awj)) =
1.1136 + Add (Sub (ap, aq), Add (Cx (axb, axc), awj))
1.1137 + | numadd (Sub (ap, aq), Add (Bound axa, awj)) =
1.1138 + Add (Sub (ap, aq), Add (Bound axa, awj))
1.1139 + | numadd (Sub (ap, aq), Add (C awz, awj)) =
1.1140 + Add (Sub (ap, aq), Add (C awz, awj))
1.1141 + | numadd (Sub (ap, aq), Neg awh) = Add (Sub (ap, aq), Neg awh)
1.1142 + | numadd (Sub (ap, aq), Cx (awf, awg)) = Add (Sub (ap, aq), Cx (awf, awg))
1.1143 + | numadd (Sub (ap, aq), Bound awe) = Add (Sub (ap, aq), Bound awe)
1.1144 + | numadd (Sub (ap, aq), C awd) = Add (Sub (ap, aq), C awd)
1.1145 + | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Mul (aty, atz)) =
1.1146 + Add (Add (Mul (mc, Mul (acp, acq)), ao), Mul (aty, atz))
1.1147 + | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Sub (atw, atx)) =
1.1148 + Add (Add (Mul (mc, Mul (acp, acq)), ao), Sub (atw, atx))
1.1149 + | numadd
1.1150 + (Add (Mul (mc, Mul (acp, acq)), ao), Add (Mul (auu, Mul (avq, avr)), atv)) =
1.1151 + Add (Add (Mul (mc, Mul (acp, acq)), ao),
1.1152 + Add (Mul (auu, Mul (avq, avr)), atv))
1.1153 + | numadd
1.1154 + (Add (Mul (mc, Mul (acp, acq)), ao), Add (Mul (auu, Sub (avo, avp)), atv)) =
1.1155 + Add (Add (Mul (mc, Mul (acp, acq)), ao),
1.1156 + Add (Mul (auu, Sub (avo, avp)), atv))
1.1157 + | numadd
1.1158 + (Add (Mul (mc, Mul (acp, acq)), ao), Add (Mul (auu, Add (avm, avn)), atv)) =
1.1159 + Add (Add (Mul (mc, Mul (acp, acq)), ao),
1.1160 + Add (Mul (auu, Add (avm, avn)), atv))
1.1161 + | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Add (Mul (auu, Neg avl), atv)) =
1.1162 + Add (Add (Mul (mc, Mul (acp, acq)), ao), Add (Mul (auu, Neg avl), atv))
1.1163 + | numadd
1.1164 + (Add (Mul (mc, Mul (acp, acq)), ao), Add (Mul (auu, Cx (avj, avk)), atv)) =
1.1165 + Add (Add (Mul (mc, Mul (acp, acq)), ao),
1.1166 + Add (Mul (auu, Cx (avj, avk)), atv))
1.1167 + | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Add (Mul (auu, C avh), atv)) =
1.1168 + Add (Add (Mul (mc, Mul (acp, acq)), ao), Add (Mul (auu, C avh), atv))
1.1169 + | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Add (Sub (aus, aut), atv)) =
1.1170 + Add (Add (Mul (mc, Mul (acp, acq)), ao), Add (Sub (aus, aut), atv))
1.1171 + | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Add (Add (auq, aur), atv)) =
1.1172 + Add (Add (Mul (mc, Mul (acp, acq)), ao), Add (Add (auq, aur), atv))
1.1173 + | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Add (Neg aup, atv)) =
1.1174 + Add (Add (Mul (mc, Mul (acp, acq)), ao), Add (Neg aup, atv))
1.1175 + | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Add (Cx (aun, auo), atv)) =
1.1176 + Add (Add (Mul (mc, Mul (acp, acq)), ao), Add (Cx (aun, auo), atv))
1.1177 + | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Add (Bound aum, atv)) =
1.1178 + Add (Add (Mul (mc, Mul (acp, acq)), ao), Add (Bound aum, atv))
1.1179 + | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Add (C aul, atv)) =
1.1180 + Add (Add (Mul (mc, Mul (acp, acq)), ao), Add (C aul, atv))
1.1181 + | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Neg att) =
1.1182 + Add (Add (Mul (mc, Mul (acp, acq)), ao), Neg att)
1.1183 + | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Cx (atr, ats)) =
1.1184 + Add (Add (Mul (mc, Mul (acp, acq)), ao), Cx (atr, ats))
1.1185 + | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Bound atq) =
1.1186 + Add (Add (Mul (mc, Mul (acp, acq)), ao), Bound atq)
1.1187 + | numadd (Add (Mul (mc, Mul (acp, acq)), ao), C atp) =
1.1188 + Add (Add (Mul (mc, Mul (acp, acq)), ao), C atp)
1.1189 + | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Mul (ark, arl)) =
1.1190 + Add (Add (Mul (mc, Sub (acn, aco)), ao), Mul (ark, arl))
1.1191 + | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Sub (ari, arj)) =
1.1192 + Add (Add (Mul (mc, Sub (acn, aco)), ao), Sub (ari, arj))
1.1193 + | numadd
1.1194 + (Add (Mul (mc, Sub (acn, aco)), ao), Add (Mul (asg, Mul (atc, atd)), arh)) =
1.1195 + Add (Add (Mul (mc, Sub (acn, aco)), ao),
1.1196 + Add (Mul (asg, Mul (atc, atd)), arh))
1.1197 + | numadd
1.1198 + (Add (Mul (mc, Sub (acn, aco)), ao), Add (Mul (asg, Sub (ata, atb)), arh)) =
1.1199 + Add (Add (Mul (mc, Sub (acn, aco)), ao),
1.1200 + Add (Mul (asg, Sub (ata, atb)), arh))
1.1201 + | numadd
1.1202 + (Add (Mul (mc, Sub (acn, aco)), ao), Add (Mul (asg, Add (asy, asz)), arh)) =
1.1203 + Add (Add (Mul (mc, Sub (acn, aco)), ao),
1.1204 + Add (Mul (asg, Add (asy, asz)), arh))
1.1205 + | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Add (Mul (asg, Neg asx), arh)) =
1.1206 + Add (Add (Mul (mc, Sub (acn, aco)), ao), Add (Mul (asg, Neg asx), arh))
1.1207 + | numadd
1.1208 + (Add (Mul (mc, Sub (acn, aco)), ao), Add (Mul (asg, Cx (asv, asw)), arh)) =
1.1209 + Add (Add (Mul (mc, Sub (acn, aco)), ao),
1.1210 + Add (Mul (asg, Cx (asv, asw)), arh))
1.1211 + | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Add (Mul (asg, C ast), arh)) =
1.1212 + Add (Add (Mul (mc, Sub (acn, aco)), ao), Add (Mul (asg, C ast), arh))
1.1213 + | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Add (Sub (ase, asf), arh)) =
1.1214 + Add (Add (Mul (mc, Sub (acn, aco)), ao), Add (Sub (ase, asf), arh))
1.1215 + | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Add (Add (asc, asd), arh)) =
1.1216 + Add (Add (Mul (mc, Sub (acn, aco)), ao), Add (Add (asc, asd), arh))
1.1217 + | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Add (Neg asb, arh)) =
1.1218 + Add (Add (Mul (mc, Sub (acn, aco)), ao), Add (Neg asb, arh))
1.1219 + | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Add (Cx (arz, asa), arh)) =
1.1220 + Add (Add (Mul (mc, Sub (acn, aco)), ao), Add (Cx (arz, asa), arh))
1.1221 + | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Add (Bound ary, arh)) =
1.1222 + Add (Add (Mul (mc, Sub (acn, aco)), ao), Add (Bound ary, arh))
1.1223 + | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Add (C arx, arh)) =
1.1224 + Add (Add (Mul (mc, Sub (acn, aco)), ao), Add (C arx, arh))
1.1225 + | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Neg arf) =
1.1226 + Add (Add (Mul (mc, Sub (acn, aco)), ao), Neg arf)
1.1227 + | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Cx (ard, are)) =
1.1228 + Add (Add (Mul (mc, Sub (acn, aco)), ao), Cx (ard, are))
1.1229 + | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Bound arc) =
1.1230 + Add (Add (Mul (mc, Sub (acn, aco)), ao), Bound arc)
1.1231 + | numadd (Add (Mul (mc, Sub (acn, aco)), ao), C arb) =
1.1232 + Add (Add (Mul (mc, Sub (acn, aco)), ao), C arb)
1.1233 + | numadd (Add (Mul (mc, Add (acl, acm)), ao), Mul (aow, aox)) =
1.1234 + Add (Add (Mul (mc, Add (acl, acm)), ao), Mul (aow, aox))
1.1235 + | numadd (Add (Mul (mc, Add (acl, acm)), ao), Sub (aou, aov)) =
1.1236 + Add (Add (Mul (mc, Add (acl, acm)), ao), Sub (aou, aov))
1.1237 + | numadd
1.1238 + (Add (Mul (mc, Add (acl, acm)), ao), Add (Mul (aps, Mul (aqo, aqp)), aot)) =
1.1239 + Add (Add (Mul (mc, Add (acl, acm)), ao),
1.1240 + Add (Mul (aps, Mul (aqo, aqp)), aot))
1.1241 + | numadd
1.1242 + (Add (Mul (mc, Add (acl, acm)), ao), Add (Mul (aps, Sub (aqm, aqn)), aot)) =
1.1243 + Add (Add (Mul (mc, Add (acl, acm)), ao),
1.1244 + Add (Mul (aps, Sub (aqm, aqn)), aot))
1.1245 + | numadd
1.1246 + (Add (Mul (mc, Add (acl, acm)), ao), Add (Mul (aps, Add (aqk, aql)), aot)) =
1.1247 + Add (Add (Mul (mc, Add (acl, acm)), ao),
1.1248 + Add (Mul (aps, Add (aqk, aql)), aot))
1.1249 + | numadd (Add (Mul (mc, Add (acl, acm)), ao), Add (Mul (aps, Neg aqj), aot)) =
1.1250 + Add (Add (Mul (mc, Add (acl, acm)), ao), Add (Mul (aps, Neg aqj), aot))
1.1251 + | numadd
1.1252 + (Add (Mul (mc, Add (acl, acm)), ao), Add (Mul (aps, Cx (aqh, aqi)), aot)) =
1.1253 + Add (Add (Mul (mc, Add (acl, acm)), ao),
1.1254 + Add (Mul (aps, Cx (aqh, aqi)), aot))
1.1255 + | numadd (Add (Mul (mc, Add (acl, acm)), ao), Add (Mul (aps, C aqf), aot)) =
1.1256 + Add (Add (Mul (mc, Add (acl, acm)), ao), Add (Mul (aps, C aqf), aot))
1.1257 + | numadd (Add (Mul (mc, Add (acl, acm)), ao), Add (Sub (apq, apr), aot)) =
1.1258 + Add (Add (Mul (mc, Add (acl, acm)), ao), Add (Sub (apq, apr), aot))
1.1259 + | numadd (Add (Mul (mc, Add (acl, acm)), ao), Add (Add (apo, app), aot)) =
1.1260 + Add (Add (Mul (mc, Add (acl, acm)), ao), Add (Add (apo, app), aot))
1.1261 + | numadd (Add (Mul (mc, Add (acl, acm)), ao), Add (Neg apn, aot)) =
1.1262 + Add (Add (Mul (mc, Add (acl, acm)), ao), Add (Neg apn, aot))
1.1263 + | numadd (Add (Mul (mc, Add (acl, acm)), ao), Add (Cx (apl, apm), aot)) =
1.1264 + Add (Add (Mul (mc, Add (acl, acm)), ao), Add (Cx (apl, apm), aot))
1.1265 + | numadd (Add (Mul (mc, Add (acl, acm)), ao), Add (Bound apk, aot)) =
1.1266 + Add (Add (Mul (mc, Add (acl, acm)), ao), Add (Bound apk, aot))
1.1267 + | numadd (Add (Mul (mc, Add (acl, acm)), ao), Add (C apj, aot)) =
1.1268 + Add (Add (Mul (mc, Add (acl, acm)), ao), Add (C apj, aot))
1.1269 + | numadd (Add (Mul (mc, Add (acl, acm)), ao), Neg aor) =
1.1270 + Add (Add (Mul (mc, Add (acl, acm)), ao), Neg aor)
1.1271 + | numadd (Add (Mul (mc, Add (acl, acm)), ao), Cx (aop, aoq)) =
1.1272 + Add (Add (Mul (mc, Add (acl, acm)), ao), Cx (aop, aoq))
1.1273 + | numadd (Add (Mul (mc, Add (acl, acm)), ao), Bound aoo) =
1.1274 + Add (Add (Mul (mc, Add (acl, acm)), ao), Bound aoo)
1.1275 + | numadd (Add (Mul (mc, Add (acl, acm)), ao), C aon) =
1.1276 + Add (Add (Mul (mc, Add (acl, acm)), ao), C aon)
1.1277 + | numadd (Add (Mul (mc, Neg ack), ao), Mul (ami, amj)) =
1.1278 + Add (Add (Mul (mc, Neg ack), ao), Mul (ami, amj))
1.1279 + | numadd (Add (Mul (mc, Neg ack), ao), Sub (amg, amh)) =
1.1280 + Add (Add (Mul (mc, Neg ack), ao), Sub (amg, amh))
1.1281 + | numadd (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Mul (aoa, aob)), amf)) =
1.1282 + Add (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Mul (aoa, aob)), amf))
1.1283 + | numadd (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Sub (any, anz)), amf)) =
1.1284 + Add (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Sub (any, anz)), amf))
1.1285 + | numadd (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Add (anw, anx)), amf)) =
1.1286 + Add (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Add (anw, anx)), amf))
1.1287 + | numadd (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Neg anv), amf)) =
1.1288 + Add (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Neg anv), amf))
1.1289 + | numadd (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Cx (ant, anu)), amf)) =
1.1290 + Add (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Cx (ant, anu)), amf))
1.1291 + | numadd (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, C anr), amf)) =
1.1292 + Add (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, C anr), amf))
1.1293 + | numadd (Add (Mul (mc, Neg ack), ao), Add (Sub (anc, anda), amf)) =
1.1294 + Add (Add (Mul (mc, Neg ack), ao), Add (Sub (anc, anda), amf))
1.1295 + | numadd (Add (Mul (mc, Neg ack), ao), Add (Add (ana, anb), amf)) =
1.1296 + Add (Add (Mul (mc, Neg ack), ao), Add (Add (ana, anb), amf))
1.1297 + | numadd (Add (Mul (mc, Neg ack), ao), Add (Neg amz, amf)) =
1.1298 + Add (Add (Mul (mc, Neg ack), ao), Add (Neg amz, amf))
1.1299 + | numadd (Add (Mul (mc, Neg ack), ao), Add (Cx (amx, amy), amf)) =
1.1300 + Add (Add (Mul (mc, Neg ack), ao), Add (Cx (amx, amy), amf))
1.1301 + | numadd (Add (Mul (mc, Neg ack), ao), Add (Bound amw, amf)) =
1.1302 + Add (Add (Mul (mc, Neg ack), ao), Add (Bound amw, amf))
1.1303 + | numadd (Add (Mul (mc, Neg ack), ao), Add (C amv, amf)) =
1.1304 + Add (Add (Mul (mc, Neg ack), ao), Add (C amv, amf))
1.1305 + | numadd (Add (Mul (mc, Neg ack), ao), Neg amd) =
1.1306 + Add (Add (Mul (mc, Neg ack), ao), Neg amd)
1.1307 + | numadd (Add (Mul (mc, Neg ack), ao), Cx (amb, amc)) =
1.1308 + Add (Add (Mul (mc, Neg ack), ao), Cx (amb, amc))
1.1309 + | numadd (Add (Mul (mc, Neg ack), ao), Bound ama) =
1.1310 + Add (Add (Mul (mc, Neg ack), ao), Bound ama)
1.1311 + | numadd (Add (Mul (mc, Neg ack), ao), C alz) =
1.1312 + Add (Add (Mul (mc, Neg ack), ao), C alz)
1.1313 + | numadd (Add (Mul (mc, Cx (aci, acj)), ao), Mul (aju, ajv)) =
1.1314 + Add (Add (Mul (mc, Cx (aci, acj)), ao), Mul (aju, ajv))
1.1315 + | numadd (Add (Mul (mc, Cx (aci, acj)), ao), Sub (ajs, ajt)) =
1.1316 + Add (Add (Mul (mc, Cx (aci, acj)), ao), Sub (ajs, ajt))
1.1317 + | numadd
1.1318 + (Add (Mul (mc, Cx (aci, acj)), ao), Add (Mul (akq, Mul (alm, aln)), ajr)) =
1.1319 + Add (Add (Mul (mc, Cx (aci, acj)), ao),
1.1320 + Add (Mul (akq, Mul (alm, aln)), ajr))
1.1321 + | numadd
1.1322 + (Add (Mul (mc, Cx (aci, acj)), ao), Add (Mul (akq, Sub (alk, all)), ajr)) =
1.1323 + Add (Add (Mul (mc, Cx (aci, acj)), ao),
1.1324 + Add (Mul (akq, Sub (alk, all)), ajr))
1.1325 + | numadd
1.1326 + (Add (Mul (mc, Cx (aci, acj)), ao), Add (Mul (akq, Add (ali, alj)), ajr)) =
1.1327 + Add (Add (Mul (mc, Cx (aci, acj)), ao),
1.1328 + Add (Mul (akq, Add (ali, alj)), ajr))
1.1329 + | numadd (Add (Mul (mc, Cx (aci, acj)), ao), Add (Mul (akq, Neg alh), ajr)) =
1.1330 + Add (Add (Mul (mc, Cx (aci, acj)), ao), Add (Mul (akq, Neg alh), ajr))
1.1331 + | numadd
1.1332 + (Add (Mul (mc, Cx (aci, acj)), ao), Add (Mul (akq, Cx (alf, alg)), ajr)) =
1.1333 + Add (Add (Mul (mc, Cx (aci, acj)), ao), Add (Mul (akq, Cx (alf, alg)), ajr))
1.1334 + | numadd (Add (Mul (mc, Cx (aci, acj)), ao), Add (Mul (akq, C ald), ajr)) =
1.1335 + Add (Add (Mul (mc, Cx (aci, acj)), ao), Add (Mul (akq, C ald), ajr))
1.1336 + | numadd (Add (Mul (mc, Cx (aci, acj)), ao), Add (Sub (ako, akp), ajr)) =
1.1337 + Add (Add (Mul (mc, Cx (aci, acj)), ao), Add (Sub (ako, akp), ajr))
1.1338 + | numadd (Add (Mul (mc, Cx (aci, acj)), ao), Add (Add (akm, akn), ajr)) =
1.1339 + Add (Add (Mul (mc, Cx (aci, acj)), ao), Add (Add (akm, akn), ajr))
1.1340 + | numadd (Add (Mul (mc, Cx (aci, acj)), ao), Add (Neg akl, ajr)) =
1.1341 + Add (Add (Mul (mc, Cx (aci, acj)), ao), Add (Neg akl, ajr))
1.1342 + | numadd (Add (Mul (mc, Cx (aci, acj)), ao), Add (Cx (akj, akk), ajr)) =
1.1343 + Add (Add (Mul (mc, Cx (aci, acj)), ao), Add (Cx (akj, akk), ajr))
1.1344 + | numadd (Add (Mul (mc, Cx (aci, acj)), ao), Add (Bound aki, ajr)) =
1.1345 + Add (Add (Mul (mc, Cx (aci, acj)), ao), Add (Bound aki, ajr))
1.1346 + | numadd (Add (Mul (mc, Cx (aci, acj)), ao), Add (C akh, ajr)) =
1.1347 + Add (Add (Mul (mc, Cx (aci, acj)), ao), Add (C akh, ajr))
1.1348 + | numadd (Add (Mul (mc, Cx (aci, acj)), ao), Neg ajp) =
1.1349 + Add (Add (Mul (mc, Cx (aci, acj)), ao), Neg ajp)
1.1350 + | numadd (Add (Mul (mc, Cx (aci, acj)), ao), Cx (ajn, ajo)) =
1.1351 + Add (Add (Mul (mc, Cx (aci, acj)), ao), Cx (ajn, ajo))
1.1352 + | numadd (Add (Mul (mc, Cx (aci, acj)), ao), Bound ajm) =
1.1353 + Add (Add (Mul (mc, Cx (aci, acj)), ao), Bound ajm)
1.1354 + | numadd (Add (Mul (mc, Cx (aci, acj)), ao), C ajl) =
1.1355 + Add (Add (Mul (mc, Cx (aci, acj)), ao), C ajl)
1.1356 + | numadd (Add (Mul (mc, C acg), ao), Mul (adl, adm)) =
1.1357 + Add (Add (Mul (mc, C acg), ao), Mul (adl, adm))
1.1358 + | numadd (Add (Mul (mc, C acg), ao), Sub (adj, adk)) =
1.1359 + Add (Add (Mul (mc, C acg), ao), Sub (adj, adk))
1.1360 + | numadd (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Mul (afd, afe)), adi)) =
1.1361 + Add (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Mul (afd, afe)), adi))
1.1362 + | numadd (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Sub (afb, afc)), adi)) =
1.1363 + Add (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Sub (afb, afc)), adi))
1.1364 + | numadd (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Add (aez, afa)), adi)) =
1.1365 + Add (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Add (aez, afa)), adi))
1.1366 + | numadd (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Neg aey), adi)) =
1.1367 + Add (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Neg aey), adi))
1.1368 + | numadd (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Cx (aew, aex)), adi)) =
1.1369 + Add (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Cx (aew, aex)), adi))
1.1370 + | numadd (Add (Mul (mc, C acg), ao), Add (Mul (aeh, C aeu), adi)) =
1.1371 + Add (Add (Mul (mc, C acg), ao), Add (Mul (aeh, C aeu), adi))
1.1372 + | numadd (Add (Mul (mc, C acg), ao), Add (Sub (aef, aeg), adi)) =
1.1373 + Add (Add (Mul (mc, C acg), ao), Add (Sub (aef, aeg), adi))
1.1374 + | numadd (Add (Mul (mc, C acg), ao), Add (Add (aed, aee), adi)) =
1.1375 + Add (Add (Mul (mc, C acg), ao), Add (Add (aed, aee), adi))
1.1376 + | numadd (Add (Mul (mc, C acg), ao), Add (Neg aec, adi)) =
1.1377 + Add (Add (Mul (mc, C acg), ao), Add (Neg aec, adi))
1.1378 + | numadd (Add (Mul (mc, C acg), ao), Add (Cx (aea, aeb), adi)) =
1.1379 + Add (Add (Mul (mc, C acg), ao), Add (Cx (aea, aeb), adi))
1.1380 + | numadd (Add (Mul (mc, C acg), ao), Add (Bound adz, adi)) =
1.1381 + Add (Add (Mul (mc, C acg), ao), Add (Bound adz, adi))
1.1382 + | numadd (Add (Mul (mc, C acg), ao), Add (C ady, adi)) =
1.1383 + Add (Add (Mul (mc, C acg), ao), Add (C ady, adi))
1.1384 + | numadd (Add (Mul (mc, C acg), ao), Neg adg) =
1.1385 + Add (Add (Mul (mc, C acg), ao), Neg adg)
1.1386 + | numadd (Add (Mul (mc, C acg), ao), Cx (ade, adf)) =
1.1387 + Add (Add (Mul (mc, C acg), ao), Cx (ade, adf))
1.1388 + | numadd (Add (Mul (mc, C acg), ao), Bound add) =
1.1389 + Add (Add (Mul (mc, C acg), ao), Bound add)
1.1390 + | numadd (Add (Mul (mc, C acg), ao), C adc) =
1.1391 + Add (Add (Mul (mc, C acg), ao), C adc)
1.1392 + | numadd (Add (Sub (ma, mb), ao), Mul (zq, zr)) =
1.1393 + Add (Add (Sub (ma, mb), ao), Mul (zq, zr))
1.1394 + | numadd (Add (Sub (ma, mb), ao), Sub (zo, zp)) =
1.1395 + Add (Add (Sub (ma, mb), ao), Sub (zo, zp))
1.1396 + | numadd (Add (Sub (ma, mb), ao), Add (Mul (aam, Mul (abi, abj)), zn)) =
1.1397 + Add (Add (Sub (ma, mb), ao), Add (Mul (aam, Mul (abi, abj)), zn))
1.1398 + | numadd (Add (Sub (ma, mb), ao), Add (Mul (aam, Sub (abg, abh)), zn)) =
1.1399 + Add (Add (Sub (ma, mb), ao), Add (Mul (aam, Sub (abg, abh)), zn))
1.1400 + | numadd (Add (Sub (ma, mb), ao), Add (Mul (aam, Add (abe, abf)), zn)) =
1.1401 + Add (Add (Sub (ma, mb), ao), Add (Mul (aam, Add (abe, abf)), zn))
1.1402 + | numadd (Add (Sub (ma, mb), ao), Add (Mul (aam, Neg abd), zn)) =
1.1403 + Add (Add (Sub (ma, mb), ao), Add (Mul (aam, Neg abd), zn))
1.1404 + | numadd (Add (Sub (ma, mb), ao), Add (Mul (aam, Cx (abb, abc)), zn)) =
1.1405 + Add (Add (Sub (ma, mb), ao), Add (Mul (aam, Cx (abb, abc)), zn))
1.1406 + | numadd (Add (Sub (ma, mb), ao), Add (Mul (aam, C aaz), zn)) =
1.1407 + Add (Add (Sub (ma, mb), ao), Add (Mul (aam, C aaz), zn))
1.1408 + | numadd (Add (Sub (ma, mb), ao), Add (Sub (aak, aal), zn)) =
1.1409 + Add (Add (Sub (ma, mb), ao), Add (Sub (aak, aal), zn))
1.1410 + | numadd (Add (Sub (ma, mb), ao), Add (Add (aai, aaj), zn)) =
1.1411 + Add (Add (Sub (ma, mb), ao), Add (Add (aai, aaj), zn))
1.1412 + | numadd (Add (Sub (ma, mb), ao), Add (Neg aah, zn)) =
1.1413 + Add (Add (Sub (ma, mb), ao), Add (Neg aah, zn))
1.1414 + | numadd (Add (Sub (ma, mb), ao), Add (Cx (aaf, aag), zn)) =
1.1415 + Add (Add (Sub (ma, mb), ao), Add (Cx (aaf, aag), zn))
1.1416 + | numadd (Add (Sub (ma, mb), ao), Add (Bound aae, zn)) =
1.1417 + Add (Add (Sub (ma, mb), ao), Add (Bound aae, zn))
1.1418 + | numadd (Add (Sub (ma, mb), ao), Add (C aad, zn)) =
1.1419 + Add (Add (Sub (ma, mb), ao), Add (C aad, zn))
1.1420 + | numadd (Add (Sub (ma, mb), ao), Neg zl) =
1.1421 + Add (Add (Sub (ma, mb), ao), Neg zl)
1.1422 + | numadd (Add (Sub (ma, mb), ao), Cx (zj, zk)) =
1.1423 + Add (Add (Sub (ma, mb), ao), Cx (zj, zk))
1.1424 + | numadd (Add (Sub (ma, mb), ao), Bound zi) =
1.1425 + Add (Add (Sub (ma, mb), ao), Bound zi)
1.1426 + | numadd (Add (Sub (ma, mb), ao), C zh) = Add (Add (Sub (ma, mb), ao), C zh)
1.1427 + | numadd (Add (Add (ly, lz), ao), Mul (xc, xd)) =
1.1428 + Add (Add (Add (ly, lz), ao), Mul (xc, xd))
1.1429 + | numadd (Add (Add (ly, lz), ao), Sub (xa, xb)) =
1.1430 + Add (Add (Add (ly, lz), ao), Sub (xa, xb))
1.1431 + | numadd (Add (Add (ly, lz), ao), Add (Mul (xy, Mul (yu, yv)), wz)) =
1.1432 + Add (Add (Add (ly, lz), ao), Add (Mul (xy, Mul (yu, yv)), wz))
1.1433 + | numadd (Add (Add (ly, lz), ao), Add (Mul (xy, Sub (ys, yt)), wz)) =
1.1434 + Add (Add (Add (ly, lz), ao), Add (Mul (xy, Sub (ys, yt)), wz))
1.1435 + | numadd (Add (Add (ly, lz), ao), Add (Mul (xy, Add (yq, yr)), wz)) =
1.1436 + Add (Add (Add (ly, lz), ao), Add (Mul (xy, Add (yq, yr)), wz))
1.1437 + | numadd (Add (Add (ly, lz), ao), Add (Mul (xy, Neg yp), wz)) =
1.1438 + Add (Add (Add (ly, lz), ao), Add (Mul (xy, Neg yp), wz))
1.1439 + | numadd (Add (Add (ly, lz), ao), Add (Mul (xy, Cx (yn, yo)), wz)) =
1.1440 + Add (Add (Add (ly, lz), ao), Add (Mul (xy, Cx (yn, yo)), wz))
1.1441 + | numadd (Add (Add (ly, lz), ao), Add (Mul (xy, C yl), wz)) =
1.1442 + Add (Add (Add (ly, lz), ao), Add (Mul (xy, C yl), wz))
1.1443 + | numadd (Add (Add (ly, lz), ao), Add (Sub (xw, xx), wz)) =
1.1444 + Add (Add (Add (ly, lz), ao), Add (Sub (xw, xx), wz))
1.1445 + | numadd (Add (Add (ly, lz), ao), Add (Add (xu, xv), wz)) =
1.1446 + Add (Add (Add (ly, lz), ao), Add (Add (xu, xv), wz))
1.1447 + | numadd (Add (Add (ly, lz), ao), Add (Neg xt, wz)) =
1.1448 + Add (Add (Add (ly, lz), ao), Add (Neg xt, wz))
1.1449 + | numadd (Add (Add (ly, lz), ao), Add (Cx (xr, xs), wz)) =
1.1450 + Add (Add (Add (ly, lz), ao), Add (Cx (xr, xs), wz))
1.1451 + | numadd (Add (Add (ly, lz), ao), Add (Bound xq, wz)) =
1.1452 + Add (Add (Add (ly, lz), ao), Add (Bound xq, wz))
1.1453 + | numadd (Add (Add (ly, lz), ao), Add (C xp, wz)) =
1.1454 + Add (Add (Add (ly, lz), ao), Add (C xp, wz))
1.1455 + | numadd (Add (Add (ly, lz), ao), Neg wx) =
1.1456 + Add (Add (Add (ly, lz), ao), Neg wx)
1.1457 + | numadd (Add (Add (ly, lz), ao), Cx (wv, ww)) =
1.1458 + Add (Add (Add (ly, lz), ao), Cx (wv, ww))
1.1459 + | numadd (Add (Add (ly, lz), ao), Bound wu) =
1.1460 + Add (Add (Add (ly, lz), ao), Bound wu)
1.1461 + | numadd (Add (Add (ly, lz), ao), C wt) = Add (Add (Add (ly, lz), ao), C wt)
1.1462 + | numadd (Add (Neg lx, ao), Mul (uo, up)) =
1.1463 + Add (Add (Neg lx, ao), Mul (uo, up))
1.1464 + | numadd (Add (Neg lx, ao), Sub (um, un)) =
1.1465 + Add (Add (Neg lx, ao), Sub (um, un))
1.1466 + | numadd (Add (Neg lx, ao), Add (Mul (vk, Mul (wg, wh)), ul)) =
1.1467 + Add (Add (Neg lx, ao), Add (Mul (vk, Mul (wg, wh)), ul))
1.1468 + | numadd (Add (Neg lx, ao), Add (Mul (vk, Sub (we, wf)), ul)) =
1.1469 + Add (Add (Neg lx, ao), Add (Mul (vk, Sub (we, wf)), ul))
1.1470 + | numadd (Add (Neg lx, ao), Add (Mul (vk, Add (wc, wd)), ul)) =
1.1471 + Add (Add (Neg lx, ao), Add (Mul (vk, Add (wc, wd)), ul))
1.1472 + | numadd (Add (Neg lx, ao), Add (Mul (vk, Neg wb), ul)) =
1.1473 + Add (Add (Neg lx, ao), Add (Mul (vk, Neg wb), ul))
1.1474 + | numadd (Add (Neg lx, ao), Add (Mul (vk, Cx (vz, wa)), ul)) =
1.1475 + Add (Add (Neg lx, ao), Add (Mul (vk, Cx (vz, wa)), ul))
1.1476 + | numadd (Add (Neg lx, ao), Add (Mul (vk, C vx), ul)) =
1.1477 + Add (Add (Neg lx, ao), Add (Mul (vk, C vx), ul))
1.1478 + | numadd (Add (Neg lx, ao), Add (Sub (vi, vj), ul)) =
1.1479 + Add (Add (Neg lx, ao), Add (Sub (vi, vj), ul))
1.1480 + | numadd (Add (Neg lx, ao), Add (Add (vg, vh), ul)) =
1.1481 + Add (Add (Neg lx, ao), Add (Add (vg, vh), ul))
1.1482 + | numadd (Add (Neg lx, ao), Add (Neg vf, ul)) =
1.1483 + Add (Add (Neg lx, ao), Add (Neg vf, ul))
1.1484 + | numadd (Add (Neg lx, ao), Add (Cx (vd, ve), ul)) =
1.1485 + Add (Add (Neg lx, ao), Add (Cx (vd, ve), ul))
1.1486 + | numadd (Add (Neg lx, ao), Add (Bound vc, ul)) =
1.1487 + Add (Add (Neg lx, ao), Add (Bound vc, ul))
1.1488 + | numadd (Add (Neg lx, ao), Add (C vb, ul)) =
1.1489 + Add (Add (Neg lx, ao), Add (C vb, ul))
1.1490 + | numadd (Add (Neg lx, ao), Neg uj) = Add (Add (Neg lx, ao), Neg uj)
1.1491 + | numadd (Add (Neg lx, ao), Cx (uh, ui)) = Add (Add (Neg lx, ao), Cx (uh, ui))
1.1492 + | numadd (Add (Neg lx, ao), Bound ug) = Add (Add (Neg lx, ao), Bound ug)
1.1493 + | numadd (Add (Neg lx, ao), C uf) = Add (Add (Neg lx, ao), C uf)
1.1494 + | numadd (Add (Cx (lv, lw), ao), Mul (sa, sb)) =
1.1495 + Add (Add (Cx (lv, lw), ao), Mul (sa, sb))
1.1496 + | numadd (Add (Cx (lv, lw), ao), Sub (ry, rz)) =
1.1497 + Add (Add (Cx (lv, lw), ao), Sub (ry, rz))
1.1498 + | numadd (Add (Cx (lv, lw), ao), Add (Mul (sw, Mul (ts, tt)), rx)) =
1.1499 + Add (Add (Cx (lv, lw), ao), Add (Mul (sw, Mul (ts, tt)), rx))
1.1500 + | numadd (Add (Cx (lv, lw), ao), Add (Mul (sw, Sub (tq, tr)), rx)) =
1.1501 + Add (Add (Cx (lv, lw), ao), Add (Mul (sw, Sub (tq, tr)), rx))
1.1502 + | numadd (Add (Cx (lv, lw), ao), Add (Mul (sw, Add (to, tp)), rx)) =
1.1503 + Add (Add (Cx (lv, lw), ao), Add (Mul (sw, Add (to, tp)), rx))
1.1504 + | numadd (Add (Cx (lv, lw), ao), Add (Mul (sw, Neg tn), rx)) =
1.1505 + Add (Add (Cx (lv, lw), ao), Add (Mul (sw, Neg tn), rx))
1.1506 + | numadd (Add (Cx (lv, lw), ao), Add (Mul (sw, Cx (tl, tm)), rx)) =
1.1507 + Add (Add (Cx (lv, lw), ao), Add (Mul (sw, Cx (tl, tm)), rx))
1.1508 + | numadd (Add (Cx (lv, lw), ao), Add (Mul (sw, C tj), rx)) =
1.1509 + Add (Add (Cx (lv, lw), ao), Add (Mul (sw, C tj), rx))
1.1510 + | numadd (Add (Cx (lv, lw), ao), Add (Sub (su, sv), rx)) =
1.1511 + Add (Add (Cx (lv, lw), ao), Add (Sub (su, sv), rx))
1.1512 + | numadd (Add (Cx (lv, lw), ao), Add (Add (ss, st), rx)) =
1.1513 + Add (Add (Cx (lv, lw), ao), Add (Add (ss, st), rx))
1.1514 + | numadd (Add (Cx (lv, lw), ao), Add (Neg sr, rx)) =
1.1515 + Add (Add (Cx (lv, lw), ao), Add (Neg sr, rx))
1.1516 + | numadd (Add (Cx (lv, lw), ao), Add (Cx (sp, sq), rx)) =
1.1517 + Add (Add (Cx (lv, lw), ao), Add (Cx (sp, sq), rx))
1.1518 + | numadd (Add (Cx (lv, lw), ao), Add (Bound so, rx)) =
1.1519 + Add (Add (Cx (lv, lw), ao), Add (Bound so, rx))
1.1520 + | numadd (Add (Cx (lv, lw), ao), Add (C sn, rx)) =
1.1521 + Add (Add (Cx (lv, lw), ao), Add (C sn, rx))
1.1522 + | numadd (Add (Cx (lv, lw), ao), Neg rv) = Add (Add (Cx (lv, lw), ao), Neg rv)
1.1523 + | numadd (Add (Cx (lv, lw), ao), Cx (rt, ru)) =
1.1524 + Add (Add (Cx (lv, lw), ao), Cx (rt, ru))
1.1525 + | numadd (Add (Cx (lv, lw), ao), Bound rs) =
1.1526 + Add (Add (Cx (lv, lw), ao), Bound rs)
1.1527 + | numadd (Add (Cx (lv, lw), ao), C rr) = Add (Add (Cx (lv, lw), ao), C rr)
1.1528 + | numadd (Add (Bound lu, ao), Mul (pm, pn)) =
1.1529 + Add (Add (Bound lu, ao), Mul (pm, pn))
1.1530 + | numadd (Add (Bound lu, ao), Sub (pk, pl)) =
1.1531 + Add (Add (Bound lu, ao), Sub (pk, pl))
1.1532 + | numadd (Add (Bound lu, ao), Add (Mul (qi, Mul (re, rf)), pj)) =
1.1533 + Add (Add (Bound lu, ao), Add (Mul (qi, Mul (re, rf)), pj))
1.1534 + | numadd (Add (Bound lu, ao), Add (Mul (qi, Sub (rc, rd)), pj)) =
1.1535 + Add (Add (Bound lu, ao), Add (Mul (qi, Sub (rc, rd)), pj))
1.1536 + | numadd (Add (Bound lu, ao), Add (Mul (qi, Add (ra, rb)), pj)) =
1.1537 + Add (Add (Bound lu, ao), Add (Mul (qi, Add (ra, rb)), pj))
1.1538 + | numadd (Add (Bound lu, ao), Add (Mul (qi, Neg qz), pj)) =
1.1539 + Add (Add (Bound lu, ao), Add (Mul (qi, Neg qz), pj))
1.1540 + | numadd (Add (Bound lu, ao), Add (Mul (qi, Cx (qx, qy)), pj)) =
1.1541 + Add (Add (Bound lu, ao), Add (Mul (qi, Cx (qx, qy)), pj))
1.1542 + | numadd (Add (Bound lu, ao), Add (Mul (qi, C qv), pj)) =
1.1543 + Add (Add (Bound lu, ao), Add (Mul (qi, C qv), pj))
1.1544 + | numadd (Add (Bound lu, ao), Add (Sub (qg, qh), pj)) =
1.1545 + Add (Add (Bound lu, ao), Add (Sub (qg, qh), pj))
1.1546 + | numadd (Add (Bound lu, ao), Add (Add (qe, qf), pj)) =
1.1547 + Add (Add (Bound lu, ao), Add (Add (qe, qf), pj))
1.1548 + | numadd (Add (Bound lu, ao), Add (Neg qd, pj)) =
1.1549 + Add (Add (Bound lu, ao), Add (Neg qd, pj))
1.1550 + | numadd (Add (Bound lu, ao), Add (Cx (qb, qc), pj)) =
1.1551 + Add (Add (Bound lu, ao), Add (Cx (qb, qc), pj))
1.1552 + | numadd (Add (Bound lu, ao), Add (Bound qa, pj)) =
1.1553 + Add (Add (Bound lu, ao), Add (Bound qa, pj))
1.1554 + | numadd (Add (Bound lu, ao), Add (C pz, pj)) =
1.1555 + Add (Add (Bound lu, ao), Add (C pz, pj))
1.1556 + | numadd (Add (Bound lu, ao), Neg ph) = Add (Add (Bound lu, ao), Neg ph)
1.1557 + | numadd (Add (Bound lu, ao), Cx (pf, pg)) =
1.1558 + Add (Add (Bound lu, ao), Cx (pf, pg))
1.1559 + | numadd (Add (Bound lu, ao), Bound pe) = Add (Add (Bound lu, ao), Bound pe)
1.1560 + | numadd (Add (Bound lu, ao), C pd) = Add (Add (Bound lu, ao), C pd)
1.1561 + | numadd (Add (C lt, ao), Mul (my, mz)) = Add (Add (C lt, ao), Mul (my, mz))
1.1562 + | numadd (Add (C lt, ao), Sub (mw, mx)) = Add (Add (C lt, ao), Sub (mw, mx))
1.1563 + | numadd (Add (C lt, ao), Add (Mul (nu, Mul (oq, or)), mv)) =
1.1564 + Add (Add (C lt, ao), Add (Mul (nu, Mul (oq, or)), mv))
1.1565 + | numadd (Add (C lt, ao), Add (Mul (nu, Sub (ooa, opa)), mv)) =
1.1566 + Add (Add (C lt, ao), Add (Mul (nu, Sub (ooa, opa)), mv))
1.1567 + | numadd (Add (C lt, ao), Add (Mul (nu, Add (om, on)), mv)) =
1.1568 + Add (Add (C lt, ao), Add (Mul (nu, Add (om, on)), mv))
1.1569 + | numadd (Add (C lt, ao), Add (Mul (nu, Neg ol), mv)) =
1.1570 + Add (Add (C lt, ao), Add (Mul (nu, Neg ol), mv))
1.1571 + | numadd (Add (C lt, ao), Add (Mul (nu, Cx (oj, ok)), mv)) =
1.1572 + Add (Add (C lt, ao), Add (Mul (nu, Cx (oj, ok)), mv))
1.1573 + | numadd (Add (C lt, ao), Add (Mul (nu, C oh), mv)) =
1.1574 + Add (Add (C lt, ao), Add (Mul (nu, C oh), mv))
1.1575 + | numadd (Add (C lt, ao), Add (Sub (ns, nt), mv)) =
1.1576 + Add (Add (C lt, ao), Add (Sub (ns, nt), mv))
1.1577 + | numadd (Add (C lt, ao), Add (Add (nq, nr), mv)) =
1.1578 + Add (Add (C lt, ao), Add (Add (nq, nr), mv))
1.1579 + | numadd (Add (C lt, ao), Add (Neg np, mv)) =
1.1580 + Add (Add (C lt, ao), Add (Neg np, mv))
1.1581 + | numadd (Add (C lt, ao), Add (Cx (nn, no), mv)) =
1.1582 + Add (Add (C lt, ao), Add (Cx (nn, no), mv))
1.1583 + | numadd (Add (C lt, ao), Add (Bound nm, mv)) =
1.1584 + Add (Add (C lt, ao), Add (Bound nm, mv))
1.1585 + | numadd (Add (C lt, ao), Add (C nl, mv)) =
1.1586 + Add (Add (C lt, ao), Add (C nl, mv))
1.1587 + | numadd (Add (C lt, ao), Neg mt) = Add (Add (C lt, ao), Neg mt)
1.1588 + | numadd (Add (C lt, ao), Cx (mr, ms)) = Add (Add (C lt, ao), Cx (mr, ms))
1.1589 + | numadd (Add (C lt, ao), Bound mq) = Add (Add (C lt, ao), Bound mq)
1.1590 + | numadd (Add (C lt, ao), C mp) = Add (Add (C lt, ao), C mp)
1.1591 + | numadd (Neg am, Mul (jd, je)) = Add (Neg am, Mul (jd, je))
1.1592 + | numadd (Neg am, Sub (jb, jc)) = Add (Neg am, Sub (jb, jc))
1.1593 + | numadd (Neg am, Add (Mul (jz, Mul (kv, kw)), ja)) =
1.1594 + Add (Neg am, Add (Mul (jz, Mul (kv, kw)), ja))
1.1595 + | numadd (Neg am, Add (Mul (jz, Sub (kt, ku)), ja)) =
1.1596 + Add (Neg am, Add (Mul (jz, Sub (kt, ku)), ja))
1.1597 + | numadd (Neg am, Add (Mul (jz, Add (kr, ks)), ja)) =
1.1598 + Add (Neg am, Add (Mul (jz, Add (kr, ks)), ja))
1.1599 + | numadd (Neg am, Add (Mul (jz, Neg kq), ja)) =
1.1600 + Add (Neg am, Add (Mul (jz, Neg kq), ja))
1.1601 + | numadd (Neg am, Add (Mul (jz, Cx (ko, kp)), ja)) =
1.1602 + Add (Neg am, Add (Mul (jz, Cx (ko, kp)), ja))
1.1603 + | numadd (Neg am, Add (Mul (jz, C km), ja)) =
1.1604 + Add (Neg am, Add (Mul (jz, C km), ja))
1.1605 + | numadd (Neg am, Add (Sub (jx, jy), ja)) =
1.1606 + Add (Neg am, Add (Sub (jx, jy), ja))
1.1607 + | numadd (Neg am, Add (Add (jv, jw), ja)) =
1.1608 + Add (Neg am, Add (Add (jv, jw), ja))
1.1609 + | numadd (Neg am, Add (Neg ju, ja)) = Add (Neg am, Add (Neg ju, ja))
1.1610 + | numadd (Neg am, Add (Cx (js, jt), ja)) = Add (Neg am, Add (Cx (js, jt), ja))
1.1611 + | numadd (Neg am, Add (Bound jr, ja)) = Add (Neg am, Add (Bound jr, ja))
1.1612 + | numadd (Neg am, Add (C jq, ja)) = Add (Neg am, Add (C jq, ja))
1.1613 + | numadd (Neg am, Neg iy) = Add (Neg am, Neg iy)
1.1614 + | numadd (Neg am, Cx (iw, ix)) = Add (Neg am, Cx (iw, ix))
1.1615 + | numadd (Neg am, Bound iv) = Add (Neg am, Bound iv)
1.1616 + | numadd (Neg am, C iu) = Add (Neg am, C iu)
1.1617 + | numadd (Cx (ak, al), Mul (gp, gq)) = Add (Cx (ak, al), Mul (gp, gq))
1.1618 + | numadd (Cx (ak, al), Sub (gn, go)) = Add (Cx (ak, al), Sub (gn, go))
1.1619 + | numadd (Cx (ak, al), Add (Mul (hl, Mul (ih, ii)), gm)) =
1.1620 + Add (Cx (ak, al), Add (Mul (hl, Mul (ih, ii)), gm))
1.1621 + | numadd (Cx (ak, al), Add (Mul (hl, Sub (ifa, ig)), gm)) =
1.1622 + Add (Cx (ak, al), Add (Mul (hl, Sub (ifa, ig)), gm))
1.1623 + | numadd (Cx (ak, al), Add (Mul (hl, Add (id, ie)), gm)) =
1.1624 + Add (Cx (ak, al), Add (Mul (hl, Add (id, ie)), gm))
1.1625 + | numadd (Cx (ak, al), Add (Mul (hl, Neg ic), gm)) =
1.1626 + Add (Cx (ak, al), Add (Mul (hl, Neg ic), gm))
1.1627 + | numadd (Cx (ak, al), Add (Mul (hl, Cx (ia, ib)), gm)) =
1.1628 + Add (Cx (ak, al), Add (Mul (hl, Cx (ia, ib)), gm))
1.1629 + | numadd (Cx (ak, al), Add (Mul (hl, C hy), gm)) =
1.1630 + Add (Cx (ak, al), Add (Mul (hl, C hy), gm))
1.1631 + | numadd (Cx (ak, al), Add (Sub (hj, hk), gm)) =
1.1632 + Add (Cx (ak, al), Add (Sub (hj, hk), gm))
1.1633 + | numadd (Cx (ak, al), Add (Add (hh, hi), gm)) =
1.1634 + Add (Cx (ak, al), Add (Add (hh, hi), gm))
1.1635 + | numadd (Cx (ak, al), Add (Neg hg, gm)) = Add (Cx (ak, al), Add (Neg hg, gm))
1.1636 + | numadd (Cx (ak, al), Add (Cx (he, hf), gm)) =
1.1637 + Add (Cx (ak, al), Add (Cx (he, hf), gm))
1.1638 + | numadd (Cx (ak, al), Add (Bound hd, gm)) =
1.1639 + Add (Cx (ak, al), Add (Bound hd, gm))
1.1640 + | numadd (Cx (ak, al), Add (C hc, gm)) = Add (Cx (ak, al), Add (C hc, gm))
1.1641 + | numadd (Cx (ak, al), Neg gk) = Add (Cx (ak, al), Neg gk)
1.1642 + | numadd (Cx (ak, al), Cx (gi, gj)) = Add (Cx (ak, al), Cx (gi, gj))
1.1643 + | numadd (Cx (ak, al), Bound gh) = Add (Cx (ak, al), Bound gh)
1.1644 + | numadd (Cx (ak, al), C gg) = Add (Cx (ak, al), C gg)
1.1645 + | numadd (Bound aj, Mul (eb, ec)) = Add (Bound aj, Mul (eb, ec))
1.1646 + | numadd (Bound aj, Sub (dz, ea)) = Add (Bound aj, Sub (dz, ea))
1.1647 + | numadd (Bound aj, Add (Mul (ex, Mul (ft, fu)), dy)) =
1.1648 + Add (Bound aj, Add (Mul (ex, Mul (ft, fu)), dy))
1.1649 + | numadd (Bound aj, Add (Mul (ex, Sub (fr, fs)), dy)) =
1.1650 + Add (Bound aj, Add (Mul (ex, Sub (fr, fs)), dy))
1.1651 + | numadd (Bound aj, Add (Mul (ex, Add (fp, fq)), dy)) =
1.1652 + Add (Bound aj, Add (Mul (ex, Add (fp, fq)), dy))
1.1653 + | numadd (Bound aj, Add (Mul (ex, Neg fo), dy)) =
1.1654 + Add (Bound aj, Add (Mul (ex, Neg fo), dy))
1.1655 + | numadd (Bound aj, Add (Mul (ex, Cx (fm, fna)), dy)) =
1.1656 + Add (Bound aj, Add (Mul (ex, Cx (fm, fna)), dy))
1.1657 + | numadd (Bound aj, Add (Mul (ex, C fk), dy)) =
1.1658 + Add (Bound aj, Add (Mul (ex, C fk), dy))
1.1659 + | numadd (Bound aj, Add (Sub (ev, ew), dy)) =
1.1660 + Add (Bound aj, Add (Sub (ev, ew), dy))
1.1661 + | numadd (Bound aj, Add (Add (et, eu), dy)) =
1.1662 + Add (Bound aj, Add (Add (et, eu), dy))
1.1663 + | numadd (Bound aj, Add (Neg es, dy)) = Add (Bound aj, Add (Neg es, dy))
1.1664 + | numadd (Bound aj, Add (Cx (eq, er), dy)) =
1.1665 + Add (Bound aj, Add (Cx (eq, er), dy))
1.1666 + | numadd (Bound aj, Add (Bound ep, dy)) = Add (Bound aj, Add (Bound ep, dy))
1.1667 + | numadd (Bound aj, Add (C eo, dy)) = Add (Bound aj, Add (C eo, dy))
1.1668 + | numadd (Bound aj, Neg dw) = Add (Bound aj, Neg dw)
1.1669 + | numadd (Bound aj, Cx (du, dv)) = Add (Bound aj, Cx (du, dv))
1.1670 + | numadd (Bound aj, Bound dt) = Add (Bound aj, Bound dt)
1.1671 + | numadd (Bound aj, C ds) = Add (Bound aj, C ds)
1.1672 + | numadd (C ai, Mul (bn, bo)) = Add (C ai, Mul (bn, bo))
1.1673 + | numadd (C ai, Sub (bl, bm)) = Add (C ai, Sub (bl, bm))
1.1674 + | numadd (C ai, Add (Mul (cj, Mul (df, dg)), bk)) =
1.1675 + Add (C ai, Add (Mul (cj, Mul (df, dg)), bk))
1.1676 + | numadd (C ai, Add (Mul (cj, Sub (dd, de)), bk)) =
1.1677 + Add (C ai, Add (Mul (cj, Sub (dd, de)), bk))
1.1678 + | numadd (C ai, Add (Mul (cj, Add (db, dc)), bk)) =
1.1679 + Add (C ai, Add (Mul (cj, Add (db, dc)), bk))
1.1680 + | numadd (C ai, Add (Mul (cj, Neg da), bk)) =
1.1681 + Add (C ai, Add (Mul (cj, Neg da), bk))
1.1682 + | numadd (C ai, Add (Mul (cj, Cx (cy, cz)), bk)) =
1.1683 + Add (C ai, Add (Mul (cj, Cx (cy, cz)), bk))
1.1684 + | numadd (C ai, Add (Mul (cj, C cw), bk)) =
1.1685 + Add (C ai, Add (Mul (cj, C cw), bk))
1.1686 + | numadd (C ai, Add (Sub (ch, ci), bk)) = Add (C ai, Add (Sub (ch, ci), bk))
1.1687 + | numadd (C ai, Add (Add (cf, cg), bk)) = Add (C ai, Add (Add (cf, cg), bk))
1.1688 + | numadd (C ai, Add (Neg ce, bk)) = Add (C ai, Add (Neg ce, bk))
1.1689 + | numadd (C ai, Add (Cx (cc, cd), bk)) = Add (C ai, Add (Cx (cc, cd), bk))
1.1690 + | numadd (C ai, Add (Bound cb, bk)) = Add (C ai, Add (Bound cb, bk))
1.1691 + | numadd (C ai, Add (C ca, bk)) = Add (C ai, Add (C ca, bk))
1.1692 + | numadd (C ai, Neg bi) = Add (C ai, Neg bi)
1.1693 + | numadd (C ai, Cx (bg, bh)) = Add (C ai, Cx (bg, bh))
1.1694 + | numadd (C ai, Bound bf) = Add (C ai, Bound bf)
1.1695 + | numadd (C b1, C b2) = C (IntInf.+ (b1, b2))
1.1696 + | numadd (Mul (ag, ah), Add (Mul (c2, Bound n2), r2)) =
1.1697 + Add (Mul (c2, Bound n2), numadd (Mul (ag, ah), r2))
1.1698 + | numadd (Sub (ae, af), Add (Mul (c2, Bound n2), r2)) =
1.1699 + Add (Mul (c2, Bound n2), numadd (Sub (ae, af), r2))
1.1700 + | numadd (Add (Mul (lr, Mul (ace, acf)), ad), Add (Mul (c2, Bound n2), r2)) =
1.1701 + Add (Mul (c2, Bound n2), numadd (Add (Mul (lr, Mul (ace, acf)), ad), r2))
1.1702 + | numadd (Add (Mul (lr, Sub (acc, acd)), ad), Add (Mul (c2, Bound n2), r2)) =
1.1703 + Add (Mul (c2, Bound n2), numadd (Add (Mul (lr, Sub (acc, acd)), ad), r2))
1.1704 + | numadd (Add (Mul (lr, Add (aca, acb)), ad), Add (Mul (c2, Bound n2), r2)) =
1.1705 + Add (Mul (c2, Bound n2), numadd (Add (Mul (lr, Add (aca, acb)), ad), r2))
1.1706 + | numadd (Add (Mul (lr, Neg abz), ad), Add (Mul (c2, Bound n2), r2)) =
1.1707 + Add (Mul (c2, Bound n2), numadd (Add (Mul (lr, Neg abz), ad), r2))
1.1708 + | numadd (Add (Mul (lr, Cx (abx, aby)), ad), Add (Mul (c2, Bound n2), r2)) =
1.1709 + Add (Mul (c2, Bound n2), numadd (Add (Mul (lr, Cx (abx, aby)), ad), r2))
1.1710 + | numadd (Add (Mul (lr, C abv), ad), Add (Mul (c2, Bound n2), r2)) =
1.1711 + Add (Mul (c2, Bound n2), numadd (Add (Mul (lr, C abv), ad), r2))
1.1712 + | numadd (Add (Sub (lp, lq), ad), Add (Mul (c2, Bound n2), r2)) =
1.1713 + Add (Mul (c2, Bound n2), numadd (Add (Sub (lp, lq), ad), r2))
1.1714 + | numadd (Add (Add (ln, lo), ad), Add (Mul (c2, Bound n2), r2)) =
1.1715 + Add (Mul (c2, Bound n2), numadd (Add (Add (ln, lo), ad), r2))
1.1716 + | numadd (Add (Neg lm, ad), Add (Mul (c2, Bound n2), r2)) =
1.1717 + Add (Mul (c2, Bound n2), numadd (Add (Neg lm, ad), r2))
1.1718 + | numadd (Add (Cx (lk, ll), ad), Add (Mul (c2, Bound n2), r2)) =
1.1719 + Add (Mul (c2, Bound n2), numadd (Add (Cx (lk, ll), ad), r2))
1.1720 + | numadd (Add (Bound lj, ad), Add (Mul (c2, Bound n2), r2)) =
1.1721 + Add (Mul (c2, Bound n2), numadd (Add (Bound lj, ad), r2))
1.1722 + | numadd (Add (C li, ad), Add (Mul (c2, Bound n2), r2)) =
1.1723 + Add (Mul (c2, Bound n2), numadd (Add (C li, ad), r2))
1.1724 + | numadd (Neg ab, Add (Mul (c2, Bound n2), r2)) =
1.1725 + Add (Mul (c2, Bound n2), numadd (Neg ab, r2))
1.1726 + | numadd (Cx (y, z), Add (Mul (c2, Bound n2), r2)) =
1.1727 + Add (Mul (c2, Bound n2), numadd (Cx (y, z), r2))
1.1728 + | numadd (Bound x, Add (Mul (c2, Bound n2), r2)) =
1.1729 + Add (Mul (c2, Bound n2), numadd (Bound x, r2))
1.1730 + | numadd (C w, Add (Mul (c2, Bound n2), r2)) =
1.1731 + Add (Mul (c2, Bound n2), numadd (C w, r2))
1.1732 + | numadd (Add (Mul (c1, Bound n1), r1), Mul (afz, aga)) =
1.1733 + Add (Mul (c1, Bound n1), numadd (r1, Mul (afz, aga)))
1.1734 + | numadd (Add (Mul (c1, Bound n1), r1), Sub (afx, afy)) =
1.1735 + Add (Mul (c1, Bound n1), numadd (r1, Sub (afx, afy)))
1.1736 + | numadd (Add (Mul (c1, Bound n1), r1), Add (Mul (ahg, Mul (ain, aio)), afw))
1.1737 + = Add (Mul (c1, Bound n1),
1.1738 + numadd (r1, Add (Mul (ahg, Mul (ain, aio)), afw)))
1.1739 + | numadd (Add (Mul (c1, Bound n1), r1), Add (Mul (ahg, Sub (ail, aim)), afw))
1.1740 + = Add (Mul (c1, Bound n1),
1.1741 + numadd (r1, Add (Mul (ahg, Sub (ail, aim)), afw)))
1.1742 + | numadd (Add (Mul (c1, Bound n1), r1), Add (Mul (ahg, Add (aij, aik)), afw))
1.1743 + = Add (Mul (c1, Bound n1),
1.1744 + numadd (r1, Add (Mul (ahg, Add (aij, aik)), afw)))
1.1745 + | numadd (Add (Mul (c1, Bound n1), r1), Add (Mul (ahg, Neg aii), afw)) =
1.1746 + Add (Mul (c1, Bound n1), numadd (r1, Add (Mul (ahg, Neg aii), afw)))
1.1747 + | numadd (Add (Mul (c1, Bound n1), r1), Add (Mul (ahg, Cx (aig, aih)), afw)) =
1.1748 + Add (Mul (c1, Bound n1), numadd (r1, Add (Mul (ahg, Cx (aig, aih)), afw)))
1.1749 + | numadd (Add (Mul (c1, Bound n1), r1), Add (Mul (ahg, C aie), afw)) =
1.1750 + Add (Mul (c1, Bound n1), numadd (r1, Add (Mul (ahg, C aie), afw)))
1.1751 + | numadd (Add (Mul (c1, Bound n1), r1), Add (Sub (ahe, ahf), afw)) =
1.1752 + Add (Mul (c1, Bound n1), numadd (r1, Add (Sub (ahe, ahf), afw)))
1.1753 + | numadd (Add (Mul (c1, Bound n1), r1), Add (Add (ahc, ahd), afw)) =
1.1754 + Add (Mul (c1, Bound n1), numadd (r1, Add (Add (ahc, ahd), afw)))
1.1755 + | numadd (Add (Mul (c1, Bound n1), r1), Add (Neg ahb, afw)) =
1.1756 + Add (Mul (c1, Bound n1), numadd (r1, Add (Neg ahb, afw)))
1.1757 + | numadd (Add (Mul (c1, Bound n1), r1), Add (Cx (agz, aha), afw)) =
1.1758 + Add (Mul (c1, Bound n1), numadd (r1, Add (Cx (agz, aha), afw)))
1.1759 + | numadd (Add (Mul (c1, Bound n1), r1), Add (Bound agy, afw)) =
1.1760 + Add (Mul (c1, Bound n1), numadd (r1, Add (Bound agy, afw)))
1.1761 + | numadd (Add (Mul (c1, Bound n1), r1), Add (C agx, afw)) =
1.1762 + Add (Mul (c1, Bound n1), numadd (r1, Add (C agx, afw)))
1.1763 + | numadd (Add (Mul (c1, Bound n1), r1), Neg afu) =
1.1764 + Add (Mul (c1, Bound n1), numadd (r1, Neg afu))
1.1765 + | numadd (Add (Mul (c1, Bound n1), r1), Cx (afs, aft)) =
1.1766 + Add (Mul (c1, Bound n1), numadd (r1, Cx (afs, aft)))
1.1767 + | numadd (Add (Mul (c1, Bound n1), r1), Bound afr) =
1.1768 + Add (Mul (c1, Bound n1), numadd (r1, Bound afr))
1.1769 + | numadd (Add (Mul (c1, Bound n1), r1), C afq) =
1.1770 + Add (Mul (c1, Bound n1), numadd (r1, C afq))
1.1771 + | numadd (Add (Mul (c1, Bound n1), r1), Add (Mul (c2, Bound n2), r2)) =
1.1772 + (if ((n1 : IntInf.int) = n2)
1.1773 + then let
1.1774 + val c = IntInf.+ (c1, c2);
1.1775 + in
1.1776 + (if ((c : IntInf.int) = (0 : IntInf.int)) then numadd (r1, r2)
1.1777 + else Add (Mul (c, Bound n1), numadd (r1, r2)))
1.1778 end
1.1779 - else (if less_eq_def3 n1 n2
1.1780 + else (if IntInf.<= (n1, n2)
1.1781 then Add (Mul (c1, Bound n1),
1.1782 numadd (r1, Add (Mul (c2, Bound n2), r2)))
1.1783 else Add (Mul (c2, Bound n2),
1.1784 - numadd (Add (Mul (c1, Bound n1), r1), r2))))
1.1785 - | numadd (Add (Mul (c1, Bound n1), r1), C afq) =
1.1786 - Add (Mul (c1, Bound n1), numadd (r1, C afq))
1.1787 - | numadd (Add (Mul (c1, Bound n1), r1), Bound afr) =
1.1788 - Add (Mul (c1, Bound n1), numadd (r1, Bound afr))
1.1789 - | numadd (Add (Mul (c1, Bound n1), r1), CX (afs, aft)) =
1.1790 - Add (Mul (c1, Bound n1), numadd (r1, CX (afs, aft)))
1.1791 - | numadd (Add (Mul (c1, Bound n1), r1), Neg afu) =
1.1792 - Add (Mul (c1, Bound n1), numadd (r1, Neg afu))
1.1793 - | numadd (Add (Mul (c1, Bound n1), r1), Add (C agx, afw)) =
1.1794 - Add (Mul (c1, Bound n1), numadd (r1, Add (C agx, afw)))
1.1795 - | numadd (Add (Mul (c1, Bound n1), r1), Add (Bound agy, afw)) =
1.1796 - Add (Mul (c1, Bound n1), numadd (r1, Add (Bound agy, afw)))
1.1797 - | numadd (Add (Mul (c1, Bound n1), r1), Add (CX (agz, aha), afw)) =
1.1798 - Add (Mul (c1, Bound n1), numadd (r1, Add (CX (agz, aha), afw)))
1.1799 - | numadd (Add (Mul (c1, Bound n1), r1), Add (Neg ahb, afw)) =
1.1800 - Add (Mul (c1, Bound n1), numadd (r1, Add (Neg ahb, afw)))
1.1801 - | numadd (Add (Mul (c1, Bound n1), r1), Add (Add (ahc, ahd), afw)) =
1.1802 - Add (Mul (c1, Bound n1), numadd (r1, Add (Add (ahc, ahd), afw)))
1.1803 - | numadd (Add (Mul (c1, Bound n1), r1), Add (Sub (ahe, ahf), afw)) =
1.1804 - Add (Mul (c1, Bound n1), numadd (r1, Add (Sub (ahe, ahf), afw)))
1.1805 - | numadd (Add (Mul (c1, Bound n1), r1), Add (Mul (ahg, C aie), afw)) =
1.1806 - Add (Mul (c1, Bound n1), numadd (r1, Add (Mul (ahg, C aie), afw)))
1.1807 - | numadd (Add (Mul (c1, Bound n1), r1), Add (Mul (ahg, CX (aig, aih)), afw)) =
1.1808 - Add (Mul (c1, Bound n1), numadd (r1, Add (Mul (ahg, CX (aig, aih)), afw)))
1.1809 - | numadd (Add (Mul (c1, Bound n1), r1), Add (Mul (ahg, Neg aii), afw)) =
1.1810 - Add (Mul (c1, Bound n1), numadd (r1, Add (Mul (ahg, Neg aii), afw)))
1.1811 - | numadd
1.1812 - (Add (Mul (c1, Bound n1), r1), Add (Mul (ahg, Add (aij, aik)), afw)) =
1.1813 - Add (Mul (c1, Bound n1), numadd (r1, Add (Mul (ahg, Add (aij, aik)), afw)))
1.1814 - | numadd
1.1815 - (Add (Mul (c1, Bound n1), r1), Add (Mul (ahg, Sub (ail, aim)), afw)) =
1.1816 - Add (Mul (c1, Bound n1), numadd (r1, Add (Mul (ahg, Sub (ail, aim)), afw)))
1.1817 - | numadd
1.1818 - (Add (Mul (c1, Bound n1), r1), Add (Mul (ahg, Mul (ain, aio)), afw)) =
1.1819 - Add (Mul (c1, Bound n1), numadd (r1, Add (Mul (ahg, Mul (ain, aio)), afw)))
1.1820 - | numadd (Add (Mul (c1, Bound n1), r1), Sub (afx, afy)) =
1.1821 - Add (Mul (c1, Bound n1), numadd (r1, Sub (afx, afy)))
1.1822 - | numadd (Add (Mul (c1, Bound n1), r1), Mul (afz, aga)) =
1.1823 - Add (Mul (c1, Bound n1), numadd (r1, Mul (afz, aga)))
1.1824 - | numadd (C w, Add (Mul (c2, Bound n2), r2)) =
1.1825 - Add (Mul (c2, Bound n2), numadd (C w, r2))
1.1826 - | numadd (Bound x, Add (Mul (c2, Bound n2), r2)) =
1.1827 - Add (Mul (c2, Bound n2), numadd (Bound x, r2))
1.1828 - | numadd (CX (y, z), Add (Mul (c2, Bound n2), r2)) =
1.1829 - Add (Mul (c2, Bound n2), numadd (CX (y, z), r2))
1.1830 - | numadd (Neg ab, Add (Mul (c2, Bound n2), r2)) =
1.1831 - Add (Mul (c2, Bound n2), numadd (Neg ab, r2))
1.1832 - | numadd (Add (C li, ad), Add (Mul (c2, Bound n2), r2)) =
1.1833 - Add (Mul (c2, Bound n2), numadd (Add (C li, ad), r2))
1.1834 - | numadd (Add (Bound lj, ad), Add (Mul (c2, Bound n2), r2)) =
1.1835 - Add (Mul (c2, Bound n2), numadd (Add (Bound lj, ad), r2))
1.1836 - | numadd (Add (CX (lk, ll), ad), Add (Mul (c2, Bound n2), r2)) =
1.1837 - Add (Mul (c2, Bound n2), numadd (Add (CX (lk, ll), ad), r2))
1.1838 - | numadd (Add (Neg lm, ad), Add (Mul (c2, Bound n2), r2)) =
1.1839 - Add (Mul (c2, Bound n2), numadd (Add (Neg lm, ad), r2))
1.1840 - | numadd (Add (Add (ln, lo), ad), Add (Mul (c2, Bound n2), r2)) =
1.1841 - Add (Mul (c2, Bound n2), numadd (Add (Add (ln, lo), ad), r2))
1.1842 - | numadd (Add (Sub (lp, lq), ad), Add (Mul (c2, Bound n2), r2)) =
1.1843 - Add (Mul (c2, Bound n2), numadd (Add (Sub (lp, lq), ad), r2))
1.1844 - | numadd (Add (Mul (lr, C abv), ad), Add (Mul (c2, Bound n2), r2)) =
1.1845 - Add (Mul (c2, Bound n2), numadd (Add (Mul (lr, C abv), ad), r2))
1.1846 - | numadd (Add (Mul (lr, CX (abx, aby)), ad), Add (Mul (c2, Bound n2), r2)) =
1.1847 - Add (Mul (c2, Bound n2), numadd (Add (Mul (lr, CX (abx, aby)), ad), r2))
1.1848 - | numadd (Add (Mul (lr, Neg abz), ad), Add (Mul (c2, Bound n2), r2)) =
1.1849 - Add (Mul (c2, Bound n2), numadd (Add (Mul (lr, Neg abz), ad), r2))
1.1850 - | numadd (Add (Mul (lr, Add (aca, acb)), ad), Add (Mul (c2, Bound n2), r2)) =
1.1851 - Add (Mul (c2, Bound n2), numadd (Add (Mul (lr, Add (aca, acb)), ad), r2))
1.1852 - | numadd (Add (Mul (lr, Sub (acc, acd)), ad), Add (Mul (c2, Bound n2), r2)) =
1.1853 - Add (Mul (c2, Bound n2), numadd (Add (Mul (lr, Sub (acc, acd)), ad), r2))
1.1854 - | numadd (Add (Mul (lr, Mul (ace, acf)), ad), Add (Mul (c2, Bound n2), r2)) =
1.1855 - Add (Mul (c2, Bound n2), numadd (Add (Mul (lr, Mul (ace, acf)), ad), r2))
1.1856 - | numadd (Sub (ae, af), Add (Mul (c2, Bound n2), r2)) =
1.1857 - Add (Mul (c2, Bound n2), numadd (Sub (ae, af), r2))
1.1858 - | numadd (Mul (ag, ah), Add (Mul (c2, Bound n2), r2)) =
1.1859 - Add (Mul (c2, Bound n2), numadd (Mul (ag, ah), r2))
1.1860 - | numadd (C b1, C b2) = C (b1 + b2)
1.1861 - | numadd (C ai, Bound bf) = Add (C ai, Bound bf)
1.1862 - | numadd (C ai, CX (bg, bh)) = Add (C ai, CX (bg, bh))
1.1863 - | numadd (C ai, Neg bi) = Add (C ai, Neg bi)
1.1864 - | numadd (C ai, Add (C ca, bk)) = Add (C ai, Add (C ca, bk))
1.1865 - | numadd (C ai, Add (Bound cb, bk)) = Add (C ai, Add (Bound cb, bk))
1.1866 - | numadd (C ai, Add (CX (cc, cd), bk)) = Add (C ai, Add (CX (cc, cd), bk))
1.1867 - | numadd (C ai, Add (Neg ce, bk)) = Add (C ai, Add (Neg ce, bk))
1.1868 - | numadd (C ai, Add (Add (cf, cg), bk)) = Add (C ai, Add (Add (cf, cg), bk))
1.1869 - | numadd (C ai, Add (Sub (ch, ci), bk)) = Add (C ai, Add (Sub (ch, ci), bk))
1.1870 - | numadd (C ai, Add (Mul (cj, C cw), bk)) =
1.1871 - Add (C ai, Add (Mul (cj, C cw), bk))
1.1872 - | numadd (C ai, Add (Mul (cj, CX (cy, cz)), bk)) =
1.1873 - Add (C ai, Add (Mul (cj, CX (cy, cz)), bk))
1.1874 - | numadd (C ai, Add (Mul (cj, Neg da), bk)) =
1.1875 - Add (C ai, Add (Mul (cj, Neg da), bk))
1.1876 - | numadd (C ai, Add (Mul (cj, Add (db, dc)), bk)) =
1.1877 - Add (C ai, Add (Mul (cj, Add (db, dc)), bk))
1.1878 - | numadd (C ai, Add (Mul (cj, Sub (dd, de)), bk)) =
1.1879 - Add (C ai, Add (Mul (cj, Sub (dd, de)), bk))
1.1880 - | numadd (C ai, Add (Mul (cj, Mul (df, dg)), bk)) =
1.1881 - Add (C ai, Add (Mul (cj, Mul (df, dg)), bk))
1.1882 - | numadd (C ai, Sub (bl, bm)) = Add (C ai, Sub (bl, bm))
1.1883 - | numadd (C ai, Mul (bn, bo)) = Add (C ai, Mul (bn, bo))
1.1884 - | numadd (Bound aj, C ds) = Add (Bound aj, C ds)
1.1885 - | numadd (Bound aj, Bound dt) = Add (Bound aj, Bound dt)
1.1886 - | numadd (Bound aj, CX (du, dv)) = Add (Bound aj, CX (du, dv))
1.1887 - | numadd (Bound aj, Neg dw) = Add (Bound aj, Neg dw)
1.1888 - | numadd (Bound aj, Add (C eo, dy)) = Add (Bound aj, Add (C eo, dy))
1.1889 - | numadd (Bound aj, Add (Bound ep, dy)) = Add (Bound aj, Add (Bound ep, dy))
1.1890 - | numadd (Bound aj, Add (CX (eq, er), dy)) =
1.1891 - Add (Bound aj, Add (CX (eq, er), dy))
1.1892 - | numadd (Bound aj, Add (Neg es, dy)) = Add (Bound aj, Add (Neg es, dy))
1.1893 - | numadd (Bound aj, Add (Add (et, eu), dy)) =
1.1894 - Add (Bound aj, Add (Add (et, eu), dy))
1.1895 - | numadd (Bound aj, Add (Sub (ev, ew), dy)) =
1.1896 - Add (Bound aj, Add (Sub (ev, ew), dy))
1.1897 - | numadd (Bound aj, Add (Mul (ex, C fk), dy)) =
1.1898 - Add (Bound aj, Add (Mul (ex, C fk), dy))
1.1899 - | numadd (Bound aj, Add (Mul (ex, CX (fm, fn')), dy)) =
1.1900 - Add (Bound aj, Add (Mul (ex, CX (fm, fn')), dy))
1.1901 - | numadd (Bound aj, Add (Mul (ex, Neg fo), dy)) =
1.1902 - Add (Bound aj, Add (Mul (ex, Neg fo), dy))
1.1903 - | numadd (Bound aj, Add (Mul (ex, Add (fp, fq)), dy)) =
1.1904 - Add (Bound aj, Add (Mul (ex, Add (fp, fq)), dy))
1.1905 - | numadd (Bound aj, Add (Mul (ex, Sub (fr, fs)), dy)) =
1.1906 - Add (Bound aj, Add (Mul (ex, Sub (fr, fs)), dy))
1.1907 - | numadd (Bound aj, Add (Mul (ex, Mul (ft, fu)), dy)) =
1.1908 - Add (Bound aj, Add (Mul (ex, Mul (ft, fu)), dy))
1.1909 - | numadd (Bound aj, Sub (dz, ea)) = Add (Bound aj, Sub (dz, ea))
1.1910 - | numadd (Bound aj, Mul (eb, ec)) = Add (Bound aj, Mul (eb, ec))
1.1911 - | numadd (CX (ak, al), C gg) = Add (CX (ak, al), C gg)
1.1912 - | numadd (CX (ak, al), Bound gh) = Add (CX (ak, al), Bound gh)
1.1913 - | numadd (CX (ak, al), CX (gi, gj)) = Add (CX (ak, al), CX (gi, gj))
1.1914 - | numadd (CX (ak, al), Neg gk) = Add (CX (ak, al), Neg gk)
1.1915 - | numadd (CX (ak, al), Add (C hc, gm)) = Add (CX (ak, al), Add (C hc, gm))
1.1916 - | numadd (CX (ak, al), Add (Bound hd, gm)) =
1.1917 - Add (CX (ak, al), Add (Bound hd, gm))
1.1918 - | numadd (CX (ak, al), Add (CX (he, hf), gm)) =
1.1919 - Add (CX (ak, al), Add (CX (he, hf), gm))
1.1920 - | numadd (CX (ak, al), Add (Neg hg, gm)) = Add (CX (ak, al), Add (Neg hg, gm))
1.1921 - | numadd (CX (ak, al), Add (Add (hh, hi), gm)) =
1.1922 - Add (CX (ak, al), Add (Add (hh, hi), gm))
1.1923 - | numadd (CX (ak, al), Add (Sub (hj, hk), gm)) =
1.1924 - Add (CX (ak, al), Add (Sub (hj, hk), gm))
1.1925 - | numadd (CX (ak, al), Add (Mul (hl, C hy), gm)) =
1.1926 - Add (CX (ak, al), Add (Mul (hl, C hy), gm))
1.1927 - | numadd (CX (ak, al), Add (Mul (hl, CX (ia, ib)), gm)) =
1.1928 - Add (CX (ak, al), Add (Mul (hl, CX (ia, ib)), gm))
1.1929 - | numadd (CX (ak, al), Add (Mul (hl, Neg ic), gm)) =
1.1930 - Add (CX (ak, al), Add (Mul (hl, Neg ic), gm))
1.1931 - | numadd (CX (ak, al), Add (Mul (hl, Add (id, ie)), gm)) =
1.1932 - Add (CX (ak, al), Add (Mul (hl, Add (id, ie)), gm))
1.1933 - | numadd (CX (ak, al), Add (Mul (hl, Sub (if', ig)), gm)) =
1.1934 - Add (CX (ak, al), Add (Mul (hl, Sub (if', ig)), gm))
1.1935 - | numadd (CX (ak, al), Add (Mul (hl, Mul (ih, ii)), gm)) =
1.1936 - Add (CX (ak, al), Add (Mul (hl, Mul (ih, ii)), gm))
1.1937 - | numadd (CX (ak, al), Sub (gn, go)) = Add (CX (ak, al), Sub (gn, go))
1.1938 - | numadd (CX (ak, al), Mul (gp, gq)) = Add (CX (ak, al), Mul (gp, gq))
1.1939 - | numadd (Neg am, C iu) = Add (Neg am, C iu)
1.1940 - | numadd (Neg am, Bound iv) = Add (Neg am, Bound iv)
1.1941 - | numadd (Neg am, CX (iw, ix)) = Add (Neg am, CX (iw, ix))
1.1942 - | numadd (Neg am, Neg iy) = Add (Neg am, Neg iy)
1.1943 - | numadd (Neg am, Add (C jq, ja)) = Add (Neg am, Add (C jq, ja))
1.1944 - | numadd (Neg am, Add (Bound jr, ja)) = Add (Neg am, Add (Bound jr, ja))
1.1945 - | numadd (Neg am, Add (CX (js, jt), ja)) = Add (Neg am, Add (CX (js, jt), ja))
1.1946 - | numadd (Neg am, Add (Neg ju, ja)) = Add (Neg am, Add (Neg ju, ja))
1.1947 - | numadd (Neg am, Add (Add (jv, jw), ja)) =
1.1948 - Add (Neg am, Add (Add (jv, jw), ja))
1.1949 - | numadd (Neg am, Add (Sub (jx, jy), ja)) =
1.1950 - Add (Neg am, Add (Sub (jx, jy), ja))
1.1951 - | numadd (Neg am, Add (Mul (jz, C km), ja)) =
1.1952 - Add (Neg am, Add (Mul (jz, C km), ja))
1.1953 - | numadd (Neg am, Add (Mul (jz, CX (ko, kp)), ja)) =
1.1954 - Add (Neg am, Add (Mul (jz, CX (ko, kp)), ja))
1.1955 - | numadd (Neg am, Add (Mul (jz, Neg kq), ja)) =
1.1956 - Add (Neg am, Add (Mul (jz, Neg kq), ja))
1.1957 - | numadd (Neg am, Add (Mul (jz, Add (kr, ks)), ja)) =
1.1958 - Add (Neg am, Add (Mul (jz, Add (kr, ks)), ja))
1.1959 - | numadd (Neg am, Add (Mul (jz, Sub (kt, ku)), ja)) =
1.1960 - Add (Neg am, Add (Mul (jz, Sub (kt, ku)), ja))
1.1961 - | numadd (Neg am, Add (Mul (jz, Mul (kv, kw)), ja)) =
1.1962 - Add (Neg am, Add (Mul (jz, Mul (kv, kw)), ja))
1.1963 - | numadd (Neg am, Sub (jb, jc)) = Add (Neg am, Sub (jb, jc))
1.1964 - | numadd (Neg am, Mul (jd, je)) = Add (Neg am, Mul (jd, je))
1.1965 - | numadd (Add (C lt, ao), C mp) = Add (Add (C lt, ao), C mp)
1.1966 - | numadd (Add (C lt, ao), Bound mq) = Add (Add (C lt, ao), Bound mq)
1.1967 - | numadd (Add (C lt, ao), CX (mr, ms)) = Add (Add (C lt, ao), CX (mr, ms))
1.1968 - | numadd (Add (C lt, ao), Neg mt) = Add (Add (C lt, ao), Neg mt)
1.1969 - | numadd (Add (C lt, ao), Add (C nl, mv)) =
1.1970 - Add (Add (C lt, ao), Add (C nl, mv))
1.1971 - | numadd (Add (C lt, ao), Add (Bound nm, mv)) =
1.1972 - Add (Add (C lt, ao), Add (Bound nm, mv))
1.1973 - | numadd (Add (C lt, ao), Add (CX (nn, no), mv)) =
1.1974 - Add (Add (C lt, ao), Add (CX (nn, no), mv))
1.1975 - | numadd (Add (C lt, ao), Add (Neg np, mv)) =
1.1976 - Add (Add (C lt, ao), Add (Neg np, mv))
1.1977 - | numadd (Add (C lt, ao), Add (Add (nq, nr), mv)) =
1.1978 - Add (Add (C lt, ao), Add (Add (nq, nr), mv))
1.1979 - | numadd (Add (C lt, ao), Add (Sub (ns, nt), mv)) =
1.1980 - Add (Add (C lt, ao), Add (Sub (ns, nt), mv))
1.1981 - | numadd (Add (C lt, ao), Add (Mul (nu, C oh), mv)) =
1.1982 - Add (Add (C lt, ao), Add (Mul (nu, C oh), mv))
1.1983 - | numadd (Add (C lt, ao), Add (Mul (nu, CX (oj, ok)), mv)) =
1.1984 - Add (Add (C lt, ao), Add (Mul (nu, CX (oj, ok)), mv))
1.1985 - | numadd (Add (C lt, ao), Add (Mul (nu, Neg ol), mv)) =
1.1986 - Add (Add (C lt, ao), Add (Mul (nu, Neg ol), mv))
1.1987 - | numadd (Add (C lt, ao), Add (Mul (nu, Add (om, on)), mv)) =
1.1988 - Add (Add (C lt, ao), Add (Mul (nu, Add (om, on)), mv))
1.1989 - | numadd (Add (C lt, ao), Add (Mul (nu, Sub (oo, op')), mv)) =
1.1990 - Add (Add (C lt, ao), Add (Mul (nu, Sub (oo, op')), mv))
1.1991 - | numadd (Add (C lt, ao), Add (Mul (nu, Mul (oq, or)), mv)) =
1.1992 - Add (Add (C lt, ao), Add (Mul (nu, Mul (oq, or)), mv))
1.1993 - | numadd (Add (C lt, ao), Sub (mw, mx)) = Add (Add (C lt, ao), Sub (mw, mx))
1.1994 - | numadd (Add (C lt, ao), Mul (my, mz)) = Add (Add (C lt, ao), Mul (my, mz))
1.1995 - | numadd (Add (Bound lu, ao), C pd) = Add (Add (Bound lu, ao), C pd)
1.1996 - | numadd (Add (Bound lu, ao), Bound pe) = Add (Add (Bound lu, ao), Bound pe)
1.1997 - | numadd (Add (Bound lu, ao), CX (pf, pg)) =
1.1998 - Add (Add (Bound lu, ao), CX (pf, pg))
1.1999 - | numadd (Add (Bound lu, ao), Neg ph) = Add (Add (Bound lu, ao), Neg ph)
1.2000 - | numadd (Add (Bound lu, ao), Add (C pz, pj)) =
1.2001 - Add (Add (Bound lu, ao), Add (C pz, pj))
1.2002 - | numadd (Add (Bound lu, ao), Add (Bound qa, pj)) =
1.2003 - Add (Add (Bound lu, ao), Add (Bound qa, pj))
1.2004 - | numadd (Add (Bound lu, ao), Add (CX (qb, qc), pj)) =
1.2005 - Add (Add (Bound lu, ao), Add (CX (qb, qc), pj))
1.2006 - | numadd (Add (Bound lu, ao), Add (Neg qd, pj)) =
1.2007 - Add (Add (Bound lu, ao), Add (Neg qd, pj))
1.2008 - | numadd (Add (Bound lu, ao), Add (Add (qe, qf), pj)) =
1.2009 - Add (Add (Bound lu, ao), Add (Add (qe, qf), pj))
1.2010 - | numadd (Add (Bound lu, ao), Add (Sub (qg, qh), pj)) =
1.2011 - Add (Add (Bound lu, ao), Add (Sub (qg, qh), pj))
1.2012 - | numadd (Add (Bound lu, ao), Add (Mul (qi, C qv), pj)) =
1.2013 - Add (Add (Bound lu, ao), Add (Mul (qi, C qv), pj))
1.2014 - | numadd (Add (Bound lu, ao), Add (Mul (qi, CX (qx, qy)), pj)) =
1.2015 - Add (Add (Bound lu, ao), Add (Mul (qi, CX (qx, qy)), pj))
1.2016 - | numadd (Add (Bound lu, ao), Add (Mul (qi, Neg qz), pj)) =
1.2017 - Add (Add (Bound lu, ao), Add (Mul (qi, Neg qz), pj))
1.2018 - | numadd (Add (Bound lu, ao), Add (Mul (qi, Add (ra, rb)), pj)) =
1.2019 - Add (Add (Bound lu, ao), Add (Mul (qi, Add (ra, rb)), pj))
1.2020 - | numadd (Add (Bound lu, ao), Add (Mul (qi, Sub (rc, rd)), pj)) =
1.2021 - Add (Add (Bound lu, ao), Add (Mul (qi, Sub (rc, rd)), pj))
1.2022 - | numadd (Add (Bound lu, ao), Add (Mul (qi, Mul (re, rf)), pj)) =
1.2023 - Add (Add (Bound lu, ao), Add (Mul (qi, Mul (re, rf)), pj))
1.2024 - | numadd (Add (Bound lu, ao), Sub (pk, pl)) =
1.2025 - Add (Add (Bound lu, ao), Sub (pk, pl))
1.2026 - | numadd (Add (Bound lu, ao), Mul (pm, pn)) =
1.2027 - Add (Add (Bound lu, ao), Mul (pm, pn))
1.2028 - | numadd (Add (CX (lv, lw), ao), C rr) = Add (Add (CX (lv, lw), ao), C rr)
1.2029 - | numadd (Add (CX (lv, lw), ao), Bound rs) =
1.2030 - Add (Add (CX (lv, lw), ao), Bound rs)
1.2031 - | numadd (Add (CX (lv, lw), ao), CX (rt, ru)) =
1.2032 - Add (Add (CX (lv, lw), ao), CX (rt, ru))
1.2033 - | numadd (Add (CX (lv, lw), ao), Neg rv) = Add (Add (CX (lv, lw), ao), Neg rv)
1.2034 - | numadd (Add (CX (lv, lw), ao), Add (C sn, rx)) =
1.2035 - Add (Add (CX (lv, lw), ao), Add (C sn, rx))
1.2036 - | numadd (Add (CX (lv, lw), ao), Add (Bound so, rx)) =
1.2037 - Add (Add (CX (lv, lw), ao), Add (Bound so, rx))
1.2038 - | numadd (Add (CX (lv, lw), ao), Add (CX (sp, sq), rx)) =
1.2039 - Add (Add (CX (lv, lw), ao), Add (CX (sp, sq), rx))
1.2040 - | numadd (Add (CX (lv, lw), ao), Add (Neg sr, rx)) =
1.2041 - Add (Add (CX (lv, lw), ao), Add (Neg sr, rx))
1.2042 - | numadd (Add (CX (lv, lw), ao), Add (Add (ss, st), rx)) =
1.2043 - Add (Add (CX (lv, lw), ao), Add (Add (ss, st), rx))
1.2044 - | numadd (Add (CX (lv, lw), ao), Add (Sub (su, sv), rx)) =
1.2045 - Add (Add (CX (lv, lw), ao), Add (Sub (su, sv), rx))
1.2046 - | numadd (Add (CX (lv, lw), ao), Add (Mul (sw, C tj), rx)) =
1.2047 - Add (Add (CX (lv, lw), ao), Add (Mul (sw, C tj), rx))
1.2048 - | numadd (Add (CX (lv, lw), ao), Add (Mul (sw, CX (tl, tm)), rx)) =
1.2049 - Add (Add (CX (lv, lw), ao), Add (Mul (sw, CX (tl, tm)), rx))
1.2050 - | numadd (Add (CX (lv, lw), ao), Add (Mul (sw, Neg tn), rx)) =
1.2051 - Add (Add (CX (lv, lw), ao), Add (Mul (sw, Neg tn), rx))
1.2052 - | numadd (Add (CX (lv, lw), ao), Add (Mul (sw, Add (to, tp)), rx)) =
1.2053 - Add (Add (CX (lv, lw), ao), Add (Mul (sw, Add (to, tp)), rx))
1.2054 - | numadd (Add (CX (lv, lw), ao), Add (Mul (sw, Sub (tq, tr)), rx)) =
1.2055 - Add (Add (CX (lv, lw), ao), Add (Mul (sw, Sub (tq, tr)), rx))
1.2056 - | numadd (Add (CX (lv, lw), ao), Add (Mul (sw, Mul (ts, tt)), rx)) =
1.2057 - Add (Add (CX (lv, lw), ao), Add (Mul (sw, Mul (ts, tt)), rx))
1.2058 - | numadd (Add (CX (lv, lw), ao), Sub (ry, rz)) =
1.2059 - Add (Add (CX (lv, lw), ao), Sub (ry, rz))
1.2060 - | numadd (Add (CX (lv, lw), ao), Mul (sa, sb)) =
1.2061 - Add (Add (CX (lv, lw), ao), Mul (sa, sb))
1.2062 - | numadd (Add (Neg lx, ao), C uf) = Add (Add (Neg lx, ao), C uf)
1.2063 - | numadd (Add (Neg lx, ao), Bound ug) = Add (Add (Neg lx, ao), Bound ug)
1.2064 - | numadd (Add (Neg lx, ao), CX (uh, ui)) = Add (Add (Neg lx, ao), CX (uh, ui))
1.2065 - | numadd (Add (Neg lx, ao), Neg uj) = Add (Add (Neg lx, ao), Neg uj)
1.2066 - | numadd (Add (Neg lx, ao), Add (C vb, ul)) =
1.2067 - Add (Add (Neg lx, ao), Add (C vb, ul))
1.2068 - | numadd (Add (Neg lx, ao), Add (Bound vc, ul)) =
1.2069 - Add (Add (Neg lx, ao), Add (Bound vc, ul))
1.2070 - | numadd (Add (Neg lx, ao), Add (CX (vd, ve), ul)) =
1.2071 - Add (Add (Neg lx, ao), Add (CX (vd, ve), ul))
1.2072 - | numadd (Add (Neg lx, ao), Add (Neg vf, ul)) =
1.2073 - Add (Add (Neg lx, ao), Add (Neg vf, ul))
1.2074 - | numadd (Add (Neg lx, ao), Add (Add (vg, vh), ul)) =
1.2075 - Add (Add (Neg lx, ao), Add (Add (vg, vh), ul))
1.2076 - | numadd (Add (Neg lx, ao), Add (Sub (vi, vj), ul)) =
1.2077 - Add (Add (Neg lx, ao), Add (Sub (vi, vj), ul))
1.2078 - | numadd (Add (Neg lx, ao), Add (Mul (vk, C vx), ul)) =
1.2079 - Add (Add (Neg lx, ao), Add (Mul (vk, C vx), ul))
1.2080 - | numadd (Add (Neg lx, ao), Add (Mul (vk, CX (vz, wa)), ul)) =
1.2081 - Add (Add (Neg lx, ao), Add (Mul (vk, CX (vz, wa)), ul))
1.2082 - | numadd (Add (Neg lx, ao), Add (Mul (vk, Neg wb), ul)) =
1.2083 - Add (Add (Neg lx, ao), Add (Mul (vk, Neg wb), ul))
1.2084 - | numadd (Add (Neg lx, ao), Add (Mul (vk, Add (wc, wd)), ul)) =
1.2085 - Add (Add (Neg lx, ao), Add (Mul (vk, Add (wc, wd)), ul))
1.2086 - | numadd (Add (Neg lx, ao), Add (Mul (vk, Sub (we, wf)), ul)) =
1.2087 - Add (Add (Neg lx, ao), Add (Mul (vk, Sub (we, wf)), ul))
1.2088 - | numadd (Add (Neg lx, ao), Add (Mul (vk, Mul (wg, wh)), ul)) =
1.2089 - Add (Add (Neg lx, ao), Add (Mul (vk, Mul (wg, wh)), ul))
1.2090 - | numadd (Add (Neg lx, ao), Sub (um, un)) =
1.2091 - Add (Add (Neg lx, ao), Sub (um, un))
1.2092 - | numadd (Add (Neg lx, ao), Mul (uo, up)) =
1.2093 - Add (Add (Neg lx, ao), Mul (uo, up))
1.2094 - | numadd (Add (Add (ly, lz), ao), C wt) = Add (Add (Add (ly, lz), ao), C wt)
1.2095 - | numadd (Add (Add (ly, lz), ao), Bound wu) =
1.2096 - Add (Add (Add (ly, lz), ao), Bound wu)
1.2097 - | numadd (Add (Add (ly, lz), ao), CX (wv, ww)) =
1.2098 - Add (Add (Add (ly, lz), ao), CX (wv, ww))
1.2099 - | numadd (Add (Add (ly, lz), ao), Neg wx) =
1.2100 - Add (Add (Add (ly, lz), ao), Neg wx)
1.2101 - | numadd (Add (Add (ly, lz), ao), Add (C xp, wz)) =
1.2102 - Add (Add (Add (ly, lz), ao), Add (C xp, wz))
1.2103 - | numadd (Add (Add (ly, lz), ao), Add (Bound xq, wz)) =
1.2104 - Add (Add (Add (ly, lz), ao), Add (Bound xq, wz))
1.2105 - | numadd (Add (Add (ly, lz), ao), Add (CX (xr, xs), wz)) =
1.2106 - Add (Add (Add (ly, lz), ao), Add (CX (xr, xs), wz))
1.2107 - | numadd (Add (Add (ly, lz), ao), Add (Neg xt, wz)) =
1.2108 - Add (Add (Add (ly, lz), ao), Add (Neg xt, wz))
1.2109 - | numadd (Add (Add (ly, lz), ao), Add (Add (xu, xv), wz)) =
1.2110 - Add (Add (Add (ly, lz), ao), Add (Add (xu, xv), wz))
1.2111 - | numadd (Add (Add (ly, lz), ao), Add (Sub (xw, xx), wz)) =
1.2112 - Add (Add (Add (ly, lz), ao), Add (Sub (xw, xx), wz))
1.2113 - | numadd (Add (Add (ly, lz), ao), Add (Mul (xy, C yl), wz)) =
1.2114 - Add (Add (Add (ly, lz), ao), Add (Mul (xy, C yl), wz))
1.2115 - | numadd (Add (Add (ly, lz), ao), Add (Mul (xy, CX (yn, yo)), wz)) =
1.2116 - Add (Add (Add (ly, lz), ao), Add (Mul (xy, CX (yn, yo)), wz))
1.2117 - | numadd (Add (Add (ly, lz), ao), Add (Mul (xy, Neg yp), wz)) =
1.2118 - Add (Add (Add (ly, lz), ao), Add (Mul (xy, Neg yp), wz))
1.2119 - | numadd (Add (Add (ly, lz), ao), Add (Mul (xy, Add (yq, yr)), wz)) =
1.2120 - Add (Add (Add (ly, lz), ao), Add (Mul (xy, Add (yq, yr)), wz))
1.2121 - | numadd (Add (Add (ly, lz), ao), Add (Mul (xy, Sub (ys, yt)), wz)) =
1.2122 - Add (Add (Add (ly, lz), ao), Add (Mul (xy, Sub (ys, yt)), wz))
1.2123 - | numadd (Add (Add (ly, lz), ao), Add (Mul (xy, Mul (yu, yv)), wz)) =
1.2124 - Add (Add (Add (ly, lz), ao), Add (Mul (xy, Mul (yu, yv)), wz))
1.2125 - | numadd (Add (Add (ly, lz), ao), Sub (xa, xb)) =
1.2126 - Add (Add (Add (ly, lz), ao), Sub (xa, xb))
1.2127 - | numadd (Add (Add (ly, lz), ao), Mul (xc, xd)) =
1.2128 - Add (Add (Add (ly, lz), ao), Mul (xc, xd))
1.2129 - | numadd (Add (Sub (ma, mb), ao), C zh) = Add (Add (Sub (ma, mb), ao), C zh)
1.2130 - | numadd (Add (Sub (ma, mb), ao), Bound zi) =
1.2131 - Add (Add (Sub (ma, mb), ao), Bound zi)
1.2132 - | numadd (Add (Sub (ma, mb), ao), CX (zj, zk)) =
1.2133 - Add (Add (Sub (ma, mb), ao), CX (zj, zk))
1.2134 - | numadd (Add (Sub (ma, mb), ao), Neg zl) =
1.2135 - Add (Add (Sub (ma, mb), ao), Neg zl)
1.2136 - | numadd (Add (Sub (ma, mb), ao), Add (C aad, zn)) =
1.2137 - Add (Add (Sub (ma, mb), ao), Add (C aad, zn))
1.2138 - | numadd (Add (Sub (ma, mb), ao), Add (Bound aae, zn)) =
1.2139 - Add (Add (Sub (ma, mb), ao), Add (Bound aae, zn))
1.2140 - | numadd (Add (Sub (ma, mb), ao), Add (CX (aaf, aag), zn)) =
1.2141 - Add (Add (Sub (ma, mb), ao), Add (CX (aaf, aag), zn))
1.2142 - | numadd (Add (Sub (ma, mb), ao), Add (Neg aah, zn)) =
1.2143 - Add (Add (Sub (ma, mb), ao), Add (Neg aah, zn))
1.2144 - | numadd (Add (Sub (ma, mb), ao), Add (Add (aai, aaj), zn)) =
1.2145 - Add (Add (Sub (ma, mb), ao), Add (Add (aai, aaj), zn))
1.2146 - | numadd (Add (Sub (ma, mb), ao), Add (Sub (aak, aal), zn)) =
1.2147 - Add (Add (Sub (ma, mb), ao), Add (Sub (aak, aal), zn))
1.2148 - | numadd (Add (Sub (ma, mb), ao), Add (Mul (aam, C aaz), zn)) =
1.2149 - Add (Add (Sub (ma, mb), ao), Add (Mul (aam, C aaz), zn))
1.2150 - | numadd (Add (Sub (ma, mb), ao), Add (Mul (aam, CX (abb, abc)), zn)) =
1.2151 - Add (Add (Sub (ma, mb), ao), Add (Mul (aam, CX (abb, abc)), zn))
1.2152 - | numadd (Add (Sub (ma, mb), ao), Add (Mul (aam, Neg abd), zn)) =
1.2153 - Add (Add (Sub (ma, mb), ao), Add (Mul (aam, Neg abd), zn))
1.2154 - | numadd (Add (Sub (ma, mb), ao), Add (Mul (aam, Add (abe, abf)), zn)) =
1.2155 - Add (Add (Sub (ma, mb), ao), Add (Mul (aam, Add (abe, abf)), zn))
1.2156 - | numadd (Add (Sub (ma, mb), ao), Add (Mul (aam, Sub (abg, abh)), zn)) =
1.2157 - Add (Add (Sub (ma, mb), ao), Add (Mul (aam, Sub (abg, abh)), zn))
1.2158 - | numadd (Add (Sub (ma, mb), ao), Add (Mul (aam, Mul (abi, abj)), zn)) =
1.2159 - Add (Add (Sub (ma, mb), ao), Add (Mul (aam, Mul (abi, abj)), zn))
1.2160 - | numadd (Add (Sub (ma, mb), ao), Sub (zo, zp)) =
1.2161 - Add (Add (Sub (ma, mb), ao), Sub (zo, zp))
1.2162 - | numadd (Add (Sub (ma, mb), ao), Mul (zq, zr)) =
1.2163 - Add (Add (Sub (ma, mb), ao), Mul (zq, zr))
1.2164 - | numadd (Add (Mul (mc, C acg), ao), C adc) =
1.2165 - Add (Add (Mul (mc, C acg), ao), C adc)
1.2166 - | numadd (Add (Mul (mc, C acg), ao), Bound add) =
1.2167 - Add (Add (Mul (mc, C acg), ao), Bound add)
1.2168 - | numadd (Add (Mul (mc, C acg), ao), CX (ade, adf)) =
1.2169 - Add (Add (Mul (mc, C acg), ao), CX (ade, adf))
1.2170 - | numadd (Add (Mul (mc, C acg), ao), Neg adg) =
1.2171 - Add (Add (Mul (mc, C acg), ao), Neg adg)
1.2172 - | numadd (Add (Mul (mc, C acg), ao), Add (C ady, adi)) =
1.2173 - Add (Add (Mul (mc, C acg), ao), Add (C ady, adi))
1.2174 - | numadd (Add (Mul (mc, C acg), ao), Add (Bound adz, adi)) =
1.2175 - Add (Add (Mul (mc, C acg), ao), Add (Bound adz, adi))
1.2176 - | numadd (Add (Mul (mc, C acg), ao), Add (CX (aea, aeb), adi)) =
1.2177 - Add (Add (Mul (mc, C acg), ao), Add (CX (aea, aeb), adi))
1.2178 - | numadd (Add (Mul (mc, C acg), ao), Add (Neg aec, adi)) =
1.2179 - Add (Add (Mul (mc, C acg), ao), Add (Neg aec, adi))
1.2180 - | numadd (Add (Mul (mc, C acg), ao), Add (Add (aed, aee), adi)) =
1.2181 - Add (Add (Mul (mc, C acg), ao), Add (Add (aed, aee), adi))
1.2182 - | numadd (Add (Mul (mc, C acg), ao), Add (Sub (aef, aeg), adi)) =
1.2183 - Add (Add (Mul (mc, C acg), ao), Add (Sub (aef, aeg), adi))
1.2184 - | numadd (Add (Mul (mc, C acg), ao), Add (Mul (aeh, C aeu), adi)) =
1.2185 - Add (Add (Mul (mc, C acg), ao), Add (Mul (aeh, C aeu), adi))
1.2186 - | numadd (Add (Mul (mc, C acg), ao), Add (Mul (aeh, CX (aew, aex)), adi)) =
1.2187 - Add (Add (Mul (mc, C acg), ao), Add (Mul (aeh, CX (aew, aex)), adi))
1.2188 - | numadd (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Neg aey), adi)) =
1.2189 - Add (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Neg aey), adi))
1.2190 - | numadd (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Add (aez, afa)), adi)) =
1.2191 - Add (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Add (aez, afa)), adi))
1.2192 - | numadd (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Sub (afb, afc)), adi)) =
1.2193 - Add (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Sub (afb, afc)), adi))
1.2194 - | numadd (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Mul (afd, afe)), adi)) =
1.2195 - Add (Add (Mul (mc, C acg), ao), Add (Mul (aeh, Mul (afd, afe)), adi))
1.2196 - | numadd (Add (Mul (mc, C acg), ao), Sub (adj, adk)) =
1.2197 - Add (Add (Mul (mc, C acg), ao), Sub (adj, adk))
1.2198 - | numadd (Add (Mul (mc, C acg), ao), Mul (adl, adm)) =
1.2199 - Add (Add (Mul (mc, C acg), ao), Mul (adl, adm))
1.2200 - | numadd (Add (Mul (mc, CX (aci, acj)), ao), C ajl) =
1.2201 - Add (Add (Mul (mc, CX (aci, acj)), ao), C ajl)
1.2202 - | numadd (Add (Mul (mc, CX (aci, acj)), ao), Bound ajm) =
1.2203 - Add (Add (Mul (mc, CX (aci, acj)), ao), Bound ajm)
1.2204 - | numadd (Add (Mul (mc, CX (aci, acj)), ao), CX (ajn, ajo)) =
1.2205 - Add (Add (Mul (mc, CX (aci, acj)), ao), CX (ajn, ajo))
1.2206 - | numadd (Add (Mul (mc, CX (aci, acj)), ao), Neg ajp) =
1.2207 - Add (Add (Mul (mc, CX (aci, acj)), ao), Neg ajp)
1.2208 - | numadd (Add (Mul (mc, CX (aci, acj)), ao), Add (C akh, ajr)) =
1.2209 - Add (Add (Mul (mc, CX (aci, acj)), ao), Add (C akh, ajr))
1.2210 - | numadd (Add (Mul (mc, CX (aci, acj)), ao), Add (Bound aki, ajr)) =
1.2211 - Add (Add (Mul (mc, CX (aci, acj)), ao), Add (Bound aki, ajr))
1.2212 - | numadd (Add (Mul (mc, CX (aci, acj)), ao), Add (CX (akj, akk), ajr)) =
1.2213 - Add (Add (Mul (mc, CX (aci, acj)), ao), Add (CX (akj, akk), ajr))
1.2214 - | numadd (Add (Mul (mc, CX (aci, acj)), ao), Add (Neg akl, ajr)) =
1.2215 - Add (Add (Mul (mc, CX (aci, acj)), ao), Add (Neg akl, ajr))
1.2216 - | numadd (Add (Mul (mc, CX (aci, acj)), ao), Add (Add (akm, akn), ajr)) =
1.2217 - Add (Add (Mul (mc, CX (aci, acj)), ao), Add (Add (akm, akn), ajr))
1.2218 - | numadd (Add (Mul (mc, CX (aci, acj)), ao), Add (Sub (ako, akp), ajr)) =
1.2219 - Add (Add (Mul (mc, CX (aci, acj)), ao), Add (Sub (ako, akp), ajr))
1.2220 - | numadd (Add (Mul (mc, CX (aci, acj)), ao), Add (Mul (akq, C ald), ajr)) =
1.2221 - Add (Add (Mul (mc, CX (aci, acj)), ao), Add (Mul (akq, C ald), ajr))
1.2222 - | numadd
1.2223 - (Add (Mul (mc, CX (aci, acj)), ao), Add (Mul (akq, CX (alf, alg)), ajr)) =
1.2224 - Add (Add (Mul (mc, CX (aci, acj)), ao), Add (Mul (akq, CX (alf, alg)), ajr))
1.2225 - | numadd (Add (Mul (mc, CX (aci, acj)), ao), Add (Mul (akq, Neg alh), ajr)) =
1.2226 - Add (Add (Mul (mc, CX (aci, acj)), ao), Add (Mul (akq, Neg alh), ajr))
1.2227 - | numadd
1.2228 - (Add (Mul (mc, CX (aci, acj)), ao),
1.2229 - Add (Mul (akq, Add (ali, alj)), ajr)) =
1.2230 - Add (Add (Mul (mc, CX (aci, acj)), ao),
1.2231 - Add (Mul (akq, Add (ali, alj)), ajr))
1.2232 - | numadd
1.2233 - (Add (Mul (mc, CX (aci, acj)), ao),
1.2234 - Add (Mul (akq, Sub (alk, all)), ajr)) =
1.2235 - Add (Add (Mul (mc, CX (aci, acj)), ao),
1.2236 - Add (Mul (akq, Sub (alk, all)), ajr))
1.2237 - | numadd
1.2238 - (Add (Mul (mc, CX (aci, acj)), ao),
1.2239 - Add (Mul (akq, Mul (alm, aln)), ajr)) =
1.2240 - Add (Add (Mul (mc, CX (aci, acj)), ao),
1.2241 - Add (Mul (akq, Mul (alm, aln)), ajr))
1.2242 - | numadd (Add (Mul (mc, CX (aci, acj)), ao), Sub (ajs, ajt)) =
1.2243 - Add (Add (Mul (mc, CX (aci, acj)), ao), Sub (ajs, ajt))
1.2244 - | numadd (Add (Mul (mc, CX (aci, acj)), ao), Mul (aju, ajv)) =
1.2245 - Add (Add (Mul (mc, CX (aci, acj)), ao), Mul (aju, ajv))
1.2246 - | numadd (Add (Mul (mc, Neg ack), ao), C alz) =
1.2247 - Add (Add (Mul (mc, Neg ack), ao), C alz)
1.2248 - | numadd (Add (Mul (mc, Neg ack), ao), Bound ama) =
1.2249 - Add (Add (Mul (mc, Neg ack), ao), Bound ama)
1.2250 - | numadd (Add (Mul (mc, Neg ack), ao), CX (amb, amc)) =
1.2251 - Add (Add (Mul (mc, Neg ack), ao), CX (amb, amc))
1.2252 - | numadd (Add (Mul (mc, Neg ack), ao), Neg amd) =
1.2253 - Add (Add (Mul (mc, Neg ack), ao), Neg amd)
1.2254 - | numadd (Add (Mul (mc, Neg ack), ao), Add (C amv, amf)) =
1.2255 - Add (Add (Mul (mc, Neg ack), ao), Add (C amv, amf))
1.2256 - | numadd (Add (Mul (mc, Neg ack), ao), Add (Bound amw, amf)) =
1.2257 - Add (Add (Mul (mc, Neg ack), ao), Add (Bound amw, amf))
1.2258 - | numadd (Add (Mul (mc, Neg ack), ao), Add (CX (amx, amy), amf)) =
1.2259 - Add (Add (Mul (mc, Neg ack), ao), Add (CX (amx, amy), amf))
1.2260 - | numadd (Add (Mul (mc, Neg ack), ao), Add (Neg amz, amf)) =
1.2261 - Add (Add (Mul (mc, Neg ack), ao), Add (Neg amz, amf))
1.2262 - | numadd (Add (Mul (mc, Neg ack), ao), Add (Add (ana, anb), amf)) =
1.2263 - Add (Add (Mul (mc, Neg ack), ao), Add (Add (ana, anb), amf))
1.2264 - | numadd (Add (Mul (mc, Neg ack), ao), Add (Sub (anc, and'), amf)) =
1.2265 - Add (Add (Mul (mc, Neg ack), ao), Add (Sub (anc, and'), amf))
1.2266 - | numadd (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, C anr), amf)) =
1.2267 - Add (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, C anr), amf))
1.2268 - | numadd (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, CX (ant, anu)), amf)) =
1.2269 - Add (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, CX (ant, anu)), amf))
1.2270 - | numadd (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Neg anv), amf)) =
1.2271 - Add (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Neg anv), amf))
1.2272 - | numadd (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Add (anw, anx)), amf)) =
1.2273 - Add (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Add (anw, anx)), amf))
1.2274 - | numadd (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Sub (any, anz)), amf)) =
1.2275 - Add (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Sub (any, anz)), amf))
1.2276 - | numadd (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Mul (aoa, aob)), amf)) =
1.2277 - Add (Add (Mul (mc, Neg ack), ao), Add (Mul (ane, Mul (aoa, aob)), amf))
1.2278 - | numadd (Add (Mul (mc, Neg ack), ao), Sub (amg, amh)) =
1.2279 - Add (Add (Mul (mc, Neg ack), ao), Sub (amg, amh))
1.2280 - | numadd (Add (Mul (mc, Neg ack), ao), Mul (ami, amj)) =
1.2281 - Add (Add (Mul (mc, Neg ack), ao), Mul (ami, amj))
1.2282 - | numadd (Add (Mul (mc, Add (acl, acm)), ao), C aon) =
1.2283 - Add (Add (Mul (mc, Add (acl, acm)), ao), C aon)
1.2284 - | numadd (Add (Mul (mc, Add (acl, acm)), ao), Bound aoo) =
1.2285 - Add (Add (Mul (mc, Add (acl, acm)), ao), Bound aoo)
1.2286 - | numadd (Add (Mul (mc, Add (acl, acm)), ao), CX (aop, aoq)) =
1.2287 - Add (Add (Mul (mc, Add (acl, acm)), ao), CX (aop, aoq))
1.2288 - | numadd (Add (Mul (mc, Add (acl, acm)), ao), Neg aor) =
1.2289 - Add (Add (Mul (mc, Add (acl, acm)), ao), Neg aor)
1.2290 - | numadd (Add (Mul (mc, Add (acl, acm)), ao), Add (C apj, aot)) =
1.2291 - Add (Add (Mul (mc, Add (acl, acm)), ao), Add (C apj, aot))
1.2292 - | numadd (Add (Mul (mc, Add (acl, acm)), ao), Add (Bound apk, aot)) =
1.2293 - Add (Add (Mul (mc, Add (acl, acm)), ao), Add (Bound apk, aot))
1.2294 - | numadd (Add (Mul (mc, Add (acl, acm)), ao), Add (CX (apl, apm), aot)) =
1.2295 - Add (Add (Mul (mc, Add (acl, acm)), ao), Add (CX (apl, apm), aot))
1.2296 - | numadd (Add (Mul (mc, Add (acl, acm)), ao), Add (Neg apn, aot)) =
1.2297 - Add (Add (Mul (mc, Add (acl, acm)), ao), Add (Neg apn, aot))
1.2298 - | numadd (Add (Mul (mc, Add (acl, acm)), ao), Add (Add (apo, app), aot)) =
1.2299 - Add (Add (Mul (mc, Add (acl, acm)), ao), Add (Add (apo, app), aot))
1.2300 - | numadd (Add (Mul (mc, Add (acl, acm)), ao), Add (Sub (apq, apr), aot)) =
1.2301 - Add (Add (Mul (mc, Add (acl, acm)), ao), Add (Sub (apq, apr), aot))
1.2302 - | numadd (Add (Mul (mc, Add (acl, acm)), ao), Add (Mul (aps, C aqf), aot)) =
1.2303 - Add (Add (Mul (mc, Add (acl, acm)), ao), Add (Mul (aps, C aqf), aot))
1.2304 - | numadd
1.2305 - (Add (Mul (mc, Add (acl, acm)), ao),
1.2306 - Add (Mul (aps, CX (aqh, aqi)), aot)) =
1.2307 - Add (Add (Mul (mc, Add (acl, acm)), ao),
1.2308 - Add (Mul (aps, CX (aqh, aqi)), aot))
1.2309 - | numadd (Add (Mul (mc, Add (acl, acm)), ao), Add (Mul (aps, Neg aqj), aot)) =
1.2310 - Add (Add (Mul (mc, Add (acl, acm)), ao), Add (Mul (aps, Neg aqj), aot))
1.2311 - | numadd
1.2312 - (Add (Mul (mc, Add (acl, acm)), ao),
1.2313 - Add (Mul (aps, Add (aqk, aql)), aot)) =
1.2314 - Add (Add (Mul (mc, Add (acl, acm)), ao),
1.2315 - Add (Mul (aps, Add (aqk, aql)), aot))
1.2316 - | numadd
1.2317 - (Add (Mul (mc, Add (acl, acm)), ao),
1.2318 - Add (Mul (aps, Sub (aqm, aqn)), aot)) =
1.2319 - Add (Add (Mul (mc, Add (acl, acm)), ao),
1.2320 - Add (Mul (aps, Sub (aqm, aqn)), aot))
1.2321 - | numadd
1.2322 - (Add (Mul (mc, Add (acl, acm)), ao),
1.2323 - Add (Mul (aps, Mul (aqo, aqp)), aot)) =
1.2324 - Add (Add (Mul (mc, Add (acl, acm)), ao),
1.2325 - Add (Mul (aps, Mul (aqo, aqp)), aot))
1.2326 - | numadd (Add (Mul (mc, Add (acl, acm)), ao), Sub (aou, aov)) =
1.2327 - Add (Add (Mul (mc, Add (acl, acm)), ao), Sub (aou, aov))
1.2328 - | numadd (Add (Mul (mc, Add (acl, acm)), ao), Mul (aow, aox)) =
1.2329 - Add (Add (Mul (mc, Add (acl, acm)), ao), Mul (aow, aox))
1.2330 - | numadd (Add (Mul (mc, Sub (acn, aco)), ao), C arb) =
1.2331 - Add (Add (Mul (mc, Sub (acn, aco)), ao), C arb)
1.2332 - | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Bound arc) =
1.2333 - Add (Add (Mul (mc, Sub (acn, aco)), ao), Bound arc)
1.2334 - | numadd (Add (Mul (mc, Sub (acn, aco)), ao), CX (ard, are)) =
1.2335 - Add (Add (Mul (mc, Sub (acn, aco)), ao), CX (ard, are))
1.2336 - | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Neg arf) =
1.2337 - Add (Add (Mul (mc, Sub (acn, aco)), ao), Neg arf)
1.2338 - | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Add (C arx, arh)) =
1.2339 - Add (Add (Mul (mc, Sub (acn, aco)), ao), Add (C arx, arh))
1.2340 - | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Add (Bound ary, arh)) =
1.2341 - Add (Add (Mul (mc, Sub (acn, aco)), ao), Add (Bound ary, arh))
1.2342 - | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Add (CX (arz, asa), arh)) =
1.2343 - Add (Add (Mul (mc, Sub (acn, aco)), ao), Add (CX (arz, asa), arh))
1.2344 - | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Add (Neg asb, arh)) =
1.2345 - Add (Add (Mul (mc, Sub (acn, aco)), ao), Add (Neg asb, arh))
1.2346 - | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Add (Add (asc, asd), arh)) =
1.2347 - Add (Add (Mul (mc, Sub (acn, aco)), ao), Add (Add (asc, asd), arh))
1.2348 - | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Add (Sub (ase, asf), arh)) =
1.2349 - Add (Add (Mul (mc, Sub (acn, aco)), ao), Add (Sub (ase, asf), arh))
1.2350 - | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Add (Mul (asg, C ast), arh)) =
1.2351 - Add (Add (Mul (mc, Sub (acn, aco)), ao), Add (Mul (asg, C ast), arh))
1.2352 - | numadd
1.2353 - (Add (Mul (mc, Sub (acn, aco)), ao),
1.2354 - Add (Mul (asg, CX (asv, asw)), arh)) =
1.2355 - Add (Add (Mul (mc, Sub (acn, aco)), ao),
1.2356 - Add (Mul (asg, CX (asv, asw)), arh))
1.2357 - | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Add (Mul (asg, Neg asx), arh)) =
1.2358 - Add (Add (Mul (mc, Sub (acn, aco)), ao), Add (Mul (asg, Neg asx), arh))
1.2359 - | numadd
1.2360 - (Add (Mul (mc, Sub (acn, aco)), ao),
1.2361 - Add (Mul (asg, Add (asy, asz)), arh)) =
1.2362 - Add (Add (Mul (mc, Sub (acn, aco)), ao),
1.2363 - Add (Mul (asg, Add (asy, asz)), arh))
1.2364 - | numadd
1.2365 - (Add (Mul (mc, Sub (acn, aco)), ao),
1.2366 - Add (Mul (asg, Sub (ata, atb)), arh)) =
1.2367 - Add (Add (Mul (mc, Sub (acn, aco)), ao),
1.2368 - Add (Mul (asg, Sub (ata, atb)), arh))
1.2369 - | numadd
1.2370 - (Add (Mul (mc, Sub (acn, aco)), ao),
1.2371 - Add (Mul (asg, Mul (atc, atd)), arh)) =
1.2372 - Add (Add (Mul (mc, Sub (acn, aco)), ao),
1.2373 - Add (Mul (asg, Mul (atc, atd)), arh))
1.2374 - | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Sub (ari, arj)) =
1.2375 - Add (Add (Mul (mc, Sub (acn, aco)), ao), Sub (ari, arj))
1.2376 - | numadd (Add (Mul (mc, Sub (acn, aco)), ao), Mul (ark, arl)) =
1.2377 - Add (Add (Mul (mc, Sub (acn, aco)), ao), Mul (ark, arl))
1.2378 - | numadd (Add (Mul (mc, Mul (acp, acq)), ao), C atp) =
1.2379 - Add (Add (Mul (mc, Mul (acp, acq)), ao), C atp)
1.2380 - | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Bound atq) =
1.2381 - Add (Add (Mul (mc, Mul (acp, acq)), ao), Bound atq)
1.2382 - | numadd (Add (Mul (mc, Mul (acp, acq)), ao), CX (atr, ats)) =
1.2383 - Add (Add (Mul (mc, Mul (acp, acq)), ao), CX (atr, ats))
1.2384 - | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Neg att) =
1.2385 - Add (Add (Mul (mc, Mul (acp, acq)), ao), Neg att)
1.2386 - | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Add (C aul, atv)) =
1.2387 - Add (Add (Mul (mc, Mul (acp, acq)), ao), Add (C aul, atv))
1.2388 - | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Add (Bound aum, atv)) =
1.2389 - Add (Add (Mul (mc, Mul (acp, acq)), ao), Add (Bound aum, atv))
1.2390 - | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Add (CX (aun, auo), atv)) =
1.2391 - Add (Add (Mul (mc, Mul (acp, acq)), ao), Add (CX (aun, auo), atv))
1.2392 - | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Add (Neg aup, atv)) =
1.2393 - Add (Add (Mul (mc, Mul (acp, acq)), ao), Add (Neg aup, atv))
1.2394 - | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Add (Add (auq, aur), atv)) =
1.2395 - Add (Add (Mul (mc, Mul (acp, acq)), ao), Add (Add (auq, aur), atv))
1.2396 - | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Add (Sub (aus, aut), atv)) =
1.2397 - Add (Add (Mul (mc, Mul (acp, acq)), ao), Add (Sub (aus, aut), atv))
1.2398 - | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Add (Mul (auu, C avh), atv)) =
1.2399 - Add (Add (Mul (mc, Mul (acp, acq)), ao), Add (Mul (auu, C avh), atv))
1.2400 - | numadd
1.2401 - (Add (Mul (mc, Mul (acp, acq)), ao),
1.2402 - Add (Mul (auu, CX (avj, avk)), atv)) =
1.2403 - Add (Add (Mul (mc, Mul (acp, acq)), ao),
1.2404 - Add (Mul (auu, CX (avj, avk)), atv))
1.2405 - | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Add (Mul (auu, Neg avl), atv)) =
1.2406 - Add (Add (Mul (mc, Mul (acp, acq)), ao), Add (Mul (auu, Neg avl), atv))
1.2407 - | numadd
1.2408 - (Add (Mul (mc, Mul (acp, acq)), ao),
1.2409 - Add (Mul (auu, Add (avm, avn)), atv)) =
1.2410 - Add (Add (Mul (mc, Mul (acp, acq)), ao),
1.2411 - Add (Mul (auu, Add (avm, avn)), atv))
1.2412 - | numadd
1.2413 - (Add (Mul (mc, Mul (acp, acq)), ao),
1.2414 - Add (Mul (auu, Sub (avo, avp)), atv)) =
1.2415 - Add (Add (Mul (mc, Mul (acp, acq)), ao),
1.2416 - Add (Mul (auu, Sub (avo, avp)), atv))
1.2417 - | numadd
1.2418 - (Add (Mul (mc, Mul (acp, acq)), ao),
1.2419 - Add (Mul (auu, Mul (avq, avr)), atv)) =
1.2420 - Add (Add (Mul (mc, Mul (acp, acq)), ao),
1.2421 - Add (Mul (auu, Mul (avq, avr)), atv))
1.2422 - | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Sub (atw, atx)) =
1.2423 - Add (Add (Mul (mc, Mul (acp, acq)), ao), Sub (atw, atx))
1.2424 - | numadd (Add (Mul (mc, Mul (acp, acq)), ao), Mul (aty, atz)) =
1.2425 - Add (Add (Mul (mc, Mul (acp, acq)), ao), Mul (aty, atz))
1.2426 - | numadd (Sub (ap, aq), C awd) = Add (Sub (ap, aq), C awd)
1.2427 - | numadd (Sub (ap, aq), Bound awe) = Add (Sub (ap, aq), Bound awe)
1.2428 - | numadd (Sub (ap, aq), CX (awf, awg)) = Add (Sub (ap, aq), CX (awf, awg))
1.2429 - | numadd (Sub (ap, aq), Neg awh) = Add (Sub (ap, aq), Neg awh)
1.2430 - | numadd (Sub (ap, aq), Add (C awz, awj)) =
1.2431 - Add (Sub (ap, aq), Add (C awz, awj))
1.2432 - | numadd (Sub (ap, aq), Add (Bound axa, awj)) =
1.2433 - Add (Sub (ap, aq), Add (Bound axa, awj))
1.2434 - | numadd (Sub (ap, aq), Add (CX (axb, axc), awj)) =
1.2435 - Add (Sub (ap, aq), Add (CX (axb, axc), awj))
1.2436 - | numadd (Sub (ap, aq), Add (Neg axd, awj)) =
1.2437 - Add (Sub (ap, aq), Add (Neg axd, awj))
1.2438 - | numadd (Sub (ap, aq), Add (Add (axe, axf), awj)) =
1.2439 - Add (Sub (ap, aq), Add (Add (axe, axf), awj))
1.2440 - | numadd (Sub (ap, aq), Add (Sub (axg, axh), awj)) =
1.2441 - Add (Sub (ap, aq), Add (Sub (axg, axh), awj))
1.2442 - | numadd (Sub (ap, aq), Add (Mul (axi, C axv), awj)) =
1.2443 - Add (Sub (ap, aq), Add (Mul (axi, C axv), awj))
1.2444 - | numadd (Sub (ap, aq), Add (Mul (axi, CX (axx, axy)), awj)) =
1.2445 - Add (Sub (ap, aq), Add (Mul (axi, CX (axx, axy)), awj))
1.2446 - | numadd (Sub (ap, aq), Add (Mul (axi, Neg axz), awj)) =
1.2447 - Add (Sub (ap, aq), Add (Mul (axi, Neg axz), awj))
1.2448 - | numadd (Sub (ap, aq), Add (Mul (axi, Add (aya, ayb)), awj)) =
1.2449 - Add (Sub (ap, aq), Add (Mul (axi, Add (aya, ayb)), awj))
1.2450 - | numadd (Sub (ap, aq), Add (Mul (axi, Sub (ayc, ayd)), awj)) =
1.2451 - Add (Sub (ap, aq), Add (Mul (axi, Sub (ayc, ayd)), awj))
1.2452 - | numadd (Sub (ap, aq), Add (Mul (axi, Mul (aye, ayf)), awj)) =
1.2453 - Add (Sub (ap, aq), Add (Mul (axi, Mul (aye, ayf)), awj))
1.2454 - | numadd (Sub (ap, aq), Sub (awk, awl)) = Add (Sub (ap, aq), Sub (awk, awl))
1.2455 - | numadd (Sub (ap, aq), Mul (awm, awn)) = Add (Sub (ap, aq), Mul (awm, awn))
1.2456 - | numadd (Mul (ar, as'), C ayr) = Add (Mul (ar, as'), C ayr)
1.2457 - | numadd (Mul (ar, as'), Bound ays) = Add (Mul (ar, as'), Bound ays)
1.2458 - | numadd (Mul (ar, as'), CX (ayt, ayu)) = Add (Mul (ar, as'), CX (ayt, ayu))
1.2459 - | numadd (Mul (ar, as'), Neg ayv) = Add (Mul (ar, as'), Neg ayv)
1.2460 - | numadd (Mul (ar, as'), Add (C azn, ayx)) =
1.2461 - Add (Mul (ar, as'), Add (C azn, ayx))
1.2462 - | numadd (Mul (ar, as'), Add (Bound azo, ayx)) =
1.2463 - Add (Mul (ar, as'), Add (Bound azo, ayx))
1.2464 - | numadd (Mul (ar, as'), Add (CX (azp, azq), ayx)) =
1.2465 - Add (Mul (ar, as'), Add (CX (azp, azq), ayx))
1.2466 - | numadd (Mul (ar, as'), Add (Neg azr, ayx)) =
1.2467 - Add (Mul (ar, as'), Add (Neg azr, ayx))
1.2468 - | numadd (Mul (ar, as'), Add (Add (azs, azt), ayx)) =
1.2469 - Add (Mul (ar, as'), Add (Add (azs, azt), ayx))
1.2470 - | numadd (Mul (ar, as'), Add (Sub (azu, azv), ayx)) =
1.2471 - Add (Mul (ar, as'), Add (Sub (azu, azv), ayx))
1.2472 - | numadd (Mul (ar, as'), Add (Mul (azw, C baj), ayx)) =
1.2473 - Add (Mul (ar, as'), Add (Mul (azw, C baj), ayx))
1.2474 - | numadd (Mul (ar, as'), Add (Mul (azw, CX (bal, bam)), ayx)) =
1.2475 - Add (Mul (ar, as'), Add (Mul (azw, CX (bal, bam)), ayx))
1.2476 - | numadd (Mul (ar, as'), Add (Mul (azw, Neg ban), ayx)) =
1.2477 - Add (Mul (ar, as'), Add (Mul (azw, Neg ban), ayx))
1.2478 - | numadd (Mul (ar, as'), Add (Mul (azw, Add (bao, bap)), ayx)) =
1.2479 - Add (Mul (ar, as'), Add (Mul (azw, Add (bao, bap)), ayx))
1.2480 - | numadd (Mul (ar, as'), Add (Mul (azw, Sub (baq, bar)), ayx)) =
1.2481 - Add (Mul (ar, as'), Add (Mul (azw, Sub (baq, bar)), ayx))
1.2482 - | numadd (Mul (ar, as'), Add (Mul (azw, Mul (bas, bat)), ayx)) =
1.2483 - Add (Mul (ar, as'), Add (Mul (azw, Mul (bas, bat)), ayx))
1.2484 - | numadd (Mul (ar, as'), Sub (ayy, ayz)) = Add (Mul (ar, as'), Sub (ayy, ayz))
1.2485 - | numadd (Mul (ar, as'), Mul (aza, azb)) =
1.2486 - Add (Mul (ar, as'), Mul (aza, azb));
1.2487 + numadd (Add (Mul (c1, Bound n1), r1), r2))));
1.2488
1.2489 -fun nummul (C j) = (fn i => C (i * j))
1.2490 - | nummul (Add (a, b)) = (fn i => numadd (nummul a i, nummul b i))
1.2491 - | nummul (Mul (c, t)) = (fn i => nummul t (i * c))
1.2492 - | nummul (Bound v) = (fn i => Mul (i, Bound v))
1.2493 - | nummul (CX (w, x)) = (fn i => Mul (i, CX (w, x)))
1.2494 - | nummul (Neg y) = (fn i => Mul (i, Neg y))
1.2495 - | nummul (Sub (ac, ad)) = (fn i => Mul (i, Sub (ac, ad)));
1.2496 +fun nummul i (Sub (v, va)) = Mul (i, Sub (v, va))
1.2497 + | nummul i (Neg v) = Mul (i, Neg v)
1.2498 + | nummul i (Cx (v, va)) = Mul (i, Cx (v, va))
1.2499 + | nummul i (Bound v) = Mul (i, Bound v)
1.2500 + | nummul i (Mul (c, t)) = nummul (IntInf.* (i, c)) t
1.2501 + | nummul i (Add (a, b)) = numadd (nummul i a, nummul i b)
1.2502 + | nummul i (C j) = C (IntInf.* (i, j));
1.2503
1.2504 -fun numneg t = nummul t (~ 1);
1.2505 +fun numneg t = nummul (IntInf.~ (1 : IntInf.int)) t;
1.2506
1.2507 -fun numsub s t = (if (s = t) then C 0 else numadd (s, numneg t));
1.2508 +fun numsub s t =
1.2509 + (if eq_num s t then C (0 : IntInf.int) else numadd (s, numneg t));
1.2510
1.2511 -fun simpnum (C j) = C j
1.2512 - | simpnum (Bound n) = Add (Mul (1, Bound n), C 0)
1.2513 +fun simpnum (Cx (v, va)) = Cx (v, va)
1.2514 + | simpnum (Mul (i, t)) =
1.2515 + (if ((i : IntInf.int) = (0 : IntInf.int)) then C (0 : IntInf.int)
1.2516 + else nummul i (simpnum t))
1.2517 + | simpnum (Sub (t, s)) = numsub (simpnum t) (simpnum s)
1.2518 + | simpnum (Add (t, s)) = numadd (simpnum t, simpnum s)
1.2519 | simpnum (Neg t) = numneg (simpnum t)
1.2520 - | simpnum (Add (t, s)) = numadd (simpnum t, simpnum s)
1.2521 - | simpnum (Sub (t, s)) = numsub (simpnum t) (simpnum s)
1.2522 - | simpnum (Mul (i, t)) = (if (i = 0) then C 0 else nummul (simpnum t) i)
1.2523 - | simpnum (CX (w, x)) = CX (w, x);
1.2524 + | simpnum (Bound n) =
1.2525 + Add (Mul ((1 : IntInf.int), Bound n), C (0 : IntInf.int))
1.2526 + | simpnum (C j) = C j;
1.2527
1.2528 -datatype fm = T | F | Lt of num | Le of num | Gt of num | Ge of num | Eq of num
1.2529 - | NEq of num | Dvd of int * num | NDvd of int * num | NOT of fm
1.2530 - | And of fm * fm | Or of fm * fm | Imp of fm * fm | Iff of fm * fm | E of fm
1.2531 - | A of fm | Closed of int | NClosed of int;
1.2532 +val eq_numa = {eq = eq_num} : num HOL.eq;
1.2533
1.2534 -fun not (NOT p) = p
1.2535 - | not T = F
1.2536 - | not F = T
1.2537 - | not (Lt u) = NOT (Lt u)
1.2538 - | not (Le v) = NOT (Le v)
1.2539 - | not (Gt w) = NOT (Gt w)
1.2540 - | not (Ge x) = NOT (Ge x)
1.2541 - | not (Eq y) = NOT (Eq y)
1.2542 - | not (NEq z) = NOT (NEq z)
1.2543 - | not (Dvd (aa, ab)) = NOT (Dvd (aa, ab))
1.2544 - | not (NDvd (ac, ad)) = NOT (NDvd (ac, ad))
1.2545 - | not (And (af, ag)) = NOT (And (af, ag))
1.2546 - | not (Or (ah, ai)) = NOT (Or (ah, ai))
1.2547 - | not (Imp (aj, ak)) = NOT (Imp (aj, ak))
1.2548 - | not (Iff (al, am)) = NOT (Iff (al, am))
1.2549 - | not (E an) = NOT (E an)
1.2550 - | not (A ao) = NOT (A ao)
1.2551 - | not (Closed ap) = NOT (Closed ap)
1.2552 - | not (NClosed aq) = NOT (NClosed aq);
1.2553 +fun mirror (NClosed aq) = NClosed aq
1.2554 + | mirror (Closed ap) = Closed ap
1.2555 + | mirror (A ao) = A ao
1.2556 + | mirror (E an) = E an
1.2557 + | mirror (Iffa (al, am)) = Iffa (al, am)
1.2558 + | mirror (Impa (aj, ak)) = Impa (aj, ak)
1.2559 + | mirror (Nota ae) = Nota ae
1.2560 + | mirror (NDvd (ac, Mul (hv, hw))) = NDvd (ac, Mul (hv, hw))
1.2561 + | mirror (NDvd (ac, Sub (ht, hu))) = NDvd (ac, Sub (ht, hu))
1.2562 + | mirror (NDvd (ac, Add (hr, hs))) = NDvd (ac, Add (hr, hs))
1.2563 + | mirror (NDvd (ac, Neg hq)) = NDvd (ac, Neg hq)
1.2564 + | mirror (NDvd (ac, Bound hn)) = NDvd (ac, Bound hn)
1.2565 + | mirror (NDvd (ac, C hm)) = NDvd (ac, C hm)
1.2566 + | mirror (Dvd (aa, Mul (gz, ha))) = Dvd (aa, Mul (gz, ha))
1.2567 + | mirror (Dvd (aa, Sub (gx, gy))) = Dvd (aa, Sub (gx, gy))
1.2568 + | mirror (Dvd (aa, Add (gv, gw))) = Dvd (aa, Add (gv, gw))
1.2569 + | mirror (Dvd (aa, Neg gu)) = Dvd (aa, Neg gu)
1.2570 + | mirror (Dvd (aa, Bound gr)) = Dvd (aa, Bound gr)
1.2571 + | mirror (Dvd (aa, C gq)) = Dvd (aa, C gq)
1.2572 + | mirror (NEq (Mul (gd, ge))) = NEq (Mul (gd, ge))
1.2573 + | mirror (NEq (Sub (gb, gc))) = NEq (Sub (gb, gc))
1.2574 + | mirror (NEq (Add (fz, ga))) = NEq (Add (fz, ga))
1.2575 + | mirror (NEq (Neg fy)) = NEq (Neg fy)
1.2576 + | mirror (NEq (Bound fv)) = NEq (Bound fv)
1.2577 + | mirror (NEq (C fu)) = NEq (C fu)
1.2578 + | mirror (Eq (Mul (fh, fi))) = Eq (Mul (fh, fi))
1.2579 + | mirror (Eq (Sub (ff, fg))) = Eq (Sub (ff, fg))
1.2580 + | mirror (Eq (Add (fd, fe))) = Eq (Add (fd, fe))
1.2581 + | mirror (Eq (Neg fc)) = Eq (Neg fc)
1.2582 + | mirror (Eq (Bound ez)) = Eq (Bound ez)
1.2583 + | mirror (Eq (C ey)) = Eq (C ey)
1.2584 + | mirror (Ge (Mul (el, em))) = Ge (Mul (el, em))
1.2585 + | mirror (Ge (Sub (ej, ek))) = Ge (Sub (ej, ek))
1.2586 + | mirror (Ge (Add (eh, ei))) = Ge (Add (eh, ei))
1.2587 + | mirror (Ge (Neg eg)) = Ge (Neg eg)
1.2588 + | mirror (Ge (Bound ed)) = Ge (Bound ed)
1.2589 + | mirror (Ge (C ec)) = Ge (C ec)
1.2590 + | mirror (Gt (Mul (dp, dq))) = Gt (Mul (dp, dq))
1.2591 + | mirror (Gt (Sub (dn, doa))) = Gt (Sub (dn, doa))
1.2592 + | mirror (Gt (Add (dl, dm))) = Gt (Add (dl, dm))
1.2593 + | mirror (Gt (Neg dk)) = Gt (Neg dk)
1.2594 + | mirror (Gt (Bound dh)) = Gt (Bound dh)
1.2595 + | mirror (Gt (C dg)) = Gt (C dg)
1.2596 + | mirror (Le (Mul (ct, cu))) = Le (Mul (ct, cu))
1.2597 + | mirror (Le (Sub (cr, cs))) = Le (Sub (cr, cs))
1.2598 + | mirror (Le (Add (cp, cq))) = Le (Add (cp, cq))
1.2599 + | mirror (Le (Neg co)) = Le (Neg co)
1.2600 + | mirror (Le (Bound cl)) = Le (Bound cl)
1.2601 + | mirror (Le (C ck)) = Le (C ck)
1.2602 + | mirror (Lt (Mul (bx, by))) = Lt (Mul (bx, by))
1.2603 + | mirror (Lt (Sub (bv, bw))) = Lt (Sub (bv, bw))
1.2604 + | mirror (Lt (Add (bt, bu))) = Lt (Add (bt, bu))
1.2605 + | mirror (Lt (Neg bs)) = Lt (Neg bs)
1.2606 + | mirror (Lt (Bound bp)) = Lt (Bound bp)
1.2607 + | mirror (Lt (C bo)) = Lt (C bo)
1.2608 + | mirror F = F
1.2609 + | mirror T = T
1.2610 + | mirror (NDvd (i, Cx (c, e))) = NDvd (i, Cx (c, Neg e))
1.2611 + | mirror (Dvd (i, Cx (c, e))) = Dvd (i, Cx (c, Neg e))
1.2612 + | mirror (Ge (Cx (c, e))) = Le (Cx (c, Neg e))
1.2613 + | mirror (Gt (Cx (c, e))) = Lt (Cx (c, Neg e))
1.2614 + | mirror (Le (Cx (c, e))) = Ge (Cx (c, Neg e))
1.2615 + | mirror (Lt (Cx (c, e))) = Gt (Cx (c, Neg e))
1.2616 + | mirror (NEq (Cx (c, e))) = NEq (Cx (c, Neg e))
1.2617 + | mirror (Eq (Cx (c, e))) = Eq (Cx (c, Neg e))
1.2618 + | mirror (Or (p, q)) = Or (mirror p, mirror q)
1.2619 + | mirror (And (p, q)) = And (mirror p, mirror q);
1.2620 +
1.2621 +fun unita p =
1.2622 + let
1.2623 + val p' = zlfm p;
1.2624 + val l = zeta p';
1.2625 + val q =
1.2626 + And (Dvd (l, Cx ((1 : IntInf.int), C (0 : IntInf.int))), a_beta p' l);
1.2627 + val d = delta q;
1.2628 + val b = List.remdups eq_numa (List.map simpnum (beta q));
1.2629 + val a = List.remdups eq_numa (List.map simpnum (alpha q));
1.2630 + in
1.2631 + (if IntInf.<= ((List.size_list b), (List.size_list a)) then (q, (b, d))
1.2632 + else (mirror q, (a, d)))
1.2633 + end;
1.2634 +
1.2635 +fun iupt i j =
1.2636 + (if IntInf.< (j, i) then []
1.2637 + else i :: iupt (IntInf.+ (i, (1 : IntInf.int))) j);
1.2638 +
1.2639 +fun minusinf (NClosed aq) = NClosed aq
1.2640 + | minusinf (Closed ap) = Closed ap
1.2641 + | minusinf (A ao) = A ao
1.2642 + | minusinf (E an) = E an
1.2643 + | minusinf (Iffa (al, am)) = Iffa (al, am)
1.2644 + | minusinf (Impa (aj, ak)) = Impa (aj, ak)
1.2645 + | minusinf (Nota ae) = Nota ae
1.2646 + | minusinf (NDvd (ac, ad)) = NDvd (ac, ad)
1.2647 + | minusinf (Dvd (aa, ab)) = Dvd (aa, ab)
1.2648 + | minusinf (NEq (Mul (gd, ge))) = NEq (Mul (gd, ge))
1.2649 + | minusinf (NEq (Sub (gb, gc))) = NEq (Sub (gb, gc))
1.2650 + | minusinf (NEq (Add (fz, ga))) = NEq (Add (fz, ga))
1.2651 + | minusinf (NEq (Neg fy)) = NEq (Neg fy)
1.2652 + | minusinf (NEq (Bound fv)) = NEq (Bound fv)
1.2653 + | minusinf (NEq (C fu)) = NEq (C fu)
1.2654 + | minusinf (Eq (Mul (fh, fi))) = Eq (Mul (fh, fi))
1.2655 + | minusinf (Eq (Sub (ff, fg))) = Eq (Sub (ff, fg))
1.2656 + | minusinf (Eq (Add (fd, fe))) = Eq (Add (fd, fe))
1.2657 + | minusinf (Eq (Neg fc)) = Eq (Neg fc)
1.2658 + | minusinf (Eq (Bound ez)) = Eq (Bound ez)
1.2659 + | minusinf (Eq (C ey)) = Eq (C ey)
1.2660 + | minusinf (Ge (Mul (el, em))) = Ge (Mul (el, em))
1.2661 + | minusinf (Ge (Sub (ej, ek))) = Ge (Sub (ej, ek))
1.2662 + | minusinf (Ge (Add (eh, ei))) = Ge (Add (eh, ei))
1.2663 + | minusinf (Ge (Neg eg)) = Ge (Neg eg)
1.2664 + | minusinf (Ge (Bound ed)) = Ge (Bound ed)
1.2665 + | minusinf (Ge (C ec)) = Ge (C ec)
1.2666 + | minusinf (Gt (Mul (dp, dq))) = Gt (Mul (dp, dq))
1.2667 + | minusinf (Gt (Sub (dn, doa))) = Gt (Sub (dn, doa))
1.2668 + | minusinf (Gt (Add (dl, dm))) = Gt (Add (dl, dm))
1.2669 + | minusinf (Gt (Neg dk)) = Gt (Neg dk)
1.2670 + | minusinf (Gt (Bound dh)) = Gt (Bound dh)
1.2671 + | minusinf (Gt (C dg)) = Gt (C dg)
1.2672 + | minusinf (Le (Mul (ct, cu))) = Le (Mul (ct, cu))
1.2673 + | minusinf (Le (Sub (cr, cs))) = Le (Sub (cr, cs))
1.2674 + | minusinf (Le (Add (cp, cq))) = Le (Add (cp, cq))
1.2675 + | minusinf (Le (Neg co)) = Le (Neg co)
1.2676 + | minusinf (Le (Bound cl)) = Le (Bound cl)
1.2677 + | minusinf (Le (C ck)) = Le (C ck)
1.2678 + | minusinf (Lt (Mul (bx, by))) = Lt (Mul (bx, by))
1.2679 + | minusinf (Lt (Sub (bv, bw))) = Lt (Sub (bv, bw))
1.2680 + | minusinf (Lt (Add (bt, bu))) = Lt (Add (bt, bu))
1.2681 + | minusinf (Lt (Neg bs)) = Lt (Neg bs)
1.2682 + | minusinf (Lt (Bound bp)) = Lt (Bound bp)
1.2683 + | minusinf (Lt (C bo)) = Lt (C bo)
1.2684 + | minusinf F = F
1.2685 + | minusinf T = T
1.2686 + | minusinf (Ge (Cx (c, e))) = F
1.2687 + | minusinf (Gt (Cx (c, e))) = F
1.2688 + | minusinf (Le (Cx (c, e))) = T
1.2689 + | minusinf (Lt (Cx (c, e))) = T
1.2690 + | minusinf (NEq (Cx (c, e))) = T
1.2691 + | minusinf (Eq (Cx (c, e))) = F
1.2692 + | minusinf (Or (p, q)) = Or (minusinf p, minusinf q)
1.2693 + | minusinf (And (p, q)) = And (minusinf p, minusinf q);
1.2694 +
1.2695 +fun numsubst0 t (Mul (i, a)) = Mul (i, numsubst0 t a)
1.2696 + | numsubst0 t (Sub (a, b)) = Sub (numsubst0 t a, numsubst0 t b)
1.2697 + | numsubst0 t (Add (a, b)) = Add (numsubst0 t a, numsubst0 t b)
1.2698 + | numsubst0 t (Neg a) = Neg (numsubst0 t a)
1.2699 + | numsubst0 t (Cx (i, a)) = Add (Mul (i, t), numsubst0 t a)
1.2700 + | numsubst0 t (Bound n) =
1.2701 + (if ((n : IntInf.int) = Integer.zero_nat) then t else Bound n)
1.2702 + | numsubst0 t (C c) = C c;
1.2703 +
1.2704 +fun subst0 t (NClosed p) = NClosed p
1.2705 + | subst0 t (Closed p) = Closed p
1.2706 + | subst0 t (Iffa (p, q)) = Iffa (subst0 t p, subst0 t q)
1.2707 + | subst0 t (Impa (p, q)) = Impa (subst0 t p, subst0 t q)
1.2708 + | subst0 t (Or (p, q)) = Or (subst0 t p, subst0 t q)
1.2709 + | subst0 t (And (p, q)) = And (subst0 t p, subst0 t q)
1.2710 + | subst0 t (Nota p) = Nota (subst0 t p)
1.2711 + | subst0 t (NDvd (i, a)) = NDvd (i, numsubst0 t a)
1.2712 + | subst0 t (Dvd (i, a)) = Dvd (i, numsubst0 t a)
1.2713 + | subst0 t (NEq a) = NEq (numsubst0 t a)
1.2714 + | subst0 t (Eq a) = Eq (numsubst0 t a)
1.2715 + | subst0 t (Ge a) = Ge (numsubst0 t a)
1.2716 + | subst0 t (Gt a) = Gt (numsubst0 t a)
1.2717 + | subst0 t (Le a) = Le (numsubst0 t a)
1.2718 + | subst0 t (Lt a) = Lt (numsubst0 t a)
1.2719 + | subst0 t F = F
1.2720 + | subst0 t T = T;
1.2721 +
1.2722 +fun conj p q =
1.2723 + (if eq_fm p F orelse eq_fm q F then F
1.2724 + else (if eq_fm p T then q else (if eq_fm q T then p else And (p, q))));
1.2725 +
1.2726 +fun disj p q =
1.2727 + (if eq_fm p T orelse eq_fm q T then T
1.2728 + else (if eq_fm p F then q else (if eq_fm q F then p else Or (p, q))));
1.2729 +
1.2730 +fun nota (NClosed v) = Nota (NClosed v)
1.2731 + | nota (Closed v) = Nota (Closed v)
1.2732 + | nota (A v) = Nota (A v)
1.2733 + | nota (E v) = Nota (E v)
1.2734 + | nota (Iffa (v, va)) = Nota (Iffa (v, va))
1.2735 + | nota (Impa (v, va)) = Nota (Impa (v, va))
1.2736 + | nota (Or (v, va)) = Nota (Or (v, va))
1.2737 + | nota (And (v, va)) = Nota (And (v, va))
1.2738 + | nota (NDvd (v, va)) = Nota (NDvd (v, va))
1.2739 + | nota (Dvd (v, va)) = Nota (Dvd (v, va))
1.2740 + | nota (NEq v) = Nota (NEq v)
1.2741 + | nota (Eq v) = Nota (Eq v)
1.2742 + | nota (Ge v) = Nota (Ge v)
1.2743 + | nota (Gt v) = Nota (Gt v)
1.2744 + | nota (Le v) = Nota (Le v)
1.2745 + | nota (Lt v) = Nota (Lt v)
1.2746 + | nota F = T
1.2747 + | nota T = F
1.2748 + | nota (Nota y) = y;
1.2749 +
1.2750 +fun imp p q =
1.2751 + (if eq_fm p F orelse eq_fm q T then T
1.2752 + else (if eq_fm p T then q
1.2753 + else (if eq_fm q F then nota p else Impa (p, q))));
1.2754
1.2755 fun iff p q =
1.2756 - (if (p = q) then T
1.2757 - else (if ((p = not q) orelse (not p = q)) then F
1.2758 - else (if (p = F) then not q
1.2759 - else (if (q = F) then not p
1.2760 - else (if (p = T) then q
1.2761 - else (if (q = T) then p else Iff (p, q)))))));
1.2762 + (if eq_fm p q then T
1.2763 + else (if eq_fm p (nota q) orelse eq_fm (nota p) q then F
1.2764 + else (if eq_fm p F then nota q
1.2765 + else (if eq_fm q F then nota p
1.2766 + else (if eq_fm p T then q
1.2767 + else (if eq_fm q T then p
1.2768 + else Iffa (p, q)))))));
1.2769
1.2770 -fun imp p q =
1.2771 - (if ((p = F) orelse (q = T)) then T
1.2772 - else (if (p = T) then q else (if (q = F) then not p else Imp (p, q))));
1.2773 -
1.2774 -fun disj p q =
1.2775 - (if ((p = T) orelse (q = T)) then T
1.2776 - else (if (p = F) then q else (if (q = F) then p else Or (p, q))));
1.2777 -
1.2778 -fun conj p q =
1.2779 - (if ((p = F) orelse (q = F)) then F
1.2780 - else (if (p = T) then q else (if (q = T) then p else And (p, q))));
1.2781 -
1.2782 -fun simpfm (And (p, q)) = conj (simpfm p) (simpfm q)
1.2783 - | simpfm (Or (p, q)) = disj (simpfm p) (simpfm q)
1.2784 - | simpfm (Imp (p, q)) = imp (simpfm p) (simpfm q)
1.2785 - | simpfm (Iff (p, q)) = iff (simpfm p) (simpfm q)
1.2786 - | simpfm (NOT p) = not (simpfm p)
1.2787 - | simpfm (Lt a) =
1.2788 - let val a' = simpnum a
1.2789 - in (case a' of C x => (if (x < 0) then T else F) | Bound x => Lt a'
1.2790 - | CX (x, xa) => Lt a' | Neg x => Lt a' | Add (x, xa) => Lt a'
1.2791 - | Sub (x, xa) => Lt a' | Mul (x, xa) => Lt a')
1.2792 +fun simpfm (NClosed v) = NClosed v
1.2793 + | simpfm (Closed v) = Closed v
1.2794 + | simpfm (A v) = A v
1.2795 + | simpfm (E v) = E v
1.2796 + | simpfm F = F
1.2797 + | simpfm T = T
1.2798 + | simpfm (NDvd (i, a)) =
1.2799 + (if ((i : IntInf.int) = (0 : IntInf.int)) then simpfm (NEq a)
1.2800 + else (if (((Integer.abs_int i) : IntInf.int) = (1 : IntInf.int)) then F
1.2801 + else let
1.2802 + val a' = simpnum a;
1.2803 + in
1.2804 + (case a'
1.2805 + of C v => (if not (Integer.dvd_int i v) then T else F)
1.2806 + | Bound nat => NDvd (i, a')
1.2807 + | Cx (int, num) => NDvd (i, a') | Neg num => NDvd (i, a')
1.2808 + | Add (num1, num2) => NDvd (i, a')
1.2809 + | Sub (num1, num2) => NDvd (i, a')
1.2810 + | Mul (int, num) => NDvd (i, a'))
1.2811 + end))
1.2812 + | simpfm (Dvd (i, a)) =
1.2813 + (if ((i : IntInf.int) = (0 : IntInf.int)) then simpfm (Eq a)
1.2814 + else (if (((Integer.abs_int i) : IntInf.int) = (1 : IntInf.int)) then T
1.2815 + else let
1.2816 + val a' = simpnum a;
1.2817 + in
1.2818 + (case a' of C v => (if Integer.dvd_int i v then T else F)
1.2819 + | Bound nat => Dvd (i, a') | Cx (int, num) => Dvd (i, a')
1.2820 + | Neg num => Dvd (i, a')
1.2821 + | Add (num1, num2) => Dvd (i, a')
1.2822 + | Sub (num1, num2) => Dvd (i, a')
1.2823 + | Mul (int, num) => Dvd (i, a'))
1.2824 + end))
1.2825 + | simpfm (NEq a) =
1.2826 + let
1.2827 + val a' = simpnum a;
1.2828 + in
1.2829 + (case a'
1.2830 + of C v => (if not ((v : IntInf.int) = (0 : IntInf.int)) then T else F)
1.2831 + | Bound nat => NEq a' | Cx (int, num) => NEq a' | Neg num => NEq a'
1.2832 + | Add (num1, num2) => NEq a' | Sub (num1, num2) => NEq a'
1.2833 + | Mul (int, num) => NEq a')
1.2834 + end
1.2835 + | simpfm (Eq a) =
1.2836 + let
1.2837 + val a' = simpnum a;
1.2838 + in
1.2839 + (case a'
1.2840 + of C v => (if ((v : IntInf.int) = (0 : IntInf.int)) then T else F)
1.2841 + | Bound nat => Eq a' | Cx (int, num) => Eq a' | Neg num => Eq a'
1.2842 + | Add (num1, num2) => Eq a' | Sub (num1, num2) => Eq a'
1.2843 + | Mul (int, num) => Eq a')
1.2844 + end
1.2845 + | simpfm (Ge a) =
1.2846 + let
1.2847 + val a' = simpnum a;
1.2848 + in
1.2849 + (case a' of C v => (if IntInf.<= ((0 : IntInf.int), v) then T else F)
1.2850 + | Bound nat => Ge a' | Cx (int, num) => Ge a' | Neg num => Ge a'
1.2851 + | Add (num1, num2) => Ge a' | Sub (num1, num2) => Ge a'
1.2852 + | Mul (int, num) => Ge a')
1.2853 + end
1.2854 + | simpfm (Gt a) =
1.2855 + let
1.2856 + val a' = simpnum a;
1.2857 + in
1.2858 + (case a' of C v => (if IntInf.< ((0 : IntInf.int), v) then T else F)
1.2859 + | Bound nat => Gt a' | Cx (int, num) => Gt a' | Neg num => Gt a'
1.2860 + | Add (num1, num2) => Gt a' | Sub (num1, num2) => Gt a'
1.2861 + | Mul (int, num) => Gt a')
1.2862 end
1.2863 | simpfm (Le a) =
1.2864 - let val a' = simpnum a
1.2865 - in (case a' of C x => (if (x <= 0) then T else F) | Bound x => Le a'
1.2866 - | CX (x, xa) => Le a' | Neg x => Le a' | Add (x, xa) => Le a'
1.2867 - | Sub (x, xa) => Le a' | Mul (x, xa) => Le a')
1.2868 + let
1.2869 + val a' = simpnum a;
1.2870 + in
1.2871 + (case a' of C v => (if IntInf.<= (v, (0 : IntInf.int)) then T else F)
1.2872 + | Bound nat => Le a' | Cx (int, num) => Le a' | Neg num => Le a'
1.2873 + | Add (num1, num2) => Le a' | Sub (num1, num2) => Le a'
1.2874 + | Mul (int, num) => Le a')
1.2875 end
1.2876 - | simpfm (Gt a) =
1.2877 - let val a' = simpnum a
1.2878 - in (case a' of C x => (if (0 < x) then T else F) | Bound x => Gt a'
1.2879 - | CX (x, xa) => Gt a' | Neg x => Gt a' | Add (x, xa) => Gt a'
1.2880 - | Sub (x, xa) => Gt a' | Mul (x, xa) => Gt a')
1.2881 + | simpfm (Lt a) =
1.2882 + let
1.2883 + val a' = simpnum a;
1.2884 + in
1.2885 + (case a' of C v => (if IntInf.< (v, (0 : IntInf.int)) then T else F)
1.2886 + | Bound nat => Lt a' | Cx (int, num) => Lt a' | Neg num => Lt a'
1.2887 + | Add (num1, num2) => Lt a' | Sub (num1, num2) => Lt a'
1.2888 + | Mul (int, num) => Lt a')
1.2889 end
1.2890 - | simpfm (Ge a) =
1.2891 - let val a' = simpnum a
1.2892 - in (case a' of C x => (if (0 <= x) then T else F) | Bound x => Ge a'
1.2893 - | CX (x, xa) => Ge a' | Neg x => Ge a' | Add (x, xa) => Ge a'
1.2894 - | Sub (x, xa) => Ge a' | Mul (x, xa) => Ge a')
1.2895 - end
1.2896 - | simpfm (Eq a) =
1.2897 - let val a' = simpnum a
1.2898 - in (case a' of C x => (if (x = 0) then T else F) | Bound x => Eq a'
1.2899 - | CX (x, xa) => Eq a' | Neg x => Eq a' | Add (x, xa) => Eq a'
1.2900 - | Sub (x, xa) => Eq a' | Mul (x, xa) => Eq a')
1.2901 - end
1.2902 - | simpfm (NEq a) =
1.2903 - let val a' = simpnum a
1.2904 - in (case a' of C x => (if Bool.not (x = 0) then T else F)
1.2905 - | Bound x => NEq a' | CX (x, xa) => NEq a' | Neg x => NEq a'
1.2906 - | Add (x, xa) => NEq a' | Sub (x, xa) => NEq a'
1.2907 - | Mul (x, xa) => NEq a')
1.2908 - end
1.2909 - | simpfm (Dvd (i, a)) =
1.2910 - (if (i = 0) then simpfm (Eq a)
1.2911 - else (if (abs i = 1) then T
1.2912 - else let val a' = simpnum a
1.2913 - in (case a' of C x => (if dvd i x then T else F)
1.2914 - | Bound x => Dvd (i, a') | CX (x, xa) => Dvd (i, a')
1.2915 - | Neg x => Dvd (i, a') | Add (x, xa) => Dvd (i, a')
1.2916 - | Sub (x, xa) => Dvd (i, a')
1.2917 - | Mul (x, xa) => Dvd (i, a'))
1.2918 - end))
1.2919 - | simpfm (NDvd (i, a)) =
1.2920 - (if (i = 0) then simpfm (NEq a)
1.2921 - else (if (abs i = 1) then F
1.2922 - else let val a' = simpnum a
1.2923 - in (case a' of C x => (if Bool.not (dvd i x) then T else F)
1.2924 - | Bound x => NDvd (i, a') | CX (x, xa) => NDvd (i, a')
1.2925 - | Neg x => NDvd (i, a') | Add (x, xa) => NDvd (i, a')
1.2926 - | Sub (x, xa) => NDvd (i, a')
1.2927 - | Mul (x, xa) => NDvd (i, a'))
1.2928 - end))
1.2929 - | simpfm T = T
1.2930 - | simpfm F = F
1.2931 - | simpfm (E ao) = E ao
1.2932 - | simpfm (A ap) = A ap
1.2933 - | simpfm (Closed aq) = Closed aq
1.2934 - | simpfm (NClosed ar) = NClosed ar;
1.2935 + | simpfm (Nota p) = nota (simpfm p)
1.2936 + | simpfm (Iffa (p, q)) = iff (simpfm p) (simpfm q)
1.2937 + | simpfm (Impa (p, q)) = imp (simpfm p) (simpfm q)
1.2938 + | simpfm (Or (p, q)) = disj (simpfm p) (simpfm q)
1.2939 + | simpfm (And (p, q)) = conj (simpfm p) (simpfm q);
1.2940
1.2941 -fun foldr f [] a = a
1.2942 - | foldr f (x :: xs) a = f x (foldr f xs a);
1.2943 +fun decrnum (Cx (w, x)) = Cx (w, x)
1.2944 + | decrnum (C u) = C u
1.2945 + | decrnum (Mul (c, a)) = Mul (c, decrnum a)
1.2946 + | decrnum (Sub (a, b)) = Sub (decrnum a, decrnum b)
1.2947 + | decrnum (Add (a, b)) = Add (decrnum a, decrnum b)
1.2948 + | decrnum (Neg a) = Neg (decrnum a)
1.2949 + | decrnum (Bound n) = Bound (Integer.nat (IntInf.- (n, (1 : IntInf.int))));
1.2950
1.2951 -fun djf f p q =
1.2952 - (if (q = T) then T
1.2953 - else (if (q = F) then f p
1.2954 - else let val fp = f p
1.2955 - in (case fp of T => T | F => q | Lt x => Or (f p, q)
1.2956 - | Le x => Or (f p, q) | Gt x => Or (f p, q)
1.2957 - | Ge x => Or (f p, q) | Eq x => Or (f p, q)
1.2958 - | NEq x => Or (f p, q) | Dvd (x, xa) => Or (f p, q)
1.2959 - | NDvd (x, xa) => Or (f p, q) | NOT x => Or (f p, q)
1.2960 - | And (x, xa) => Or (f p, q) | Or (x, xa) => Or (f p, q)
1.2961 - | Imp (x, xa) => Or (f p, q) | Iff (x, xa) => Or (f p, q)
1.2962 - | E x => Or (f p, q) | A x => Or (f p, q)
1.2963 - | Closed x => Or (f p, q) | NClosed x => Or (f p, q))
1.2964 - end));
1.2965 +fun decr (NClosed ar) = NClosed ar
1.2966 + | decr (Closed aq) = Closed aq
1.2967 + | decr (A ap) = A ap
1.2968 + | decr (E ao) = E ao
1.2969 + | decr F = F
1.2970 + | decr T = T
1.2971 + | decr (Iffa (p, q)) = Iffa (decr p, decr q)
1.2972 + | decr (Impa (p, q)) = Impa (decr p, decr q)
1.2973 + | decr (Or (p, q)) = Or (decr p, decr q)
1.2974 + | decr (And (p, q)) = And (decr p, decr q)
1.2975 + | decr (Nota p) = Nota (decr p)
1.2976 + | decr (NDvd (i, a)) = NDvd (i, decrnum a)
1.2977 + | decr (Dvd (i, a)) = Dvd (i, decrnum a)
1.2978 + | decr (NEq a) = NEq (decrnum a)
1.2979 + | decr (Eq a) = Eq (decrnum a)
1.2980 + | decr (Ge a) = Ge (decrnum a)
1.2981 + | decr (Gt a) = Gt (decrnum a)
1.2982 + | decr (Le a) = Le (decrnum a)
1.2983 + | decr (Lt a) = Lt (decrnum a);
1.2984
1.2985 -fun evaldjf f ps = foldr (djf f) ps F;
1.2986 -
1.2987 -fun append [] ys = ys
1.2988 - | append (x :: xs) ys = (x :: append xs ys);
1.2989 -
1.2990 -fun disjuncts (Or (p, q)) = append (disjuncts p) (disjuncts q)
1.2991 - | disjuncts F = []
1.2992 - | disjuncts T = [T]
1.2993 - | disjuncts (Lt u) = [Lt u]
1.2994 - | disjuncts (Le v) = [Le v]
1.2995 - | disjuncts (Gt w) = [Gt w]
1.2996 - | disjuncts (Ge x) = [Ge x]
1.2997 - | disjuncts (Eq y) = [Eq y]
1.2998 - | disjuncts (NEq z) = [NEq z]
1.2999 - | disjuncts (Dvd (aa, ab)) = [Dvd (aa, ab)]
1.3000 - | disjuncts (NDvd (ac, ad)) = [NDvd (ac, ad)]
1.3001 - | disjuncts (NOT ae) = [NOT ae]
1.3002 - | disjuncts (And (af, ag)) = [And (af, ag)]
1.3003 - | disjuncts (Imp (aj, ak)) = [Imp (aj, ak)]
1.3004 - | disjuncts (Iff (al, am)) = [Iff (al, am)]
1.3005 - | disjuncts (E an) = [E an]
1.3006 - | disjuncts (A ao) = [A ao]
1.3007 - | disjuncts (Closed ap) = [Closed ap]
1.3008 - | disjuncts (NClosed aq) = [NClosed aq];
1.3009 -
1.3010 -fun DJ f p = evaldjf f (disjuncts p);
1.3011 -
1.3012 -fun qelim (E p) = (fn qe => DJ qe (qelim p qe))
1.3013 - | qelim (A p) = (fn qe => not (qe (qelim (NOT p) qe)))
1.3014 - | qelim (NOT p) = (fn qe => not (qelim p qe))
1.3015 - | qelim (And (p, q)) = (fn qe => conj (qelim p qe) (qelim q qe))
1.3016 - | qelim (Or (p, q)) = (fn qe => disj (qelim p qe) (qelim q qe))
1.3017 - | qelim (Imp (p, q)) = (fn qe => imp (qelim p qe) (qelim q qe))
1.3018 - | qelim (Iff (p, q)) = (fn qe => iff (qelim p qe) (qelim q qe))
1.3019 - | qelim T = (fn y => simpfm T)
1.3020 - | qelim F = (fn y => simpfm F)
1.3021 - | qelim (Lt u) = (fn y => simpfm (Lt u))
1.3022 - | qelim (Le v) = (fn y => simpfm (Le v))
1.3023 - | qelim (Gt w) = (fn y => simpfm (Gt w))
1.3024 - | qelim (Ge x) = (fn y => simpfm (Ge x))
1.3025 - | qelim (Eq y) = (fn ya => simpfm (Eq y))
1.3026 - | qelim (NEq z) = (fn y => simpfm (NEq z))
1.3027 - | qelim (Dvd (aa, ab)) = (fn y => simpfm (Dvd (aa, ab)))
1.3028 - | qelim (NDvd (ac, ad)) = (fn y => simpfm (NDvd (ac, ad)))
1.3029 - | qelim (Closed ap) = (fn y => simpfm (Closed ap))
1.3030 - | qelim (NClosed aq) = (fn y => simpfm (NClosed aq));
1.3031 -
1.3032 -fun minus_def1 m n = nat (minus_def2 (m) (n));
1.3033 -
1.3034 -fun decrnum (Bound n) = Bound (minus_def1 n one_def0)
1.3035 - | decrnum (Neg a) = Neg (decrnum a)
1.3036 - | decrnum (Add (a, b)) = Add (decrnum a, decrnum b)
1.3037 - | decrnum (Sub (a, b)) = Sub (decrnum a, decrnum b)
1.3038 - | decrnum (Mul (c, a)) = Mul (c, decrnum a)
1.3039 - | decrnum (C u) = C u
1.3040 - | decrnum (CX (w, x)) = CX (w, x);
1.3041 -
1.3042 -fun decr (Lt a) = Lt (decrnum a)
1.3043 - | decr (Le a) = Le (decrnum a)
1.3044 - | decr (Gt a) = Gt (decrnum a)
1.3045 - | decr (Ge a) = Ge (decrnum a)
1.3046 - | decr (Eq a) = Eq (decrnum a)
1.3047 - | decr (NEq a) = NEq (decrnum a)
1.3048 - | decr (Dvd (i, a)) = Dvd (i, decrnum a)
1.3049 - | decr (NDvd (i, a)) = NDvd (i, decrnum a)
1.3050 - | decr (NOT p) = NOT (decr p)
1.3051 - | decr (And (p, q)) = And (decr p, decr q)
1.3052 - | decr (Or (p, q)) = Or (decr p, decr q)
1.3053 - | decr (Imp (p, q)) = Imp (decr p, decr q)
1.3054 - | decr (Iff (p, q)) = Iff (decr p, decr q)
1.3055 - | decr T = T
1.3056 - | decr F = F
1.3057 - | decr (E ao) = E ao
1.3058 - | decr (A ap) = A ap
1.3059 - | decr (Closed aq) = Closed aq
1.3060 - | decr (NClosed ar) = NClosed ar;
1.3061 -
1.3062 -fun map f [] = []
1.3063 - | map f (x :: xs) = (f x :: map f xs);
1.3064 -
1.3065 -fun allpairs f [] ys = []
1.3066 - | allpairs f (x :: xs) ys = append (map (f x) ys) (allpairs f xs ys);
1.3067 -
1.3068 -fun numsubst0 t (C c) = C c
1.3069 - | numsubst0 t (Bound n) = (if (n = 0) then t else Bound n)
1.3070 - | numsubst0 t (CX (i, a)) = Add (Mul (i, t), numsubst0 t a)
1.3071 - | numsubst0 t (Neg a) = Neg (numsubst0 t a)
1.3072 - | numsubst0 t (Add (a, b)) = Add (numsubst0 t a, numsubst0 t b)
1.3073 - | numsubst0 t (Sub (a, b)) = Sub (numsubst0 t a, numsubst0 t b)
1.3074 - | numsubst0 t (Mul (i, a)) = Mul (i, numsubst0 t a);
1.3075 -
1.3076 -fun subst0 t T = T
1.3077 - | subst0 t F = F
1.3078 - | subst0 t (Lt a) = Lt (numsubst0 t a)
1.3079 - | subst0 t (Le a) = Le (numsubst0 t a)
1.3080 - | subst0 t (Gt a) = Gt (numsubst0 t a)
1.3081 - | subst0 t (Ge a) = Ge (numsubst0 t a)
1.3082 - | subst0 t (Eq a) = Eq (numsubst0 t a)
1.3083 - | subst0 t (NEq a) = NEq (numsubst0 t a)
1.3084 - | subst0 t (Dvd (i, a)) = Dvd (i, numsubst0 t a)
1.3085 - | subst0 t (NDvd (i, a)) = NDvd (i, numsubst0 t a)
1.3086 - | subst0 t (NOT p) = NOT (subst0 t p)
1.3087 - | subst0 t (And (p, q)) = And (subst0 t p, subst0 t q)
1.3088 - | subst0 t (Or (p, q)) = Or (subst0 t p, subst0 t q)
1.3089 - | subst0 t (Imp (p, q)) = Imp (subst0 t p, subst0 t q)
1.3090 - | subst0 t (Iff (p, q)) = Iff (subst0 t p, subst0 t q)
1.3091 - | subst0 t (Closed P) = Closed P
1.3092 - | subst0 t (NClosed P) = NClosed P;
1.3093 -
1.3094 -fun minusinf (And (p, q)) = And (minusinf p, minusinf q)
1.3095 - | minusinf (Or (p, q)) = Or (minusinf p, minusinf q)
1.3096 - | minusinf (Eq (CX (c, e))) = F
1.3097 - | minusinf (NEq (CX (c, e))) = T
1.3098 - | minusinf (Lt (CX (c, e))) = T
1.3099 - | minusinf (Le (CX (c, e))) = T
1.3100 - | minusinf (Gt (CX (c, e))) = F
1.3101 - | minusinf (Ge (CX (c, e))) = F
1.3102 - | minusinf T = T
1.3103 - | minusinf F = F
1.3104 - | minusinf (Lt (C bo)) = Lt (C bo)
1.3105 - | minusinf (Lt (Bound bp)) = Lt (Bound bp)
1.3106 - | minusinf (Lt (Neg bs)) = Lt (Neg bs)
1.3107 - | minusinf (Lt (Add (bt, bu))) = Lt (Add (bt, bu))
1.3108 - | minusinf (Lt (Sub (bv, bw))) = Lt (Sub (bv, bw))
1.3109 - | minusinf (Lt (Mul (bx, by))) = Lt (Mul (bx, by))
1.3110 - | minusinf (Le (C ck)) = Le (C ck)
1.3111 - | minusinf (Le (Bound cl)) = Le (Bound cl)
1.3112 - | minusinf (Le (Neg co)) = Le (Neg co)
1.3113 - | minusinf (Le (Add (cp, cq))) = Le (Add (cp, cq))
1.3114 - | minusinf (Le (Sub (cr, cs))) = Le (Sub (cr, cs))
1.3115 - | minusinf (Le (Mul (ct, cu))) = Le (Mul (ct, cu))
1.3116 - | minusinf (Gt (C dg)) = Gt (C dg)
1.3117 - | minusinf (Gt (Bound dh)) = Gt (Bound dh)
1.3118 - | minusinf (Gt (Neg dk)) = Gt (Neg dk)
1.3119 - | minusinf (Gt (Add (dl, dm))) = Gt (Add (dl, dm))
1.3120 - | minusinf (Gt (Sub (dn, do'))) = Gt (Sub (dn, do'))
1.3121 - | minusinf (Gt (Mul (dp, dq))) = Gt (Mul (dp, dq))
1.3122 - | minusinf (Ge (C ec)) = Ge (C ec)
1.3123 - | minusinf (Ge (Bound ed)) = Ge (Bound ed)
1.3124 - | minusinf (Ge (Neg eg)) = Ge (Neg eg)
1.3125 - | minusinf (Ge (Add (eh, ei))) = Ge (Add (eh, ei))
1.3126 - | minusinf (Ge (Sub (ej, ek))) = Ge (Sub (ej, ek))
1.3127 - | minusinf (Ge (Mul (el, em))) = Ge (Mul (el, em))
1.3128 - | minusinf (Eq (C ey)) = Eq (C ey)
1.3129 - | minusinf (Eq (Bound ez)) = Eq (Bound ez)
1.3130 - | minusinf (Eq (Neg fc)) = Eq (Neg fc)
1.3131 - | minusinf (Eq (Add (fd, fe))) = Eq (Add (fd, fe))
1.3132 - | minusinf (Eq (Sub (ff, fg))) = Eq (Sub (ff, fg))
1.3133 - | minusinf (Eq (Mul (fh, fi))) = Eq (Mul (fh, fi))
1.3134 - | minusinf (NEq (C fu)) = NEq (C fu)
1.3135 - | minusinf (NEq (Bound fv)) = NEq (Bound fv)
1.3136 - | minusinf (NEq (Neg fy)) = NEq (Neg fy)
1.3137 - | minusinf (NEq (Add (fz, ga))) = NEq (Add (fz, ga))
1.3138 - | minusinf (NEq (Sub (gb, gc))) = NEq (Sub (gb, gc))
1.3139 - | minusinf (NEq (Mul (gd, ge))) = NEq (Mul (gd, ge))
1.3140 - | minusinf (Dvd (aa, ab)) = Dvd (aa, ab)
1.3141 - | minusinf (NDvd (ac, ad)) = NDvd (ac, ad)
1.3142 - | minusinf (NOT ae) = NOT ae
1.3143 - | minusinf (Imp (aj, ak)) = Imp (aj, ak)
1.3144 - | minusinf (Iff (al, am)) = Iff (al, am)
1.3145 - | minusinf (E an) = E an
1.3146 - | minusinf (A ao) = A ao
1.3147 - | minusinf (Closed ap) = Closed ap
1.3148 - | minusinf (NClosed aq) = NClosed aq;
1.3149 -
1.3150 -fun iupt (i, j) = (if (j < i) then [] else (i :: iupt ((i + 1), j)));
1.3151 -
1.3152 -fun mirror (And (p, q)) = And (mirror p, mirror q)
1.3153 - | mirror (Or (p, q)) = Or (mirror p, mirror q)
1.3154 - | mirror (Eq (CX (c, e))) = Eq (CX (c, Neg e))
1.3155 - | mirror (NEq (CX (c, e))) = NEq (CX (c, Neg e))
1.3156 - | mirror (Lt (CX (c, e))) = Gt (CX (c, Neg e))
1.3157 - | mirror (Le (CX (c, e))) = Ge (CX (c, Neg e))
1.3158 - | mirror (Gt (CX (c, e))) = Lt (CX (c, Neg e))
1.3159 - | mirror (Ge (CX (c, e))) = Le (CX (c, Neg e))
1.3160 - | mirror (Dvd (i, CX (c, e))) = Dvd (i, CX (c, Neg e))
1.3161 - | mirror (NDvd (i, CX (c, e))) = NDvd (i, CX (c, Neg e))
1.3162 - | mirror T = T
1.3163 - | mirror F = F
1.3164 - | mirror (Lt (C bo)) = Lt (C bo)
1.3165 - | mirror (Lt (Bound bp)) = Lt (Bound bp)
1.3166 - | mirror (Lt (Neg bs)) = Lt (Neg bs)
1.3167 - | mirror (Lt (Add (bt, bu))) = Lt (Add (bt, bu))
1.3168 - | mirror (Lt (Sub (bv, bw))) = Lt (Sub (bv, bw))
1.3169 - | mirror (Lt (Mul (bx, by))) = Lt (Mul (bx, by))
1.3170 - | mirror (Le (C ck)) = Le (C ck)
1.3171 - | mirror (Le (Bound cl)) = Le (Bound cl)
1.3172 - | mirror (Le (Neg co)) = Le (Neg co)
1.3173 - | mirror (Le (Add (cp, cq))) = Le (Add (cp, cq))
1.3174 - | mirror (Le (Sub (cr, cs))) = Le (Sub (cr, cs))
1.3175 - | mirror (Le (Mul (ct, cu))) = Le (Mul (ct, cu))
1.3176 - | mirror (Gt (C dg)) = Gt (C dg)
1.3177 - | mirror (Gt (Bound dh)) = Gt (Bound dh)
1.3178 - | mirror (Gt (Neg dk)) = Gt (Neg dk)
1.3179 - | mirror (Gt (Add (dl, dm))) = Gt (Add (dl, dm))
1.3180 - | mirror (Gt (Sub (dn, do'))) = Gt (Sub (dn, do'))
1.3181 - | mirror (Gt (Mul (dp, dq))) = Gt (Mul (dp, dq))
1.3182 - | mirror (Ge (C ec)) = Ge (C ec)
1.3183 - | mirror (Ge (Bound ed)) = Ge (Bound ed)
1.3184 - | mirror (Ge (Neg eg)) = Ge (Neg eg)
1.3185 - | mirror (Ge (Add (eh, ei))) = Ge (Add (eh, ei))
1.3186 - | mirror (Ge (Sub (ej, ek))) = Ge (Sub (ej, ek))
1.3187 - | mirror (Ge (Mul (el, em))) = Ge (Mul (el, em))
1.3188 - | mirror (Eq (C ey)) = Eq (C ey)
1.3189 - | mirror (Eq (Bound ez)) = Eq (Bound ez)
1.3190 - | mirror (Eq (Neg fc)) = Eq (Neg fc)
1.3191 - | mirror (Eq (Add (fd, fe))) = Eq (Add (fd, fe))
1.3192 - | mirror (Eq (Sub (ff, fg))) = Eq (Sub (ff, fg))
1.3193 - | mirror (Eq (Mul (fh, fi))) = Eq (Mul (fh, fi))
1.3194 - | mirror (NEq (C fu)) = NEq (C fu)
1.3195 - | mirror (NEq (Bound fv)) = NEq (Bound fv)
1.3196 - | mirror (NEq (Neg fy)) = NEq (Neg fy)
1.3197 - | mirror (NEq (Add (fz, ga))) = NEq (Add (fz, ga))
1.3198 - | mirror (NEq (Sub (gb, gc))) = NEq (Sub (gb, gc))
1.3199 - | mirror (NEq (Mul (gd, ge))) = NEq (Mul (gd, ge))
1.3200 - | mirror (Dvd (aa, C gq)) = Dvd (aa, C gq)
1.3201 - | mirror (Dvd (aa, Bound gr)) = Dvd (aa, Bound gr)
1.3202 - | mirror (Dvd (aa, Neg gu)) = Dvd (aa, Neg gu)
1.3203 - | mirror (Dvd (aa, Add (gv, gw))) = Dvd (aa, Add (gv, gw))
1.3204 - | mirror (Dvd (aa, Sub (gx, gy))) = Dvd (aa, Sub (gx, gy))
1.3205 - | mirror (Dvd (aa, Mul (gz, ha))) = Dvd (aa, Mul (gz, ha))
1.3206 - | mirror (NDvd (ac, C hm)) = NDvd (ac, C hm)
1.3207 - | mirror (NDvd (ac, Bound hn)) = NDvd (ac, Bound hn)
1.3208 - | mirror (NDvd (ac, Neg hq)) = NDvd (ac, Neg hq)
1.3209 - | mirror (NDvd (ac, Add (hr, hs))) = NDvd (ac, Add (hr, hs))
1.3210 - | mirror (NDvd (ac, Sub (ht, hu))) = NDvd (ac, Sub (ht, hu))
1.3211 - | mirror (NDvd (ac, Mul (hv, hw))) = NDvd (ac, Mul (hv, hw))
1.3212 - | mirror (NOT ae) = NOT ae
1.3213 - | mirror (Imp (aj, ak)) = Imp (aj, ak)
1.3214 - | mirror (Iff (al, am)) = Iff (al, am)
1.3215 - | mirror (E an) = E an
1.3216 - | mirror (A ao) = A ao
1.3217 - | mirror (Closed ap) = Closed ap
1.3218 - | mirror (NClosed aq) = NClosed aq;
1.3219 -
1.3220 -fun plus_def0 m n = nat ((m) + (n));
1.3221 -
1.3222 -fun size_def9 [] = 0
1.3223 - | size_def9 (a :: list) = plus_def0 (size_def9 list) (0 + 1);
1.3224 -
1.3225 -fun alpha (And (p, q)) = append (alpha p) (alpha q)
1.3226 - | alpha (Or (p, q)) = append (alpha p) (alpha q)
1.3227 - | alpha (Eq (CX (c, e))) = [Add (C ~1, e)]
1.3228 - | alpha (NEq (CX (c, e))) = [e]
1.3229 - | alpha (Lt (CX (c, e))) = [e]
1.3230 - | alpha (Le (CX (c, e))) = [Add (C ~1, e)]
1.3231 - | alpha (Gt (CX (c, e))) = []
1.3232 - | alpha (Ge (CX (c, e))) = []
1.3233 - | alpha T = []
1.3234 - | alpha F = []
1.3235 - | alpha (Lt (C bo)) = []
1.3236 - | alpha (Lt (Bound bp)) = []
1.3237 - | alpha (Lt (Neg bs)) = []
1.3238 - | alpha (Lt (Add (bt, bu))) = []
1.3239 - | alpha (Lt (Sub (bv, bw))) = []
1.3240 - | alpha (Lt (Mul (bx, by))) = []
1.3241 - | alpha (Le (C ck)) = []
1.3242 - | alpha (Le (Bound cl)) = []
1.3243 - | alpha (Le (Neg co)) = []
1.3244 - | alpha (Le (Add (cp, cq))) = []
1.3245 - | alpha (Le (Sub (cr, cs))) = []
1.3246 - | alpha (Le (Mul (ct, cu))) = []
1.3247 - | alpha (Gt (C dg)) = []
1.3248 - | alpha (Gt (Bound dh)) = []
1.3249 - | alpha (Gt (Neg dk)) = []
1.3250 - | alpha (Gt (Add (dl, dm))) = []
1.3251 - | alpha (Gt (Sub (dn, do'))) = []
1.3252 - | alpha (Gt (Mul (dp, dq))) = []
1.3253 - | alpha (Ge (C ec)) = []
1.3254 - | alpha (Ge (Bound ed)) = []
1.3255 - | alpha (Ge (Neg eg)) = []
1.3256 - | alpha (Ge (Add (eh, ei))) = []
1.3257 - | alpha (Ge (Sub (ej, ek))) = []
1.3258 - | alpha (Ge (Mul (el, em))) = []
1.3259 - | alpha (Eq (C ey)) = []
1.3260 - | alpha (Eq (Bound ez)) = []
1.3261 - | alpha (Eq (Neg fc)) = []
1.3262 - | alpha (Eq (Add (fd, fe))) = []
1.3263 - | alpha (Eq (Sub (ff, fg))) = []
1.3264 - | alpha (Eq (Mul (fh, fi))) = []
1.3265 - | alpha (NEq (C fu)) = []
1.3266 - | alpha (NEq (Bound fv)) = []
1.3267 - | alpha (NEq (Neg fy)) = []
1.3268 - | alpha (NEq (Add (fz, ga))) = []
1.3269 - | alpha (NEq (Sub (gb, gc))) = []
1.3270 - | alpha (NEq (Mul (gd, ge))) = []
1.3271 - | alpha (Dvd (aa, ab)) = []
1.3272 - | alpha (NDvd (ac, ad)) = []
1.3273 - | alpha (NOT ae) = []
1.3274 - | alpha (Imp (aj, ak)) = []
1.3275 - | alpha (Iff (al, am)) = []
1.3276 - | alpha (E an) = []
1.3277 - | alpha (A ao) = []
1.3278 - | alpha (Closed ap) = []
1.3279 - | alpha (NClosed aq) = [];
1.3280 -
1.3281 -fun memberl x [] = false
1.3282 - | memberl x (y :: ys) = ((x = y) orelse memberl x ys);
1.3283 -
1.3284 -fun remdups [] = []
1.3285 - | remdups (x :: xs) =
1.3286 - (if memberl x xs then remdups xs else (x :: remdups xs));
1.3287 -
1.3288 -fun beta (And (p, q)) = append (beta p) (beta q)
1.3289 - | beta (Or (p, q)) = append (beta p) (beta q)
1.3290 - | beta (Eq (CX (c, e))) = [Sub (C ~1, e)]
1.3291 - | beta (NEq (CX (c, e))) = [Neg e]
1.3292 - | beta (Lt (CX (c, e))) = []
1.3293 - | beta (Le (CX (c, e))) = []
1.3294 - | beta (Gt (CX (c, e))) = [Neg e]
1.3295 - | beta (Ge (CX (c, e))) = [Sub (C ~1, e)]
1.3296 - | beta T = []
1.3297 - | beta F = []
1.3298 - | beta (Lt (C bo)) = []
1.3299 - | beta (Lt (Bound bp)) = []
1.3300 - | beta (Lt (Neg bs)) = []
1.3301 - | beta (Lt (Add (bt, bu))) = []
1.3302 - | beta (Lt (Sub (bv, bw))) = []
1.3303 - | beta (Lt (Mul (bx, by))) = []
1.3304 - | beta (Le (C ck)) = []
1.3305 - | beta (Le (Bound cl)) = []
1.3306 - | beta (Le (Neg co)) = []
1.3307 - | beta (Le (Add (cp, cq))) = []
1.3308 - | beta (Le (Sub (cr, cs))) = []
1.3309 - | beta (Le (Mul (ct, cu))) = []
1.3310 - | beta (Gt (C dg)) = []
1.3311 - | beta (Gt (Bound dh)) = []
1.3312 - | beta (Gt (Neg dk)) = []
1.3313 - | beta (Gt (Add (dl, dm))) = []
1.3314 - | beta (Gt (Sub (dn, do'))) = []
1.3315 - | beta (Gt (Mul (dp, dq))) = []
1.3316 - | beta (Ge (C ec)) = []
1.3317 - | beta (Ge (Bound ed)) = []
1.3318 - | beta (Ge (Neg eg)) = []
1.3319 - | beta (Ge (Add (eh, ei))) = []
1.3320 - | beta (Ge (Sub (ej, ek))) = []
1.3321 - | beta (Ge (Mul (el, em))) = []
1.3322 - | beta (Eq (C ey)) = []
1.3323 - | beta (Eq (Bound ez)) = []
1.3324 - | beta (Eq (Neg fc)) = []
1.3325 - | beta (Eq (Add (fd, fe))) = []
1.3326 - | beta (Eq (Sub (ff, fg))) = []
1.3327 - | beta (Eq (Mul (fh, fi))) = []
1.3328 - | beta (NEq (C fu)) = []
1.3329 - | beta (NEq (Bound fv)) = []
1.3330 - | beta (NEq (Neg fy)) = []
1.3331 - | beta (NEq (Add (fz, ga))) = []
1.3332 - | beta (NEq (Sub (gb, gc))) = []
1.3333 - | beta (NEq (Mul (gd, ge))) = []
1.3334 - | beta (Dvd (aa, ab)) = []
1.3335 - | beta (NDvd (ac, ad)) = []
1.3336 - | beta (NOT ae) = []
1.3337 - | beta (Imp (aj, ak)) = []
1.3338 - | beta (Iff (al, am)) = []
1.3339 - | beta (E an) = []
1.3340 - | beta (A ao) = []
1.3341 - | beta (Closed ap) = []
1.3342 - | beta (NClosed aq) = [];
1.3343 -
1.3344 -fun fst (a, b) = a;
1.3345 -
1.3346 -fun div_def1 a b = fst (divAlg (a, b));
1.3347 -
1.3348 -fun div_def0 m n = nat (div_def1 (m) (n));
1.3349 -
1.3350 -fun mod_def0 m n = nat (mod_def1 (m) (n));
1.3351 -
1.3352 -fun gcd (m, n) = (if (n = 0) then m else gcd (n, mod_def0 m n));
1.3353 -
1.3354 -fun times_def0 m n = nat ((m) * (n));
1.3355 -
1.3356 -fun lcm x = (fn (m, n) => div_def0 (times_def0 m n) (gcd (m, n))) x;
1.3357 -
1.3358 -fun ilcm x = (fn j => (lcm (nat (abs x), nat (abs j))));
1.3359 -
1.3360 -fun delta (And (p, q)) = ilcm (delta p) (delta q)
1.3361 - | delta (Or (p, q)) = ilcm (delta p) (delta q)
1.3362 - | delta (Dvd (i, CX (c, e))) = i
1.3363 - | delta (NDvd (i, CX (c, e))) = i
1.3364 - | delta T = 1
1.3365 - | delta F = 1
1.3366 - | delta (Lt u) = 1
1.3367 - | delta (Le v) = 1
1.3368 - | delta (Gt w) = 1
1.3369 - | delta (Ge x) = 1
1.3370 - | delta (Eq y) = 1
1.3371 - | delta (NEq z) = 1
1.3372 - | delta (Dvd (aa, C bo)) = 1
1.3373 - | delta (Dvd (aa, Bound bp)) = 1
1.3374 - | delta (Dvd (aa, Neg bs)) = 1
1.3375 - | delta (Dvd (aa, Add (bt, bu))) = 1
1.3376 - | delta (Dvd (aa, Sub (bv, bw))) = 1
1.3377 - | delta (Dvd (aa, Mul (bx, by))) = 1
1.3378 - | delta (NDvd (ac, C ck)) = 1
1.3379 - | delta (NDvd (ac, Bound cl)) = 1
1.3380 - | delta (NDvd (ac, Neg co)) = 1
1.3381 - | delta (NDvd (ac, Add (cp, cq))) = 1
1.3382 - | delta (NDvd (ac, Sub (cr, cs))) = 1
1.3383 - | delta (NDvd (ac, Mul (ct, cu))) = 1
1.3384 - | delta (NOT ae) = 1
1.3385 - | delta (Imp (aj, ak)) = 1
1.3386 - | delta (Iff (al, am)) = 1
1.3387 - | delta (E an) = 1
1.3388 - | delta (A ao) = 1
1.3389 - | delta (Closed ap) = 1
1.3390 - | delta (NClosed aq) = 1;
1.3391 -
1.3392 -fun a_beta (And (p, q)) = (fn k => And (a_beta p k, a_beta q k))
1.3393 - | a_beta (Or (p, q)) = (fn k => Or (a_beta p k, a_beta q k))
1.3394 - | a_beta (Eq (CX (c, e))) = (fn k => Eq (CX (1, Mul (div_def1 k c, e))))
1.3395 - | a_beta (NEq (CX (c, e))) = (fn k => NEq (CX (1, Mul (div_def1 k c, e))))
1.3396 - | a_beta (Lt (CX (c, e))) = (fn k => Lt (CX (1, Mul (div_def1 k c, e))))
1.3397 - | a_beta (Le (CX (c, e))) = (fn k => Le (CX (1, Mul (div_def1 k c, e))))
1.3398 - | a_beta (Gt (CX (c, e))) = (fn k => Gt (CX (1, Mul (div_def1 k c, e))))
1.3399 - | a_beta (Ge (CX (c, e))) = (fn k => Ge (CX (1, Mul (div_def1 k c, e))))
1.3400 - | a_beta (Dvd (i, CX (c, e))) =
1.3401 - (fn k => Dvd ((div_def1 k c * i), CX (1, Mul (div_def1 k c, e))))
1.3402 - | a_beta (NDvd (i, CX (c, e))) =
1.3403 - (fn k => NDvd ((div_def1 k c * i), CX (1, Mul (div_def1 k c, e))))
1.3404 - | a_beta T = (fn k => T)
1.3405 - | a_beta F = (fn k => F)
1.3406 - | a_beta (Lt (C bo)) = (fn k => Lt (C bo))
1.3407 - | a_beta (Lt (Bound bp)) = (fn k => Lt (Bound bp))
1.3408 - | a_beta (Lt (Neg bs)) = (fn k => Lt (Neg bs))
1.3409 - | a_beta (Lt (Add (bt, bu))) = (fn k => Lt (Add (bt, bu)))
1.3410 - | a_beta (Lt (Sub (bv, bw))) = (fn k => Lt (Sub (bv, bw)))
1.3411 - | a_beta (Lt (Mul (bx, by))) = (fn k => Lt (Mul (bx, by)))
1.3412 - | a_beta (Le (C ck)) = (fn k => Le (C ck))
1.3413 - | a_beta (Le (Bound cl)) = (fn k => Le (Bound cl))
1.3414 - | a_beta (Le (Neg co)) = (fn k => Le (Neg co))
1.3415 - | a_beta (Le (Add (cp, cq))) = (fn k => Le (Add (cp, cq)))
1.3416 - | a_beta (Le (Sub (cr, cs))) = (fn k => Le (Sub (cr, cs)))
1.3417 - | a_beta (Le (Mul (ct, cu))) = (fn k => Le (Mul (ct, cu)))
1.3418 - | a_beta (Gt (C dg)) = (fn k => Gt (C dg))
1.3419 - | a_beta (Gt (Bound dh)) = (fn k => Gt (Bound dh))
1.3420 - | a_beta (Gt (Neg dk)) = (fn k => Gt (Neg dk))
1.3421 - | a_beta (Gt (Add (dl, dm))) = (fn k => Gt (Add (dl, dm)))
1.3422 - | a_beta (Gt (Sub (dn, do'))) = (fn k => Gt (Sub (dn, do')))
1.3423 - | a_beta (Gt (Mul (dp, dq))) = (fn k => Gt (Mul (dp, dq)))
1.3424 - | a_beta (Ge (C ec)) = (fn k => Ge (C ec))
1.3425 - | a_beta (Ge (Bound ed)) = (fn k => Ge (Bound ed))
1.3426 - | a_beta (Ge (Neg eg)) = (fn k => Ge (Neg eg))
1.3427 - | a_beta (Ge (Add (eh, ei))) = (fn k => Ge (Add (eh, ei)))
1.3428 - | a_beta (Ge (Sub (ej, ek))) = (fn k => Ge (Sub (ej, ek)))
1.3429 - | a_beta (Ge (Mul (el, em))) = (fn k => Ge (Mul (el, em)))
1.3430 - | a_beta (Eq (C ey)) = (fn k => Eq (C ey))
1.3431 - | a_beta (Eq (Bound ez)) = (fn k => Eq (Bound ez))
1.3432 - | a_beta (Eq (Neg fc)) = (fn k => Eq (Neg fc))
1.3433 - | a_beta (Eq (Add (fd, fe))) = (fn k => Eq (Add (fd, fe)))
1.3434 - | a_beta (Eq (Sub (ff, fg))) = (fn k => Eq (Sub (ff, fg)))
1.3435 - | a_beta (Eq (Mul (fh, fi))) = (fn k => Eq (Mul (fh, fi)))
1.3436 - | a_beta (NEq (C fu)) = (fn k => NEq (C fu))
1.3437 - | a_beta (NEq (Bound fv)) = (fn k => NEq (Bound fv))
1.3438 - | a_beta (NEq (Neg fy)) = (fn k => NEq (Neg fy))
1.3439 - | a_beta (NEq (Add (fz, ga))) = (fn k => NEq (Add (fz, ga)))
1.3440 - | a_beta (NEq (Sub (gb, gc))) = (fn k => NEq (Sub (gb, gc)))
1.3441 - | a_beta (NEq (Mul (gd, ge))) = (fn k => NEq (Mul (gd, ge)))
1.3442 - | a_beta (Dvd (aa, C gq)) = (fn k => Dvd (aa, C gq))
1.3443 - | a_beta (Dvd (aa, Bound gr)) = (fn k => Dvd (aa, Bound gr))
1.3444 - | a_beta (Dvd (aa, Neg gu)) = (fn k => Dvd (aa, Neg gu))
1.3445 - | a_beta (Dvd (aa, Add (gv, gw))) = (fn k => Dvd (aa, Add (gv, gw)))
1.3446 - | a_beta (Dvd (aa, Sub (gx, gy))) = (fn k => Dvd (aa, Sub (gx, gy)))
1.3447 - | a_beta (Dvd (aa, Mul (gz, ha))) = (fn k => Dvd (aa, Mul (gz, ha)))
1.3448 - | a_beta (NDvd (ac, C hm)) = (fn k => NDvd (ac, C hm))
1.3449 - | a_beta (NDvd (ac, Bound hn)) = (fn k => NDvd (ac, Bound hn))
1.3450 - | a_beta (NDvd (ac, Neg hq)) = (fn k => NDvd (ac, Neg hq))
1.3451 - | a_beta (NDvd (ac, Add (hr, hs))) = (fn k => NDvd (ac, Add (hr, hs)))
1.3452 - | a_beta (NDvd (ac, Sub (ht, hu))) = (fn k => NDvd (ac, Sub (ht, hu)))
1.3453 - | a_beta (NDvd (ac, Mul (hv, hw))) = (fn k => NDvd (ac, Mul (hv, hw)))
1.3454 - | a_beta (NOT ae) = (fn k => NOT ae)
1.3455 - | a_beta (Imp (aj, ak)) = (fn k => Imp (aj, ak))
1.3456 - | a_beta (Iff (al, am)) = (fn k => Iff (al, am))
1.3457 - | a_beta (E an) = (fn k => E an)
1.3458 - | a_beta (A ao) = (fn k => A ao)
1.3459 - | a_beta (Closed ap) = (fn k => Closed ap)
1.3460 - | a_beta (NClosed aq) = (fn k => NClosed aq);
1.3461 -
1.3462 -fun zeta (And (p, q)) = ilcm (zeta p) (zeta q)
1.3463 - | zeta (Or (p, q)) = ilcm (zeta p) (zeta q)
1.3464 - | zeta (Eq (CX (c, e))) = c
1.3465 - | zeta (NEq (CX (c, e))) = c
1.3466 - | zeta (Lt (CX (c, e))) = c
1.3467 - | zeta (Le (CX (c, e))) = c
1.3468 - | zeta (Gt (CX (c, e))) = c
1.3469 - | zeta (Ge (CX (c, e))) = c
1.3470 - | zeta (Dvd (i, CX (c, e))) = c
1.3471 - | zeta (NDvd (i, CX (c, e))) = c
1.3472 - | zeta T = 1
1.3473 - | zeta F = 1
1.3474 - | zeta (Lt (C bo)) = 1
1.3475 - | zeta (Lt (Bound bp)) = 1
1.3476 - | zeta (Lt (Neg bs)) = 1
1.3477 - | zeta (Lt (Add (bt, bu))) = 1
1.3478 - | zeta (Lt (Sub (bv, bw))) = 1
1.3479 - | zeta (Lt (Mul (bx, by))) = 1
1.3480 - | zeta (Le (C ck)) = 1
1.3481 - | zeta (Le (Bound cl)) = 1
1.3482 - | zeta (Le (Neg co)) = 1
1.3483 - | zeta (Le (Add (cp, cq))) = 1
1.3484 - | zeta (Le (Sub (cr, cs))) = 1
1.3485 - | zeta (Le (Mul (ct, cu))) = 1
1.3486 - | zeta (Gt (C dg)) = 1
1.3487 - | zeta (Gt (Bound dh)) = 1
1.3488 - | zeta (Gt (Neg dk)) = 1
1.3489 - | zeta (Gt (Add (dl, dm))) = 1
1.3490 - | zeta (Gt (Sub (dn, do'))) = 1
1.3491 - | zeta (Gt (Mul (dp, dq))) = 1
1.3492 - | zeta (Ge (C ec)) = 1
1.3493 - | zeta (Ge (Bound ed)) = 1
1.3494 - | zeta (Ge (Neg eg)) = 1
1.3495 - | zeta (Ge (Add (eh, ei))) = 1
1.3496 - | zeta (Ge (Sub (ej, ek))) = 1
1.3497 - | zeta (Ge (Mul (el, em))) = 1
1.3498 - | zeta (Eq (C ey)) = 1
1.3499 - | zeta (Eq (Bound ez)) = 1
1.3500 - | zeta (Eq (Neg fc)) = 1
1.3501 - | zeta (Eq (Add (fd, fe))) = 1
1.3502 - | zeta (Eq (Sub (ff, fg))) = 1
1.3503 - | zeta (Eq (Mul (fh, fi))) = 1
1.3504 - | zeta (NEq (C fu)) = 1
1.3505 - | zeta (NEq (Bound fv)) = 1
1.3506 - | zeta (NEq (Neg fy)) = 1
1.3507 - | zeta (NEq (Add (fz, ga))) = 1
1.3508 - | zeta (NEq (Sub (gb, gc))) = 1
1.3509 - | zeta (NEq (Mul (gd, ge))) = 1
1.3510 - | zeta (Dvd (aa, C gq)) = 1
1.3511 - | zeta (Dvd (aa, Bound gr)) = 1
1.3512 - | zeta (Dvd (aa, Neg gu)) = 1
1.3513 - | zeta (Dvd (aa, Add (gv, gw))) = 1
1.3514 - | zeta (Dvd (aa, Sub (gx, gy))) = 1
1.3515 - | zeta (Dvd (aa, Mul (gz, ha))) = 1
1.3516 - | zeta (NDvd (ac, C hm)) = 1
1.3517 - | zeta (NDvd (ac, Bound hn)) = 1
1.3518 - | zeta (NDvd (ac, Neg hq)) = 1
1.3519 - | zeta (NDvd (ac, Add (hr, hs))) = 1
1.3520 - | zeta (NDvd (ac, Sub (ht, hu))) = 1
1.3521 - | zeta (NDvd (ac, Mul (hv, hw))) = 1
1.3522 - | zeta (NOT ae) = 1
1.3523 - | zeta (Imp (aj, ak)) = 1
1.3524 - | zeta (Iff (al, am)) = 1
1.3525 - | zeta (E an) = 1
1.3526 - | zeta (A ao) = 1
1.3527 - | zeta (Closed ap) = 1
1.3528 - | zeta (NClosed aq) = 1;
1.3529 -
1.3530 -fun split x = (fn p => x (fst p) (snd p));
1.3531 -
1.3532 -fun zsplit0 (C c) = (0, C c)
1.3533 - | zsplit0 (Bound n) = (if (n = 0) then (1, C 0) else (0, Bound n))
1.3534 - | zsplit0 (CX (i, a)) = split (fn i' => (fn x => ((i + i'), x))) (zsplit0 a)
1.3535 - | zsplit0 (Neg a) = (fn (i', a') => (~ i', Neg a')) (zsplit0 a)
1.3536 - | zsplit0 (Add (a, b)) =
1.3537 - (fn (ia, a') => (fn (ib, b') => ((ia + ib), Add (a', b'))) (zsplit0 b))
1.3538 - (zsplit0 a)
1.3539 - | zsplit0 (Sub (a, b)) =
1.3540 - (fn (ia, a') =>
1.3541 - (fn (ib, b') => (minus_def2 ia ib, Sub (a', b'))) (zsplit0 b))
1.3542 - (zsplit0 a)
1.3543 - | zsplit0 (Mul (i, a)) = (fn (i', a') => ((i * i'), Mul (i, a'))) (zsplit0 a);
1.3544 -
1.3545 -fun zlfm (And (p, q)) = And (zlfm p, zlfm q)
1.3546 - | zlfm (Or (p, q)) = Or (zlfm p, zlfm q)
1.3547 - | zlfm (Imp (p, q)) = Or (zlfm (NOT p), zlfm q)
1.3548 - | zlfm (Iff (p, q)) =
1.3549 - Or (And (zlfm p, zlfm q), And (zlfm (NOT p), zlfm (NOT q)))
1.3550 - | zlfm (Lt a) =
1.3551 - let val x = zsplit0 a
1.3552 - in (fn (c, r) =>
1.3553 - (if (c = 0) then Lt r
1.3554 - else (if (0 < c) then Lt (CX (c, r)) else Gt (CX (~ c, Neg r)))))
1.3555 - x
1.3556 - end
1.3557 - | zlfm (Le a) =
1.3558 - let val x = zsplit0 a
1.3559 - in (fn (c, r) =>
1.3560 - (if (c = 0) then Le r
1.3561 - else (if (0 < c) then Le (CX (c, r)) else Ge (CX (~ c, Neg r)))))
1.3562 - x
1.3563 - end
1.3564 - | zlfm (Gt a) =
1.3565 - let val x = zsplit0 a
1.3566 - in (fn (c, r) =>
1.3567 - (if (c = 0) then Gt r
1.3568 - else (if (0 < c) then Gt (CX (c, r)) else Lt (CX (~ c, Neg r)))))
1.3569 - x
1.3570 - end
1.3571 - | zlfm (Ge a) =
1.3572 - let val x = zsplit0 a
1.3573 - in (fn (c, r) =>
1.3574 - (if (c = 0) then Ge r
1.3575 - else (if (0 < c) then Ge (CX (c, r)) else Le (CX (~ c, Neg r)))))
1.3576 - x
1.3577 - end
1.3578 - | zlfm (Eq a) =
1.3579 - let val x = zsplit0 a
1.3580 - in (fn (c, r) =>
1.3581 - (if (c = 0) then Eq r
1.3582 - else (if (0 < c) then Eq (CX (c, r)) else Eq (CX (~ c, Neg r)))))
1.3583 - x
1.3584 - end
1.3585 - | zlfm (NEq a) =
1.3586 - let val x = zsplit0 a
1.3587 - in (fn (c, r) =>
1.3588 - (if (c = 0) then NEq r
1.3589 - else (if (0 < c) then NEq (CX (c, r)) else NEq (CX (~ c, Neg r)))))
1.3590 - x
1.3591 - end
1.3592 - | zlfm (Dvd (i, a)) =
1.3593 - (if (i = 0) then zlfm (Eq a)
1.3594 - else let val x = zsplit0 a
1.3595 - in (fn (c, r) =>
1.3596 - (if (c = 0) then Dvd (abs i, r)
1.3597 - else (if (0 < c) then Dvd (abs i, CX (c, r))
1.3598 - else Dvd (abs i, CX (~ c, Neg r)))))
1.3599 - x
1.3600 +fun cooper p =
1.3601 + let
1.3602 + val (q, a) = unita p;
1.3603 + val (b, d) = a;
1.3604 + val js = iupt (1 : IntInf.int) d;
1.3605 + val mq = simpfm (minusinf q);
1.3606 + val md = evaldjf (fn j => simpfm (subst0 (C j) mq)) js;
1.3607 + in
1.3608 + (if eq_fm md T then T
1.3609 + else let
1.3610 + val qd =
1.3611 + evaldjf (fn aa as (ba, j) => simpfm (subst0 (Add (ba, C j)) q))
1.3612 + (List.allpairs (fn aa => fn ba => (aa, ba)) b js);
1.3613 + in
1.3614 + decr (disj md qd)
1.3615 end)
1.3616 - | zlfm (NDvd (i, a)) =
1.3617 - (if (i = 0) then zlfm (NEq a)
1.3618 - else let val x = zsplit0 a
1.3619 - in (fn (c, r) =>
1.3620 - (if (c = 0) then NDvd (abs i, r)
1.3621 - else (if (0 < c) then NDvd (abs i, CX (c, r))
1.3622 - else NDvd (abs i, CX (~ c, Neg r)))))
1.3623 - x
1.3624 - end)
1.3625 - | zlfm (NOT (And (p, q))) = Or (zlfm (NOT p), zlfm (NOT q))
1.3626 - | zlfm (NOT (Or (p, q))) = And (zlfm (NOT p), zlfm (NOT q))
1.3627 - | zlfm (NOT (Imp (p, q))) = And (zlfm p, zlfm (NOT q))
1.3628 - | zlfm (NOT (Iff (p, q))) =
1.3629 - Or (And (zlfm p, zlfm (NOT q)), And (zlfm (NOT p), zlfm q))
1.3630 - | zlfm (NOT (NOT p)) = zlfm p
1.3631 - | zlfm (NOT T) = F
1.3632 - | zlfm (NOT F) = T
1.3633 - | zlfm (NOT (Lt a)) = zlfm (Ge a)
1.3634 - | zlfm (NOT (Le a)) = zlfm (Gt a)
1.3635 - | zlfm (NOT (Gt a)) = zlfm (Le a)
1.3636 - | zlfm (NOT (Ge a)) = zlfm (Lt a)
1.3637 - | zlfm (NOT (Eq a)) = zlfm (NEq a)
1.3638 - | zlfm (NOT (NEq a)) = zlfm (Eq a)
1.3639 - | zlfm (NOT (Dvd (i, a))) = zlfm (NDvd (i, a))
1.3640 - | zlfm (NOT (NDvd (i, a))) = zlfm (Dvd (i, a))
1.3641 - | zlfm (NOT (Closed P)) = NClosed P
1.3642 - | zlfm (NOT (NClosed P)) = Closed P
1.3643 - | zlfm T = T
1.3644 - | zlfm F = F
1.3645 - | zlfm (NOT (E ci)) = NOT (E ci)
1.3646 - | zlfm (NOT (A cj)) = NOT (A cj)
1.3647 - | zlfm (E ao) = E ao
1.3648 - | zlfm (A ap) = A ap
1.3649 - | zlfm (Closed aq) = Closed aq
1.3650 - | zlfm (NClosed ar) = NClosed ar;
1.3651 -
1.3652 -fun unit p =
1.3653 - let val p' = zlfm p; val l = zeta p';
1.3654 - val q = And (Dvd (l, CX (1, C 0)), a_beta p' l); val d = delta q;
1.3655 - val B = remdups (map simpnum (beta q));
1.3656 - val a = remdups (map simpnum (alpha q))
1.3657 - in (if less_eq_def3 (size_def9 B) (size_def9 a) then (q, (B, d))
1.3658 - else (mirror q, (a, d)))
1.3659 end;
1.3660
1.3661 -fun cooper p =
1.3662 - let val (q, (B, d)) = unit p; val js = iupt (1, d);
1.3663 - val mq = simpfm (minusinf q);
1.3664 - val md = evaldjf (fn j => simpfm (subst0 (C j) mq)) js
1.3665 - in (if (md = T) then T
1.3666 - else let val qd =
1.3667 - evaldjf (fn (b, j) => simpfm (subst0 (Add (b, C j)) q))
1.3668 - (allpairs (fn x => fn xa => (x, xa)) B js)
1.3669 - in decr (disj md qd) end)
1.3670 - end;
1.3671 +fun prep (NClosed aq) = NClosed aq
1.3672 + | prep (Closed ap) = Closed ap
1.3673 + | prep (NDvd (ac, ad)) = NDvd (ac, ad)
1.3674 + | prep (Dvd (aa, ab)) = Dvd (aa, ab)
1.3675 + | prep (NEq z) = NEq z
1.3676 + | prep (Eq y) = Eq y
1.3677 + | prep (Ge x) = Ge x
1.3678 + | prep (Gt w) = Gt w
1.3679 + | prep (Le v) = Le v
1.3680 + | prep (Lt u) = Lt u
1.3681 + | prep F = F
1.3682 + | prep T = T
1.3683 + | prep (Iffa (p, q)) = Or (prep (And (p, q)), prep (And (Nota p, Nota q)))
1.3684 + | prep (Impa (p, q)) = prep (Or (Nota p, q))
1.3685 + | prep (And (p, q)) = And (prep p, prep q)
1.3686 + | prep (Or (p, q)) = Or (prep p, prep q)
1.3687 + | prep (Nota (NClosed ck)) = Nota (prep (NClosed ck))
1.3688 + | prep (Nota (Closed cj)) = Nota (prep (Closed cj))
1.3689 + | prep (Nota (E ch)) = Nota (prep (E ch))
1.3690 + | prep (Nota (NDvd (bw, bx))) = Nota (prep (NDvd (bw, bx)))
1.3691 + | prep (Nota (Dvd (bu, bv))) = Nota (prep (Dvd (bu, bv)))
1.3692 + | prep (Nota (NEq bt)) = Nota (prep (NEq bt))
1.3693 + | prep (Nota (Eq bs)) = Nota (prep (Eq bs))
1.3694 + | prep (Nota (Ge br)) = Nota (prep (Ge br))
1.3695 + | prep (Nota (Gt bq)) = Nota (prep (Gt bq))
1.3696 + | prep (Nota (Le bp)) = Nota (prep (Le bp))
1.3697 + | prep (Nota (Lt bo)) = Nota (prep (Lt bo))
1.3698 + | prep (Nota F) = Nota (prep F)
1.3699 + | prep (Nota T) = Nota (prep T)
1.3700 + | prep (Nota (Iffa (p, q))) =
1.3701 + Or (prep (And (p, Nota q)), prep (And (Nota p, q)))
1.3702 + | prep (Nota (Impa (p, q))) = And (prep p, prep (Nota q))
1.3703 + | prep (Nota (Or (p, q))) = And (prep (Nota p), prep (Nota q))
1.3704 + | prep (Nota (A p)) = prep (E (Nota p))
1.3705 + | prep (Nota (And (p, q))) = Or (prep (Nota p), prep (Nota q))
1.3706 + | prep (Nota (Nota p)) = prep p
1.3707 + | prep (A (NClosed kj)) = prep (Nota (E (Nota (NClosed kj))))
1.3708 + | prep (A (Closed ki)) = prep (Nota (E (Nota (Closed ki))))
1.3709 + | prep (A (A kh)) = prep (Nota (E (Nota (A kh))))
1.3710 + | prep (A (E kg)) = prep (Nota (E (Nota (E kg))))
1.3711 + | prep (A (Iffa (ke, kf))) = prep (Nota (E (Nota (Iffa (ke, kf)))))
1.3712 + | prep (A (Impa (kc, kd))) = prep (Nota (E (Nota (Impa (kc, kd)))))
1.3713 + | prep (A (Or (ka, kb))) = prep (Nota (E (Nota (Or (ka, kb)))))
1.3714 + | prep (A (Nota jx)) = prep (Nota (E (Nota (Nota jx))))
1.3715 + | prep (A (NDvd (jv, jw))) = prep (Nota (E (Nota (NDvd (jv, jw)))))
1.3716 + | prep (A (Dvd (jt, ju))) = prep (Nota (E (Nota (Dvd (jt, ju)))))
1.3717 + | prep (A (NEq js)) = prep (Nota (E (Nota (NEq js))))
1.3718 + | prep (A (Eq jr)) = prep (Nota (E (Nota (Eq jr))))
1.3719 + | prep (A (Ge jq)) = prep (Nota (E (Nota (Ge jq))))
1.3720 + | prep (A (Gt jp)) = prep (Nota (E (Nota (Gt jp))))
1.3721 + | prep (A (Le jo)) = prep (Nota (E (Nota (Le jo))))
1.3722 + | prep (A (Lt jn)) = prep (Nota (E (Nota (Lt jn))))
1.3723 + | prep (A F) = prep (Nota (E (Nota F)))
1.3724 + | prep (A T) = prep (Nota (E (Nota T)))
1.3725 + | prep (A (And (p, q))) = And (prep (A p), prep (A q))
1.3726 + | prep (E (NClosed fb)) = E (prep (NClosed fb))
1.3727 + | prep (E (Closed fa)) = E (prep (Closed fa))
1.3728 + | prep (E (A ez)) = E (prep (A ez))
1.3729 + | prep (E (E ey)) = E (prep (E ey))
1.3730 + | prep (E (And (eq, er))) = E (prep (And (eq, er)))
1.3731 + | prep (E (Nota (NClosed hs))) = E (prep (Nota (NClosed hs)))
1.3732 + | prep (E (Nota (Closed hr))) = E (prep (Nota (Closed hr)))
1.3733 + | prep (E (Nota (A hq))) = E (prep (Nota (A hq)))
1.3734 + | prep (E (Nota (E hp))) = E (prep (Nota (E hp)))
1.3735 + | prep (E (Nota (Or (hj, hk)))) = E (prep (Nota (Or (hj, hk))))
1.3736 + | prep (E (Nota (Nota hg))) = E (prep (Nota (Nota hg)))
1.3737 + | prep (E (Nota (NDvd (he, hf)))) = E (prep (Nota (NDvd (he, hf))))
1.3738 + | prep (E (Nota (Dvd (hc, hd)))) = E (prep (Nota (Dvd (hc, hd))))
1.3739 + | prep (E (Nota (NEq hb))) = E (prep (Nota (NEq hb)))
1.3740 + | prep (E (Nota (Eq ha))) = E (prep (Nota (Eq ha)))
1.3741 + | prep (E (Nota (Ge gz))) = E (prep (Nota (Ge gz)))
1.3742 + | prep (E (Nota (Gt gy))) = E (prep (Nota (Gt gy)))
1.3743 + | prep (E (Nota (Le gx))) = E (prep (Nota (Le gx)))
1.3744 + | prep (E (Nota (Lt gw))) = E (prep (Nota (Lt gw)))
1.3745 + | prep (E (Nota F)) = E (prep (Nota F))
1.3746 + | prep (E (Nota T)) = E (prep (Nota T))
1.3747 + | prep (E (NDvd (en, eo))) = E (prep (NDvd (en, eo)))
1.3748 + | prep (E (Dvd (el, em))) = E (prep (Dvd (el, em)))
1.3749 + | prep (E (NEq ek)) = E (prep (NEq ek))
1.3750 + | prep (E (Eq ej)) = E (prep (Eq ej))
1.3751 + | prep (E (Ge ei)) = E (prep (Ge ei))
1.3752 + | prep (E (Gt eh)) = E (prep (Gt eh))
1.3753 + | prep (E (Le eg)) = E (prep (Le eg))
1.3754 + | prep (E (Lt ef)) = E (prep (Lt ef))
1.3755 + | prep (E (Nota (Iffa (p, q)))) =
1.3756 + Or (prep (E (And (p, Nota q))), prep (E (And (Nota p, q))))
1.3757 + | prep (E (Nota (Impa (p, q)))) = prep (E (And (p, Nota q)))
1.3758 + | prep (E (Nota (And (p, q)))) = Or (prep (E (Nota p)), prep (E (Nota q)))
1.3759 + | prep (E (Iffa (p, q))) =
1.3760 + Or (prep (E (And (p, q))), prep (E (And (Nota p, Nota q))))
1.3761 + | prep (E (Impa (p, q))) = Or (prep (E (Nota p)), prep (E q))
1.3762 + | prep (E (Or (p, q))) = Or (prep (E p), prep (E q))
1.3763 + | prep (E F) = F
1.3764 + | prep (E T) = T;
1.3765
1.3766 -fun prep (E T) = T
1.3767 - | prep (E F) = F
1.3768 - | prep (E (Or (p, q))) = Or (prep (E p), prep (E q))
1.3769 - | prep (E (Imp (p, q))) = Or (prep (E (NOT p)), prep (E q))
1.3770 - | prep (E (Iff (p, q))) =
1.3771 - Or (prep (E (And (p, q))), prep (E (And (NOT p, NOT q))))
1.3772 - | prep (E (NOT (And (p, q)))) = Or (prep (E (NOT p)), prep (E (NOT q)))
1.3773 - | prep (E (NOT (Imp (p, q)))) = prep (E (And (p, NOT q)))
1.3774 - | prep (E (NOT (Iff (p, q)))) =
1.3775 - Or (prep (E (And (p, NOT q))), prep (E (And (NOT p, q))))
1.3776 - | prep (E (Lt ef)) = E (prep (Lt ef))
1.3777 - | prep (E (Le eg)) = E (prep (Le eg))
1.3778 - | prep (E (Gt eh)) = E (prep (Gt eh))
1.3779 - | prep (E (Ge ei)) = E (prep (Ge ei))
1.3780 - | prep (E (Eq ej)) = E (prep (Eq ej))
1.3781 - | prep (E (NEq ek)) = E (prep (NEq ek))
1.3782 - | prep (E (Dvd (el, em))) = E (prep (Dvd (el, em)))
1.3783 - | prep (E (NDvd (en, eo))) = E (prep (NDvd (en, eo)))
1.3784 - | prep (E (NOT T)) = E (prep (NOT T))
1.3785 - | prep (E (NOT F)) = E (prep (NOT F))
1.3786 - | prep (E (NOT (Lt gw))) = E (prep (NOT (Lt gw)))
1.3787 - | prep (E (NOT (Le gx))) = E (prep (NOT (Le gx)))
1.3788 - | prep (E (NOT (Gt gy))) = E (prep (NOT (Gt gy)))
1.3789 - | prep (E (NOT (Ge gz))) = E (prep (NOT (Ge gz)))
1.3790 - | prep (E (NOT (Eq ha))) = E (prep (NOT (Eq ha)))
1.3791 - | prep (E (NOT (NEq hb))) = E (prep (NOT (NEq hb)))
1.3792 - | prep (E (NOT (Dvd (hc, hd)))) = E (prep (NOT (Dvd (hc, hd))))
1.3793 - | prep (E (NOT (NDvd (he, hf)))) = E (prep (NOT (NDvd (he, hf))))
1.3794 - | prep (E (NOT (NOT hg))) = E (prep (NOT (NOT hg)))
1.3795 - | prep (E (NOT (Or (hj, hk)))) = E (prep (NOT (Or (hj, hk))))
1.3796 - | prep (E (NOT (E hp))) = E (prep (NOT (E hp)))
1.3797 - | prep (E (NOT (A hq))) = E (prep (NOT (A hq)))
1.3798 - | prep (E (NOT (Closed hr))) = E (prep (NOT (Closed hr)))
1.3799 - | prep (E (NOT (NClosed hs))) = E (prep (NOT (NClosed hs)))
1.3800 - | prep (E (And (eq, er))) = E (prep (And (eq, er)))
1.3801 - | prep (E (E ey)) = E (prep (E ey))
1.3802 - | prep (E (A ez)) = E (prep (A ez))
1.3803 - | prep (E (Closed fa)) = E (prep (Closed fa))
1.3804 - | prep (E (NClosed fb)) = E (prep (NClosed fb))
1.3805 - | prep (A (And (p, q))) = And (prep (A p), prep (A q))
1.3806 - | prep (A T) = prep (NOT (E (NOT T)))
1.3807 - | prep (A F) = prep (NOT (E (NOT F)))
1.3808 - | prep (A (Lt jn)) = prep (NOT (E (NOT (Lt jn))))
1.3809 - | prep (A (Le jo)) = prep (NOT (E (NOT (Le jo))))
1.3810 - | prep (A (Gt jp)) = prep (NOT (E (NOT (Gt jp))))
1.3811 - | prep (A (Ge jq)) = prep (NOT (E (NOT (Ge jq))))
1.3812 - | prep (A (Eq jr)) = prep (NOT (E (NOT (Eq jr))))
1.3813 - | prep (A (NEq js)) = prep (NOT (E (NOT (NEq js))))
1.3814 - | prep (A (Dvd (jt, ju))) = prep (NOT (E (NOT (Dvd (jt, ju)))))
1.3815 - | prep (A (NDvd (jv, jw))) = prep (NOT (E (NOT (NDvd (jv, jw)))))
1.3816 - | prep (A (NOT jx)) = prep (NOT (E (NOT (NOT jx))))
1.3817 - | prep (A (Or (ka, kb))) = prep (NOT (E (NOT (Or (ka, kb)))))
1.3818 - | prep (A (Imp (kc, kd))) = prep (NOT (E (NOT (Imp (kc, kd)))))
1.3819 - | prep (A (Iff (ke, kf))) = prep (NOT (E (NOT (Iff (ke, kf)))))
1.3820 - | prep (A (E kg)) = prep (NOT (E (NOT (E kg))))
1.3821 - | prep (A (A kh)) = prep (NOT (E (NOT (A kh))))
1.3822 - | prep (A (Closed ki)) = prep (NOT (E (NOT (Closed ki))))
1.3823 - | prep (A (NClosed kj)) = prep (NOT (E (NOT (NClosed kj))))
1.3824 - | prep (NOT (NOT p)) = prep p
1.3825 - | prep (NOT (And (p, q))) = Or (prep (NOT p), prep (NOT q))
1.3826 - | prep (NOT (A p)) = prep (E (NOT p))
1.3827 - | prep (NOT (Or (p, q))) = And (prep (NOT p), prep (NOT q))
1.3828 - | prep (NOT (Imp (p, q))) = And (prep p, prep (NOT q))
1.3829 - | prep (NOT (Iff (p, q))) = Or (prep (And (p, NOT q)), prep (And (NOT p, q)))
1.3830 - | prep (NOT T) = NOT (prep T)
1.3831 - | prep (NOT F) = NOT (prep F)
1.3832 - | prep (NOT (Lt bo)) = NOT (prep (Lt bo))
1.3833 - | prep (NOT (Le bp)) = NOT (prep (Le bp))
1.3834 - | prep (NOT (Gt bq)) = NOT (prep (Gt bq))
1.3835 - | prep (NOT (Ge br)) = NOT (prep (Ge br))
1.3836 - | prep (NOT (Eq bs)) = NOT (prep (Eq bs))
1.3837 - | prep (NOT (NEq bt)) = NOT (prep (NEq bt))
1.3838 - | prep (NOT (Dvd (bu, bv))) = NOT (prep (Dvd (bu, bv)))
1.3839 - | prep (NOT (NDvd (bw, bx))) = NOT (prep (NDvd (bw, bx)))
1.3840 - | prep (NOT (E ch)) = NOT (prep (E ch))
1.3841 - | prep (NOT (Closed cj)) = NOT (prep (Closed cj))
1.3842 - | prep (NOT (NClosed ck)) = NOT (prep (NClosed ck))
1.3843 - | prep (Or (p, q)) = Or (prep p, prep q)
1.3844 - | prep (And (p, q)) = And (prep p, prep q)
1.3845 - | prep (Imp (p, q)) = prep (Or (NOT p, q))
1.3846 - | prep (Iff (p, q)) = Or (prep (And (p, q)), prep (And (NOT p, NOT q)))
1.3847 - | prep T = T
1.3848 - | prep F = F
1.3849 - | prep (Lt u) = Lt u
1.3850 - | prep (Le v) = Le v
1.3851 - | prep (Gt w) = Gt w
1.3852 - | prep (Ge x) = Ge x
1.3853 - | prep (Eq y) = Eq y
1.3854 - | prep (NEq z) = NEq z
1.3855 - | prep (Dvd (aa, ab)) = Dvd (aa, ab)
1.3856 - | prep (NDvd (ac, ad)) = NDvd (ac, ad)
1.3857 - | prep (Closed ap) = Closed ap
1.3858 - | prep (NClosed aq) = NClosed aq;
1.3859 +fun qelim (NClosed aq) = (fn y => simpfm (NClosed aq))
1.3860 + | qelim (Closed ap) = (fn y => simpfm (Closed ap))
1.3861 + | qelim (NDvd (ac, ad)) = (fn y => simpfm (NDvd (ac, ad)))
1.3862 + | qelim (Dvd (aa, ab)) = (fn y => simpfm (Dvd (aa, ab)))
1.3863 + | qelim (NEq z) = (fn y => simpfm (NEq z))
1.3864 + | qelim (Eq y) = (fn ya => simpfm (Eq y))
1.3865 + | qelim (Ge x) = (fn y => simpfm (Ge x))
1.3866 + | qelim (Gt w) = (fn y => simpfm (Gt w))
1.3867 + | qelim (Le v) = (fn y => simpfm (Le v))
1.3868 + | qelim (Lt u) = (fn y => simpfm (Lt u))
1.3869 + | qelim F = (fn y => simpfm F)
1.3870 + | qelim T = (fn y => simpfm T)
1.3871 + | qelim (Iffa (p, q)) = (fn qe => iff (qelim p qe) (qelim q qe))
1.3872 + | qelim (Impa (p, q)) = (fn qe => imp (qelim p qe) (qelim q qe))
1.3873 + | qelim (Or (p, q)) = (fn qe => disj (qelim p qe) (qelim q qe))
1.3874 + | qelim (And (p, q)) = (fn qe => conj (qelim p qe) (qelim q qe))
1.3875 + | qelim (Nota p) = (fn qe => nota (qelim p qe))
1.3876 + | qelim (A p) = (fn qe => nota (qe (qelim (Nota p) qe)))
1.3877 + | qelim (E p) = (fn qe => dj qe (qelim p qe));
1.3878
1.3879 -fun pa x = qelim (prep x) cooper;
1.3880 +val pa : fm -> fm = (fn p => qelim (prep p) cooper);
1.3881
1.3882 -val pa = (fn x => pa x);
1.3883 +end; (*struct Reflected_Presburger*)
1.3884
1.3885 -val test =
1.3886 - (fn x =>
1.3887 - pa (E (A (Imp (Ge (Sub (Bound 0, Bound one_def0)),
1.3888 - E (E (Eq (Sub (Add (Mul (3, Bound one_def0),
1.3889 - Mul (5, Bound 0)),
1.3890 - Bound (nat 2))))))))));
1.3891 -
1.3892 -end;
1.3893 +end; (*struct ROOT*)