# [isabelle] Isabelle2019-RC2: Prover errors when using sledgehammer

Hi,

I can't prove that with hard numbers, but it feels like the frequency
of messages "z3: A prover error occurred" (and also for cvc4) has
significantly increased.

Here are some example outputs:

--
Peter

==================================
Example for Z3:

theory Scratch
imports "HOL-Word.More_Word"
begin

lemma " n < 2 ^ (LENGTH('l::len) - Suc 0) ⟹ msb (word_of_int (int n))
⟹ False"
supply [[smt_trace]]
sledgehammer unlearn
sledgehammer [provers=z3]

OUTPUT:

Sledgehammering...
SMT: Assertions:
¬ False  [¬ False]
n < 2 ^ (LENGTH('l) - Suc 0)
msb (word_of_int (int n))
∀i n x. (numeral i ^ n < of_nat x) = (numeral i ^ n < x)
∀i n x. (numeral i ^ n < int x) = (numeral i ^ n < x)
∀x i n. (of_nat x < numeral i ^ n) = (x < numeral i ^ n)
∀x i n. (int x < numeral i ^ n) = (x < numeral i ^ n)
∀a. (0 < a⇧2) = (a ≠ 0)
∀x n. (0 < of_nat x ^ n) = (0 < x ∨ n = 0)
∀x n. (0 < int x ^ n) = (0 < x ∨ n = 0)
∀x n y. (numeral x ^ n = of_nat y) = (numeral x ^ n = y)
∀x n y. (numeral x ^ n = int y) = (numeral x ^ n = y)
∀y x n. (of_nat y = numeral x ^ n) = (y = numeral x ^ n)
∀y x n. (int y = numeral x ^ n) = (y = numeral x ^ n)
∀b w x. (of_nat b ^ w < of_nat x) = (b ^ w < x)
∀b w x. (int b ^ w < int x) = (b ^ w < x)
∀x b w. (of_nat x < of_nat b ^ w) = (x < b ^ w)
∀x b w. (int x < int b ^ w) = (x < b ^ w)
∀a. (a⇧2 = 0) = (a = 0)
∀a. (a⇧2 = 0) = (a = 0)
∀n. (0 < of_nat n) = (0 < n)
∀n. (0 < int n) = (0 < n)
0 < LENGTH('l)
∀n>0. Suc (n - Suc 0) = n
∀nat nat'. (Suc nat = Suc nat') = (nat = nat')
∀x2 y2. (Suc x2 = Suc y2) = (x2 = y2)
∀m n. (of_nat m = of_nat n) = (m = n)
∀m n. (int m = int n) = (m = n)
∀n. (n ≠ 0) = (0 < n)
∀m n. (Suc m < Suc n) = (m < n)
∀m n. m < n ⟶ Suc m < Suc n
∀n. n < Suc n
∀m. m - m = 0
∀n. 0 - n = 0
∀m n k. Suc m - n - Suc k = m - n - k
∀m n. Suc m - Suc n = m - n
∀n. 0 ^ Suc n = 0
∀n. 0 ^ Suc n = 0
∀n. 0 ^ Suc n = 0
∀m. (of_nat m = 0) = (m = 0)
∀m. (int m = 0) = (m = 0)
∀n. (0 = of_nat n) = (0 = n)
∀n. (0 = int n) = (0 = n)
of_nat 0 = 0
of_nat 0 = 0
int 0 = 0
∀m n. (of_nat m < of_nat n) = (m < n)
∀m n. (int m < int n) = (m < n)
∀k. 0 ^ numeral k = 0
∀k. 0 ^ numeral k = 0
∀k. 0 ^ numeral k = 0
∀n. 0 < Suc n
∀n. (n < Suc 0) = (n = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀n m. (0 < n - m) = (m < n)
∀x m. (x ^ m = Suc 0) = (m = 0 ∨ x = Suc 0)
∀n. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (Suc 0 ^ n))
SMT.Symb_Nil)
SMT.Symb_Nil)
(Suc 0 ^ n = Suc 0)
∀x n. (0 < x ^ n) = (0 < x ∨ n = 0)
∀x b w. (of_nat x = of_nat b ^ w) = (x = b ^ w)
∀x b w. (int x = int b ^ w) = (x = b ^ w)
∀b w x. (of_nat b ^ w = of_nat x) = (b ^ w = x)
∀b w x. (int b ^ w = int x) = (b ^ w = x)
∀m n. of_nat (m ^ n) = of_nat m ^ n
∀m n. of_nat (m ^ n) = of_nat m ^ n
∀m n. int (m ^ n) = int m ^ n
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
∀uu. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (len_of uu))
SMT.Symb_Nil)
SMT.Symb_Nil)
(len_of uu = 0)
∀nat. (nat = 0 ⟶ False) ∧ (nat ≠ 0 ⟶ False) ⟶ False
∀a P. (a ∈ Collect P) = P a
∀A. {x. x ∈ A} = A
∀P Q. (∀x. P x = Q x) ⟶ Collect P = Collect Q
∀n. n ≠ Suc n
∀x y. Suc x = Suc y ⟶ x = y
∀x y. x ≠ y ∧ (x < y ⟶ False) ∧ (y < x ⟶ False) ⟶ False
∀P n. (∀n. ¬ P n ⟶ (∃m<n. ¬ P m)) ⟶ P n
∀P n. (∀n. (∀m<n. P m) ⟶ P n) ⟶ P n
∀n. n < n ⟶ False
∀s t. s < t ⟶ s ≠ t
∀n m. n < m ⟶ m ≠ n
∀n. ¬ n < n
∀m n. (m ≠ n) = (m < n ∨ n < m)
∀i j k. i - j - k = i - k - j
∀a n. a ≠ 0 ⟶ a ^ n ≠ 0
∀a n. a ≠ 0 ⟶ a ^ n ≠ 0
∀n. n ≠ 0 ⟶ (∃m. n = Suc m)
∀y. (y = 0 ⟶ False) ∧ (∀nat. y = Suc nat ⟶ False) ⟶ False
∀m. 0 ≠ Suc m
∀m. 0 = Suc m ⟶ False
∀m. Suc m = 0 ⟶ False
∀P k. P k ∧ (∀n. P (Suc n) ⟶ P n) ⟶ P 0
∀P m n.
(∀x. P x 0) ∧ (∀y. P 0 (Suc y)) ∧ (∀x y. P x y ⟶ P (Suc x)
(Suc y)) ⟶
P m n
∀P n. P 0 ∧ (∀n. P n ⟶ P (Suc n)) ⟶ P n
∀nat x2. nat = Suc x2 ⟶ nat ≠ 0
∀nat'. 0 ≠ Suc nat'
∀nat'. Suc nat' ≠ 0
∀x2. 0 ≠ Suc x2
∀n. (n < 0) = False
∀P n. P 0 ∧ (∀n. 0 < n ∧ ¬ P n ⟶ (∃m<n. ¬ P m)) ⟶ P n
∀m n. m < n ⟶ n ≠ 0
∀n<0. False
∀n. ¬ n < 0
∀n. (¬ 0 < n) = (n = 0)
∀n. (n = 0 ⟶ False) ⟶ 0 < n
∀n m. ¬ n < m ⟶ (n < Suc m) = (n = m)
∀i j P.
i < j ∧ (∀i. j = Suc i ⟶ P i) ∧ (∀i. i < j ∧ P (Suc i) ⟶ P i)
⟶ P i
∀i j P.
i < j ∧
(∀i. P i (Suc i)) ∧
(∀i j k. i < j ∧ j < k ∧ P i j ∧ P j k ⟶ P i k) ⟶
P i j
∀i j k. i < j ∧ j < k ⟶ Suc i < k
∀m n. Suc m < Suc n ⟶ m < n
∀n m. ¬ n < m ∧ n < Suc m ⟶ m = n
∀n m. (Suc n < m) = (∃m'. m = Suc m' ∧ n < m')
∀n P. (∀i<Suc n. P i) = (P n ∧ (∀i<n. P i))
∀m n. (¬ m < n) = (n < Suc m)
∀m n. (m < Suc n) = (m < n ∨ m = n)
∀n P. (∃i<Suc n. P i) = (P n ∨ (∃i<n. P i))
∀m n. m < n ⟶ m < Suc n
∀m n. m < Suc n ∧ (m < n ⟶ False) ∧ (m = n ⟶ False) ⟶ False
∀m n. m < n ∧ Suc m ≠ n ⟶ Suc m < n
∀i k. Suc i < k ∧ (∀j. i < j ∧ k = Suc j ⟶ False) ⟶ False
∀m n. Suc m < n ⟶ m < n
∀i k. i < k ∧ (k = Suc i ⟶ False) ∧ (∀j. i < j ∧ k = Suc j ⟶
False) ⟶
False
∀m. m - 0 = m
∀m n. m - n = 0 ∧ n - m = 0 ⟶ m = n
∀P k i. P k ∧ (∀n. P (Suc n) ⟶ P n) ⟶ P (k - i)
∀j k n. j < k ⟶ j - n < k
∀m n l. m < n ∧ m < l ⟶ l - n < l - m
∀a n. 0 < a ⟶ 0 < a ^ n
∀a n. 0 < a ⟶ 0 < a ^ n
∀m. ¬ of_nat m < 0
∀m. ¬ int m < 0
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀n. of_nat (Suc n) ≠ 0
∀n. int (Suc n) ≠ 0
∀m n. of_nat m < of_nat n ⟶ m < n
∀m n. int m < int n ⟶ m < n
∀m n. m < n ⟶ of_nat m < of_nat n
∀m n. m < n ⟶ int m < int n
∀m n. (m < Suc n) = (m = 0 ∨ (∃j. m = Suc j ∧ j < n))
∀n>0. ∃m. n = Suc m
∀n P. (∀i<Suc n. P i) = (P 0 ∧ (∀i<n. P (Suc i)))
∀n. (0 < n) = (∃m. n = Suc m)
∀n P. (∃i<Suc n. P i) = (P 0 ∨ (∃i<n. P (Suc i)))
∀n m. 0 < n ∧ 0 < m ⟶ m - n < m
∀m n. m - n < Suc m
∀n m. n < m ⟶ Suc (m - Suc n) = m - n
∀i m n. 0 < i ∧ i ^ m < i ^ n ⟶ m < n
∀n>0. 0 ^ n = 0
∀n>0. 0 ^ n = 0
∀n>0. 0 ^ n = 0
∀n i. 0 < n ⟶ n - Suc i < n
0⇧2 = 0
0⇧2 = 0
0⇧2 = 0
∀x y. (x - y)⇧2 = (y - x)⇧2
∀x y. (x - y)⇧2 = (y - x)⇧2
∀a. ¬ a⇧2 < 0
of_nat (2 ^ LENGTH('l)) = 0
∀k. 0 < k ∧ k < 2 ^ LENGTH('l) ⟶ of_nat k ≠ 0
∀n. of_nat (numeral n) = numeral n
∀n. of_nat (numeral n) = numeral n
∀n. int (numeral n) = numeral n
∀a b. (0 < a - b) = (b < a)
∀x. (∀n. x = of_nat n ∧ n < 2 ^ LENGTH('l) ⟶ False) ⟶ False
∀w. ∃n. w = of_nat n ∧ n < 2 ^ LENGTH('l)
∀n<2. n = 0 ∨ n = Suc 0
∀m v. (int m = numeral v) = (m = numeral v)
word_of_int (2 ^ LENGTH('a)) = 0
word_of_int (2 ^ LENGTH('l)) = 0
word_of_int (2 ^ LENGTH(0)) = 0
2 = Suc (Suc 0)
∀n. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (num.Bit0 n))
SMT.Symb_Nil)
SMT.Symb_Nil)
((num.One < num.Bit0 n) = True)
∀m n. (numeral m = numeral n) = (m = n)
∀m n. (numeral m = numeral n) = (m = n)
∀x2 y2. (num.Bit0 x2 = num.Bit0 y2) = (x2 = y2)
∀m n. (num.Bit0 m = num.Bit0 n) = (m = n)
∀m n. (int m = int n) = (m = n)
∀y. (0 < numeral y) = (0 ≠ numeral y)
∀y. (0 < numeral y) = (0 ≠ numeral y)
∀y. (0 < numeral y) = (0 ≠ numeral y)
∀n. (¬ 0 < n) = (n = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀a. 0 - a = 0
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀m. (num.Bit0 m = num.One) = False
∀n. (num.One = num.Bit0 n) = False
∀bin. word_of_int (numeral bin) = numeral bin
∀bin. word_of_int (numeral bin) = numeral bin
∀bin. word_of_int (numeral bin) = numeral bin
∀m n. SMT.trigger
(SMT.Symb_Cons
(SMT.Symb_Cons (SMT.pat (num.Bit0 m < num.Bit0 n))
SMT.Symb_Nil)
SMT.Symb_Nil)
((num.Bit0 m < num.Bit0 n) = (m < n))
∀m. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((<) m))
SMT.Symb_Nil)
SMT.Symb_Nil)
((m < num.One) = False)
∀m n. (numeral m < numeral n) = (m < n)
∀m n. (numeral m < numeral n) = (m < n)
∀x. ¬ x < 0
∀xa x. word_of_int xa - word_of_int x = word_of_int (xa - x)
∀a b. word_of_int a - word_of_int b = word_of_int (a - b)
∀z. (∀m n. z = int m - int n ⟶ False) ⟶ False
∀x. (0 = x) = (x = 0)
∀x. (0 = x) = (x = 0)
∀a b c d. a - b = c - d ⟶ (a = b) = (c = d)
∀a c b. a - c - b = a - b - c
∀a c b. a - c - b = a - b - c
(num.One = num.One) = True
∀a b c d. False ⟶ a ^ b = c ^ d
∀a b c d. False ⟶ a ^ b = c ^ d
∀x. ∃y. x = word_of_int y
∀P x. (∀y. P (word_of_int y)) ⟶ P x
0 = word_of_int 0
∀b. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (numeral b))
SMT.Symb_Nil)
SMT.Symb_Nil)
(numeral b = word_of_int (numeral b))
0 = word_of_int 0
¬ 0 < 0
¬ 0 < 0
∀n. (n = 0 ⟶ False) ⟶ 0 < n
∀n. ¬ n < 0
∀m n. m < n ⟶ n ≠ 0
∀n. (0 < n) = (n ≠ 0)
∀n. 0 ≠ numeral n
∀n. 0 ≠ numeral n
∀a b. (a = b) = (a - b = 0)
∀a b d c. a < b ∧ d < c ⟶ a - c < b - d
∀a b c d. a - b = c - d ⟶ (a < b) = (c < d)
∀b a c. b < a ⟶ c - a < c - b
∀a b c. a < b ⟶ a - c < b - c
∀x2. num.One ≠ num.Bit0 x2
∀n. 0 < numeral n
∀n. 0 < numeral n
∀n. ¬ numeral n < 0
∀n. ¬ numeral n < 0
∀a b. (a < b) = (a - b < 0)
LENGTH('l) ≠ 0
∀w v. LENGTH('l) = 0 ⟶ w = v
∀w v. LENGTH(0) = 0 ⟶ w = v
∀k. 0 < k ∧ (∀n. k = int n ∧ 0 < n ⟶ False) ⟶ False
∀k>0. ∃n>0. k = int n
∀k. of_nat k ≠ 0 ⟶ 0 < k
∀k. int k ≠ 0 ⟶ 0 < k
2 ^ LENGTH('l) = 0
Numeral1 = Suc 0
∀n. 0 < 2 ^ n
∀k l. numeral k ^ numeral l = numeral (Num.pow k l)
∀k l. numeral k ^ numeral l = numeral (Num.pow k l)
∀n. int (numeral n) = numeral n
0 < 2
∀x y. (int x = int y) = (x = y)
(0 < 0) = False
∀k. k - 0 = k
∀x. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (Num.pow x))
SMT.Symb_Nil)
SMT.Symb_Nil)
(Num.pow x num.One = x)
∀n k P.
(∃m. n = Suc m ∧ (m = k ∨ P m)) = (n = Suc k ∨ (∃m. n = Suc m
∧ P m))
∀x y. int x = int y ⟶ x = y
∀P a b. int (if P then a else b) = (if P then int a else int b)
∀a b. (a = b) = (int a = int b)
∀y. 0 < y ∨ 0 = y
∀m k. (m - k = m) = (k = 0 ∨ m = 0)
int 0 = 0
∀a b. (a < b) = (int a < int b)
∀a b. int (a - b) = (if int a < int b then 0 else int a - int b)
∀x y. (0 ≤ x ∧ x < 2 ^ LENGTH('a)) ∧ 0 ≤ y ∧ y < 2 ^ LENGTH('a)
⟶
(word_of_int x = word_of_int y) = (x = y)
∀x y. (0 ≤ x ∧ x < 2 ^ LENGTH('l)) ∧ 0 ≤ y ∧ y < 2 ^ LENGTH('l)
⟶
(word_of_int x = word_of_int y) = (x = y)
∀x y. (0 ≤ x ∧ x < 2 ^ LENGTH(0)) ∧ 0 ≤ y ∧ y < 2 ^ LENGTH(0) ⟶
(word_of_int x = word_of_int y) = (x = y)
∀x. (∀n. x = word_of_int n ∧ 0 ≤ n ∧ n < 2 ^ LENGTH('a) ⟶ False)
⟶
False
∀x. (∀n. x = word_of_int n ∧ 0 ≤ n ∧ n < 2 ^ LENGTH('l) ⟶ False)
⟶
False
∀x. (∀n. x = word_of_int n ∧ 0 ≤ n ∧ n < 2 ^ LENGTH(0) ⟶ False)
⟶ False
∀n m. (word_of_int n < word_of_int m) =
(n mod 2 ^ LENGTH('a) < m mod 2 ^ LENGTH('a))
∀n m. (word_of_int n < word_of_int m) =
(n mod 2 ^ LENGTH('l) < m mod 2 ^ LENGTH('l))
∀n m. (word_of_int n < word_of_int m) =
(n mod 2 ^ LENGTH(0) < m mod 2 ^ LENGTH(0))
∀n. (n ≤ 0) = (n = 0)
∀m n. (numeral m ≤ numeral n) = (m ≤ n)
∀m n. (numeral m ≤ numeral n) = (m ≤ n)
∀m n. (int m ≤ int n) = (m ≤ n)
∀m n. (of_nat m ≤ of_nat n) = (m ≤ n)
∀a b. (0 ≤ a - b) = (b ≤ a)
∀x. int x ∈ Collect ((≤) 0)
∀m. (int m ≤ 0) = (m = 0)
∀m. (of_nat m ≤ 0) = (m = 0)
∀x b w. (int x ≤ int b ^ w) = (x ≤ b ^ w)
∀x b w. (of_nat x ≤ of_nat b ^ w) = (x ≤ b ^ w)
∀b w x. (int b ^ w ≤ int x) = (b ^ w ≤ x)
∀b w x. (of_nat b ^ w ≤ of_nat x) = (b ^ w ≤ x)
∀k l. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (k mod l))
SMT.Symb_Nil)
SMT.Symb_Nil)
(0 ≤ k ∧ k < l ⟶ k mod l = k)
∀a. (a⇧2 ≤ 0) = (a = 0)
∀x y. 0 ≤ x ∧ 0 ≤ y ⟶ (x⇧2 = y⇧2) = (x = y)
∀x y. 0 ≤ x ∧ 0 ≤ y ⟶ (x⇧2 = y⇧2) = (x = y)
∀i n x. (numeral i ^ n ≤ int x) = (numeral i ^ n ≤ x)
∀i n x. (numeral i ^ n ≤ of_nat x) = (numeral i ^ n ≤ x)
∀x i n. (int x ≤ numeral i ^ n) = (x ≤ numeral i ^ n)
∀x i n. (of_nat x ≤ numeral i ^ n) = (x ≤ numeral i ^ n)
∀x. word_of_int (x mod 2 ^ LENGTH('a)) = word_of_int x
∀x. word_of_int (x mod 2 ^ LENGTH('l)) = word_of_int x
∀x. word_of_int (x mod 2 ^ LENGTH(0)) = word_of_int x
(0 ≤ 0) = True
∀n b. 0 < n ⟶ (b = b mod n) = (0 ≤ b ∧ b < n)
∀b n a. 0 ≤ b ∧ b < n ∧ a mod n = b mod n ⟶ a mod n = b
∀b b' x x' y y' z'.
b = b' ∧ x mod b' = x' mod b' ∧ y mod b' = y' mod b' ∧ x' -
y' = z' ⟶
(x - y) mod b = z' mod b'
∀a x. a ≤ x ∨ a = x ∨ x ≤ a
∀x. 0 ≤ x
0 ≤ 0
0 ≤ 0
∀a b c d. a - b = c - d ⟶ (a ≤ b) = (c ≤ d)
∀a b c. a ≤ b ⟶ a - c ≤ b - c
∀b a c. b ≤ a ⟶ c - a ≤ c - b
∀a b d c. a ≤ b ∧ d ≤ c ⟶ a - c ≤ b - d
∀i j. i ≤ j ⟶ int i ≤ int j
∀i j. i ≤ j ⟶ of_nat i ≤ of_nat j
∀f n n'. (∀n. f n ≤ f (Suc n)) ∧ n ≤ n' ⟶ f n ≤ f n'
∀f n n'. (∀n. f n ≤ f (Suc n)) ∧ n ≤ n' ⟶ f n ≤ f n'
∀f n n'. (∀n. f n ≤ f (Suc n)) ∧ n ≤ n' ⟶ f n ≤ f n'
∀f n n'. (∀n. f (Suc n) ≤ f n) ∧ n ≤ n' ⟶ f n' ≤ f n
∀f n n'. (∀n. f (Suc n) ≤ f n) ∧ n ≤ n' ⟶ f n' ≤ f n
∀f n n'. (∀n. f (Suc n) ≤ f n) ∧ n ≤ n' ⟶ f n' ≤ f n
∀a. 0 ≤ a mod 2
∀n. 0 ≤ numeral n
∀n. 0 ≤ numeral n
∀n. ¬ numeral n ≤ 0
∀n. ¬ numeral n ≤ 0
∀a b. (a ≤ b) = (a - b ≤ 0)
∀a b n. a ≤ b ∧ 0 ≤ a ⟶ a ^ n ≤ b ^ n
∀a b n. a ≤ b ∧ 0 ≤ a ⟶ a ^ n ≤ b ^ n
∀a n. 0 ≤ a ⟶ 0 ≤ a ^ n
∀a n. 0 ≤ a ⟶ 0 ≤ a ^ n
∀n. 0 ≤ int n
∀n. 0 ≤ of_nat n
∀k≥0. ∃n. k = int n
∀k. 0 ≤ k ∧ (∀n. k = int n ⟶ False) ⟶ False
∀y. y ∈ Collect ((≤) 0) ∧ (∀x. y = int x ⟶ False) ⟶ False
∀y P. y ∈ Collect ((≤) 0) ∧ (∀x. P (int x)) ⟶ P y
∀a n b. a ^ n < b ^ n ∧ 0 ≤ b ⟶ a < b
∀a n b. a ^ n < b ^ n ∧ 0 ≤ b ⟶ a < b
∀a n b. a ^ Suc n = b ^ Suc n ∧ 0 ≤ a ∧ 0 ≤ b ⟶ a = b
∀a n b. a ^ Suc n = b ^ Suc n ∧ 0 ≤ a ∧ 0 ≤ b ⟶ a = b
∀a n b. a ^ Suc n ≤ b ^ Suc n ∧ 0 ≤ b ⟶ a ≤ b
∀a n b. a ^ Suc n ≤ b ^ Suc n ∧ 0 ≤ b ⟶ a ≤ b
∀a. a mod 2 < 2
∀n a b. 0 < n ∧ 0 ≤ a ∧ 0 ≤ b ⟶ (a ^ n = b ^ n) = (a = b)
∀n a b. 0 < n ∧ 0 ≤ a ∧ 0 ≤ b ⟶ (a ^ n = b ^ n) = (a = b)
∀a n b. a ^ n = b ^ n ∧ 0 ≤ a ∧ 0 ≤ b ∧ 0 < n ⟶ a = b
∀a n b. a ^ n = b ^ n ∧ 0 ≤ a ∧ 0 ≤ b ∧ 0 < n ⟶ a = b
∀a n. a mod 2 ^ n < 2 ^ n
∀a b n. a < b ∧ 0 ≤ a ∧ 0 < n ⟶ a ^ n < b ^ n
∀a b n. a < b ∧ 0 ≤ a ∧ 0 < n ⟶ a ^ n < b ^ n
∀a. 0 ≤ a⇧2
∀x y. x⇧2 = y⇧2 ∧ 0 ≤ x ∧ 0 ≤ y ⟶ x = y
∀x y. x⇧2 = y⇧2 ∧ 0 ≤ x ∧ 0 ≤ y ⟶ x = y
∀x y. x⇧2 ≤ y⇧2 ∧ 0 ≤ y ⟶ x ≤ y
∀x y. x⇧2 ≤ y⇧2 ∧ 0 ≤ y ⟶ x ≤ y
∀n. 0 ≤ 2 ^ n
∀x y. x⇧2 < y⇧2 ∧ 0 ≤ y ⟶ x < y
∀x y. x⇧2 < y⇧2 ∧ 0 ≤ y ⟶ x < y
∀x y. (x mod 2 ^ LENGTH('a) = y mod 2 ^ LENGTH('a)) =
(word_of_int x = word_of_int y)
∀x y. (x mod 2 ^ LENGTH('l) = y mod 2 ^ LENGTH('l)) =
(word_of_int x = word_of_int y)
∀x y. (x mod 2 ^ LENGTH(0) = y mod 2 ^ LENGTH(0)) =
(word_of_int x = word_of_int y)
∀k l. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (k mod l))
SMT.Symb_Nil)
SMT.Symb_Nil)
(k ≤ 0 ∧ l < k ⟶ k mod l = k)
∀n. 0 ≤ n
∀n m. (Suc n ≤ Suc m) = (n ≤ m)
∀i n. i ≤ n ⟶ n - (n - i) = i
∀m n. SMT.trigger
(SMT.Symb_Cons
(SMT.Symb_Cons (SMT.pat (num.Bit0 m ≤ num.Bit0 n))
SMT.Symb_Nil)
SMT.Symb_Nil)
((num.Bit0 m ≤ num.Bit0 n) = (m ≤ n))
∀n. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (num.One ≤ n))
SMT.Symb_Nil)
SMT.Symb_Nil)
((num.One ≤ n) = True)
∀m n. m ≤ n ⟶ m - n = 0
∀m n. (m - n = 0) = (m ≤ n)
∀m. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (num.Bit0 m))
SMT.Symb_Nil)
SMT.Symb_Nil)
((num.Bit0 m ≤ num.One) = False)
∀x. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((≤) x))
SMT.Symb_Nil)
SMT.Symb_Nil)
((x ≤ num.One) = (x = num.One))
∀n. (n ≤ 0) = (n = 0)
∀n. (0 ≤ n) = True
∀m n R.
m ≤ n ∧
(∀x. R x x) ∧ (∀x y z. R x y ∧ R y z ⟶ R x z) ∧ (∀n. R n (Suc
n)) ⟶
R m n
∀m n P. m ≤ n ∧ P m ∧ (∀n. m ≤ n ∧ P n ⟶ P (Suc n)) ⟶ P n
∀P n. (∀n. (∀m. Suc m ≤ n ⟶ P m) ⟶ P n) ⟶ P n
∀m n. (¬ m ≤ n) = (Suc n ≤ m)
∀n. ¬ Suc n ≤ n
∀m n. (m ≤ Suc n) = (m ≤ n ∨ m = Suc n)
∀n m'. Suc n ≤ m' ⟶ (∃m. m' = Suc m)
∀m n. m ≤ n ⟶ m ≤ Suc n
∀m n. m ≤ Suc n ∧ (m ≤ n ⟶ False) ∧ (m = Suc n ⟶ False) ⟶ False
∀m n. Suc m ≤ n ⟶ m ≤ n
∀f i j. (∀i j. i < j ⟶ f i < f j) ∧ i ≤ j ⟶ f i ≤ f j
∀m n. m ≤ n ∧ m ≠ n ⟶ m < n
∀m n. m < n ∨ m = n ⟶ m ≤ n
∀m n. (m ≤ n) = (m < n ∨ m = n)
∀m n. m < n ⟶ m ≤ n
∀m n. (m < n) = (m ≤ n ∧ m ≠ n)
∀m n l. m ≤ n ⟶ l - n ≤ l - m
∀a c b. a ≤ c ∧ b ≤ c ⟶ (c - a ≤ c - b) = (b ≤ a)
∀m n. m - n ≤ m
∀m n l. m ≤ n ⟶ m - l ≤ n - l
∀k m n. k ≤ m ∧ k ≤ n ⟶ m - k - (n - k) = m - n
∀k m n. k ≤ m ∧ k ≤ n ⟶ (m - k ≤ n - k) = (m ≤ n)
∀k m n. k ≤ m ∧ k ≤ n ⟶ (m - k = n - k) = (m = n)
∀n. n ≤ n
∀i j k. i ≤ j ∧ j ≤ k ⟶ i ≤ k
∀m n. m = n ⟶ m ≤ n
∀m n. m ≤ n ∧ n ≤ m ⟶ m = n
∀m n. m ≤ n ∨ n ≤ m
∀P k b. P k ∧ (∀y. P y ⟶ y ≤ b) ⟶ (∃x. P x ∧ (∀y. P y ⟶ y ≤ x))
∀P n. ¬ P 0 ∧ P n ⟶ (∃k≤n. (∀i<k. ¬ P i) ∧ P k)
∀m n. m ≤ n ⟶ m < Suc n
∀n m. (n < m) = (Suc n ≤ m)
∀m n. (m < Suc n) = (m ≤ n)
∀m n. m ≤ n ⟶ (n < Suc m) = (n = m)
∀m n. Suc m ≤ n ⟶ m < n
∀i j P. i ≤ j ∧ P j ∧ (∀n. i ≤ n ∧ n < j ∧ P (Suc n) ⟶ P n) ⟶ P
i
∀i j P. i ≤ j ∧ P i ∧ (∀n. i ≤ n ∧ n < j ∧ P n ⟶ P (Suc n)) ⟶ P
j
∀m n. (Suc m ≤ n) = (m < n)
∀m n. m < n ⟶ Suc m ≤ n
∀n m. n ≤ m ⟶ Suc m - n = Suc (m - n)
∀a b c. a < b ∧ c ≤ a ⟶ a - c < b - c
∀k m n. k ≤ m ∧ k ≤ n ⟶ (m - k < n - k) = (m < n)
∀m n. (int m ≤ int n) = (m ≤ n)
∀a b. (a ≤ b) = (int a ≤ int b)
∀n m. n ≤ m ⟶ int (m - n) = int m - int n
∀i n. Suc 0 ≤ i ⟶ Suc 0 ≤ i ^ n
∀m n. m⇧2 ≤ n ⟶ m ≤ n
∀m n. (m⇧2 ≤ n⇧2) = (m ≤ n)
∀n m. (word_of_int n ≤ word_of_int m) =
(n mod 2 ^ LENGTH('a) ≤ m mod 2 ^ LENGTH('a))
∀n m. (word_of_int n ≤ word_of_int m) =
(n mod 2 ^ LENGTH('l) ≤ m mod 2 ^ LENGTH('l))
∀n m. (word_of_int n ≤ word_of_int m) =
(n mod 2 ^ LENGTH(0) ≤ m mod 2 ^ LENGTH(0))
∀a b. 0 ≤ a ⟶ a mod b ≤ a
∀a b. 0 ≤ a ⟶ a mod b ≤ a
∀b a. 0 < b ⟶ a mod b < b
∀b a. 0 < b ⟶ a mod b < b
SMT: Names:
sorts:
Nat\$ = nat
Num\$ = num
A_word\$ = 'a word
L_word\$ = 'l word
Int_set\$ = int set
A_itself\$ = 'a itself
L_itself\$ = 'l itself
Num0_word\$ = 0 word
Int_int_fun\$ = int ⇒ int
Nat_int_fun\$ = nat ⇒ int
Nat_nat_fun\$ = nat ⇒ nat
Nat_num_fun\$ = nat ⇒ num
Num0_itself\$ = 0 itself
Num_num_fun\$ = num ⇒ num
Int_bool_fun\$ = int ⇒ bool
Nat_bool_fun\$ = nat ⇒ bool
Num_bool_fun\$ = num ⇒ bool
Nat_a_word_fun\$ = nat ⇒ 'a word
Nat_l_word_fun\$ = nat ⇒ 'l word
A_word_bool_fun\$ = 'a word ⇒ bool
A_word_a_word_fun\$ = 'a word ⇒ 'a word
L_word_l_word_fun\$ = 'l word ⇒ 'l word
Nat_num0_word_fun\$ = nat ⇒ 0 word
Nat_nat_bool_fun_fun\$ = nat ⇒ nat ⇒ bool
Num0_word_num0_word_fun\$ = 0 word ⇒ 0 word
functions:
n\$ = n
uu\$ = uu__
msb\$ = msb
one\$ = num.One
pow\$ = Num.pow
suc\$ = Suc
uua\$ = uua__
uub\$ = uu
bit0\$ = num.Bit0
less\$ = (<)
type\$ = TYPE('l)
zero\$ = 0
less\$a = (<)
less\$b = (<)
less\$c = (<)
less\$d = (<)
minus\$ = (-)
power\$ = (^)
type\$a = TYPE('a)
type\$b = TYPE(0)
zero\$a = 0
zero\$b = 0
zero\$c = 0
len_of\$ = len_of
member\$ = (∈)
minus\$a = (-)
minus\$b = (-)
minus\$c = (-)
modulo\$ = (mod)
of_nat\$ = int
power\$a = (^)
power\$b = (^)
collect\$ = Collect
fun_app\$ = SMT.fun_app
len_of\$a = len_of
len_of\$b = len_of
less_eq\$ = (≤)
modulo\$a = (mod)
numeral\$ = numeral
of_nat\$a = of_nat
of_nat\$b = of_nat
fun_app\$a = SMT.fun_app
fun_app\$b = SMT.fun_app
fun_app\$c = SMT.fun_app
fun_app\$d = SMT.fun_app
fun_app\$e = SMT.fun_app
fun_app\$f = SMT.fun_app
fun_app\$g = SMT.fun_app
fun_app\$h = SMT.fun_app
fun_app\$i = SMT.fun_app
fun_app\$j = SMT.fun_app
fun_app\$k = SMT.fun_app
fun_app\$l = SMT.fun_app
fun_app\$m = SMT.fun_app
fun_app\$n = SMT.fun_app
fun_app\$o = SMT.fun_app
less_eq\$a = (≤)
less_eq\$b = (≤)
less_eq\$c = (≤)
less_eq\$d = (≤)
numeral\$a = numeral
numeral\$b = numeral
numeral\$c = numeral
numeral\$d = numeral
word_of_int\$ = word_of_int
word_of_int\$a = word_of_int
word_of_int\$b = word_of_int
SMT: Problem:
; smt.random_seed=1 smt.refine_inj_axioms=false -T:10 -smt2
(set-option :produce-proofs true)
(declare-sort Nat\$ 0)
(declare-sort Num\$ 0)
(declare-sort A_word\$ 0)
(declare-sort L_word\$ 0)
(declare-sort Int_set\$ 0)
(declare-sort A_itself\$ 0)
(declare-sort L_itself\$ 0)
(declare-sort Num0_word\$ 0)
(declare-sort Int_int_fun\$ 0)
(declare-sort Nat_int_fun\$ 0)
(declare-sort Nat_nat_fun\$ 0)
(declare-sort Nat_num_fun\$ 0)
(declare-sort Num0_itself\$ 0)
(declare-sort Num_num_fun\$ 0)
(declare-sort Int_bool_fun\$ 0)
(declare-sort Nat_bool_fun\$ 0)
(declare-sort Num_bool_fun\$ 0)
(declare-sort Nat_a_word_fun\$ 0)
(declare-sort Nat_l_word_fun\$ 0)
(declare-sort A_word_bool_fun\$ 0)
(declare-sort A_word_a_word_fun\$ 0)
(declare-sort L_word_l_word_fun\$ 0)
(declare-sort Nat_num0_word_fun\$ 0)
(declare-sort Nat_nat_bool_fun_fun\$ 0)
(declare-sort Num0_word_num0_word_fun\$ 0)
(declare-fun n\$ () Nat\$)
(declare-fun uu\$ (Int_set\$) Int_bool_fun\$)
(declare-fun msb\$ () A_word_bool_fun\$)
(declare-fun one\$ () Num\$)
(declare-fun pow\$ (Num\$) Num_num_fun\$)
(declare-fun suc\$ () Nat_nat_fun\$)
(declare-fun uua\$ (Int) Int_int_fun\$)
(declare-fun uub\$ () Int_bool_fun\$)
(declare-fun bit0\$ (Num\$) Num\$)
(declare-fun less\$ () Nat_nat_bool_fun_fun\$)
(declare-fun type\$ () L_itself\$)
(declare-fun zero\$ () Nat\$)
(declare-fun less\$a (Num0_word\$ Num0_word\$) Bool)
(declare-fun less\$b (L_word\$ L_word\$) Bool)
(declare-fun less\$c (A_word\$) A_word_bool_fun\$)
(declare-fun less\$d (Num\$) Num_bool_fun\$)
(declare-fun minus\$ (Nat\$) Nat_nat_fun\$)
(declare-fun power\$ (Nat\$) Nat_nat_fun\$)
(declare-fun type\$a () A_itself\$)
(declare-fun type\$b () Num0_itself\$)
(declare-fun zero\$a () L_word\$)
(declare-fun zero\$b () A_word\$)
(declare-fun zero\$c () Num0_word\$)
(declare-fun len_of\$ (L_itself\$) Nat\$)
(declare-fun member\$ (Int Int_set\$) Bool)
(declare-fun minus\$a (L_word\$) L_word_l_word_fun\$)
(declare-fun minus\$b (Num0_word\$) Num0_word_num0_word_fun\$)
(declare-fun minus\$c (A_word\$) A_word_a_word_fun\$)
(declare-fun modulo\$ (Int Int) Int)
(declare-fun of_nat\$ () Nat_int_fun\$)
(declare-fun power\$a (Int) Nat_int_fun\$)
(declare-fun power\$b (L_word\$) Nat_l_word_fun\$)
(declare-fun collect\$ (Int_bool_fun\$) Int_set\$)
(declare-fun fun_app\$ (Int_bool_fun\$ Int) Bool)
(declare-fun len_of\$a (Num0_itself\$) Nat\$)
(declare-fun len_of\$b (A_itself\$) Nat\$)
(declare-fun less_eq\$ () Nat_nat_bool_fun_fun\$)
(declare-fun modulo\$a (Nat\$) Nat_nat_fun\$)
(declare-fun numeral\$ (Num\$) Nat\$)
(declare-fun of_nat\$a () Nat_nat_fun\$)
(declare-fun of_nat\$b () Nat_l_word_fun\$)
(declare-fun fun_app\$a (Int_int_fun\$ Int) Int)
(declare-fun fun_app\$b (Nat_bool_fun\$ Nat\$) Bool)
(declare-fun fun_app\$c (Nat_nat_bool_fun_fun\$ Nat\$)
Nat_bool_fun\$)
(declare-fun fun_app\$d (Nat_nat_fun\$ Nat\$) Nat\$)
(declare-fun fun_app\$e (A_word_bool_fun\$ A_word\$) Bool)
(declare-fun fun_app\$f (Nat_int_fun\$ Nat\$) Int)
(declare-fun fun_app\$g (Nat_l_word_fun\$ Nat\$) L_word\$)
(declare-fun fun_app\$h (Nat_num0_word_fun\$ Nat\$) Num0_word\$)
(declare-fun fun_app\$i (Nat_a_word_fun\$ Nat\$) A_word\$)
(declare-fun fun_app\$j (Num_bool_fun\$ Num\$) Bool)
(declare-fun fun_app\$k (Nat_num_fun\$ Nat\$) Num\$)
(declare-fun fun_app\$l (L_word_l_word_fun\$ L_word\$) L_word\$)
(declare-fun fun_app\$m (Num0_word_num0_word_fun\$ Num0_word\$)
Num0_word\$)
(declare-fun fun_app\$n (A_word_a_word_fun\$ A_word\$) A_word\$)
(declare-fun fun_app\$o (Num_num_fun\$ Num\$) Num\$)
(declare-fun less_eq\$a (Num\$) Num_bool_fun\$)
(declare-fun less_eq\$b (A_word\$) A_word_bool_fun\$)
(declare-fun less_eq\$c (L_word\$ L_word\$) Bool)
(declare-fun less_eq\$d (Num0_word\$ Num0_word\$) Bool)
(declare-fun numeral\$a (Num\$) Int)
(declare-fun numeral\$b (Num\$) L_word\$)
(declare-fun numeral\$c (Num\$) Num0_word\$)
(declare-fun numeral\$d (Num\$) A_word\$)
(declare-fun word_of_int\$ (Int) A_word\$)
(declare-fun word_of_int\$a (Int) L_word\$)
(declare-fun word_of_int\$b (Int) Num0_word\$)
(assert (! (forall ((?v0 Int)) (! (= (fun_app\$ uub\$ ?v0) (<= 0
?v0)) :pattern ((fun_app\$ uub\$ ?v0)))) :named a0))
(assert (! (forall ((?v0 Int) (?v1 Int)) (! (= (fun_app\$a (uua\$
?v0) ?v1) (- ?v0 ?v1)) :pattern ((fun_app\$a (uua\$ ?v0) ?v1)))) :named
a1))
(assert (! (forall ((?v0 Int_set\$) (?v1 Int)) (! (= (fun_app\$
(uu\$ ?v0) ?v1) (member\$ ?v1 ?v0)) :pattern ((fun_app\$ (uu\$ ?v0) ?v1))))
:named a2))
(assert (! (not false) :named a3))
(assert (! (fun_app\$b (fun_app\$c less\$ n\$) (fun_app\$d (power\$
(numeral\$ (bit0\$ one\$))) (fun_app\$d (minus\$ (len_of\$ type\$)) (fun_app\$d
suc\$ zero\$)))) :named a4))
(assert (! (fun_app\$e msb\$ (word_of_int\$ (fun_app\$f of_nat\$
n\$))) :named a5))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less\$ (fun_app\$d (power\$ (numeral\$ ?v0)) ?v1))
(fun_app\$d of_nat\$a ?v2)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d
(power\$ (numeral\$ ?v0)) ?v1)) ?v2))) :named a6))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$f (power\$a (numeral\$a ?v0)) ?v1) (fun_app\$f of_nat\$ ?v2))
(fun_app\$b (fun_app\$c less\$ (fun_app\$d (power\$ (numeral\$ ?v0)) ?v1))
?v2))) :named a7))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less\$ (fun_app\$d of_nat\$a ?v0)) (fun_app\$d
(power\$ (numeral\$ ?v1)) ?v2)) (fun_app\$b (fun_app\$c less\$ ?v0)
(fun_app\$d (power\$ (numeral\$ ?v1)) ?v2)))) :named a8))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (<
(fun_app\$f of_nat\$ ?v0) (fun_app\$f (power\$a (numeral\$a ?v1)) ?v2))
(fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d (power\$ (numeral\$ ?v1))
?v2)))) :named a9))
(assert (! (forall ((?v0 Int)) (= (< 0 (fun_app\$f (power\$a ?v0)
(numeral\$ (bit0\$ one\$)))) (not (= ?v0 0)))) :named a10))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ zero\$) (fun_app\$d (power\$ (fun_app\$d of_nat\$a ?v0))
?v1)) (or (fun_app\$b (fun_app\$c less\$ zero\$) ?v0) (= ?v1 zero\$))))
:named a11))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< 0 (fun_app\$f
(power\$a (fun_app\$f of_nat\$ ?v0)) ?v1)) (or (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= ?v1 zero\$)))) :named a12))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$d (power\$ (numeral\$ ?v0)) ?v1) (fun_app\$d of_nat\$a ?v2)) (=
(fun_app\$d (power\$ (numeral\$ ?v0)) ?v1) ?v2))) :named a13))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$f (power\$a (numeral\$a ?v0)) ?v1) (fun_app\$f of_nat\$ ?v2)) (=
(fun_app\$d (power\$ (numeral\$ ?v0)) ?v1) ?v2))) :named a14))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(fun_app\$d of_nat\$a ?v0) (fun_app\$d (power\$ (numeral\$ ?v1)) ?v2)) (=
?v0 (fun_app\$d (power\$ (numeral\$ ?v1)) ?v2)))) :named a15))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(fun_app\$f of_nat\$ ?v0) (fun_app\$f (power\$a (numeral\$a ?v1)) ?v2)) (=
?v0 (fun_app\$d (power\$ (numeral\$ ?v1)) ?v2)))) :named a16))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less\$ (fun_app\$d (power\$ (fun_app\$d of_nat\$a
?v0)) ?v1)) (fun_app\$d of_nat\$a ?v2)) (fun_app\$b (fun_app\$c less\$
(fun_app\$d (power\$ ?v0) ?v1)) ?v2))) :named a17))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$f (power\$a (fun_app\$f of_nat\$ ?v0)) ?v1) (fun_app\$f of_nat\$
?v2)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d (power\$ ?v0) ?v1)) ?v2)))
:named a18))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less\$ (fun_app\$d of_nat\$a ?v0)) (fun_app\$d
(power\$ (fun_app\$d of_nat\$a ?v1)) ?v2)) (fun_app\$b (fun_app\$c less\$
?v0) (fun_app\$d (power\$ ?v1) ?v2)))) :named a19))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$f of_nat\$ ?v0) (fun_app\$f (power\$a (fun_app\$f of_nat\$ ?v1))
?v2)) (fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d (power\$ ?v1) ?v2))))
:named a20))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$d (power\$ ?v0)
(numeral\$ (bit0\$ one\$))) zero\$) (= ?v0 zero\$))) :named a21))
(assert (! (forall ((?v0 Int)) (= (= (fun_app\$f (power\$a ?v0)
(numeral\$ (bit0\$ one\$))) 0) (= ?v0 0))) :named a22))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c less\$
zero\$) (fun_app\$d of_nat\$a ?v0)) (fun_app\$b (fun_app\$c less\$ zero\$)
?v0))) :named a23))
(assert (! (forall ((?v0 Nat\$)) (= (< 0 (fun_app\$f of_nat\$ ?v0))
(fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a24))
(assert (! (fun_app\$b (fun_app\$c less\$ zero\$) (len_of\$ type\$))
:named a25))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= (fun_app\$d suc\$ (fun_app\$d (minus\$ ?v0) (fun_app\$d suc\$
zero\$))) ?v0))) :named a26))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d suc\$
?v0) (fun_app\$d suc\$ ?v1)) (= ?v0 ?v1))) :named a27))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d suc\$
?v0) (fun_app\$d suc\$ ?v1)) (= ?v0 ?v1))) :named a28))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d
of_nat\$a ?v0) (fun_app\$d of_nat\$a ?v1)) (= ?v0 ?v1))) :named a29))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (= ?v0 ?v1))) :named a30))
(assert (! (forall ((?v0 Nat\$)) (= (not (= ?v0 zero\$))
(fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a31))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) (fun_app\$d suc\$ ?v1)) (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1))) :named a32))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$ (fun_app\$d suc\$
?v0)) (fun_app\$d suc\$ ?v1)))) :named a33))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$b (fun_app\$c less\$ ?v0)
(fun_app\$d suc\$ ?v0))) :named a34))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (minus\$ ?v0) ?v0)
zero\$)) :named a35))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (minus\$ zero\$)
?v0) zero\$)) :named a36))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$d (minus\$ (fun_app\$d (minus\$ (fun_app\$d suc\$ ?v0)) ?v1))
(fun_app\$d suc\$ ?v2)) (fun_app\$d (minus\$ (fun_app\$d (minus\$ ?v0) ?v1))
?v2))) :named a37))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d (minus\$
(fun_app\$d suc\$ ?v0)) (fun_app\$d suc\$ ?v1)) (fun_app\$d (minus\$ ?v0)
?v1))) :named a38))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$g (power\$b zero\$a)
(fun_app\$d suc\$ ?v0)) zero\$a)) :named a39))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (power\$ zero\$)
(fun_app\$d suc\$ ?v0)) zero\$)) :named a40))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$f (power\$a 0)
(fun_app\$d suc\$ ?v0)) 0)) :named a41))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$d of_nat\$a ?v0)
zero\$) (= ?v0 zero\$))) :named a42))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$f of_nat\$ ?v0) 0)
(= ?v0 zero\$))) :named a43))
(assert (! (forall ((?v0 Nat\$)) (= (= zero\$ (fun_app\$d of_nat\$a
?v0)) (= zero\$ ?v0))) :named a44))
(assert (! (forall ((?v0 Nat\$)) (= (= 0 (fun_app\$f of_nat\$ ?v0))
(= zero\$ ?v0))) :named a45))
(assert (! (= (fun_app\$g of_nat\$b zero\$) zero\$a) :named a46))
(assert (! (= (fun_app\$d of_nat\$a zero\$) zero\$) :named a47))
(assert (! (= (fun_app\$f of_nat\$ zero\$) 0) :named a48))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ (fun_app\$d of_nat\$a ?v0)) (fun_app\$d of_nat\$a ?v1))
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1))) :named a49))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (fun_app\$b (fun_app\$c less\$ ?v0)
?v1))) :named a50))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$g (power\$b zero\$a)
(numeral\$ ?v0)) zero\$a)) :named a51))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$d (power\$ zero\$)
(numeral\$ ?v0)) zero\$)) :named a52))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$f (power\$a 0)
(numeral\$ ?v0)) 0)) :named a53))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$b (fun_app\$c less\$
zero\$) (fun_app\$d suc\$ ?v0))) :named a54))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c less\$
?v0) (fun_app\$d suc\$ zero\$)) (= ?v0 zero\$))) :named a55))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$g (power\$b
?v0) (fun_app\$d suc\$ zero\$)) ?v0) :pattern ((power\$b ?v0)))) :named
a56))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$d (power\$ ?v0)
(fun_app\$d suc\$ zero\$)) ?v0) :pattern ((power\$ ?v0)))) :named a57))
(assert (! (forall ((?v0 Int)) (! (= (fun_app\$f (power\$a ?v0)
(fun_app\$d suc\$ zero\$)) ?v0) :pattern ((power\$a ?v0)))) :named a58))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ zero\$) (fun_app\$d (minus\$ ?v0) ?v1)) (fun_app\$b
(fun_app\$c less\$ ?v1) ?v0))) :named a59))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d
(power\$ ?v0) ?v1) (fun_app\$d suc\$ zero\$)) (or (= ?v1 zero\$) (= ?v0
(fun_app\$d suc\$ zero\$))))) :named a60))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$d (power\$
(fun_app\$d suc\$ zero\$)) ?v0) (fun_app\$d suc\$ zero\$)) :pattern
((fun_app\$d (power\$ (fun_app\$d suc\$ zero\$)) ?v0)))) :named a61))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ zero\$) (fun_app\$d (power\$ ?v0) ?v1)) (or (fun_app\$b
(fun_app\$c less\$ zero\$) ?v0) (= ?v1 zero\$)))) :named a62))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$d of_nat\$a ?v0) (fun_app\$d (power\$ (fun_app\$d of_nat\$a ?v1))
?v2)) (= ?v0 (fun_app\$d (power\$ ?v1) ?v2)))) :named a63))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$f of_nat\$ ?v0) (fun_app\$f (power\$a (fun_app\$f of_nat\$ ?v1))
?v2)) (= ?v0 (fun_app\$d (power\$ ?v1) ?v2)))) :named a64))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$d (power\$ (fun_app\$d of_nat\$a ?v0)) ?v1) (fun_app\$d of_nat\$a
?v2)) (= (fun_app\$d (power\$ ?v0) ?v1) ?v2))) :named a65))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$f (power\$a (fun_app\$f of_nat\$ ?v0)) ?v1) (fun_app\$f of_nat\$
?v2)) (= (fun_app\$d (power\$ ?v0) ?v1) ?v2))) :named a66))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$g
of_nat\$b (fun_app\$d (power\$ ?v0) ?v1)) (fun_app\$g (power\$b (fun_app\$g
of_nat\$b ?v0)) ?v1))) :named a67))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d
of_nat\$a (fun_app\$d (power\$ ?v0) ?v1)) (fun_app\$d (power\$ (fun_app\$d
of_nat\$a ?v0)) ?v1))) :named a68))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$f of_nat\$
(fun_app\$d (power\$ ?v0) ?v1)) (fun_app\$f (power\$a (fun_app\$f of_nat\$
?v0)) ?v1))) :named a69))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d
(power\$ ?v0) ?v1) zero\$) (and (= ?v0 zero\$) (fun_app\$b (fun_app\$c less\$
zero\$) ?v1)))) :named a70))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (= (= (fun_app\$f
(power\$a ?v0) ?v1) 0) (and (= ?v0 0) (fun_app\$b (fun_app\$c less\$ zero\$)
?v1)))) :named a71))
(assert (! (forall ((?v0 Num0_itself\$)) (! (= (len_of\$a ?v0)
zero\$) :pattern ((len_of\$a ?v0)))) :named a72))
(assert (! (forall ((?v0 Nat\$)) (=> (and (=> (= ?v0 zero\$)
false) (=> (not (= ?v0 zero\$)) false)) false)) :named a73))
(assert (! (forall ((?v0 Int) (?v1 Int_bool_fun\$)) (= (member\$
?v0 (collect\$ ?v1)) (fun_app\$ ?v1 ?v0))) :named a74))
(assert (! (forall ((?v0 Int_set\$)) (= (collect\$ (uu\$ ?v0))
?v0)) :named a75))
(assert (! (forall ((?v0 Int_bool_fun\$) (?v1 Int_bool_fun\$)) (=>
(forall ((?v2 Int)) (= (fun_app\$ ?v0 ?v2) (fun_app\$ ?v1 ?v2))) (=
(collect\$ ?v0) (collect\$ ?v1)))) :named a76))
(assert (! (forall ((?v0 Nat\$)) (not (= ?v0 (fun_app\$d suc\$
?v0)))) :named a77))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= (fun_app\$d
suc\$ ?v0) (fun_app\$d suc\$ ?v1)) (= ?v0 ?v1))) :named a78))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (not (= ?v0
?v1)) (and (=> (fun_app\$b (fun_app\$c less\$ ?v0) ?v1) false) (=>
(fun_app\$b (fun_app\$c less\$ ?v1) ?v0) false))) false)) :named a79))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (forall
((?v2 Nat\$)) (=> (not (fun_app\$b ?v0 ?v2)) (exists ((?v3 Nat\$)) (and
(fun_app\$b (fun_app\$c less\$ ?v3) ?v2) (not (fun_app\$b ?v0 ?v3))))))
(fun_app\$b ?v0 ?v1))) :named a80))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (forall
((?v2 Nat\$)) (=> (forall ((?v3 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v3) ?v2) (fun_app\$b ?v0 ?v3))) (fun_app\$b ?v0 ?v2))) (fun_app\$b ?v0
?v1))) :named a81))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v0) ?v0) false)) :named a82))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (not (= ?v0 ?v1)))) :named a83))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (not (= ?v1 ?v0)))) :named a84))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$b (fun_app\$c less\$
?v0) ?v0))) :named a85))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (not (= ?v0 ?v1))
(or (fun_app\$b (fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$
?v1) ?v0)))) :named a86))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$d (minus\$ (fun_app\$d (minus\$ ?v0) ?v1)) ?v2) (fun_app\$d
(minus\$ (fun_app\$d (minus\$ ?v0) ?v2)) ?v1))) :named a87))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (not (= ?v0
zero\$)) (not (= (fun_app\$d (power\$ ?v0) ?v1) zero\$)))) :named a88))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (=> (not (= ?v0 0))
(not (= (fun_app\$f (power\$a ?v0) ?v1) 0)))) :named a89))
(assert (! (forall ((?v0 Nat\$)) (=> (not (= ?v0 zero\$)) (exists
((?v1 Nat\$)) (= ?v0 (fun_app\$d suc\$ ?v1))))) :named a90))
(assert (! (forall ((?v0 Nat\$)) (=> (and (=> (= ?v0 zero\$)
false) (forall ((?v1 Nat\$)) (=> (= ?v0 (fun_app\$d suc\$ ?v1)) false)))
false)) :named a91))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$d suc\$
?v0)))) :named a92))
(assert (! (forall ((?v0 Nat\$)) (=> (= zero\$ (fun_app\$d suc\$
?v0)) false)) :named a93))
(assert (! (forall ((?v0 Nat\$)) (=> (= (fun_app\$d suc\$ ?v0)
zero\$) false)) :named a94))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$b ?v0 ?v1) (forall ((?v2 Nat\$)) (=> (fun_app\$b ?v0 (fun_app\$d
suc\$ ?v2)) (fun_app\$b ?v0 ?v2)))) (fun_app\$b ?v0 zero\$))) :named a95))
(assert (! (forall ((?v0 Nat_nat_bool_fun_fun\$) (?v1 Nat\$) (?v2
Nat\$)) (=> (and (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c ?v0 ?v3)
zero\$)) (and (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c ?v0 zero\$)
(fun_app\$d suc\$ ?v3))) (forall ((?v3 Nat\$) (?v4 Nat\$)) (=> (fun_app\$b
(fun_app\$c ?v0 ?v3) ?v4) (fun_app\$b (fun_app\$c ?v0 (fun_app\$d suc\$
?v3)) (fun_app\$d suc\$ ?v4)))))) (fun_app\$b (fun_app\$c ?v0 ?v1) ?v2)))
:named a96))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$b ?v0 zero\$) (forall ((?v2 Nat\$)) (=> (fun_app\$b ?v0 ?v2)
(fun_app\$b ?v0 (fun_app\$d suc\$ ?v2))))) (fun_app\$b ?v0 ?v1))) :named
a97))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= ?v0 (fun_app\$d
suc\$ ?v1)) (not (= ?v0 zero\$)))) :named a98))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$d suc\$
?v0)))) :named a99))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$d suc\$ ?v0)
zero\$))) :named a100))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$d suc\$
?v0)))) :named a101))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c less\$
?v0) zero\$) false)) :named a102))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$b ?v0 zero\$) (forall ((?v2 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ zero\$) ?v2) (not (fun_app\$b ?v0 ?v2))) (exists ((?v3
Nat\$)) (and (fun_app\$b (fun_app\$c less\$ ?v3) ?v2) (not (fun_app\$b ?v0
?v3))))))) (fun_app\$b ?v0 ?v1))) :named a103))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (not (= ?v1 zero\$)))) :named a104))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v0) zero\$) false)) :named a105))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$b (fun_app\$c less\$
?v0) zero\$))) :named a106))
(assert (! (forall ((?v0 Nat\$)) (= (not (fun_app\$b (fun_app\$c
less\$ zero\$) ?v0)) (= ?v0 zero\$))) :named a107))
(assert (! (forall ((?v0 Nat\$)) (=> (=> (= ?v0 zero\$) false)
(fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a108))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (not (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1)) (= (fun_app\$b (fun_app\$c less\$ ?v0)
(fun_app\$d suc\$ ?v1)) (= ?v0 ?v1)))) :named a109))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat_bool_fun\$))
(=> (and (fun_app\$b (fun_app\$c less\$ ?v0) ?v1) (and (forall ((?v3
Nat\$)) (=> (= ?v1 (fun_app\$d suc\$ ?v3)) (fun_app\$b ?v2 ?v3))) (forall
((?v3 Nat\$)) (=> (and (fun_app\$b (fun_app\$c less\$ ?v3) ?v1) (fun_app\$b
?v2 (fun_app\$d suc\$ ?v3))) (fun_app\$b ?v2 ?v3))))) (fun_app\$b ?v2
?v0))) :named a110))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2
Nat_nat_bool_fun_fun\$)) (=> (and (fun_app\$b (fun_app\$c less\$ ?v0) ?v1)
(and (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c ?v2 ?v3) (fun_app\$d
suc\$ ?v3))) (forall ((?v3 Nat\$) (?v4 Nat\$) (?v5 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less\$ ?v3) ?v4) (and (fun_app\$b (fun_app\$c less\$
?v4) ?v5) (and (fun_app\$b (fun_app\$c ?v2 ?v3) ?v4) (fun_app\$b
(fun_app\$c ?v2 ?v4) ?v5)))) (fun_app\$b (fun_app\$c ?v2 ?v3) ?v5)))))
(fun_app\$b (fun_app\$c ?v2 ?v0) ?v1))) :named a111))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$ ?v1)
?v2)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) ?v2))) :named
a112))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) (fun_app\$d suc\$ ?v1)) (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1))) :named a113))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (not
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1)) (fun_app\$b (fun_app\$c less\$ ?v0)
(fun_app\$d suc\$ ?v1))) (= ?v1 ?v0))) :named a114))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) ?v1) (exists ((?v2 Nat\$)) (and
(= ?v1 (fun_app\$d suc\$ ?v2)) (fun_app\$b (fun_app\$c less\$ ?v0) ?v2)))))
:named a115))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (forall
((?v2 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$ ?v2) (fun_app\$d suc\$ ?v0))
(fun_app\$b ?v1 ?v2))) (and (fun_app\$b ?v1 ?v0) (forall ((?v2 Nat\$)) (=>
(fun_app\$b (fun_app\$c less\$ ?v2) ?v0) (fun_app\$b ?v1 ?v2)))))) :named
a116))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (not (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1)) (fun_app\$b (fun_app\$c less\$ ?v1) (fun_app\$d
suc\$ ?v0)))) :named a117))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ ?v0) (fun_app\$d suc\$ ?v1)) (or (fun_app\$b (fun_app\$c
less\$ ?v0) ?v1) (= ?v0 ?v1)))) :named a118))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (exists
((?v2 Nat\$)) (and (fun_app\$b (fun_app\$c less\$ ?v2) (fun_app\$d suc\$
?v0)) (fun_app\$b ?v1 ?v2))) (or (fun_app\$b ?v1 ?v0) (exists ((?v2
Nat\$)) (and (fun_app\$b (fun_app\$c less\$ ?v2) ?v0) (fun_app\$b ?v1
?v2)))))) :named a119))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d
suc\$ ?v1)))) :named a120))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) (fun_app\$d suc\$ ?v1)) (and (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) false) (=> (= ?v0 ?v1) false))) false))
:named a121))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (not (= (fun_app\$d suc\$ ?v0) ?v1)))
(fun_app\$b (fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) ?v1))) :named a122))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) ?v1) (forall ((?v2 Nat\$)) (=>
(and (fun_app\$b (fun_app\$c less\$ ?v0) ?v2) (= ?v1 (fun_app\$d suc\$
?v2))) false))) false)) :named a123))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) ?v1) (fun_app\$b (fun_app\$c less\$
?v0) ?v1))) :named a124))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (and (=> (= ?v1 (fun_app\$d suc\$ ?v0)) false)
(forall ((?v2 Nat\$)) (=> (and (fun_app\$b (fun_app\$c less\$ ?v0) ?v2) (=
?v1 (fun_app\$d suc\$ ?v2))) false)))) false)) :named a125))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (minus\$ ?v0)
zero\$) ?v0)) :named a126))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (=
(fun_app\$d (minus\$ ?v0) ?v1) zero\$) (= (fun_app\$d (minus\$ ?v1) ?v0)
zero\$)) (= ?v0 ?v1))) :named a127))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (fun_app\$b ?v0 ?v1) (forall ((?v3 Nat\$)) (=> (fun_app\$b ?v0
(fun_app\$d suc\$ ?v3)) (fun_app\$b ?v0 ?v3)))) (fun_app\$b ?v0 (fun_app\$d
(minus\$ ?v1) ?v2)))) :named a128))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$
(fun_app\$d (minus\$ ?v0) ?v2)) ?v1))) :named a129))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$ ?v0)
?v2)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d (minus\$ ?v2) ?v1))
(fun_app\$d (minus\$ ?v2) ?v0)))) :named a130))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$ zero\$)
(fun_app\$d (power\$ ?v0) ?v1)))) :named a131))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (=> (< 0 ?v0) (< 0
(fun_app\$f (power\$a ?v0) ?v1)))) :named a132))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$b (fun_app\$c less\$
(fun_app\$d of_nat\$a ?v0)) zero\$))) :named a133))
(assert (! (forall ((?v0 Nat\$)) (not (< (fun_app\$f of_nat\$ ?v0)
0))) :named a134))
(assert (! (forall ((?v0 Nat_num0_word_fun\$) (?v1 Nat\$) (?v2
Nat\$)) (=> (forall ((?v3 Nat\$)) (less\$a (fun_app\$h ?v0 ?v3) (fun_app\$h
?v0 (fun_app\$d suc\$ ?v3)))) (= (less\$a (fun_app\$h ?v0 ?v1) (fun_app\$h
?v0 ?v2)) (fun_app\$b (fun_app\$c less\$ ?v1) ?v2)))) :named a135))
(assert (! (forall ((?v0 Nat_l_word_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (less\$b (fun_app\$g ?v0 ?v3) (fun_app\$g ?v0
(fun_app\$d suc\$ ?v3)))) (= (less\$b (fun_app\$g ?v0 ?v1) (fun_app\$g ?v0
?v2)) (fun_app\$b (fun_app\$c less\$ ?v1) ?v2)))) :named a136))
(assert (! (forall ((?v0 Nat_a_word_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (fun_app\$e (less\$c (fun_app\$i ?v0 ?v3))
(fun_app\$i ?v0 (fun_app\$d suc\$ ?v3)))) (= (fun_app\$e (less\$c (fun_app\$i
?v0 ?v1)) (fun_app\$i ?v0 ?v2)) (fun_app\$b (fun_app\$c less\$ ?v1) ?v2))))
:named a137))
(assert (! (forall ((?v0 Nat_nat_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d ?v0
?v3)) (fun_app\$d ?v0 (fun_app\$d suc\$ ?v3)))) (= (fun_app\$b (fun_app\$c
less\$ (fun_app\$d ?v0 ?v1)) (fun_app\$d ?v0 ?v2)) (fun_app\$b (fun_app\$c
less\$ ?v1) ?v2)))) :named a138))
(assert (! (forall ((?v0 Nat_num_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (fun_app\$j (less\$d (fun_app\$k ?v0 ?v3))
(fun_app\$k ?v0 (fun_app\$d suc\$ ?v3)))) (= (fun_app\$j (less\$d (fun_app\$k
?v0 ?v1)) (fun_app\$k ?v0 ?v2)) (fun_app\$b (fun_app\$c less\$ ?v1) ?v2))))
:named a139))
(assert (! (forall ((?v0 Nat_int_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (< (fun_app\$f ?v0 ?v3) (fun_app\$f ?v0
(fun_app\$d suc\$ ?v3)))) (= (< (fun_app\$f ?v0 ?v1) (fun_app\$f ?v0 ?v2))
(fun_app\$b (fun_app\$c less\$ ?v1) ?v2)))) :named a140))
(assert (! (forall ((?v0 Nat_num0_word_fun\$) (?v1 Nat\$) (?v2
Nat\$)) (=> (and (forall ((?v3 Nat\$)) (less\$a (fun_app\$h ?v0 ?v3)
(fun_app\$h ?v0 (fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c less\$ ?v1)
?v2)) (less\$a (fun_app\$h ?v0 ?v1) (fun_app\$h ?v0 ?v2)))) :named a141))
(assert (! (forall ((?v0 Nat_l_word_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (less\$b (fun_app\$g ?v0 ?v3) (fun_app\$g
?v0 (fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c less\$ ?v1) ?v2))
(less\$b (fun_app\$g ?v0 ?v1) (fun_app\$g ?v0 ?v2)))) :named a142))
(assert (! (forall ((?v0 Nat_a_word_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (fun_app\$e (less\$c (fun_app\$i ?v0 ?v3))
(fun_app\$i ?v0 (fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c less\$ ?v1)
?v2)) (fun_app\$e (less\$c (fun_app\$i ?v0 ?v1)) (fun_app\$i ?v0 ?v2))))
:named a143))
(assert (! (forall ((?v0 Nat_nat_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d
?v0 ?v3)) (fun_app\$d ?v0 (fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c
less\$ ?v1) ?v2)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d ?v0 ?v1))
(fun_app\$d ?v0 ?v2)))) :named a144))
(assert (! (forall ((?v0 Nat_num_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (fun_app\$j (less\$d (fun_app\$k ?v0 ?v3))
(fun_app\$k ?v0 (fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c less\$ ?v1)
?v2)) (fun_app\$j (less\$d (fun_app\$k ?v0 ?v1)) (fun_app\$k ?v0 ?v2))))
:named a145))
(assert (! (forall ((?v0 Nat_int_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (< (fun_app\$f ?v0 ?v3) (fun_app\$f ?v0
(fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c less\$ ?v1) ?v2)) (<
(fun_app\$f ?v0 ?v1) (fun_app\$f ?v0 ?v2)))) :named a146))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$d of_nat\$a
(fun_app\$d suc\$ ?v0)) zero\$))) :named a147))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$f of_nat\$
(fun_app\$d suc\$ ?v0)) 0))) :named a148))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ (fun_app\$d of_nat\$a ?v0)) (fun_app\$d of_nat\$a ?v1))
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1))) :named a149))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (< (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (fun_app\$b (fun_app\$c less\$ ?v0)
?v1))) :named a150))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$ (fun_app\$d
of_nat\$a ?v0)) (fun_app\$d of_nat\$a ?v1)))) :named a151))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (< (fun_app\$f of_nat\$ ?v0) (fun_app\$f
of_nat\$ ?v1)))) :named a152))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ ?v0) (fun_app\$d suc\$ ?v1)) (or (= ?v0 zero\$) (exists
((?v2 Nat\$)) (and (= ?v0 (fun_app\$d suc\$ ?v2)) (fun_app\$b (fun_app\$c
less\$ ?v2) ?v1)))))) :named a153))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (exists ((?v1 Nat\$)) (= ?v0 (fun_app\$d suc\$ ?v1))))) :named
a154))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (forall
((?v2 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$ ?v2) (fun_app\$d suc\$ ?v0))
(fun_app\$b ?v1 ?v2))) (and (fun_app\$b ?v1 zero\$) (forall ((?v2 Nat\$))
(=> (fun_app\$b (fun_app\$c less\$ ?v2) ?v0) (fun_app\$b ?v1 (fun_app\$d
suc\$ ?v2))))))) :named a155))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (exists ((?v1 Nat\$)) (= ?v0 (fun_app\$d suc\$ ?v1))))) :named
a156))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (exists
((?v2 Nat\$)) (and (fun_app\$b (fun_app\$c less\$ ?v2) (fun_app\$d suc\$
?v0)) (fun_app\$b ?v1 ?v2))) (or (fun_app\$b ?v1 zero\$) (exists ((?v2
Nat\$)) (and (fun_app\$b (fun_app\$c less\$ ?v2) ?v0) (fun_app\$b ?v1
(fun_app\$d suc\$ ?v2))))))) :named a157))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$ zero\$) ?v1))
(fun_app\$b (fun_app\$c less\$ (fun_app\$d (minus\$ ?v1) ?v0)) ?v1))) :named
a158))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (fun_app\$b (fun_app\$c
less\$ (fun_app\$d (minus\$ ?v0) ?v1)) (fun_app\$d suc\$ ?v0))) :named
a159))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (= (fun_app\$d suc\$ (fun_app\$d (minus\$ ?v1)
(fun_app\$d suc\$ ?v0))) (fun_app\$d (minus\$ ?v1) ?v0)))) :named a160))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$
(fun_app\$d (power\$ ?v0) ?v1)) (fun_app\$d (power\$ ?v0) ?v2))) (fun_app\$b
(fun_app\$c less\$ ?v1) ?v2))) :named a161))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= (fun_app\$g (power\$b zero\$a) ?v0) zero\$a))) :named a162))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= (fun_app\$d (power\$ zero\$) ?v0) zero\$))) :named a163))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= (fun_app\$f (power\$a 0) ?v0) 0))) :named a164))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$ (fun_app\$d
(minus\$ ?v0) (fun_app\$d suc\$ ?v1))) ?v0))) :named a165))
(assert (! (= (fun_app\$g (power\$b zero\$a) (numeral\$ (bit0\$
one\$))) zero\$a) :named a166))
(assert (! (= (fun_app\$d (power\$ zero\$) (numeral\$ (bit0\$ one\$)))
zero\$) :named a167))
(assert (! (= (fun_app\$f (power\$a 0) (numeral\$ (bit0\$ one\$))) 0)
:named a168))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (= (fun_app\$g
(power\$b (fun_app\$l (minus\$a ?v0) ?v1)) (numeral\$ (bit0\$ one\$)))
(fun_app\$g (power\$b (fun_app\$l (minus\$a ?v1) ?v0)) (numeral\$ (bit0\$
one\$))))) :named a169))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$f (power\$a
(- ?v0 ?v1)) (numeral\$ (bit0\$ one\$))) (fun_app\$f (power\$a (- ?v1 ?v0))
(numeral\$ (bit0\$ one\$))))) :named a170))
(assert (! (forall ((?v0 Int)) (not (< (fun_app\$f (power\$a ?v0)
(numeral\$ (bit0\$ one\$))) 0))) :named a171))
(assert (! (= (fun_app\$g of_nat\$b (fun_app\$d (power\$ (numeral\$
(bit0\$ one\$))) (len_of\$ type\$))) zero\$a) :named a172))
(assert (! (forall ((?v0 Nat\$)) (=> (and (fun_app\$b (fun_app\$c
less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d (power\$
(numeral\$ (bit0\$ one\$))) (len_of\$ type\$)))) (not (= (fun_app\$g of_nat\$b
?v0) zero\$a)))) :named a173))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$g of_nat\$b (numeral\$
?v0)) (numeral\$b ?v0))) :named a174))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$d of_nat\$a (numeral\$
?v0)) (numeral\$ ?v0))) :named a175))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$f of_nat\$ (numeral\$
?v0)) (numeral\$a ?v0))) :named a176))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (< 0 (- ?v0 ?v1)) (<
?v1 ?v0))) :named a177))
(assert (! (forall ((?v0 L_word\$)) (=> (forall ((?v1 Nat\$)) (=>
(and (= ?v0 (fun_app\$g of_nat\$b ?v1)) (fun_app\$b (fun_app\$c less\$ ?v1)
(fun_app\$d (power\$ (numeral\$ (bit0\$ one\$))) (len_of\$ type\$)))) false))
false)) :named a178))
(assert (! (forall ((?v0 L_word\$)) (exists ((?v1 Nat\$)) (and (=
?v0 (fun_app\$g of_nat\$b ?v1)) (fun_app\$b (fun_app\$c less\$ ?v1)
(fun_app\$d (power\$ (numeral\$ (bit0\$ one\$))) (len_of\$ type\$)))))) :named
a179))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v0) (numeral\$ (bit0\$ one\$))) (or (= ?v0 zero\$) (= ?v0 (fun_app\$d suc\$
zero\$))))) :named a180))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$)) (= (= (fun_app\$f
of_nat\$ ?v0) (numeral\$a ?v1)) (= ?v0 (numeral\$ ?v1)))) :named a181))
(assert (! (= (word_of_int\$ (fun_app\$f (power\$a 2) (len_of\$b
type\$a))) zero\$b) :named a182))
(assert (! (= (word_of_int\$a (fun_app\$f (power\$a 2) (len_of\$
type\$))) zero\$a) :named a183))
(assert (! (= (word_of_int\$b (fun_app\$f (power\$a 2) (len_of\$a
type\$b))) zero\$c) :named a184))
(assert (! (= (numeral\$ (bit0\$ one\$)) (fun_app\$d suc\$ (fun_app\$d
suc\$ zero\$))) :named a185))
(assert (! (forall ((?v0 Num\$)) (! (= (fun_app\$j (less\$d one\$)
(bit0\$ ?v0)) true) :pattern ((bit0\$ ?v0)))) :named a186))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (numeral\$ ?v0)
(numeral\$ ?v1)) (= ?v0 ?v1))) :named a187))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (numeral\$a ?v0)
(numeral\$a ?v1)) (= ?v0 ?v1))) :named a188))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (bit0\$ ?v0)
(bit0\$ ?v1)) (= ?v0 ?v1))) :named a189))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (bit0\$ ?v0)
(bit0\$ ?v1)) (= ?v0 ?v1))) :named a190))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (= ?v0 ?v1))) :named a191))
(assert (! (forall ((?v0 Num\$)) (= (less\$a zero\$c (numeral\$c
?v0)) (not (= zero\$c (numeral\$c ?v0))))) :named a192))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$e (less\$c zero\$b)
(numeral\$d ?v0)) (not (= zero\$b (numeral\$d ?v0))))) :named a193))
(assert (! (forall ((?v0 Num\$)) (= (less\$b zero\$a (numeral\$b
?v0)) (not (= zero\$a (numeral\$b ?v0))))) :named a194))
(assert (! (forall ((?v0 Nat\$)) (= (not (fun_app\$b (fun_app\$c
less\$ zero\$) ?v0)) (= ?v0 zero\$))) :named a195))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$l (minus\$a
?v0) ?v0) zero\$a) :pattern ((minus\$a ?v0)))) :named a196))
(assert (! (forall ((?v0 Num0_word\$)) (! (= (fun_app\$m (minus\$b
?v0) ?v0) zero\$c) :pattern ((minus\$b ?v0)))) :named a197))
(assert (! (forall ((?v0 A_word\$)) (! (= (fun_app\$n (minus\$c
?v0) ?v0) zero\$b) :pattern ((minus\$c ?v0)))) :named a198))
(assert (! (forall ((?v0 Int)) (! (= (- ?v0 ?v0) 0) :pattern
((uua\$ ?v0)))) :named a199))
(assert (! (forall ((?v0 L_word\$)) (= (fun_app\$l (minus\$a ?v0)
zero\$a) ?v0)) :named a200))
(assert (! (forall ((?v0 Num0_word\$)) (= (fun_app\$m (minus\$b
?v0) zero\$c) ?v0)) :named a201))
(assert (! (forall ((?v0 A_word\$)) (= (fun_app\$n (minus\$c ?v0)
zero\$b) ?v0)) :named a202))
(assert (! (forall ((?v0 Int)) (= (- ?v0 0) ?v0)) :named a203))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (minus\$ zero\$)
?v0) zero\$)) :named a204))
(assert (! (forall ((?v0 L_word\$)) (= (fun_app\$l (minus\$a ?v0)
zero\$a) ?v0)) :named a205))
(assert (! (forall ((?v0 Num0_word\$)) (= (fun_app\$m (minus\$b
?v0) zero\$c) ?v0)) :named a206))
(assert (! (forall ((?v0 A_word\$)) (= (fun_app\$n (minus\$c ?v0)
zero\$b) ?v0)) :named a207))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (minus\$ ?v0)
zero\$) ?v0)) :named a208))
(assert (! (forall ((?v0 Int)) (= (- ?v0 0) ?v0)) :named a209))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$l (minus\$a
?v0) ?v0) zero\$a) :pattern ((minus\$a ?v0)))) :named a210))
(assert (! (forall ((?v0 Num0_word\$)) (! (= (fun_app\$m (minus\$b
?v0) ?v0) zero\$c) :pattern ((minus\$b ?v0)))) :named a211))
(assert (! (forall ((?v0 A_word\$)) (! (= (fun_app\$n (minus\$c
?v0) ?v0) zero\$b) :pattern ((minus\$c ?v0)))) :named a212))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$d (minus\$ ?v0)
?v0) zero\$) :pattern ((minus\$ ?v0)))) :named a213))
(assert (! (forall ((?v0 Int)) (! (= (- ?v0 ?v0) 0) :pattern
((uua\$ ?v0)))) :named a214))
(assert (! (forall ((?v0 Num\$)) (= (= (bit0\$ ?v0) one\$) false))
:named a215))
(assert (! (forall ((?v0 Num\$)) (= (= one\$ (bit0\$ ?v0)) false))
:named a216))
(assert (! (forall ((?v0 Num\$)) (= (word_of_int\$b (numeral\$a
?v0)) (numeral\$c ?v0))) :named a217))
(assert (! (forall ((?v0 Num\$)) (= (word_of_int\$a (numeral\$a
?v0)) (numeral\$b ?v0))) :named a218))
(assert (! (forall ((?v0 Num\$)) (= (word_of_int\$ (numeral\$a
?v0)) (numeral\$d ?v0))) :named a219))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (! (= (fun_app\$j
(less\$d (bit0\$ ?v0)) (bit0\$ ?v1)) (fun_app\$j (less\$d ?v0) ?v1))
:pattern ((fun_app\$j (less\$d (bit0\$ ?v0)) (bit0\$ ?v1))))) :named a220))
(assert (! (forall ((?v0 Num\$)) (! (= (fun_app\$j (less\$d ?v0)
one\$) false) :pattern ((less\$d ?v0)))) :named a221))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (fun_app\$b
(fun_app\$c less\$ (numeral\$ ?v0)) (numeral\$ ?v1)) (fun_app\$j (less\$d
?v0) ?v1))) :named a222))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (< (numeral\$a ?v0)
(numeral\$a ?v1)) (fun_app\$j (less\$d ?v0) ?v1))) :named a223))
(assert (! (forall ((?v0 A_word\$)) (not (fun_app\$e (less\$c ?v0)
zero\$b))) :named a224))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$n (minus\$c
(word_of_int\$ ?v0)) (word_of_int\$ ?v1)) (word_of_int\$ (- ?v0 ?v1))))
:named a225))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$n (minus\$c
(word_of_int\$ ?v0)) (word_of_int\$ ?v1)) (word_of_int\$ (- ?v0 ?v1))))
:named a226))
(assert (! (forall ((?v0 Int)) (=> (forall ((?v1 Nat\$) (?v2
Nat\$)) (=> (= ?v0 (- (fun_app\$f of_nat\$ ?v1) (fun_app\$f of_nat\$ ?v2)))
false)) false)) :named a227))
(assert (! (forall ((?v0 Nat\$)) (= (= zero\$ ?v0) (= ?v0 zero\$)))
:named a228))
(assert (! (forall ((?v0 Int)) (= (= 0 ?v0) (= ?v0 0))) :named
a229))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int)) (=>
(= (- ?v0 ?v1) (- ?v2 ?v3)) (= (= ?v0 ?v1) (= ?v2 ?v3)))) :named a230))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$d (minus\$ (fun_app\$d (minus\$ ?v0) ?v1)) ?v2) (fun_app\$d
(minus\$ (fun_app\$d (minus\$ ?v0) ?v2)) ?v1))) :named a231))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (= (- (- ?v0
?v1) ?v2) (- (- ?v0 ?v2) ?v1))) :named a232))
(assert (! (= (= one\$ one\$) true) :named a233))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$) (?v3 Nat\$))
(=> false (= (fun_app\$d (power\$ ?v0) ?v1) (fun_app\$d (power\$ ?v2)
?v3)))) :named a234))
(assert (! (forall ((?v0 Int) (?v1 Nat\$) (?v2 Int) (?v3 Nat\$))
(=> false (= (fun_app\$f (power\$a ?v0) ?v1) (fun_app\$f (power\$a ?v2)
?v3)))) :named a235))
(assert (! (forall ((?v0 A_word\$)) (exists ((?v1 Int)) (= ?v0
(word_of_int\$ ?v1)))) :named a236))
(assert (! (forall ((?v0 A_word_bool_fun\$) (?v1 A_word\$)) (=>
(forall ((?v2 Int)) (fun_app\$e ?v0 (word_of_int\$ ?v2))) (fun_app\$e ?v0
?v1))) :named a237))
(assert (! (= zero\$b (word_of_int\$ 0)) :named a238))
(assert (! (forall ((?v0 Num\$)) (! (= (numeral\$d ?v0)
(word_of_int\$ (numeral\$a ?v0))) :pattern ((numeral\$d ?v0)))) :named
a239))
(assert (! (= zero\$b (word_of_int\$ 0)) :named a240))
(assert (! (not (fun_app\$b (fun_app\$c less\$ zero\$) zero\$))
:named a241))
(assert (! (not (< 0 0)) :named a242))
(assert (! (forall ((?v0 Nat\$)) (=> (=> (= ?v0 zero\$) false)
(fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a243))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$b (fun_app\$c less\$
?v0) zero\$))) :named a244))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (not (= ?v1 zero\$)))) :named a245))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (not (= ?v0 zero\$)))) :named a246))
(assert (! (forall ((?v0 Num\$)) (not (= zero\$ (numeral\$ ?v0))))
:named a247))
(assert (! (forall ((?v0 Num\$)) (not (= 0 (numeral\$a ?v0))))
:named a248))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (= ?v0 ?v1) (= (-
?v0 ?v1) 0))) :named a249))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int)) (=>
(and (< ?v0 ?v1) (< ?v2 ?v3)) (< (- ?v0 ?v3) (- ?v1 ?v2)))) :named
a250))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int)) (=>
(= (- ?v0 ?v1) (- ?v2 ?v3)) (= (< ?v0 ?v1) (< ?v2 ?v3)))) :named a251))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (=> (< ?v0
?v1) (< (- ?v2 ?v1) (- ?v2 ?v0)))) :named a252))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (=> (< ?v0
?v1) (< (- ?v0 ?v2) (- ?v1 ?v2)))) :named a253))
(assert (! (forall ((?v0 Num\$)) (not (= one\$ (bit0\$ ?v0))))
:named a254))
(assert (! (forall ((?v0 Num\$)) (fun_app\$b (fun_app\$c less\$
zero\$) (numeral\$ ?v0))) :named a255))
(assert (! (forall ((?v0 Num\$)) (< 0 (numeral\$a ?v0))) :named
a256))
(assert (! (forall ((?v0 Num\$)) (not (fun_app\$b (fun_app\$c less\$
(numeral\$ ?v0)) zero\$))) :named a257))
(assert (! (forall ((?v0 Num\$)) (not (< (numeral\$a ?v0) 0)))
:named a258))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (< ?v0 ?v1) (< (-
?v0 ?v1) 0))) :named a259))
(assert (! (not (= (len_of\$ type\$) zero\$)) :named a260))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (=> (= (len_of\$
type\$) zero\$) (= ?v0 ?v1))) :named a261))
(assert (! (forall ((?v0 Num0_word\$) (?v1 Num0_word\$)) (=> (=
(len_of\$a type\$b) zero\$) (= ?v0 ?v1))) :named a262))
(assert (! (forall ((?v0 Int)) (=> (and (< 0 ?v0) (forall ((?v1
Nat\$)) (=> (and (= ?v0 (fun_app\$f of_nat\$ ?v1)) (fun_app\$b (fun_app\$c
less\$ zero\$) ?v1)) false))) false)) :named a263))
(assert (! (forall ((?v0 Int)) (=> (< 0 ?v0) (exists ((?v1
Nat\$)) (and (fun_app\$b (fun_app\$c less\$ zero\$) ?v1) (= ?v0 (fun_app\$f
of_nat\$ ?v1)))))) :named a264))
(assert (! (forall ((?v0 Nat\$)) (=> (not (= (fun_app\$d of_nat\$a
?v0) zero\$)) (fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a265))
(assert (! (forall ((?v0 Nat\$)) (=> (not (= (fun_app\$f of_nat\$
?v0) 0)) (fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a266))
(assert (! (= (fun_app\$g (power\$b (numeral\$b (bit0\$ one\$)))
(len_of\$ type\$)) zero\$a) :named a267))
(assert (! (= (numeral\$ one\$) (fun_app\$d suc\$ zero\$)) :named
a268))
(assert (! (forall ((?v0 Nat\$)) (< 0 (fun_app\$f (power\$a 2)
?v0))) :named a269))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (fun_app\$d (power\$
(numeral\$ ?v0)) (numeral\$ ?v1)) (numeral\$ (fun_app\$o (pow\$ ?v0) ?v1))))
:named a270))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (fun_app\$f
(power\$a (numeral\$a ?v0)) (numeral\$ ?v1)) (numeral\$a (fun_app\$o (pow\$
?v0) ?v1)))) :named a271))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$f of_nat\$ (numeral\$
?v0)) (numeral\$a ?v0))) :named a272))
(assert (! (< 0 2) :named a273))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (= ?v0 ?v1))) :named a274))
(assert (! (= (< 0 0) false) :named a275))
(assert (! (forall ((?v0 Int)) (= (- ?v0 0) ?v0)) :named a276))
(assert (! (forall ((?v0 Num\$)) (! (= (fun_app\$o (pow\$ ?v0)
one\$) ?v0) :pattern ((pow\$ ?v0)))) :named a277))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat_bool_fun\$))
(= (exists ((?v3 Nat\$)) (and (= ?v0 (fun_app\$d suc\$ ?v3)) (or (= ?v3
?v1) (fun_app\$b ?v2 ?v3)))) (or (= ?v0 (fun_app\$d suc\$ ?v1)) (exists
((?v3 Nat\$)) (and (= ?v0 (fun_app\$d suc\$ ?v3)) (fun_app\$b ?v2 ?v3))))))
:named a278))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (= ?v0 ?v1))) :named a279))
(assert (! (forall ((?v0 Bool) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$f of_nat\$ (ite ?v0 ?v1 ?v2)) (ite ?v0 (fun_app\$f of_nat\$ ?v1)
(fun_app\$f of_nat\$ ?v2)))) :named a280))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= ?v0 ?v1) (=
(fun_app\$f of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)))) :named a281))
(assert (! (forall ((?v0 Nat\$)) (or (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= zero\$ ?v0))) :named a282))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d
(minus\$ ?v0) ?v1) ?v0) (or (= ?v1 zero\$) (= ?v0 zero\$)))) :named a283))
(assert (! (= (fun_app\$f of_nat\$ zero\$) 0) :named a284))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (< (fun_app\$f of_nat\$ ?v0) (fun_app\$f
of_nat\$ ?v1)))) :named a285))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$f of_nat\$
(fun_app\$d (minus\$ ?v0) ?v1)) (ite (< (fun_app\$f of_nat\$ ?v0)
(fun_app\$f of_nat\$ ?v1)) 0 (- (fun_app\$f of_nat\$ ?v0) (fun_app\$f
of_nat\$ ?v1))))) :named a286))
(assert (! (forall ((?v0 Int) (?v1 Int)) (=> (and (and (<= 0
?v0) (< ?v0 (fun_app\$f (power\$a 2) (len_of\$b type\$a)))) (and (<= 0 ?v1)
(< ?v1 (fun_app\$f (power\$a 2) (len_of\$b type\$a))))) (= (= (word_of_int\$
?v0) (word_of_int\$ ?v1)) (= ?v0 ?v1)))) :named a287))
(assert (! (forall ((?v0 Int) (?v1 Int)) (=> (and (and (<= 0
?v0) (< ?v0 (fun_app\$f (power\$a 2) (len_of\$ type\$)))) (and (<= 0 ?v1)
(< ?v1 (fun_app\$f (power\$a 2) (len_of\$ type\$))))) (= (= (word_of_int\$a
?v0) (word_of_int\$a ?v1)) (= ?v0 ?v1)))) :named a288))
(assert (! (forall ((?v0 Int) (?v1 Int)) (=> (and (and (<= 0
?v0) (< ?v0 (fun_app\$f (power\$a 2) (len_of\$a type\$b)))) (and (<= 0 ?v1)
(< ?v1 (fun_app\$f (power\$a 2) (len_of\$a type\$b))))) (= (=
(word_of_int\$b ?v0) (word_of_int\$b ?v1)) (= ?v0 ?v1)))) :named a289))
(assert (! (forall ((?v0 A_word\$)) (=> (forall ((?v1 Int)) (=>
(and (= ?v0 (word_of_int\$ ?v1)) (and (<= 0 ?v1) (< ?v1 (fun_app\$f
(power\$a 2) (len_of\$b type\$a))))) false)) false)) :named a290))
(assert (! (forall ((?v0 L_word\$)) (=> (forall ((?v1 Int)) (=>
(and (= ?v0 (word_of_int\$a ?v1)) (and (<= 0 ?v1) (< ?v1 (fun_app\$f
(power\$a 2) (len_of\$ type\$))))) false)) false)) :named a291))
(assert (! (forall ((?v0 Num0_word\$)) (=> (forall ((?v1 Int))
(=> (and (= ?v0 (word_of_int\$b ?v1)) (and (<= 0 ?v1) (< ?v1 (fun_app\$f
(power\$a 2) (len_of\$a type\$b))))) false)) false)) :named a292))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$e (less\$c
(word_of_int\$ ?v0)) (word_of_int\$ ?v1)) (< (modulo\$ ?v0 (fun_app\$f
(power\$a 2) (len_of\$b type\$a))) (modulo\$ ?v1 (fun_app\$f (power\$a 2)
(len_of\$b type\$a)))))) :named a293))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (less\$b
(word_of_int\$a ?v0) (word_of_int\$a ?v1)) (< (modulo\$ ?v0 (fun_app\$f
(power\$a 2) (len_of\$ type\$))) (modulo\$ ?v1 (fun_app\$f (power\$a 2)
(len_of\$ type\$)))))) :named a294))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (less\$a
(word_of_int\$b ?v0) (word_of_int\$b ?v1)) (< (modulo\$ ?v0 (fun_app\$f
(power\$a 2) (len_of\$a type\$b))) (modulo\$ ?v1 (fun_app\$f (power\$a 2)
(len_of\$a type\$b)))))) :named a295))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c
less_eq\$ ?v0) zero\$) (= ?v0 zero\$))) :named a296))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (<= (numeral\$a
?v0) (numeral\$a ?v1)) (fun_app\$j (less_eq\$a ?v0) ?v1))) :named a297))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (fun_app\$b
(fun_app\$c less_eq\$ (numeral\$ ?v0)) (numeral\$ ?v1)) (fun_app\$j
(less_eq\$a ?v0) ?v1))) :named a298))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (<= (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (fun_app\$b (fun_app\$c less_eq\$
?v0) ?v1))) :named a299))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less_eq\$ (fun_app\$d of_nat\$a ?v0)) (fun_app\$d of_nat\$a ?v1))
(fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1))) :named a300))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (<= 0 (- ?v0 ?v1))
(<= ?v1 ?v0))) :named a301))
(assert (! (forall ((?v0 Nat\$)) (member\$ (fun_app\$f of_nat\$ ?v0)
(collect\$ uub\$))) :named a302))
(assert (! (forall ((?v0 Nat\$)) (= (<= (fun_app\$f of_nat\$ ?v0)
0) (= ?v0 zero\$))) :named a303))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c
less_eq\$ (fun_app\$d of_nat\$a ?v0)) zero\$) (= ?v0 zero\$))) :named a304))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<=
(fun_app\$f of_nat\$ ?v0) (fun_app\$f (power\$a (fun_app\$f of_nat\$ ?v1))
?v2)) (fun_app\$b (fun_app\$c less_eq\$ ?v0) (fun_app\$d (power\$ ?v1)
?v2)))) :named a305))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d of_nat\$a ?v0)) (fun_app\$d
(power\$ (fun_app\$d of_nat\$a ?v1)) ?v2)) (fun_app\$b (fun_app\$c less_eq\$
?v0) (fun_app\$d (power\$ ?v1) ?v2)))) :named a306))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<=
(fun_app\$f (power\$a (fun_app\$f of_nat\$ ?v0)) ?v1) (fun_app\$f of_nat\$
?v2)) (fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d (power\$ ?v0) ?v1))
?v2))) :named a307))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d (power\$ (fun_app\$d of_nat\$a
?v0)) ?v1)) (fun_app\$d of_nat\$a ?v2)) (fun_app\$b (fun_app\$c less_eq\$
(fun_app\$d (power\$ ?v0) ?v1)) ?v2))) :named a308))
(assert (! (forall ((?v0 Int) (?v1 Int)) (! (=> (and (<= 0 ?v0)
(< ?v0 ?v1)) (= (modulo\$ ?v0 ?v1) ?v0)) :pattern ((modulo\$ ?v0 ?v1))))
:named a309))
(assert (! (forall ((?v0 Int)) (= (<= (fun_app\$f (power\$a ?v0)
(numeral\$ (bit0\$ one\$))) 0) (= ?v0 0))) :named a310))
(assert (! (forall ((?v0 Int) (?v1 Int)) (=> (and (<= 0 ?v0) (<=
0 ?v1)) (= (= (fun_app\$f (power\$a ?v0) (numeral\$ (bit0\$ one\$)))
(fun_app\$f (power\$a ?v1) (numeral\$ (bit0\$ one\$)))) (= ?v0 ?v1))))
:named a311))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less_eq\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less_eq\$ zero\$)
?v1)) (= (= (fun_app\$d (power\$ ?v0) (numeral\$ (bit0\$ one\$))) (fun_app\$d
(power\$ ?v1) (numeral\$ (bit0\$ one\$)))) (= ?v0 ?v1)))) :named a312))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<=
(fun_app\$f (power\$a (numeral\$a ?v0)) ?v1) (fun_app\$f of_nat\$ ?v2))
(fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d (power\$ (numeral\$ ?v0)) ?v1))
?v2))) :named a313))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d (power\$ (numeral\$ ?v0)) ?v1))
(fun_app\$d of_nat\$a ?v2)) (fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d
(power\$ (numeral\$ ?v0)) ?v1)) ?v2))) :named a314))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (<=
(fun_app\$f of_nat\$ ?v0) (fun_app\$f (power\$a (numeral\$a ?v1)) ?v2))
(fun_app\$b (fun_app\$c less_eq\$ ?v0) (fun_app\$d (power\$ (numeral\$ ?v1))
?v2)))) :named a315))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d of_nat\$a ?v0)) (fun_app\$d
(power\$ (numeral\$ ?v1)) ?v2)) (fun_app\$b (fun_app\$c less_eq\$ ?v0)
(fun_app\$d (power\$ (numeral\$ ?v1)) ?v2)))) :named a316))
(assert (! (forall ((?v0 Int)) (= (word_of_int\$ (modulo\$ ?v0
(fun_app\$f (power\$a 2) (len_of\$b type\$a)))) (word_of_int\$ ?v0))) :named
a317))
(assert (! (forall ((?v0 Int)) (= (word_of_int\$a (modulo\$ ?v0
(fun_app\$f (power\$a 2) (len_of\$ type\$)))) (word_of_int\$a ?v0))) :named
a318))
(assert (! (forall ((?v0 Int)) (= (word_of_int\$b (modulo\$ ?v0
(fun_app\$f (power\$a 2) (len_of\$a type\$b)))) (word_of_int\$b ?v0)))
:named a319))
(assert (! (= (<= 0 0) true) :named a320))
(assert (! (forall ((?v0 Int) (?v1 Int)) (=> (< 0 ?v0) (= (= ?v1
(modulo\$ ?v1 ?v0)) (and (<= 0 ?v1) (< ?v1 ?v0))))) :named a321))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (=> (and (<=
0 ?v0) (and (< ?v0 ?v1) (= (modulo\$ ?v2 ?v1) (modulo\$ ?v0 ?v1)))) (=
(modulo\$ ?v2 ?v1) ?v0))) :named a322))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int) (?v4
Int) (?v5 Int) (?v6 Int)) (=> (and (= ?v0 ?v1) (and (= (modulo\$ ?v2
?v1) (modulo\$ ?v3 ?v1)) (and (= (modulo\$ ?v4 ?v1) (modulo\$ ?v5 ?v1)) (=
(- ?v3 ?v5) ?v6)))) (= (modulo\$ (- ?v2 ?v4) ?v0) (modulo\$ ?v6 ?v1))))
:named a323))
(assert (! (forall ((?v0 Int) (?v1 Int)) (or (<= ?v0 ?v1) (or (=
?v0 ?v1) (<= ?v1 ?v0)))) :named a324))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$b (fun_app\$c less_eq\$
zero\$) ?v0)) :named a325))
(assert (! (<= 0 0) :named a326))
(assert (! (fun_app\$b (fun_app\$c less_eq\$ zero\$) zero\$) :named
a327))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int)) (=>
(= (- ?v0 ?v1) (- ?v2 ?v3)) (= (<= ?v0 ?v1) (<= ?v2 ?v3)))) :named
a328))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (=> (<= ?v0
?v1) (<= (- ?v0 ?v2) (- ?v1 ?v2)))) :named a329))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (=> (<= ?v0
?v1) (<= (- ?v2 ?v1) (- ?v2 ?v0)))) :named a330))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int)) (=>
(and (<= ?v0 ?v1) (<= ?v2 ?v3)) (<= (- ?v0 ?v3) (- ?v1 ?v2)))) :named
a331))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less_eq\$ ?v0) ?v1) (<= (fun_app\$f of_nat\$ ?v0) (fun_app\$f
of_nat\$ ?v1)))) :named a332))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less_eq\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d
of_nat\$a ?v0)) (fun_app\$d of_nat\$a ?v1)))) :named a333))
(assert (! (forall ((?v0 Nat_int_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (<= (fun_app\$f ?v0 ?v3) (fun_app\$f ?v0
(fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c less_eq\$ ?v1) ?v2)) (<=
(fun_app\$f ?v0 ?v1) (fun_app\$f ?v0 ?v2)))) :named a334))
(assert (! (forall ((?v0 Nat_nat_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d
?v0 ?v3)) (fun_app\$d ?v0 (fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c
less_eq\$ ?v1) ?v2)) (fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d ?v0 ?v1))
(fun_app\$d ?v0 ?v2)))) :named a335))
(assert (! (forall ((?v0 Nat_num_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (fun_app\$j (less_eq\$a (fun_app\$k ?v0
?v3)) (fun_app\$k ?v0 (fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c
less_eq\$ ?v1) ?v2)) (fun_app\$j (less_eq\$a (fun_app\$k ?v0 ?v1))
(fun_app\$k ?v0 ?v2)))) :named a336))
(assert (! (forall ((?v0 Nat_int_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (<= (fun_app\$f ?v0 (fun_app\$d suc\$ ?v3))
(fun_app\$f ?v0 ?v3))) (fun_app\$b (fun_app\$c less_eq\$ ?v1) ?v2)) (<=
(fun_app\$f ?v0 ?v2) (fun_app\$f ?v0 ?v1)))) :named a337))
(assert (! (forall ((?v0 Nat_nat_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d
?v0 (fun_app\$d suc\$ ?v3))) (fun_app\$d ?v0 ?v3))) (fun_app\$b (fun_app\$c
less_eq\$ ?v1) ?v2)) (fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d ?v0 ?v2))
(fun_app\$d ?v0 ?v1)))) :named a338))
(assert (! (forall ((?v0 Nat_num_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (fun_app\$j (less_eq\$a (fun_app\$k ?v0
(fun_app\$d suc\$ ?v3))) (fun_app\$k ?v0 ?v3))) (fun_app\$b (fun_app\$c
less_eq\$ ?v1) ?v2)) (fun_app\$j (less_eq\$a (fun_app\$k ?v0 ?v2))
(fun_app\$k ?v0 ?v1)))) :named a339))
(assert (! (forall ((?v0 Int)) (<= 0 (modulo\$ ?v0 2))) :named
a340))
(assert (! (forall ((?v0 Num\$)) (<= 0 (numeral\$a ?v0))) :named
a341))
(assert (! (forall ((?v0 Num\$)) (fun_app\$b (fun_app\$c less_eq\$
zero\$) (numeral\$ ?v0))) :named a342))
(assert (! (forall ((?v0 Num\$)) (not (<= (numeral\$a ?v0) 0)))
:named a343))
(assert (! (forall ((?v0 Num\$)) (not (fun_app\$b (fun_app\$c
less_eq\$ (numeral\$ ?v0)) zero\$))) :named a344))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (<= ?v0 ?v1) (<= (-
?v0 ?v1) 0))) :named a345))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Nat\$)) (=> (and (<=
?v0 ?v1) (<= 0 ?v0)) (<= (fun_app\$f (power\$a ?v0) ?v2) (fun_app\$f
(power\$a ?v1) ?v2)))) :named a346))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less_eq\$
zero\$) ?v0)) (fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d (power\$ ?v0)
?v2)) (fun_app\$d (power\$ ?v1) ?v2)))) :named a347))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (=> (<= 0 ?v0) (<= 0
(fun_app\$f (power\$a ?v0) ?v1)))) :named a348))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less_eq\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less_eq\$ zero\$)
(fun_app\$d (power\$ ?v0) ?v1)))) :named a349))
(assert (! (forall ((?v0 Nat\$)) (<= 0 (fun_app\$f of_nat\$ ?v0)))
:named a350))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$b (fun_app\$c less_eq\$
zero\$) (fun_app\$d of_nat\$a ?v0))) :named a351))
(assert (! (forall ((?v0 Int)) (=> (<= 0 ?v0) (exists ((?v1
Nat\$)) (= ?v0 (fun_app\$f of_nat\$ ?v1))))) :named a352))
(assert (! (forall ((?v0 Int)) (=> (and (<= 0 ?v0) (forall ((?v1
Nat\$)) (=> (= ?v0 (fun_app\$f of_nat\$ ?v1)) false))) false)) :named
a353))
(assert (! (forall ((?v0 Int)) (=> (and (member\$ ?v0 (collect\$
uub\$)) (forall ((?v1 Nat\$)) (=> (= ?v0 (fun_app\$f of_nat\$ ?v1))
false))) false)) :named a354))
(assert (! (forall ((?v0 Int) (?v1 Int_bool_fun\$)) (=> (and
(member\$ ?v0 (collect\$ uub\$)) (forall ((?v2 Nat\$)) (fun_app\$ ?v1
(fun_app\$f of_nat\$ ?v2)))) (fun_app\$ ?v1 ?v0))) :named a355))
(assert (! (forall ((?v0 Int) (?v1 Nat\$) (?v2 Int)) (=> (and (<
(fun_app\$f (power\$a ?v0) ?v1) (fun_app\$f (power\$a ?v2) ?v1)) (<= 0
?v2)) (< ?v0 ?v2))) :named a356))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less\$ (fun_app\$d (power\$ ?v0) ?v1)) (fun_app\$d
(power\$ ?v2) ?v1)) (fun_app\$b (fun_app\$c less_eq\$ zero\$) ?v2))
(fun_app\$b (fun_app\$c less\$ ?v0) ?v2))) :named a357))
(assert (! (forall ((?v0 Int) (?v1 Nat\$) (?v2 Int)) (=> (and (=
(fun_app\$f (power\$a ?v0) (fun_app\$d suc\$ ?v1)) (fun_app\$f (power\$a ?v2)
(fun_app\$d suc\$ ?v1))) (and (<= 0 ?v0) (<= 0 ?v2))) (= ?v0 ?v2)))
:named a358))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(= (fun_app\$d (power\$ ?v0) (fun_app\$d suc\$ ?v1)) (fun_app\$d (power\$
?v2) (fun_app\$d suc\$ ?v1))) (and (fun_app\$b (fun_app\$c less_eq\$ zero\$)
?v0) (fun_app\$b (fun_app\$c less_eq\$ zero\$) ?v2))) (= ?v0 ?v2))) :named
a359))
(assert (! (forall ((?v0 Int) (?v1 Nat\$) (?v2 Int)) (=> (and (<=
(fun_app\$f (power\$a ?v0) (fun_app\$d suc\$ ?v1)) (fun_app\$f (power\$a ?v2)
(fun_app\$d suc\$ ?v1))) (<= 0 ?v2)) (<= ?v0 ?v2))) :named a360))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d (power\$ ?v0) (fun_app\$d suc\$
?v1))) (fun_app\$d (power\$ ?v2) (fun_app\$d suc\$ ?v1))) (fun_app\$b
(fun_app\$c less_eq\$ zero\$) ?v2)) (fun_app\$b (fun_app\$c less_eq\$ ?v0)
?v2))) :named a361))
(assert (! (forall ((?v0 Int)) (< (modulo\$ ?v0 2) 2)) :named
a362))
(assert (! (forall ((?v0 Nat\$) (?v1 Int) (?v2 Int)) (=> (and
(fun_app\$b (fun_app\$c less\$ zero\$) ?v0) (and (<= 0 ?v1) (<= 0 ?v2))) (=
(= (fun_app\$f (power\$a ?v1) ?v0) (fun_app\$f (power\$a ?v2) ?v0)) (= ?v1
?v2)))) :named a363))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less\$ zero\$) ?v0) (and (fun_app\$b (fun_app\$c
less_eq\$ zero\$) ?v1) (fun_app\$b (fun_app\$c less_eq\$ zero\$) ?v2))) (= (=
(fun_app\$d (power\$ ?v1) ?v0) (fun_app\$d (power\$ ?v2) ?v0)) (= ?v1
?v2)))) :named a364))
(assert (! (forall ((?v0 Int) (?v1 Nat\$) (?v2 Int)) (=> (and (=
(fun_app\$f (power\$a ?v0) ?v1) (fun_app\$f (power\$a ?v2) ?v1)) (and (<= 0
?v0) (and (<= 0 ?v2) (fun_app\$b (fun_app\$c less\$ zero\$) ?v1)))) (= ?v0
?v2))) :named a365))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(= (fun_app\$d (power\$ ?v0) ?v1) (fun_app\$d (power\$ ?v2) ?v1)) (and
(fun_app\$b (fun_app\$c less_eq\$ zero\$) ?v0) (and (fun_app\$b (fun_app\$c
less_eq\$ zero\$) ?v2) (fun_app\$b (fun_app\$c less\$ zero\$) ?v1)))) (= ?v0
?v2))) :named a366))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (< (modulo\$ ?v0
(fun_app\$f (power\$a 2) ?v1)) (fun_app\$f (power\$a 2) ?v1))) :named
a367))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Nat\$)) (=> (and (<
?v0 ?v1) (and (<= 0 ?v0) (fun_app\$b (fun_app\$c less\$ zero\$) ?v2))) (<
(fun_app\$f (power\$a ?v0) ?v2) (fun_app\$f (power\$a ?v1) ?v2)))) :named
a368))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1) (and (fun_app\$b (fun_app\$c
less_eq\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$ zero\$) ?v2)))
(fun_app\$b (fun_app\$c less\$ (fun_app\$d (power\$ ?v0) ?v2)) (fun_app\$d
(power\$ ?v1) ?v2)))) :named a369))
(assert (! (forall ((?v0 Int)) (<= 0 (fun_app\$f (power\$a ?v0)
(numeral\$ (bit0\$ one\$))))) :named a370))
(assert (! (forall ((?v0 Int) (?v1 Int)) (=> (and (= (fun_app\$f
(power\$a ?v0) (numeral\$ (bit0\$ one\$))) (fun_app\$f (power\$a ?v1)
(numeral\$ (bit0\$ one\$)))) (and (<= 0 ?v0) (<= 0 ?v1))) (= ?v0 ?v1)))
:named a371))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (=
(fun_app\$d (power\$ ?v0) (numeral\$ (bit0\$ one\$))) (fun_app\$d (power\$
?v1) (numeral\$ (bit0\$ one\$)))) (and (fun_app\$b (fun_app\$c less_eq\$
zero\$) ?v0) (fun_app\$b (fun_app\$c less_eq\$ zero\$) ?v1))) (= ?v0 ?v1)))
:named a372))
(assert (! (forall ((?v0 Int) (?v1 Int)) (=> (and (<= (fun_app\$f
(power\$a ?v0) (numeral\$ (bit0\$ one\$))) (fun_app\$f (power\$a ?v1)
(numeral\$ (bit0\$ one\$)))) (<= 0 ?v1)) (<= ?v0 ?v1))) :named a373))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less_eq\$ (fun_app\$d (power\$ ?v0) (numeral\$ (bit0\$ one\$))))
(fun_app\$d (power\$ ?v1) (numeral\$ (bit0\$ one\$)))) (fun_app\$b (fun_app\$c
less_eq\$ zero\$) ?v1)) (fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1))) :named
a374))
(assert (! (forall ((?v0 Nat\$)) (<= 0 (fun_app\$f (power\$a 2)
?v0))) :named a375))
(assert (! (forall ((?v0 Int) (?v1 Int)) (=> (and (< (fun_app\$f
(power\$a ?v0) (numeral\$ (bit0\$ one\$))) (fun_app\$f (power\$a ?v1)
(numeral\$ (bit0\$ one\$)))) (<= 0 ?v1)) (< ?v0 ?v1))) :named a376))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ (fun_app\$d (power\$ ?v0) (numeral\$ (bit0\$ one\$))))
(fun_app\$d (power\$ ?v1) (numeral\$ (bit0\$ one\$)))) (fun_app\$b (fun_app\$c
less_eq\$ zero\$) ?v1)) (fun_app\$b (fun_app\$c less\$ ?v0) ?v1))) :named
a377))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (= (modulo\$ ?v0
(fun_app\$f (power\$a 2) (len_of\$b type\$a))) (modulo\$ ?v1 (fun_app\$f
(power\$a 2) (len_of\$b type\$a)))) (= (word_of_int\$ ?v0) (word_of_int\$
?v1)))) :named a378))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (= (modulo\$ ?v0
(fun_app\$f (power\$a 2) (len_of\$ type\$))) (modulo\$ ?v1 (fun_app\$f
(power\$a 2) (len_of\$ type\$)))) (= (word_of_int\$a ?v0) (word_of_int\$a
?v1)))) :named a379))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (= (modulo\$ ?v0
(fun_app\$f (power\$a 2) (len_of\$a type\$b))) (modulo\$ ?v1 (fun_app\$f
(power\$a 2) (len_of\$a type\$b)))) (= (word_of_int\$b ?v0) (word_of_int\$b
?v1)))) :named a380))
(assert (! (forall ((?v0 Int) (?v1 Int)) (! (=> (and (<= ?v0 0)
(< ?v1 ?v0)) (= (modulo\$ ?v0 ?v1) ?v0)) :pattern ((modulo\$ ?v0 ?v1))))
:named a381))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$b (fun_app\$c less_eq\$
zero\$) ?v0)) :named a382))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less_eq\$ (fun_app\$d suc\$ ?v0)) (fun_app\$d suc\$ ?v1))
(fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1))) :named a383))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less_eq\$ ?v0) ?v1) (= (fun_app\$d (minus\$ ?v1) (fun_app\$d
(minus\$ ?v1) ?v0)) ?v0))) :named a384))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (! (= (fun_app\$j
(less_eq\$a (bit0\$ ?v0)) (bit0\$ ?v1)) (fun_app\$j (less_eq\$a ?v0) ?v1))
:pattern ((fun_app\$j (less_eq\$a (bit0\$ ?v0)) (bit0\$ ?v1))))) :named
a385))
(assert (! (forall ((?v0 Num\$)) (! (= (fun_app\$j (less_eq\$a
one\$) ?v0) true) :pattern ((fun_app\$j (less_eq\$a one\$) ?v0)))) :named
a386))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less_eq\$ ?v0) ?v1) (= (fun_app\$d (minus\$ ?v0) ?v1) zero\$)))
:named a387))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d
(minus\$ ?v0) ?v1) zero\$) (fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1)))
:named a388))
(assert (! (forall ((?v0 Num\$)) (! (= (fun_app\$j (less_eq\$a
(bit0\$ ?v0)) one\$) false) :pattern ((bit0\$ ?v0)))) :named a389))
(assert (! (forall ((?v0 Num\$)) (! (= (fun_app\$j (less_eq\$a ?v0)
one\$) (= ?v0 one\$)) :pattern ((less_eq\$a ?v0)))) :named a390))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c
less_eq\$ ?v0) zero\$) (= ?v0 zero\$))) :named a391))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c
less_eq\$ zero\$) ?v0) true)) :named a392))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2
Nat_nat_bool_fun_fun\$)) (=> (and (fun_app\$b (fun_app\$c less_eq\$ ?v0)
?v1) (and (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c ?v2 ?v3) ?v3))
(and (forall ((?v3 Nat\$) (?v4 Nat\$) (?v5 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c ?v2 ?v3) ?v4) (fun_app\$b (fun_app\$c ?v2 ?v4) ?v5))
(fun_app\$b (fun_app\$c ?v2 ?v3) ?v5))) (forall ((?v3 Nat\$)) (fun_app\$b
(fun_app\$c ?v2 ?v3) (fun_app\$d suc\$ ?v3)))))) (fun_app\$b (fun_app\$c ?v2
?v0) ?v1))) :named a393))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat_bool_fun\$))
(=> (and (fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1) (and (fun_app\$b ?v2
?v0) (forall ((?v3 Nat\$)) (=> (and (fun_app\$b (fun_app\$c less_eq\$ ?v0)
?v3) (fun_app\$b ?v2 ?v3)) (fun_app\$b ?v2 (fun_app\$d suc\$ ?v3))))))
(fun_app\$b ?v2 ?v1))) :named a394))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (forall
((?v2 Nat\$)) (=> (forall ((?v3 Nat\$)) (=> (fun_app\$b (fun_app\$c
less_eq\$ (fun_app\$d suc\$ ?v3)) ?v2) (fun_app\$b ?v0 ?v3))) (fun_app\$b
?v0 ?v2))) (fun_app\$b ?v0 ?v1))) :named a395))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (not (fun_app\$b
(fun_app\$c less_eq\$ ?v0) ?v1)) (fun_app\$b (fun_app\$c less_eq\$
(fun_app\$d suc\$ ?v1)) ?v0))) :named a396))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$b (fun_app\$c
less_eq\$ (fun_app\$d suc\$ ?v0)) ?v0))) :named a397))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less_eq\$ ?v0) (fun_app\$d suc\$ ?v1)) (or (fun_app\$b
(fun_app\$c less_eq\$ ?v0) ?v1) (= ?v0 (fun_app\$d suc\$ ?v1))))) :named
a398))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less_eq\$ (fun_app\$d suc\$ ?v0)) ?v1) (exists ((?v2 Nat\$)) (=
?v1 (fun_app\$d suc\$ ?v2))))) :named a399))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less_eq\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less_eq\$ ?v0)
(fun_app\$d suc\$ ?v1)))) :named a400))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less_eq\$ ?v0) (fun_app\$d suc\$ ?v1)) (and (=> (fun_app\$b
(fun_app\$c less_eq\$ ?v0) ?v1) false) (=> (= ?v0 (fun_app\$d suc\$ ?v1))
false))) false)) :named a401))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less_eq\$ (fun_app\$d suc\$ ?v0)) ?v1) (fun_app\$b (fun_app\$c
less_eq\$ ?v0) ?v1))) :named a402))
(assert (! (forall ((?v0 Nat_nat_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$) (?v4 Nat\$)) (=> (fun_app\$b (fun_app\$c
less\$ ?v3) ?v4) (fun_app\$b (fun_app\$c less\$ (fun_app\$d ?v0 ?v3))
(fun_app\$d ?v0 ?v4)))) (fun_app\$b (fun_app\$c less_eq\$ ?v1) ?v2))
(fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d ?v0 ?v1)) (fun_app\$d ?v0
?v2)))) :named a403))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less_eq\$ ?v0) ?v1) (not (= ?v0 ?v1))) (fun_app\$b (fun_app\$c
less\$ ?v0) ?v1))) :named a404))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (or (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (= ?v0 ?v1)) (fun_app\$b (fun_app\$c less_eq\$
?v0) ?v1))) :named a405))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less_eq\$ ?v0) ?v1) (or (fun_app\$b (fun_app\$c less\$ ?v0) ?v1)
(= ?v0 ?v1)))) :named a406))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1)))
:named a407))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (and (fun_app\$b (fun_app\$c less_eq\$ ?v0)
?v1) (not (= ?v0 ?v1))))) :named a408))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less_eq\$
(fun_app\$d (minus\$ ?v2) ?v1)) (fun_app\$d (minus\$ ?v2) ?v0)))) :named
a409))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less_eq\$
?v2) ?v1)) (= (fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d (minus\$ ?v1)
?v0)) (fun_app\$d (minus\$ ?v1) ?v2)) (fun_app\$b (fun_app\$c less_eq\$ ?v2)
?v0)))) :named a410))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (fun_app\$b (fun_app\$c
less_eq\$ (fun_app\$d (minus\$ ?v0) ?v1)) ?v0)) :named a411))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less_eq\$
(fun_app\$d (minus\$ ?v0) ?v2)) (fun_app\$d (minus\$ ?v1) ?v2)))) :named
a412))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less_eq\$
?v0) ?v2)) (= (fun_app\$d (minus\$ (fun_app\$d (minus\$ ?v1) ?v0))
(fun_app\$d (minus\$ ?v2) ?v0)) (fun_app\$d (minus\$ ?v1) ?v2)))) :named
a413))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less_eq\$
?v0) ?v2)) (= (fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d (minus\$ ?v1)
?v0)) (fun_app\$d (minus\$ ?v2) ?v0)) (fun_app\$b (fun_app\$c less_eq\$ ?v1)
?v2)))) :named a414))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less_eq\$
?v0) ?v2)) (= (= (fun_app\$d (minus\$ ?v1) ?v0) (fun_app\$d (minus\$ ?v2)
?v0)) (= ?v1 ?v2)))) :named a415))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$b (fun_app\$c less_eq\$
?v0) ?v0)) :named a416))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less_eq\$
?v1) ?v2)) (fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v2))) :named a417))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= ?v0 ?v1)
(fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1))) :named a418))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less_eq\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less_eq\$ ?v1) ?v0))
(= ?v0 ?v1))) :named a419))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (or (fun_app\$b
(fun_app\$c less_eq\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less_eq\$ ?v1)
?v0))) :named a420))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (fun_app\$b ?v0 ?v1) (forall ((?v3 Nat\$)) (=> (fun_app\$b ?v0
?v3) (fun_app\$b (fun_app\$c less_eq\$ ?v3) ?v2)))) (exists ((?v3 Nat\$))
(and (fun_app\$b ?v0 ?v3) (forall ((?v4 Nat\$)) (=> (fun_app\$b ?v0 ?v4)
(fun_app\$b (fun_app\$c less_eq\$ ?v4) ?v3))))))) :named a421))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(not (fun_app\$b ?v0 zero\$)) (fun_app\$b ?v0 ?v1)) (exists ((?v2 Nat\$))
(and (fun_app\$b (fun_app\$c less_eq\$ ?v2) ?v1) (and (forall ((?v3 Nat\$))
(=> (fun_app\$b (fun_app\$c less\$ ?v3) ?v2) (not (fun_app\$b ?v0 ?v3))))
(fun_app\$b ?v0 ?v2)))))) :named a422))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less_eq\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$ ?v0)
(fun_app\$d suc\$ ?v1)))) :named a423))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d
suc\$ ?v0)) ?v1))) :named a424))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ ?v0) (fun_app\$d suc\$ ?v1)) (fun_app\$b (fun_app\$c
less_eq\$ ?v0) ?v1))) :named a425))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less_eq\$ ?v0) ?v1) (= (fun_app\$b (fun_app\$c less\$ ?v1)
(fun_app\$d suc\$ ?v0)) (= ?v1 ?v0)))) :named a426))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less_eq\$ (fun_app\$d suc\$ ?v0)) ?v1) (fun_app\$b (fun_app\$c
less\$ ?v0) ?v1))) :named a427))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat_bool_fun\$))
(=> (and (fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1) (and (fun_app\$b ?v2
?v1) (forall ((?v3 Nat\$)) (=> (and (fun_app\$b (fun_app\$c less_eq\$ ?v0)
?v3) (and (fun_app\$b (fun_app\$c less\$ ?v3) ?v1) (fun_app\$b ?v2
(fun_app\$d suc\$ ?v3)))) (fun_app\$b ?v2 ?v3))))) (fun_app\$b ?v2 ?v0)))
:named a428))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat_bool_fun\$))
(=> (and (fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1) (and (fun_app\$b ?v2
?v0) (forall ((?v3 Nat\$)) (=> (and (fun_app\$b (fun_app\$c less_eq\$ ?v0)
?v3) (and (fun_app\$b (fun_app\$c less\$ ?v3) ?v1) (fun_app\$b ?v2 ?v3)))
(fun_app\$b ?v2 (fun_app\$d suc\$ ?v3)))))) (fun_app\$b ?v2 ?v1))) :named
a429))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less_eq\$ (fun_app\$d suc\$ ?v0)) ?v1) (fun_app\$b (fun_app\$c
less\$ ?v0) ?v1))) :named a430))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d
suc\$ ?v0)) ?v1))) :named a431))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less_eq\$ ?v0) ?v1) (= (fun_app\$d (minus\$ (fun_app\$d suc\$
?v1)) ?v0) (fun_app\$d suc\$ (fun_app\$d (minus\$ ?v1) ?v0))))) :named
a432))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less_eq\$
?v2) ?v0)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d (minus\$ ?v0) ?v2))
(fun_app\$d (minus\$ ?v1) ?v2)))) :named a433))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less_eq\$
?v0) ?v2)) (= (fun_app\$b (fun_app\$c less\$ (fun_app\$d (minus\$ ?v1) ?v0))
(fun_app\$d (minus\$ ?v2) ?v0)) (fun_app\$b (fun_app\$c less\$ ?v1) ?v2))))
:named a434))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (<= (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (fun_app\$b (fun_app\$c less_eq\$
?v0) ?v1))) :named a435))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less_eq\$ ?v0) ?v1) (<= (fun_app\$f of_nat\$ ?v0) (fun_app\$f
of_nat\$ ?v1)))) :named a436))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less_eq\$ ?v0) ?v1) (= (fun_app\$f of_nat\$ (fun_app\$d (minus\$
?v1) ?v0)) (- (fun_app\$f of_nat\$ ?v1) (fun_app\$f of_nat\$ ?v0)))))
:named a437))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less_eq\$ (fun_app\$d suc\$ zero\$)) ?v0) (fun_app\$b (fun_app\$c
less_eq\$ (fun_app\$d suc\$ zero\$)) (fun_app\$d (power\$ ?v0) ?v1)))) :named
a438))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less_eq\$ (fun_app\$d (power\$ ?v0) (numeral\$ (bit0\$ one\$))))
?v1) (fun_app\$b (fun_app\$c less_eq\$ ?v0) ?v1))) :named a439))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less_eq\$ (fun_app\$d (power\$ ?v0) (numeral\$ (bit0\$ one\$))))
(fun_app\$d (power\$ ?v1) (numeral\$ (bit0\$ one\$)))) (fun_app\$b (fun_app\$c
less_eq\$ ?v0) ?v1))) :named a440))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$e
(less_eq\$b (word_of_int\$ ?v0)) (word_of_int\$ ?v1)) (<= (modulo\$ ?v0
(fun_app\$f (power\$a 2) (len_of\$b type\$a))) (modulo\$ ?v1 (fun_app\$f
(power\$a 2) (len_of\$b type\$a)))))) :named a441))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (less_eq\$c
(word_of_int\$a ?v0) (word_of_int\$a ?v1)) (<= (modulo\$ ?v0 (fun_app\$f
(power\$a 2) (len_of\$ type\$))) (modulo\$ ?v1 (fun_app\$f (power\$a 2)
(len_of\$ type\$)))))) :named a442))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (less_eq\$d
(word_of_int\$b ?v0) (word_of_int\$b ?v1)) (<= (modulo\$ ?v0 (fun_app\$f
(power\$a 2) (len_of\$a type\$b))) (modulo\$ ?v1 (fun_app\$f (power\$a 2)
(len_of\$a type\$b)))))) :named a443))
(assert (! (forall ((?v0 Int) (?v1 Int)) (=> (<= 0 ?v0) (<=
(modulo\$ ?v0 ?v1) ?v0))) :named a444))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less_eq\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less_eq\$
(fun_app\$d (modulo\$a ?v0) ?v1)) ?v0))) :named a445))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$ (fun_app\$d
(modulo\$a ?v1) ?v0)) ?v0))) :named a446))
(assert (! (forall ((?v0 Int) (?v1 Int)) (=> (< 0 ?v0) (<
(modulo\$ ?v1 ?v0) ?v0))) :named a447))
(check-sat)
(get-proof)

SMT: Invoking SMT solver "z3" ...
SMT: Solver:
SMT: Result:
timeout
SMT: Time (ms):
10029
SMT: Assertions:
¬ False  [¬ False]
n < 2 ^ (LENGTH('l) - Suc 0)
msb (word_of_int (int n))
∀i n x. (numeral i ^ n < of_nat x) = (numeral i ^ n < x)
∀i n x. (numeral i ^ n < int x) = (numeral i ^ n < x)
∀x i n. (of_nat x < numeral i ^ n) = (x < numeral i ^ n)
∀x i n. (int x < numeral i ^ n) = (x < numeral i ^ n)
∀a. (0 < a⇧2) = (a ≠ 0)
∀x n. (0 < of_nat x ^ n) = (0 < x ∨ n = 0)
∀x n. (0 < int x ^ n) = (0 < x ∨ n = 0)
∀x n y. (numeral x ^ n = of_nat y) = (numeral x ^ n = y)
∀x n y. (numeral x ^ n = int y) = (numeral x ^ n = y)
∀y x n. (of_nat y = numeral x ^ n) = (y = numeral x ^ n)
∀y x n. (int y = numeral x ^ n) = (y = numeral x ^ n)
∀b w x. (of_nat b ^ w < of_nat x) = (b ^ w < x)
∀b w x. (int b ^ w < int x) = (b ^ w < x)
∀x b w. (of_nat x < of_nat b ^ w) = (x < b ^ w)
∀x b w. (int x < int b ^ w) = (x < b ^ w)
∀a. (a⇧2 = 0) = (a = 0)
∀a. (a⇧2 = 0) = (a = 0)
∀n. (0 < of_nat n) = (0 < n)
∀n. (0 < int n) = (0 < n)
0 < LENGTH('l)
∀n>0. Suc (n - Suc 0) = n
∀nat nat'. (Suc nat = Suc nat') = (nat = nat')
∀x2 y2. (Suc x2 = Suc y2) = (x2 = y2)
∀m n. (of_nat m = of_nat n) = (m = n)
∀m n. (int m = int n) = (m = n)
∀n. (n ≠ 0) = (0 < n)
∀m n. (Suc m < Suc n) = (m < n)
∀m n. m < n ⟶ Suc m < Suc n
∀n. n < Suc n
∀m. m - m = 0
∀n. 0 - n = 0
∀m n k. Suc m - n - Suc k = m - n - k
∀m n. Suc m - Suc n = m - n
∀n. 0 ^ Suc n = 0
∀n. 0 ^ Suc n = 0
∀n. 0 ^ Suc n = 0
∀m. (of_nat m = 0) = (m = 0)
∀m. (int m = 0) = (m = 0)
∀n. (0 = of_nat n) = (0 = n)
∀n. (0 = int n) = (0 = n)
of_nat 0 = 0
of_nat 0 = 0
int 0 = 0
∀m n. (of_nat m < of_nat n) = (m < n)
∀m n. (int m < int n) = (m < n)
∀k. 0 ^ numeral k = 0
∀k. 0 ^ numeral k = 0
∀k. 0 ^ numeral k = 0
∀n. 0 < Suc n
∀n. (n < Suc 0) = (n = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀n m. (0 < n - m) = (m < n)
∀x m. (x ^ m = Suc 0) = (m = 0 ∨ x = Suc 0)
∀n. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (Suc 0 ^ n))
SMT.Symb_Nil)
SMT.Symb_Nil)
(Suc 0 ^ n = Suc 0)
∀x n. (0 < x ^ n) = (0 < x ∨ n = 0)
∀x b w. (of_nat x = of_nat b ^ w) = (x = b ^ w)
∀x b w. (int x = int b ^ w) = (x = b ^ w)
∀b w x. (of_nat b ^ w = of_nat x) = (b ^ w = x)
∀b w x. (int b ^ w = int x) = (b ^ w = x)
∀m n. of_nat (m ^ n) = of_nat m ^ n
∀m n. of_nat (m ^ n) = of_nat m ^ n
∀m n. int (m ^ n) = int m ^ n
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
∀uu. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (len_of uu))
SMT.Symb_Nil)
SMT.Symb_Nil)
(len_of uu = 0)
∀nat. (nat = 0 ⟶ False) ∧ (nat ≠ 0 ⟶ False) ⟶ False
∀a P. (a ∈ Collect P) = P a
∀A. {x. x ∈ A} = A
∀P Q. (∀x. P x = Q x) ⟶ Collect P = Collect Q
∀n. n ≠ Suc n
∀x y. Suc x = Suc y ⟶ x = y
∀x y. x ≠ y ∧ (x < y ⟶ False) ∧ (y < x ⟶ False) ⟶ False
∀P n. (∀n. ¬ P n ⟶ (∃m<n. ¬ P m)) ⟶ P n
∀P n. (∀n. (∀m<n. P m) ⟶ P n) ⟶ P n
∀n. n < n ⟶ False
∀s t. s < t ⟶ s ≠ t
∀n m. n < m ⟶ m ≠ n
∀n. ¬ n < n
∀m n. (m ≠ n) = (m < n ∨ n < m)
∀i j k. i - j - k = i - k - j
∀a n. a ≠ 0 ⟶ a ^ n ≠ 0
∀a n. a ≠ 0 ⟶ a ^ n ≠ 0
∀n. n ≠ 0 ⟶ (∃m. n = Suc m)
∀y. (y = 0 ⟶ False) ∧ (∀nat. y = Suc nat ⟶ False) ⟶ False
∀m. 0 ≠ Suc m
∀m. 0 = Suc m ⟶ False
∀m. Suc m = 0 ⟶ False
∀P k. P k ∧ (∀n. P (Suc n) ⟶ P n) ⟶ P 0
∀P m n.
(∀x. P x 0) ∧ (∀y. P 0 (Suc y)) ∧ (∀x y. P x y ⟶ P (Suc x)
(Suc y)) ⟶
P m n
∀P n. P 0 ∧ (∀n. P n ⟶ P (Suc n)) ⟶ P n
∀nat x2. nat = Suc x2 ⟶ nat ≠ 0
∀nat'. 0 ≠ Suc nat'
∀nat'. Suc nat' ≠ 0
∀x2. 0 ≠ Suc x2
∀n. (n < 0) = False
∀P n. P 0 ∧ (∀n. 0 < n ∧ ¬ P n ⟶ (∃m<n. ¬ P m)) ⟶ P n
∀m n. m < n ⟶ n ≠ 0
∀n<0. False
∀n. ¬ n < 0
∀n. (¬ 0 < n) = (n = 0)
∀n. (n = 0 ⟶ False) ⟶ 0 < n
∀n m. ¬ n < m ⟶ (n < Suc m) = (n = m)
∀i j P.
i < j ∧ (∀i. j = Suc i ⟶ P i) ∧ (∀i. i < j ∧ P (Suc i) ⟶ P i)
⟶ P i
∀i j P.
i < j ∧
(∀i. P i (Suc i)) ∧
(∀i j k. i < j ∧ j < k ∧ P i j ∧ P j k ⟶ P i k) ⟶
P i j
∀i j k. i < j ∧ j < k ⟶ Suc i < k
∀m n. Suc m < Suc n ⟶ m < n
∀n m. ¬ n < m ∧ n < Suc m ⟶ m = n
∀n m. (Suc n < m) = (∃m'. m = Suc m' ∧ n < m')
∀n P. (∀i<Suc n. P i) = (P n ∧ (∀i<n. P i))
∀m n. (¬ m < n) = (n < Suc m)
∀m n. (m < Suc n) = (m < n ∨ m = n)
∀n P. (∃i<Suc n. P i) = (P n ∨ (∃i<n. P i))
∀m n. m < n ⟶ m < Suc n
∀m n. m < Suc n ∧ (m < n ⟶ False) ∧ (m = n ⟶ False) ⟶ False
∀m n. m < n ∧ Suc m ≠ n ⟶ Suc m < n
∀i k. Suc i < k ∧ (∀j. i < j ∧ k = Suc j ⟶ False) ⟶ False
∀m n. Suc m < n ⟶ m < n
∀i k. i < k ∧ (k = Suc i ⟶ False) ∧ (∀j. i < j ∧ k = Suc j ⟶
False) ⟶
False
∀m. m - 0 = m
∀m n. m - n = 0 ∧ n - m = 0 ⟶ m = n
∀P k i. P k ∧ (∀n. P (Suc n) ⟶ P n) ⟶ P (k - i)
∀j k n. j < k ⟶ j - n < k
∀m n l. m < n ∧ m < l ⟶ l - n < l - m
∀a n. 0 < a ⟶ 0 < a ^ n
∀a n. 0 < a ⟶ 0 < a ^ n
∀m. ¬ of_nat m < 0
∀m. ¬ int m < 0
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀n. of_nat (Suc n) ≠ 0
∀n. int (Suc n) ≠ 0
∀m n. of_nat m < of_nat n ⟶ m < n
∀m n. int m < int n ⟶ m < n
∀m n. m < n ⟶ of_nat m < of_nat n
∀m n. m < n ⟶ int m < int n
∀m n. (m < Suc n) = (m = 0 ∨ (∃j. m = Suc j ∧ j < n))
∀n>0. ∃m. n = Suc m
∀n P. (∀i<Suc n. P i) = (P 0 ∧ (∀i<n. P (Suc i)))
∀n. (0 < n) = (∃m. n = Suc m)
∀n P. (∃i<Suc n. P i) = (P 0 ∨ (∃i<n. P (Suc i)))
∀n m. 0 < n ∧ 0 < m ⟶ m - n < m
∀m n. m - n < Suc m
∀n m. n < m ⟶ Suc (m - Suc n) = m - n
∀i m n. 0 < i ∧ i ^ m < i ^ n ⟶ m < n
∀n>0. 0 ^ n = 0
∀n>0. 0 ^ n = 0
∀n>0. 0 ^ n = 0
∀n i. 0 < n ⟶ n - Suc i < n
0⇧2 = 0
0⇧2 = 0
0⇧2 = 0
∀x y. (x - y)⇧2 = (y - x)⇧2
∀x y. (x - y)⇧2 = (y - x)⇧2
∀a. ¬ a⇧2 < 0
of_nat (2 ^ LENGTH('l)) = 0
∀k. 0 < k ∧ k < 2 ^ LENGTH('l) ⟶ of_nat k ≠ 0
∀n. of_nat (numeral n) = numeral n
∀n. of_nat (numeral n) = numeral n
∀n. int (numeral n) = numeral n
∀a b. (0 < a - b) = (b < a)
∀x. (∀n. x = of_nat n ∧ n < 2 ^ LENGTH('l) ⟶ False) ⟶ False
∀w. ∃n. w = of_nat n ∧ n < 2 ^ LENGTH('l)
∀n<2. n = 0 ∨ n = Suc 0
∀m v. (int m = numeral v) = (m = numeral v)
word_of_int (2 ^ LENGTH('a)) = 0
word_of_int (2 ^ LENGTH('l)) = 0
word_of_int (2 ^ LENGTH(0)) = 0
2 = Suc (Suc 0)
∀n. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (num.Bit0 n))
SMT.Symb_Nil)
SMT.Symb_Nil)
((num.One < num.Bit0 n) = True)
∀m n. (numeral m = numeral n) = (m = n)
∀m n. (numeral m = numeral n) = (m = n)
∀x2 y2. (num.Bit0 x2 = num.Bit0 y2) = (x2 = y2)
∀m n. (num.Bit0 m = num.Bit0 n) = (m = n)
∀m n. (int m = int n) = (m = n)
∀y. (0 < numeral y) = (0 ≠ numeral y)
∀y. (0 < numeral y) = (0 ≠ numeral y)
∀y. (0 < numeral y) = (0 ≠ numeral y)
∀n. (¬ 0 < n) = (n = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀a. 0 - a = 0
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀m. (num.Bit0 m = num.One) = False
∀n. (num.One = num.Bit0 n) = False
∀bin. word_of_int (numeral bin) = numeral bin
∀bin. word_of_int (numeral bin) = numeral bin
∀bin. word_of_int (numeral bin) = numeral bin
∀m n. SMT.trigger
(SMT.Symb_Cons
(SMT.Symb_Cons (SMT.pat (num.Bit0 m < num.Bit0 n))
SMT.Symb_Nil)
SMT.Symb_Nil)
((num.Bit0 m < num.Bit0 n) = (m < n))
∀m. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((<) m))
SMT.Symb_Nil)
SMT.Symb_Nil)
((m < num.One) = False)
∀m n. (numeral m < numeral n) = (m < n)
∀m n. (numeral m < numeral n) = (m < n)
∀x. ¬ x < 0
∀x. ¬ x < 0
∀x. ¬ x < 0
∀y. (0 < y) = (0 ≠ y)
∀y. (0 < y) = (0 ≠ y)
∀y. (0 < y) = (0 ≠ y)
∀w. (w ≠ 0) = (0 < w)
∀xa x. word_of_int xa - word_of_int x = word_of_int (xa - x)
∀xa x. word_of_int xa - word_of_int x = word_of_int (xa - x)
∀xa x. word_of_int xa - word_of_int x = word_of_int (xa - x)
∀a b. word_of_int a - word_of_int b = word_of_int (a - b)
∀a b. word_of_int a - word_of_int b = word_of_int (a - b)
∀a b. word_of_int a - word_of_int b = word_of_int (a - b)
∀z. (∀m n. z = int m - int n ⟶ False) ⟶ False
∀x. (0 = x) = (x = 0)
∀x. (0 = x) = (x = 0)
∀x. (0 = x) = (x = 0)
∀x. (0 = x) = (x = 0)
∀x. (0 = x) = (x = 0)
∀a b c d. a - b = c - d ⟶ (a = b) = (c = d)
∀a b c d. a - b = c - d ⟶ (a = b) = (c = d)
∀a c b. a - c - b = a - b - c
∀a c b. a - c - b = a - b - c
∀a c b. a - c - b = a - b - c
(num.One = num.One) = True
0 = of_nat 0
∀a b c d. False ⟶ a ^ b = c ^ d
∀a b c d. False ⟶ a ^ b = c ^ d
∀x. ∃y. x = word_of_int y
∀P x. (∀y. P (word_of_int y)) ⟶ P x
0 = word_of_int 0
∀b. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (numeral b))
SMT.Symb_Nil)
SMT.Symb_Nil)
(numeral b = word_of_int (numeral b))
0 = word_of_int 0
¬ 0 < 0
¬ 0 < 0
∀n. (n = 0 ⟶ False) ⟶ 0 < n
∀n. ¬ n < 0
∀m n. m < n ⟶ n ≠ 0
∀n. (0 < n) = (n ≠ 0)
∀n. 0 ≠ numeral n
∀n. 0 ≠ numeral n
∀a b. (a = b) = (a - b = 0)
∀a b d c. a < b ∧ d < c ⟶ a - c < b - d
∀a b c d. a - b = c - d ⟶ (a < b) = (c < d)
∀b a c. b < a ⟶ c - a < c - b
∀a b c. a < b ⟶ a - c < b - c
∀x2. num.One ≠ num.Bit0 x2
∀n. 0 < numeral n
∀n. 0 < numeral n
∀n. ¬ numeral n < 0
∀n. ¬ numeral n < 0
∀a b. (a < b) = (a - b < 0)
LENGTH('l) ≠ 0
∀w v. LENGTH('l) = 0 ⟶ w = v
∀w v. LENGTH(0) = 0 ⟶ w = v
∀k. 0 < k ∧ (∀n. k = int n ∧ 0 < n ⟶ False) ⟶ False
∀k>0. ∃n>0. k = int n
∀k. of_nat k ≠ 0 ⟶ 0 < k
∀k. int k ≠ 0 ⟶ 0 < k
2 ^ LENGTH('l) = 0
Numeral1 = Suc 0
∀n. 0 < 2 ^ n
∀k l. numeral k ^ numeral l = numeral (Num.pow k l)
∀k l. numeral k ^ numeral l = numeral (Num.pow k l)
∀n. int (numeral n) = numeral n
0 < 2
∀x y. (int x = int y) = (x = y)
(0 < 0) = False
∀k. k - 0 = k
∀x. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (Num.pow x))
SMT.Symb_Nil)
SMT.Symb_Nil)
(Num.pow x num.One = x)
∀n k P.
(∃m. n = Suc m ∧ (m = k ∨ P m)) = (n = Suc k ∨ (∃m. n = Suc m
∧ P m))
∀x y. int x = int y ⟶ x = y
∀P a b. int (if P then a else b) = (if P then int a else int b)
∀a b. (a = b) = (int a = int b)
∀y. 0 < y ∨ 0 = y
∀m k. (m - k = m) = (k = 0 ∨ m = 0)
int 0 = 0
∀a b. (a < b) = (int a < int b)
∀a b. int (a - b) = (if int a < int b then 0 else int a - int b)
∀x y. (0 ≤ x ∧ x < 2 ^ LENGTH('a)) ∧ 0 ≤ y ∧ y < 2 ^ LENGTH('a)
⟶
(word_of_int x = word_of_int y) = (x = y)
∀x y. (0 ≤ x ∧ x < 2 ^ LENGTH('l)) ∧ 0 ≤ y ∧ y < 2 ^ LENGTH('l)
⟶
(word_of_int x = word_of_int y) = (x = y)
∀x y. (0 ≤ x ∧ x < 2 ^ LENGTH(0)) ∧ 0 ≤ y ∧ y < 2 ^ LENGTH(0) ⟶
(word_of_int x = word_of_int y) = (x = y)
∀x. (∀n. x = word_of_int n ∧ 0 ≤ n ∧ n < 2 ^ LENGTH('a) ⟶ False)
⟶
False
∀x. (∀n. x = word_of_int n ∧ 0 ≤ n ∧ n < 2 ^ LENGTH('l) ⟶ False)
⟶
False
∀x. (∀n. x = word_of_int n ∧ 0 ≤ n ∧ n < 2 ^ LENGTH(0) ⟶ False)
⟶ False
∀n m. (word_of_int n < word_of_int m) =
(n mod 2 ^ LENGTH('a) < m mod 2 ^ LENGTH('a))
∀n m. (word_of_int n < word_of_int m) =
(n mod 2 ^ LENGTH('l) < m mod 2 ^ LENGTH('l))
∀n m. (word_of_int n < word_of_int m) =
(n mod 2 ^ LENGTH(0) < m mod 2 ^ LENGTH(0))
∀n. (n ≤ 0) = (n = 0)
∀m n. (numeral m ≤ numeral n) = (m ≤ n)
∀m n. (numeral m ≤ numeral n) = (m ≤ n)
∀m n. (int m ≤ int n) = (m ≤ n)
∀a b. (0 ≤ a - b) = (b ≤ a)
∀x. int x ∈ Collect ((≤) 0)
∀m. (of_nat m ≤ 0) = (m = 0)
∀m. (int m ≤ 0) = (m = 0)
∀x b w. (of_nat x ≤ of_nat b ^ w) = (x ≤ b ^ w)
∀x b w. (int x ≤ int b ^ w) = (x ≤ b ^ w)
∀b w x. (of_nat b ^ w ≤ of_nat x) = (b ^ w ≤ x)
∀b w x. (int b ^ w ≤ int x) = (b ^ w ≤ x)
∀k l. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (k mod l))
SMT.Symb_Nil)
SMT.Symb_Nil)
(0 ≤ k ∧ k < l ⟶ k mod l = k)
∀a. (a⇧2 ≤ 0) = (a = 0)
∀x y. 0 ≤ x ∧ 0 ≤ y ⟶ (x⇧2 = y⇧2) = (x = y)
∀x y. 0 ≤ x ∧ 0 ≤ y ⟶ (x⇧2 = y⇧2) = (x = y)
∀i n x. (numeral i ^ n ≤ of_nat x) = (numeral i ^ n ≤ x)
∀i n x. (numeral i ^ n ≤ int x) = (numeral i ^ n ≤ x)
∀x i n. (of_nat x ≤ numeral i ^ n) = (x ≤ numeral i ^ n)
∀x i n. (int x ≤ numeral i ^ n) = (x ≤ numeral i ^ n)
SMT: Names:
sorts:
Nat\$ = nat
Num\$ = num
A_word\$ = 'a word
L_word\$ = 'l word
Int_set\$ = int set
A_itself\$ = 'a itself
L_itself\$ = 'l itself
Num0_word\$ = 0 word
Int_int_fun\$ = int ⇒ int
Nat_int_fun\$ = nat ⇒ int
Nat_nat_fun\$ = nat ⇒ nat
Nat_num_fun\$ = nat ⇒ num
Num0_itself\$ = 0 itself
Num_num_fun\$ = num ⇒ num
Int_bool_fun\$ = int ⇒ bool
Nat_bool_fun\$ = nat ⇒ bool
Num_bool_fun\$ = num ⇒ bool
Nat_a_word_fun\$ = nat ⇒ 'a word
Nat_l_word_fun\$ = nat ⇒ 'l word
A_word_bool_fun\$ = 'a word ⇒ bool
A_word_a_word_fun\$ = 'a word ⇒ 'a word
L_word_l_word_fun\$ = 'l word ⇒ 'l word
Nat_num0_word_fun\$ = nat ⇒ 0 word
Nat_nat_bool_fun_fun\$ = nat ⇒ nat ⇒ bool
Num0_word_num0_word_fun\$ = 0 word ⇒ 0 word
functions:
n\$ = n
uu\$ = uu__
msb\$ = msb
one\$ = num.One
pow\$ = Num.pow
suc\$ = Suc
uua\$ = uua__
uub\$ = uu
bit0\$ = num.Bit0
less\$ = (<)
type\$ = TYPE('l)
zero\$ = 0
less\$a = (<)
less\$b = (<)
less\$c = (<)
less\$d = (<)
minus\$ = (-)
power\$ = (^)
type\$a = TYPE('a)
type\$b = TYPE(0)
zero\$a = 0
zero\$b = 0
zero\$c = 0
len_of\$ = len_of
member\$ = (∈)
minus\$a = (-)
minus\$b = (-)
minus\$c = (-)
modulo\$ = (mod)
of_nat\$ = int
power\$a = (^)
power\$b = (^)
collect\$ = Collect
fun_app\$ = SMT.fun_app
len_of\$a = len_of
len_of\$b = len_of
less_eq\$ = (≤)
numeral\$ = numeral
of_nat\$a = of_nat
of_nat\$b = of_nat
fun_app\$a = SMT.fun_app
fun_app\$b = SMT.fun_app
fun_app\$c = SMT.fun_app
fun_app\$d = SMT.fun_app
fun_app\$e = SMT.fun_app
fun_app\$f = SMT.fun_app
fun_app\$g = SMT.fun_app
fun_app\$h = SMT.fun_app
fun_app\$i = SMT.fun_app
fun_app\$j = SMT.fun_app
fun_app\$k = SMT.fun_app
fun_app\$l = SMT.fun_app
fun_app\$m = SMT.fun_app
fun_app\$n = SMT.fun_app
fun_app\$o = SMT.fun_app
less_eq\$a = (≤)
numeral\$a = numeral
numeral\$b = numeral
numeral\$c = numeral
numeral\$d = numeral
word_of_int\$ = word_of_int
word_of_int\$a = word_of_int
word_of_int\$b = word_of_int
SMT: Problem:
; smt.random_seed=1 smt.refine_inj_axioms=false -T:7 -smt2
(set-option :produce-proofs true)
(declare-sort Nat\$ 0)
(declare-sort Num\$ 0)
(declare-sort A_word\$ 0)
(declare-sort L_word\$ 0)
(declare-sort Int_set\$ 0)
(declare-sort A_itself\$ 0)
(declare-sort L_itself\$ 0)
(declare-sort Num0_word\$ 0)
(declare-sort Int_int_fun\$ 0)
(declare-sort Nat_int_fun\$ 0)
(declare-sort Nat_nat_fun\$ 0)
(declare-sort Nat_num_fun\$ 0)
(declare-sort Num0_itself\$ 0)
(declare-sort Num_num_fun\$ 0)
(declare-sort Int_bool_fun\$ 0)
(declare-sort Nat_bool_fun\$ 0)
(declare-sort Num_bool_fun\$ 0)
(declare-sort Nat_a_word_fun\$ 0)
(declare-sort Nat_l_word_fun\$ 0)
(declare-sort A_word_bool_fun\$ 0)
(declare-sort A_word_a_word_fun\$ 0)
(declare-sort L_word_l_word_fun\$ 0)
(declare-sort Nat_num0_word_fun\$ 0)
(declare-sort Nat_nat_bool_fun_fun\$ 0)
(declare-sort Num0_word_num0_word_fun\$ 0)
(declare-fun n\$ () Nat\$)
(declare-fun uu\$ (Int_set\$) Int_bool_fun\$)
(declare-fun msb\$ () A_word_bool_fun\$)
(declare-fun one\$ () Num\$)
(declare-fun pow\$ (Num\$) Num_num_fun\$)
(declare-fun suc\$ () Nat_nat_fun\$)
(declare-fun uua\$ (Int) Int_int_fun\$)
(declare-fun uub\$ () Int_bool_fun\$)
(declare-fun bit0\$ (Num\$) Num\$)
(declare-fun less\$ () Nat_nat_bool_fun_fun\$)
(declare-fun type\$ () L_itself\$)
(declare-fun zero\$ () Nat\$)
(declare-fun less\$a (Num0_word\$ Num0_word\$) Bool)
(declare-fun less\$b (L_word\$ L_word\$) Bool)
(declare-fun less\$c (A_word\$) A_word_bool_fun\$)
(declare-fun less\$d (Num\$) Num_bool_fun\$)
(declare-fun minus\$ (Nat\$) Nat_nat_fun\$)
(declare-fun power\$ (Nat\$) Nat_nat_fun\$)
(declare-fun type\$a () A_itself\$)
(declare-fun type\$b () Num0_itself\$)
(declare-fun zero\$a () L_word\$)
(declare-fun zero\$b () A_word\$)
(declare-fun zero\$c () Num0_word\$)
(declare-fun len_of\$ (L_itself\$) Nat\$)
(declare-fun member\$ (Int Int_set\$) Bool)
(declare-fun minus\$a (L_word\$) L_word_l_word_fun\$)
(declare-fun minus\$b (Num0_word\$) Num0_word_num0_word_fun\$)
(declare-fun minus\$c (A_word\$) A_word_a_word_fun\$)
(declare-fun modulo\$ (Int Int) Int)
(declare-fun of_nat\$ () Nat_int_fun\$)
(declare-fun power\$a (Int) Nat_int_fun\$)
(declare-fun power\$b (L_word\$) Nat_l_word_fun\$)
(declare-fun collect\$ (Int_bool_fun\$) Int_set\$)
(declare-fun fun_app\$ (Int_bool_fun\$ Int) Bool)
(declare-fun len_of\$a (Num0_itself\$) Nat\$)
(declare-fun len_of\$b (A_itself\$) Nat\$)
(declare-fun less_eq\$ () Nat_nat_bool_fun_fun\$)
(declare-fun numeral\$ (Num\$) Nat\$)
(declare-fun of_nat\$a () Nat_nat_fun\$)
(declare-fun of_nat\$b () Nat_l_word_fun\$)
(declare-fun fun_app\$a (Int_int_fun\$ Int) Int)
(declare-fun fun_app\$b (Nat_bool_fun\$ Nat\$) Bool)
(declare-fun fun_app\$c (Nat_nat_bool_fun_fun\$ Nat\$)
Nat_bool_fun\$)
(declare-fun fun_app\$d (Nat_nat_fun\$ Nat\$) Nat\$)
(declare-fun fun_app\$e (A_word_bool_fun\$ A_word\$) Bool)
(declare-fun fun_app\$f (Nat_int_fun\$ Nat\$) Int)
(declare-fun fun_app\$g (Nat_l_word_fun\$ Nat\$) L_word\$)
(declare-fun fun_app\$h (Nat_num0_word_fun\$ Nat\$) Num0_word\$)
(declare-fun fun_app\$i (Nat_a_word_fun\$ Nat\$) A_word\$)
(declare-fun fun_app\$j (Num_bool_fun\$ Num\$) Bool)
(declare-fun fun_app\$k (Nat_num_fun\$ Nat\$) Num\$)
(declare-fun fun_app\$l (L_word_l_word_fun\$ L_word\$) L_word\$)
(declare-fun fun_app\$m (Num0_word_num0_word_fun\$ Num0_word\$)
Num0_word\$)
(declare-fun fun_app\$n (A_word_a_word_fun\$ A_word\$) A_word\$)
(declare-fun fun_app\$o (Num_num_fun\$ Num\$) Num\$)
(declare-fun less_eq\$a (Num\$ Num\$) Bool)
(declare-fun numeral\$a (Num\$) Int)
(declare-fun numeral\$b (Num\$) L_word\$)
(declare-fun numeral\$c (Num\$) Num0_word\$)
(declare-fun numeral\$d (Num\$) A_word\$)
(declare-fun word_of_int\$ (Int) A_word\$)
(declare-fun word_of_int\$a (Int) L_word\$)
(declare-fun word_of_int\$b (Int) Num0_word\$)
(assert (! (forall ((?v0 Int)) (! (= (fun_app\$ uub\$ ?v0) (<= 0
?v0)) :pattern ((fun_app\$ uub\$ ?v0)))) :named a0))
(assert (! (forall ((?v0 Int) (?v1 Int)) (! (= (fun_app\$a (uua\$
?v0) ?v1) (- ?v0 ?v1)) :pattern ((fun_app\$a (uua\$ ?v0) ?v1)))) :named
a1))
(assert (! (forall ((?v0 Int_set\$) (?v1 Int)) (! (= (fun_app\$
(uu\$ ?v0) ?v1) (member\$ ?v1 ?v0)) :pattern ((fun_app\$ (uu\$ ?v0) ?v1))))
:named a2))
(assert (! (not false) :named a3))
(assert (! (fun_app\$b (fun_app\$c less\$ n\$) (fun_app\$d (power\$
(numeral\$ (bit0\$ one\$))) (fun_app\$d (minus\$ (len_of\$ type\$)) (fun_app\$d
suc\$ zero\$)))) :named a4))
(assert (! (fun_app\$e msb\$ (word_of_int\$ (fun_app\$f of_nat\$
n\$))) :named a5))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less\$ (fun_app\$d (power\$ (numeral\$ ?v0)) ?v1))
(fun_app\$d of_nat\$a ?v2)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d
(power\$ (numeral\$ ?v0)) ?v1)) ?v2))) :named a6))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$f (power\$a (numeral\$a ?v0)) ?v1) (fun_app\$f of_nat\$ ?v2))
(fun_app\$b (fun_app\$c less\$ (fun_app\$d (power\$ (numeral\$ ?v0)) ?v1))
?v2))) :named a7))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less\$ (fun_app\$d of_nat\$a ?v0)) (fun_app\$d
(power\$ (numeral\$ ?v1)) ?v2)) (fun_app\$b (fun_app\$c less\$ ?v0)
(fun_app\$d (power\$ (numeral\$ ?v1)) ?v2)))) :named a8))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (<
(fun_app\$f of_nat\$ ?v0) (fun_app\$f (power\$a (numeral\$a ?v1)) ?v2))
(fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d (power\$ (numeral\$ ?v1))
?v2)))) :named a9))
(assert (! (forall ((?v0 Int)) (= (< 0 (fun_app\$f (power\$a ?v0)
(numeral\$ (bit0\$ one\$)))) (not (= ?v0 0)))) :named a10))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ zero\$) (fun_app\$d (power\$ (fun_app\$d of_nat\$a ?v0))
?v1)) (or (fun_app\$b (fun_app\$c less\$ zero\$) ?v0) (= ?v1 zero\$))))
:named a11))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< 0 (fun_app\$f
(power\$a (fun_app\$f of_nat\$ ?v0)) ?v1)) (or (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= ?v1 zero\$)))) :named a12))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$d (power\$ (numeral\$ ?v0)) ?v1) (fun_app\$d of_nat\$a ?v2)) (=
(fun_app\$d (power\$ (numeral\$ ?v0)) ?v1) ?v2))) :named a13))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$f (power\$a (numeral\$a ?v0)) ?v1) (fun_app\$f of_nat\$ ?v2)) (=
(fun_app\$d (power\$ (numeral\$ ?v0)) ?v1) ?v2))) :named a14))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(fun_app\$d of_nat\$a ?v0) (fun_app\$d (power\$ (numeral\$ ?v1)) ?v2)) (=
?v0 (fun_app\$d (power\$ (numeral\$ ?v1)) ?v2)))) :named a15))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(fun_app\$f of_nat\$ ?v0) (fun_app\$f (power\$a (numeral\$a ?v1)) ?v2)) (=
?v0 (fun_app\$d (power\$ (numeral\$ ?v1)) ?v2)))) :named a16))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less\$ (fun_app\$d (power\$ (fun_app\$d of_nat\$a
?v0)) ?v1)) (fun_app\$d of_nat\$a ?v2)) (fun_app\$b (fun_app\$c less\$
(fun_app\$d (power\$ ?v0) ?v1)) ?v2))) :named a17))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$f (power\$a (fun_app\$f of_nat\$ ?v0)) ?v1) (fun_app\$f of_nat\$
?v2)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d (power\$ ?v0) ?v1)) ?v2)))
:named a18))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less\$ (fun_app\$d of_nat\$a ?v0)) (fun_app\$d
(power\$ (fun_app\$d of_nat\$a ?v1)) ?v2)) (fun_app\$b (fun_app\$c less\$
?v0) (fun_app\$d (power\$ ?v1) ?v2)))) :named a19))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$f of_nat\$ ?v0) (fun_app\$f (power\$a (fun_app\$f of_nat\$ ?v1))
?v2)) (fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d (power\$ ?v1) ?v2))))
:named a20))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$d (power\$ ?v0)
(numeral\$ (bit0\$ one\$))) zero\$) (= ?v0 zero\$))) :named a21))
(assert (! (forall ((?v0 Int)) (= (= (fun_app\$f (power\$a ?v0)
(numeral\$ (bit0\$ one\$))) 0) (= ?v0 0))) :named a22))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c less\$
zero\$) (fun_app\$d of_nat\$a ?v0)) (fun_app\$b (fun_app\$c less\$ zero\$)
?v0))) :named a23))
(assert (! (forall ((?v0 Nat\$)) (= (< 0 (fun_app\$f of_nat\$ ?v0))
(fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a24))
(assert (! (fun_app\$b (fun_app\$c less\$ zero\$) (len_of\$ type\$))
:named a25))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= (fun_app\$d suc\$ (fun_app\$d (minus\$ ?v0) (fun_app\$d suc\$
zero\$))) ?v0))) :named a26))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d suc\$
?v0) (fun_app\$d suc\$ ?v1)) (= ?v0 ?v1))) :named a27))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d suc\$
?v0) (fun_app\$d suc\$ ?v1)) (= ?v0 ?v1))) :named a28))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d
of_nat\$a ?v0) (fun_app\$d of_nat\$a ?v1)) (= ?v0 ?v1))) :named a29))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (= ?v0 ?v1))) :named a30))
(assert (! (forall ((?v0 Nat\$)) (= (not (= ?v0 zero\$))
(fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a31))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) (fun_app\$d suc\$ ?v1)) (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1))) :named a32))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$ (fun_app\$d suc\$
?v0)) (fun_app\$d suc\$ ?v1)))) :named a33))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$b (fun_app\$c less\$ ?v0)
(fun_app\$d suc\$ ?v0))) :named a34))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (minus\$ ?v0) ?v0)
zero\$)) :named a35))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (minus\$ zero\$)
?v0) zero\$)) :named a36))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$d (minus\$ (fun_app\$d (minus\$ (fun_app\$d suc\$ ?v0)) ?v1))
(fun_app\$d suc\$ ?v2)) (fun_app\$d (minus\$ (fun_app\$d (minus\$ ?v0) ?v1))
?v2))) :named a37))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d (minus\$
(fun_app\$d suc\$ ?v0)) (fun_app\$d suc\$ ?v1)) (fun_app\$d (minus\$ ?v0)
?v1))) :named a38))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$g (power\$b zero\$a)
(fun_app\$d suc\$ ?v0)) zero\$a)) :named a39))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (power\$ zero\$)
(fun_app\$d suc\$ ?v0)) zero\$)) :named a40))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$f (power\$a 0)
(fun_app\$d suc\$ ?v0)) 0)) :named a41))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$d of_nat\$a ?v0)
zero\$) (= ?v0 zero\$))) :named a42))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$f of_nat\$ ?v0) 0)
(= ?v0 zero\$))) :named a43))
(assert (! (forall ((?v0 Nat\$)) (= (= zero\$ (fun_app\$d of_nat\$a
?v0)) (= zero\$ ?v0))) :named a44))
(assert (! (forall ((?v0 Nat\$)) (= (= 0 (fun_app\$f of_nat\$ ?v0))
(= zero\$ ?v0))) :named a45))
(assert (! (= (fun_app\$g of_nat\$b zero\$) zero\$a) :named a46))
(assert (! (= (fun_app\$d of_nat\$a zero\$) zero\$) :named a47))
(assert (! (= (fun_app\$f of_nat\$ zero\$) 0) :named a48))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ (fun_app\$d of_nat\$a ?v0)) (fun_app\$d of_nat\$a ?v1))
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1))) :named a49))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (fun_app\$b (fun_app\$c less\$ ?v0)
?v1))) :named a50))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$g (power\$b zero\$a)
(numeral\$ ?v0)) zero\$a)) :named a51))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$d (power\$ zero\$)
(numeral\$ ?v0)) zero\$)) :named a52))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$f (power\$a 0)
(numeral\$ ?v0)) 0)) :named a53))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$b (fun_app\$c less\$
zero\$) (fun_app\$d suc\$ ?v0))) :named a54))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c less\$
?v0) (fun_app\$d suc\$ zero\$)) (= ?v0 zero\$))) :named a55))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$g (power\$b
?v0) (fun_app\$d suc\$ zero\$)) ?v0) :pattern ((power\$b ?v0)))) :named
a56))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$d (power\$ ?v0)
(fun_app\$d suc\$ zero\$)) ?v0) :pattern ((power\$ ?v0)))) :named a57))
(assert (! (forall ((?v0 Int)) (! (= (fun_app\$f (power\$a ?v0)
(fun_app\$d suc\$ zero\$)) ?v0) :pattern ((power\$a ?v0)))) :named a58))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ zero\$) (fun_app\$d (minus\$ ?v0) ?v1)) (fun_app\$b
(fun_app\$c less\$ ?v1) ?v0))) :named a59))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d
(power\$ ?v0) ?v1) (fun_app\$d suc\$ zero\$)) (or (= ?v1 zero\$) (= ?v0
(fun_app\$d suc\$ zero\$))))) :named a60))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$d (power\$
(fun_app\$d suc\$ zero\$)) ?v0) (fun_app\$d suc\$ zero\$)) :pattern
((fun_app\$d (power\$ (fun_app\$d suc\$ zero\$)) ?v0)))) :named a61))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ zero\$) (fun_app\$d (power\$ ?v0) ?v1)) (or (fun_app\$b
(fun_app\$c less\$ zero\$) ?v0) (= ?v1 zero\$)))) :named a62))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$d of_nat\$a ?v0) (fun_app\$d (power\$ (fun_app\$d of_nat\$a ?v1))
?v2)) (= ?v0 (fun_app\$d (power\$ ?v1) ?v2)))) :named a63))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$f of_nat\$ ?v0) (fun_app\$f (power\$a (fun_app\$f of_nat\$ ?v1))
?v2)) (= ?v0 (fun_app\$d (power\$ ?v1) ?v2)))) :named a64))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$d (power\$ (fun_app\$d of_nat\$a ?v0)) ?v1) (fun_app\$d of_nat\$a
?v2)) (= (fun_app\$d (power\$ ?v0) ?v1) ?v2))) :named a65))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$f (power\$a (fun_app\$f of_nat\$ ?v0)) ?v1) (fun_app\$f of_nat\$
?v2)) (= (fun_app\$d (power\$ ?v0) ?v1) ?v2))) :named a66))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$g
of_nat\$b (fun_app\$d (power\$ ?v0) ?v1)) (fun_app\$g (power\$b (fun_app\$g
of_nat\$b ?v0)) ?v1))) :named a67))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d
of_nat\$a (fun_app\$d (power\$ ?v0) ?v1)) (fun_app\$d (power\$ (fun_app\$d
of_nat\$a ?v0)) ?v1))) :named a68))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$f of_nat\$
(fun_app\$d (power\$ ?v0) ?v1)) (fun_app\$f (power\$a (fun_app\$f of_nat\$
?v0)) ?v1))) :named a69))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d
(power\$ ?v0) ?v1) zero\$) (and (= ?v0 zero\$) (fun_app\$b (fun_app\$c less\$
zero\$) ?v1)))) :named a70))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (= (= (fun_app\$f
(power\$a ?v0) ?v1) 0) (and (= ?v0 0) (fun_app\$b (fun_app\$c less\$ zero\$)
?v1)))) :named a71))
(assert (! (forall ((?v0 Num0_itself\$)) (! (= (len_of\$a ?v0)
zero\$) :pattern ((len_of\$a ?v0)))) :named a72))
(assert (! (forall ((?v0 Nat\$)) (=> (and (=> (= ?v0 zero\$)
false) (=> (not (= ?v0 zero\$)) false)) false)) :named a73))
(assert (! (forall ((?v0 Int) (?v1 Int_bool_fun\$)) (= (member\$
?v0 (collect\$ ?v1)) (fun_app\$ ?v1 ?v0))) :named a74))
(assert (! (forall ((?v0 Int_set\$)) (= (collect\$ (uu\$ ?v0))
?v0)) :named a75))
(assert (! (forall ((?v0 Int_bool_fun\$) (?v1 Int_bool_fun\$)) (=>
(forall ((?v2 Int)) (= (fun_app\$ ?v0 ?v2) (fun_app\$ ?v1 ?v2))) (=
(collect\$ ?v0) (collect\$ ?v1)))) :named a76))
(assert (! (forall ((?v0 Nat\$)) (not (= ?v0 (fun_app\$d suc\$
?v0)))) :named a77))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= (fun_app\$d
suc\$ ?v0) (fun_app\$d suc\$ ?v1)) (= ?v0 ?v1))) :named a78))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (not (= ?v0
?v1)) (and (=> (fun_app\$b (fun_app\$c less\$ ?v0) ?v1) false) (=>
(fun_app\$b (fun_app\$c less\$ ?v1) ?v0) false))) false)) :named a79))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (forall
((?v2 Nat\$)) (=> (not (fun_app\$b ?v0 ?v2)) (exists ((?v3 Nat\$)) (and
(fun_app\$b (fun_app\$c less\$ ?v3) ?v2) (not (fun_app\$b ?v0 ?v3))))))
(fun_app\$b ?v0 ?v1))) :named a80))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (forall
((?v2 Nat\$)) (=> (forall ((?v3 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v3) ?v2) (fun_app\$b ?v0 ?v3))) (fun_app\$b ?v0 ?v2))) (fun_app\$b ?v0
?v1))) :named a81))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v0) ?v0) false)) :named a82))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (not (= ?v0 ?v1)))) :named a83))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (not (= ?v1 ?v0)))) :named a84))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$b (fun_app\$c less\$
?v0) ?v0))) :named a85))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (not (= ?v0 ?v1))
(or (fun_app\$b (fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$
?v1) ?v0)))) :named a86))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$d (minus\$ (fun_app\$d (minus\$ ?v0) ?v1)) ?v2) (fun_app\$d
(minus\$ (fun_app\$d (minus\$ ?v0) ?v2)) ?v1))) :named a87))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (not (= ?v0
zero\$)) (not (= (fun_app\$d (power\$ ?v0) ?v1) zero\$)))) :named a88))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (=> (not (= ?v0 0))
(not (= (fun_app\$f (power\$a ?v0) ?v1) 0)))) :named a89))
(assert (! (forall ((?v0 Nat\$)) (=> (not (= ?v0 zero\$)) (exists
((?v1 Nat\$)) (= ?v0 (fun_app\$d suc\$ ?v1))))) :named a90))
(assert (! (forall ((?v0 Nat\$)) (=> (and (=> (= ?v0 zero\$)
false) (forall ((?v1 Nat\$)) (=> (= ?v0 (fun_app\$d suc\$ ?v1)) false)))
false)) :named a91))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$d suc\$
?v0)))) :named a92))
(assert (! (forall ((?v0 Nat\$)) (=> (= zero\$ (fun_app\$d suc\$
?v0)) false)) :named a93))
(assert (! (forall ((?v0 Nat\$)) (=> (= (fun_app\$d suc\$ ?v0)
zero\$) false)) :named a94))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$b ?v0 ?v1) (forall ((?v2 Nat\$)) (=> (fun_app\$b ?v0 (fun_app\$d
suc\$ ?v2)) (fun_app\$b ?v0 ?v2)))) (fun_app\$b ?v0 zero\$))) :named a95))
(assert (! (forall ((?v0 Nat_nat_bool_fun_fun\$) (?v1 Nat\$) (?v2
Nat\$)) (=> (and (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c ?v0 ?v3)
zero\$)) (and (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c ?v0 zero\$)
(fun_app\$d suc\$ ?v3))) (forall ((?v3 Nat\$) (?v4 Nat\$)) (=> (fun_app\$b
(fun_app\$c ?v0 ?v3) ?v4) (fun_app\$b (fun_app\$c ?v0 (fun_app\$d suc\$
?v3)) (fun_app\$d suc\$ ?v4)))))) (fun_app\$b (fun_app\$c ?v0 ?v1) ?v2)))
:named a96))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$b ?v0 zero\$) (forall ((?v2 Nat\$)) (=> (fun_app\$b ?v0 ?v2)
(fun_app\$b ?v0 (fun_app\$d suc\$ ?v2))))) (fun_app\$b ?v0 ?v1))) :named
a97))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= ?v0 (fun_app\$d
suc\$ ?v1)) (not (= ?v0 zero\$)))) :named a98))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$d suc\$
?v0)))) :named a99))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$d suc\$ ?v0)
zero\$))) :named a100))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$d suc\$
?v0)))) :named a101))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c less\$
?v0) zero\$) false)) :named a102))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$b ?v0 zero\$) (forall ((?v2 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ zero\$) ?v2) (not (fun_app\$b ?v0 ?v2))) (exists ((?v3
Nat\$)) (and (fun_app\$b (fun_app\$c less\$ ?v3) ?v2) (not (fun_app\$b ?v0
?v3))))))) (fun_app\$b ?v0 ?v1))) :named a103))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (not (= ?v1 zero\$)))) :named a104))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v0) zero\$) false)) :named a105))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$b (fun_app\$c less\$
?v0) zero\$))) :named a106))
(assert (! (forall ((?v0 Nat\$)) (= (not (fun_app\$b (fun_app\$c
less\$ zero\$) ?v0)) (= ?v0 zero\$))) :named a107))
(assert (! (forall ((?v0 Nat\$)) (=> (=> (= ?v0 zero\$) false)
(fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a108))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (not (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1)) (= (fun_app\$b (fun_app\$c less\$ ?v0)
(fun_app\$d suc\$ ?v1)) (= ?v0 ?v1)))) :named a109))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat_bool_fun\$))
(=> (and (fun_app\$b (fun_app\$c less\$ ?v0) ?v1) (and (forall ((?v3
Nat\$)) (=> (= ?v1 (fun_app\$d suc\$ ?v3)) (fun_app\$b ?v2 ?v3))) (forall
((?v3 Nat\$)) (=> (and (fun_app\$b (fun_app\$c less\$ ?v3) ?v1) (fun_app\$b
?v2 (fun_app\$d suc\$ ?v3))) (fun_app\$b ?v2 ?v3))))) (fun_app\$b ?v2
?v0))) :named a110))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2
Nat_nat_bool_fun_fun\$)) (=> (and (fun_app\$b (fun_app\$c less\$ ?v0) ?v1)
(and (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c ?v2 ?v3) (fun_app\$d
suc\$ ?v3))) (forall ((?v3 Nat\$) (?v4 Nat\$) (?v5 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less\$ ?v3) ?v4) (and (fun_app\$b (fun_app\$c less\$
?v4) ?v5) (and (fun_app\$b (fun_app\$c ?v2 ?v3) ?v4) (fun_app\$b
(fun_app\$c ?v2 ?v4) ?v5)))) (fun_app\$b (fun_app\$c ?v2 ?v3) ?v5)))))
(fun_app\$b (fun_app\$c ?v2 ?v0) ?v1))) :named a111))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$ ?v1)
?v2)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) ?v2))) :named
a112))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) (fun_app\$d suc\$ ?v1)) (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1))) :named a113))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (not
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1)) (fun_app\$b (fun_app\$c less\$ ?v0)
(fun_app\$d suc\$ ?v1))) (= ?v1 ?v0))) :named a114))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) ?v1) (exists ((?v2 Nat\$)) (and
(= ?v1 (fun_app\$d suc\$ ?v2)) (fun_app\$b (fun_app\$c less\$ ?v0) ?v2)))))
:named a115))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (forall
((?v2 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$ ?v2) (fun_app\$d suc\$ ?v0))
(fun_app\$b ?v1 ?v2))) (and (fun_app\$b ?v1 ?v0) (forall ((?v2 Nat\$)) (=>
(fun_app\$b (fun_app\$c less\$ ?v2) ?v0) (fun_app\$b ?v1 ?v2)))))) :named
a116))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (not (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1)) (fun_app\$b (fun_app\$c less\$ ?v1) (fun_app\$d
suc\$ ?v0)))) :named a117))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ ?v0) (fun_app\$d suc\$ ?v1)) (or (fun_app\$b (fun_app\$c
less\$ ?v0) ?v1) (= ?v0 ?v1)))) :named a118))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (exists
((?v2 Nat\$)) (and (fun_app\$b (fun_app\$c less\$ ?v2) (fun_app\$d suc\$
?v0)) (fun_app\$b ?v1 ?v2))) (or (fun_app\$b ?v1 ?v0) (exists ((?v2
Nat\$)) (and (fun_app\$b (fun_app\$c less\$ ?v2) ?v0) (fun_app\$b ?v1
?v2)))))) :named a119))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d
suc\$ ?v1)))) :named a120))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) (fun_app\$d suc\$ ?v1)) (and (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) false) (=> (= ?v0 ?v1) false))) false))
:named a121))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (not (= (fun_app\$d suc\$ ?v0) ?v1)))
(fun_app\$b (fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) ?v1))) :named a122))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) ?v1) (forall ((?v2 Nat\$)) (=>
(and (fun_app\$b (fun_app\$c less\$ ?v0) ?v2) (= ?v1 (fun_app\$d suc\$
?v2))) false))) false)) :named a123))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) ?v1) (fun_app\$b (fun_app\$c less\$
?v0) ?v1))) :named a124))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (and (=> (= ?v1 (fun_app\$d suc\$ ?v0)) false)
(forall ((?v2 Nat\$)) (=> (and (fun_app\$b (fun_app\$c less\$ ?v0) ?v2) (=
?v1 (fun_app\$d suc\$ ?v2))) false)))) false)) :named a125))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (minus\$ ?v0)
zero\$) ?v0)) :named a126))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (=
(fun_app\$d (minus\$ ?v0) ?v1) zero\$) (= (fun_app\$d (minus\$ ?v1) ?v0)
zero\$)) (= ?v0 ?v1))) :named a127))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (fun_app\$b ?v0 ?v1) (forall ((?v3 Nat\$)) (=> (fun_app\$b ?v0
(fun_app\$d suc\$ ?v3)) (fun_app\$b ?v0 ?v3)))) (fun_app\$b ?v0 (fun_app\$d
(minus\$ ?v1) ?v2)))) :named a128))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$
(fun_app\$d (minus\$ ?v0) ?v2)) ?v1))) :named a129))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$ ?v0)
?v2)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d (minus\$ ?v2) ?v1))
(fun_app\$d (minus\$ ?v2) ?v0)))) :named a130))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$ zero\$)
(fun_app\$d (power\$ ?v0) ?v1)))) :named a131))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (=> (< 0 ?v0) (< 0
(fun_app\$f (power\$a ?v0) ?v1)))) :named a132))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$b (fun_app\$c less\$
(fun_app\$d of_nat\$a ?v0)) zero\$))) :named a133))
(assert (! (forall ((?v0 Nat\$)) (not (< (fun_app\$f of_nat\$ ?v0)
0))) :named a134))
(assert (! (forall ((?v0 Nat_num0_word_fun\$) (?v1 Nat\$) (?v2
Nat\$)) (=> (forall ((?v3 Nat\$)) (less\$a (fun_app\$h ?v0 ?v3) (fun_app\$h
?v0 (fun_app\$d suc\$ ?v3)))) (= (less\$a (fun_app\$h ?v0 ?v1) (fun_app\$h
?v0 ?v2)) (fun_app\$b (fun_app\$c less\$ ?v1) ?v2)))) :named a135))
(assert (! (forall ((?v0 Nat_l_word_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (less\$b (fun_app\$g ?v0 ?v3) (fun_app\$g ?v0
(fun_app\$d suc\$ ?v3)))) (= (less\$b (fun_app\$g ?v0 ?v1) (fun_app\$g ?v0
?v2)) (fun_app\$b (fun_app\$c less\$ ?v1) ?v2)))) :named a136))
(assert (! (forall ((?v0 Nat_a_word_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (fun_app\$e (less\$c (fun_app\$i ?v0 ?v3))
(fun_app\$i ?v0 (fun_app\$d suc\$ ?v3)))) (= (fun_app\$e (less\$c (fun_app\$i
?v0 ?v1)) (fun_app\$i ?v0 ?v2)) (fun_app\$b (fun_app\$c less\$ ?v1) ?v2))))
:named a137))
(assert (! (forall ((?v0 Nat_nat_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d ?v0
?v3)) (fun_app\$d ?v0 (fun_app\$d suc\$ ?v3)))) (= (fun_app\$b (fun_app\$c
less\$ (fun_app\$d ?v0 ?v1)) (fun_app\$d ?v0 ?v2)) (fun_app\$b (fun_app\$c
less\$ ?v1) ?v2)))) :named a138))
(assert (! (forall ((?v0 Nat_num_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (fun_app\$j (less\$d (fun_app\$k ?v0 ?v3))
(fun_app\$k ?v0 (fun_app\$d suc\$ ?v3)))) (= (fun_app\$j (less\$d (fun_app\$k
?v0 ?v1)) (fun_app\$k ?v0 ?v2)) (fun_app\$b (fun_app\$c less\$ ?v1) ?v2))))
:named a139))
(assert (! (forall ((?v0 Nat_int_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (< (fun_app\$f ?v0 ?v3) (fun_app\$f ?v0
(fun_app\$d suc\$ ?v3)))) (= (< (fun_app\$f ?v0 ?v1) (fun_app\$f ?v0 ?v2))
(fun_app\$b (fun_app\$c less\$ ?v1) ?v2)))) :named a140))
(assert (! (forall ((?v0 Nat_num0_word_fun\$) (?v1 Nat\$) (?v2
Nat\$)) (=> (and (forall ((?v3 Nat\$)) (less\$a (fun_app\$h ?v0 ?v3)
(fun_app\$h ?v0 (fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c less\$ ?v1)
?v2)) (less\$a (fun_app\$h ?v0 ?v1) (fun_app\$h ?v0 ?v2)))) :named a141))
(assert (! (forall ((?v0 Nat_l_word_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (less\$b (fun_app\$g ?v0 ?v3) (fun_app\$g
?v0 (fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c less\$ ?v1) ?v2))
(less\$b (fun_app\$g ?v0 ?v1) (fun_app\$g ?v0 ?v2)))) :named a142))
(assert (! (forall ((?v0 Nat_a_word_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (fun_app\$e (less\$c (fun_app\$i ?v0 ?v3))
(fun_app\$i ?v0 (fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c less\$ ?v1)
?v2)) (fun_app\$e (less\$c (fun_app\$i ?v0 ?v1)) (fun_app\$i ?v0 ?v2))))
:named a143))
(assert (! (forall ((?v0 Nat_nat_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d
?v0 ?v3)) (fun_app\$d ?v0 (fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c
less\$ ?v1) ?v2)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d ?v0 ?v1))
(fun_app\$d ?v0 ?v2)))) :named a144))
(assert (! (forall ((?v0 Nat_num_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (fun_app\$j (less\$d (fun_app\$k ?v0 ?v3))
(fun_app\$k ?v0 (fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c less\$ ?v1)
?v2)) (fun_app\$j (less\$d (fun_app\$k ?v0 ?v1)) (fun_app\$k ?v0 ?v2))))
:named a145))
(assert (! (forall ((?v0 Nat_int_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (< (fun_app\$f ?v0 ?v3) (fun_app\$f ?v0
(fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c less\$ ?v1) ?v2)) (<
(fun_app\$f ?v0 ?v1) (fun_app\$f ?v0 ?v2)))) :named a146))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$d of_nat\$a
(fun_app\$d suc\$ ?v0)) zero\$))) :named a147))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$f of_nat\$
(fun_app\$d suc\$ ?v0)) 0))) :named a148))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ (fun_app\$d of_nat\$a ?v0)) (fun_app\$d of_nat\$a ?v1))
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1))) :named a149))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (< (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (fun_app\$b (fun_app\$c less\$ ?v0)
?v1))) :named a150))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$ (fun_app\$d
of_nat\$a ?v0)) (fun_app\$d of_nat\$a ?v1)))) :named a151))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (< (fun_app\$f of_nat\$ ?v0) (fun_app\$f
of_nat\$ ?v1)))) :named a152))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ ?v0) (fun_app\$d suc\$ ?v1)) (or (= ?v0 zero\$) (exists
((?v2 Nat\$)) (and (= ?v0 (fun_app\$d suc\$ ?v2)) (fun_app\$b (fun_app\$c
less\$ ?v2) ?v1)))))) :named a153))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (exists ((?v1 Nat\$)) (= ?v0 (fun_app\$d suc\$ ?v1))))) :named
a154))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (forall
((?v2 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$ ?v2) (fun_app\$d suc\$ ?v0))
(fun_app\$b ?v1 ?v2))) (and (fun_app\$b ?v1 zero\$) (forall ((?v2 Nat\$))
(=> (fun_app\$b (fun_app\$c less\$ ?v2) ?v0) (fun_app\$b ?v1 (fun_app\$d
suc\$ ?v2))))))) :named a155))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (exists ((?v1 Nat\$)) (= ?v0 (fun_app\$d suc\$ ?v1))))) :named
a156))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (exists
((?v2 Nat\$)) (and (fun_app\$b (fun_app\$c less\$ ?v2) (fun_app\$d suc\$
?v0)) (fun_app\$b ?v1 ?v2))) (or (fun_app\$b ?v1 zero\$) (exists ((?v2
Nat\$)) (and (fun_app\$b (fun_app\$c less\$ ?v2) ?v0) (fun_app\$b ?v1
(fun_app\$d suc\$ ?v2))))))) :named a157))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$ zero\$) ?v1))
(fun_app\$b (fun_app\$c less\$ (fun_app\$d (minus\$ ?v1) ?v0)) ?v1))) :named
a158))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (fun_app\$b (fun_app\$c
less\$ (fun_app\$d (minus\$ ?v0) ?v1)) (fun_app\$d suc\$ ?v0))) :named
a159))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (= (fun_app\$d suc\$ (fun_app\$d (minus\$ ?v1)
(fun_app\$d suc\$ ?v0))) (fun_app\$d (minus\$ ?v1) ?v0)))) :named a160))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$
(fun_app\$d (power\$ ?v0) ?v1)) (fun_app\$d (power\$ ?v0) ?v2))) (fun_app\$b
(fun_app\$c less\$ ?v1) ?v2))) :named a161))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= (fun_app\$g (power\$b zero\$a) ?v0) zero\$a))) :named a162))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= (fun_app\$d (power\$ zero\$) ?v0) zero\$))) :named a163))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= (fun_app\$f (power\$a 0) ?v0) 0))) :named a164))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$ (fun_app\$d
(minus\$ ?v0) (fun_app\$d suc\$ ?v1))) ?v0))) :named a165))
(assert (! (= (fun_app\$g (power\$b zero\$a) (numeral\$ (bit0\$
one\$))) zero\$a) :named a166))
(assert (! (= (fun_app\$d (power\$ zero\$) (numeral\$ (bit0\$ one\$)))
zero\$) :named a167))
(assert (! (= (fun_app\$f (power\$a 0) (numeral\$ (bit0\$ one\$))) 0)
:named a168))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (= (fun_app\$g
(power\$b (fun_app\$l (minus\$a ?v0) ?v1)) (numeral\$ (bit0\$ one\$)))
(fun_app\$g (power\$b (fun_app\$l (minus\$a ?v1) ?v0)) (numeral\$ (bit0\$
one\$))))) :named a169))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$f (power\$a
(- ?v0 ?v1)) (numeral\$ (bit0\$ one\$))) (fun_app\$f (power\$a (- ?v1 ?v0))
(numeral\$ (bit0\$ one\$))))) :named a170))
(assert (! (forall ((?v0 Int)) (not (< (fun_app\$f (power\$a ?v0)
(numeral\$ (bit0\$ one\$))) 0))) :named a171))
(assert (! (= (fun_app\$g of_nat\$b (fun_app\$d (power\$ (numeral\$
(bit0\$ one\$))) (len_of\$ type\$))) zero\$a) :named a172))
(assert (! (forall ((?v0 Nat\$)) (=> (and (fun_app\$b (fun_app\$c
less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d (power\$
(numeral\$ (bit0\$ one\$))) (len_of\$ type\$)))) (not (= (fun_app\$g of_nat\$b
?v0) zero\$a)))) :named a173))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$g of_nat\$b (numeral\$
?v0)) (numeral\$b ?v0))) :named a174))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$d of_nat\$a (numeral\$
?v0)) (numeral\$ ?v0))) :named a175))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$f of_nat\$ (numeral\$
?v0)) (numeral\$a ?v0))) :named a176))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (< 0 (- ?v0 ?v1)) (<
?v1 ?v0))) :named a177))
(assert (! (forall ((?v0 L_word\$)) (=> (forall ((?v1 Nat\$)) (=>
(and (= ?v0 (fun_app\$g of_nat\$b ?v1)) (fun_app\$b (fun_app\$c less\$ ?v1)
(fun_app\$d (power\$ (numeral\$ (bit0\$ one\$))) (len_of\$ type\$)))) false))
false)) :named a178))
(assert (! (forall ((?v0 L_word\$)) (exists ((?v1 Nat\$)) (and (=
?v0 (fun_app\$g of_nat\$b ?v1)) (fun_app\$b (fun_app\$c less\$ ?v1)
(fun_app\$d (power\$ (numeral\$ (bit0\$ one\$))) (len_of\$ type\$)))))) :named
a179))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v0) (numeral\$ (bit0\$ one\$))) (or (= ?v0 zero\$) (= ?v0 (fun_app\$d suc\$
zero\$))))) :named a180))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$)) (= (= (fun_app\$f
of_nat\$ ?v0) (numeral\$a ?v1)) (= ?v0 (numeral\$ ?v1)))) :named a181))
(assert (! (= (word_of_int\$ (fun_app\$f (power\$a 2) (len_of\$b
type\$a))) zero\$b) :named a182))
(assert (! (= (word_of_int\$a (fun_app\$f (power\$a 2) (len_of\$
type\$))) zero\$a) :named a183))
(assert (! (= (word_of_int\$b (fun_app\$f (power\$a 2) (len_of\$a
type\$b))) zero\$c) :named a184))
(assert (! (= (numeral\$ (bit0\$ one\$)) (fun_app\$d suc\$ (fun_app\$d
suc\$ zero\$))) :named a185))
(assert (! (forall ((?v0 Num\$)) (! (= (fun_app\$j (less\$d one\$)
(bit0\$ ?v0)) true) :pattern ((bit0\$ ?v0)))) :named a186))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (numeral\$ ?v0)
(numeral\$ ?v1)) (= ?v0 ?v1))) :named a187))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (numeral\$a ?v0)
(numeral\$a ?v1)) (= ?v0 ?v1))) :named a188))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (bit0\$ ?v0)
(bit0\$ ?v1)) (= ?v0 ?v1))) :named a189))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (bit0\$ ?v0)
(bit0\$ ?v1)) (= ?v0 ?v1))) :named a190))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (= ?v0 ?v1))) :named a191))
(assert (! (forall ((?v0 Num\$)) (= (less\$a zero\$c (numeral\$c
?v0)) (not (= zero\$c (numeral\$c ?v0))))) :named a192))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$e (less\$c zero\$b)
(numeral\$d ?v0)) (not (= zero\$b (numeral\$d ?v0))))) :named a193))
(assert (! (forall ((?v0 Num\$)) (= (less\$b zero\$a (numeral\$b
?v0)) (not (= zero\$a (numeral\$b ?v0))))) :named a194))
(assert (! (forall ((?v0 Nat\$)) (= (not (fun_app\$b (fun_app\$c
less\$ zero\$) ?v0)) (= ?v0 zero\$))) :named a195))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$l (minus\$a
?v0) ?v0) zero\$a) :pattern ((minus\$a ?v0)))) :named a196))
(assert (! (forall ((?v0 Num0_word\$)) (! (= (fun_app\$m (minus\$b
?v0) ?v0) zero\$c) :pattern ((minus\$b ?v0)))) :named a197))
(assert (! (forall ((?v0 A_word\$)) (! (= (fun_app\$n (minus\$c
?v0) ?v0) zero\$b) :pattern ((minus\$c ?v0)))) :named a198))
(assert (! (forall ((?v0 Int)) (! (= (- ?v0 ?v0) 0) :pattern
((uua\$ ?v0)))) :named a199))
(assert (! (forall ((?v0 L_word\$)) (= (fun_app\$l (minus\$a ?v0)
zero\$a) ?v0)) :named a200))
(assert (! (forall ((?v0 Num0_word\$)) (= (fun_app\$m (minus\$b
?v0) zero\$c) ?v0)) :named a201))
(assert (! (forall ((?v0 A_word\$)) (= (fun_app\$n (minus\$c ?v0)
zero\$b) ?v0)) :named a202))
(assert (! (forall ((?v0 Int)) (= (- ?v0 0) ?v0)) :named a203))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (minus\$ zero\$)
?v0) zero\$)) :named a204))
(assert (! (forall ((?v0 L_word\$)) (= (fun_app\$l (minus\$a ?v0)
zero\$a) ?v0)) :named a205))
(assert (! (forall ((?v0 Num0_word\$)) (= (fun_app\$m (minus\$b
?v0) zero\$c) ?v0)) :named a206))
(assert (! (forall ((?v0 A_word\$)) (= (fun_app\$n (minus\$c ?v0)
zero\$b) ?v0)) :named a207))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (minus\$ ?v0)
zero\$) ?v0)) :named a208))
(assert (! (forall ((?v0 Int)) (= (- ?v0 0) ?v0)) :named a209))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$l (minus\$a
?v0) ?v0) zero\$a) :pattern ((minus\$a ?v0)))) :named a210))
(assert (! (forall ((?v0 Num0_word\$)) (! (= (fun_app\$m (minus\$b
?v0) ?v0) zero\$c) :pattern ((minus\$b ?v0)))) :named a211))
(assert (! (forall ((?v0 A_word\$)) (! (= (fun_app\$n (minus\$c
?v0) ?v0) zero\$b) :pattern ((minus\$c ?v0)))) :named a212))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$d (minus\$ ?v0)
?v0) zero\$) :pattern ((minus\$ ?v0)))) :named a213))
(assert (! (forall ((?v0 Int)) (! (= (- ?v0 ?v0) 0) :pattern
((uua\$ ?v0)))) :named a214))
(assert (! (forall ((?v0 Num\$)) (= (= (bit0\$ ?v0) one\$) false))
:named a215))
(assert (! (forall ((?v0 Num\$)) (= (= one\$ (bit0\$ ?v0)) false))
:named a216))
(assert (! (forall ((?v0 Num\$)) (= (word_of_int\$b (numeral\$a
?v0)) (numeral\$c ?v0))) :named a217))
(assert (! (forall ((?v0 Num\$)) (= (word_of_int\$a (numeral\$a
?v0)) (numeral\$b ?v0))) :named a218))
(assert (! (forall ((?v0 Num\$)) (= (word_of_int\$ (numeral\$a
?v0)) (numeral\$d ?v0))) :named a219))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (! (= (fun_app\$j
(less\$d (bit0\$ ?v0)) (bit0\$ ?v1)) (fun_app\$j (less\$d ?v0) ?v1))
:pattern ((fun_app\$j (less\$d (bit0\$ ?v0)) (bit0\$ ?v1))))) :named a220))
(assert (! (forall ((?v0 Num\$)) (! (= (fun_app\$j (less\$d ?v0)
one\$) false) :pattern ((less\$d ?v0)))) :named a221))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (fun_app\$b
(fun_app\$c less\$ (numeral\$ ?v0)) (numeral\$ ?v1)) (fun_app\$j (less\$d
?v0) ?v1))) :named a222))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (< (numeral\$a ?v0)
(numeral\$a ?v1)) (fun_app\$j (less\$d ?v0) ?v1))) :named a223))
(assert (! (forall ((?v0 Num0_word\$)) (not (less\$a ?v0 zero\$c)))
:named a224))
(assert (! (forall ((?v0 L_word\$)) (not (less\$b ?v0 zero\$a)))
:named a225))
(assert (! (forall ((?v0 A_word\$)) (not (fun_app\$e (less\$c ?v0)
zero\$b))) :named a226))
(assert (! (forall ((?v0 Num0_word\$)) (= (less\$a zero\$c ?v0)
(not (= zero\$c ?v0)))) :named a227))
(assert (! (forall ((?v0 L_word\$)) (= (less\$b zero\$a ?v0) (not
(= zero\$a ?v0)))) :named a228))
(assert (! (forall ((?v0 A_word\$)) (= (fun_app\$e (less\$c zero\$b)
?v0) (not (= zero\$b ?v0)))) :named a229))
(assert (! (forall ((?v0 L_word\$)) (= (not (= ?v0 zero\$a))
(less\$b zero\$a ?v0))) :named a230))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$m (minus\$b
(word_of_int\$b ?v0)) (word_of_int\$b ?v1)) (word_of_int\$b (- ?v0 ?v1))))
:named a231))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$l (minus\$a
(word_of_int\$a ?v0)) (word_of_int\$a ?v1)) (word_of_int\$a (- ?v0 ?v1))))
:named a232))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$n (minus\$c
(word_of_int\$ ?v0)) (word_of_int\$ ?v1)) (word_of_int\$ (- ?v0 ?v1))))
:named a233))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$m (minus\$b
(word_of_int\$b ?v0)) (word_of_int\$b ?v1)) (word_of_int\$b (- ?v0 ?v1))))
:named a234))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$l (minus\$a
(word_of_int\$a ?v0)) (word_of_int\$a ?v1)) (word_of_int\$a (- ?v0 ?v1))))
:named a235))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$n (minus\$c
(word_of_int\$ ?v0)) (word_of_int\$ ?v1)) (word_of_int\$ (- ?v0 ?v1))))
:named a236))
(assert (! (forall ((?v0 Int)) (=> (forall ((?v1 Nat\$) (?v2
Nat\$)) (=> (= ?v0 (- (fun_app\$f of_nat\$ ?v1) (fun_app\$f of_nat\$ ?v2)))
false)) false)) :named a237))
(assert (! (forall ((?v0 L_word\$)) (= (= zero\$a ?v0) (= ?v0
zero\$a))) :named a238))
(assert (! (forall ((?v0 Num0_word\$)) (= (= zero\$c ?v0) (= ?v0
zero\$c))) :named a239))
(assert (! (forall ((?v0 A_word\$)) (= (= zero\$b ?v0) (= ?v0
zero\$b))) :named a240))
(assert (! (forall ((?v0 Nat\$)) (= (= zero\$ ?v0) (= ?v0 zero\$)))
:named a241))
(assert (! (forall ((?v0 Int)) (= (= 0 ?v0) (= ?v0 0))) :named
a242))
(assert (! (forall ((?v0 A_word\$) (?v1 A_word\$) (?v2 A_word\$)
(?v3 A_word\$)) (=> (= (fun_app\$n (minus\$c ?v0) ?v1) (fun_app\$n (minus\$c
?v2) ?v3)) (= (= ?v0 ?v1) (= ?v2 ?v3)))) :named a243))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int)) (=>
(= (- ?v0 ?v1) (- ?v2 ?v3)) (= (= ?v0 ?v1) (= ?v2 ?v3)))) :named a244))
(assert (! (forall ((?v0 A_word\$) (?v1 A_word\$) (?v2 A_word\$))
(= (fun_app\$n (minus\$c (fun_app\$n (minus\$c ?v0) ?v1)) ?v2) (fun_app\$n
(minus\$c (fun_app\$n (minus\$c ?v0) ?v2)) ?v1))) :named a245))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$d (minus\$ (fun_app\$d (minus\$ ?v0) ?v1)) ?v2) (fun_app\$d
(minus\$ (fun_app\$d (minus\$ ?v0) ?v2)) ?v1))) :named a246))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (= (- (- ?v0
?v1) ?v2) (- (- ?v0 ?v2) ?v1))) :named a247))
(assert (! (= (= one\$ one\$) true) :named a248))
(assert (! (= zero\$a (fun_app\$g of_nat\$b zero\$)) :named a249))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$) (?v3 Nat\$))
(=> false (= (fun_app\$d (power\$ ?v0) ?v1) (fun_app\$d (power\$ ?v2)
?v3)))) :named a250))
(assert (! (forall ((?v0 Int) (?v1 Nat\$) (?v2 Int) (?v3 Nat\$))
(=> false (= (fun_app\$f (power\$a ?v0) ?v1) (fun_app\$f (power\$a ?v2)
?v3)))) :named a251))
(assert (! (forall ((?v0 A_word\$)) (exists ((?v1 Int)) (= ?v0
(word_of_int\$ ?v1)))) :named a252))
(assert (! (forall ((?v0 A_word_bool_fun\$) (?v1 A_word\$)) (=>
(forall ((?v2 Int)) (fun_app\$e ?v0 (word_of_int\$ ?v2))) (fun_app\$e ?v0
?v1))) :named a253))
(assert (! (= zero\$b (word_of_int\$ 0)) :named a254))
(assert (! (forall ((?v0 Num\$)) (! (= (numeral\$d ?v0)
(word_of_int\$ (numeral\$a ?v0))) :pattern ((numeral\$d ?v0)))) :named
a255))
(assert (! (= zero\$b (word_of_int\$ 0)) :named a256))
(assert (! (not (fun_app\$b (fun_app\$c less\$ zero\$) zero\$))
:named a257))
(assert (! (not (< 0 0)) :named a258))
(assert (! (forall ((?v0 Nat\$)) (=> (=> (= ?v0 zero\$) false)
(fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a259))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$b (fun_app\$c less\$
?v0) zero\$))) :named a260))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (not (= ?v1 zero\$)))) :named a261))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (not (= ?v0 zero\$)))) :named a262))
(assert (! (forall ((?v0 Num\$)) (not (= zero\$ (numeral\$ ?v0))))
:named a263))
(assert (! (forall ((?v0 Num\$)) (not (= 0 (numeral\$a ?v0))))
:named a264))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (= ?v0 ?v1) (= (-
?v0 ?v1) 0))) :named a265))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int)) (=>
(and (< ?v0 ?v1) (< ?v2 ?v3)) (< (- ?v0 ?v3) (- ?v1 ?v2)))) :named
a266))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int)) (=>
(= (- ?v0 ?v1) (- ?v2 ?v3)) (= (< ?v0 ?v1) (< ?v2 ?v3)))) :named a267))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (=> (< ?v0
?v1) (< (- ?v2 ?v1) (- ?v2 ?v0)))) :named a268))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (=> (< ?v0
?v1) (< (- ?v0 ?v2) (- ?v1 ?v2)))) :named a269))
(assert (! (forall ((?v0 Num\$)) (not (= one\$ (bit0\$ ?v0))))
:named a270))
(assert (! (forall ((?v0 Num\$)) (fun_app\$b (fun_app\$c less\$
zero\$) (numeral\$ ?v0))) :named a271))
(assert (! (forall ((?v0 Num\$)) (< 0 (numeral\$a ?v0))) :named
a272))
(assert (! (forall ((?v0 Num\$)) (not (fun_app\$b (fun_app\$c less\$
(numeral\$ ?v0)) zero\$))) :named a273))
(assert (! (forall ((?v0 Num\$)) (not (< (numeral\$a ?v0) 0)))
:named a274))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (< ?v0 ?v1) (< (-
?v0 ?v1) 0))) :named a275))
(assert (! (not (= (len_of\$ type\$) zero\$)) :named a276))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (=> (= (len_of\$
type\$) zero\$) (= ?v0 ?v1))) :named a277))
(assert (! (forall ((?v0 Num0_word\$) (?v1 Num0_word\$)) (=> (=
(len_of\$a type\$b) zero\$) (= ?v0 ?v1))) :named a278))
(assert (! (forall ((?v0 Int)) (=> (and (< 0 ?v0) (forall ((?v1
Nat\$)) (=> (and (= ?v0 (fun_app\$f of_nat\$ ?v1)) (fun_app\$b (fun_app\$c
less\$ zero\$) ?v1)) false))) false)) :named a279))
(assert (! (forall ((?v0 Int)) (=> (< 0 ?v0) (exists ((?v1
Nat\$)) (and (fun_app\$b (fun_app\$c less\$ zero\$) ?v1) (= ?v0 (fun_app\$f
of_nat\$ ?v1)))))) :named a280))
(assert (! (forall ((?v0 Nat\$)) (=> (not (= (fun_app\$d of_nat\$a
?v0) zero\$)) (fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a281))
(assert (! (forall ((?v0 Nat\$)) (=> (not (= (fun_app\$f of_nat\$
?v0) 0)) (fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a282))
(assert (! (= (fun_app\$g (power\$b (numeral\$b (bit0\$ one\$)))
(len_of\$ type\$)) zero\$a) :named a283))
(assert (! (= (numeral\$ one\$) (fun_app\$d suc\$ zero\$)) :named
a284))
(assert (! (forall ((?v0 Nat\$)) (< 0 (fun_app\$f (power\$a 2)
?v0))) :named a285))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (fun_app\$d (power\$
(numeral\$ ?v0)) (numeral\$ ?v1)) (numeral\$ (fun_app\$o (pow\$ ?v0) ?v1))))
:named a286))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (fun_app\$f
(power\$a (numeral\$a ?v0)) (numeral\$ ?v1)) (numeral\$a (fun_app\$o (pow\$
?v0) ?v1)))) :named a287))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$f of_nat\$ (numeral\$
?v0)) (numeral\$a ?v0))) :named a288))
(assert (! (< 0 2) :named a289))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (= ?v0 ?v1))) :named a290))
(assert (! (= (< 0 0) false) :named a291))
(assert (! (forall ((?v0 Int)) (= (- ?v0 0) ?v0)) :named a292))
(assert (! (forall ((?v0 Num\$)) (! (= (fun_app\$o (pow\$ ?v0)
one\$) ?v0) :pattern ((pow\$ ?v0)))) :named a293))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat_bool_fun\$))
(= (exists ((?v3 Nat\$)) (and (= ?v0 (fun_app\$d suc\$ ?v3)) (or (= ?v3
?v1) (fun_app\$b ?v2 ?v3)))) (or (= ?v0 (fun_app\$d suc\$ ?v1)) (exists
((?v3 Nat\$)) (and (= ?v0 (fun_app\$d suc\$ ?v3)) (fun_app\$b ?v2 ?v3))))))
:named a294))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (= ?v0 ?v1))) :named a295))
(assert (! (forall ((?v0 Bool) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$f of_nat\$ (ite ?v0 ?v1 ?v2)) (ite ?v0 (fun_app\$f of_nat\$ ?v1)
(fun_app\$f of_nat\$ ?v2)))) :named a296))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= ?v0 ?v1) (=
(fun_app\$f of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)))) :named a297))
(assert (! (forall ((?v0 Nat\$)) (or (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= zero\$ ?v0))) :named a298))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d
(minus\$ ?v0) ?v1) ?v0) (or (= ?v1 zero\$) (= ?v0 zero\$)))) :named a299))
(assert (! (= (fun_app\$f of_nat\$ zero\$) 0) :named a300))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (< (fun_app\$f of_nat\$ ?v0) (fun_app\$f
of_nat\$ ?v1)))) :named a301))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$f of_nat\$
(fun_app\$d (minus\$ ?v0) ?v1)) (ite (< (fun_app\$f of_nat\$ ?v0)
(fun_app\$f of_nat\$ ?v1)) 0 (- (fun_app\$f of_nat\$ ?v0) (fun_app\$f
of_nat\$ ?v1))))) :named a302))
(assert (! (forall ((?v0 Int) (?v1 Int)) (=> (and (and (<= 0
?v0) (< ?v0 (fun_app\$f (power\$a 2) (len_of\$b type\$a)))) (and (<= 0 ?v1)
(< ?v1 (fun_app\$f (power\$a 2) (len_of\$b type\$a))))) (= (= (word_of_int\$
?v0) (word_of_int\$ ?v1)) (= ?v0 ?v1)))) :named a303))
(assert (! (forall ((?v0 Int) (?v1 Int)) (=> (and (and (<= 0
?v0) (< ?v0 (fun_app\$f (power\$a 2) (len_of\$ type\$)))) (and (<= 0 ?v1)
(< ?v1 (fun_app\$f (power\$a 2) (len_of\$ type\$))))) (= (= (word_of_int\$a
?v0) (word_of_int\$a ?v1)) (= ?v0 ?v1)))) :named a304))
(assert (! (forall ((?v0 Int) (?v1 Int)) (=> (and (and (<= 0
?v0) (< ?v0 (fun_app\$f (power\$a 2) (len_of\$a type\$b)))) (and (<= 0 ?v1)
(< ?v1 (fun_app\$f (power\$a 2) (len_of\$a type\$b))))) (= (=
(word_of_int\$b ?v0) (word_of_int\$b ?v1)) (= ?v0 ?v1)))) :named a305))
(assert (! (forall ((?v0 A_word\$)) (=> (forall ((?v1 Int)) (=>
(and (= ?v0 (word_of_int\$ ?v1)) (and (<= 0 ?v1) (< ?v1 (fun_app\$f
(power\$a 2) (len_of\$b type\$a))))) false)) false)) :named a306))
(assert (! (forall ((?v0 L_word\$)) (=> (forall ((?v1 Int)) (=>
(and (= ?v0 (word_of_int\$a ?v1)) (and (<= 0 ?v1) (< ?v1 (fun_app\$f
(power\$a 2) (len_of\$ type\$))))) false)) false)) :named a307))
(assert (! (forall ((?v0 Num0_word\$)) (=> (forall ((?v1 Int))
(=> (and (= ?v0 (word_of_int\$b ?v1)) (and (<= 0 ?v1) (< ?v1 (fun_app\$f
(power\$a 2) (len_of\$a type\$b))))) false)) false)) :named a308))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$e (less\$c
(word_of_int\$ ?v0)) (word_of_int\$ ?v1)) (< (modulo\$ ?v0 (fun_app\$f
(power\$a 2) (len_of\$b type\$a))) (modulo\$ ?v1 (fun_app\$f (power\$a 2)
(len_of\$b type\$a)))))) :named a309))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (less\$b
(word_of_int\$a ?v0) (word_of_int\$a ?v1)) (< (modulo\$ ?v0 (fun_app\$f
(power\$a 2) (len_of\$ type\$))) (modulo\$ ?v1 (fun_app\$f (power\$a 2)
(len_of\$ type\$)))))) :named a310))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (less\$a
(word_of_int\$b ?v0) (word_of_int\$b ?v1)) (< (modulo\$ ?v0 (fun_app\$f
(power\$a 2) (len_of\$a type\$b))) (modulo\$ ?v1 (fun_app\$f (power\$a 2)
(len_of\$a type\$b)))))) :named a311))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c
less_eq\$ ?v0) zero\$) (= ?v0 zero\$))) :named a312))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (fun_app\$b
(fun_app\$c less_eq\$ (numeral\$ ?v0)) (numeral\$ ?v1)) (less_eq\$a ?v0
?v1))) :named a313))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (<= (numeral\$a
?v0) (numeral\$a ?v1)) (less_eq\$a ?v0 ?v1))) :named a314))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (<= (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (fun_app\$b (fun_app\$c less_eq\$
?v0) ?v1))) :named a315))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (<= 0 (- ?v0 ?v1))
(<= ?v1 ?v0))) :named a316))
(assert (! (forall ((?v0 Nat\$)) (member\$ (fun_app\$f of_nat\$ ?v0)
(collect\$ uub\$))) :named a317))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c
less_eq\$ (fun_app\$d of_nat\$a ?v0)) zero\$) (= ?v0 zero\$))) :named a318))
(assert (! (forall ((?v0 Nat\$)) (= (<= (fun_app\$f of_nat\$ ?v0)
0) (= ?v0 zero\$))) :named a319))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d of_nat\$a ?v0)) (fun_app\$d
(power\$ (fun_app\$d of_nat\$a ?v1)) ?v2)) (fun_app\$b (fun_app\$c less_eq\$
?v0) (fun_app\$d (power\$ ?v1) ?v2)))) :named a320))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<=
(fun_app\$f of_nat\$ ?v0) (fun_app\$f (power\$a (fun_app\$f of_nat\$ ?v1))
?v2)) (fun_app\$b (fun_app\$c less_eq\$ ?v0) (fun_app\$d (power\$ ?v1)
?v2)))) :named a321))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d (power\$ (fun_app\$d of_nat\$a
?v0)) ?v1)) (fun_app\$d of_nat\$a ?v2)) (fun_app\$b (fun_app\$c less_eq\$
(fun_app\$d (power\$ ?v0) ?v1)) ?v2))) :named a322))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<=
(fun_app\$f (power\$a (fun_app\$f of_nat\$ ?v0)) ?v1) (fun_app\$f of_nat\$
?v2)) (fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d (power\$ ?v0) ?v1))
?v2))) :named a323))
(assert (! (forall ((?v0 Int) (?v1 Int)) (! (=> (and (<= 0 ?v0)
(< ?v0 ?v1)) (= (modulo\$ ?v0 ?v1) ?v0)) :pattern ((modulo\$ ?v0 ?v1))))
:named a324))
(assert (! (forall ((?v0 Int)) (= (<= (fun_app\$f (power\$a ?v0)
(numeral\$ (bit0\$ one\$))) 0) (= ?v0 0))) :named a325))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less_eq\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less_eq\$ zero\$)
?v1)) (= (= (fun_app\$d (power\$ ?v0) (numeral\$ (bit0\$ one\$))) (fun_app\$d
(power\$ ?v1) (numeral\$ (bit0\$ one\$)))) (= ?v0 ?v1)))) :named a326))
(assert (! (forall ((?v0 Int) (?v1 Int)) (=> (and (<= 0 ?v0) (<=
0 ?v1)) (= (= (fun_app\$f (power\$a ?v0) (numeral\$ (bit0\$ one\$)))
(fun_app\$f (power\$a ?v1) (numeral\$ (bit0\$ one\$)))) (= ?v0 ?v1))))
:named a327))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d (power\$ (numeral\$ ?v0)) ?v1))
(fun_app\$d of_nat\$a ?v2)) (fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d
(power\$ (numeral\$ ?v0)) ?v1)) ?v2))) :named a328))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<=
(fun_app\$f (power\$a (numeral\$a ?v0)) ?v1) (fun_app\$f of_nat\$ ?v2))
(fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d (power\$ (numeral\$ ?v0)) ?v1))
?v2))) :named a329))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less_eq\$ (fun_app\$d of_nat\$a ?v0)) (fun_app\$d
(power\$ (numeral\$ ?v1)) ?v2)) (fun_app\$b (fun_app\$c less_eq\$ ?v0)
(fun_app\$d (power\$ (numeral\$ ?v1)) ?v2)))) :named a330))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (<=
(fun_app\$f of_nat\$ ?v0) (fun_app\$f (power\$a (numeral\$a ?v1)) ?v2))
(fun_app\$b (fun_app\$c less_eq\$ ?v0) (fun_app\$d (power\$ (numeral\$ ?v1))
?v2)))) :named a331))
(check-sat)
(get-proof)

SMT: Invoking SMT solver "z3" ...
SMT: Assertions:
¬ False  [¬ False]
n < 2 ^ (LENGTH('l) - Suc 0)
msb (word_of_int (int n))
∀i n x. (numeral i ^ n < of_nat x) = (numeral i ^ n < x)
∀i n x. (numeral i ^ n < int x) = (numeral i ^ n < x)
∀x i n. (of_nat x < numeral i ^ n) = (x < numeral i ^ n)
∀x i n. (int x < numeral i ^ n) = (x < numeral i ^ n)
∀a. (0 < a⇧2) = (a ≠ 0)
∀x n. (0 < of_nat x ^ n) = (0 < x ∨ n = 0)
∀x n. (0 < int x ^ n) = (0 < x ∨ n = 0)
∀x n y. (numeral x ^ n = of_nat y) = (numeral x ^ n = y)
∀x n y. (numeral x ^ n = int y) = (numeral x ^ n = y)
∀y x n. (of_nat y = numeral x ^ n) = (y = numeral x ^ n)
∀y x n. (int y = numeral x ^ n) = (y = numeral x ^ n)
∀b w x. (of_nat b ^ w < of_nat x) = (b ^ w < x)
∀b w x. (int b ^ w < int x) = (b ^ w < x)
∀x b w. (of_nat x < of_nat b ^ w) = (x < b ^ w)
∀x b w. (int x < int b ^ w) = (x < b ^ w)
∀a. (a⇧2 = 0) = (a = 0)
∀a. (a⇧2 = 0) = (a = 0)
∀n. (0 < of_nat n) = (0 < n)
∀n. (0 < int n) = (0 < n)
0 < LENGTH('l)
∀n>0. Suc (n - Suc 0) = n
∀nat nat'. (Suc nat = Suc nat') = (nat = nat')
∀x2 y2. (Suc x2 = Suc y2) = (x2 = y2)
∀m n. (of_nat m = of_nat n) = (m = n)
∀m n. (int m = int n) = (m = n)
∀n. (n ≠ 0) = (0 < n)
∀m n. (Suc m < Suc n) = (m < n)
∀m n. m < n ⟶ Suc m < Suc n
∀n. n < Suc n
∀m. m - m = 0
∀n. 0 - n = 0
∀m n k. Suc m - n - Suc k = m - n - k
∀m n. Suc m - Suc n = m - n
∀n. 0 ^ Suc n = 0
∀n. 0 ^ Suc n = 0
∀n. 0 ^ Suc n = 0
∀m. (of_nat m = 0) = (m = 0)
∀m. (int m = 0) = (m = 0)
∀n. (0 = of_nat n) = (0 = n)
∀n. (0 = int n) = (0 = n)
of_nat 0 = 0
of_nat 0 = 0
int 0 = 0
∀m n. (of_nat m < of_nat n) = (m < n)
∀m n. (int m < int n) = (m < n)
∀k. 0 ^ numeral k = 0
∀k. 0 ^ numeral k = 0
∀k. 0 ^ numeral k = 0
∀n. 0 < Suc n
∀n. (n < Suc 0) = (n = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀n m. (0 < n - m) = (m < n)
∀x m. (x ^ m = Suc 0) = (m = 0 ∨ x = Suc 0)
∀n. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (Suc 0 ^ n))
SMT.Symb_Nil)
SMT.Symb_Nil)
(Suc 0 ^ n = Suc 0)
∀x n. (0 < x ^ n) = (0 < x ∨ n = 0)
∀x b w. (of_nat x = of_nat b ^ w) = (x = b ^ w)
∀x b w. (int x = int b ^ w) = (x = b ^ w)
∀b w x. (of_nat b ^ w = of_nat x) = (b ^ w = x)
∀b w x. (int b ^ w = int x) = (b ^ w = x)
∀m n. of_nat (m ^ n) = of_nat m ^ n
∀m n. of_nat (m ^ n) = of_nat m ^ n
∀m n. int (m ^ n) = int m ^ n
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
∀uu. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (len_of uu))
SMT.Symb_Nil)
SMT.Symb_Nil)
(len_of uu = 0)
∀nat. (nat = 0 ⟶ False) ∧ (nat ≠ 0 ⟶ False) ⟶ False
∀n. n ≠ Suc n
∀x y. Suc x = Suc y ⟶ x = y
∀x y. x ≠ y ∧ (x < y ⟶ False) ∧ (y < x ⟶ False) ⟶ False
∀P n. (∀n. ¬ P n ⟶ (∃m<n. ¬ P m)) ⟶ P n
∀P n. (∀n. (∀m<n. P m) ⟶ P n) ⟶ P n
∀n. n < n ⟶ False
∀s t. s < t ⟶ s ≠ t
∀n m. n < m ⟶ m ≠ n
∀n. ¬ n < n
∀m n. (m ≠ n) = (m < n ∨ n < m)
∀i j k. i - j - k = i - k - j
∀a n. a ≠ 0 ⟶ a ^ n ≠ 0
∀a n. a ≠ 0 ⟶ a ^ n ≠ 0
∀n. n ≠ 0 ⟶ (∃m. n = Suc m)
∀y. (y = 0 ⟶ False) ∧ (∀nat. y = Suc nat ⟶ False) ⟶ False
∀m. 0 ≠ Suc m
∀m. 0 = Suc m ⟶ False
∀m. Suc m = 0 ⟶ False
∀P k. P k ∧ (∀n. P (Suc n) ⟶ P n) ⟶ P 0
∀P m n.
(∀x. P x 0) ∧ (∀y. P 0 (Suc y)) ∧ (∀x y. P x y ⟶ P (Suc x)
(Suc y)) ⟶
P m n
∀P n. P 0 ∧ (∀n. P n ⟶ P (Suc n)) ⟶ P n
∀nat x2. nat = Suc x2 ⟶ nat ≠ 0
∀nat'. 0 ≠ Suc nat'
∀nat'. Suc nat' ≠ 0
∀x2. 0 ≠ Suc x2
∀n. (n < 0) = False
∀P n. P 0 ∧ (∀n. 0 < n ∧ ¬ P n ⟶ (∃m<n. ¬ P m)) ⟶ P n
∀m n. m < n ⟶ n ≠ 0
∀n<0. False
∀n. ¬ n < 0
∀n. (¬ 0 < n) = (n = 0)
∀n. (n = 0 ⟶ False) ⟶ 0 < n
∀n m. ¬ n < m ⟶ (n < Suc m) = (n = m)
∀i j P.
i < j ∧ (∀i. j = Suc i ⟶ P i) ∧ (∀i. i < j ∧ P (Suc i) ⟶ P i)
⟶ P i
∀i j P.
i < j ∧
(∀i. P i (Suc i)) ∧
(∀i j k. i < j ∧ j < k ∧ P i j ∧ P j k ⟶ P i k) ⟶
P i j
∀i j k. i < j ∧ j < k ⟶ Suc i < k
∀m n. Suc m < Suc n ⟶ m < n
∀n m. ¬ n < m ∧ n < Suc m ⟶ m = n
∀n m. (Suc n < m) = (∃m'. m = Suc m' ∧ n < m')
∀n P. (∀i<Suc n. P i) = (P n ∧ (∀i<n. P i))
∀m n. (¬ m < n) = (n < Suc m)
∀m n. (m < Suc n) = (m < n ∨ m = n)
∀n P. (∃i<Suc n. P i) = (P n ∨ (∃i<n. P i))
∀m n. m < n ⟶ m < Suc n
∀m n. m < Suc n ∧ (m < n ⟶ False) ∧ (m = n ⟶ False) ⟶ False
∀m n. m < n ∧ Suc m ≠ n ⟶ Suc m < n
∀i k. Suc i < k ∧ (∀j. i < j ∧ k = Suc j ⟶ False) ⟶ False
∀m n. Suc m < n ⟶ m < n
∀i k. i < k ∧ (k = Suc i ⟶ False) ∧ (∀j. i < j ∧ k = Suc j ⟶
False) ⟶
False
∀m. m - 0 = m
∀m n. m - n = 0 ∧ n - m = 0 ⟶ m = n
∀P k i. P k ∧ (∀n. P (Suc n) ⟶ P n) ⟶ P (k - i)
∀j k n. j < k ⟶ j - n < k
∀m n l. m < n ∧ m < l ⟶ l - n < l - m
∀a n. 0 < a ⟶ 0 < a ^ n
∀a n. 0 < a ⟶ 0 < a ^ n
∀m. ¬ of_nat m < 0
∀m. ¬ int m < 0
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀n. of_nat (Suc n) ≠ 0
∀n. int (Suc n) ≠ 0
∀m n. of_nat m < of_nat n ⟶ m < n
∀m n. int m < int n ⟶ m < n
∀m n. m < n ⟶ of_nat m < of_nat n
∀m n. m < n ⟶ int m < int n
∀m n. (m < Suc n) = (m = 0 ∨ (∃j. m = Suc j ∧ j < n))
∀n>0. ∃m. n = Suc m
∀n P. (∀i<Suc n. P i) = (P 0 ∧ (∀i<n. P (Suc i)))
∀n. (0 < n) = (∃m. n = Suc m)
∀n P. (∃i<Suc n. P i) = (P 0 ∨ (∃i<n. P (Suc i)))
∀n m. 0 < n ∧ 0 < m ⟶ m - n < m
∀m n. m - n < Suc m
∀n m. n < m ⟶ Suc (m - Suc n) = m - n
∀i m n. 0 < i ∧ i ^ m < i ^ n ⟶ m < n
∀n>0. 0 ^ n = 0
∀n>0. 0 ^ n = 0
∀n>0. 0 ^ n = 0
∀n i. 0 < n ⟶ n - Suc i < n
0⇧2 = 0
0⇧2 = 0
0⇧2 = 0
∀x y. (x - y)⇧2 = (y - x)⇧2
∀x y. (x - y)⇧2 = (y - x)⇧2
∀a. ¬ a⇧2 < 0
of_nat (2 ^ LENGTH('l)) = 0
∀k. 0 < k ∧ k < 2 ^ LENGTH('l) ⟶ of_nat k ≠ 0
∀n. of_nat (numeral n) = numeral n
∀n. of_nat (numeral n) = numeral n
∀n. int (numeral n) = numeral n
∀a b. (0 < a - b) = (b < a)
∀x. (∀n. x = of_nat n ∧ n < 2 ^ LENGTH('l) ⟶ False) ⟶ False
∀w. ∃n. w = of_nat n ∧ n < 2 ^ LENGTH('l)
∀n<2. n = 0 ∨ n = Suc 0
∀m v. (int m = numeral v) = (m = numeral v)
word_of_int (2 ^ LENGTH('a)) = 0
word_of_int (2 ^ LENGTH('l)) = 0
word_of_int (2 ^ LENGTH(0)) = 0
2 = Suc (Suc 0)
∀n. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (num.Bit0 n))
SMT.Symb_Nil)
SMT.Symb_Nil)
((num.One < num.Bit0 n) = True)
∀m n. (numeral m = numeral n) = (m = n)
∀m n. (numeral m = numeral n) = (m = n)
∀x2 y2. (num.Bit0 x2 = num.Bit0 y2) = (x2 = y2)
∀m n. (num.Bit0 m = num.Bit0 n) = (m = n)
∀m n. (int m = int n) = (m = n)
∀y. (0 < numeral y) = (0 ≠ numeral y)
∀y. (0 < numeral y) = (0 ≠ numeral y)
∀y. (0 < numeral y) = (0 ≠ numeral y)
∀n. (¬ 0 < n) = (n = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀a. 0 - a = 0
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a - a = 0)
∀m. (num.Bit0 m = num.One) = False
∀n. (num.One = num.Bit0 n) = False
∀bin. word_of_int (numeral bin) = numeral bin
∀bin. word_of_int (numeral bin) = numeral bin
∀bin. word_of_int (numeral bin) = numeral bin
∀m n. SMT.trigger
(SMT.Symb_Cons
(SMT.Symb_Cons (SMT.pat (num.Bit0 m < num.Bit0 n))
SMT.Symb_Nil)
SMT.Symb_Nil)
((num.Bit0 m < num.Bit0 n) = (m < n))
∀m. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((<) m))
SMT.Symb_Nil)
SMT.Symb_Nil)
((m < num.One) = False)
∀m n. (numeral m < numeral n) = (m < n)
∀m n. (numeral m < numeral n) = (m < n)
∀x. ¬ x < 0
∀x. ¬ x < 0
∀x. ¬ x < 0
∀y. (0 < y) = (0 ≠ y)
∀y. (0 < y) = (0 ≠ y)
∀y. (0 < y) = (0 ≠ y)
SMT: Names:
sorts:
Nat\$ = nat
Num\$ = num
A_word\$ = 'a word
L_word\$ = 'l word
A_itself\$ = 'a itself
L_itself\$ = 'l itself
Num0_word\$ = 0 word
Int_int_fun\$ = int ⇒ int
Nat_int_fun\$ = nat ⇒ int
Nat_nat_fun\$ = nat ⇒ nat
Nat_num_fun\$ = nat ⇒ num
Num0_itself\$ = 0 itself
Nat_bool_fun\$ = nat ⇒ bool
Num_bool_fun\$ = num ⇒ bool
Nat_a_word_fun\$ = nat ⇒ 'a word
Nat_l_word_fun\$ = nat ⇒ 'l word
A_word_a_word_fun\$ = 'a word ⇒ 'a word
L_word_l_word_fun\$ = 'l word ⇒ 'l word
Nat_num0_word_fun\$ = nat ⇒ 0 word
Nat_nat_bool_fun_fun\$ = nat ⇒ nat ⇒ bool
Num0_word_num0_word_fun\$ = 0 word ⇒ 0 word
functions:
n\$ = n
uu\$ = uu
msb\$ = msb
one\$ = num.One
suc\$ = Suc
bit0\$ = num.Bit0
less\$ = (<)
type\$ = TYPE('l)
zero\$ = 0
less\$a = (<)
less\$b = (<)
less\$c = (<)
less\$d = (<)
minus\$ = (-)
power\$ = (^)
type\$a = TYPE('a)
type\$b = TYPE(0)
zero\$a = 0
zero\$b = 0
zero\$c = 0
len_of\$ = len_of
minus\$a = (-)
minus\$b = (-)
minus\$c = (-)
of_nat\$ = int
power\$a = (^)
power\$b = (^)
fun_app\$ = SMT.fun_app
len_of\$a = len_of
len_of\$b = len_of
numeral\$ = numeral
of_nat\$a = of_nat
of_nat\$b = of_nat
fun_app\$a = SMT.fun_app
fun_app\$b = SMT.fun_app
fun_app\$c = SMT.fun_app
fun_app\$d = SMT.fun_app
fun_app\$e = SMT.fun_app
fun_app\$f = SMT.fun_app
fun_app\$g = SMT.fun_app
fun_app\$h = SMT.fun_app
fun_app\$i = SMT.fun_app
fun_app\$j = SMT.fun_app
fun_app\$k = SMT.fun_app
fun_app\$l = SMT.fun_app
numeral\$a = numeral
numeral\$b = numeral
numeral\$c = numeral
numeral\$d = numeral
word_of_int\$ = word_of_int
word_of_int\$a = word_of_int
word_of_int\$b = word_of_int
SMT: Problem:
; smt.random_seed=1 smt.refine_inj_axioms=false -T:5 -smt2
(set-option :produce-proofs true)
(declare-sort Nat\$ 0)
(declare-sort Num\$ 0)
(declare-sort A_word\$ 0)
(declare-sort L_word\$ 0)
(declare-sort A_itself\$ 0)
(declare-sort L_itself\$ 0)
(declare-sort Num0_word\$ 0)
(declare-sort Int_int_fun\$ 0)
(declare-sort Nat_int_fun\$ 0)
(declare-sort Nat_nat_fun\$ 0)
(declare-sort Nat_num_fun\$ 0)
(declare-sort Num0_itself\$ 0)
(declare-sort Nat_bool_fun\$ 0)
(declare-sort Num_bool_fun\$ 0)
(declare-sort Nat_a_word_fun\$ 0)
(declare-sort Nat_l_word_fun\$ 0)
(declare-sort A_word_a_word_fun\$ 0)
(declare-sort L_word_l_word_fun\$ 0)
(declare-sort Nat_num0_word_fun\$ 0)
(declare-sort Nat_nat_bool_fun_fun\$ 0)
(declare-sort Num0_word_num0_word_fun\$ 0)
(declare-fun n\$ () Nat\$)
(declare-fun uu\$ (Int) Int_int_fun\$)
(declare-fun msb\$ (A_word\$) Bool)
(declare-fun one\$ () Num\$)
(declare-fun suc\$ () Nat_nat_fun\$)
(declare-fun bit0\$ (Num\$) Num\$)
(declare-fun less\$ () Nat_nat_bool_fun_fun\$)
(declare-fun type\$ () L_itself\$)
(declare-fun zero\$ () Nat\$)
(declare-fun less\$a (A_word\$ A_word\$) Bool)
(declare-fun less\$b (Num0_word\$ Num0_word\$) Bool)
(declare-fun less\$c (L_word\$ L_word\$) Bool)
(declare-fun less\$d (Num\$) Num_bool_fun\$)
(declare-fun minus\$ (Nat\$) Nat_nat_fun\$)
(declare-fun power\$ (Nat\$) Nat_nat_fun\$)
(declare-fun type\$a () A_itself\$)
(declare-fun type\$b () Num0_itself\$)
(declare-fun zero\$a () L_word\$)
(declare-fun zero\$b () A_word\$)
(declare-fun zero\$c () Num0_word\$)
(declare-fun len_of\$ (L_itself\$) Nat\$)
(declare-fun minus\$a (L_word\$) L_word_l_word_fun\$)
(declare-fun minus\$b (Num0_word\$) Num0_word_num0_word_fun\$)
(declare-fun minus\$c (A_word\$) A_word_a_word_fun\$)
(declare-fun of_nat\$ () Nat_int_fun\$)
(declare-fun power\$a (Int) Nat_int_fun\$)
(declare-fun power\$b (L_word\$) Nat_l_word_fun\$)
(declare-fun fun_app\$ (Int_int_fun\$ Int) Int)
(declare-fun len_of\$a (Num0_itself\$) Nat\$)
(declare-fun len_of\$b (A_itself\$) Nat\$)
(declare-fun numeral\$ (Num\$) Nat\$)
(declare-fun of_nat\$a () Nat_nat_fun\$)
(declare-fun of_nat\$b () Nat_l_word_fun\$)
(declare-fun fun_app\$a (Nat_bool_fun\$ Nat\$) Bool)
(declare-fun fun_app\$b (Nat_nat_bool_fun_fun\$ Nat\$)
Nat_bool_fun\$)
(declare-fun fun_app\$c (Nat_nat_fun\$ Nat\$) Nat\$)
(declare-fun fun_app\$d (Nat_int_fun\$ Nat\$) Int)
(declare-fun fun_app\$e (Nat_l_word_fun\$ Nat\$) L_word\$)
(declare-fun fun_app\$f (Nat_a_word_fun\$ Nat\$) A_word\$)
(declare-fun fun_app\$g (Nat_num0_word_fun\$ Nat\$) Num0_word\$)
(declare-fun fun_app\$h (Num_bool_fun\$ Num\$) Bool)
(declare-fun fun_app\$i (Nat_num_fun\$ Nat\$) Num\$)
(declare-fun fun_app\$j (L_word_l_word_fun\$ L_word\$) L_word\$)
(declare-fun fun_app\$k (Num0_word_num0_word_fun\$ Num0_word\$)
Num0_word\$)
(declare-fun fun_app\$l (A_word_a_word_fun\$ A_word\$) A_word\$)
(declare-fun numeral\$a (Num\$) Int)
(declare-fun numeral\$b (Num\$) L_word\$)
(declare-fun numeral\$c (Num\$) Num0_word\$)
(declare-fun numeral\$d (Num\$) A_word\$)
(declare-fun word_of_int\$ (Int) A_word\$)
(declare-fun word_of_int\$a (Int) L_word\$)
(declare-fun word_of_int\$b (Int) Num0_word\$)
(assert (! (forall ((?v0 Int) (?v1 Int)) (! (= (fun_app\$ (uu\$
?v0) ?v1) (- ?v0 ?v1)) :pattern ((fun_app\$ (uu\$ ?v0) ?v1)))) :named
a0))
(assert (! (not false) :named a1))
(assert (! (fun_app\$a (fun_app\$b less\$ n\$) (fun_app\$c (power\$
(numeral\$ (bit0\$ one\$))) (fun_app\$c (minus\$ (len_of\$ type\$)) (fun_app\$c
suc\$ zero\$)))) :named a2))
(assert (! (msb\$ (word_of_int\$ (fun_app\$d of_nat\$ n\$))) :named
a3))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$a (fun_app\$b less\$ (fun_app\$c (power\$ (numeral\$ ?v0)) ?v1))
(fun_app\$c of_nat\$a ?v2)) (fun_app\$a (fun_app\$b less\$ (fun_app\$c
(power\$ (numeral\$ ?v0)) ?v1)) ?v2))) :named a4))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$d (power\$a (numeral\$a ?v0)) ?v1) (fun_app\$d of_nat\$ ?v2))
(fun_app\$a (fun_app\$b less\$ (fun_app\$c (power\$ (numeral\$ ?v0)) ?v1))
?v2))) :named a5))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (=
(fun_app\$a (fun_app\$b less\$ (fun_app\$c of_nat\$a ?v0)) (fun_app\$c
(power\$ (numeral\$ ?v1)) ?v2)) (fun_app\$a (fun_app\$b less\$ ?v0)
(fun_app\$c (power\$ (numeral\$ ?v1)) ?v2)))) :named a6))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (<
(fun_app\$d of_nat\$ ?v0) (fun_app\$d (power\$a (numeral\$a ?v1)) ?v2))
(fun_app\$a (fun_app\$b less\$ ?v0) (fun_app\$c (power\$ (numeral\$ ?v1))
?v2)))) :named a7))
(assert (! (forall ((?v0 Int)) (= (< 0 (fun_app\$d (power\$a ?v0)
(numeral\$ (bit0\$ one\$)))) (not (= ?v0 0)))) :named a8))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$a
(fun_app\$b less\$ zero\$) (fun_app\$c (power\$ (fun_app\$c of_nat\$a ?v0))
?v1)) (or (fun_app\$a (fun_app\$b less\$ zero\$) ?v0) (= ?v1 zero\$))))
:named a9))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< 0 (fun_app\$d
(power\$a (fun_app\$d of_nat\$ ?v0)) ?v1)) (or (fun_app\$a (fun_app\$b less\$
zero\$) ?v0) (= ?v1 zero\$)))) :named a10))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$c (power\$ (numeral\$ ?v0)) ?v1) (fun_app\$c of_nat\$a ?v2)) (=
(fun_app\$c (power\$ (numeral\$ ?v0)) ?v1) ?v2))) :named a11))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$d (power\$a (numeral\$a ?v0)) ?v1) (fun_app\$d of_nat\$ ?v2)) (=
(fun_app\$c (power\$ (numeral\$ ?v0)) ?v1) ?v2))) :named a12))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(fun_app\$c of_nat\$a ?v0) (fun_app\$c (power\$ (numeral\$ ?v1)) ?v2)) (=
?v0 (fun_app\$c (power\$ (numeral\$ ?v1)) ?v2)))) :named a13))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(fun_app\$d of_nat\$ ?v0) (fun_app\$d (power\$a (numeral\$a ?v1)) ?v2)) (=
?v0 (fun_app\$c (power\$ (numeral\$ ?v1)) ?v2)))) :named a14))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$a (fun_app\$b less\$ (fun_app\$c (power\$ (fun_app\$c of_nat\$a
?v0)) ?v1)) (fun_app\$c of_nat\$a ?v2)) (fun_app\$a (fun_app\$b less\$
(fun_app\$c (power\$ ?v0) ?v1)) ?v2))) :named a15))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$d (power\$a (fun_app\$d of_nat\$ ?v0)) ?v1) (fun_app\$d of_nat\$
?v2)) (fun_app\$a (fun_app\$b less\$ (fun_app\$c (power\$ ?v0) ?v1)) ?v2)))
:named a16))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$a (fun_app\$b less\$ (fun_app\$c of_nat\$a ?v0)) (fun_app\$c
(power\$ (fun_app\$c of_nat\$a ?v1)) ?v2)) (fun_app\$a (fun_app\$b less\$
?v0) (fun_app\$c (power\$ ?v1) ?v2)))) :named a17))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$d of_nat\$ ?v0) (fun_app\$d (power\$a (fun_app\$d of_nat\$ ?v1))
?v2)) (fun_app\$a (fun_app\$b less\$ ?v0) (fun_app\$c (power\$ ?v1) ?v2))))
:named a18))
(assert (! (forall ((?v0 Int)) (= (= (fun_app\$d (power\$a ?v0)
(numeral\$ (bit0\$ one\$))) 0) (= ?v0 0))) :named a19))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$c (power\$ ?v0)
(numeral\$ (bit0\$ one\$))) zero\$) (= ?v0 zero\$))) :named a20))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$a (fun_app\$b less\$
zero\$) (fun_app\$c of_nat\$a ?v0)) (fun_app\$a (fun_app\$b less\$ zero\$)
?v0))) :named a21))
(assert (! (forall ((?v0 Nat\$)) (= (< 0 (fun_app\$d of_nat\$ ?v0))
(fun_app\$a (fun_app\$b less\$ zero\$) ?v0))) :named a22))
(assert (! (fun_app\$a (fun_app\$b less\$ zero\$) (len_of\$ type\$))
:named a23))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$a (fun_app\$b less\$
zero\$) ?v0) (= (fun_app\$c suc\$ (fun_app\$c (minus\$ ?v0) (fun_app\$c suc\$
zero\$))) ?v0))) :named a24))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$c suc\$
?v0) (fun_app\$c suc\$ ?v1)) (= ?v0 ?v1))) :named a25))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$c suc\$
?v0) (fun_app\$c suc\$ ?v1)) (= ?v0 ?v1))) :named a26))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$c
of_nat\$a ?v0) (fun_app\$c of_nat\$a ?v1)) (= ?v0 ?v1))) :named a27))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d
of_nat\$ ?v0) (fun_app\$d of_nat\$ ?v1)) (= ?v0 ?v1))) :named a28))
(assert (! (forall ((?v0 Nat\$)) (= (not (= ?v0 zero\$))
(fun_app\$a (fun_app\$b less\$ zero\$) ?v0))) :named a29))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$a
(fun_app\$b less\$ (fun_app\$c suc\$ ?v0)) (fun_app\$c suc\$ ?v1)) (fun_app\$a
(fun_app\$b less\$ ?v0) ?v1))) :named a30))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$a
(fun_app\$b less\$ ?v0) ?v1) (fun_app\$a (fun_app\$b less\$ (fun_app\$c suc\$
?v0)) (fun_app\$c suc\$ ?v1)))) :named a31))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$a (fun_app\$b less\$ ?v0)
(fun_app\$c suc\$ ?v0))) :named a32))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$c (minus\$ ?v0) ?v0)
zero\$)) :named a33))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$c (minus\$ zero\$)
?v0) zero\$)) :named a34))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$c (minus\$ (fun_app\$c (minus\$ (fun_app\$c suc\$ ?v0)) ?v1))
(fun_app\$c suc\$ ?v2)) (fun_app\$c (minus\$ (fun_app\$c (minus\$ ?v0) ?v1))
?v2))) :named a35))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$c (minus\$
(fun_app\$c suc\$ ?v0)) (fun_app\$c suc\$ ?v1)) (fun_app\$c (minus\$ ?v0)
?v1))) :named a36))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$e (power\$b zero\$a)
(fun_app\$c suc\$ ?v0)) zero\$a)) :named a37))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (power\$a 0)
(fun_app\$c suc\$ ?v0)) 0)) :named a38))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$c (power\$ zero\$)
(fun_app\$c suc\$ ?v0)) zero\$)) :named a39))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$c of_nat\$a ?v0)
zero\$) (= ?v0 zero\$))) :named a40))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$d of_nat\$ ?v0) 0)
(= ?v0 zero\$))) :named a41))
(assert (! (forall ((?v0 Nat\$)) (= (= zero\$ (fun_app\$c of_nat\$a
?v0)) (= zero\$ ?v0))) :named a42))
(assert (! (forall ((?v0 Nat\$)) (= (= 0 (fun_app\$d of_nat\$ ?v0))
(= zero\$ ?v0))) :named a43))
(assert (! (= (fun_app\$e of_nat\$b zero\$) zero\$a) :named a44))
(assert (! (= (fun_app\$c of_nat\$a zero\$) zero\$) :named a45))
(assert (! (= (fun_app\$d of_nat\$ zero\$) 0) :named a46))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$a
(fun_app\$b less\$ (fun_app\$c of_nat\$a ?v0)) (fun_app\$c of_nat\$a ?v1))
(fun_app\$a (fun_app\$b less\$ ?v0) ?v1))) :named a47))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< (fun_app\$d
of_nat\$ ?v0) (fun_app\$d of_nat\$ ?v1)) (fun_app\$a (fun_app\$b less\$ ?v0)
?v1))) :named a48))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$e (power\$b zero\$a)
(numeral\$ ?v0)) zero\$a)) :named a49))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$d (power\$a 0)
(numeral\$ ?v0)) 0)) :named a50))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$c (power\$ zero\$)
(numeral\$ ?v0)) zero\$)) :named a51))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$a (fun_app\$b less\$
zero\$) (fun_app\$c suc\$ ?v0))) :named a52))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$a (fun_app\$b less\$
?v0) (fun_app\$c suc\$ zero\$)) (= ?v0 zero\$))) :named a53))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$e (power\$b
?v0) (fun_app\$c suc\$ zero\$)) ?v0) :pattern ((power\$b ?v0)))) :named
a54))
(assert (! (forall ((?v0 Int)) (! (= (fun_app\$d (power\$a ?v0)
(fun_app\$c suc\$ zero\$)) ?v0) :pattern ((power\$a ?v0)))) :named a55))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$c (power\$ ?v0)
(fun_app\$c suc\$ zero\$)) ?v0) :pattern ((power\$ ?v0)))) :named a56))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$a
(fun_app\$b less\$ zero\$) (fun_app\$c (minus\$ ?v0) ?v1)) (fun_app\$a
(fun_app\$b less\$ ?v1) ?v0))) :named a57))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$c
(power\$ ?v0) ?v1) (fun_app\$c suc\$ zero\$)) (or (= ?v1 zero\$) (= ?v0
(fun_app\$c suc\$ zero\$))))) :named a58))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$c (power\$
(fun_app\$c suc\$ zero\$)) ?v0) (fun_app\$c suc\$ zero\$)) :pattern
((fun_app\$c (power\$ (fun_app\$c suc\$ zero\$)) ?v0)))) :named a59))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$a
(fun_app\$b less\$ zero\$) (fun_app\$c (power\$ ?v0) ?v1)) (or (fun_app\$a
(fun_app\$b less\$ zero\$) ?v0) (= ?v1 zero\$)))) :named a60))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$c of_nat\$a ?v0) (fun_app\$c (power\$ (fun_app\$c of_nat\$a ?v1))
?v2)) (= ?v0 (fun_app\$c (power\$ ?v1) ?v2)))) :named a61))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$d of_nat\$ ?v0) (fun_app\$d (power\$a (fun_app\$d of_nat\$ ?v1))
?v2)) (= ?v0 (fun_app\$c (power\$ ?v1) ?v2)))) :named a62))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$c (power\$ (fun_app\$c of_nat\$a ?v0)) ?v1) (fun_app\$c of_nat\$a
?v2)) (= (fun_app\$c (power\$ ?v0) ?v1) ?v2))) :named a63))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$d (power\$a (fun_app\$d of_nat\$ ?v0)) ?v1) (fun_app\$d of_nat\$
?v2)) (= (fun_app\$c (power\$ ?v0) ?v1) ?v2))) :named a64))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$e
of_nat\$b (fun_app\$c (power\$ ?v0) ?v1)) (fun_app\$e (power\$b (fun_app\$e
of_nat\$b ?v0)) ?v1))) :named a65))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$c
of_nat\$a (fun_app\$c (power\$ ?v0) ?v1)) (fun_app\$c (power\$ (fun_app\$c
of_nat\$a ?v0)) ?v1))) :named a66))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d of_nat\$
(fun_app\$c (power\$ ?v0) ?v1)) (fun_app\$d (power\$a (fun_app\$d of_nat\$
?v0)) ?v1))) :named a67))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (= (= (fun_app\$d
(power\$a ?v0) ?v1) 0) (and (= ?v0 0) (fun_app\$a (fun_app\$b less\$ zero\$)
?v1)))) :named a68))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$c
(power\$ ?v0) ?v1) zero\$) (and (= ?v0 zero\$) (fun_app\$a (fun_app\$b less\$
zero\$) ?v1)))) :named a69))
(assert (! (forall ((?v0 Num0_itself\$)) (! (= (len_of\$a ?v0)
zero\$) :pattern ((len_of\$a ?v0)))) :named a70))
(assert (! (forall ((?v0 Nat\$)) (=> (and (=> (= ?v0 zero\$)
false) (=> (not (= ?v0 zero\$)) false)) false)) :named a71))
(assert (! (forall ((?v0 Nat\$)) (not (= ?v0 (fun_app\$c suc\$
?v0)))) :named a72))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= (fun_app\$c
suc\$ ?v0) (fun_app\$c suc\$ ?v1)) (= ?v0 ?v1))) :named a73))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (not (= ?v0
?v1)) (and (=> (fun_app\$a (fun_app\$b less\$ ?v0) ?v1) false) (=>
(fun_app\$a (fun_app\$b less\$ ?v1) ?v0) false))) false)) :named a74))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (forall
((?v2 Nat\$)) (=> (not (fun_app\$a ?v0 ?v2)) (exists ((?v3 Nat\$)) (and
(fun_app\$a (fun_app\$b less\$ ?v3) ?v2) (not (fun_app\$a ?v0 ?v3))))))
(fun_app\$a ?v0 ?v1))) :named a75))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (forall
((?v2 Nat\$)) (=> (forall ((?v3 Nat\$)) (=> (fun_app\$a (fun_app\$b less\$
?v3) ?v2) (fun_app\$a ?v0 ?v3))) (fun_app\$a ?v0 ?v2))) (fun_app\$a ?v0
?v1))) :named a76))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$a (fun_app\$b less\$
?v0) ?v0) false)) :named a77))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$a
(fun_app\$b less\$ ?v0) ?v1) (not (= ?v0 ?v1)))) :named a78))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$a
(fun_app\$b less\$ ?v0) ?v1) (not (= ?v1 ?v0)))) :named a79))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$a (fun_app\$b less\$
?v0) ?v0))) :named a80))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (not (= ?v0 ?v1))
(or (fun_app\$a (fun_app\$b less\$ ?v0) ?v1) (fun_app\$a (fun_app\$b less\$
?v1) ?v0)))) :named a81))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$c (minus\$ (fun_app\$c (minus\$ ?v0) ?v1)) ?v2) (fun_app\$c
(minus\$ (fun_app\$c (minus\$ ?v0) ?v2)) ?v1))) :named a82))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (=> (not (= ?v0 0))
(not (= (fun_app\$d (power\$a ?v0) ?v1) 0)))) :named a83))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (not (= ?v0
zero\$)) (not (= (fun_app\$c (power\$ ?v0) ?v1) zero\$)))) :named a84))
(assert (! (forall ((?v0 Nat\$)) (=> (not (= ?v0 zero\$)) (exists
((?v1 Nat\$)) (= ?v0 (fun_app\$c suc\$ ?v1))))) :named a85))
(assert (! (forall ((?v0 Nat\$)) (=> (and (=> (= ?v0 zero\$)
false) (forall ((?v1 Nat\$)) (=> (= ?v0 (fun_app\$c suc\$ ?v1)) false)))
false)) :named a86))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$c suc\$
?v0)))) :named a87))
(assert (! (forall ((?v0 Nat\$)) (=> (= zero\$ (fun_app\$c suc\$
?v0)) false)) :named a88))
(assert (! (forall ((?v0 Nat\$)) (=> (= (fun_app\$c suc\$ ?v0)
zero\$) false)) :named a89))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$a ?v0 ?v1) (forall ((?v2 Nat\$)) (=> (fun_app\$a ?v0 (fun_app\$c
suc\$ ?v2)) (fun_app\$a ?v0 ?v2)))) (fun_app\$a ?v0 zero\$))) :named a90))
(assert (! (forall ((?v0 Nat_nat_bool_fun_fun\$) (?v1 Nat\$) (?v2
Nat\$)) (=> (and (forall ((?v3 Nat\$)) (fun_app\$a (fun_app\$b ?v0 ?v3)
zero\$)) (and (forall ((?v3 Nat\$)) (fun_app\$a (fun_app\$b ?v0 zero\$)
(fun_app\$c suc\$ ?v3))) (forall ((?v3 Nat\$) (?v4 Nat\$)) (=> (fun_app\$a
(fun_app\$b ?v0 ?v3) ?v4) (fun_app\$a (fun_app\$b ?v0 (fun_app\$c suc\$
?v3)) (fun_app\$c suc\$ ?v4)))))) (fun_app\$a (fun_app\$b ?v0 ?v1) ?v2)))
:named a91))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$a ?v0 zero\$) (forall ((?v2 Nat\$)) (=> (fun_app\$a ?v0 ?v2)
(fun_app\$a ?v0 (fun_app\$c suc\$ ?v2))))) (fun_app\$a ?v0 ?v1))) :named
a92))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= ?v0 (fun_app\$c
suc\$ ?v1)) (not (= ?v0 zero\$)))) :named a93))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$c suc\$
?v0)))) :named a94))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$c suc\$ ?v0)
zero\$))) :named a95))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$c suc\$
?v0)))) :named a96))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$a (fun_app\$b less\$
?v0) zero\$) false)) :named a97))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$a ?v0 zero\$) (forall ((?v2 Nat\$)) (=> (and (fun_app\$a
(fun_app\$b less\$ zero\$) ?v2) (not (fun_app\$a ?v0 ?v2))) (exists ((?v3
Nat\$)) (and (fun_app\$a (fun_app\$b less\$ ?v3) ?v2) (not (fun_app\$a ?v0
?v3))))))) (fun_app\$a ?v0 ?v1))) :named a98))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$a
(fun_app\$b less\$ ?v0) ?v1) (not (= ?v1 zero\$)))) :named a99))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$a (fun_app\$b less\$
?v0) zero\$) false)) :named a100))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$a (fun_app\$b less\$
?v0) zero\$))) :named a101))
(assert (! (forall ((?v0 Nat\$)) (= (not (fun_app\$a (fun_app\$b
less\$ zero\$) ?v0)) (= ?v0 zero\$))) :named a102))
(assert (! (forall ((?v0 Nat\$)) (=> (=> (= ?v0 zero\$) false)
(fun_app\$a (fun_app\$b less\$ zero\$) ?v0))) :named a103))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (not (fun_app\$a
(fun_app\$b less\$ ?v0) ?v1)) (= (fun_app\$a (fun_app\$b less\$ ?v0)
(fun_app\$c suc\$ ?v1)) (= ?v0 ?v1)))) :named a104))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat_bool_fun\$))
(=> (and (fun_app\$a (fun_app\$b less\$ ?v0) ?v1) (and (forall ((?v3
Nat\$)) (=> (= ?v1 (fun_app\$c suc\$ ?v3)) (fun_app\$a ?v2 ?v3))) (forall
((?v3 Nat\$)) (=> (and (fun_app\$a (fun_app\$b less\$ ?v3) ?v1) (fun_app\$a
?v2 (fun_app\$c suc\$ ?v3))) (fun_app\$a ?v2 ?v3))))) (fun_app\$a ?v2
?v0))) :named a105))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2
Nat_nat_bool_fun_fun\$)) (=> (and (fun_app\$a (fun_app\$b less\$ ?v0) ?v1)
(and (forall ((?v3 Nat\$)) (fun_app\$a (fun_app\$b ?v2 ?v3) (fun_app\$c
suc\$ ?v3))) (forall ((?v3 Nat\$) (?v4 Nat\$) (?v5 Nat\$)) (=> (and
(fun_app\$a (fun_app\$b less\$ ?v3) ?v4) (and (fun_app\$a (fun_app\$b less\$
?v4) ?v5) (and (fun_app\$a (fun_app\$b ?v2 ?v3) ?v4) (fun_app\$a
(fun_app\$b ?v2 ?v4) ?v5)))) (fun_app\$a (fun_app\$b ?v2 ?v3) ?v5)))))
(fun_app\$a (fun_app\$b ?v2 ?v0) ?v1))) :named a106))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$a (fun_app\$b less\$ ?v0) ?v1) (fun_app\$a (fun_app\$b less\$ ?v1)
?v2)) (fun_app\$a (fun_app\$b less\$ (fun_app\$c suc\$ ?v0)) ?v2))) :named
a107))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$a
(fun_app\$b less\$ (fun_app\$c suc\$ ?v0)) (fun_app\$c suc\$ ?v1)) (fun_app\$a
(fun_app\$b less\$ ?v0) ?v1))) :named a108))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (not
(fun_app\$a (fun_app\$b less\$ ?v0) ?v1)) (fun_app\$a (fun_app\$b less\$ ?v0)
(fun_app\$c suc\$ ?v1))) (= ?v1 ?v0))) :named a109))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$a
(fun_app\$b less\$ (fun_app\$c suc\$ ?v0)) ?v1) (exists ((?v2 Nat\$)) (and
(= ?v1 (fun_app\$c suc\$ ?v2)) (fun_app\$a (fun_app\$b less\$ ?v0) ?v2)))))
:named a110))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (forall
((?v2 Nat\$)) (=> (fun_app\$a (fun_app\$b less\$ ?v2) (fun_app\$c suc\$ ?v0))
(fun_app\$a ?v1 ?v2))) (and (fun_app\$a ?v1 ?v0) (forall ((?v2 Nat\$)) (=>
(fun_app\$a (fun_app\$b less\$ ?v2) ?v0) (fun_app\$a ?v1 ?v2)))))) :named
a111))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (not (fun_app\$a
(fun_app\$b less\$ ?v0) ?v1)) (fun_app\$a (fun_app\$b less\$ ?v1) (fun_app\$c
suc\$ ?v0)))) :named a112))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$a
(fun_app\$b less\$ ?v0) (fun_app\$c suc\$ ?v1)) (or (fun_app\$a (fun_app\$b
less\$ ?v0) ?v1) (= ?v0 ?v1)))) :named a113))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (exists
((?v2 Nat\$)) (and (fun_app\$a (fun_app\$b less\$ ?v2) (fun_app\$c suc\$
?v0)) (fun_app\$a ?v1 ?v2))) (or (fun_app\$a ?v1 ?v0) (exists ((?v2
Nat\$)) (and (fun_app\$a (fun_app\$b less\$ ?v2) ?v0) (fun_app\$a ?v1
?v2)))))) :named a114))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$a
(fun_app\$b less\$ ?v0) ?v1) (fun_app\$a (fun_app\$b less\$ ?v0) (fun_app\$c
suc\$ ?v1)))) :named a115))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$a
(fun_app\$b less\$ ?v0) (fun_app\$c suc\$ ?v1)) (and (=> (fun_app\$a
(fun_app\$b less\$ ?v0) ?v1) false) (=> (= ?v0 ?v1) false))) false))
:named a116))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$a
(fun_app\$b less\$ ?v0) ?v1) (not (= (fun_app\$c suc\$ ?v0) ?v1)))
(fun_app\$a (fun_app\$b less\$ (fun_app\$c suc\$ ?v0)) ?v1))) :named a117))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$a
(fun_app\$b less\$ (fun_app\$c suc\$ ?v0)) ?v1) (forall ((?v2 Nat\$)) (=>
(and (fun_app\$a (fun_app\$b less\$ ?v0) ?v2) (= ?v1 (fun_app\$c suc\$
?v2))) false))) false)) :named a118))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$a
(fun_app\$b less\$ (fun_app\$c suc\$ ?v0)) ?v1) (fun_app\$a (fun_app\$b less\$
?v0) ?v1))) :named a119))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$a
(fun_app\$b less\$ ?v0) ?v1) (and (=> (= ?v1 (fun_app\$c suc\$ ?v0)) false)
(forall ((?v2 Nat\$)) (=> (and (fun_app\$a (fun_app\$b less\$ ?v0) ?v2) (=
?v1 (fun_app\$c suc\$ ?v2))) false)))) false)) :named a120))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$c (minus\$ ?v0)
zero\$) ?v0)) :named a121))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (=
(fun_app\$c (minus\$ ?v0) ?v1) zero\$) (= (fun_app\$c (minus\$ ?v1) ?v0)
zero\$)) (= ?v0 ?v1))) :named a122))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (fun_app\$a ?v0 ?v1) (forall ((?v3 Nat\$)) (=> (fun_app\$a ?v0
(fun_app\$c suc\$ ?v3)) (fun_app\$a ?v0 ?v3)))) (fun_app\$a ?v0 (fun_app\$c
(minus\$ ?v1) ?v2)))) :named a123))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(fun_app\$a (fun_app\$b less\$ ?v0) ?v1) (fun_app\$a (fun_app\$b less\$
(fun_app\$c (minus\$ ?v0) ?v2)) ?v1))) :named a124))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$a (fun_app\$b less\$ ?v0) ?v1) (fun_app\$a (fun_app\$b less\$ ?v0)
?v2)) (fun_app\$a (fun_app\$b less\$ (fun_app\$c (minus\$ ?v2) ?v1))
(fun_app\$c (minus\$ ?v2) ?v0)))) :named a125))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (=> (< 0 ?v0) (< 0
(fun_app\$d (power\$a ?v0) ?v1)))) :named a126))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$a
(fun_app\$b less\$ zero\$) ?v0) (fun_app\$a (fun_app\$b less\$ zero\$)
(fun_app\$c (power\$ ?v0) ?v1)))) :named a127))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$a (fun_app\$b less\$
(fun_app\$c of_nat\$a ?v0)) zero\$))) :named a128))
(assert (! (forall ((?v0 Nat\$)) (not (< (fun_app\$d of_nat\$ ?v0)
0))) :named a129))
(assert (! (forall ((?v0 Nat_a_word_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (less\$a (fun_app\$f ?v0 ?v3) (fun_app\$f ?v0
(fun_app\$c suc\$ ?v3)))) (= (less\$a (fun_app\$f ?v0 ?v1) (fun_app\$f ?v0
?v2)) (fun_app\$a (fun_app\$b less\$ ?v1) ?v2)))) :named a130))
(assert (! (forall ((?v0 Nat_num0_word_fun\$) (?v1 Nat\$) (?v2
Nat\$)) (=> (forall ((?v3 Nat\$)) (less\$b (fun_app\$g ?v0 ?v3) (fun_app\$g
?v0 (fun_app\$c suc\$ ?v3)))) (= (less\$b (fun_app\$g ?v0 ?v1) (fun_app\$g
?v0 ?v2)) (fun_app\$a (fun_app\$b less\$ ?v1) ?v2)))) :named a131))
(assert (! (forall ((?v0 Nat_l_word_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (less\$c (fun_app\$e ?v0 ?v3) (fun_app\$e ?v0
(fun_app\$c suc\$ ?v3)))) (= (less\$c (fun_app\$e ?v0 ?v1) (fun_app\$e ?v0
?v2)) (fun_app\$a (fun_app\$b less\$ ?v1) ?v2)))) :named a132))
(assert (! (forall ((?v0 Nat_int_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (< (fun_app\$d ?v0 ?v3) (fun_app\$d ?v0
(fun_app\$c suc\$ ?v3)))) (= (< (fun_app\$d ?v0 ?v1) (fun_app\$d ?v0 ?v2))
(fun_app\$a (fun_app\$b less\$ ?v1) ?v2)))) :named a133))
(assert (! (forall ((?v0 Nat_nat_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (fun_app\$a (fun_app\$b less\$ (fun_app\$c ?v0
?v3)) (fun_app\$c ?v0 (fun_app\$c suc\$ ?v3)))) (= (fun_app\$a (fun_app\$b
less\$ (fun_app\$c ?v0 ?v1)) (fun_app\$c ?v0 ?v2)) (fun_app\$a (fun_app\$b
less\$ ?v1) ?v2)))) :named a134))
(assert (! (forall ((?v0 Nat_num_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (fun_app\$h (less\$d (fun_app\$i ?v0 ?v3))
(fun_app\$i ?v0 (fun_app\$c suc\$ ?v3)))) (= (fun_app\$h (less\$d (fun_app\$i
?v0 ?v1)) (fun_app\$i ?v0 ?v2)) (fun_app\$a (fun_app\$b less\$ ?v1) ?v2))))
:named a135))
(assert (! (forall ((?v0 Nat_a_word_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (less\$a (fun_app\$f ?v0 ?v3) (fun_app\$f
?v0 (fun_app\$c suc\$ ?v3)))) (fun_app\$a (fun_app\$b less\$ ?v1) ?v2))
(less\$a (fun_app\$f ?v0 ?v1) (fun_app\$f ?v0 ?v2)))) :named a136))
(assert (! (forall ((?v0 Nat_num0_word_fun\$) (?v1 Nat\$) (?v2
Nat\$)) (=> (and (forall ((?v3 Nat\$)) (less\$b (fun_app\$g ?v0 ?v3)
(fun_app\$g ?v0 (fun_app\$c suc\$ ?v3)))) (fun_app\$a (fun_app\$b less\$ ?v1)
?v2)) (less\$b (fun_app\$g ?v0 ?v1) (fun_app\$g ?v0 ?v2)))) :named a137))
(assert (! (forall ((?v0 Nat_l_word_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (less\$c (fun_app\$e ?v0 ?v3) (fun_app\$e
?v0 (fun_app\$c suc\$ ?v3)))) (fun_app\$a (fun_app\$b less\$ ?v1) ?v2))
(less\$c (fun_app\$e ?v0 ?v1) (fun_app\$e ?v0 ?v2)))) :named a138))
(assert (! (forall ((?v0 Nat_int_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (< (fun_app\$d ?v0 ?v3) (fun_app\$d ?v0
(fun_app\$c suc\$ ?v3)))) (fun_app\$a (fun_app\$b less\$ ?v1) ?v2)) (<
(fun_app\$d ?v0 ?v1) (fun_app\$d ?v0 ?v2)))) :named a139))
(assert (! (forall ((?v0 Nat_nat_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (fun_app\$a (fun_app\$b less\$ (fun_app\$c
?v0 ?v3)) (fun_app\$c ?v0 (fun_app\$c suc\$ ?v3)))) (fun_app\$a (fun_app\$b
less\$ ?v1) ?v2)) (fun_app\$a (fun_app\$b less\$ (fun_app\$c ?v0 ?v1))
(fun_app\$c ?v0 ?v2)))) :named a140))
(assert (! (forall ((?v0 Nat_num_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (fun_app\$h (less\$d (fun_app\$i ?v0 ?v3))
(fun_app\$i ?v0 (fun_app\$c suc\$ ?v3)))) (fun_app\$a (fun_app\$b less\$ ?v1)
?v2)) (fun_app\$h (less\$d (fun_app\$i ?v0 ?v1)) (fun_app\$i ?v0 ?v2))))
:named a141))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$c of_nat\$a
(fun_app\$c suc\$ ?v0)) zero\$))) :named a142))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$d of_nat\$
(fun_app\$c suc\$ ?v0)) 0))) :named a143))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$a
(fun_app\$b less\$ (fun_app\$c of_nat\$a ?v0)) (fun_app\$c of_nat\$a ?v1))
(fun_app\$a (fun_app\$b less\$ ?v0) ?v1))) :named a144))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (< (fun_app\$d
of_nat\$ ?v0) (fun_app\$d of_nat\$ ?v1)) (fun_app\$a (fun_app\$b less\$ ?v0)
?v1))) :named a145))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$a
(fun_app\$b less\$ ?v0) ?v1) (fun_app\$a (fun_app\$b less\$ (fun_app\$c
of_nat\$a ?v0)) (fun_app\$c of_nat\$a ?v1)))) :named a146))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$a
(fun_app\$b less\$ ?v0) ?v1) (< (fun_app\$d of_nat\$ ?v0) (fun_app\$d
of_nat\$ ?v1)))) :named a147))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$a
(fun_app\$b less\$ ?v0) (fun_app\$c suc\$ ?v1)) (or (= ?v0 zero\$) (exists
((?v2 Nat\$)) (and (= ?v0 (fun_app\$c suc\$ ?v2)) (fun_app\$a (fun_app\$b
less\$ ?v2) ?v1)))))) :named a148))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$a (fun_app\$b less\$
zero\$) ?v0) (exists ((?v1 Nat\$)) (= ?v0 (fun_app\$c suc\$ ?v1))))) :named
a149))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (forall
((?v2 Nat\$)) (=> (fun_app\$a (fun_app\$b less\$ ?v2) (fun_app\$c suc\$ ?v0))
(fun_app\$a ?v1 ?v2))) (and (fun_app\$a ?v1 zero\$) (forall ((?v2 Nat\$))
(=> (fun_app\$a (fun_app\$b less\$ ?v2) ?v0) (fun_app\$a ?v1 (fun_app\$c
suc\$ ?v2))))))) :named a150))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$a (fun_app\$b less\$
zero\$) ?v0) (exists ((?v1 Nat\$)) (= ?v0 (fun_app\$c suc\$ ?v1))))) :named
a151))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (exists
((?v2 Nat\$)) (and (fun_app\$a (fun_app\$b less\$ ?v2) (fun_app\$c suc\$
?v0)) (fun_app\$a ?v1 ?v2))) (or (fun_app\$a ?v1 zero\$) (exists ((?v2
Nat\$)) (and (fun_app\$a (fun_app\$b less\$ ?v2) ?v0) (fun_app\$a ?v1
(fun_app\$c suc\$ ?v2))))))) :named a152))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$a
(fun_app\$b less\$ zero\$) ?v0) (fun_app\$a (fun_app\$b less\$ zero\$) ?v1))
(fun_app\$a (fun_app\$b less\$ (fun_app\$c (minus\$ ?v1) ?v0)) ?v1))) :named
a153))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (fun_app\$a (fun_app\$b
less\$ (fun_app\$c (minus\$ ?v0) ?v1)) (fun_app\$c suc\$ ?v0))) :named
a154))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$a
(fun_app\$b less\$ ?v0) ?v1) (= (fun_app\$c suc\$ (fun_app\$c (minus\$ ?v1)
(fun_app\$c suc\$ ?v0))) (fun_app\$c (minus\$ ?v1) ?v0)))) :named a155))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$a (fun_app\$b less\$ zero\$) ?v0) (fun_app\$a (fun_app\$b less\$
(fun_app\$c (power\$ ?v0) ?v1)) (fun_app\$c (power\$ ?v0) ?v2))) (fun_app\$a
(fun_app\$b less\$ ?v1) ?v2))) :named a156))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$a (fun_app\$b less\$
zero\$) ?v0) (= (fun_app\$e (power\$b zero\$a) ?v0) zero\$a))) :named a157))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$a (fun_app\$b less\$
zero\$) ?v0) (= (fun_app\$d (power\$a 0) ?v0) 0))) :named a158))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$a (fun_app\$b less\$
zero\$) ?v0) (= (fun_app\$c (power\$ zero\$) ?v0) zero\$))) :named a159))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$a
(fun_app\$b less\$ zero\$) ?v0) (fun_app\$a (fun_app\$b less\$ (fun_app\$c
(minus\$ ?v0) (fun_app\$c suc\$ ?v1))) ?v0))) :named a160))
(assert (! (= (fun_app\$e (power\$b zero\$a) (numeral\$ (bit0\$
one\$))) zero\$a) :named a161))
(assert (! (= (fun_app\$d (power\$a 0) (numeral\$ (bit0\$ one\$))) 0)
:named a162))
(assert (! (= (fun_app\$c (power\$ zero\$) (numeral\$ (bit0\$ one\$)))
zero\$) :named a163))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (= (fun_app\$e
(power\$b (fun_app\$j (minus\$a ?v0) ?v1)) (numeral\$ (bit0\$ one\$)))
(fun_app\$e (power\$b (fun_app\$j (minus\$a ?v1) ?v0)) (numeral\$ (bit0\$
one\$))))) :named a164))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$d (power\$a
(- ?v0 ?v1)) (numeral\$ (bit0\$ one\$))) (fun_app\$d (power\$a (- ?v1 ?v0))
(numeral\$ (bit0\$ one\$))))) :named a165))
(assert (! (forall ((?v0 Int)) (not (< (fun_app\$d (power\$a ?v0)
(numeral\$ (bit0\$ one\$))) 0))) :named a166))
(assert (! (= (fun_app\$e of_nat\$b (fun_app\$c (power\$ (numeral\$
(bit0\$ one\$))) (len_of\$ type\$))) zero\$a) :named a167))
(assert (! (forall ((?v0 Nat\$)) (=> (and (fun_app\$a (fun_app\$b
less\$ zero\$) ?v0) (fun_app\$a (fun_app\$b less\$ ?v0) (fun_app\$c (power\$
(numeral\$ (bit0\$ one\$))) (len_of\$ type\$)))) (not (= (fun_app\$e of_nat\$b
?v0) zero\$a)))) :named a168))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$e of_nat\$b (numeral\$
?v0)) (numeral\$b ?v0))) :named a169))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$c of_nat\$a (numeral\$
?v0)) (numeral\$ ?v0))) :named a170))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$d of_nat\$ (numeral\$
?v0)) (numeral\$a ?v0))) :named a171))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (< 0 (- ?v0 ?v1)) (<
?v1 ?v0))) :named a172))
(assert (! (forall ((?v0 L_word\$)) (=> (forall ((?v1 Nat\$)) (=>
(and (= ?v0 (fun_app\$e of_nat\$b ?v1)) (fun_app\$a (fun_app\$b less\$ ?v1)
(fun_app\$c (power\$ (numeral\$ (bit0\$ one\$))) (len_of\$ type\$)))) false))
false)) :named a173))
(assert (! (forall ((?v0 L_word\$)) (exists ((?v1 Nat\$)) (and (=
?v0 (fun_app\$e of_nat\$b ?v1)) (fun_app\$a (fun_app\$b less\$ ?v1)
(fun_app\$c (power\$ (numeral\$ (bit0\$ one\$))) (len_of\$ type\$)))))) :named
a174))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$a (fun_app\$b less\$
?v0) (numeral\$ (bit0\$ one\$))) (or (= ?v0 zero\$) (= ?v0 (fun_app\$c suc\$
zero\$))))) :named a175))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$)) (= (= (fun_app\$d
of_nat\$ ?v0) (numeral\$a ?v1)) (= ?v0 (numeral\$ ?v1)))) :named a176))
(assert (! (= (word_of_int\$ (fun_app\$d (power\$a 2) (len_of\$b
type\$a))) zero\$b) :named a177))
(assert (! (= (word_of_int\$a (fun_app\$d (power\$a 2) (len_of\$
type\$))) zero\$a) :named a178))
(assert (! (= (word_of_int\$b (fun_app\$d (power\$a 2) (len_of\$a
type\$b))) zero\$c) :named a179))
(assert (! (= (numeral\$ (bit0\$ one\$)) (fun_app\$c suc\$ (fun_app\$c
suc\$ zero\$))) :named a180))
(assert (! (forall ((?v0 Num\$)) (! (= (fun_app\$h (less\$d one\$)
(bit0\$ ?v0)) true) :pattern ((bit0\$ ?v0)))) :named a181))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (numeral\$ ?v0)
(numeral\$ ?v1)) (= ?v0 ?v1))) :named a182))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (numeral\$a ?v0)
(numeral\$a ?v1)) (= ?v0 ?v1))) :named a183))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (bit0\$ ?v0)
(bit0\$ ?v1)) (= ?v0 ?v1))) :named a184))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (bit0\$ ?v0)
(bit0\$ ?v1)) (= ?v0 ?v1))) :named a185))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d
of_nat\$ ?v0) (fun_app\$d of_nat\$ ?v1)) (= ?v0 ?v1))) :named a186))
(assert (! (forall ((?v0 Num\$)) (= (less\$c zero\$a (numeral\$b
?v0)) (not (= zero\$a (numeral\$b ?v0))))) :named a187))
(assert (! (forall ((?v0 Num\$)) (= (less\$b zero\$c (numeral\$c
?v0)) (not (= zero\$c (numeral\$c ?v0))))) :named a188))
(assert (! (forall ((?v0 Num\$)) (= (less\$a zero\$b (numeral\$d
?v0)) (not (= zero\$b (numeral\$d ?v0))))) :named a189))
(assert (! (forall ((?v0 Nat\$)) (= (not (fun_app\$a (fun_app\$b
less\$ zero\$) ?v0)) (= ?v0 zero\$))) :named a190))
(assert (! (forall ((?v0 Int)) (! (= (- ?v0 ?v0) 0) :pattern
((uu\$ ?v0)))) :named a191))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$j (minus\$a
?v0) ?v0) zero\$a) :pattern ((minus\$a ?v0)))) :named a192))
(assert (! (forall ((?v0 Num0_word\$)) (! (= (fun_app\$k (minus\$b
?v0) ?v0) zero\$c) :pattern ((minus\$b ?v0)))) :named a193))
(assert (! (forall ((?v0 A_word\$)) (! (= (fun_app\$l (minus\$c
?v0) ?v0) zero\$b) :pattern ((minus\$c ?v0)))) :named a194))
(assert (! (forall ((?v0 Int)) (= (- ?v0 0) ?v0)) :named a195))
(assert (! (forall ((?v0 L_word\$)) (= (fun_app\$j (minus\$a ?v0)
zero\$a) ?v0)) :named a196))
(assert (! (forall ((?v0 Num0_word\$)) (= (fun_app\$k (minus\$b
?v0) zero\$c) ?v0)) :named a197))
(assert (! (forall ((?v0 A_word\$)) (= (fun_app\$l (minus\$c ?v0)
zero\$b) ?v0)) :named a198))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$c (minus\$ zero\$)
?v0) zero\$)) :named a199))
(assert (! (forall ((?v0 Int)) (= (- ?v0 0) ?v0)) :named a200))
(assert (! (forall ((?v0 L_word\$)) (= (fun_app\$j (minus\$a ?v0)
zero\$a) ?v0)) :named a201))
(assert (! (forall ((?v0 Num0_word\$)) (= (fun_app\$k (minus\$b
?v0) zero\$c) ?v0)) :named a202))
(assert (! (forall ((?v0 A_word\$)) (= (fun_app\$l (minus\$c ?v0)
zero\$b) ?v0)) :named a203))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$c (minus\$ ?v0)
zero\$) ?v0)) :named a204))
(assert (! (forall ((?v0 Int)) (! (= (- ?v0 ?v0) 0) :pattern
((uu\$ ?v0)))) :named a205))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$j (minus\$a
?v0) ?v0) zero\$a) :pattern ((minus\$a ?v0)))) :named a206))
(assert (! (forall ((?v0 Num0_word\$)) (! (= (fun_app\$k (minus\$b
?v0) ?v0) zero\$c) :pattern ((minus\$b ?v0)))) :named a207))
(assert (! (forall ((?v0 A_word\$)) (! (= (fun_app\$l (minus\$c
?v0) ?v0) zero\$b) :pattern ((minus\$c ?v0)))) :named a208))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$c (minus\$ ?v0)
?v0) zero\$) :pattern ((minus\$ ?v0)))) :named a209))
(assert (! (forall ((?v0 Num\$)) (= (= (bit0\$ ?v0) one\$) false))
:named a210))
(assert (! (forall ((?v0 Num\$)) (= (= one\$ (bit0\$ ?v0)) false))
:named a211))
(assert (! (forall ((?v0 Num\$)) (= (word_of_int\$b (numeral\$a
?v0)) (numeral\$c ?v0))) :named a212))
(assert (! (forall ((?v0 Num\$)) (= (word_of_int\$a (numeral\$a
?v0)) (numeral\$b ?v0))) :named a213))
(assert (! (forall ((?v0 Num\$)) (= (word_of_int\$ (numeral\$a
?v0)) (numeral\$d ?v0))) :named a214))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (! (= (fun_app\$h
(less\$d (bit0\$ ?v0)) (bit0\$ ?v1)) (fun_app\$h (less\$d ?v0) ?v1))
:pattern ((fun_app\$h (less\$d (bit0\$ ?v0)) (bit0\$ ?v1))))) :named a215))
(assert (! (forall ((?v0 Num\$)) (! (= (fun_app\$h (less\$d ?v0)
one\$) false) :pattern ((less\$d ?v0)))) :named a216))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (fun_app\$a
(fun_app\$b less\$ (numeral\$ ?v0)) (numeral\$ ?v1)) (fun_app\$h (less\$d
?v0) ?v1))) :named a217))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (< (numeral\$a ?v0)
(numeral\$a ?v1)) (fun_app\$h (less\$d ?v0) ?v1))) :named a218))
(assert (! (forall ((?v0 L_word\$)) (not (less\$c ?v0 zero\$a)))
:named a219))
(assert (! (forall ((?v0 Num0_word\$)) (not (less\$b ?v0 zero\$c)))
:named a220))
(assert (! (forall ((?v0 A_word\$)) (not (less\$a ?v0 zero\$b)))
:named a221))
(assert (! (forall ((?v0 L_word\$)) (= (less\$c zero\$a ?v0) (not
(= zero\$a ?v0)))) :named a222))
(assert (! (forall ((?v0 Num0_word\$)) (= (less\$b zero\$c ?v0)
(not (= zero\$c ?v0)))) :named a223))
(assert (! (forall ((?v0 A_word\$)) (= (less\$a zero\$b ?v0) (not
(= zero\$b ?v0)))) :named a224))
(check-sat)
(get-proof)

SMT: Invoking SMT solver "z3" ...
SMT: Assertions:
¬ False  [¬ False]
n < 2 ^ (LENGTH('l) - Suc 0)
msb (word_of_int (int n))
∀i n x. (numeral i ^ n < of_nat x) = (numeral i ^ n < x)
∀i n x. (numeral i ^ n < int x) = (numeral i ^ n < x)
∀x i n. (of_nat x < numeral i ^ n) = (x < numeral i ^ n)
∀x i n. (int x < numeral i ^ n) = (x < numeral i ^ n)
∀a. (0 < a⇧2) = (a ≠ 0)
∀x n. (0 < of_nat x ^ n) = (0 < x ∨ n = 0)
∀x n. (0 < int x ^ n) = (0 < x ∨ n = 0)
∀x n y. (numeral x ^ n = of_nat y) = (numeral x ^ n = y)
∀x n y. (numeral x ^ n = int y) = (numeral x ^ n = y)
∀y x n. (of_nat y = numeral x ^ n) = (y = numeral x ^ n)
∀y x n. (int y = numeral x ^ n) = (y = numeral x ^ n)
∀b w x. (of_nat b ^ w < of_nat x) = (b ^ w < x)
∀b w x. (int b ^ w < int x) = (b ^ w < x)
∀x b w. (of_nat x < of_nat b ^ w) = (x < b ^ w)
∀x b w. (int x < int b ^ w) = (x < b ^ w)
∀a. (a⇧2 = 0) = (a = 0)
∀a. (a⇧2 = 0) = (a = 0)
∀n. (0 < of_nat n) = (0 < n)
∀n. (0 < int n) = (0 < n)
0 < LENGTH('l)
∀n>0. Suc (n - Suc 0) = n
∀nat nat'. (Suc nat = Suc nat') = (nat = nat')
∀x2 y2. (Suc x2 = Suc y2) = (x2 = y2)
∀m n. (of_nat m = of_nat n) = (m = n)
∀m n. (int m = int n) = (m = n)
∀n. (n ≠ 0) = (0 < n)
∀m n. (Suc m < Suc n) = (m < n)
∀m n. m < n ⟶ Suc m < Suc n
∀n. n < Suc n
∀m. m - m = 0
∀n. 0 - n = 0
∀m n k. Suc m - n - Suc k = m - n - k
∀m n. Suc m - Suc n = m - n
∀n. 0 ^ Suc n = 0
∀n. 0 ^ Suc n = 0
∀m. (of_nat m = 0) = (m = 0)
∀m. (int m = 0) = (m = 0)
∀n. (0 = of_nat n) = (0 = n)
∀n. (0 = int n) = (0 = n)
of_nat 0 = 0
int 0 = 0
∀m n. (of_nat m < of_nat n) = (m < n)
∀m n. (int m < int n) = (m < n)
∀k. 0 ^ numeral k = 0
∀k. 0 ^ numeral k = 0
∀n. 0 < Suc n
∀n. (n < Suc 0) = (n = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀n m. (0 < n - m) = (m < n)
∀x m. (x ^ m = Suc 0) = (m = 0 ∨ x = Suc 0)
∀n. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (Suc 0 ^ n))
SMT.Symb_Nil)
SMT.Symb_Nil)
(Suc 0 ^ n = Suc 0)
∀x n. (0 < x ^ n) = (0 < x ∨ n = 0)
∀x b w. (of_nat x = of_nat b ^ w) = (x = b ^ w)
∀x b w. (int x = int b ^ w) = (x = b ^ w)
∀b w x. (of_nat b ^ w = of_nat x) = (b ^ w = x)
∀b w x. (int b ^ w = int x) = (b ^ w = x)
∀m n. of_nat (m ^ n) = of_nat m ^ n
∀m n. int (m ^ n) = int m ^ n
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
∀uu. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (len_of uu))
SMT.Symb_Nil)
SMT.Symb_Nil)
(len_of uu = 0)
∀nat. (nat = 0 ⟶ False) ∧ (nat ≠ 0 ⟶ False) ⟶ False
∀n. n ≠ Suc n
∀x y. Suc x = Suc y ⟶ x = y
∀x y. x ≠ y ∧ (x < y ⟶ False) ∧ (y < x ⟶ False) ⟶ False
∀P n. (∀n. ¬ P n ⟶ (∃m<n. ¬ P m)) ⟶ P n
∀P n. (∀n. (∀m<n. P m) ⟶ P n) ⟶ P n
∀n. n < n ⟶ False
∀s t. s < t ⟶ s ≠ t
∀n m. n < m ⟶ m ≠ n
∀n. ¬ n < n
∀m n. (m ≠ n) = (m < n ∨ n < m)
∀i j k. i - j - k = i - k - j
∀a n. a ≠ 0 ⟶ a ^ n ≠ 0
∀a n. a ≠ 0 ⟶ a ^ n ≠ 0
∀n. n ≠ 0 ⟶ (∃m. n = Suc m)
∀y. (y = 0 ⟶ False) ∧ (∀nat. y = Suc nat ⟶ False) ⟶ False
∀m. 0 ≠ Suc m
∀m. 0 = Suc m ⟶ False
∀m. Suc m = 0 ⟶ False
∀P k. P k ∧ (∀n. P (Suc n) ⟶ P n) ⟶ P 0
∀P m n.
(∀x. P x 0) ∧ (∀y. P 0 (Suc y)) ∧ (∀x y. P x y ⟶ P (Suc x)
(Suc y)) ⟶
P m n
∀P n. P 0 ∧ (∀n. P n ⟶ P (Suc n)) ⟶ P n
∀nat x2. nat = Suc x2 ⟶ nat ≠ 0
∀nat'. 0 ≠ Suc nat'
∀nat'. Suc nat' ≠ 0
∀x2. 0 ≠ Suc x2
∀n. (n < 0) = False
∀P n. P 0 ∧ (∀n. 0 < n ∧ ¬ P n ⟶ (∃m<n. ¬ P m)) ⟶ P n
∀m n. m < n ⟶ n ≠ 0
∀n<0. False
∀n. ¬ n < 0
∀n. (¬ 0 < n) = (n = 0)
∀n. (n = 0 ⟶ False) ⟶ 0 < n
∀n m. ¬ n < m ⟶ (n < Suc m) = (n = m)
∀i j P.
i < j ∧ (∀i. j = Suc i ⟶ P i) ∧ (∀i. i < j ∧ P (Suc i) ⟶ P i)
⟶ P i
∀i j P.
i < j ∧
(∀i. P i (Suc i)) ∧
(∀i j k. i < j ∧ j < k ∧ P i j ∧ P j k ⟶ P i k) ⟶
P i j
∀i j k. i < j ∧ j < k ⟶ Suc i < k
∀m n. Suc m < Suc n ⟶ m < n
∀n m. ¬ n < m ∧ n < Suc m ⟶ m = n
∀n m. (Suc n < m) = (∃m'. m = Suc m' ∧ n < m')
∀n P. (∀i<Suc n. P i) = (P n ∧ (∀i<n. P i))
∀m n. (¬ m < n) = (n < Suc m)
∀m n. (m < Suc n) = (m < n ∨ m = n)
∀n P. (∃i<Suc n. P i) = (P n ∨ (∃i<n. P i))
∀m n. m < n ⟶ m < Suc n
∀m n. m < Suc n ∧ (m < n ⟶ False) ∧ (m = n ⟶ False) ⟶ False
∀m n. m < n ∧ Suc m ≠ n ⟶ Suc m < n
∀i k. Suc i < k ∧ (∀j. i < j ∧ k = Suc j ⟶ False) ⟶ False
∀m n. Suc m < n ⟶ m < n
∀i k. i < k ∧ (k = Suc i ⟶ False) ∧ (∀j. i < j ∧ k = Suc j ⟶
False) ⟶
False
∀m. m - 0 = m
∀m n. m - n = 0 ∧ n - m = 0 ⟶ m = n
∀P k i. P k ∧ (∀n. P (Suc n) ⟶ P n) ⟶ P (k - i)
∀j k n. j < k ⟶ j - n < k
∀m n l. m < n ∧ m < l ⟶ l - n < l - m
∀a n. 0 < a ⟶ 0 < a ^ n
∀a n. 0 < a ⟶ 0 < a ^ n
SMT: Names:
sorts:
Nat\$ = nat
Num\$ = num
A_word\$ = 'a word
L_itself\$ = 'l itself
Nat_int_fun\$ = nat ⇒ int
Nat_nat_fun\$ = nat ⇒ nat
Num0_itself\$ = 0 itself
Nat_bool_fun\$ = nat ⇒ bool
Nat_nat_bool_fun_fun\$ = nat ⇒ nat ⇒ bool
functions:
n\$ = n
msb\$ = msb
one\$ = num.One
suc\$ = Suc
bit0\$ = num.Bit0
less\$ = (<)
type\$ = TYPE('l)
zero\$ = 0
minus\$ = (-)
power\$ = (^)
len_of\$ = len_of
of_nat\$ = int
power\$a = (^)
fun_app\$ = SMT.fun_app
len_of\$a = len_of
numeral\$ = numeral
of_nat\$a = of_nat
fun_app\$a = SMT.fun_app
fun_app\$b = SMT.fun_app
fun_app\$c = SMT.fun_app
numeral\$a = numeral
word_of_int\$ = word_of_int
SMT: Problem:
; smt.random_seed=1 smt.refine_inj_axioms=false -T:3 -smt2
(set-option :produce-proofs true)
(declare-sort Nat\$ 0)
(declare-sort Num\$ 0)
(declare-sort A_word\$ 0)
(declare-sort L_itself\$ 0)
(declare-sort Nat_int_fun\$ 0)
(declare-sort Nat_nat_fun\$ 0)
(declare-sort Num0_itself\$ 0)
(declare-sort Nat_bool_fun\$ 0)
(declare-sort Nat_nat_bool_fun_fun\$ 0)
(declare-fun n\$ () Nat\$)
(declare-fun msb\$ (A_word\$) Bool)
(declare-fun one\$ () Num\$)
(declare-fun suc\$ (Nat\$) Nat\$)
(declare-fun bit0\$ (Num\$) Num\$)
(declare-fun less\$ () Nat_nat_bool_fun_fun\$)
(declare-fun type\$ () L_itself\$)
(declare-fun zero\$ () Nat\$)
(declare-fun minus\$ (Nat\$ Nat\$) Nat\$)
(declare-fun power\$ (Nat\$) Nat_nat_fun\$)
(declare-fun len_of\$ (L_itself\$) Nat\$)
(declare-fun of_nat\$ (Nat\$) Int)
(declare-fun power\$a (Int) Nat_int_fun\$)
(declare-fun fun_app\$ (Nat_bool_fun\$ Nat\$) Bool)
(declare-fun len_of\$a (Num0_itself\$) Nat\$)
(declare-fun numeral\$ (Num\$) Nat\$)
(declare-fun of_nat\$a (Nat\$) Nat\$)
(declare-fun fun_app\$a (Nat_nat_bool_fun_fun\$ Nat\$)
Nat_bool_fun\$)
(declare-fun fun_app\$b (Nat_nat_fun\$ Nat\$) Nat\$)
(declare-fun fun_app\$c (Nat_int_fun\$ Nat\$) Int)
(declare-fun numeral\$a (Num\$) Int)
(declare-fun word_of_int\$ (Int) A_word\$)
(assert (! (not false) :named a0))
(assert (! (fun_app\$ (fun_app\$a less\$ n\$) (fun_app\$b (power\$
(numeral\$ (bit0\$ one\$))) (minus\$ (len_of\$ type\$) (suc\$ zero\$)))) :named
a1))
(assert (! (msb\$ (word_of_int\$ (of_nat\$ n\$))) :named a2))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$ (fun_app\$a less\$ (fun_app\$b (power\$ (numeral\$ ?v0)) ?v1))
(of_nat\$a ?v2)) (fun_app\$ (fun_app\$a less\$ (fun_app\$b (power\$ (numeral\$
?v0)) ?v1)) ?v2))) :named a3))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$c (power\$a (numeral\$a ?v0)) ?v1) (of_nat\$ ?v2)) (fun_app\$
(fun_app\$a less\$ (fun_app\$b (power\$ (numeral\$ ?v0)) ?v1)) ?v2))) :named
a4))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (=
(fun_app\$ (fun_app\$a less\$ (of_nat\$a ?v0)) (fun_app\$b (power\$ (numeral\$
?v1)) ?v2)) (fun_app\$ (fun_app\$a less\$ ?v0) (fun_app\$b (power\$
(numeral\$ ?v1)) ?v2)))) :named a5))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (<
(of_nat\$ ?v0) (fun_app\$c (power\$a (numeral\$a ?v1)) ?v2)) (fun_app\$
(fun_app\$a less\$ ?v0) (fun_app\$b (power\$ (numeral\$ ?v1)) ?v2)))) :named
a6))
(assert (! (forall ((?v0 Int)) (= (< 0 (fun_app\$c (power\$a ?v0)
(numeral\$ (bit0\$ one\$)))) (not (= ?v0 0)))) :named a7))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$
(fun_app\$a less\$ zero\$) (fun_app\$b (power\$ (of_nat\$a ?v0)) ?v1)) (or
(fun_app\$ (fun_app\$a less\$ zero\$) ?v0) (= ?v1 zero\$)))) :named a8))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< 0 (fun_app\$c
(power\$a (of_nat\$ ?v0)) ?v1)) (or (fun_app\$ (fun_app\$a less\$ zero\$)
?v0) (= ?v1 zero\$)))) :named a9))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$b (power\$ (numeral\$ ?v0)) ?v1) (of_nat\$a ?v2)) (= (fun_app\$b
(power\$ (numeral\$ ?v0)) ?v1) ?v2))) :named a10))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$c (power\$a (numeral\$a ?v0)) ?v1) (of_nat\$ ?v2)) (= (fun_app\$b
(power\$ (numeral\$ ?v0)) ?v1) ?v2))) :named a11))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(of_nat\$a ?v0) (fun_app\$b (power\$ (numeral\$ ?v1)) ?v2)) (= ?v0
(fun_app\$b (power\$ (numeral\$ ?v1)) ?v2)))) :named a12))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(of_nat\$ ?v0) (fun_app\$c (power\$a (numeral\$a ?v1)) ?v2)) (= ?v0
(fun_app\$b (power\$ (numeral\$ ?v1)) ?v2)))) :named a13))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$ (fun_app\$a less\$ (fun_app\$b (power\$ (of_nat\$a ?v0)) ?v1))
(of_nat\$a ?v2)) (fun_app\$ (fun_app\$a less\$ (fun_app\$b (power\$ ?v0)
?v1)) ?v2))) :named a14))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$c (power\$a (of_nat\$ ?v0)) ?v1) (of_nat\$ ?v2)) (fun_app\$
(fun_app\$a less\$ (fun_app\$b (power\$ ?v0) ?v1)) ?v2))) :named a15))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$ (fun_app\$a less\$ (of_nat\$a ?v0)) (fun_app\$b (power\$ (of_nat\$a
?v1)) ?v2)) (fun_app\$ (fun_app\$a less\$ ?v0) (fun_app\$b (power\$ ?v1)
?v2)))) :named a16))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(of_nat\$ ?v0) (fun_app\$c (power\$a (of_nat\$ ?v1)) ?v2)) (fun_app\$
(fun_app\$a less\$ ?v0) (fun_app\$b (power\$ ?v1) ?v2)))) :named a17))
(assert (! (forall ((?v0 Int)) (= (= (fun_app\$c (power\$a ?v0)
(numeral\$ (bit0\$ one\$))) 0) (= ?v0 0))) :named a18))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$b (power\$ ?v0)
(numeral\$ (bit0\$ one\$))) zero\$) (= ?v0 zero\$))) :named a19))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$ (fun_app\$a less\$
zero\$) (of_nat\$a ?v0)) (fun_app\$ (fun_app\$a less\$ zero\$) ?v0))) :named
a20))
(assert (! (forall ((?v0 Nat\$)) (= (< 0 (of_nat\$ ?v0)) (fun_app\$
(fun_app\$a less\$ zero\$) ?v0))) :named a21))
(assert (! (fun_app\$ (fun_app\$a less\$ zero\$) (len_of\$ type\$))
:named a22))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$ (fun_app\$a less\$
zero\$) ?v0) (= (suc\$ (minus\$ ?v0 (suc\$ zero\$))) ?v0))) :named a23))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (suc\$ ?v0)
(suc\$ ?v1)) (= ?v0 ?v1))) :named a24))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (suc\$ ?v0)
(suc\$ ?v1)) (= ?v0 ?v1))) :named a25))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (of_nat\$a ?v0)
(of_nat\$a ?v1)) (= ?v0 ?v1))) :named a26))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (of_nat\$ ?v0)
(of_nat\$ ?v1)) (= ?v0 ?v1))) :named a27))
(assert (! (forall ((?v0 Nat\$)) (= (not (= ?v0 zero\$)) (fun_app\$
(fun_app\$a less\$ zero\$) ?v0))) :named a28))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$
(fun_app\$a less\$ (suc\$ ?v0)) (suc\$ ?v1)) (fun_app\$ (fun_app\$a less\$
?v0) ?v1))) :named a29))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$
(fun_app\$a less\$ ?v0) ?v1) (fun_app\$ (fun_app\$a less\$ (suc\$ ?v0)) (suc\$
?v1)))) :named a30))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$ (fun_app\$a less\$ ?v0)
(suc\$ ?v0))) :named a31))
(assert (! (forall ((?v0 Nat\$)) (= (minus\$ ?v0 ?v0) zero\$))
:named a32))
(assert (! (forall ((?v0 Nat\$)) (= (minus\$ zero\$ ?v0) zero\$))
:named a33))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (minus\$
(minus\$ (suc\$ ?v0) ?v1) (suc\$ ?v2)) (minus\$ (minus\$ ?v0 ?v1) ?v2)))
:named a34))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (minus\$ (suc\$ ?v0)
(suc\$ ?v1)) (minus\$ ?v0 ?v1))) :named a35))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$c (power\$a 0) (suc\$
?v0)) 0)) :named a36))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (power\$ zero\$)
(suc\$ ?v0)) zero\$)) :named a37))
(assert (! (forall ((?v0 Nat\$)) (= (= (of_nat\$a ?v0) zero\$) (=
?v0 zero\$))) :named a38))
(assert (! (forall ((?v0 Nat\$)) (= (= (of_nat\$ ?v0) 0) (= ?v0
zero\$))) :named a39))
(assert (! (forall ((?v0 Nat\$)) (= (= zero\$ (of_nat\$a ?v0)) (=
zero\$ ?v0))) :named a40))
(assert (! (forall ((?v0 Nat\$)) (= (= 0 (of_nat\$ ?v0)) (= zero\$
?v0))) :named a41))
(assert (! (= (of_nat\$a zero\$) zero\$) :named a42))
(assert (! (= (of_nat\$ zero\$) 0) :named a43))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$
(fun_app\$a less\$ (of_nat\$a ?v0)) (of_nat\$a ?v1)) (fun_app\$ (fun_app\$a
less\$ ?v0) ?v1))) :named a44))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< (of_nat\$ ?v0)
(of_nat\$ ?v1)) (fun_app\$ (fun_app\$a less\$ ?v0) ?v1))) :named a45))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$c (power\$a 0)
(numeral\$ ?v0)) 0)) :named a46))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$b (power\$ zero\$)
(numeral\$ ?v0)) zero\$)) :named a47))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$ (fun_app\$a less\$
zero\$) (suc\$ ?v0))) :named a48))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$ (fun_app\$a less\$
?v0) (suc\$ zero\$)) (= ?v0 zero\$))) :named a49))
(assert (! (forall ((?v0 Int)) (! (= (fun_app\$c (power\$a ?v0)
(suc\$ zero\$)) ?v0) :pattern ((power\$a ?v0)))) :named a50))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$b (power\$ ?v0)
(suc\$ zero\$)) ?v0) :pattern ((power\$ ?v0)))) :named a51))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$
(fun_app\$a less\$ zero\$) (minus\$ ?v0 ?v1)) (fun_app\$ (fun_app\$a less\$
?v1) ?v0))) :named a52))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$b
(power\$ ?v0) ?v1) (suc\$ zero\$)) (or (= ?v1 zero\$) (= ?v0 (suc\$
zero\$))))) :named a53))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$b (power\$ (suc\$
zero\$)) ?v0) (suc\$ zero\$)) :pattern ((fun_app\$b (power\$ (suc\$ zero\$))
?v0)))) :named a54))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$
(fun_app\$a less\$ zero\$) (fun_app\$b (power\$ ?v0) ?v1)) (or (fun_app\$
(fun_app\$a less\$ zero\$) ?v0) (= ?v1 zero\$)))) :named a55))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(of_nat\$a ?v0) (fun_app\$b (power\$ (of_nat\$a ?v1)) ?v2)) (= ?v0
(fun_app\$b (power\$ ?v1) ?v2)))) :named a56))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(of_nat\$ ?v0) (fun_app\$c (power\$a (of_nat\$ ?v1)) ?v2)) (= ?v0
(fun_app\$b (power\$ ?v1) ?v2)))) :named a57))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$b (power\$ (of_nat\$a ?v0)) ?v1) (of_nat\$a ?v2)) (= (fun_app\$b
(power\$ ?v0) ?v1) ?v2))) :named a58))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$c (power\$a (of_nat\$ ?v0)) ?v1) (of_nat\$ ?v2)) (= (fun_app\$b
(power\$ ?v0) ?v1) ?v2))) :named a59))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (of_nat\$a
(fun_app\$b (power\$ ?v0) ?v1)) (fun_app\$b (power\$ (of_nat\$a ?v0)) ?v1)))
:named a60))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (of_nat\$
(fun_app\$b (power\$ ?v0) ?v1)) (fun_app\$c (power\$a (of_nat\$ ?v0)) ?v1)))
:named a61))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (= (= (fun_app\$c
(power\$a ?v0) ?v1) 0) (and (= ?v0 0) (fun_app\$ (fun_app\$a less\$ zero\$)
?v1)))) :named a62))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$b
(power\$ ?v0) ?v1) zero\$) (and (= ?v0 zero\$) (fun_app\$ (fun_app\$a less\$
zero\$) ?v1)))) :named a63))
(assert (! (forall ((?v0 Num0_itself\$)) (! (= (len_of\$a ?v0)
zero\$) :pattern ((len_of\$a ?v0)))) :named a64))
(assert (! (forall ((?v0 Nat\$)) (=> (and (=> (= ?v0 zero\$)
false) (=> (not (= ?v0 zero\$)) false)) false)) :named a65))
(assert (! (forall ((?v0 Nat\$)) (not (= ?v0 (suc\$ ?v0)))) :named
a66))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= (suc\$ ?v0)
(suc\$ ?v1)) (= ?v0 ?v1))) :named a67))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (not (= ?v0
?v1)) (and (=> (fun_app\$ (fun_app\$a less\$ ?v0) ?v1) false) (=>
(fun_app\$ (fun_app\$a less\$ ?v1) ?v0) false))) false)) :named a68))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (forall
((?v2 Nat\$)) (=> (not (fun_app\$ ?v0 ?v2)) (exists ((?v3 Nat\$)) (and
(fun_app\$ (fun_app\$a less\$ ?v3) ?v2) (not (fun_app\$ ?v0 ?v3))))))
(fun_app\$ ?v0 ?v1))) :named a69))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (forall
((?v2 Nat\$)) (=> (forall ((?v3 Nat\$)) (=> (fun_app\$ (fun_app\$a less\$
?v3) ?v2) (fun_app\$ ?v0 ?v3))) (fun_app\$ ?v0 ?v2))) (fun_app\$ ?v0
?v1))) :named a70))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$ (fun_app\$a less\$
?v0) ?v0) false)) :named a71))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$
(fun_app\$a less\$ ?v0) ?v1) (not (= ?v0 ?v1)))) :named a72))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$
(fun_app\$a less\$ ?v0) ?v1) (not (= ?v1 ?v0)))) :named a73))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$ (fun_app\$a less\$
?v0) ?v0))) :named a74))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (not (= ?v0 ?v1))
(or (fun_app\$ (fun_app\$a less\$ ?v0) ?v1) (fun_app\$ (fun_app\$a less\$
?v1) ?v0)))) :named a75))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (minus\$
(minus\$ ?v0 ?v1) ?v2) (minus\$ (minus\$ ?v0 ?v2) ?v1))) :named a76))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (=> (not (= ?v0 0))
(not (= (fun_app\$c (power\$a ?v0) ?v1) 0)))) :named a77))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (not (= ?v0
zero\$)) (not (= (fun_app\$b (power\$ ?v0) ?v1) zero\$)))) :named a78))
(assert (! (forall ((?v0 Nat\$)) (=> (not (= ?v0 zero\$)) (exists
((?v1 Nat\$)) (= ?v0 (suc\$ ?v1))))) :named a79))
(assert (! (forall ((?v0 Nat\$)) (=> (and (=> (= ?v0 zero\$)
false) (forall ((?v1 Nat\$)) (=> (= ?v0 (suc\$ ?v1)) false))) false))
:named a80))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (suc\$ ?v0))))
:named a81))
(assert (! (forall ((?v0 Nat\$)) (=> (= zero\$ (suc\$ ?v0)) false))
:named a82))
(assert (! (forall ((?v0 Nat\$)) (=> (= (suc\$ ?v0) zero\$) false))
:named a83))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$ ?v0 ?v1) (forall ((?v2 Nat\$)) (=> (fun_app\$ ?v0 (suc\$ ?v2))
(fun_app\$ ?v0 ?v2)))) (fun_app\$ ?v0 zero\$))) :named a84))
(assert (! (forall ((?v0 Nat_nat_bool_fun_fun\$) (?v1 Nat\$) (?v2
Nat\$)) (=> (and (forall ((?v3 Nat\$)) (fun_app\$ (fun_app\$a ?v0 ?v3)
zero\$)) (and (forall ((?v3 Nat\$)) (fun_app\$ (fun_app\$a ?v0 zero\$) (suc\$
?v3))) (forall ((?v3 Nat\$) (?v4 Nat\$)) (=> (fun_app\$ (fun_app\$a ?v0
?v3) ?v4) (fun_app\$ (fun_app\$a ?v0 (suc\$ ?v3)) (suc\$ ?v4))))))
(fun_app\$ (fun_app\$a ?v0 ?v1) ?v2))) :named a85))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$ ?v0 zero\$) (forall ((?v2 Nat\$)) (=> (fun_app\$ ?v0 ?v2)
(fun_app\$ ?v0 (suc\$ ?v2))))) (fun_app\$ ?v0 ?v1))) :named a86))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= ?v0 (suc\$
?v1)) (not (= ?v0 zero\$)))) :named a87))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (suc\$ ?v0))))
:named a88))
(assert (! (forall ((?v0 Nat\$)) (not (= (suc\$ ?v0) zero\$)))
:named a89))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (suc\$ ?v0))))
:named a90))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$ (fun_app\$a less\$
?v0) zero\$) false)) :named a91))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$ ?v0 zero\$) (forall ((?v2 Nat\$)) (=> (and (fun_app\$ (fun_app\$a
less\$ zero\$) ?v2) (not (fun_app\$ ?v0 ?v2))) (exists ((?v3 Nat\$)) (and
(fun_app\$ (fun_app\$a less\$ ?v3) ?v2) (not (fun_app\$ ?v0 ?v3)))))))
(fun_app\$ ?v0 ?v1))) :named a92))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$
(fun_app\$a less\$ ?v0) ?v1) (not (= ?v1 zero\$)))) :named a93))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$ (fun_app\$a less\$
?v0) zero\$) false)) :named a94))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$ (fun_app\$a less\$
?v0) zero\$))) :named a95))
(assert (! (forall ((?v0 Nat\$)) (= (not (fun_app\$ (fun_app\$a
less\$ zero\$) ?v0)) (= ?v0 zero\$))) :named a96))
(assert (! (forall ((?v0 Nat\$)) (=> (=> (= ?v0 zero\$) false)
(fun_app\$ (fun_app\$a less\$ zero\$) ?v0))) :named a97))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (not (fun_app\$
(fun_app\$a less\$ ?v0) ?v1)) (= (fun_app\$ (fun_app\$a less\$ ?v0) (suc\$
?v1)) (= ?v0 ?v1)))) :named a98))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat_bool_fun\$))
(=> (and (fun_app\$ (fun_app\$a less\$ ?v0) ?v1) (and (forall ((?v3 Nat\$))
(=> (= ?v1 (suc\$ ?v3)) (fun_app\$ ?v2 ?v3))) (forall ((?v3 Nat\$)) (=>
(and (fun_app\$ (fun_app\$a less\$ ?v3) ?v1) (fun_app\$ ?v2 (suc\$ ?v3)))
(fun_app\$ ?v2 ?v3))))) (fun_app\$ ?v2 ?v0))) :named a99))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2
Nat_nat_bool_fun_fun\$)) (=> (and (fun_app\$ (fun_app\$a less\$ ?v0) ?v1)
(and (forall ((?v3 Nat\$)) (fun_app\$ (fun_app\$a ?v2 ?v3) (suc\$ ?v3)))
(forall ((?v3 Nat\$) (?v4 Nat\$) (?v5 Nat\$)) (=> (and (fun_app\$
(fun_app\$a less\$ ?v3) ?v4) (and (fun_app\$ (fun_app\$a less\$ ?v4) ?v5)
(and (fun_app\$ (fun_app\$a ?v2 ?v3) ?v4) (fun_app\$ (fun_app\$a ?v2 ?v4)
?v5)))) (fun_app\$ (fun_app\$a ?v2 ?v3) ?v5))))) (fun_app\$ (fun_app\$a ?v2
?v0) ?v1))) :named a100))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$ (fun_app\$a less\$ ?v0) ?v1) (fun_app\$ (fun_app\$a less\$ ?v1)
?v2)) (fun_app\$ (fun_app\$a less\$ (suc\$ ?v0)) ?v2))) :named a101))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$
(fun_app\$a less\$ (suc\$ ?v0)) (suc\$ ?v1)) (fun_app\$ (fun_app\$a less\$
?v0) ?v1))) :named a102))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (not
(fun_app\$ (fun_app\$a less\$ ?v0) ?v1)) (fun_app\$ (fun_app\$a less\$ ?v0)
(suc\$ ?v1))) (= ?v1 ?v0))) :named a103))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$
(fun_app\$a less\$ (suc\$ ?v0)) ?v1) (exists ((?v2 Nat\$)) (and (= ?v1
(suc\$ ?v2)) (fun_app\$ (fun_app\$a less\$ ?v0) ?v2))))) :named a104))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (forall
((?v2 Nat\$)) (=> (fun_app\$ (fun_app\$a less\$ ?v2) (suc\$ ?v0)) (fun_app\$
?v1 ?v2))) (and (fun_app\$ ?v1 ?v0) (forall ((?v2 Nat\$)) (=> (fun_app\$
(fun_app\$a less\$ ?v2) ?v0) (fun_app\$ ?v1 ?v2)))))) :named a105))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (not (fun_app\$
(fun_app\$a less\$ ?v0) ?v1)) (fun_app\$ (fun_app\$a less\$ ?v1) (suc\$
?v0)))) :named a106))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$
(fun_app\$a less\$ ?v0) (suc\$ ?v1)) (or (fun_app\$ (fun_app\$a less\$ ?v0)
?v1) (= ?v0 ?v1)))) :named a107))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (exists
((?v2 Nat\$)) (and (fun_app\$ (fun_app\$a less\$ ?v2) (suc\$ ?v0)) (fun_app\$
?v1 ?v2))) (or (fun_app\$ ?v1 ?v0) (exists ((?v2 Nat\$)) (and (fun_app\$
(fun_app\$a less\$ ?v2) ?v0) (fun_app\$ ?v1 ?v2)))))) :named a108))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$
(fun_app\$a less\$ ?v0) ?v1) (fun_app\$ (fun_app\$a less\$ ?v0) (suc\$
?v1)))) :named a109))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$
(fun_app\$a less\$ ?v0) (suc\$ ?v1)) (and (=> (fun_app\$ (fun_app\$a less\$
?v0) ?v1) false) (=> (= ?v0 ?v1) false))) false)) :named a110))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$
(fun_app\$a less\$ ?v0) ?v1) (not (= (suc\$ ?v0) ?v1))) (fun_app\$
(fun_app\$a less\$ (suc\$ ?v0)) ?v1))) :named a111))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$
(fun_app\$a less\$ (suc\$ ?v0)) ?v1) (forall ((?v2 Nat\$)) (=> (and
(fun_app\$ (fun_app\$a less\$ ?v0) ?v2) (= ?v1 (suc\$ ?v2))) false)))
false)) :named a112))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$
(fun_app\$a less\$ (suc\$ ?v0)) ?v1) (fun_app\$ (fun_app\$a less\$ ?v0)
?v1))) :named a113))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$
(fun_app\$a less\$ ?v0) ?v1) (and (=> (= ?v1 (suc\$ ?v0)) false) (forall
((?v2 Nat\$)) (=> (and (fun_app\$ (fun_app\$a less\$ ?v0) ?v2) (= ?v1 (suc\$
?v2))) false)))) false)) :named a114))
(assert (! (forall ((?v0 Nat\$)) (= (minus\$ ?v0 zero\$) ?v0))
:named a115))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (= (minus\$
?v0 ?v1) zero\$) (= (minus\$ ?v1 ?v0) zero\$)) (= ?v0 ?v1))) :named a116))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (fun_app\$ ?v0 ?v1) (forall ((?v3 Nat\$)) (=> (fun_app\$ ?v0
(suc\$ ?v3)) (fun_app\$ ?v0 ?v3)))) (fun_app\$ ?v0 (minus\$ ?v1 ?v2))))
:named a117))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(fun_app\$ (fun_app\$a less\$ ?v0) ?v1) (fun_app\$ (fun_app\$a less\$ (minus\$
?v0 ?v2)) ?v1))) :named a118))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$ (fun_app\$a less\$ ?v0) ?v1) (fun_app\$ (fun_app\$a less\$ ?v0)
?v2)) (fun_app\$ (fun_app\$a less\$ (minus\$ ?v2 ?v1)) (minus\$ ?v2 ?v0))))
:named a119))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (=> (< 0 ?v0) (< 0
(fun_app\$c (power\$a ?v0) ?v1)))) :named a120))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$
(fun_app\$a less\$ zero\$) ?v0) (fun_app\$ (fun_app\$a less\$ zero\$)
(fun_app\$b (power\$ ?v0) ?v1)))) :named a121))
(check-sat)
(get-proof)

SMT: Invoking SMT solver "z3" ...
SMT: Assertions:
¬ False  [¬ False]
n < 2 ^ (LENGTH('l) - Suc 0)
msb (word_of_int (int n))
∀i n x. (numeral i ^ n < of_nat x) = (numeral i ^ n < x)
∀i n x. (numeral i ^ n < int x) = (numeral i ^ n < x)
∀x i n. (of_nat x < numeral i ^ n) = (x < numeral i ^ n)
∀x i n. (int x < numeral i ^ n) = (x < numeral i ^ n)
∀a. (0 < a⇧2) = (a ≠ 0)
∀x n. (0 < of_nat x ^ n) = (0 < x ∨ n = 0)
∀x n. (0 < int x ^ n) = (0 < x ∨ n = 0)
∀x n y. (numeral x ^ n = of_nat y) = (numeral x ^ n = y)
∀x n y. (numeral x ^ n = int y) = (numeral x ^ n = y)
∀y x n. (of_nat y = numeral x ^ n) = (y = numeral x ^ n)
∀y x n. (int y = numeral x ^ n) = (y = numeral x ^ n)
∀b w x. (of_nat b ^ w < of_nat x) = (b ^ w < x)
∀b w x. (int b ^ w < int x) = (b ^ w < x)
∀x b w. (of_nat x < of_nat b ^ w) = (x < b ^ w)
∀x b w. (int x < int b ^ w) = (x < b ^ w)
∀a. (a⇧2 = 0) = (a = 0)
∀a. (a⇧2 = 0) = (a = 0)
∀n. (0 < of_nat n) = (0 < n)
∀n. (0 < int n) = (0 < n)
0 < LENGTH('l)
∀n>0. Suc (n - Suc 0) = n
∀nat nat'. (Suc nat = Suc nat') = (nat = nat')
∀x2 y2. (Suc x2 = Suc y2) = (x2 = y2)
∀m n. (of_nat m = of_nat n) = (m = n)
∀m n. (int m = int n) = (m = n)
∀n. (n ≠ 0) = (0 < n)
∀m n. (Suc m < Suc n) = (m < n)
∀m n. m < n ⟶ Suc m < Suc n
∀n. n < Suc n
∀m. m - m = 0
∀n. 0 - n = 0
∀m n k. Suc m - n - Suc k = m - n - k
∀m n. Suc m - Suc n = m - n
∀n. 0 ^ Suc n = 0
∀n. 0 ^ Suc n = 0
∀m. (of_nat m = 0) = (m = 0)
∀m. (int m = 0) = (m = 0)
∀n. (0 = of_nat n) = (0 = n)
∀n. (0 = int n) = (0 = n)
of_nat 0 = 0
int 0 = 0
∀m n. (of_nat m < of_nat n) = (m < n)
∀m n. (int m < int n) = (m < n)
∀k. 0 ^ numeral k = 0
∀k. 0 ^ numeral k = 0
∀n. 0 < Suc n
∀n. (n < Suc 0) = (n = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀n m. (0 < n - m) = (m < n)
∀x m. (x ^ m = Suc 0) = (m = 0 ∨ x = Suc 0)
∀n. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (Suc 0 ^ n))
SMT.Symb_Nil)
SMT.Symb_Nil)
(Suc 0 ^ n = Suc 0)
∀x n. (0 < x ^ n) = (0 < x ∨ n = 0)
∀x b w. (of_nat x = of_nat b ^ w) = (x = b ^ w)
∀x b w. (int x = int b ^ w) = (x = b ^ w)
∀b w x. (of_nat b ^ w = of_nat x) = (b ^ w = x)
∀b w x. (int b ^ w = int x) = (b ^ w = x)
∀m n. of_nat (m ^ n) = of_nat m ^ n
∀m n. int (m ^ n) = int m ^ n
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
∀uu. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (len_of uu))
SMT.Symb_Nil)
SMT.Symb_Nil)
(len_of uu = 0)
∀nat. (nat = 0 ⟶ False) ∧ (nat ≠ 0 ⟶ False) ⟶ False
∀n. n ≠ Suc n
∀x y. Suc x = Suc y ⟶ x = y
∀x y. x ≠ y ∧ (x < y ⟶ False) ∧ (y < x ⟶ False) ⟶ False
∀P n. (∀n. ¬ P n ⟶ (∃m<n. ¬ P m)) ⟶ P n
∀P n. (∀n. (∀m<n. P m) ⟶ P n) ⟶ P n
∀n. n < n ⟶ False
∀s t. s < t ⟶ s ≠ t
∀n m. n < m ⟶ m ≠ n
∀n. ¬ n < n
∀m n. (m ≠ n) = (m < n ∨ n < m)
∀i j k. i - j - k = i - k - j
∀a n. a ≠ 0 ⟶ a ^ n ≠ 0
∀a n. a ≠ 0 ⟶ a ^ n ≠ 0
∀n. n ≠ 0 ⟶ (∃m. n = Suc m)
∀y. (y = 0 ⟶ False) ∧ (∀nat. y = Suc nat ⟶ False) ⟶ False
∀m. 0 ≠ Suc m
∀m. 0 = Suc m ⟶ False
∀m. Suc m = 0 ⟶ False
∀P k. P k ∧ (∀n. P (Suc n) ⟶ P n) ⟶ P 0
∀P m n.
(∀x. P x 0) ∧ (∀y. P 0 (Suc y)) ∧ (∀x y. P x y ⟶ P (Suc x)
(Suc y)) ⟶
P m n
∀P n. P 0 ∧ (∀n. P n ⟶ P (Suc n)) ⟶ P n
∀nat x2. nat = Suc x2 ⟶ nat ≠ 0
SMT: Names:
sorts:
Nat\$ = nat
Num\$ = num
A_word\$ = 'a word
L_itself\$ = 'l itself
Nat_int_fun\$ = nat ⇒ int
Nat_nat_fun\$ = nat ⇒ nat
Num0_itself\$ = 0 itself
Nat_bool_fun\$ = nat ⇒ bool
Nat_nat_bool_fun_fun\$ = nat ⇒ nat ⇒ bool
functions:
n\$ = n
msb\$ = msb
one\$ = num.One
suc\$ = Suc
bit0\$ = num.Bit0
less\$ = (<)
type\$ = TYPE('l)
zero\$ = 0
minus\$ = (-)
power\$ = (^)
len_of\$ = len_of
of_nat\$ = int
power\$a = (^)
fun_app\$ = SMT.fun_app
len_of\$a = len_of
numeral\$ = numeral
of_nat\$a = of_nat
fun_app\$a = SMT.fun_app
fun_app\$b = SMT.fun_app
fun_app\$c = SMT.fun_app
numeral\$a = numeral
word_of_int\$ = word_of_int
SMT: Problem:
; smt.random_seed=1 smt.refine_inj_axioms=false -T:3 -smt2
(set-option :produce-proofs true)
(declare-sort Nat\$ 0)
(declare-sort Num\$ 0)
(declare-sort A_word\$ 0)
(declare-sort L_itself\$ 0)
(declare-sort Nat_int_fun\$ 0)
(declare-sort Nat_nat_fun\$ 0)
(declare-sort Num0_itself\$ 0)
(declare-sort Nat_bool_fun\$ 0)
(declare-sort Nat_nat_bool_fun_fun\$ 0)
(declare-fun n\$ () Nat\$)
(declare-fun msb\$ (A_word\$) Bool)
(declare-fun one\$ () Num\$)
(declare-fun suc\$ (Nat\$) Nat\$)
(declare-fun bit0\$ (Num\$) Num\$)
(declare-fun less\$ () Nat_nat_bool_fun_fun\$)
(declare-fun type\$ () L_itself\$)
(declare-fun zero\$ () Nat\$)
(declare-fun minus\$ (Nat\$ Nat\$) Nat\$)
(declare-fun power\$ (Nat\$) Nat_nat_fun\$)
(declare-fun len_of\$ (L_itself\$) Nat\$)
(declare-fun of_nat\$ (Nat\$) Int)
(declare-fun power\$a (Int) Nat_int_fun\$)
(declare-fun fun_app\$ (Nat_bool_fun\$ Nat\$) Bool)
(declare-fun len_of\$a (Num0_itself\$) Nat\$)
(declare-fun numeral\$ (Num\$) Nat\$)
(declare-fun of_nat\$a (Nat\$) Nat\$)
(declare-fun fun_app\$a (Nat_nat_bool_fun_fun\$ Nat\$)
Nat_bool_fun\$)
(declare-fun fun_app\$b (Nat_nat_fun\$ Nat\$) Nat\$)
(declare-fun fun_app\$c (Nat_int_fun\$ Nat\$) Int)
(declare-fun numeral\$a (Num\$) Int)
(declare-fun word_of_int\$ (Int) A_word\$)
(assert (! (not false) :named a0))
(assert (! (fun_app\$ (fun_app\$a less\$ n\$) (fun_app\$b (power\$
(numeral\$ (bit0\$ one\$))) (minus\$ (len_of\$ type\$) (suc\$ zero\$)))) :named
a1))
(assert (! (msb\$ (word_of_int\$ (of_nat\$ n\$))) :named a2))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$ (fun_app\$a less\$ (fun_app\$b (power\$ (numeral\$ ?v0)) ?v1))
(of_nat\$a ?v2)) (fun_app\$ (fun_app\$a less\$ (fun_app\$b (power\$ (numeral\$
?v0)) ?v1)) ?v2))) :named a3))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$c (power\$a (numeral\$a ?v0)) ?v1) (of_nat\$ ?v2)) (fun_app\$
(fun_app\$a less\$ (fun_app\$b (power\$ (numeral\$ ?v0)) ?v1)) ?v2))) :named
a4))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (=
(fun_app\$ (fun_app\$a less\$ (of_nat\$a ?v0)) (fun_app\$b (power\$ (numeral\$
?v1)) ?v2)) (fun_app\$ (fun_app\$a less\$ ?v0) (fun_app\$b (power\$
(numeral\$ ?v1)) ?v2)))) :named a5))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (<
(of_nat\$ ?v0) (fun_app\$c (power\$a (numeral\$a ?v1)) ?v2)) (fun_app\$
(fun_app\$a less\$ ?v0) (fun_app\$b (power\$ (numeral\$ ?v1)) ?v2)))) :named
a6))
(assert (! (forall ((?v0 Int)) (= (< 0 (fun_app\$c (power\$a ?v0)
(numeral\$ (bit0\$ one\$)))) (not (= ?v0 0)))) :named a7))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$
(fun_app\$a less\$ zero\$) (fun_app\$b (power\$ (of_nat\$a ?v0)) ?v1)) (or
(fun_app\$ (fun_app\$a less\$ zero\$) ?v0) (= ?v1 zero\$)))) :named a8))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< 0 (fun_app\$c
(power\$a (of_nat\$ ?v0)) ?v1)) (or (fun_app\$ (fun_app\$a less\$ zero\$)
?v0) (= ?v1 zero\$)))) :named a9))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$b (power\$ (numeral\$ ?v0)) ?v1) (of_nat\$a ?v2)) (= (fun_app\$b
(power\$ (numeral\$ ?v0)) ?v1) ?v2))) :named a10))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$c (power\$a (numeral\$a ?v0)) ?v1) (of_nat\$ ?v2)) (= (fun_app\$b
(power\$ (numeral\$ ?v0)) ?v1) ?v2))) :named a11))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(of_nat\$a ?v0) (fun_app\$b (power\$ (numeral\$ ?v1)) ?v2)) (= ?v0
(fun_app\$b (power\$ (numeral\$ ?v1)) ?v2)))) :named a12))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(of_nat\$ ?v0) (fun_app\$c (power\$a (numeral\$a ?v1)) ?v2)) (= ?v0
(fun_app\$b (power\$ (numeral\$ ?v1)) ?v2)))) :named a13))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$ (fun_app\$a less\$ (fun_app\$b (power\$ (of_nat\$a ?v0)) ?v1))
(of_nat\$a ?v2)) (fun_app\$ (fun_app\$a less\$ (fun_app\$b (power\$ ?v0)
?v1)) ?v2))) :named a14))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$c (power\$a (of_nat\$ ?v0)) ?v1) (of_nat\$ ?v2)) (fun_app\$
(fun_app\$a less\$ (fun_app\$b (power\$ ?v0) ?v1)) ?v2))) :named a15))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$ (fun_app\$a less\$ (of_nat\$a ?v0)) (fun_app\$b (power\$ (of_nat\$a
?v1)) ?v2)) (fun_app\$ (fun_app\$a less\$ ?v0) (fun_app\$b (power\$ ?v1)
?v2)))) :named a16))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(of_nat\$ ?v0) (fun_app\$c (power\$a (of_nat\$ ?v1)) ?v2)) (fun_app\$
(fun_app\$a less\$ ?v0) (fun_app\$b (power\$ ?v1) ?v2)))) :named a17))
(assert (! (forall ((?v0 Int)) (= (= (fun_app\$c (power\$a ?v0)
(numeral\$ (bit0\$ one\$))) 0) (= ?v0 0))) :named a18))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$b (power\$ ?v0)
(numeral\$ (bit0\$ one\$))) zero\$) (= ?v0 zero\$))) :named a19))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$ (fun_app\$a less\$
zero\$) (of_nat\$a ?v0)) (fun_app\$ (fun_app\$a less\$ zero\$) ?v0))) :named
a20))
(assert (! (forall ((?v0 Nat\$)) (= (< 0 (of_nat\$ ?v0)) (fun_app\$
(fun_app\$a less\$ zero\$) ?v0))) :named a21))
(assert (! (fun_app\$ (fun_app\$a less\$ zero\$) (len_of\$ type\$))
:named a22))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$ (fun_app\$a less\$
zero\$) ?v0) (= (suc\$ (minus\$ ?v0 (suc\$ zero\$))) ?v0))) :named a23))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (suc\$ ?v0)
(suc\$ ?v1)) (= ?v0 ?v1))) :named a24))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (suc\$ ?v0)
(suc\$ ?v1)) (= ?v0 ?v1))) :named a25))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (of_nat\$a ?v0)
(of_nat\$a ?v1)) (= ?v0 ?v1))) :named a26))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (of_nat\$ ?v0)
(of_nat\$ ?v1)) (= ?v0 ?v1))) :named a27))
(assert (! (forall ((?v0 Nat\$)) (= (not (= ?v0 zero\$)) (fun_app\$
(fun_app\$a less\$ zero\$) ?v0))) :named a28))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$
(fun_app\$a less\$ (suc\$ ?v0)) (suc\$ ?v1)) (fun_app\$ (fun_app\$a less\$
?v0) ?v1))) :named a29))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$
(fun_app\$a less\$ ?v0) ?v1) (fun_app\$ (fun_app\$a less\$ (suc\$ ?v0)) (suc\$
?v1)))) :named a30))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$ (fun_app\$a less\$ ?v0)
(suc\$ ?v0))) :named a31))
(assert (! (forall ((?v0 Nat\$)) (= (minus\$ ?v0 ?v0) zero\$))
:named a32))
(assert (! (forall ((?v0 Nat\$)) (= (minus\$ zero\$ ?v0) zero\$))
:named a33))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (minus\$
(minus\$ (suc\$ ?v0) ?v1) (suc\$ ?v2)) (minus\$ (minus\$ ?v0 ?v1) ?v2)))
:named a34))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (minus\$ (suc\$ ?v0)
(suc\$ ?v1)) (minus\$ ?v0 ?v1))) :named a35))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$c (power\$a 0) (suc\$
?v0)) 0)) :named a36))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (power\$ zero\$)
(suc\$ ?v0)) zero\$)) :named a37))
(assert (! (forall ((?v0 Nat\$)) (= (= (of_nat\$a ?v0) zero\$) (=
?v0 zero\$))) :named a38))
(assert (! (forall ((?v0 Nat\$)) (= (= (of_nat\$ ?v0) 0) (= ?v0
zero\$))) :named a39))
(assert (! (forall ((?v0 Nat\$)) (= (= zero\$ (of_nat\$a ?v0)) (=
zero\$ ?v0))) :named a40))
(assert (! (forall ((?v0 Nat\$)) (= (= 0 (of_nat\$ ?v0)) (= zero\$
?v0))) :named a41))
(assert (! (= (of_nat\$a zero\$) zero\$) :named a42))
(assert (! (= (of_nat\$ zero\$) 0) :named a43))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$
(fun_app\$a less\$ (of_nat\$a ?v0)) (of_nat\$a ?v1)) (fun_app\$ (fun_app\$a
less\$ ?v0) ?v1))) :named a44))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< (of_nat\$ ?v0)
(of_nat\$ ?v1)) (fun_app\$ (fun_app\$a less\$ ?v0) ?v1))) :named a45))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$c (power\$a 0)
(numeral\$ ?v0)) 0)) :named a46))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$b (power\$ zero\$)
(numeral\$ ?v0)) zero\$)) :named a47))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$ (fun_app\$a less\$
zero\$) (suc\$ ?v0))) :named a48))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$ (fun_app\$a less\$
?v0) (suc\$ zero\$)) (= ?v0 zero\$))) :named a49))
(assert (! (forall ((?v0 Int)) (! (= (fun_app\$c (power\$a ?v0)
(suc\$ zero\$)) ?v0) :pattern ((power\$a ?v0)))) :named a50))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$b (power\$ ?v0)
(suc\$ zero\$)) ?v0) :pattern ((power\$ ?v0)))) :named a51))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$
(fun_app\$a less\$ zero\$) (minus\$ ?v0 ?v1)) (fun_app\$ (fun_app\$a less\$
?v1) ?v0))) :named a52))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$b
(power\$ ?v0) ?v1) (suc\$ zero\$)) (or (= ?v1 zero\$) (= ?v0 (suc\$
zero\$))))) :named a53))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$b (power\$ (suc\$
zero\$)) ?v0) (suc\$ zero\$)) :pattern ((fun_app\$b (power\$ (suc\$ zero\$))
?v0)))) :named a54))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$
(fun_app\$a less\$ zero\$) (fun_app\$b (power\$ ?v0) ?v1)) (or (fun_app\$
(fun_app\$a less\$ zero\$) ?v0) (= ?v1 zero\$)))) :named a55))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(of_nat\$a ?v0) (fun_app\$b (power\$ (of_nat\$a ?v1)) ?v2)) (= ?v0
(fun_app\$b (power\$ ?v1) ?v2)))) :named a56))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(of_nat\$ ?v0) (fun_app\$c (power\$a (of_nat\$ ?v1)) ?v2)) (= ?v0
(fun_app\$b (power\$ ?v1) ?v2)))) :named a57))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$b (power\$ (of_nat\$a ?v0)) ?v1) (of_nat\$a ?v2)) (= (fun_app\$b
(power\$ ?v0) ?v1) ?v2))) :named a58))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$c (power\$a (of_nat\$ ?v0)) ?v1) (of_nat\$ ?v2)) (= (fun_app\$b
(power\$ ?v0) ?v1) ?v2))) :named a59))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (of_nat\$a
(fun_app\$b (power\$ ?v0) ?v1)) (fun_app\$b (power\$ (of_nat\$a ?v0)) ?v1)))
:named a60))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (of_nat\$
(fun_app\$b (power\$ ?v0) ?v1)) (fun_app\$c (power\$a (of_nat\$ ?v0)) ?v1)))
:named a61))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (= (= (fun_app\$c
(power\$a ?v0) ?v1) 0) (and (= ?v0 0) (fun_app\$ (fun_app\$a less\$ zero\$)
?v1)))) :named a62))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$b
(power\$ ?v0) ?v1) zero\$) (and (= ?v0 zero\$) (fun_app\$ (fun_app\$a less\$
zero\$) ?v1)))) :named a63))
(assert (! (forall ((?v0 Num0_itself\$)) (! (= (len_of\$a ?v0)
zero\$) :pattern ((len_of\$a ?v0)))) :named a64))
(assert (! (forall ((?v0 Nat\$)) (=> (and (=> (= ?v0 zero\$)
false) (=> (not (= ?v0 zero\$)) false)) false)) :named a65))
(assert (! (forall ((?v0 Nat\$)) (not (= ?v0 (suc\$ ?v0)))) :named
a66))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= (suc\$ ?v0)
(suc\$ ?v1)) (= ?v0 ?v1))) :named a67))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (not (= ?v0
?v1)) (and (=> (fun_app\$ (fun_app\$a less\$ ?v0) ?v1) false) (=>
(fun_app\$ (fun_app\$a less\$ ?v1) ?v0) false))) false)) :named a68))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (forall
((?v2 Nat\$)) (=> (not (fun_app\$ ?v0 ?v2)) (exists ((?v3 Nat\$)) (and
(fun_app\$ (fun_app\$a less\$ ?v3) ?v2) (not (fun_app\$ ?v0 ?v3))))))
(fun_app\$ ?v0 ?v1))) :named a69))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (forall
((?v2 Nat\$)) (=> (forall ((?v3 Nat\$)) (=> (fun_app\$ (fun_app\$a less\$
?v3) ?v2) (fun_app\$ ?v0 ?v3))) (fun_app\$ ?v0 ?v2))) (fun_app\$ ?v0
?v1))) :named a70))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$ (fun_app\$a less\$
?v0) ?v0) false)) :named a71))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$
(fun_app\$a less\$ ?v0) ?v1) (not (= ?v0 ?v1)))) :named a72))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$
(fun_app\$a less\$ ?v0) ?v1) (not (= ?v1 ?v0)))) :named a73))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$ (fun_app\$a less\$
?v0) ?v0))) :named a74))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (not (= ?v0 ?v1))
(or (fun_app\$ (fun_app\$a less\$ ?v0) ?v1) (fun_app\$ (fun_app\$a less\$
?v1) ?v0)))) :named a75))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (minus\$
(minus\$ ?v0 ?v1) ?v2) (minus\$ (minus\$ ?v0 ?v2) ?v1))) :named a76))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (=> (not (= ?v0 0))
(not (= (fun_app\$c (power\$a ?v0) ?v1) 0)))) :named a77))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (not (= ?v0
zero\$)) (not (= (fun_app\$b (power\$ ?v0) ?v1) zero\$)))) :named a78))
(assert (! (forall ((?v0 Nat\$)) (=> (not (= ?v0 zero\$)) (exists
((?v1 Nat\$)) (= ?v0 (suc\$ ?v1))))) :named a79))
(assert (! (forall ((?v0 Nat\$)) (=> (and (=> (= ?v0 zero\$)
false) (forall ((?v1 Nat\$)) (=> (= ?v0 (suc\$ ?v1)) false))) false))
:named a80))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (suc\$ ?v0))))
:named a81))
(assert (! (forall ((?v0 Nat\$)) (=> (= zero\$ (suc\$ ?v0)) false))
:named a82))
(assert (! (forall ((?v0 Nat\$)) (=> (= (suc\$ ?v0) zero\$) false))
:named a83))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$ ?v0 ?v1) (forall ((?v2 Nat\$)) (=> (fun_app\$ ?v0 (suc\$ ?v2))
(fun_app\$ ?v0 ?v2)))) (fun_app\$ ?v0 zero\$))) :named a84))
(assert (! (forall ((?v0 Nat_nat_bool_fun_fun\$) (?v1 Nat\$) (?v2
Nat\$)) (=> (and (forall ((?v3 Nat\$)) (fun_app\$ (fun_app\$a ?v0 ?v3)
zero\$)) (and (forall ((?v3 Nat\$)) (fun_app\$ (fun_app\$a ?v0 zero\$) (suc\$
?v3))) (forall ((?v3 Nat\$) (?v4 Nat\$)) (=> (fun_app\$ (fun_app\$a ?v0
?v3) ?v4) (fun_app\$ (fun_app\$a ?v0 (suc\$ ?v3)) (suc\$ ?v4))))))
(fun_app\$ (fun_app\$a ?v0 ?v1) ?v2))) :named a85))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$ ?v0 zero\$) (forall ((?v2 Nat\$)) (=> (fun_app\$ ?v0 ?v2)
(fun_app\$ ?v0 (suc\$ ?v2))))) (fun_app\$ ?v0 ?v1))) :named a86))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= ?v0 (suc\$
?v1)) (not (= ?v0 zero\$)))) :named a87))
(check-sat)
(get-proof)

SMT: Invoking SMT solver "z3" ...
SMT: Assertions:
¬ False  [¬ False]
n < 2 ^ (LENGTH('l) - Suc 0)
msb (word_of_int (int n))
∀i n x. (numeral i ^ n < of_nat x) = (numeral i ^ n < x)
∀i n x. (numeral i ^ n < int x) = (numeral i ^ n < x)
∀x i n. (of_nat x < numeral i ^ n) = (x < numeral i ^ n)
∀x i n. (int x < numeral i ^ n) = (x < numeral i ^ n)
∀a. (0 < a⇧2) = (a ≠ 0)
∀x n. (0 < of_nat x ^ n) = (0 < x ∨ n = 0)
∀x n. (0 < int x ^ n) = (0 < x ∨ n = 0)
∀x n y. (numeral x ^ n = of_nat y) = (numeral x ^ n = y)
∀x n y. (numeral x ^ n = int y) = (numeral x ^ n = y)
∀y x n. (of_nat y = numeral x ^ n) = (y = numeral x ^ n)
∀y x n. (int y = numeral x ^ n) = (y = numeral x ^ n)
∀b w x. (of_nat b ^ w < of_nat x) = (b ^ w < x)
∀b w x. (int b ^ w < int x) = (b ^ w < x)
∀x b w. (of_nat x < of_nat b ^ w) = (x < b ^ w)
∀x b w. (int x < int b ^ w) = (x < b ^ w)
∀a. (a⇧2 = 0) = (a = 0)
∀a. (a⇧2 = 0) = (a = 0)
∀n. (0 < of_nat n) = (0 < n)
∀n. (0 < int n) = (0 < n)
0 < LENGTH('l)
∀n>0. Suc (n - Suc 0) = n
∀nat nat'. (Suc nat = Suc nat') = (nat = nat')
∀x2 y2. (Suc x2 = Suc y2) = (x2 = y2)
∀m n. (of_nat m = of_nat n) = (m = n)
∀m n. (int m = int n) = (m = n)
∀n. (n ≠ 0) = (0 < n)
∀m n. (Suc m < Suc n) = (m < n)
∀m n. m < n ⟶ Suc m < Suc n
∀n. n < Suc n
∀m. m - m = 0
∀n. 0 - n = 0
∀m n k. Suc m - n - Suc k = m - n - k
∀m n. Suc m - Suc n = m - n
∀n. 0 ^ Suc n = 0
∀n. 0 ^ Suc n = 0
∀m. (of_nat m = 0) = (m = 0)
∀m. (int m = 0) = (m = 0)
∀n. (0 = of_nat n) = (0 = n)
∀n. (0 = int n) = (0 = n)
of_nat 0 = 0
int 0 = 0
∀m n. (of_nat m < of_nat n) = (m < n)
∀m n. (int m < int n) = (m < n)
∀k. 0 ^ numeral k = 0
∀k. 0 ^ numeral k = 0
∀n. 0 < Suc n
∀n. (n < Suc 0) = (n = 0)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀a. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil)
SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀n m. (0 < n - m) = (m < n)
∀x m. (x ^ m = Suc 0) = (m = 0 ∨ x = Suc 0)
∀n. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (Suc 0 ^ n))
SMT.Symb_Nil)
SMT.Symb_Nil)
(Suc 0 ^ n = Suc 0)
∀x n. (0 < x ^ n) = (0 < x ∨ n = 0)
∀x b w. (of_nat x = of_nat b ^ w) = (x = b ^ w)
∀x b w. (int x = int b ^ w) = (x = b ^ w)
∀b w x. (of_nat b ^ w = of_nat x) = (b ^ w = x)
∀b w x. (int b ^ w = int x) = (b ^ w = x)
∀m n. of_nat (m ^ n) = of_nat m ^ n
∀m n. int (m ^ n) = int m ^ n
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
∀uu. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (len_of uu))
SMT.Symb_Nil)
SMT.Symb_Nil)
(len_of uu = 0)
∀nat. (nat = 0 ⟶ False) ∧ (nat ≠ 0 ⟶ False) ⟶ False
SMT: Names:
sorts:
Nat\$ = nat
Num\$ = num
A_word\$ = 'a word
L_itself\$ = 'l itself
Nat_int_fun\$ = nat ⇒ int
Nat_nat_fun\$ = nat ⇒ nat
Num0_itself\$ = 0 itself
functions:
n\$ = n
msb\$ = msb
one\$ = num.One
suc\$ = Suc
bit0\$ = num.Bit0
less\$ = (<)
type\$ = TYPE('l)
zero\$ = 0
minus\$ = (-)
power\$ = (^)
len_of\$ = len_of
of_nat\$ = int
power\$a = (^)
fun_app\$ = SMT.fun_app
len_of\$a = len_of
numeral\$ = numeral
of_nat\$a = of_nat
fun_app\$a = SMT.fun_app
numeral\$a = numeral
word_of_int\$ = word_of_int
SMT: Problem:
; smt.random_seed=1 smt.refine_inj_axioms=false -T:3 -smt2
(set-option :produce-proofs true)
(declare-sort Nat\$ 0)
(declare-sort Num\$ 0)
(declare-sort A_word\$ 0)
(declare-sort L_itself\$ 0)
(declare-sort Nat_int_fun\$ 0)
(declare-sort Nat_nat_fun\$ 0)
(declare-sort Num0_itself\$ 0)
(declare-fun n\$ () Nat\$)
(declare-fun msb\$ (A_word\$) Bool)
(declare-fun one\$ () Num\$)
(declare-fun suc\$ (Nat\$) Nat\$)
(declare-fun bit0\$ (Num\$) Num\$)
(declare-fun less\$ (Nat\$ Nat\$) Bool)
(declare-fun type\$ () L_itself\$)
(declare-fun zero\$ () Nat\$)
(declare-fun minus\$ (Nat\$ Nat\$) Nat\$)
(declare-fun power\$ (Nat\$) Nat_nat_fun\$)
(declare-fun len_of\$ (L_itself\$) Nat\$)
(declare-fun of_nat\$ (Nat\$) Int)
(declare-fun power\$a (Int) Nat_int_fun\$)
(declare-fun fun_app\$ (Nat_nat_fun\$ Nat\$) Nat\$)
(declare-fun len_of\$a (Num0_itself\$) Nat\$)
(declare-fun numeral\$ (Num\$) Nat\$)
(declare-fun of_nat\$a (Nat\$) Nat\$)
(declare-fun fun_app\$a (Nat_int_fun\$ Nat\$) Int)
(declare-fun numeral\$a (Num\$) Int)
(declare-fun word_of_int\$ (Int) A_word\$)
(assert (! (not false) :named a0))
(assert (! (less\$ n\$ (fun_app\$ (power\$ (numeral\$ (bit0\$ one\$)))
(minus\$ (len_of\$ type\$) (suc\$ zero\$)))) :named a1))
(assert (! (msb\$ (word_of_int\$ (of_nat\$ n\$))) :named a2))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (less\$
(fun_app\$ (power\$ (numeral\$ ?v0)) ?v1) (of_nat\$a ?v2)) (less\$ (fun_app\$
(power\$ (numeral\$ ?v0)) ?v1) ?v2))) :named a3))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$a (power\$a (numeral\$a ?v0)) ?v1) (of_nat\$ ?v2)) (less\$
(fun_app\$ (power\$ (numeral\$ ?v0)) ?v1) ?v2))) :named a4))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (less\$
(of_nat\$a ?v0) (fun_app\$ (power\$ (numeral\$ ?v1)) ?v2)) (less\$ ?v0
(fun_app\$ (power\$ (numeral\$ ?v1)) ?v2)))) :named a5))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (<
(of_nat\$ ?v0) (fun_app\$a (power\$a (numeral\$a ?v1)) ?v2)) (less\$ ?v0
(fun_app\$ (power\$ (numeral\$ ?v1)) ?v2)))) :named a6))
(assert (! (forall ((?v0 Int)) (= (< 0 (fun_app\$a (power\$a ?v0)
(numeral\$ (bit0\$ one\$)))) (not (= ?v0 0)))) :named a7))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (less\$ zero\$
(fun_app\$ (power\$ (of_nat\$a ?v0)) ?v1)) (or (less\$ zero\$ ?v0) (= ?v1
zero\$)))) :named a8))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< 0 (fun_app\$a
(power\$a (of_nat\$ ?v0)) ?v1)) (or (less\$ zero\$ ?v0) (= ?v1 zero\$))))
:named a9))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$ (power\$ (numeral\$ ?v0)) ?v1) (of_nat\$a ?v2)) (= (fun_app\$
(power\$ (numeral\$ ?v0)) ?v1) ?v2))) :named a10))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$a (power\$a (numeral\$a ?v0)) ?v1) (of_nat\$ ?v2)) (= (fun_app\$
(power\$ (numeral\$ ?v0)) ?v1) ?v2))) :named a11))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(of_nat\$a ?v0) (fun_app\$ (power\$ (numeral\$ ?v1)) ?v2)) (= ?v0 (fun_app\$
(power\$ (numeral\$ ?v1)) ?v2)))) :named a12))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(of_nat\$ ?v0) (fun_app\$a (power\$a (numeral\$a ?v1)) ?v2)) (= ?v0
(fun_app\$ (power\$ (numeral\$ ?v1)) ?v2)))) :named a13))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (less\$
(fun_app\$ (power\$ (of_nat\$a ?v0)) ?v1) (of_nat\$a ?v2)) (less\$ (fun_app\$
(power\$ ?v0) ?v1) ?v2))) :named a14))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$a (power\$a (of_nat\$ ?v0)) ?v1) (of_nat\$ ?v2)) (less\$ (fun_app\$
(power\$ ?v0) ?v1) ?v2))) :named a15))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (less\$
(of_nat\$a ?v0) (fun_app\$ (power\$ (of_nat\$a ?v1)) ?v2)) (less\$ ?v0
(fun_app\$ (power\$ ?v1) ?v2)))) :named a16))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(of_nat\$ ?v0) (fun_app\$a (power\$a (of_nat\$ ?v1)) ?v2)) (less\$ ?v0
(fun_app\$ (power\$ ?v1) ?v2)))) :named a17))
(assert (! (forall ((?v0 Int)) (= (= (fun_app\$a (power\$a ?v0)
(numeral\$ (bit0\$ one\$))) 0) (= ?v0 0))) :named a18))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$ (power\$ ?v0)
(numeral\$ (bit0\$ one\$))) zero\$) (= ?v0 zero\$))) :named a19))
(assert (! (forall ((?v0 Nat\$)) (= (less\$ zero\$ (of_nat\$a ?v0))
(less\$ zero\$ ?v0))) :named a20))
(assert (! (forall ((?v0 Nat\$)) (= (< 0 (of_nat\$ ?v0)) (less\$
zero\$ ?v0))) :named a21))
(assert (! (less\$ zero\$ (len_of\$ type\$)) :named a22))
(assert (! (forall ((?v0 Nat\$)) (=> (less\$ zero\$ ?v0) (= (suc\$
(minus\$ ?v0 (suc\$ zero\$))) ?v0))) :named a23))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (suc\$ ?v0)
(suc\$ ?v1)) (= ?v0 ?v1))) :named a24))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (suc\$ ?v0)
(suc\$ ?v1)) (= ?v0 ?v1))) :named a25))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (of_nat\$a ?v0)
(of_nat\$a ?v1)) (= ?v0 ?v1))) :named a26))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (of_nat\$ ?v0)
(of_nat\$ ?v1)) (= ?v0 ?v1))) :named a27))
(assert (! (forall ((?v0 Nat\$)) (= (not (= ?v0 zero\$)) (less\$
zero\$ ?v0))) :named a28))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (less\$ (suc\$ ?v0)
(suc\$ ?v1)) (less\$ ?v0 ?v1))) :named a29))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (less\$ ?v0 ?v1)
(less\$ (suc\$ ?v0) (suc\$ ?v1)))) :named a30))
(assert (! (forall ((?v0 Nat\$)) (less\$ ?v0 (suc\$ ?v0))) :named
a31))
(assert (! (forall ((?v0 Nat\$)) (= (minus\$ ?v0 ?v0) zero\$))
:named a32))
(assert (! (forall ((?v0 Nat\$)) (= (minus\$ zero\$ ?v0) zero\$))
:named a33))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (minus\$
(minus\$ (suc\$ ?v0) ?v1) (suc\$ ?v2)) (minus\$ (minus\$ ?v0 ?v1) ?v2)))
:named a34))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (minus\$ (suc\$ ?v0)
(suc\$ ?v1)) (minus\$ ?v0 ?v1))) :named a35))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$a (power\$a 0) (suc\$
?v0)) 0)) :named a36))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$ (power\$ zero\$)
(suc\$ ?v0)) zero\$)) :named a37))
(assert (! (forall ((?v0 Nat\$)) (= (= (of_nat\$a ?v0) zero\$) (=
?v0 zero\$))) :named a38))
(assert (! (forall ((?v0 Nat\$)) (= (= (of_nat\$ ?v0) 0) (= ?v0
zero\$))) :named a39))
(assert (! (forall ((?v0 Nat\$)) (= (= zero\$ (of_nat\$a ?v0)) (=
zero\$ ?v0))) :named a40))
(assert (! (forall ((?v0 Nat\$)) (= (= 0 (of_nat\$ ?v0)) (= zero\$
?v0))) :named a41))
(assert (! (= (of_nat\$a zero\$) zero\$) :named a42))
(assert (! (= (of_nat\$ zero\$) 0) :named a43))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (less\$ (of_nat\$a
?v0) (of_nat\$a ?v1)) (less\$ ?v0 ?v1))) :named a44))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< (of_nat\$ ?v0)
(of_nat\$ ?v1)) (less\$ ?v0 ?v1))) :named a45))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$a (power\$a 0)
(numeral\$ ?v0)) 0)) :named a46))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$ (power\$ zero\$)
(numeral\$ ?v0)) zero\$)) :named a47))
(assert (! (forall ((?v0 Nat\$)) (less\$ zero\$ (suc\$ ?v0))) :named
a48))
(assert (! (forall ((?v0 Nat\$)) (= (less\$ ?v0 (suc\$ zero\$)) (=
?v0 zero\$))) :named a49))
(assert (! (forall ((?v0 Int)) (! (= (fun_app\$a (power\$a ?v0)
(suc\$ zero\$)) ?v0) :pattern ((power\$a ?v0)))) :named a50))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$ (power\$ ?v0)
(suc\$ zero\$)) ?v0) :pattern ((power\$ ?v0)))) :named a51))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (less\$ zero\$
(minus\$ ?v0 ?v1)) (less\$ ?v1 ?v0))) :named a52))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$
(power\$ ?v0) ?v1) (suc\$ zero\$)) (or (= ?v1 zero\$) (= ?v0 (suc\$
zero\$))))) :named a53))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$ (power\$ (suc\$
zero\$)) ?v0) (suc\$ zero\$)) :pattern ((fun_app\$ (power\$ (suc\$ zero\$))
?v0)))) :named a54))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (less\$ zero\$
(fun_app\$ (power\$ ?v0) ?v1)) (or (less\$ zero\$ ?v0) (= ?v1 zero\$))))
:named a55))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(of_nat\$a ?v0) (fun_app\$ (power\$ (of_nat\$a ?v1)) ?v2)) (= ?v0 (fun_app\$
(power\$ ?v1) ?v2)))) :named a56))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(of_nat\$ ?v0) (fun_app\$a (power\$a (of_nat\$ ?v1)) ?v2)) (= ?v0 (fun_app\$
(power\$ ?v1) ?v2)))) :named a57))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$ (power\$ (of_nat\$a ?v0)) ?v1) (of_nat\$a ?v2)) (= (fun_app\$
(power\$ ?v0) ?v1) ?v2))) :named a58))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$a (power\$a (of_nat\$ ?v0)) ?v1) (of_nat\$ ?v2)) (= (fun_app\$
(power\$ ?v0) ?v1) ?v2))) :named a59))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (of_nat\$a
(fun_app\$ (power\$ ?v0) ?v1)) (fun_app\$ (power\$ (of_nat\$a ?v0)) ?v1)))
:named a60))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (of_nat\$ (fun_app\$
(power\$ ?v0) ?v1)) (fun_app\$a (power\$a (of_nat\$ ?v0)) ?v1))) :named
a61))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (= (= (fun_app\$a
(power\$a ?v0) ?v1) 0) (and (= ?v0 0) (less\$ zero\$ ?v1)))) :named a62))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$
(power\$ ?v0) ?v1) zero\$) (and (= ?v0 zero\$) (less\$ zero\$ ?v1)))) :named
a63))
(assert (! (forall ((?v0 Num0_itself\$)) (! (= (len_of\$a ?v0)
zero\$) :pattern ((len_of\$a ?v0)))) :named a64))
(assert (! (forall ((?v0 Nat\$)) (=> (and (=> (= ?v0 zero\$)
false) (=> (not (= ?v0 zero\$)) false)) false)) :named a65))
(check-sat)
(get-proof)

SMT: Invoking SMT solver "z3" ...
"z3": A prover error occurred:
Solver "z3" failed -- enable tracing using the "smt_trace" option for
details

===============================================

Example for CVC4 (It's the same goal as above, but I cannot reproduce
this in isolation, only in context of my large theory)

Sledgehammering...
Proof found...
SMT: Assertions:
¬ False  [¬ False]
n < 2 ^ (LENGTH('l) - Suc 0)
msb (word_of_int (int n))
∀i n x. (numeral i ^ n < of_nat x) = (numeral i ^ n < x)
∀i n x. (numeral i ^ n < int x) = (numeral i ^ n < x)
∀x. SCAST('l signed → 'l) (of_int x) = of_int x
∀x i n. (of_nat x < numeral i ^ n) = (x < numeral i ^ n)
∀x i n. (int x < numeral i ^ n) = (x < numeral i ^ n)
∀x. SCAST('l → 'l signed) (of_int x) = of_int x
∀x n. (0 < of_nat x ^ n) = (0 < x ∨ n = 0)
∀x n. (0 < int x ^ n) = (0 < x ∨ n = 0)
1 = Suc 0
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb a))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb a = (2 ^ (LENGTH('l) - Suc 0) ≤ a))
∀a. (0 < a⇧2) = (a ≠ 0)
n < 2 ^ (LENGTH('l) - Suc 0) ⟶ n = nat (sint (word_of_int (int
n)))
∀x n y. (numeral x ^ n = of_nat y) = (numeral x ^ n = y)
∀x n y. (numeral x ^ n = int y) = (numeral x ^ n = y)
∀n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (of_nat
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(of_nat n = word_of_int (int n))
∀y x n. (of_nat y = numeral x ^ n) = (y = numeral x ^ n)
∀y x n. (int y = numeral x ^ n) = (y = numeral x ^ n)
∀b w x. (of_nat b ^ w < of_nat x) = (b ^ w < x)
∀b w x. (int b ^ w < int x) = (b ^ w < x)
∀a P. (a ∈ Collect P) = P a
∀a P. (a ∈ Collect P) = P a
∀a P. (a ∈ Collect P) = P a
td_ext sint word_of_int (sints LENGTH('l))
(λw. (w + 2 ^ (LENGTH('l) - 1)) mod 2 ^ LENGTH('l) - 2 ^
(LENGTH('l) - 1))
∀x b w. (of_nat x < of_nat b ^ w) = (x < b ^ w)
∀x b w. (int x < int b ^ w) = (x < b ^ w)
0 < LENGTH('l)
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (size w))
SMT.Symb_Nil) SMT.Symb_Nil)
(size w = LENGTH('l))
∀n>0. Suc (n - Suc 0) = n
∀n. n < Suc n
∀n. (0 < of_nat n) = (0 < n)
∀n. (0 < int n) = (0 < n)
∀v<2 ^ (LENGTH('l) - 1). ¬ msb v
∀a x. a < 2 ^ (x - Suc 0) ⟶ a < 2 ^ x
∀a. (a⇧2 = 0) = (a = 0)
∀a. (a⇧2 = 0) = (a = 0)
∀n. (n < Suc 0) = (n = 0)
∀a. (a - Suc 0 < a) = (a ≠ 0)
∀x. unat x < 2 ^ LENGTH('l)
of_nat 0 = 0
of_nat 0 = 0
of_nat 0 = 0
int 0 = 0
∀n. (n ≠ 0) = (0 < n)
∀p x. p < 2 ^ x ∧ x < LENGTH('l) ⟶ of_nat p < 2 ^ x
∀n m. 0 < n ∧ 0 < m ⟶ m - n < m
∀x2 y2. (Suc x2 = Suc y2) = (x2 = y2)
∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (y ≤ x) =
(of_nat y ≤ of_nat x)
∀nat nat'. (Suc nat = Suc nat') = (nat = nat')
∀n. 0 < numeral n
∀n. 0 < numeral n
∀m n. (of_nat m = of_nat n) = (m = n)
∀m n. (int m = int n) = (m = n)
∀n. 0 < Suc n
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = (2 ^ (LENGTH('l) - 1) ≤ unat w))
∀m n. Suc m - Suc n = m - n
∀n. 2 ^ n = of_nat (2 ^ n)
∀m n. (Suc m < Suc n) = (m < n)
∀w. numeral w < 2 ^ (LENGTH('l) - Suc 0) ⟶ ¬ msb (numeral w)
∀x y z. x ≤ y ∧ y < z ⟶ x < z
∀x y z. x ≤ y ∧ y < z ⟶ x < z
∀x y z. x ≤ y ∧ y < z ⟶ x < z
∀x y z. x ≤ y ∧ y < z ⟶ x < z
∀m n. m < n ⟶ Suc m < Suc n
∀w n. is_aligned w n ⟶ (∃q. w = 2 ^ n * of_nat q ∧ q < 2 ^
(LENGTH('l) - n))
∀m n. of_nat (m ^ n) = of_nat m ^ n
∀m n. of_nat (m ^ n) = of_nat m ^ n
∀m n. int (m ^ n) = int m ^ n
∀xs i. xs[i := xs ! i] = xs
∀m. m - m = 0
∀x. - (2 ^ (LENGTH('l) - Suc 0)) ≤ sint x ∧ sint x < 2 ^
(LENGTH('l) - Suc 0)
∀m n k. Suc m - n - Suc k = m - n - k
∀y x. (y ≤ x) = (¬ x < y)
∀m. (of_nat m = 0) = (m = 0)
∀m. (int m = 0) = (m = 0)
∀n. 0 - n = 0
∀x n. (x = sbintrunc n x) = (x ∈ range (sbintrunc n))
∀a n. 0 < a ⟶ 0 < a ^ n
∀a n. 0 < a ⟶ 0 < a ^ n
∀x n. (0 < x ^ n) = (0 < x ∨ n = 0)
∀k. 0 ^ numeral k = 0
∀k. 0 ^ numeral k = 0
∀k. 0 ^ numeral k = 0
∀k. 0 ^ numeral k = 0
∀n. 0 ^ Suc n = 0
∀n. 0 ^ Suc n = 0
∀n. 0 ^ Suc n = 0
∀n. 0 ^ Suc n = 0
∀m n. (of_nat m < of_nat n) = (m < n)
∀m n. (int m < int n) = (m < n)
∀a b. sint a smod sint b < 2 ^ (LENGTH('l) - Suc 0)
∀n m. (0 < n - m) = (m < n)
∀P n. P 0 ∧ (∀n. P n ⟶ P (Suc n)) ⟶ P n
∀n. sints n = {i. - (2 ^ (n - 1)) ≤ i ∧ i < 2 ^ (n - 1)}
∀n. (0 = of_nat n) = (0 = n)
∀n. (0 = int n) = (0 = n)
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
td_ext sint word_of_int (sints LENGTH('l)) (sbintrunc
(LENGTH('l) - 1))
sint (2 ^ (LENGTH('l) - Suc 0)) = - (2 ^ (LENGTH('l) - Suc 0))
∀x. x ≤ x
∀x. x ≤ x
∀x. x ≤ x
∀x. x ≤ x
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = w !! (LENGTH('l) - 1))
∀n. ¬ n < n
∀n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (Suc 0 ^
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(Suc 0 ^ n = Suc 0)
sint (- (2 ^ (LENGTH('l) - Suc 0))) = - (2 ^ (LENGTH('l) - Suc
0))
∀n. of_nat (numeral n) = numeral n
∀n. of_nat (numeral n) = numeral n
∀n. int (numeral n) = numeral n
∀n. word_of_int (2 ^ n) = 2 ^ n
∀x. msb (word_of_int x) = bin_nth x (LENGTH('l) - 1)
∀a b. - (2 ^ (LENGTH('l) - Suc 0)) ≤ sint a smod sint b
∀a b. (sint a sdiv sint b < 2 ^ (LENGTH('l) - Suc 0)) =
(a = - (2 ^ (LENGTH('l) - Suc 0)) ⟶ b ≠ - 1)
∀x m. (x ^ m = Suc 0) = (m = 0 ∨ x = Suc 0)
∀n<LENGTH('l). unat (2 ^ n) = 2 ^ n
∀n w. n < LENGTH('l) ⟶ w && mask n < 2 ^ n
∀x y. x ≠ y ∧ (x < y ⟶ False) ∧ (y < x ⟶ False) ⟶ False
∀x. ¬ x < x
∀x. ¬ x < x
∀x. ¬ x < x
∀x. ¬ x < x
∀i m n. 0 < i ∧ i ^ m < i ^ n ⟶ m < n
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb a))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb a = (bin_sign (sint a) = - 1))
∀x b w. (of_nat x = of_nat b ^ w) = (x = b ^ w)
∀x b w. (int x = int b ^ w) = (x = b ^ w)
∀P Q. (∀x. P x = Q x) ⟶ Collect P = Collect Q
∀P Q. (∀x. P x = Q x) ⟶ Collect P = Collect Q
0 = word_of_int 0
0 = word_of_int 0
∀b w x. (of_nat b ^ w = of_nat x) = (b ^ w = x)
∀b w x. (int b ^ w = int x) = (b ^ w = x)
∀k sz. k < 2 ^ (LENGTH('l) - sz) ⟶ unat (2 ^ sz * of_nat k) = 2
^ sz * k
2 = Suc (Suc 0)
∀w. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (SCAST('l → 'l) w))
SMT.Symb_Nil) SMT.Symb_Nil)
(SCAST('l → 'l) w = word_of_int (sint w))
∀b. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (numeral
b)) SMT.Symb_Nil) SMT.Symb_Nil)
(numeral b = word_of_int (numeral b))
∀n. of_nat n = 0 ∧ n < 2 ^ LENGTH('l signed) ⟶ n = 0
∀n. of_nat n = 0 ∧ n < 2 ^ LENGTH('l) ⟶ n = 0
∀a b. - (2 ^ (LENGTH('l) - Suc 0)) ≤ sint a sdiv sint b
∀k. 0 < k ∧ k < 2 ^ LENGTH('l signed) ⟶ of_nat k ≠ 0
∀k. 0 < k ∧ k < 2 ^ LENGTH('l) ⟶ of_nat k ≠ 0
∀a b. (sint a sdiv sint b < 2 ^ (size a - 1)) = (a ≠ - (2 ^
(size a - 1)) ∨ b ≠ - 1)
∀m n. m - n ≤ m
∀n i. 0 < n ⟶ n - Suc i < n
∀x. unat (of_nat x) = x mod 2 ^ LENGTH('l)
∀A. {x. x ∈ A} = A
∀A. {x. x ∈ A} = A
∀A. {x. x ∈ A} = A
∀n m k. n < 2 ^ (m - k) ∧ k ≤ m ∧ m < LENGTH('l) ⟶ of_nat n * 2
^ k < 2 ^ m
∀m n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (m mod
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(m < n ⟶ m mod n = m)
∀w n. is_aligned w n ∧ (∀q. w = 2 ^ n * of_nat q ∧ q < 2 ^
(LENGTH('l) - n) ⟶ False) ⟶ False
∀n q m. 2 ^ n * q < 2 ^ m ⟶ q < 2 ^ (m - n)
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = (w >> LENGTH('l signed) - 1 ≠ 0))
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = (w >> LENGTH('l) - 1 ≠ 0))
∀P n. (∀n. ¬ P n ⟶ (∃m<n. ¬ P m)) ⟶ P n
∀P n. (∀n. (∀m<n. P m) ⟶ P n) ⟶ P n
∀a b. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (a ≤
b)) SMT.Symb_Nil) SMT.Symb_Nil)
((a ≤ b) = (unat a ≤ unat b))
∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (y < x) =
(of_nat y < of_nat x)
∀x<2 ^ LENGTH('l). unat (of_nat x) = x
∀x y. (¬ x ≤ y) = (y < x)
∀x n. x < 2 ^ (LENGTH('l signed) - n) ∧ n < LENGTH('l signed) ∧
x ≠ 0 ⟶ x * 2 ^ n ≠ 0
∀x n. x < 2 ^ (LENGTH('l) - n) ∧ n < LENGTH('l) ∧ x ≠ 0 ⟶ x * 2
^ n ≠ 0
∀m n. of_nat (m * n) = of_nat m * of_nat n
∀m n. of_nat (m * n) = of_nat m * of_nat n
∀m n. int (m * n) = int m * int n
∀x. sint x ∈ sints LENGTH('l)
∀n. n < n ⟶ False
∀m. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (Suc m))
SMT.Symb_Nil) SMT.Symb_Nil)
(of_nat (Suc m) = 1 + of_nat m)
∀m. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (Suc m))
SMT.Symb_Nil) SMT.Symb_Nil)
(of_nat (Suc m) = 1 + of_nat m)
∀m. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (Suc m))
SMT.Symb_Nil) SMT.Symb_Nil)
(int (Suc m) = 1 + int m)
∀s t. s < t ⟶ s ≠ t
∀i j k. i < j ∧ j < k ⟶ Suc i < k
∀n m. n < m ⟶ m ≠ n
∀k n x a.
k < 2 ^ (LENGTH('l signed) - n) ∧
x = 2 ^ n * of_nat k ∧ a ≤ x ∧ n < LENGTH('l signed) ∧ a mod
2 ^ n ≠ 0 ⟶
a div 2 ^ n < of_nat k
∀k n x a.
k < 2 ^ (LENGTH('l) - n) ∧ x = 2 ^ n * of_nat k ∧ a ≤ x ∧ n <
LENGTH('l) ∧ a mod 2 ^ n ≠ 0 ⟶
a div 2 ^ n < of_nat k
∀m n. (m ≠ n) = (m < n ∨ n < m)
∀w. (w ≠ 0) = (0 < w)
∀w. (w ≠ 0) = (0 < w)
∀n. (¬ 0 < n) = (n = 0)
∀nat. (nat = 0 ⟶ False) ∧ (nat ≠ 0 ⟶ False) ⟶ False
∀bin. sint (word_of_int bin) = sbintrunc (LENGTH('l) - 1) bin
∀n. n ≠ Suc n
∀x y. Suc x = Suc y ⟶ x = y
∀n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (toEnum
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(n < 2 ^ LENGTH('l) ⟶ toEnum n = of_nat n)
∀n. (2 ^ n = 0) = (LENGTH('l signed) ≤ n)
∀n. (2 ^ n = 0) = (LENGTH('l) ≤ n)
∀i j k. i - j - k = i - k - j
∀a n. a ≠ 0 ⟶ a ^ n ≠ 0
∀a n. a ≠ 0 ⟶ a ^ n ≠ 0
∀x. (∀n. x = of_nat n ∧ n < 2 ^ LENGTH('l) ⟶ False) ⟶ False
∀w. ∃n. w = of_nat n ∧ n < 2 ^ LENGTH('l)
∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ∧ of_nat x =
of_nat y ⟶ x = y
∀a b. - (2 ^ (size a - 1)) ≤ sint a sdiv sint b
∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (of_nat x =
of_nat y) = (x = y)
∀n. (n < 0) = False
∀a. (- a < a) = (0 < a)
∀a b. a * b = b * a
∀a b. a * b = b * a
∀a b. a * b = b * a
∀a. - word_of_int a = word_of_int (- a)
∀P n. P 0 ∧ (∀n. 0 < n ∧ ¬ P n ⟶ (∃m<n. ¬ P m)) ⟶ P n
∀x y. x < 2 ^ LENGTH('l) ∧ y < x ⟶ of_nat y < of_nat x
¬ msb 0
¬ msb 0
1 = word_of_int 1
∀m n. m < n ⟶ n ≠ 0
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a - a = 0)
∀a n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (a ^
Suc n)) SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ Suc n = a * a ^ n)
∀a n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (a ^
Suc n)) SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ Suc n = a * a ^ n)
∀a n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (a ^
Suc n)) SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ Suc n = a * a ^ n)
∀maxsize l qp k. ial_invar maxsize l qp ∧ k ∈ set l ⟶ k < length
qp
∀n<0. False
∀a b. a + b - a = b
∀a b. a + b - a = b
∀a b. a + b - a = b
∀n. ¬ n < 0
2 ^ LENGTH('l signed) = 0
2 ^ LENGTH('l) = 0
∀x. of_nat (unat x) = x
∀n. (n = 0 ⟶ False) ⟶ 0 < n
∀x m. x !! m ⟶ 2 ^ m ≤ x
∀n m. ¬ n < m ⟶ (n < Suc m) = (n = m)
∀x y i.
(x || y) !! (LENGTH('l) - Suc i) = (x !! (LENGTH('l) - Suc i)
∨ y !! (LENGTH('l) - Suc i)) ∧
(x && y) !! (LENGTH('l) - Suc i) = (x !! (LENGTH('l) - Suc i)
∧ y !! (LENGTH('l) - Suc i)) ∧
(x xor y) !! (LENGTH('l) - Suc i) = (x !! (LENGTH('l) - Suc
i) ≠ y !! (LENGTH('l) - Suc i)) ∧
(~~ x) !! (LENGTH('l) - Suc i) = (¬ x !! (LENGTH('l) - Suc
i))
∀i j P. i < j ∧ (∀i. j = Suc i ⟶ P i) ∧ (∀i. i < j ∧ P (Suc i) ⟶
P i) ⟶ P i
∀x n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (x <<
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(x << n = x * 2 ^ n)
∀i j P. i < j ∧ (∀i. P i (Suc i)) ∧ (∀i j k. i < j ∧ j < k ∧ P i
j ∧ P j k ⟶ P i k) ⟶ P i j
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (snat w))
SMT.Symb_Nil) SMT.Symb_Nil)
(unat w < 2 ^ (LENGTH('l) - 1) ⟶ snat w = unat w)
∀a. 0 * a = 0
∀a. 0 * a = 0
∀a. 0 * a = 0
∀a. 0 * a = 0
∀m n. Suc m < Suc n ⟶ m < n
∀a. 0 - a = 0
∀n m. ¬ n < m ∧ n < Suc m ⟶ m = n
∀P m n. (∀x. P x 0) ∧ (∀y. P 0 (Suc y)) ∧ (∀x y. P x y ⟶ P (Suc
x) (Suc y)) ⟶ P m n
∀a. a + 0 = a
∀a. a + 0 = a
∀a. a + 0 = a
∀a. a + 0 = a
∀n m. (Suc n < m) = (∃m'. m = Suc m' ∧ n < m')
∀n P. (∀i<Suc n. P i) = (P n ∧ (∀i<n. P i))
∀n>0. ∃m. n = Suc m
∀m n. (¬ m < n) = (n < Suc m)
∀x n. x < 2 ^ n ⟶ x && mask n = x
∀m n. (m < Suc n) = (m < n ∨ m = n)
LENGTH('l) ≠ 0
∀m. m - 0 = m
∀n. n < 2 ^ n
∀r a. r ∈ sints LENGTH('l) ∧ word_of_int r = a ⟶ sint a = r
∀n P. (∃i<Suc n. P i) = (P n ∨ (∃i<n. P i))
∀n. (¬ 0 < n) = (n = 0)
∀x. 0 ≤ x
∀m s1 n s2.
is_aligned m s1 ∧
is_aligned n s2 ∧ s2 < LENGTH('l) ∧ m ∈ {n..n + (2 ^ s2 - 1)}
∧ s1 ≤ s2 ∧ 0 < s1 ⟶
(∃q. m - n = of_nat q * 2 ^ s1 ∧ q < 2 ^ (s2 - s1))
∀m n. m < n ⟶ m < Suc n
of_nat (2 ^ LENGTH('l signed)) = 0
of_nat (2 ^ LENGTH('l)) = 0
∀w n. (w && mask n = w) = (w >> n = 0)
∀w n. (w && mask n = w) = (w >> n = 0)
∀m n. m < Suc n ∧ (m < n ⟶ False) ∧ (m = n ⟶ False) ⟶ False
∀n<LENGTH('l). to_bl (2 ^ n) = replicate (LENGTH('l) - Suc n)
False @ True # replicate n False
∀m n. m < n ∧ Suc m ≠ n ⟶ Suc m < n
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ 0 = 1)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ 0 = 1)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ 0 = 1)
∀i k. Suc i < k ∧ (∀j. i < j ∧ k = Suc j ⟶ False) ⟶ False
∀n bin. (bin_sign (sbintrunc n bin) = - 1) = bin_nth bin n
∀m n. Suc m < n ⟶ m < n
∀i k. i < k ∧ (k = Suc i ⟶ False) ∧ (∀j. i < j ∧ k = Suc j ⟶
False) ⟶ False
∀n. n ≠ 0 ⟶ (∃m. n = Suc m)
∀n. 0 ≠ numeral n
∀n. 0 ≠ numeral n
∀y. (y = 0 ⟶ False) ∧ (∀nat. y = Suc nat ⟶ False) ⟶ False
∀n q m. 2 ^ n * q < 2 ^ m ∧ q < 2 ^ (LENGTH('l) - n) ⟶ q < 2 ^
(m - n)
∀m. 0 ≠ Suc m
∀n<LENGTH('l). of_nat n < 2 ^ n
∀P x. P (unat x) = (∄n. of_nat n = x ∧ n < 2 ^ LENGTH('l) ∧ ¬ P
n)
∀n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (num.Bit0
n)) SMT.Symb_Nil) SMT.Symb_Nil)
((num.One < num.Bit0 n) = True)
∀r a. of_nat r = a ∧ r < 2 ^ LENGTH('l) ⟶ unat a = r
∀n. 0 < 2 ^ n ⟶ uint (2 ^ n) = 2 ^ n
∀n. 0 < 2 ^ n ⟶ uint (2 ^ n) = 2 ^ n
∀m. 0 = Suc m ⟶ False
∀n x. n < 2 ^ LENGTH('l) ⟶ (unat x = n) = (x = of_nat n)
∀x y. (x - y)⇧2 = (y - x)⇧2
∀x y. (x - y)⇧2 = (y - x)⇧2
∀m. Suc m = 0 ⟶ False
∀P x. P (unat x) = (∀n. of_nat n = x ∧ n < 2 ^ LENGTH('l) ⟶ P n)
∀P k. P k ∧ (∀n. P (Suc n) ⟶ P n) ⟶ P 0
∀n m. n < m ⟶ Suc (m - Suc n) = m - n
∀a b. a + b = b + a
∀a b. a + b = b + a
∀a b. a + b = b + a
∀n f. n < 2 ^ LENGTH('l) ∧ unat f < n ⟶ f < of_nat n
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = (2 ^ (LENGTH('l) - 1) ≤ uint w))
∀a. 0 + a = a
∀a. 0 + a = a
∀a. 0 + a = a
∀a. 0 + a = a
∀nat x2. nat = Suc x2 ⟶ nat ≠ 0
∀n. (0 < 2 ^ n) = (n < LENGTH('l))
∀a m n. a ^ (m + n) = a ^ m * a ^ n
∀a m n. a ^ (m + n) = a ^ m * a ^ n
∀nat'. 0 ≠ Suc nat'
∀m n. m < n ⟶ Suc m ≤ n
∀x. sint x < 2 ^ (LENGTH('l) - 1)
∀nat'. Suc nat' ≠ 0
∀x2. Suc x2 ≠ 0
∀x2. 0 ≠ Suc x2
∀n. ¬ numeral n < 0
∀n. ¬ numeral n < 0
∀j k n. j < k ⟶ j - n < k
0 < 2
∀n f. n < 2 ^ LENGTH('l) ⟶ (unat f < n) = (f < of_nat n)
∀m n l. m < n ∧ m < l ⟶ l - n < l - m
∀a. ¬ a⇧2 < 0
∀a b. word_of_int a + word_of_int b = word_of_int (a + b)
∀m n. m - n = 0 ∧ n - m = 0 ⟶ m = n
∀bin. sint (numeral bin) = sbintrunc (LENGTH('l) - 1) (numeral
bin)
∀P k i. P k ∧ (∀n. P (Suc n) ⟶ P n) ⟶ P (k - i)
∀a n. word_of_int a ^ n = word_of_int (a ^ n)
∀m n. m ≤ n ∧ n ≤ m ⟶ m = n
∀m. ¬ of_nat m < 0
∀m. ¬ int m < 0
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀w. SCAST('l → 'l) (numeral w) = word_of_int (sbintrunc
(LENGTH('l) - Suc 0) (numeral w))
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
word_of_int (2 ^ LENGTH('l)) = 0
∀n m k. n < 2 ^ (m - k) ∧ k ≤ m ⟶ 2 ^ k * n < 2 ^ m
∀m n. of_nat m < of_nat n ⟶ m < n
∀m n. int m < int n ⟶ m < n
∀x<2 ^ (LENGTH('l) - 1). 0 <=s x
∀m n. m < n ⟶ of_nat m < of_nat n
∀m n. m < n ⟶ int m < int n
∀x. x ∈ UNIV
∀x. x ∈ UNIV
∀n. of_nat (Suc n) ≠ 0
∀n. int (Suc n) ≠ 0
∀n<LENGTH('l). 2 ^ n ≠ 0
∀b. (0 <=s UCAST('l → 'l signed) b) = (uint b < 2 ^ (LENGTH('l)
- 1))
∀m n. (m < Suc n) = (m = 0 ∨ (∃j. m = Suc j ∧ j < n))
∀a b. word_of_int a - word_of_int b = word_of_int (a - b)
∀n x. n < Suc (unat x) ⟶ n < 2 ^ LENGTH('l)
∀n P. (∀i<Suc n. P i) = (P 0 ∧ (∀i<n. P (Suc i)))
∀n. (n ≤ 0) = (n = 0)
∀k. nat (numeral k) = numeral k
∀m n. m + Suc n = Suc (m + n)
∀n. (0 < n) = (∃m. n = Suc m)
∀n m k. n < 2 ^ (m - k) ∧ k ≤ m ⟶ n * 2 ^ k < 2 ^ m
LENGTH('l) ≠ Suc 0
∀n P. (∃i<Suc n. P i) = (P 0 ∨ (∃i<n. P (Suc i)))
∀n m. n < LENGTH('l) ∧ m < LENGTH('l) ⟶ (2 ^ n = 2 ^ m) = (n =
m)
∀x n. to_bl (x xor 2 ^ n) =
(if n < LENGTH('l)
then take (LENGTH('l) - Suc n) (to_bl x) @
(¬ rev (to_bl x) ! n) # drop (LENGTH('l) - n) (to_bl
x)
else to_bl x)
∀m n. m - n < Suc m
∀a. Numeral1 * a = a
∀a. 1 * a = a
∀n x. n < LENGTH('l) ∧ x < 2 ^ (LENGTH('l) - n) ⟶ x << n >> n =
x
∀n>0. 0 ^ n = 0
∀n>0. 0 ^ n = 0
∀a. 0 - a = - a
∀n>0. n = Suc (n - 1)
∀n. 0 < 2 ^ n
∀n m k. n < 2 ^ (m - k) ∧ k ≤ m ∧ m < LENGTH('l) ⟶ 2 ^ k * n < 2
^ m
∀x y. (x || y) !! (LENGTH('l) - Suc 0) = (x !! (LENGTH('l) - Suc
0) ∨ y !! (LENGTH('l) - Suc 0)) ∧
(x && y) !! (LENGTH('l) - Suc 0) = (x !! (LENGTH('l) - Suc
0) ∧ y !! (LENGTH('l) - Suc 0)) ∧
(x xor y) !! (LENGTH('l) - Suc 0) = (x !! (LENGTH('l) -
Suc 0) ≠ y !! (LENGTH('l) - Suc 0)) ∧
(~~ x) !! (LENGTH('l) - Suc 0) = (¬ x !! (LENGTH('l) - Suc
0))
0⇧2 = 0
0⇧2 = 0
∀n. ¬ n < 0
SCAST('l → 'l) 1 = word_of_int (sbintrunc (LENGTH('l) - Suc 0)
1)
∀a b. a * b = b * a
∀a b. a * b = b * a
∀r. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat
(Transfer.Rel r)) SMT.Symb_Nil) SMT.Symb_Nil)
(Transfer.Rel r = r)
∀n m k. n < 2 ^ (m - k) ∧ k ≤ m ∧ m < LENGTH('l) ⟶ n * 2 ^ k < 2
^ m
∀b a c. b * (a * c) = a * (b * c)
∀b a c. b * (a * c) = a * (b * c)
sint 0 = 0
∀x y. ¬ x < y ⟶ y ≤ x
∀x y. ¬ x < y ⟶ y ≤ x
∀x y. ¬ x < y ⟶ y ≤ x
∀b. - numeral b = word_of_int (- numeral b)
∀b a. (- b ≤ - a) = (a ≤ b)
∀y n x m sz.
y < 2 ^ n ∧ x < 2 ^ m ∧ sz < LENGTH('l) ∧ x < 2 ^ (LENGTH('l)
- n) ∧ sz = m + n ⟶
x * 2 ^ n + y < 2 ^ sz
∀a b c. a * b * c = a * (b * c)
∀a b c. a * b * c = a * (b * c)
Suc 0 < LENGTH('l)
∀x n m. x < 2 ^ (n - m) ∧ m ≤ n ⟶ x < 2 ^ n div 2 ^ m
∀a k m off.
a < k ∧ k < 2 ^ (LENGTH('l) - m) ∧ m < LENGTH('l) ∧ off < 2 ^
m ⟶ a * 2 ^ m + off < k * 2 ^ m
∀a b. (0 < a - b) = (b < a)
∀x n m. x < 2 ^ n div 2 ^ m ⟶ m ≤ n ∧ x < 2 ^ (n - m)
∀a b. (0 < a - b) = (b < a)
∀P. P ∧ Transfer.Rel (=) P False ⟶ False
∀i j k. i < j ∧ 0 < k ⟶ k * i < k * j
(LENGTH('l) ≠ Suc 0) = (∃n. LENGTH('l) = Suc (Suc n))
∀x n m. x < 2 ^ (n - m) ∧ m ≤ n ∧ n < LENGTH('l) ⟶ x < 2 ^ n div
2 ^ m
Numeral1 = Suc 0
∀x y z. x < y ∧ y ≤ z ⟶ x < z
∀x y z. x < y ∧ y ≤ z ⟶ x < z
∀x y z. x < y ∧ y ≤ z ⟶ x < z
∀n<2. n = 0 ∨ n = Suc 0
∀x. - (2 ^ (LENGTH('l) - 1)) ≤ x ∧ x < 2 ^ (LENGTH('l) - 1) ⟶
sint (of_int x) = x
∀n m. Suc n = m ⟶ n = m - Suc 0
∀m n. (numeral m = numeral n) = (m = n)
∀m n. (numeral m = numeral n) = (m = n)
∀a. a * 0 = 0
∀a. a * 0 = 0
sint 1 = sbintrunc (LENGTH('l) - 1) 1
∀x2 y2. (num.Bit0 x2 = num.Bit0 y2) = (x2 = y2)
∀m n. (numeral m < numeral n) = (m < n)
∀m n. (numeral m < numeral n) = (m < n)
∀c a b. (c * a = c * b) = (c = 0 ∨ a = b)
∀c a b. (c * a = c * b) = (c = 0 ∨ a = b)
∀a. (- a = 0) = (a = 0)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a - a = 0)
∀a. (0 = - a) = (0 = a)
∀a. a - 0 = a
∀A B f g. (∀x y. Transfer.Rel A x y ⟶ Transfer.Rel B (f x) (g
y)) ⟶ Transfer.Rel (rel_fun A B) f g
∀A B f g x y. Transfer.Rel (rel_fun A B) f g ∧ Transfer.Rel A x
y ⟶ Transfer.Rel B (f x) (g y)
∀w. - (2 ^ (size w - Suc 0)) ≤ sint w ∧ sint w < 2 ^ (size w -
Suc 0)
∀bin. word_of_int (numeral bin) = numeral bin
∀b a. b dvd a ∧ (∀k. a = b * k ⟶ False) ⟶ False
∀b a. b dvd a ∧ (∀k. a = b * k ⟶ False) ⟶ False
∀n. 0 ≤ numeral n
∀n. 0 ≤ numeral n
∀n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (max_snat
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(max_snat n = 2 ^ (n - 1))
∀n' x. ASSUMPTION (n' < LENGTH('l)) ∧ x < 2 ^ n' ⟶ x < max_snat
LENGTH('l)
∀n. int n < 2 ^ n
∀n m a. n ≤ m ∧ 0 < a ⟶ a ^ (m - n) = a ^ m div a ^ n
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = bin_nth (uint w) (LENGTH('l) - 1))
∀a. - (- a) = a
∀n. ¬ numeral n ≤ 0
∀n. ¬ numeral n ≤ 0
SMT: Names:
sorts:
Nat\$ = nat
Num\$ = num
L_word\$ = 'l word
Int_set\$ = int set
Nat_set\$ = nat set
L_itself\$ = 'l itself
Nat_list\$ = nat list
Bool_list\$ = bool list
L_word_set\$ = 'l word set
Int_int_fun\$ = int ⇒ int
Nat_int_fun\$ = nat ⇒ int
Nat_nat_fun\$ = nat ⇒ nat
Nat_num_fun\$ = nat ⇒ num
Int_bool_fun\$ = int ⇒ bool
Nat_bool_fun\$ = nat ⇒ bool
Bool_bool_fun\$ = bool ⇒ bool
L_signed_word\$ = 'l signed word
Int_l_word_fun\$ = int ⇒ 'l word
L_word_int_fun\$ = 'l word ⇒ int
Nat_l_word_fun\$ = nat ⇒ 'l word
L_signed_itself\$ = 'l signed itself
L_word_bool_fun\$ = 'l word ⇒ bool
Nat_option_list\$ = nat option list
L_word_l_word_fun\$ = 'l word ⇒ 'l word
Nat_nat_bool_fun_fun\$ = nat ⇒ nat ⇒ bool
Bool_bool_bool_fun_fun\$ = bool ⇒ bool ⇒ bool
L_signed_word_l_signed_word_fun\$ = 'l signed word ⇒ 'l signed
word
Bool_bool_fun_bool_bool_fun_bool_fun_fun\$ = (bool ⇒ bool) ⇒
(bool ⇒ bool) ⇒ bool
functions:
n\$ = n
uu\$ = uu__
dvd\$ = (dvd)
msb\$ = msb
nat\$ = nat
nth\$ = (!)
one\$ = 1
rel\$ = Transfer.Rel
rev\$ = rev
set\$ = set
suc\$ = Suc
top\$ = UNIV
uua\$ = uua__
uub\$ = uub__
uuc\$ = uuc__
uud\$ = uud__
uue\$ = uue__
uuf\$ = uu
bit0\$ = num.Bit0
cons\$ = (#)
drop\$ = drop
dvd\$a = (dvd)
less\$ = (<)
msb\$a = msb
one\$a = num.One
one\$b = 1
plus\$ = (+)
rel\$a = Transfer.Rel
sdiv\$ = (sdiv)
sint\$ = sint
size\$ = size
smod\$ = (smod)
snat\$ = snat
take\$ = take
top\$a = UNIV
type\$ = TYPE('l)
uint\$ = uint
unat\$ = unat
zero\$ = 0
bitOR\$ = (||)
image\$ = (`)
less\$a = (<)
less\$b = (<)
less\$c = (<)
minus\$ = (-)
plus\$a = (+)
plus\$b = (+)
power\$ = (^)
scast\$ = SCAST('l signed → 'l)
sints\$ = sints
size\$a = length
times\$ = (*)
to_bl\$ = to_bl
type\$a = TYPE('l signed)
ucast\$ = UCAST('l → 'l signed)
uint\$a = uint
zero\$a = 0
zero\$b = 0
append\$ = (@)
bitAND\$ = (&&)
bitNOT\$ = wordNOT
bitXOR\$ = (xor)
divide\$ = (div)
len_of\$ = len_of
member\$ = (∈)
minus\$a = (-)
minus\$b = (-)
modulo\$ = (mod)
of_int\$ = of_int
of_nat\$ = int
power\$a = (^)
power\$b = (^)
power\$c = (^)
scast\$a = SCAST('l → 'l signed)
scast\$b = SCAST('l → 'l)
shiftl\$ = (<<)
shiftr\$ = (>>)
td_ext\$ = td_ext
times\$a = (*)
times\$b = (*)
times\$c = (*)
toEnum\$ = toEnum
uminus\$ = uminus
bin_nth\$ = bin_nth
bitAND\$a = (&&)
collect\$ = Collect
divide\$a = (div)
divide\$b = (div)
fun_app\$ = SMT.fun_app
len_of\$a = len_of
less_eq\$ = (≤)
member\$a = (∈)
member\$b = (∈)
modulo\$a = (mod)
modulo\$b = (mod)
modulo\$c = (mod)
numeral\$ = numeral
of_int\$a = of_int
of_nat\$a = of_nat
of_nat\$b = of_nat
of_nat\$c = of_nat
rel_fun\$ = rel_fun
shiftl\$a = (<<)
shiftr\$a = (>>)
bin_sign\$ = bin_sign
collect\$a = Collect
collect\$b = Collect
fun_app\$a = SMT.fun_app
fun_app\$b = SMT.fun_app
fun_app\$c = SMT.fun_app
fun_app\$d = SMT.fun_app
fun_app\$e = SMT.fun_app
fun_app\$f = SMT.fun_app
fun_app\$g = SMT.fun_app
fun_app\$h = SMT.fun_app
fun_app\$i = SMT.fun_app
fun_app\$j = SMT.fun_app
fun_app\$k = SMT.fun_app
fun_app\$l = SMT.fun_app
fun_app\$m = SMT.fun_app
fun_app\$n = SMT.fun_app
less_eq\$a = (≤)
less_eq\$b = (≤)
less_eq\$c = (≤)
max_snat\$ = max_snat
numeral\$a = numeral
numeral\$b = numeral
numeral\$c = numeral
test_bit\$ = (!!)
word_sle\$ = (<=s)
ial_invar\$ = ial_invar
replicate\$ = replicate
sbintrunc\$ = sbintrunc
word_sle\$a = (<=s)
assumption\$ = ASSUMPTION
is_aligned\$ = is_aligned
list_update\$ = list_update
word_of_int\$ = word_of_int
word_of_int\$a = word_of_int
atLeastAtMost\$ = atLeastAtMost
SMT: Problem:
; smt.random_seed=1 smt.refine_inj_axioms=false -T:10 -smt2
(set-option :produce-proofs true)
(declare-sort Nat\$ 0)
(declare-sort Num\$ 0)
(declare-sort L_word\$ 0)
(declare-sort Int_set\$ 0)
(declare-sort Nat_set\$ 0)
(declare-sort L_itself\$ 0)
(declare-sort Nat_list\$ 0)
(declare-sort Bool_list\$ 0)
(declare-sort L_word_set\$ 0)
(declare-sort Int_int_fun\$ 0)
(declare-sort Nat_int_fun\$ 0)
(declare-sort Nat_nat_fun\$ 0)
(declare-sort Nat_num_fun\$ 0)
(declare-sort Int_bool_fun\$ 0)
(declare-sort Nat_bool_fun\$ 0)
(declare-sort Bool_bool_fun\$ 0)
(declare-sort L_signed_word\$ 0)
(declare-sort Int_l_word_fun\$ 0)
(declare-sort L_word_int_fun\$ 0)
(declare-sort Nat_l_word_fun\$ 0)
(declare-sort L_signed_itself\$ 0)
(declare-sort L_word_bool_fun\$ 0)
(declare-sort Nat_option_list\$ 0)
(declare-sort L_word_l_word_fun\$ 0)
(declare-sort Nat_nat_bool_fun_fun\$ 0)
(declare-sort Bool_bool_bool_fun_fun\$ 0)
(declare-sort L_signed_word_l_signed_word_fun\$ 0)
(declare-sort Bool_bool_fun_bool_bool_fun_bool_fun_fun\$ 0)
(declare-fun n\$ () Nat\$)
(declare-fun uu\$ () Int_int_fun\$)
(declare-fun dvd\$ () Nat_nat_bool_fun_fun\$)
(declare-fun msb\$ () L_word_bool_fun\$)
(declare-fun nat\$ (Int) Nat\$)
(declare-fun nth\$ (Bool_list\$) Nat_bool_fun\$)
(declare-fun one\$ () Nat\$)
(declare-fun rel\$ (Bool_bool_bool_fun_fun\$)
Bool_bool_bool_fun_fun\$)
(declare-fun rev\$ (Bool_list\$) Bool_list\$)
(declare-fun set\$ (Nat_list\$) Nat_set\$)
(declare-fun suc\$ () Nat_nat_fun\$)
(declare-fun top\$ () Int_set\$)
(declare-fun uua\$ (Nat\$) Int_bool_fun\$)
(declare-fun uub\$ (L_word_set\$) L_word_bool_fun\$)
(declare-fun uuc\$ (Nat_set\$) Nat_bool_fun\$)
(declare-fun uud\$ (Int_set\$) Int_bool_fun\$)
(declare-fun uue\$ (Int) Int_int_fun\$)
(declare-fun uuf\$ () Bool_bool_bool_fun_fun\$)
(declare-fun bit0\$ (Num\$) Num\$)
(declare-fun cons\$ (Bool Bool_list\$) Bool_list\$)
(declare-fun drop\$ (Nat\$ Bool_list\$) Bool_list\$)
(declare-fun dvd\$a (Int) Int_bool_fun\$)
(declare-fun less\$ () Nat_nat_bool_fun_fun\$)
(declare-fun msb\$a (L_signed_word\$) Bool)
(declare-fun one\$a () Num\$)
(declare-fun one\$b () L_word\$)
(declare-fun plus\$ (L_word\$ L_word\$) L_word\$)
(declare-fun rel\$a (Bool_bool_fun_bool_bool_fun_bool_fun_fun\$
Bool_bool_fun\$ Bool_bool_fun\$) Bool)
(declare-fun sdiv\$ (Int Int) Int)
(declare-fun sint\$ () L_word_int_fun\$)
(declare-fun size\$ (L_word\$) Nat\$)
(declare-fun smod\$ (Int Int) Int)
(declare-fun snat\$ (L_word\$) Nat\$)
(declare-fun take\$ (Nat\$ Bool_list\$) Bool_list\$)
(declare-fun top\$a () Nat_set\$)
(declare-fun type\$ () L_itself\$)
(declare-fun uint\$ (L_signed_word\$) Int)
(declare-fun unat\$ (L_word\$) Nat\$)
(declare-fun zero\$ () Nat\$)
(declare-fun bitOR\$ (L_word\$ L_word\$) L_word\$)
(declare-fun image\$ (Int_int_fun\$ Int_set\$) Int_set\$)
(declare-fun less\$a (L_word\$) L_word_bool_fun\$)
(declare-fun less\$b (Num\$ Num\$) Bool)
(declare-fun less\$c (L_signed_word\$ L_signed_word\$) Bool)
(declare-fun minus\$ (Nat\$) Nat_nat_fun\$)
(declare-fun plus\$a (Nat\$) Nat_nat_fun\$)
(declare-fun plus\$b (L_signed_word\$ L_signed_word\$)
L_signed_word\$)
(declare-fun power\$ (Int) Nat_int_fun\$)
(declare-fun scast\$ (L_signed_word\$) L_word\$)
(declare-fun sints\$ (Nat\$) Int_set\$)
(declare-fun size\$a (Nat_option_list\$) Nat\$)
(declare-fun times\$ (L_word\$ L_word\$) L_word\$)
(declare-fun to_bl\$ (L_word\$) Bool_list\$)
(declare-fun type\$a () L_signed_itself\$)
(declare-fun ucast\$ (L_word\$) L_signed_word\$)
(declare-fun uint\$a (L_word\$) Int)
(declare-fun zero\$a () L_signed_word\$)
(declare-fun zero\$b () L_word\$)
(declare-fun append\$ (Bool_list\$ Bool_list\$) Bool_list\$)
(declare-fun bitAND\$ (L_word\$ L_word\$) L_word\$)
(declare-fun bitNOT\$ (L_word\$) L_word\$)
(declare-fun bitXOR\$ (L_word\$ L_word\$) L_word\$)
(declare-fun divide\$ (L_signed_word\$ L_signed_word\$)
L_signed_word\$)
(declare-fun len_of\$ (L_itself\$) Nat\$)
(declare-fun member\$ (L_word\$ L_word_set\$) Bool)
(declare-fun minus\$a (L_signed_word\$)
L_signed_word_l_signed_word_fun\$)
(declare-fun minus\$b (L_word\$) L_word_l_word_fun\$)
(declare-fun modulo\$ (Int Int) Int)
(declare-fun of_int\$ (Int) L_signed_word\$)
(declare-fun of_nat\$ () Nat_int_fun\$)
(declare-fun power\$a (Nat\$) Nat_nat_fun\$)
(declare-fun power\$b (L_word\$) Nat_l_word_fun\$)
(declare-fun power\$c (L_signed_word\$ Nat\$) L_signed_word\$)
(declare-fun scast\$a (L_word\$) L_signed_word\$)
(declare-fun scast\$b (L_word\$) L_word\$)
(declare-fun shiftl\$ (Int) Nat_int_fun\$)
(declare-fun shiftr\$ (L_signed_word\$ Nat\$) L_signed_word\$)
(declare-fun td_ext\$ (L_word_int_fun\$ Int_l_word_fun\$ Int_set\$
Int_int_fun\$) Bool)
(declare-fun times\$a (Nat\$) Nat_nat_fun\$)
(declare-fun times\$b (L_signed_word\$ L_signed_word\$)
L_signed_word\$)
(declare-fun times\$c (Int Int) Int)
(declare-fun toEnum\$ (Nat\$) L_word\$)
(declare-fun uminus\$ (L_word\$) L_word\$)
(declare-fun bin_nth\$ (Int) Nat_bool_fun\$)
(declare-fun bitAND\$a (L_signed_word\$ L_signed_word\$)
L_signed_word\$)
(declare-fun collect\$ (L_word_bool_fun\$) L_word_set\$)
(declare-fun divide\$a (L_word\$ L_word\$) L_word\$)
(declare-fun divide\$b (Nat\$) Nat_nat_fun\$)
(declare-fun fun_app\$ (Int_int_fun\$ Int) Int)
(declare-fun len_of\$a (L_signed_itself\$) Nat\$)
(declare-fun less_eq\$ (L_word\$) L_word_bool_fun\$)
(declare-fun member\$a (Nat\$ Nat_set\$) Bool)
(declare-fun member\$b (Int Int_set\$) Bool)
(declare-fun modulo\$a (Nat\$) Nat_nat_fun\$)
(declare-fun modulo\$b (L_signed_word\$ L_signed_word\$)
L_signed_word\$)
(declare-fun modulo\$c (L_word\$ L_word\$) L_word\$)
(declare-fun numeral\$ (Num\$) Nat\$)
(declare-fun of_int\$a (Int) L_word\$)
(declare-fun of_nat\$a () Nat_nat_fun\$)
(declare-fun of_nat\$b (Nat\$) L_word\$)
(declare-fun of_nat\$c (Nat\$) L_signed_word\$)
(declare-fun rel_fun\$ (Bool_bool_bool_fun_fun\$
Bool_bool_bool_fun_fun\$) Bool_bool_fun_bool_bool_fun_bool_fun_fun\$)
(declare-fun shiftl\$a (L_word\$ Nat\$) L_word\$)
(declare-fun shiftr\$a (L_word\$ Nat\$) L_word\$)
(declare-fun bin_sign\$ (Int) Int)
(declare-fun collect\$a (Nat_bool_fun\$) Nat_set\$)
(declare-fun collect\$b (Int_bool_fun\$) Int_set\$)
(declare-fun fun_app\$a (Nat_int_fun\$ Nat\$) Int)
(declare-fun fun_app\$b (Nat_nat_fun\$ Nat\$) Nat\$)
(declare-fun fun_app\$c (Int_bool_fun\$ Int) Bool)
(declare-fun fun_app\$d (L_word_bool_fun\$ L_word\$) Bool)
(declare-fun fun_app\$e (Nat_bool_fun\$ Nat\$) Bool)
(declare-fun fun_app\$f (Bool_bool_fun\$ Bool) Bool)
(declare-fun fun_app\$g (Bool_bool_bool_fun_fun\$ Bool)
Bool_bool_fun\$)
(declare-fun fun_app\$h (Nat_nat_bool_fun_fun\$ Nat\$)
Nat_bool_fun\$)
(declare-fun fun_app\$i (Int_l_word_fun\$ Int) L_word\$)
(declare-fun fun_app\$j (Nat_l_word_fun\$ Nat\$) L_word\$)
(declare-fun fun_app\$k (L_word_int_fun\$ L_word\$) Int)
(declare-fun fun_app\$l (L_signed_word_l_signed_word_fun\$
L_signed_word\$) L_signed_word\$)
(declare-fun fun_app\$m (L_word_l_word_fun\$ L_word\$) L_word\$)
(declare-fun fun_app\$n (Nat_num_fun\$ Nat\$) Num\$)
(declare-fun less_eq\$a () Nat_nat_bool_fun_fun\$)
(declare-fun less_eq\$b (Num\$ Num\$) Bool)
(declare-fun less_eq\$c (L_signed_word\$ L_signed_word\$) Bool)
(declare-fun max_snat\$ () Nat_nat_fun\$)
(declare-fun numeral\$a (Num\$) Int)
(declare-fun numeral\$b (Num\$) L_word\$)
(declare-fun numeral\$c (Num\$) L_signed_word\$)
(declare-fun test_bit\$ (L_word\$) Nat_bool_fun\$)
(declare-fun word_sle\$ (L_word\$) L_word_bool_fun\$)
(declare-fun ial_invar\$ (Nat\$ Nat_list\$ Nat_option_list\$) Bool)
(declare-fun replicate\$ (Nat\$ Bool) Bool_list\$)
(declare-fun sbintrunc\$ (Nat\$) Int_int_fun\$)
(declare-fun word_sle\$a (L_signed_word\$ L_signed_word\$) Bool)
(declare-fun assumption\$ () Bool_bool_fun\$)
(declare-fun is_aligned\$ (L_word\$) Nat_bool_fun\$)
(declare-fun list_update\$ (Bool_list\$ Nat\$ Bool) Bool_list\$)
(declare-fun word_of_int\$ () Int_l_word_fun\$)
(declare-fun word_of_int\$a (Int) L_signed_word\$)
(declare-fun atLeastAtMost\$ (L_word\$ L_word\$) L_word_set\$)
(assert (! (forall ((?v0 Int)) (! (= (fun_app\$ uu\$ ?v0) (-
(modulo\$ (+ ?v0 (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$
type\$)) one\$))) (fun_app\$a (power\$ 2) (len_of\$ type\$))) (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$)) one\$)))) :pattern
((fun_app\$ uu\$ ?v0)))) :named a0))
(assert (! (forall ((?v0 Nat\$) (?v1 Int)) (! (= (fun_app\$c (uua\$
?v0) ?v1) (and (<= (- (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ ?v0)
one\$))) ?v1) (< ?v1 (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ ?v0)
one\$))))) :pattern ((fun_app\$c (uua\$ ?v0) ?v1)))) :named a1))
(assert (! (forall ((?v0 Int) (?v1 Int)) (! (= (fun_app\$ (uue\$
?v0) ?v1) (- ?v0 ?v1)) :pattern ((fun_app\$ (uue\$ ?v0) ?v1)))) :named
a2))
(assert (! (forall ((?v0 L_word_set\$) (?v1 L_word\$)) (! (=
(fun_app\$d (uub\$ ?v0) ?v1) (member\$ ?v1 ?v0)) :pattern ((fun_app\$d
(uub\$ ?v0) ?v1)))) :named a3))
(assert (! (forall ((?v0 Nat_set\$) (?v1 Nat\$)) (! (= (fun_app\$e
(uuc\$ ?v0) ?v1) (member\$a ?v1 ?v0)) :pattern ((fun_app\$e (uuc\$ ?v0)
?v1)))) :named a4))
(assert (! (forall ((?v0 Int_set\$) (?v1 Int)) (! (= (fun_app\$c
(uud\$ ?v0) ?v1) (member\$b ?v1 ?v0)) :pattern ((fun_app\$c (uud\$ ?v0)
?v1)))) :named a5))
(assert (! (forall ((?v0 Bool) (?v1 Bool)) (! (= (fun_app\$f
(fun_app\$g uuf\$ ?v0) ?v1) (= ?v0 ?v1)) :pattern ((fun_app\$f (fun_app\$g
uuf\$ ?v0) ?v1)))) :named a6))
(assert (! (not false) :named a7))
(assert (! (fun_app\$e (fun_app\$h less\$ n\$) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ zero\$)))) :named a8))
(assert (! (fun_app\$d msb\$ (fun_app\$i word_of_int\$ (fun_app\$a
of_nat\$ n\$))) :named a9))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$e (fun_app\$h less\$ (fun_app\$b (power\$a (numeral\$ ?v0)) ?v1))
(fun_app\$b of_nat\$a ?v2)) (fun_app\$e (fun_app\$h less\$ (fun_app\$b
(power\$a (numeral\$ ?v0)) ?v1)) ?v2))) :named a10))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$a (power\$ (numeral\$a ?v0)) ?v1) (fun_app\$a of_nat\$ ?v2))
(fun_app\$e (fun_app\$h less\$ (fun_app\$b (power\$a (numeral\$ ?v0)) ?v1))
?v2))) :named a11))
(assert (! (forall ((?v0 Int)) (= (scast\$ (of_int\$ ?v0))
(of_int\$a ?v0))) :named a12))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (=
(fun_app\$e (fun_app\$h less\$ (fun_app\$b of_nat\$a ?v0)) (fun_app\$b
(power\$a (numeral\$ ?v1)) ?v2)) (fun_app\$e (fun_app\$h less\$ ?v0)
(fun_app\$b (power\$a (numeral\$ ?v1)) ?v2)))) :named a13))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (<
(fun_app\$a of_nat\$ ?v0) (fun_app\$a (power\$ (numeral\$a ?v1)) ?v2))
(fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ ?v1))
?v2)))) :named a14))
(assert (! (forall ((?v0 Int)) (= (scast\$a (of_int\$a ?v0))
(of_int\$ ?v0))) :named a15))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$e
(fun_app\$h less\$ zero\$) (fun_app\$b (power\$a (fun_app\$b of_nat\$a ?v0))
?v1)) (or (fun_app\$e (fun_app\$h less\$ zero\$) ?v0) (= ?v1 zero\$))))
:named a16))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< 0 (fun_app\$a
(power\$ (fun_app\$a of_nat\$ ?v0)) ?v1)) (or (fun_app\$e (fun_app\$h less\$
zero\$) ?v0) (= ?v1 zero\$)))) :named a17))
(assert (! (= one\$ (fun_app\$b suc\$ zero\$)) :named a18))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$d msb\$ ?v0)
(fun_app\$d (less_eq\$ (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a)))
(fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ zero\$)))) ?v0))
:pattern ((fun_app\$d msb\$ ?v0)))) :named a19))
(assert (! (forall ((?v0 Int)) (= (< 0 (fun_app\$a (power\$ ?v0)
(numeral\$ (bit0\$ one\$a)))) (not (= ?v0 0)))) :named a20))
(assert (! (=> (fun_app\$e (fun_app\$h less\$ n\$) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ zero\$)))) (= n\$ (nat\$ (fun_app\$k sint\$ (fun_app\$i
word_of_int\$ (fun_app\$a of_nat\$ n\$)))))) :named a21))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$b (power\$a (numeral\$ ?v0)) ?v1) (fun_app\$b of_nat\$a ?v2)) (=
(fun_app\$b (power\$a (numeral\$ ?v0)) ?v1) ?v2))) :named a22))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$a (power\$ (numeral\$a ?v0)) ?v1) (fun_app\$a of_nat\$ ?v2)) (=
(fun_app\$b (power\$a (numeral\$ ?v0)) ?v1) ?v2))) :named a23))
(assert (! (forall ((?v0 Nat\$)) (! (= (of_nat\$b ?v0) (fun_app\$i
word_of_int\$ (fun_app\$a of_nat\$ ?v0))) :pattern ((of_nat\$b ?v0))))
:named a24))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(fun_app\$b of_nat\$a ?v0) (fun_app\$b (power\$a (numeral\$ ?v1)) ?v2)) (=
?v0 (fun_app\$b (power\$a (numeral\$ ?v1)) ?v2)))) :named a25))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(fun_app\$a of_nat\$ ?v0) (fun_app\$a (power\$ (numeral\$a ?v1)) ?v2)) (=
?v0 (fun_app\$b (power\$a (numeral\$ ?v1)) ?v2)))) :named a26))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$e (fun_app\$h less\$ (fun_app\$b (power\$a (fun_app\$b of_nat\$a
?v0)) ?v1)) (fun_app\$b of_nat\$a ?v2)) (fun_app\$e (fun_app\$h less\$
(fun_app\$b (power\$a ?v0) ?v1)) ?v2))) :named a27))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$a (power\$ (fun_app\$a of_nat\$ ?v0)) ?v1) (fun_app\$a of_nat\$
?v2)) (fun_app\$e (fun_app\$h less\$ (fun_app\$b (power\$a ?v0) ?v1)) ?v2)))
:named a28))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word_bool_fun\$)) (=
(member\$ ?v0 (collect\$ ?v1)) (fun_app\$d ?v1 ?v0))) :named a29))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (member\$a
?v0 (collect\$a ?v1)) (fun_app\$e ?v1 ?v0))) :named a30))
(assert (! (forall ((?v0 Int) (?v1 Int_bool_fun\$)) (= (member\$b
?v0 (collect\$b ?v1)) (fun_app\$c ?v1 ?v0))) :named a31))
(assert (! (td_ext\$ sint\$ word_of_int\$ (sints\$ (len_of\$ type\$))
uu\$) :named a32))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$e (fun_app\$h less\$ (fun_app\$b of_nat\$a ?v0)) (fun_app\$b
(power\$a (fun_app\$b of_nat\$a ?v1)) ?v2)) (fun_app\$e (fun_app\$h less\$
?v0) (fun_app\$b (power\$a ?v1) ?v2)))) :named a33))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$a of_nat\$ ?v0) (fun_app\$a (power\$ (fun_app\$a of_nat\$ ?v1))
?v2)) (fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b (power\$a ?v1) ?v2))))
:named a34))
(assert (! (fun_app\$e (fun_app\$h less\$ zero\$) (len_of\$ type\$))
:named a35))
(assert (! (forall ((?v0 L_word\$)) (! (= (size\$ ?v0) (len_of\$
type\$)) :pattern ((size\$ ?v0)))) :named a36))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$e (fun_app\$h less\$
zero\$) ?v0) (= (fun_app\$b suc\$ (fun_app\$b (minus\$ ?v0) (fun_app\$b suc\$
zero\$))) ?v0))) :named a37))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$e (fun_app\$h less\$ ?v0)
(fun_app\$b suc\$ ?v0))) :named a38))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$e (fun_app\$h less\$
zero\$) (fun_app\$b of_nat\$a ?v0)) (fun_app\$e (fun_app\$h less\$ zero\$)
?v0))) :named a39))
(assert (! (forall ((?v0 Nat\$)) (= (< 0 (fun_app\$a of_nat\$ ?v0))
(fun_app\$e (fun_app\$h less\$ zero\$) ?v0))) :named a40))
(assert (! (forall ((?v0 L_word\$)) (=> (fun_app\$d (less\$a ?v0)
(fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) (fun_app\$b (minus\$
(len_of\$ type\$)) one\$))) (not (fun_app\$d msb\$ ?v0)))) :named a41))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$e
(fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(fun_app\$b (minus\$ ?v1) (fun_app\$b suc\$ zero\$)))) (fun_app\$e (fun_app\$h
less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v1)))) :named
a42))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$b (power\$a ?v0)
(numeral\$ (bit0\$ one\$a))) zero\$) (= ?v0 zero\$))) :named a43))
(assert (! (forall ((?v0 Int)) (= (= (fun_app\$a (power\$ ?v0)
(numeral\$ (bit0\$ one\$a))) 0) (= ?v0 0))) :named a44))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$e (fun_app\$h less\$
?v0) (fun_app\$b suc\$ zero\$)) (= ?v0 zero\$))) :named a45))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$e (fun_app\$h less\$
(fun_app\$b (minus\$ ?v0) (fun_app\$b suc\$ zero\$))) ?v0) (not (= ?v0
zero\$)))) :named a46))
(assert (! (forall ((?v0 L_word\$)) (fun_app\$e (fun_app\$h less\$
(unat\$ ?v0)) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$
type\$)))) :named a47))
(assert (! (= (of_nat\$c zero\$) zero\$a) :named a48))
(assert (! (= (of_nat\$b zero\$) zero\$b) :named a49))
(assert (! (= (fun_app\$b of_nat\$a zero\$) zero\$) :named a50))
(assert (! (= (fun_app\$a of_nat\$ zero\$) 0) :named a51))
(assert (! (forall ((?v0 Nat\$)) (= (not (= ?v0 zero\$))
(fun_app\$e (fun_app\$h less\$ zero\$) ?v0))) :named a52))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$e
(fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
?v1)) (fun_app\$e (fun_app\$h less\$ ?v1) (len_of\$ type\$))) (fun_app\$d
(less\$a (of_nat\$b ?v0)) (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a)))
?v1)))) :named a53))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$e
(fun_app\$h less\$ zero\$) ?v0) (fun_app\$e (fun_app\$h less\$ zero\$) ?v1))
(fun_app\$e (fun_app\$h less\$ (fun_app\$b (minus\$ ?v1) ?v0)) ?v1))) :named
a54))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$b suc\$
?v0) (fun_app\$b suc\$ ?v1)) (= ?v0 ?v1))) :named a55))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$e
(fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$ type\$))) (fun_app\$e (fun_app\$h less\$ ?v1) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (len_of\$ type\$)))) (= (fun_app\$e (fun_app\$h
less_eq\$a ?v1) ?v0) (fun_app\$d (less_eq\$ (of_nat\$b ?v1)) (of_nat\$b
?v0))))) :named a56))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$b suc\$
?v0) (fun_app\$b suc\$ ?v1)) (= ?v0 ?v1))) :named a57))
(assert (! (forall ((?v0 Num\$)) (fun_app\$e (fun_app\$h less\$
zero\$) (numeral\$ ?v0))) :named a58))
(assert (! (forall ((?v0 Num\$)) (< 0 (numeral\$a ?v0))) :named
a59))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$b
of_nat\$a ?v0) (fun_app\$b of_nat\$a ?v1)) (= ?v0 ?v1))) :named a60))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$a
of_nat\$ ?v0) (fun_app\$a of_nat\$ ?v1)) (= ?v0 ?v1))) :named a61))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$e (fun_app\$h less\$
zero\$) (fun_app\$b suc\$ ?v0))) :named a62))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$d msb\$ ?v0)
(fun_app\$e (fun_app\$h less_eq\$a (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ (len_of\$ type\$)) one\$))) (unat\$ ?v0)))
:pattern ((fun_app\$d msb\$ ?v0)))) :named a63))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b (minus\$
(fun_app\$b suc\$ ?v0)) (fun_app\$b suc\$ ?v1)) (fun_app\$b (minus\$ ?v0)
?v1))) :named a64))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$j (power\$b
(numeral\$b (bit0\$ one\$a))) ?v0) (of_nat\$b (fun_app\$b (power\$a (numeral\$
(bit0\$ one\$a))) ?v0)))) :named a65))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$e
(fun_app\$h less\$ (fun_app\$b suc\$ ?v0)) (fun_app\$b suc\$ ?v1)) (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1))) :named a66))
(assert (! (forall ((?v0 Num\$)) (=> (fun_app\$e (fun_app\$h less\$
(numeral\$ ?v0)) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ zero\$)))) (not
(fun_app\$d msb\$ (numeral\$b ?v0))))) :named a67))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$) (?v2 L_word\$))
(=> (and (fun_app\$d (less_eq\$ ?v0) ?v1) (fun_app\$d (less\$a ?v1) ?v2))
(fun_app\$d (less\$a ?v0) ?v2))) :named a68))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$) (?v2 Num\$)) (=> (and
(less_eq\$b ?v0 ?v1) (less\$b ?v1 ?v2)) (less\$b ?v0 ?v2))) :named a69))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$e (fun_app\$h less_eq\$a ?v0) ?v1) (fun_app\$e (fun_app\$h less\$
?v1) ?v2)) (fun_app\$e (fun_app\$h less\$ ?v0) ?v2))) :named a70))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (=> (and (<=
?v0 ?v1) (< ?v1 ?v2)) (< ?v0 ?v2))) :named a71))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1) (fun_app\$e (fun_app\$h less\$ (fun_app\$b suc\$
?v0)) (fun_app\$b suc\$ ?v1)))) :named a72))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$)) (=> (fun_app\$e
(is_aligned\$ ?v0) ?v1) (exists ((?v2 Nat\$)) (and (= ?v0 (times\$
(fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) ?v1) (of_nat\$b ?v2)))
(fun_app\$e (fun_app\$h less\$ ?v2) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ (len_of\$ type\$)) ?v1))))))) :named a73))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (of_nat\$b
(fun_app\$b (power\$a ?v0) ?v1)) (fun_app\$j (power\$b (of_nat\$b ?v0))
?v1))) :named a74))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
of_nat\$a (fun_app\$b (power\$a ?v0) ?v1)) (fun_app\$b (power\$a (fun_app\$b
of_nat\$a ?v0)) ?v1))) :named a75))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$a of_nat\$
(fun_app\$b (power\$a ?v0) ?v1)) (fun_app\$a (power\$ (fun_app\$a of_nat\$
?v0)) ?v1))) :named a76))
(assert (! (forall ((?v0 Bool_list\$) (?v1 Nat\$)) (=
(list_update\$ ?v0 ?v1 (fun_app\$e (nth\$ ?v0) ?v1)) ?v0)) :named a77))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (minus\$ ?v0) ?v0)
zero\$)) :named a78))
(assert (! (forall ((?v0 L_word\$)) (and (<= (- (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
zero\$)))) (fun_app\$k sint\$ ?v0)) (< (fun_app\$k sint\$ ?v0) (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
zero\$)))))) :named a79))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (minus\$ (fun_app\$b (minus\$ (fun_app\$b suc\$ ?v0)) ?v1))
(fun_app\$b suc\$ ?v2)) (fun_app\$b (minus\$ (fun_app\$b (minus\$ ?v0) ?v1))
?v2))) :named a80))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$e
(fun_app\$h less_eq\$a ?v0) ?v1) (not (fun_app\$e (fun_app\$h less\$ ?v1)
?v0)))) :named a81))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$b of_nat\$a ?v0)
zero\$) (= ?v0 zero\$))) :named a82))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$a of_nat\$ ?v0) 0)
(= ?v0 zero\$))) :named a83))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (minus\$ zero\$)
?v0) zero\$)) :named a84))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (= (= ?v0 (fun_app\$
(sbintrunc\$ ?v1) ?v0)) (member\$b ?v0 (image\$ (sbintrunc\$ ?v1) top\$))))
:named a85))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$e
(fun_app\$h less\$ zero\$) ?v0) (fun_app\$e (fun_app\$h less\$ zero\$)
(fun_app\$b (power\$a ?v0) ?v1)))) :named a86))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (=> (< 0 ?v0) (< 0
(fun_app\$a (power\$ ?v0) ?v1)))) :named a87))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$e
(fun_app\$h less\$ zero\$) (fun_app\$b (power\$a ?v0) ?v1)) (or (fun_app\$e
(fun_app\$h less\$ zero\$) ?v0) (= ?v1 zero\$)))) :named a88))
(assert (! (forall ((?v0 Num\$)) (= (power\$c zero\$a (numeral\$
?v0)) zero\$a)) :named a89))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$j (power\$b zero\$b)
(numeral\$ ?v0)) zero\$b)) :named a90))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$b (power\$a zero\$)
(numeral\$ ?v0)) zero\$)) :named a91))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$a (power\$ 0)
(numeral\$ ?v0)) 0)) :named a92))
(assert (! (forall ((?v0 Nat\$)) (= (power\$c zero\$a (fun_app\$b
suc\$ ?v0)) zero\$a)) :named a93))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$j (power\$b zero\$b)
(fun_app\$b suc\$ ?v0)) zero\$b)) :named a94))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (power\$a zero\$)
(fun_app\$b suc\$ ?v0)) zero\$)) :named a95))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$a (power\$ 0)
(fun_app\$b suc\$ ?v0)) 0)) :named a96))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$e
(fun_app\$h less\$ (fun_app\$b of_nat\$a ?v0)) (fun_app\$b of_nat\$a ?v1))
(fun_app\$e (fun_app\$h less\$ ?v0) ?v1))) :named a97))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< (fun_app\$a
of_nat\$ ?v0) (fun_app\$a of_nat\$ ?v1)) (fun_app\$e (fun_app\$h less\$ ?v0)
?v1))) :named a98))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (< (smod\$
(fun_app\$k sint\$ ?v0) (fun_app\$k sint\$ ?v1)) (fun_app\$a (power\$ 2)
(fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ zero\$))))) :named
a99))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$e
(fun_app\$h less\$ zero\$) (fun_app\$b (minus\$ ?v0) ?v1)) (fun_app\$e
(fun_app\$h less\$ ?v1) ?v0))) :named a100))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$e ?v0 zero\$) (forall ((?v2 Nat\$)) (=> (fun_app\$e ?v0 ?v2)
(fun_app\$e ?v0 (fun_app\$b suc\$ ?v2))))) (fun_app\$e ?v0 ?v1))) :named
a101))
(assert (! (forall ((?v0 Nat\$)) (= (sints\$ ?v0) (collect\$b (uua\$
?v0)))) :named a102))
(assert (! (forall ((?v0 Nat\$)) (= (= zero\$ (fun_app\$b of_nat\$a
?v0)) (= zero\$ ?v0))) :named a103))
(assert (! (forall ((?v0 Nat\$)) (= (= 0 (fun_app\$a of_nat\$ ?v0))
(= zero\$ ?v0))) :named a104))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$b
(power\$a ?v0) ?v1) zero\$) (and (= ?v0 zero\$) (fun_app\$e (fun_app\$h
less\$ zero\$) ?v1)))) :named a105))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (= (= (fun_app\$a
(power\$ ?v0) ?v1) 0) (and (= ?v0 0) (fun_app\$e (fun_app\$h less\$ zero\$)
?v1)))) :named a106))
(assert (! (td_ext\$ sint\$ word_of_int\$ (sints\$ (len_of\$ type\$))
(sbintrunc\$ (fun_app\$b (minus\$ (len_of\$ type\$)) one\$))) :named a107))
(assert (! (= (fun_app\$k sint\$ (fun_app\$j (power\$b (numeral\$b
(bit0\$ one\$a))) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
zero\$)))) (- (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ zero\$))))) :named a108))
(assert (! (forall ((?v0 L_word\$)) (fun_app\$d (less_eq\$ ?v0)
?v0)) :named a109))
(assert (! (forall ((?v0 Num\$)) (less_eq\$b ?v0 ?v0)) :named
a110))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$e (fun_app\$h less_eq\$a
?v0) ?v0)) :named a111))
(assert (! (forall ((?v0 Int)) (<= ?v0 ?v0)) :named a112))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$j (power\$b
?v0) (fun_app\$b suc\$ zero\$)) ?v0) :pattern ((power\$b ?v0)))) :named
a113))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$b (power\$a ?v0)
(fun_app\$b suc\$ zero\$)) ?v0) :pattern ((power\$a ?v0)))) :named a114))
(assert (! (forall ((?v0 Int)) (! (= (fun_app\$a (power\$ ?v0)
(fun_app\$b suc\$ zero\$)) ?v0) :pattern ((power\$ ?v0)))) :named a115))
(assert (! (forall ((?v0 L_signed_word\$)) (= (fun_app\$l (minus\$a
?v0) zero\$a) ?v0)) :named a116))
(assert (! (forall ((?v0 L_word\$)) (= (fun_app\$m (minus\$b ?v0)
zero\$b) ?v0)) :named a117))
(assert (! (forall ((?v0 Int)) (= (- ?v0 0) ?v0)) :named a118))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (minus\$ ?v0)
zero\$) ?v0)) :named a119))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$d msb\$ ?v0)
(fun_app\$e (test_bit\$ ?v0) (fun_app\$b (minus\$ (len_of\$ type\$)) one\$)))
:pattern ((fun_app\$d msb\$ ?v0)))) :named a120))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$e (fun_app\$h less\$
?v0) ?v0))) :named a121))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$b (power\$a
(fun_app\$b suc\$ zero\$)) ?v0) (fun_app\$b suc\$ zero\$)) :pattern
((fun_app\$b (power\$a (fun_app\$b suc\$ zero\$)) ?v0)))) :named a122))
(assert (! (= (fun_app\$k sint\$ (uminus\$ (fun_app\$j (power\$b
(numeral\$b (bit0\$ one\$a))) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ zero\$))))) (- (fun_app\$a (power\$ 2) (fun_app\$b (minus\$
(len_of\$ type\$)) (fun_app\$b suc\$ zero\$))))) :named a123))
(assert (! (forall ((?v0 Num\$)) (= (of_nat\$b (numeral\$ ?v0))
(numeral\$b ?v0))) :named a124))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$b of_nat\$a (numeral\$
?v0)) (numeral\$ ?v0))) :named a125))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$a of_nat\$ (numeral\$
?v0)) (numeral\$a ?v0))) :named a126))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$i word_of_int\$
(fun_app\$a (power\$ 2) ?v0)) (fun_app\$j (power\$b (numeral\$b (bit0\$
one\$a))) ?v0))) :named a127))
(assert (! (forall ((?v0 Int)) (= (fun_app\$d msb\$ (fun_app\$i
word_of_int\$ ?v0)) (fun_app\$e (bin_nth\$ ?v0) (fun_app\$b (minus\$
(len_of\$ type\$)) one\$)))) :named a128))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (<= (-
(fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b
suc\$ zero\$)))) (smod\$ (fun_app\$k sint\$ ?v0) (fun_app\$k sint\$ ?v1))))
:named a129))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (= (< (sdiv\$
(fun_app\$k sint\$ ?v0) (fun_app\$k sint\$ ?v1)) (fun_app\$a (power\$ 2)
(fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ zero\$)))) (=> (=
?v0 (uminus\$ (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) (fun_app\$b
(minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ zero\$))))) (not (= ?v1
(uminus\$ one\$b)))))) :named a130))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$b
(power\$a ?v0) ?v1) (fun_app\$b suc\$ zero\$)) (or (= ?v1 zero\$) (= ?v0
(fun_app\$b suc\$ zero\$))))) :named a131))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$e (fun_app\$h less\$
?v0) (len_of\$ type\$)) (= (unat\$ (fun_app\$j (power\$b (numeral\$b (bit0\$
one\$a))) ?v0)) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v0))))
:named a132))
(assert (! (forall ((?v0 Nat\$) (?v1 L_word\$)) (=> (fun_app\$e
(fun_app\$h less\$ ?v0) (len_of\$ type\$)) (fun_app\$d (less\$a (bitAND\$ ?v1
(mask\$ ?v0))) (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) ?v0))))
:named a133))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (not (= ?v0
?v1)) (and (=> (fun_app\$e (fun_app\$h less\$ ?v0) ?v1) false) (=>
(fun_app\$e (fun_app\$h less\$ ?v1) ?v0) false))) false)) :named a134))
(assert (! (forall ((?v0 L_word\$)) (not (fun_app\$d (less\$a ?v0)
?v0))) :named a135))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$e (fun_app\$h less\$
?v0) ?v0))) :named a136))
(assert (! (forall ((?v0 Int)) (not (< ?v0 ?v0))) :named a137))
(assert (! (forall ((?v0 Num\$)) (not (less\$b ?v0 ?v0))) :named
a138))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$e (fun_app\$h less\$ zero\$) ?v0) (fun_app\$e (fun_app\$h less\$
(fun_app\$b (power\$a ?v0) ?v1)) (fun_app\$b (power\$a ?v0) ?v2)))
(fun_app\$e (fun_app\$h less\$ ?v1) ?v2))) :named a139))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$d msb\$ ?v0) (=
(bin_sign\$ (fun_app\$k sint\$ ?v0)) (- 1))) :pattern ((fun_app\$d msb\$
?v0)))) :named a140))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$b of_nat\$a ?v0) (fun_app\$b (power\$a (fun_app\$b of_nat\$a ?v1))
?v2)) (= ?v0 (fun_app\$b (power\$a ?v1) ?v2)))) :named a141))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$a of_nat\$ ?v0) (fun_app\$a (power\$ (fun_app\$a of_nat\$ ?v1))
?v2)) (= ?v0 (fun_app\$b (power\$a ?v1) ?v2)))) :named a142))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat_bool_fun\$)) (=>
(forall ((?v2 Nat\$)) (= (fun_app\$e ?v0 ?v2) (fun_app\$e ?v1 ?v2))) (=
(collect\$a ?v0) (collect\$a ?v1)))) :named a143))
(assert (! (forall ((?v0 Int_bool_fun\$) (?v1 Int_bool_fun\$)) (=>
(forall ((?v2 Int)) (= (fun_app\$c ?v0 ?v2) (fun_app\$c ?v1 ?v2))) (=
(collect\$b ?v0) (collect\$b ?v1)))) :named a144))
(assert (! (= zero\$a (word_of_int\$a 0)) :named a145))
(assert (! (= zero\$b (fun_app\$i word_of_int\$ 0)) :named a146))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$b (power\$a (fun_app\$b of_nat\$a ?v0)) ?v1) (fun_app\$b of_nat\$a
?v2)) (= (fun_app\$b (power\$a ?v0) ?v1) ?v2))) :named a147))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$a (power\$ (fun_app\$a of_nat\$ ?v0)) ?v1) (fun_app\$a of_nat\$
?v2)) (= (fun_app\$b (power\$a ?v0) ?v1) ?v2))) :named a148))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$e
(fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(fun_app\$b (minus\$ (len_of\$ type\$)) ?v1))) (= (unat\$ (times\$ (fun_app\$j
(power\$b (numeral\$b (bit0\$ one\$a))) ?v1) (of_nat\$b ?v0))) (fun_app\$b
(times\$a (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v1)) ?v0))))
:named a149))
(assert (! (= (numeral\$ (bit0\$ one\$a)) (fun_app\$b suc\$
(fun_app\$b suc\$ zero\$))) :named a150))
(assert (! (forall ((?v0 L_word\$)) (! (= (scast\$b ?v0)
(fun_app\$i word_of_int\$ (fun_app\$k sint\$ ?v0))) :pattern ((scast\$b
?v0)))) :named a151))
(assert (! (forall ((?v0 Num\$)) (! (= (numeral\$b ?v0) (fun_app\$i
word_of_int\$ (numeral\$a ?v0))) :pattern ((numeral\$b ?v0)))) :named
a152))
(assert (! (forall ((?v0 Nat\$)) (=> (and (= (of_nat\$c ?v0)
zero\$a) (fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$
(bit0\$ one\$a))) (len_of\$a type\$a)))) (= ?v0 zero\$))) :named a153))
(assert (! (forall ((?v0 Nat\$)) (=> (and (= (of_nat\$b ?v0)
zero\$b) (fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$
(bit0\$ one\$a))) (len_of\$ type\$)))) (= ?v0 zero\$))) :named a154))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (<= (-
(fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b
suc\$ zero\$)))) (sdiv\$ (fun_app\$k sint\$ ?v0) (fun_app\$k sint\$ ?v1))))
:named a155))
(assert (! (forall ((?v0 Nat\$)) (=> (and (fun_app\$e (fun_app\$h
less\$ zero\$) ?v0) (fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (len_of\$a type\$a)))) (not (= (of_nat\$c ?v0)
zero\$a)))) :named a156))
(assert (! (forall ((?v0 Nat\$)) (=> (and (fun_app\$e (fun_app\$h
less\$ zero\$) ?v0) (fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (len_of\$ type\$)))) (not (= (of_nat\$b ?v0)
zero\$b)))) :named a157))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (= (< (sdiv\$
(fun_app\$k sint\$ ?v0) (fun_app\$k sint\$ ?v1)) (fun_app\$a (power\$ 2)
(fun_app\$b (minus\$ (size\$ ?v0)) one\$))) (or (not (= ?v0 (uminus\$
(fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) (fun_app\$b (minus\$
(size\$ ?v0)) one\$))))) (not (= ?v1 (uminus\$ one\$b)))))) :named a158))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (fun_app\$e (fun_app\$h
less_eq\$a (fun_app\$b (minus\$ ?v0) ?v1)) ?v0)) :named a159))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$e
(fun_app\$h less\$ zero\$) ?v0) (fun_app\$e (fun_app\$h less\$ (fun_app\$b
(minus\$ ?v0) (fun_app\$b suc\$ ?v1))) ?v0))) :named a160))
(assert (! (forall ((?v0 Nat\$)) (= (unat\$ (of_nat\$b ?v0))
(fun_app\$b (modulo\$a ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$ type\$))))) :named a161))
(assert (! (forall ((?v0 L_word_set\$)) (= (collect\$ (uub\$ ?v0))
?v0)) :named a162))
(assert (! (forall ((?v0 Nat_set\$)) (= (collect\$a (uuc\$ ?v0))
?v0)) :named a163))
(assert (! (forall ((?v0 Int_set\$)) (= (collect\$b (uud\$ ?v0))
?v0)) :named a164))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ ?v1) ?v2))) (and (fun_app\$e (fun_app\$h
less_eq\$a ?v2) ?v1) (fun_app\$e (fun_app\$h less\$ ?v1) (len_of\$ type\$))))
(fun_app\$d (less\$a (times\$ (of_nat\$b ?v0) (fun_app\$j (power\$b
(numeral\$b (bit0\$ one\$a))) ?v2))) (fun_app\$j (power\$b (numeral\$b (bit0\$
one\$a))) ?v1)))) :named a165))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (! (=> (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1) (= (fun_app\$b (modulo\$a ?v0) ?v1) ?v0))
:pattern ((fun_app\$b (modulo\$a ?v0) ?v1)))) :named a166))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$)) (=> (and
(fun_app\$e (is_aligned\$ ?v0) ?v1) (forall ((?v2 Nat\$)) (=> (and (= ?v0
(times\$ (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) ?v1) (of_nat\$b
?v2))) (fun_app\$e (fun_app\$h less\$ ?v2) (fun_app\$b (power\$a (numeral\$
(bit0\$ one\$a))) (fun_app\$b (minus\$ (len_of\$ type\$)) ?v1)))) false)))
false)) :named a167))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(fun_app\$e (fun_app\$h less\$ (fun_app\$b (times\$a (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) ?v0)) ?v1)) (fun_app\$b (power\$a (numeral\$
(bit0\$ one\$a))) ?v2)) (fun_app\$e (fun_app\$h less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (fun_app\$b (minus\$ ?v2) ?v0)))))
:named a168))
(assert (! (forall ((?v0 L_signed_word\$)) (! (= (msb\$a ?v0) (not
(= (shiftr\$ ?v0 (fun_app\$b (minus\$ (len_of\$a type\$a)) one\$)) zero\$a)))
:pattern ((msb\$a ?v0)))) :named a169))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$d msb\$ ?v0)
(not (= (shiftr\$a ?v0 (fun_app\$b (minus\$ (len_of\$ type\$)) one\$))
zero\$b))) :pattern ((fun_app\$d msb\$ ?v0)))) :named a170))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (forall
((?v2 Nat\$)) (=> (not (fun_app\$e ?v0 ?v2)) (exists ((?v3 Nat\$)) (and
(fun_app\$e (fun_app\$h less\$ ?v3) ?v2) (not (fun_app\$e ?v0 ?v3))))))
(fun_app\$e ?v0 ?v1))) :named a171))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (forall
((?v2 Nat\$)) (=> (forall ((?v3 Nat\$)) (=> (fun_app\$e (fun_app\$h less\$
?v3) ?v2) (fun_app\$e ?v0 ?v3))) (fun_app\$e ?v0 ?v2))) (fun_app\$e ?v0
?v1))) :named a172))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (! (=
(fun_app\$d (less_eq\$ ?v0) ?v1) (fun_app\$e (fun_app\$h less_eq\$a (unat\$
?v0)) (unat\$ ?v1))) :pattern ((fun_app\$d (less_eq\$ ?v0) ?v1)))) :named
a173))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$e
(fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$ type\$))) (fun_app\$e (fun_app\$h less\$ ?v1) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (len_of\$ type\$)))) (= (fun_app\$e (fun_app\$h
less\$ ?v1) ?v0) (fun_app\$d (less\$a (of_nat\$b ?v1)) (of_nat\$b ?v0)))))
:named a174))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$e (fun_app\$h less\$
?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$ type\$))) (=
(unat\$ (of_nat\$b ?v0)) ?v0))) :named a175))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (= (not
(fun_app\$d (less_eq\$ ?v0) ?v1)) (fun_app\$d (less\$a ?v1) ?v0))) :named
a176))
(assert (! (forall ((?v0 L_signed_word\$) (?v1 Nat\$)) (=> (and
(less\$c ?v0 (power\$c (numeral\$c (bit0\$ one\$a)) (fun_app\$b (minus\$
(len_of\$a type\$a)) ?v1))) (and (fun_app\$e (fun_app\$h less\$ ?v1)
(len_of\$a type\$a)) (not (= ?v0 zero\$a)))) (not (= (times\$b ?v0 (power\$c
(numeral\$c (bit0\$ one\$a)) ?v1)) zero\$a)))) :named a177))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$)) (=> (and
(fun_app\$d (less\$a ?v0) (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a)))
(fun_app\$b (minus\$ (len_of\$ type\$)) ?v1))) (and (fun_app\$e (fun_app\$h
less\$ ?v1) (len_of\$ type\$)) (not (= ?v0 zero\$b)))) (not (= (times\$ ?v0
(fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) ?v1)) zero\$b)))) :named
a178))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (of_nat\$b
(fun_app\$b (times\$a ?v0) ?v1)) (times\$ (of_nat\$b ?v0) (of_nat\$b ?v1))))
:named a179))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
of_nat\$a (fun_app\$b (times\$a ?v0) ?v1)) (fun_app\$b (times\$a (fun_app\$b
of_nat\$a ?v0)) (fun_app\$b of_nat\$a ?v1)))) :named a180))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$a of_nat\$
(fun_app\$b (times\$a ?v0) ?v1)) (times\$c (fun_app\$a of_nat\$ ?v0)
(fun_app\$a of_nat\$ ?v1)))) :named a181))
(assert (! (forall ((?v0 L_word\$)) (member\$b (fun_app\$k sint\$
?v0) (sints\$ (len_of\$ type\$)))) :named a182))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$e (fun_app\$h less\$
?v0) ?v0) false)) :named a183))
(assert (! (forall ((?v0 Nat\$)) (! (= (of_nat\$b (fun_app\$b suc\$
?v0)) (plus\$ one\$b (of_nat\$b ?v0))) :pattern ((fun_app\$b suc\$ ?v0))))
:named a184))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$b of_nat\$a
(fun_app\$b suc\$ ?v0)) (fun_app\$b (plus\$a one\$) (fun_app\$b of_nat\$a
?v0))) :pattern ((fun_app\$b suc\$ ?v0)))) :named a185))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$a of_nat\$
(fun_app\$b suc\$ ?v0)) (+ 1 (fun_app\$a of_nat\$ ?v0))) :pattern
((fun_app\$b suc\$ ?v0)))) :named a186))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1) (not (= ?v0 ?v1)))) :named a187))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$e (fun_app\$h less\$ ?v0) ?v1) (fun_app\$e (fun_app\$h less\$ ?v1)
?v2)) (fun_app\$e (fun_app\$h less\$ (fun_app\$b suc\$ ?v0)) ?v2))) :named
a188))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1) (not (= ?v1 ?v0)))) :named a189))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 L_signed_word\$)
(?v3 L_signed_word\$)) (=> (and (fun_app\$e (fun_app\$h less\$ ?v0)
(fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (fun_app\$b (minus\$
(len_of\$a type\$a)) ?v1))) (and (= ?v2 (times\$b (power\$c (numeral\$c
(bit0\$ one\$a)) ?v1) (of_nat\$c ?v0))) (and (less_eq\$c ?v3 ?v2) (and
(fun_app\$e (fun_app\$h less\$ ?v1) (len_of\$a type\$a)) (not (= (modulo\$b
?v3 (power\$c (numeral\$c (bit0\$ one\$a)) ?v1)) zero\$a)))))) (less\$c
(divide\$ ?v3 (power\$c (numeral\$c (bit0\$ one\$a)) ?v1)) (of_nat\$c ?v0))))
:named a190))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 L_word\$) (?v3
L_word\$)) (=> (and (fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (fun_app\$b (minus\$ (len_of\$ type\$)) ?v1)))
(and (= ?v2 (times\$ (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) ?v1)
(of_nat\$b ?v0))) (and (fun_app\$d (less_eq\$ ?v3) ?v2) (and (fun_app\$e
(fun_app\$h less\$ ?v1) (len_of\$ type\$)) (not (= (modulo\$c ?v3 (fun_app\$j
(power\$b (numeral\$b (bit0\$ one\$a))) ?v1)) zero\$b)))))) (fun_app\$d
(less\$a (divide\$a ?v3 (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a)))
?v1))) (of_nat\$b ?v0)))) :named a191))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (not (= ?v0 ?v1))
(or (fun_app\$e (fun_app\$h less\$ ?v0) ?v1) (fun_app\$e (fun_app\$h less\$
?v1) ?v0)))) :named a192))
(assert (! (forall ((?v0 L_signed_word\$)) (= (not (= ?v0
zero\$a)) (less\$c zero\$a ?v0))) :named a193))
(assert (! (forall ((?v0 L_word\$)) (= (not (= ?v0 zero\$b))
(fun_app\$d (less\$a zero\$b) ?v0))) :named a194))
(assert (! (forall ((?v0 Nat\$)) (= (not (fun_app\$e (fun_app\$h
less\$ zero\$) ?v0)) (= ?v0 zero\$))) :named a195))
(assert (! (forall ((?v0 Nat\$)) (=> (and (=> (= ?v0 zero\$)
false) (=> (not (= ?v0 zero\$)) false)) false)) :named a196))
(assert (! (forall ((?v0 Int)) (= (fun_app\$k sint\$ (fun_app\$i
word_of_int\$ ?v0)) (fun_app\$ (sbintrunc\$ (fun_app\$b (minus\$ (len_of\$
type\$)) one\$)) ?v0))) :named a197))
(assert (! (forall ((?v0 Nat\$)) (not (= ?v0 (fun_app\$b suc\$
?v0)))) :named a198))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= (fun_app\$b
suc\$ ?v0) (fun_app\$b suc\$ ?v1)) (= ?v0 ?v1))) :named a199))
(assert (! (forall ((?v0 Nat\$)) (! (=> (fun_app\$e (fun_app\$h
less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$
type\$))) (= (toEnum\$ ?v0) (of_nat\$b ?v0))) :pattern ((toEnum\$ ?v0))))
:named a200))
(assert (! (forall ((?v0 Nat\$)) (= (= (power\$c (numeral\$c (bit0\$
one\$a)) ?v0) zero\$a) (fun_app\$e (fun_app\$h less_eq\$a (len_of\$a type\$a))
?v0))) :named a201))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$j (power\$b
(numeral\$b (bit0\$ one\$a))) ?v0) zero\$b) (fun_app\$e (fun_app\$h less_eq\$a
(len_of\$ type\$)) ?v0))) :named a202))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (minus\$ (fun_app\$b (minus\$ ?v0) ?v1)) ?v2) (fun_app\$b
(minus\$ (fun_app\$b (minus\$ ?v0) ?v2)) ?v1))) :named a203))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (not (= ?v0
zero\$)) (not (= (fun_app\$b (power\$a ?v0) ?v1) zero\$)))) :named a204))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (=> (not (= ?v0 0))
(not (= (fun_app\$a (power\$ ?v0) ?v1) 0)))) :named a205))
(assert (! (forall ((?v0 L_word\$)) (=> (forall ((?v1 Nat\$)) (=>
(and (= ?v0 (of_nat\$b ?v1)) (fun_app\$e (fun_app\$h less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$ type\$)))) false)) false))
:named a206))
(assert (! (forall ((?v0 L_word\$)) (exists ((?v1 Nat\$)) (and (=
?v0 (of_nat\$b ?v1)) (fun_app\$e (fun_app\$h less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$ type\$)))))) :named a207))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$e
(fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$ type\$))) (and (fun_app\$e (fun_app\$h less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$ type\$))) (= (of_nat\$b ?v0)
(of_nat\$b ?v1)))) (= ?v0 ?v1))) :named a208))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (<= (-
(fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (size\$ ?v0)) one\$))) (sdiv\$
(fun_app\$k sint\$ ?v0) (fun_app\$k sint\$ ?v1)))) :named a209))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$e
(fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$ type\$))) (fun_app\$e (fun_app\$h less\$ ?v1) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (len_of\$ type\$)))) (= (= (of_nat\$b ?v0)
(of_nat\$b ?v1)) (= ?v0 ?v1)))) :named a210))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$e (fun_app\$h less\$
?v0) zero\$) false)) :named a211))
(assert (! (forall ((?v0 Int)) (= (< (- ?v0) ?v0) (< 0 ?v0)))
:named a212))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (= (times\$ ?v0
?v1) (times\$ ?v1 ?v0))) :named a213))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(times\$a ?v0) ?v1) (fun_app\$b (times\$a ?v1) ?v0))) :named a214))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (times\$c ?v0 ?v1)
(times\$c ?v1 ?v0))) :named a215))
(assert (! (forall ((?v0 Int)) (= (uminus\$ (fun_app\$i
word_of_int\$ ?v0)) (fun_app\$i word_of_int\$ (- ?v0)))) :named a216))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$e ?v0 zero\$) (forall ((?v2 Nat\$)) (=> (and (fun_app\$e
(fun_app\$h less\$ zero\$) ?v2) (not (fun_app\$e ?v0 ?v2))) (exists ((?v3
Nat\$)) (and (fun_app\$e (fun_app\$h less\$ ?v3) ?v2) (not (fun_app\$e ?v0
?v3))))))) (fun_app\$e ?v0 ?v1))) :named a217))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$e
(fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$ type\$))) (fun_app\$e (fun_app\$h less\$ ?v1) ?v0)) (fun_app\$d
(less\$a (of_nat\$b ?v1)) (of_nat\$b ?v0)))) :named a218))
(assert (! (not (msb\$a zero\$a)) :named a219))
(assert (! (not (fun_app\$d msb\$ zero\$b)) :named a220))
(assert (! (= one\$b (fun_app\$i word_of_int\$ 1)) :named a221))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1) (not (= ?v1 zero\$)))) :named a222))
(assert (! (forall ((?v0 L_signed_word\$)) (! (= (fun_app\$l
(minus\$a ?v0) ?v0) zero\$a) :pattern ((minus\$a ?v0)))) :named a223))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$m (minus\$b
?v0) ?v0) zero\$b) :pattern ((minus\$b ?v0)))) :named a224))
(assert (! (forall ((?v0 Int)) (! (= (- ?v0 ?v0) 0) :pattern
((uue\$ ?v0)))) :named a225))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$b (minus\$ ?v0)
?v0) zero\$) :pattern ((minus\$ ?v0)))) :named a226))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$)) (! (= (fun_app\$j
(power\$b ?v0) (fun_app\$b suc\$ ?v1)) (times\$ ?v0 (fun_app\$j (power\$b
?v0) ?v1))) :pattern ((fun_app\$j (power\$b ?v0) (fun_app\$b suc\$ ?v1)))))
:named a227))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (! (= (fun_app\$b
(power\$a ?v0) (fun_app\$b suc\$ ?v1)) (fun_app\$b (times\$a ?v0) (fun_app\$b
(power\$a ?v0) ?v1))) :pattern ((fun_app\$b (power\$a ?v0) (fun_app\$b suc\$
?v1))))) :named a228))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (! (= (fun_app\$a
(power\$ ?v0) (fun_app\$b suc\$ ?v1)) (times\$c ?v0 (fun_app\$a (power\$ ?v0)
?v1))) :pattern ((fun_app\$a (power\$ ?v0) (fun_app\$b suc\$ ?v1)))))
:named a229))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_list\$) (?v2
Nat_option_list\$) (?v3 Nat\$)) (=> (and (ial_invar\$ ?v0 ?v1 ?v2)
(member\$a ?v3 (set\$ ?v1))) (fun_app\$e (fun_app\$h less\$ ?v3) (size\$a
?v2)))) :named a230))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$e (fun_app\$h less\$
?v0) zero\$) false)) :named a231))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (- (+ ?v0 ?v1) ?v0)
?v1)) :named a232))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (= (fun_app\$m
(minus\$b (plus\$ ?v0 ?v1)) ?v0) ?v1)) :named a233))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b (minus\$
(fun_app\$b (plus\$a ?v0) ?v1)) ?v0) ?v1)) :named a234))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$e (fun_app\$h less\$
?v0) zero\$))) :named a235))
(assert (! (= (power\$c (numeral\$c (bit0\$ one\$a)) (len_of\$a
type\$a)) zero\$a) :named a236))
(assert (! (= (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a)))
(len_of\$ type\$)) zero\$b) :named a237))
(assert (! (forall ((?v0 L_word\$)) (= (of_nat\$b (unat\$ ?v0))
?v0)) :named a238))
(assert (! (forall ((?v0 Nat\$)) (=> (=> (= ?v0 zero\$) false)
(fun_app\$e (fun_app\$h less\$ zero\$) ?v0))) :named a239))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$)) (=> (fun_app\$e
(test_bit\$ ?v0) ?v1) (fun_app\$d (less_eq\$ (fun_app\$j (power\$b
(numeral\$b (bit0\$ one\$a))) ?v1)) ?v0))) :named a240))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (not (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1)) (= (fun_app\$e (fun_app\$h less\$ ?v0)
(fun_app\$b suc\$ ?v1)) (= ?v0 ?v1)))) :named a241))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$) (?v2 Nat\$)) (and
(= (fun_app\$e (test_bit\$ (bitOR\$ ?v0 ?v1)) (fun_app\$b (minus\$ (len_of\$
type\$)) (fun_app\$b suc\$ ?v2))) (or (fun_app\$e (test_bit\$ ?v0)
(fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ ?v2))) (fun_app\$e
(test_bit\$ ?v1) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
?v2))))) (and (= (fun_app\$e (test_bit\$ (bitAND\$ ?v0 ?v1)) (fun_app\$b
(minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ ?v2))) (and (fun_app\$e
(test_bit\$ ?v0) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
?v2))) (fun_app\$e (test_bit\$ ?v1) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ ?v2))))) (and (= (fun_app\$e (test_bit\$ (bitXOR\$ ?v0
?v1)) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ ?v2))) (not
(= (fun_app\$e (test_bit\$ ?v0) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ ?v2))) (fun_app\$e (test_bit\$ ?v1) (fun_app\$b (minus\$
(len_of\$ type\$)) (fun_app\$b suc\$ ?v2)))))) (= (fun_app\$e (test_bit\$
(bitNOT\$ ?v0)) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
?v2))) (not (fun_app\$e (test_bit\$ ?v0) (fun_app\$b (minus\$ (len_of\$
type\$)) (fun_app\$b suc\$ ?v2))))))))) :named a242))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat_bool_fun\$))
(=> (and (fun_app\$e (fun_app\$h less\$ ?v0) ?v1) (and (forall ((?v3
Nat\$)) (=> (= ?v1 (fun_app\$b suc\$ ?v3)) (fun_app\$e ?v2 ?v3))) (forall
((?v3 Nat\$)) (=> (and (fun_app\$e (fun_app\$h less\$ ?v3) ?v1) (fun_app\$e
?v2 (fun_app\$b suc\$ ?v3))) (fun_app\$e ?v2 ?v3))))) (fun_app\$e ?v2
?v0))) :named a243))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (! (= (fun_app\$a
(shiftl\$ ?v0) ?v1) (times\$c ?v0 (fun_app\$a (power\$ 2) ?v1))) :pattern
((fun_app\$a (shiftl\$ ?v0) ?v1)))) :named a244))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2
Nat_nat_bool_fun_fun\$)) (=> (and (fun_app\$e (fun_app\$h less\$ ?v0) ?v1)
(and (forall ((?v3 Nat\$)) (fun_app\$e (fun_app\$h ?v2 ?v3) (fun_app\$b
suc\$ ?v3))) (forall ((?v3 Nat\$) (?v4 Nat\$) (?v5 Nat\$)) (=> (and
(fun_app\$e (fun_app\$h less\$ ?v3) ?v4) (and (fun_app\$e (fun_app\$h less\$
?v4) ?v5) (and (fun_app\$e (fun_app\$h ?v2 ?v3) ?v4) (fun_app\$e
(fun_app\$h ?v2 ?v4) ?v5)))) (fun_app\$e (fun_app\$h ?v2 ?v3) ?v5)))))
(fun_app\$e (fun_app\$h ?v2 ?v0) ?v1))) :named a245))
(assert (! (forall ((?v0 L_word\$)) (! (=> (fun_app\$e (fun_app\$h
less\$ (unat\$ ?v0)) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(fun_app\$b (minus\$ (len_of\$ type\$)) one\$))) (= (snat\$ ?v0) (unat\$
?v0))) :pattern ((snat\$ ?v0)))) :named a246))
(assert (! (forall ((?v0 L_signed_word\$)) (= (times\$b zero\$a
?v0) zero\$a)) :named a247))
(assert (! (forall ((?v0 L_word\$)) (= (times\$ zero\$b ?v0)
zero\$b)) :named a248))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (times\$a zero\$)
?v0) zero\$)) :named a249))
(assert (! (forall ((?v0 Int)) (= (* 0 ?v0) 0)) :named a250))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$e
(fun_app\$h less\$ (fun_app\$b suc\$ ?v0)) (fun_app\$b suc\$ ?v1)) (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1))) :named a251))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (minus\$ zero\$)
?v0) zero\$)) :named a252))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (not
(fun_app\$e (fun_app\$h less\$ ?v0) ?v1)) (fun_app\$e (fun_app\$h less\$ ?v0)
(fun_app\$b suc\$ ?v1))) (= ?v1 ?v0))) :named a253))
(assert (! (forall ((?v0 Nat_nat_bool_fun_fun\$) (?v1 Nat\$) (?v2
Nat\$)) (=> (and (forall ((?v3 Nat\$)) (fun_app\$e (fun_app\$h ?v0 ?v3)
zero\$)) (and (forall ((?v3 Nat\$)) (fun_app\$e (fun_app\$h ?v0 zero\$)
(fun_app\$b suc\$ ?v3))) (forall ((?v3 Nat\$) (?v4 Nat\$)) (=> (fun_app\$e
(fun_app\$h ?v0 ?v3) ?v4) (fun_app\$e (fun_app\$h ?v0 (fun_app\$b suc\$
?v3)) (fun_app\$b suc\$ ?v4)))))) (fun_app\$e (fun_app\$h ?v0 ?v1) ?v2)))
:named a254))
(assert (! (forall ((?v0 L_word\$)) (= (plus\$ ?v0 zero\$b) ?v0))
:named a255))
(assert (! (forall ((?v0 L_signed_word\$)) (= (plus\$b ?v0 zero\$a)
?v0)) :named a256))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (plus\$a ?v0)
zero\$) ?v0)) :named a257))
(assert (! (forall ((?v0 Int)) (= (+ ?v0 0) ?v0)) :named a258))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$e
(fun_app\$h less\$ (fun_app\$b suc\$ ?v0)) ?v1) (exists ((?v2 Nat\$)) (and
(= ?v1 (fun_app\$b suc\$ ?v2)) (fun_app\$e (fun_app\$h less\$ ?v0) ?v2)))))
:named a259))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (forall
((?v2 Nat\$)) (=> (fun_app\$e (fun_app\$h less\$ ?v2) (fun_app\$b suc\$ ?v0))
(fun_app\$e ?v1 ?v2))) (and (fun_app\$e ?v1 ?v0) (forall ((?v2 Nat\$)) (=>
(fun_app\$e (fun_app\$h less\$ ?v2) ?v0) (fun_app\$e ?v1 ?v2)))))) :named
a260))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$e (fun_app\$h less\$
zero\$) ?v0) (exists ((?v1 Nat\$)) (= ?v0 (fun_app\$b suc\$ ?v1))))) :named
a261))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (not (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1)) (fun_app\$e (fun_app\$h less\$ ?v1) (fun_app\$b
suc\$ ?v0)))) :named a262))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$)) (=> (fun_app\$d
(less\$a ?v0) (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) ?v1)) (=
(bitAND\$ ?v0 (mask\$ ?v1)) ?v0))) :named a263))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$e
(fun_app\$h less\$ ?v0) (fun_app\$b suc\$ ?v1)) (or (fun_app\$e (fun_app\$h
less\$ ?v0) ?v1) (= ?v0 ?v1)))) :named a264))
(assert (! (not (= (len_of\$ type\$) zero\$)) :named a265))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (minus\$ ?v0)
zero\$) ?v0)) :named a266))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$e (fun_app\$h less\$ ?v0)
(fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v0))) :named a267))
(assert (! (forall ((?v0 Int) (?v1 L_word\$)) (=> (and (member\$b
?v0 (sints\$ (len_of\$ type\$))) (= (fun_app\$i word_of_int\$ ?v0) ?v1)) (=
(fun_app\$k sint\$ ?v1) ?v0))) :named a268))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (exists
((?v2 Nat\$)) (and (fun_app\$e (fun_app\$h less\$ ?v2) (fun_app\$b suc\$
?v0)) (fun_app\$e ?v1 ?v2))) (or (fun_app\$e ?v1 ?v0) (exists ((?v2
Nat\$)) (and (fun_app\$e (fun_app\$h less\$ ?v2) ?v0) (fun_app\$e ?v1
?v2)))))) :named a269))
(assert (! (forall ((?v0 Nat\$)) (= (not (fun_app\$e (fun_app\$h
less\$ zero\$) ?v0)) (= ?v0 zero\$))) :named a270))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$e (fun_app\$h less_eq\$a
zero\$) ?v0)) :named a271))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$) (?v2 L_word\$) (?v3
Nat\$)) (=> (and (fun_app\$e (is_aligned\$ ?v0) ?v1) (and (fun_app\$e
(is_aligned\$ ?v2) ?v3) (and (fun_app\$e (fun_app\$h less\$ ?v3) (len_of\$
type\$)) (and (member\$ ?v0 (atLeastAtMost\$ ?v2 (plus\$ ?v2 (fun_app\$m
(minus\$b (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) ?v3)) one\$b))))
(and (fun_app\$e (fun_app\$h less_eq\$a ?v1) ?v3) (fun_app\$e (fun_app\$h
less\$ zero\$) ?v1)))))) (exists ((?v4 Nat\$)) (and (= (fun_app\$m (minus\$b
?v0) ?v2) (times\$ (of_nat\$b ?v4) (fun_app\$j (power\$b (numeral\$b (bit0\$
one\$a))) ?v1))) (fun_app\$e (fun_app\$h less\$ ?v4) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (fun_app\$b (minus\$ ?v3) ?v1))))))) :named
a272))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1) (fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b
suc\$ ?v1)))) :named a273))
(assert (! (= (of_nat\$c (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (len_of\$a type\$a))) zero\$a) :named a274))
(assert (! (= (of_nat\$b (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (len_of\$ type\$))) zero\$b) :named a275))
(assert (! (forall ((?v0 L_signed_word\$) (?v1 Nat\$)) (= (=
(bitAND\$a ?v0 (mask\$a ?v1)) ?v0) (= (shiftr\$ ?v0 ?v1) zero\$a))) :named
a276))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$)) (= (= (bitAND\$ ?v0
(mask\$ ?v1)) ?v0) (= (shiftr\$a ?v0 ?v1) zero\$b))) :named a277))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$e
(fun_app\$h less\$ ?v0) (fun_app\$b suc\$ ?v1)) (and (=> (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1) false) (=> (= ?v0 ?v1) false))) false))
:named a278))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$e (fun_app\$h less\$
?v0) (len_of\$ type\$)) (= (to_bl\$ (fun_app\$j (power\$b (numeral\$b (bit0\$
one\$a))) ?v0)) (append\$ (replicate\$ (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ ?v0)) false) (cons\$ true (replicate\$ ?v0 false))))))
:named a279))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1) (not (= (fun_app\$b suc\$ ?v0) ?v1)))
(fun_app\$e (fun_app\$h less\$ (fun_app\$b suc\$ ?v0)) ?v1))) :named a280))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$j (power\$b
?v0) zero\$) one\$b) :pattern ((power\$b ?v0)))) :named a281))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$b (power\$a ?v0)
zero\$) one\$) :pattern ((power\$a ?v0)))) :named a282))
(assert (! (forall ((?v0 Int)) (! (= (fun_app\$a (power\$ ?v0)
zero\$) 1) :pattern ((power\$ ?v0)))) :named a283))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$e
(fun_app\$h less\$ (fun_app\$b suc\$ ?v0)) ?v1) (forall ((?v2 Nat\$)) (=>
(and (fun_app\$e (fun_app\$h less\$ ?v0) ?v2) (= ?v1 (fun_app\$b suc\$
?v2))) false))) false)) :named a284))
(assert (! (forall ((?v0 Nat\$) (?v1 Int)) (= (= (bin_sign\$
(fun_app\$ (sbintrunc\$ ?v0) ?v1)) (- 1)) (fun_app\$e (bin_nth\$ ?v1)
?v0))) :named a285))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$e
(fun_app\$h less\$ (fun_app\$b suc\$ ?v0)) ?v1) (fun_app\$e (fun_app\$h less\$
?v0) ?v1))) :named a286))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1) (and (=> (= ?v1 (fun_app\$b suc\$ ?v0)) false)
(forall ((?v2 Nat\$)) (=> (and (fun_app\$e (fun_app\$h less\$ ?v0) ?v2) (=
?v1 (fun_app\$b suc\$ ?v2))) false)))) false)) :named a287))
(assert (! (forall ((?v0 Nat\$)) (=> (not (= ?v0 zero\$)) (exists
((?v1 Nat\$)) (= ?v0 (fun_app\$b suc\$ ?v1))))) :named a288))
(assert (! (forall ((?v0 Num\$)) (not (= zero\$ (numeral\$ ?v0))))
:named a289))
(assert (! (forall ((?v0 Num\$)) (not (= 0 (numeral\$a ?v0))))
:named a290))
(assert (! (forall ((?v0 Nat\$)) (=> (and (=> (= ?v0 zero\$)
false) (forall ((?v1 Nat\$)) (=> (= ?v0 (fun_app\$b suc\$ ?v1)) false)))
false)) :named a291))
(assert (! (forall ((?v0 Nat\$) (?v1 L_word\$) (?v2 Nat\$)) (=>
(and (fun_app\$d (less\$a (times\$ (fun_app\$j (power\$b (numeral\$b (bit0\$
one\$a))) ?v0) ?v1)) (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a)))
?v2)) (fun_app\$d (less\$a ?v1) (fun_app\$j (power\$b (numeral\$b (bit0\$
one\$a))) (fun_app\$b (minus\$ (len_of\$ type\$)) ?v0)))) (fun_app\$d (less\$a
?v1) (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) (fun_app\$b (minus\$
?v2) ?v0))))) :named a292))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$b suc\$
?v0)))) :named a293))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$e (fun_app\$h less\$
?v0) (len_of\$ type\$)) (fun_app\$d (less\$a (of_nat\$b ?v0)) (fun_app\$j
(power\$b (numeral\$b (bit0\$ one\$a))) ?v0)))) :named a294))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 L_word\$)) (=
(fun_app\$e ?v0 (unat\$ ?v1)) (not (exists ((?v2 Nat\$)) (and (= (of_nat\$b
?v2) ?v1) (and (fun_app\$e (fun_app\$h less\$ ?v2) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (len_of\$ type\$))) (not (fun_app\$e ?v0
?v2)))))))) :named a295))
(assert (! (forall ((?v0 Num\$)) (! (= (less\$b one\$a (bit0\$ ?v0))
true) :pattern ((bit0\$ ?v0)))) :named a296))
(assert (! (forall ((?v0 Nat\$) (?v1 L_word\$)) (=> (and (=
(of_nat\$b ?v0) ?v1) (fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$ type\$)))) (= (unat\$ ?v1)
?v0))) :named a297))
(assert (! (forall ((?v0 Nat\$)) (=> (less\$c zero\$a (power\$c
(numeral\$c (bit0\$ one\$a)) ?v0)) (= (uint\$ (power\$c (numeral\$c (bit0\$
one\$a)) ?v0)) (fun_app\$a (power\$ 2) ?v0)))) :named a298))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (less\$a zero\$b)
(fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) ?v0)) (= (uint\$a
(fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) ?v0)) (fun_app\$a (power\$
2) ?v0)))) :named a299))
(assert (! (forall ((?v0 Nat\$)) (=> (= zero\$ (fun_app\$b suc\$
?v0)) false)) :named a300))
(assert (! (forall ((?v0 Nat\$) (?v1 L_word\$)) (=> (fun_app\$e
(fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$ type\$))) (= (= (unat\$ ?v1) ?v0) (= ?v1 (of_nat\$b ?v0)))))
:named a301))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (= (fun_app\$j
(power\$b (fun_app\$m (minus\$b ?v0) ?v1)) (numeral\$ (bit0\$ one\$a)))
(fun_app\$j (power\$b (fun_app\$m (minus\$b ?v1) ?v0)) (numeral\$ (bit0\$
one\$a))))) :named a302))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$a (power\$
(- ?v0 ?v1)) (numeral\$ (bit0\$ one\$a))) (fun_app\$a (power\$ (- ?v1 ?v0))
(numeral\$ (bit0\$ one\$a))))) :named a303))
(assert (! (forall ((?v0 Nat\$)) (=> (= (fun_app\$b suc\$ ?v0)
zero\$) false)) :named a304))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 L_word\$)) (=
(fun_app\$e ?v0 (unat\$ ?v1)) (forall ((?v2 Nat\$)) (=> (and (= (of_nat\$b
?v2) ?v1) (fun_app\$e (fun_app\$h less\$ ?v2) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (len_of\$ type\$)))) (fun_app\$e ?v0 ?v2)))))
:named a305))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$e ?v0 ?v1) (forall ((?v2 Nat\$)) (=> (fun_app\$e ?v0 (fun_app\$b
suc\$ ?v2)) (fun_app\$e ?v0 ?v2)))) (fun_app\$e ?v0 zero\$))) :named a306))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1) (= (fun_app\$b suc\$ (fun_app\$b (minus\$ ?v1)
(fun_app\$b suc\$ ?v0))) (fun_app\$b (minus\$ ?v1) ?v0)))) :named a307))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (+ ?v0 ?v1) (+ ?v1
?v0))) :named a308))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (= (plus\$ ?v0
?v1) (plus\$ ?v1 ?v0))) :named a309))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b (plus\$a
?v0) ?v1) (fun_app\$b (plus\$a ?v1) ?v0))) :named a310))
(assert (! (forall ((?v0 Nat\$) (?v1 L_word\$)) (=> (and
(fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (len_of\$ type\$))) (fun_app\$e (fun_app\$h less\$ (unat\$ ?v1))
?v0)) (fun_app\$d (less\$a ?v1) (of_nat\$b ?v0)))) :named a311))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$d msb\$ ?v0)
(<= (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$)) one\$))
(uint\$a ?v0))) :pattern ((fun_app\$d msb\$ ?v0)))) :named a312))
(assert (! (forall ((?v0 L_word\$)) (= (plus\$ zero\$b ?v0) ?v0))
:named a313))
(assert (! (forall ((?v0 L_signed_word\$)) (= (plus\$b zero\$a ?v0)
?v0)) :named a314))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (plus\$a zero\$)
?v0) ?v0)) :named a315))
(assert (! (forall ((?v0 Int)) (= (+ 0 ?v0) ?v0)) :named a316))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= ?v0 (fun_app\$b
suc\$ ?v1)) (not (= ?v0 zero\$)))) :named a317))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (less\$a zero\$b)
(fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) ?v0)) (fun_app\$e
(fun_app\$h less\$ ?v0) (len_of\$ type\$)))) :named a318))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (power\$a ?v0) (fun_app\$b (plus\$a ?v1) ?v2)) (fun_app\$b
(times\$a (fun_app\$b (power\$a ?v0) ?v1)) (fun_app\$b (power\$a ?v0)
?v2)))) :named a319))
(assert (! (forall ((?v0 Int) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$a (power\$ ?v0) (fun_app\$b (plus\$a ?v1) ?v2)) (times\$c
(fun_app\$a (power\$ ?v0) ?v1) (fun_app\$a (power\$ ?v0) ?v2)))) :named
a320))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$b suc\$
?v0)))) :named a321))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1) (fun_app\$e (fun_app\$h less_eq\$a (fun_app\$b
suc\$ ?v0)) ?v1))) :named a322))
(assert (! (forall ((?v0 L_word\$)) (< (fun_app\$k sint\$ ?v0)
(fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$)) one\$))))
:named a323))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$b suc\$ ?v0)
zero\$))) :named a324))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$b suc\$ ?v0)
zero\$))) :named a325))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$b suc\$
?v0)))) :named a326))
(assert (! (forall ((?v0 Num\$)) (not (fun_app\$e (fun_app\$h less\$
(numeral\$ ?v0)) zero\$))) :named a327))
(assert (! (forall ((?v0 Num\$)) (not (< (numeral\$a ?v0) 0)))
:named a328))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(fun_app\$e (fun_app\$h less\$ ?v0) ?v1) (fun_app\$e (fun_app\$h less\$
(fun_app\$b (minus\$ ?v0) ?v2)) ?v1))) :named a329))
(assert (! (fun_app\$e (fun_app\$h less\$ zero\$) (numeral\$ (bit0\$
one\$a))) :named a330))
(assert (! (forall ((?v0 Nat\$) (?v1 L_word\$)) (=> (fun_app\$e
(fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$ type\$))) (= (fun_app\$e (fun_app\$h less\$ (unat\$ ?v1)) ?v0)
(fun_app\$d (less\$a ?v1) (of_nat\$b ?v0))))) :named a331))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$e (fun_app\$h less\$ ?v0) ?v1) (fun_app\$e (fun_app\$h less\$ ?v0)
?v2)) (fun_app\$e (fun_app\$h less\$ (fun_app\$b (minus\$ ?v2) ?v1))
(fun_app\$b (minus\$ ?v2) ?v0)))) :named a332))
(assert (! (forall ((?v0 Int)) (not (< (fun_app\$a (power\$ ?v0)
(numeral\$ (bit0\$ one\$a))) 0))) :named a333))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (plus\$ (fun_app\$i
word_of_int\$ ?v0) (fun_app\$i word_of_int\$ ?v1)) (fun_app\$i word_of_int\$
(+ ?v0 ?v1)))) :named a334))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (=
(fun_app\$b (minus\$ ?v0) ?v1) zero\$) (= (fun_app\$b (minus\$ ?v1) ?v0)
zero\$)) (= ?v0 ?v1))) :named a335))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$k sint\$ (numeral\$b
?v0)) (fun_app\$ (sbintrunc\$ (fun_app\$b (minus\$ (len_of\$ type\$)) one\$))
(numeral\$a ?v0)))) :named a336))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (fun_app\$e ?v0 ?v1) (forall ((?v3 Nat\$)) (=> (fun_app\$e ?v0
(fun_app\$b suc\$ ?v3)) (fun_app\$e ?v0 ?v3)))) (fun_app\$e ?v0 (fun_app\$b
(minus\$ ?v1) ?v2)))) :named a337))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (= (fun_app\$j (power\$b
(fun_app\$i word_of_int\$ ?v0)) ?v1) (fun_app\$i word_of_int\$ (fun_app\$a
(power\$ ?v0) ?v1)))) :named a338))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$e
(fun_app\$h less_eq\$a ?v0) ?v1) (fun_app\$e (fun_app\$h less_eq\$a ?v1)
?v0)) (= ?v0 ?v1))) :named a339))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$e (fun_app\$h less\$
(fun_app\$b of_nat\$a ?v0)) zero\$))) :named a340))
(assert (! (forall ((?v0 Nat\$)) (not (< (fun_app\$a of_nat\$ ?v0)
0))) :named a341))
(assert (! (forall ((?v0 Nat_nat_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (fun_app\$e (fun_app\$h less\$ (fun_app\$b ?v0
?v3)) (fun_app\$b ?v0 (fun_app\$b suc\$ ?v3)))) (= (fun_app\$e (fun_app\$h
less\$ (fun_app\$b ?v0 ?v1)) (fun_app\$b ?v0 ?v2)) (fun_app\$e (fun_app\$h
less\$ ?v1) ?v2)))) :named a342))
(assert (! (forall ((?v0 Nat_int_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (< (fun_app\$a ?v0 ?v3) (fun_app\$a ?v0
(fun_app\$b suc\$ ?v3)))) (= (< (fun_app\$a ?v0 ?v1) (fun_app\$a ?v0 ?v2))
(fun_app\$e (fun_app\$h less\$ ?v1) ?v2)))) :named a343))
(assert (! (forall ((?v0 Nat_num_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (less\$b (fun_app\$n ?v0 ?v3) (fun_app\$n ?v0
(fun_app\$b suc\$ ?v3)))) (= (less\$b (fun_app\$n ?v0 ?v1) (fun_app\$n ?v0
?v2)) (fun_app\$e (fun_app\$h less\$ ?v1) ?v2)))) :named a344))
(assert (! (forall ((?v0 Num\$)) (= (scast\$b (numeral\$b ?v0))
(fun_app\$i word_of_int\$ (fun_app\$ (sbintrunc\$ (fun_app\$b (minus\$
(len_of\$ type\$)) (fun_app\$b suc\$ zero\$))) (numeral\$a ?v0))))) :named
a345))
(assert (! (forall ((?v0 Nat_nat_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (fun_app\$e (fun_app\$h less\$ (fun_app\$b
?v0 ?v3)) (fun_app\$b ?v0 (fun_app\$b suc\$ ?v3)))) (fun_app\$e (fun_app\$h
less\$ ?v1) ?v2)) (fun_app\$e (fun_app\$h less\$ (fun_app\$b ?v0 ?v1))
(fun_app\$b ?v0 ?v2)))) :named a346))
(assert (! (forall ((?v0 Nat_int_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (< (fun_app\$a ?v0 ?v3) (fun_app\$a ?v0
(fun_app\$b suc\$ ?v3)))) (fun_app\$e (fun_app\$h less\$ ?v1) ?v2)) (<
(fun_app\$a ?v0 ?v1) (fun_app\$a ?v0 ?v2)))) :named a347))
(assert (! (forall ((?v0 Nat_num_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (less\$b (fun_app\$n ?v0 ?v3) (fun_app\$n
?v0 (fun_app\$b suc\$ ?v3)))) (fun_app\$e (fun_app\$h less\$ ?v1) ?v2))
(less\$b (fun_app\$n ?v0 ?v1) (fun_app\$n ?v0 ?v2)))) :named a348))
(assert (! (= (fun_app\$i word_of_int\$ (fun_app\$a (power\$ 2)
(len_of\$ type\$))) zero\$b) :named a349))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ ?v1) ?v2))) (fun_app\$e (fun_app\$h less_eq\$a
?v2) ?v1)) (fun_app\$e (fun_app\$h less\$ (fun_app\$b (times\$a (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) ?v2)) ?v0)) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) ?v1)))) :named a350))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$e
(fun_app\$h less\$ (fun_app\$b of_nat\$a ?v0)) (fun_app\$b of_nat\$a ?v1))
(fun_app\$e (fun_app\$h less\$ ?v0) ?v1))) :named a351))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (< (fun_app\$a
of_nat\$ ?v0) (fun_app\$a of_nat\$ ?v1)) (fun_app\$e (fun_app\$h less\$ ?v0)
?v1))) :named a352))
(assert (! (forall ((?v0 L_word\$)) (=> (fun_app\$d (less\$a ?v0)
(fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) (fun_app\$b (minus\$
(len_of\$ type\$)) one\$))) (fun_app\$d (word_sle\$ zero\$b) ?v0))) :named
a353))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1) (fun_app\$e (fun_app\$h less\$ (fun_app\$b
of_nat\$a ?v0)) (fun_app\$b of_nat\$a ?v1)))) :named a354))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1) (< (fun_app\$a of_nat\$ ?v0) (fun_app\$a
of_nat\$ ?v1)))) :named a355))
(assert (! (forall ((?v0 Nat\$)) (member\$a ?v0 top\$a)) :named
a356))
(assert (! (forall ((?v0 Int)) (member\$b ?v0 top\$)) :named
a357))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$b of_nat\$a
(fun_app\$b suc\$ ?v0)) zero\$))) :named a358))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$a of_nat\$
(fun_app\$b suc\$ ?v0)) 0))) :named a359))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$e (fun_app\$h less\$
?v0) (len_of\$ type\$)) (not (= (fun_app\$j (power\$b (numeral\$b (bit0\$
one\$a))) ?v0) zero\$b)))) :named a360))
(assert (! (forall ((?v0 L_word\$)) (= (word_sle\$a zero\$a (ucast\$
?v0)) (< (uint\$a ?v0) (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$
type\$)) one\$))))) :named a361))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$e
(fun_app\$h less\$ ?v0) (fun_app\$b suc\$ ?v1)) (or (= ?v0 zero\$) (exists
((?v2 Nat\$)) (and (= ?v0 (fun_app\$b suc\$ ?v2)) (fun_app\$e (fun_app\$h
less\$ ?v2) ?v1)))))) :named a362))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$m (minus\$b
(fun_app\$i word_of_int\$ ?v0)) (fun_app\$i word_of_int\$ ?v1)) (fun_app\$i
word_of_int\$ (- ?v0 ?v1)))) :named a363))
(assert (! (forall ((?v0 Nat\$) (?v1 L_word\$)) (=> (fun_app\$e
(fun_app\$h less\$ ?v0) (fun_app\$b suc\$ (unat\$ ?v1))) (fun_app\$e
(fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$ type\$))))) :named a364))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (forall
((?v2 Nat\$)) (=> (fun_app\$e (fun_app\$h less\$ ?v2) (fun_app\$b suc\$ ?v0))
(fun_app\$e ?v1 ?v2))) (and (fun_app\$e ?v1 zero\$) (forall ((?v2 Nat\$))
(=> (fun_app\$e (fun_app\$h less\$ ?v2) ?v0) (fun_app\$e ?v1 (fun_app\$b
suc\$ ?v2))))))) :named a365))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$e (fun_app\$h
less_eq\$a ?v0) zero\$) (= ?v0 zero\$))) :named a366))
(assert (! (forall ((?v0 Num\$)) (= (nat\$ (numeral\$a ?v0))
(numeral\$ ?v0))) :named a367))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b (plus\$a
?v0) (fun_app\$b suc\$ ?v1)) (fun_app\$b suc\$ (fun_app\$b (plus\$a ?v0)
?v1)))) :named a368))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$e (fun_app\$h less\$
zero\$) ?v0) (exists ((?v1 Nat\$)) (= ?v0 (fun_app\$b suc\$ ?v1))))) :named
a369))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ ?v1) ?v2))) (fun_app\$e (fun_app\$h less_eq\$a
?v2) ?v1)) (fun_app\$e (fun_app\$h less\$ (fun_app\$b (times\$a ?v0)
(fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v2))) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) ?v1)))) :named a370))
(assert (! (not (= (len_of\$ type\$) (fun_app\$b suc\$ zero\$)))
:named a371))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (exists
((?v2 Nat\$)) (and (fun_app\$e (fun_app\$h less\$ ?v2) (fun_app\$b suc\$
?v0)) (fun_app\$e ?v1 ?v2))) (or (fun_app\$e ?v1 zero\$) (exists ((?v2
Nat\$)) (and (fun_app\$e (fun_app\$h less\$ ?v2) ?v0) (fun_app\$e ?v1
(fun_app\$b suc\$ ?v2))))))) :named a372))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$e
(fun_app\$h less\$ ?v0) (len_of\$ type\$)) (fun_app\$e (fun_app\$h less\$ ?v1)
(len_of\$ type\$))) (= (= (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a)))
?v0) (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) ?v1)) (= ?v0
?v1)))) :named a373))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$)) (= (to_bl\$
(bitXOR\$ ?v0 (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) ?v1))) (ite
(fun_app\$e (fun_app\$h less\$ ?v1) (len_of\$ type\$)) (append\$ (take\$
(fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ ?v1)) (to_bl\$ ?v0))
(cons\$ (not (fun_app\$e (nth\$ (rev\$ (to_bl\$ ?v0))) ?v1)) (drop\$
(fun_app\$b (minus\$ (len_of\$ type\$)) ?v1) (to_bl\$ ?v0)))) (to_bl\$
?v0)))) :named a374))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (fun_app\$e (fun_app\$h
less\$ (fun_app\$b (minus\$ ?v0) ?v1)) (fun_app\$b suc\$ ?v0))) :named
a375))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (times\$a (numeral\$
one\$a)) ?v0) ?v0)) :named a376))
(assert (! (forall ((?v0 Int)) (= (* 1 ?v0) ?v0)) :named a377))
(assert (! (forall ((?v0 Nat\$) (?v1 L_word\$)) (=> (and
(fun_app\$e (fun_app\$h less\$ ?v0) (len_of\$ type\$)) (fun_app\$d (less\$a
?v1) (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) (fun_app\$b (minus\$
(len_of\$ type\$)) ?v0)))) (= (shiftr\$a (shiftl\$a ?v1 ?v0) ?v0) ?v1)))
:named a378))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$e (fun_app\$h less\$
zero\$) ?v0) (= (fun_app\$b (power\$a zero\$) ?v0) zero\$))) :named a379))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$e (fun_app\$h less\$
zero\$) ?v0) (= (fun_app\$a (power\$ 0) ?v0) 0))) :named a380))
(assert (! (forall ((?v0 Int)) (= (- 0 ?v0) (- ?v0))) :named
a381))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$e (fun_app\$h less\$
zero\$) ?v0) (= ?v0 (fun_app\$b suc\$ (fun_app\$b (minus\$ ?v0) one\$)))))
:named a382))
(assert (! (forall ((?v0 Nat\$)) (< 0 (fun_app\$a (power\$ 2)
?v0))) :named a383))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(and (fun_app\$d (less\$a ?v0) (fun_app\$j (power\$b (numeral\$b (bit0\$
one\$a))) (fun_app\$b (minus\$ ?v1) ?v2))) (and (fun_app\$e (fun_app\$h
less_eq\$a ?v2) ?v1) (fun_app\$e (fun_app\$h less\$ ?v1) (len_of\$ type\$))))
(fun_app\$d (less\$a (times\$ (fun_app\$j (power\$b (numeral\$b (bit0\$
one\$a))) ?v2) ?v0)) (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a)))
?v1)))) :named a384))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (and (=
(fun_app\$e (test_bit\$ (bitOR\$ ?v0 ?v1)) (fun_app\$b (minus\$ (len_of\$
type\$)) (fun_app\$b suc\$ zero\$))) (or (fun_app\$e (test_bit\$ ?v0)
(fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ zero\$))) (fun_app\$e
(test_bit\$ ?v1) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
zero\$))))) (and (= (fun_app\$e (test_bit\$ (bitAND\$ ?v0 ?v1)) (fun_app\$b
(minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ zero\$))) (and (fun_app\$e
(test_bit\$ ?v0) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
zero\$))) (fun_app\$e (test_bit\$ ?v1) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ zero\$))))) (and (= (fun_app\$e (test_bit\$ (bitXOR\$ ?v0
?v1)) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ zero\$))) (not
(= (fun_app\$e (test_bit\$ ?v0) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ zero\$))) (fun_app\$e (test_bit\$ ?v1) (fun_app\$b (minus\$
(len_of\$ type\$)) (fun_app\$b suc\$ zero\$)))))) (= (fun_app\$e (test_bit\$
(bitNOT\$ ?v0)) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
zero\$))) (not (fun_app\$e (test_bit\$ ?v0) (fun_app\$b (minus\$ (len_of\$
type\$)) (fun_app\$b suc\$ zero\$))))))))) :named a385))
(assert (! (= (fun_app\$b (power\$a zero\$) (numeral\$ (bit0\$
one\$a))) zero\$) :named a386))
(assert (! (= (fun_app\$a (power\$ 0) (numeral\$ (bit0\$ one\$a))) 0)
:named a387))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$e (fun_app\$h less\$
?v0) zero\$))) :named a388))
(assert (! (= (scast\$b one\$b) (fun_app\$i word_of_int\$ (fun_app\$
(sbintrunc\$ (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
zero\$))) 1))) :named a389))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(times\$a ?v0) ?v1) (fun_app\$b (times\$a ?v1) ?v0))) :named a390))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (times\$c ?v0 ?v1)
(times\$c ?v1 ?v0))) :named a391))
(assert (! (forall ((?v0 Bool_bool_bool_fun_fun\$)) (! (= (rel\$
?v0) ?v0) :pattern ((rel\$ ?v0)))) :named a392))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(and (fun_app\$d (less\$a ?v0) (fun_app\$j (power\$b (numeral\$b (bit0\$
one\$a))) (fun_app\$b (minus\$ ?v1) ?v2))) (and (fun_app\$e (fun_app\$h
less_eq\$a ?v2) ?v1) (fun_app\$e (fun_app\$h less\$ ?v1) (len_of\$ type\$))))
(fun_app\$d (less\$a (times\$ ?v0 (fun_app\$j (power\$b (numeral\$b (bit0\$
one\$a))) ?v2))) (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) ?v1))))
:named a393))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (times\$a ?v0) (fun_app\$b (times\$a ?v1) ?v2)) (fun_app\$b
(times\$a ?v1) (fun_app\$b (times\$a ?v0) ?v2)))) :named a394))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (= (times\$c
?v0 (times\$c ?v1 ?v2)) (times\$c ?v1 (times\$c ?v0 ?v2)))) :named a395))
(assert (! (= (fun_app\$k sint\$ zero\$b) 0) :named a396))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (=> (not (less\$b ?v0
?v1)) (less_eq\$b ?v1 ?v0))) :named a397))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (not (fun_app\$e
(fun_app\$h less\$ ?v0) ?v1)) (fun_app\$e (fun_app\$h less_eq\$a ?v1) ?v0)))
:named a398))
(assert (! (forall ((?v0 Int) (?v1 Int)) (=> (not (< ?v0 ?v1))
(<= ?v1 ?v0))) :named a399))
(assert (! (forall ((?v0 Num\$)) (= (uminus\$ (numeral\$b ?v0))
(fun_app\$i word_of_int\$ (- (numeral\$a ?v0))))) :named a400))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (<= (- ?v0) (- ?v1))
(<= ?v1 ?v0))) :named a401))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$) (?v2 L_word\$) (?v3
Nat\$) (?v4 Nat\$)) (=> (and (fun_app\$d (less\$a ?v0) (fun_app\$j (power\$b
(numeral\$b (bit0\$ one\$a))) ?v1)) (and (fun_app\$d (less\$a ?v2)
(fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) ?v3)) (and (fun_app\$e
(fun_app\$h less\$ ?v4) (len_of\$ type\$)) (and (fun_app\$d (less\$a ?v2)
(fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) (fun_app\$b (minus\$
(len_of\$ type\$)) ?v1))) (= ?v4 (fun_app\$b (plus\$a ?v3) ?v1))))))
(fun_app\$d (less\$a (plus\$ (times\$ ?v2 (fun_app\$j (power\$b (numeral\$b
(bit0\$ one\$a))) ?v1)) ?v0)) (fun_app\$j (power\$b (numeral\$b (bit0\$
one\$a))) ?v4)))) :named a402))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (times\$a (fun_app\$b (times\$a ?v0) ?v1)) ?v2) (fun_app\$b
(times\$a ?v0) (fun_app\$b (times\$a ?v1) ?v2)))) :named a403))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (= (times\$c
(times\$c ?v0 ?v1) ?v2) (times\$c ?v0 (times\$c ?v1 ?v2)))) :named a404))
(assert (! (fun_app\$e (fun_app\$h less\$ (fun_app\$b suc\$ zero\$))
(len_of\$ type\$)) :named a405))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ ?v1) ?v2))) (fun_app\$e (fun_app\$h less_eq\$a
?v2) ?v1)) (fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b (divide\$b
(fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v1)) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) ?v2))))) :named a406))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$) (?v2 Nat\$) (?v3
L_word\$)) (=> (and (fun_app\$d (less\$a ?v0) ?v1) (and (fun_app\$d (less\$a
?v1) (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) (fun_app\$b (minus\$
(len_of\$ type\$)) ?v2))) (and (fun_app\$e (fun_app\$h less\$ ?v2) (len_of\$
type\$)) (fun_app\$d (less\$a ?v3) (fun_app\$j (power\$b (numeral\$b (bit0\$
one\$a))) ?v2))))) (fun_app\$d (less\$a (plus\$ (times\$ ?v0 (fun_app\$j
(power\$b (numeral\$b (bit0\$ one\$a))) ?v2)) ?v3)) (times\$ ?v1 (fun_app\$j
(power\$b (numeral\$b (bit0\$ one\$a))) ?v2))))) :named a407))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (< 0 (- ?v0 ?v1)) (<
?v1 ?v0))) :named a408))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b (divide\$b (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) ?v1)) (fun_app\$b (power\$a (numeral\$
(bit0\$ one\$a))) ?v2))) (and (fun_app\$e (fun_app\$h less_eq\$a ?v2) ?v1)
(fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ ?v1) ?v2)))))) :named a409))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (< 0 (- ?v0 ?v1)) (<
?v1 ?v0))) :named a410))
(assert (! (forall ((?v0 Bool)) (=> (and ?v0 (fun_app\$f
(fun_app\$g (rel\$ uuf\$) ?v0) false)) false)) :named a411))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$e (fun_app\$h less\$ ?v0) ?v1) (fun_app\$e (fun_app\$h less\$
zero\$) ?v2)) (fun_app\$e (fun_app\$h less\$ (fun_app\$b (times\$a ?v2) ?v0))
(fun_app\$b (times\$a ?v2) ?v1)))) :named a412))
(assert (! (= (not (= (len_of\$ type\$) (fun_app\$b suc\$ zero\$)))
(exists ((?v0 Nat\$)) (= (len_of\$ type\$) (fun_app\$b suc\$ (fun_app\$b suc\$
?v0))))) :named a413))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(and (fun_app\$d (less\$a ?v0) (fun_app\$j (power\$b (numeral\$b (bit0\$
one\$a))) (fun_app\$b (minus\$ ?v1) ?v2))) (and (fun_app\$e (fun_app\$h
less_eq\$a ?v2) ?v1) (fun_app\$e (fun_app\$h less\$ ?v1) (len_of\$ type\$))))
(fun_app\$d (less\$a ?v0) (divide\$a (fun_app\$j (power\$b (numeral\$b (bit0\$
one\$a))) ?v1) (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a))) ?v2)))))
:named a414))
(assert (! (= (numeral\$ one\$a) (fun_app\$b suc\$ zero\$)) :named
a415))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$) (?v2 Num\$)) (=> (and
(less\$b ?v0 ?v1) (less_eq\$b ?v1 ?v2)) (less\$b ?v0 ?v2))) :named a416))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$e (fun_app\$h less\$ ?v0) ?v1) (fun_app\$e (fun_app\$h less_eq\$a
?v1) ?v2)) (fun_app\$e (fun_app\$h less\$ ?v0) ?v2))) :named a417))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (=> (and (<
?v0 ?v1) (<= ?v1 ?v2)) (< ?v0 ?v2))) :named a418))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$e (fun_app\$h less\$
?v0) (numeral\$ (bit0\$ one\$a))) (or (= ?v0 zero\$) (= ?v0 (fun_app\$b suc\$
zero\$))))) :named a419))
(assert (! (forall ((?v0 Int)) (=> (and (<= (- (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$)) one\$))) ?v0) (< ?v0
(fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$)) one\$)))) (=
(fun_app\$k sint\$ (of_int\$a ?v0)) ?v0))) :named a420))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= (fun_app\$b
suc\$ ?v0) ?v1) (= ?v0 (fun_app\$b (minus\$ ?v1) (fun_app\$b suc\$
zero\$))))) :named a421))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (numeral\$ ?v0)
(numeral\$ ?v1)) (= ?v0 ?v1))) :named a422))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (numeral\$a ?v0)
(numeral\$a ?v1)) (= ?v0 ?v1))) :named a423))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (times\$a ?v0)
zero\$) zero\$)) :named a424))
(assert (! (forall ((?v0 Int)) (= (* ?v0 0) 0)) :named a425))
(assert (! (= (fun_app\$k sint\$ one\$b) (fun_app\$ (sbintrunc\$
(fun_app\$b (minus\$ (len_of\$ type\$)) one\$)) 1)) :named a426))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (bit0\$ ?v0)
(bit0\$ ?v1)) (= ?v0 ?v1))) :named a427))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (fun_app\$e
(fun_app\$h less\$ (numeral\$ ?v0)) (numeral\$ ?v1)) (less\$b ?v0 ?v1)))
:named a428))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (< (numeral\$a ?v0)
(numeral\$a ?v1)) (less\$b ?v0 ?v1))) :named a429))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$b (times\$a ?v0) ?v1) (fun_app\$b (times\$a ?v0) ?v2)) (or (= ?v0
zero\$) (= ?v1 ?v2)))) :named a430))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (= (=
(times\$c ?v0 ?v1) (times\$c ?v0 ?v2)) (or (= ?v0 0) (= ?v1 ?v2))))
:named a431))
(assert (! (forall ((?v0 Int)) (= (= (- ?v0) 0) (= ?v0 0)))
:named a432))
(assert (! (forall ((?v0 Int)) (! (= (- ?v0 ?v0) 0) :pattern
((uue\$ ?v0)))) :named a433))
(assert (! (forall ((?v0 Int)) (= (= 0 (- ?v0)) (= 0 ?v0)))
:named a434))
(assert (! (forall ((?v0 Int)) (= (- ?v0 0) ?v0)) :named a435))
(assert (! (forall ((?v0 Bool_bool_bool_fun_fun\$) (?v1
Bool_bool_bool_fun_fun\$) (?v2 Bool_bool_fun\$) (?v3 Bool_bool_fun\$)) (=>
(forall ((?v4 Bool) (?v5 Bool)) (=> (fun_app\$f (fun_app\$g (rel\$ ?v0)
?v4) ?v5) (fun_app\$f (fun_app\$g (rel\$ ?v1) (fun_app\$f ?v2 ?v4))
(fun_app\$f ?v3 ?v5)))) (rel\$a (rel_fun\$ ?v0 ?v1) ?v2 ?v3))) :named
a436))
(assert (! (forall ((?v0 Bool_bool_bool_fun_fun\$) (?v1
Bool_bool_bool_fun_fun\$) (?v2 Bool_bool_fun\$) (?v3 Bool_bool_fun\$) (?v4
Bool) (?v5 Bool)) (=> (and (rel\$a (rel_fun\$ ?v0 ?v1) ?v2 ?v3)
(fun_app\$f (fun_app\$g (rel\$ ?v0) ?v4) ?v5)) (fun_app\$f (fun_app\$g (rel\$
?v1) (fun_app\$f ?v2 ?v4)) (fun_app\$f ?v3 ?v5)))) :named a437))
(assert (! (forall ((?v0 L_word\$)) (and (<= (- (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (size\$ ?v0)) (fun_app\$b suc\$ zero\$))))
(fun_app\$k sint\$ ?v0)) (< (fun_app\$k sint\$ ?v0) (fun_app\$a (power\$ 2)
(fun_app\$b (minus\$ (size\$ ?v0)) (fun_app\$b suc\$ zero\$)))))) :named
a438))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$i word_of_int\$
(numeral\$a ?v0)) (numeral\$b ?v0))) :named a439))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$e
(fun_app\$h dvd\$ ?v0) ?v1) (forall ((?v2 Nat\$)) (=> (= ?v1 (fun_app\$b
(times\$a ?v0) ?v2)) false))) false)) :named a440))
(assert (! (forall ((?v0 Int) (?v1 Int)) (=> (and (fun_app\$c
(dvd\$a ?v0) ?v1) (forall ((?v2 Int)) (=> (= ?v1 (times\$c ?v0 ?v2))
false))) false)) :named a441))
(assert (! (forall ((?v0 Num\$)) (fun_app\$e (fun_app\$h less_eq\$a
zero\$) (numeral\$ ?v0))) :named a442))
(assert (! (forall ((?v0 Num\$)) (<= 0 (numeral\$a ?v0))) :named
a443))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$b max_snat\$ ?v0)
(fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (fun_app\$b (minus\$ ?v0)
one\$))) :pattern ((fun_app\$b max_snat\$ ?v0)))) :named a444))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$f
assumption\$ (fun_app\$e (fun_app\$h less\$ ?v0) (len_of\$ type\$)))
(fun_app\$e (fun_app\$h less\$ ?v1) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) ?v0))) (fun_app\$e (fun_app\$h less\$ ?v1) (fun_app\$b max_snat\$
(len_of\$ type\$))))) :named a445))
(assert (! (forall ((?v0 Nat\$)) (< (fun_app\$a of_nat\$ ?v0)
(fun_app\$a (power\$ 2) ?v0))) :named a446))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$e (fun_app\$h less_eq\$a ?v0) ?v1) (fun_app\$e (fun_app\$h less\$
zero\$) ?v2)) (= (fun_app\$b (power\$a ?v2) (fun_app\$b (minus\$ ?v1) ?v0))
(fun_app\$b (divide\$b (fun_app\$b (power\$a ?v2) ?v1)) (fun_app\$b (power\$a
?v2) ?v0))))) :named a447))
(assert (! (forall ((?v0 L_word\$)) (! (= (fun_app\$d msb\$ ?v0)
(fun_app\$e (bin_nth\$ (uint\$a ?v0)) (fun_app\$b (minus\$ (len_of\$ type\$))
one\$))) :pattern ((fun_app\$d msb\$ ?v0)))) :named a448))
(assert (! (forall ((?v0 Int)) (= (- (- ?v0)) ?v0)) :named
a449))
(assert (! (forall ((?v0 Num\$)) (not (fun_app\$e (fun_app\$h
less_eq\$a (numeral\$ ?v0)) zero\$))) :named a450))
(assert (! (forall ((?v0 Num\$)) (not (<= (numeral\$a ?v0) 0)))
:named a451))
(check-sat)
(get-proof)

SMT: Invoking SMT solver "z3" ...
SMT: Assertions:
¬ False  [¬ False]
n < 2 ^ (LENGTH('l) - Suc 0)
msb (word_of_int (int n))
∀i n x. (numeral i ^ n < of_nat x) = (numeral i ^ n < x)
∀i n x. (numeral i ^ n < int x) = (numeral i ^ n < x)
∀x i n. (of_nat x < numeral i ^ n) = (x < numeral i ^ n)
∀x i n. (int x < numeral i ^ n) = (x < numeral i ^ n)
∀x n. (0 < of_nat x ^ n) = (0 < x ∨ n = 0)
∀x n. (0 < int x ^ n) = (0 < x ∨ n = 0)
1 = Suc 0
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb a))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb a = (2 ^ (LENGTH('l) - Suc 0) ≤ a))
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb a))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb a = (2 ^ (LENGTH(Enum.finite_2) - Suc 0) ≤ a))
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb a))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb a = (2 ^ (LENGTH(Enum.finite_3) - Suc 0) ≤ a))
∀a. (0 < a⇧2) = (a ≠ 0)
n < 2 ^ (LENGTH('l) - Suc 0) ⟶ n = nat (sint (word_of_int (int
n)))
∀x n y. (numeral x ^ n = of_nat y) = (numeral x ^ n = y)
∀x n y. (numeral x ^ n = int y) = (numeral x ^ n = y)
∀n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (of_nat
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(of_nat n = word_of_int (int n))
∀y x n. (of_nat y = numeral x ^ n) = (y = numeral x ^ n)
∀y x n. (int y = numeral x ^ n) = (y = numeral x ^ n)
∀b w x. (of_nat b ^ w < of_nat x) = (b ^ w < x)
∀b w x. (int b ^ w < int x) = (b ^ w < x)
∀a P. (a ∈ Collect P) = P a
∀a P. (a ∈ Collect P) = P a
td_ext sint word_of_int (sints LENGTH('l))
(λw. (w + 2 ^ (LENGTH('l) - 1)) mod 2 ^ LENGTH('l) - 2 ^
(LENGTH('l) - 1))
td_ext sint word_of_int (sints LENGTH(Enum.finite_2))
(λw. (w + 2 ^ (LENGTH(Enum.finite_2) - 1)) mod 2 ^
LENGTH(Enum.finite_2) -
2 ^ (LENGTH(Enum.finite_2) - 1))
td_ext sint word_of_int (sints LENGTH(Enum.finite_3))
(λw. (w + 2 ^ (LENGTH(Enum.finite_3) - 1)) mod 2 ^
LENGTH(Enum.finite_3) -
2 ^ (LENGTH(Enum.finite_3) - 1))
∀x b w. (of_nat x < of_nat b ^ w) = (x < b ^ w)
∀x b w. (int x < int b ^ w) = (x < b ^ w)
0 < LENGTH('l)
0 < LENGTH(Enum.finite_2)
0 < LENGTH(Enum.finite_3)
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (size w))
SMT.Symb_Nil) SMT.Symb_Nil)
(size w = LENGTH('l))
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (size w))
SMT.Symb_Nil) SMT.Symb_Nil)
(size w = LENGTH(0))
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (size w))
SMT.Symb_Nil) SMT.Symb_Nil)
(size w = LENGTH(Enum.finite_2))
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (size w))
SMT.Symb_Nil) SMT.Symb_Nil)
(size w = LENGTH(Enum.finite_3))
∀n>0. Suc (n - Suc 0) = n
∀n. n < Suc n
∀n. (0 < of_nat n) = (0 < n)
∀n. (0 < int n) = (0 < n)
∀v<2 ^ (LENGTH('l) - 1). ¬ msb v
∀v<2 ^ (LENGTH(Enum.finite_2) - 1). ¬ msb v
∀v<2 ^ (LENGTH(Enum.finite_3) - 1). ¬ msb v
∀a x. a < 2 ^ (x - Suc 0) ⟶ a < 2 ^ x
∀a. (a⇧2 = 0) = (a = 0)
∀a. (a⇧2 = 0) = (a = 0)
∀n. (n < Suc 0) = (n = 0)
∀a. (a - Suc 0 < a) = (a ≠ 0)
∀x. unat x < 2 ^ LENGTH('l)
∀x. unat x < 2 ^ LENGTH(Enum.finite_2)
∀x. unat x < 2 ^ LENGTH(Enum.finite_3)
of_nat 0 = 0
int 0 = 0
∀n. (n ≠ 0) = (0 < n)
∀p x. p < 2 ^ x ∧ x < LENGTH('l) ⟶ of_nat p < 2 ^ x
∀p x. p < 2 ^ x ∧ x < LENGTH(Enum.finite_2) ⟶ of_nat p < 2 ^ x
∀p x. p < 2 ^ x ∧ x < LENGTH(Enum.finite_3) ⟶ of_nat p < 2 ^ x
∀n m. 0 < n ∧ 0 < m ⟶ m - n < m
∀x2 y2. (Suc x2 = Suc y2) = (x2 = y2)
∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (y ≤ x) =
(of_nat y ≤ of_nat x)
∀x y. x < 2 ^ LENGTH(Enum.finite_2) ∧ y < 2 ^
LENGTH(Enum.finite_2) ⟶
(y ≤ x) = (of_nat y ≤ of_nat x)
∀x y. x < 2 ^ LENGTH(Enum.finite_3) ∧ y < 2 ^
LENGTH(Enum.finite_3) ⟶
(y ≤ x) = (of_nat y ≤ of_nat x)
∀nat nat'. (Suc nat = Suc nat') = (nat = nat')
∀n. 0 < numeral n
∀n. 0 < numeral n
∀m n. (int m = int n) = (m = n)
∀n. 0 < Suc n
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = (2 ^ (LENGTH('l) - 1) ≤ unat w))
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = (2 ^ (LENGTH(Enum.finite_2) - 1) ≤ unat w))
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = (2 ^ (LENGTH(Enum.finite_3) - 1) ≤ unat w))
∀m n. Suc m - Suc n = m - n
∀m n. (Suc m < Suc n) = (m < n)
∀w. numeral w < 2 ^ (LENGTH('l) - Suc 0) ⟶ ¬ msb (numeral w)
∀x y z. x ≤ y ∧ y < z ⟶ x < z
∀x y z. x ≤ y ∧ y < z ⟶ x < z
∀x y z. x ≤ y ∧ y < z ⟶ x < z
∀m n. m < n ⟶ Suc m < Suc n
∀w n. is_aligned w n ⟶ (∃q. w = 2 ^ n * of_nat q ∧ q < 2 ^
(LENGTH('l) - n))
∀w n. is_aligned w n ⟶ (∃q. w = 2 ^ n * of_nat q ∧ q < 2 ^
(LENGTH(Enum.finite_2) - n))
∀w n. is_aligned w n ⟶ (∃q. w = 2 ^ n * of_nat q ∧ q < 2 ^
(LENGTH(Enum.finite_3) - n))
∀m n. of_nat (m ^ n) = of_nat m ^ n
∀m n. int (m ^ n) = int m ^ n
∀m. m - m = 0
∀x. - (2 ^ (LENGTH('l) - Suc 0)) ≤ sint x ∧ sint x < 2 ^
(LENGTH('l) - Suc 0)
∀x. - (2 ^ (LENGTH(Enum.finite_2) - Suc 0)) ≤ sint x ∧ sint x <
2 ^ (LENGTH(Enum.finite_2) - Suc 0)
∀x. - (2 ^ (LENGTH(Enum.finite_3) - Suc 0)) ≤ sint x ∧ sint x <
2 ^ (LENGTH(Enum.finite_3) - Suc 0)
∀m n k. Suc m - n - Suc k = m - n - k
∀y x. (y ≤ x) = (¬ x < y)
∀m. (of_nat m = 0) = (m = 0)
∀m. (int m = 0) = (m = 0)
∀n. 0 - n = 0
∀x n. (x = sbintrunc n x) = (x ∈ range (sbintrunc n))
∀a n. 0 < a ⟶ 0 < a ^ n
∀a n. 0 < a ⟶ 0 < a ^ n
∀x n. (0 < x ^ n) = (0 < x ∨ n = 0)
∀k. 0 ^ numeral k = 0
∀k. 0 ^ numeral k = 0
∀n. 0 ^ Suc n = 0
∀n. 0 ^ Suc n = 0
∀m n. (of_nat m < of_nat n) = (m < n)
∀m n. (int m < int n) = (m < n)
∀a b. sint a smod sint b < 2 ^ (LENGTH('l) - Suc 0)
∀a b. sint a smod sint b < 2 ^ (LENGTH(Enum.finite_2) - Suc 0)
∀a b. sint a smod sint b < 2 ^ (LENGTH(Enum.finite_3) - Suc 0)
∀n m. (0 < n - m) = (m < n)
∀P n. P 0 ∧ (∀n. P n ⟶ P (Suc n)) ⟶ P n
∀n. sints n = {i. - (2 ^ (n - 1)) ≤ i ∧ i < 2 ^ (n - 1)}
∀n. (0 = of_nat n) = (0 = n)
∀n. (0 = int n) = (0 = n)
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
td_ext sint word_of_int (sints LENGTH('l)) (sbintrunc
(LENGTH('l) - 1))
td_ext sint word_of_int (sints LENGTH(Enum.finite_2)) (sbintrunc
(LENGTH(Enum.finite_2) - 1))
td_ext sint word_of_int (sints LENGTH(Enum.finite_3)) (sbintrunc
(LENGTH(Enum.finite_3) - 1))
sint (2 ^ (LENGTH('l) - Suc 0)) = - (2 ^ (LENGTH('l) - Suc 0))
sint (2 ^ (LENGTH(Enum.finite_2) - Suc 0)) = - (2 ^
(LENGTH(Enum.finite_2) - Suc 0))
sint (2 ^ (LENGTH(Enum.finite_3) - Suc 0)) = - (2 ^
(LENGTH(Enum.finite_3) - Suc 0))
∀x. x ≤ x
∀x. x ≤ x
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀a. a - 0 = a
∀a. a - 0 = a
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = w !! (LENGTH('l) - 1))
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = w !! (LENGTH(Enum.finite_2) - 1))
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = w !! (LENGTH(Enum.finite_3) - 1))
∀n. ¬ n < n
∀n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (Suc 0 ^
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(Suc 0 ^ n = Suc 0)
sint (- (2 ^ (LENGTH('l) - Suc 0))) = - (2 ^ (LENGTH('l) - Suc
0))
sint (- (2 ^ (LENGTH(Enum.finite_2) - Suc 0))) = - (2 ^
(LENGTH(Enum.finite_2) - Suc 0))
sint (- (2 ^ (LENGTH(Enum.finite_3) - Suc 0))) = - (2 ^
(LENGTH(Enum.finite_3) - Suc 0))
∀n. of_nat (numeral n) = numeral n
∀n. int (numeral n) = numeral n
∀n. word_of_int (2 ^ n) = 2 ^ n
∀x. msb (word_of_int x) = bin_nth x (LENGTH('l) - 1)
∀x. msb (word_of_int x) = bin_nth x (LENGTH(Enum.finite_2) - 1)
∀x. msb (word_of_int x) = bin_nth x (LENGTH(Enum.finite_3) - 1)
∀a b. - (2 ^ (LENGTH('l) - Suc 0)) ≤ sint a smod sint b
∀a b. - (2 ^ (LENGTH(Enum.finite_2) - Suc 0)) ≤ sint a smod sint
b
∀a b. - (2 ^ (LENGTH(Enum.finite_3) - Suc 0)) ≤ sint a smod sint
b
∀a b. (sint a sdiv sint b < 2 ^ (LENGTH('l) - Suc 0)) =
(a = - (2 ^ (LENGTH('l) - Suc 0)) ⟶ b ≠ - 1)
∀a b. (sint a sdiv sint b < 2 ^ (LENGTH(Enum.finite_2) - Suc 0))
=
(a = - (2 ^ (LENGTH(Enum.finite_2) - Suc 0)) ⟶ b ≠ - 1)
∀a b. (sint a sdiv sint b < 2 ^ (LENGTH(Enum.finite_3) - Suc 0))
=
(a = - (2 ^ (LENGTH(Enum.finite_3) - Suc 0)) ⟶ b ≠ - 1)
∀x m. (x ^ m = Suc 0) = (m = 0 ∨ x = Suc 0)
∀n<LENGTH('l). unat (2 ^ n) = 2 ^ n
∀n<LENGTH(Enum.finite_2). unat (2 ^ n) = 2 ^ n
∀n<LENGTH(Enum.finite_3). unat (2 ^ n) = 2 ^ n
∀n w. n < LENGTH('l) ⟶ w && mask n < 2 ^ n
∀n w. n < LENGTH(Enum.finite_2) ⟶ w && mask n < 2 ^ n
∀n w. n < LENGTH(Enum.finite_3) ⟶ w && mask n < 2 ^ n
∀x y. x ≠ y ∧ (x < y ⟶ False) ∧ (y < x ⟶ False) ⟶ False
∀x. ¬ x < x
∀x. ¬ x < x
∀x. ¬ x < x
∀i m n. 0 < i ∧ i ^ m < i ^ n ⟶ m < n
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb a))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb a = (bin_sign (sint a) = - 1))
∀x b w. (of_nat x = of_nat b ^ w) = (x = b ^ w)
∀x b w. (int x = int b ^ w) = (x = b ^ w)
∀P Q. (∀x. P x = Q x) ⟶ Collect P = Collect Q
0 = word_of_int 0
∀b w x. (of_nat b ^ w = of_nat x) = (b ^ w = x)
∀b w x. (int b ^ w = int x) = (b ^ w = x)
∀k sz. k < 2 ^ (LENGTH('l) - sz) ⟶ unat (2 ^ sz * of_nat k) = 2
^ sz * k
∀k sz. k < 2 ^ (LENGTH(Enum.finite_2) - sz) ⟶ unat (2 ^ sz *
of_nat k) = 2 ^ sz * k
∀k sz. k < 2 ^ (LENGTH(Enum.finite_3) - sz) ⟶ unat (2 ^ sz *
of_nat k) = 2 ^ sz * k
2 = Suc (Suc 0)
∀w. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (SCAST('l → 'l) w))
SMT.Symb_Nil) SMT.Symb_Nil)
(SCAST('l → 'l) w = word_of_int (sint w))
∀b. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (numeral
b)) SMT.Symb_Nil) SMT.Symb_Nil)
(numeral b = word_of_int (numeral b))
∀n. of_nat n = 0 ∧ n < 2 ^ LENGTH('l) ⟶ n = 0
∀n. of_nat n = 0 ∧ n < 2 ^ LENGTH(Enum.finite_2) ⟶ n = 0
∀n. of_nat n = 0 ∧ n < 2 ^ LENGTH(Enum.finite_3) ⟶ n = 0
∀a b. - (2 ^ (LENGTH('l) - Suc 0)) ≤ sint a sdiv sint b
∀a b. - (2 ^ (LENGTH(Enum.finite_2) - Suc 0)) ≤ sint a sdiv sint
b
∀a b. - (2 ^ (LENGTH(Enum.finite_3) - Suc 0)) ≤ sint a sdiv sint
b
∀k. 0 < k ∧ k < 2 ^ LENGTH('l) ⟶ of_nat k ≠ 0
∀k. 0 < k ∧ k < 2 ^ LENGTH(Enum.finite_2) ⟶ of_nat k ≠ 0
∀k. 0 < k ∧ k < 2 ^ LENGTH(Enum.finite_3) ⟶ of_nat k ≠ 0
∀a b. (sint a sdiv sint b < 2 ^ (size a - 1)) = (a ≠ - (2 ^
(size a - 1)) ∨ b ≠ - 1)
∀m n. m - n ≤ m
∀n i. 0 < n ⟶ n - Suc i < n
∀x. unat (of_nat x) = x mod 2 ^ LENGTH('l)
∀x. unat (of_nat x) = x mod 2 ^ LENGTH(Enum.finite_2)
∀x. unat (of_nat x) = x mod 2 ^ LENGTH(Enum.finite_3)
∀A. {x. x ∈ A} = A
∀A. {x. x ∈ A} = A
∀n m k. n < 2 ^ (m - k) ∧ k ≤ m ∧ m < LENGTH('l) ⟶ of_nat n * 2
^ k < 2 ^ m
∀n m k. n < 2 ^ (m - k) ∧ k ≤ m ∧ m < LENGTH(Enum.finite_2) ⟶
of_nat n * 2 ^ k < 2 ^ m
∀n m k. n < 2 ^ (m - k) ∧ k ≤ m ∧ m < LENGTH(Enum.finite_3) ⟶
of_nat n * 2 ^ k < 2 ^ m
∀m n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (m mod
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(m < n ⟶ m mod n = m)
∀w n. is_aligned w n ∧ (∀q. w = 2 ^ n * of_nat q ∧ q < 2 ^
(LENGTH('l) - n) ⟶ False) ⟶ False
∀w n. is_aligned w n ∧ (∀q. w = 2 ^ n * of_nat q ∧ q < 2 ^
(LENGTH(Enum.finite_2) - n) ⟶ False) ⟶
False
∀w n. is_aligned w n ∧ (∀q. w = 2 ^ n * of_nat q ∧ q < 2 ^
(LENGTH(Enum.finite_3) - n) ⟶ False) ⟶
False
∀n q m. 2 ^ n * q < 2 ^ m ⟶ q < 2 ^ (m - n)
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = (w >> LENGTH('l) - 1 ≠ 0))
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = (w >> LENGTH(Enum.finite_2) - 1 ≠ 0))
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = (w >> LENGTH(Enum.finite_3) - 1 ≠ 0))
∀P n. (∀n. ¬ P n ⟶ (∃m<n. ¬ P m)) ⟶ P n
∀P n. (∀n. (∀m<n. P m) ⟶ P n) ⟶ P n
∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (y < x) =
(of_nat y < of_nat x)
∀x y. x < 2 ^ LENGTH(Enum.finite_2) ∧ y < 2 ^
LENGTH(Enum.finite_2) ⟶
(y < x) = (of_nat y < of_nat x)
∀x y. x < 2 ^ LENGTH(Enum.finite_3) ∧ y < 2 ^
LENGTH(Enum.finite_3) ⟶
(y < x) = (of_nat y < of_nat x)
∀x<2 ^ LENGTH('l). unat (of_nat x) = x
∀x<2 ^ LENGTH(Enum.finite_2). unat (of_nat x) = x
∀x<2 ^ LENGTH(Enum.finite_3). unat (of_nat x) = x
∀x n. x < 2 ^ (LENGTH('l) - n) ∧ n < LENGTH('l) ∧ x ≠ 0 ⟶ x * 2
^ n ≠ 0
∀x n. x < 2 ^ (LENGTH(Enum.finite_2) - n) ∧ n <
LENGTH(Enum.finite_2) ∧ x ≠ 0 ⟶ x * 2 ^ n ≠ 0
∀x n. x < 2 ^ (LENGTH(Enum.finite_3) - n) ∧ n <
LENGTH(Enum.finite_3) ∧ x ≠ 0 ⟶ x * 2 ^ n ≠ 0
∀m n. of_nat (m * n) = of_nat m * of_nat n
∀m n. int (m * n) = int m * int n
∀x. sint x ∈ sints LENGTH('l)
∀x. sint x ∈ sints LENGTH(Enum.finite_2)
∀x. sint x ∈ sints LENGTH(Enum.finite_3)
∀n. n < n ⟶ False
∀m. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (Suc m))
SMT.Symb_Nil) SMT.Symb_Nil)
(of_nat (Suc m) = 1 + of_nat m)
∀m. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (Suc m))
SMT.Symb_Nil) SMT.Symb_Nil)
(int (Suc m) = 1 + int m)
∀s t. s < t ⟶ s ≠ t
∀i j k. i < j ∧ j < k ⟶ Suc i < k
∀n m. n < m ⟶ m ≠ n
∀k n x a.
k < 2 ^ (LENGTH('l) - n) ∧ x = 2 ^ n * of_nat k ∧ a ≤ x ∧ n <
LENGTH('l) ∧ a mod 2 ^ n ≠ 0 ⟶
a div 2 ^ n < of_nat k
∀k n x a.
k < 2 ^ (LENGTH(Enum.finite_2) - n) ∧
x = 2 ^ n * of_nat k ∧ a ≤ x ∧ n < LENGTH(Enum.finite_2) ∧ a
mod 2 ^ n ≠ 0 ⟶
a div 2 ^ n < of_nat k
∀k n x a.
k < 2 ^ (LENGTH(Enum.finite_3) - n) ∧
x = 2 ^ n * of_nat k ∧ a ≤ x ∧ n < LENGTH(Enum.finite_3) ∧ a
mod 2 ^ n ≠ 0 ⟶
a div 2 ^ n < of_nat k
∀m n. (m ≠ n) = (m < n ∨ n < m)
∀n. (¬ 0 < n) = (n = 0)
∀nat. (nat = 0 ⟶ False) ∧ (nat ≠ 0 ⟶ False) ⟶ False
∀bin. sint (word_of_int bin) = sbintrunc (LENGTH('l) - 1) bin
∀bin. sint (word_of_int bin) = sbintrunc (LENGTH(Enum.finite_2)
- 1) bin
∀bin. sint (word_of_int bin) = sbintrunc (LENGTH(Enum.finite_3)
- 1) bin
∀n. n ≠ Suc n
∀x y. Suc x = Suc y ⟶ x = y
∀n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (toEnum
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(n < 2 ^ LENGTH('l) ⟶ toEnum n = of_nat n)
∀n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (toEnum
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(n < 2 ^ LENGTH(Enum.finite_2) ⟶ toEnum n = of_nat n)
∀n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (toEnum
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(n < 2 ^ LENGTH(Enum.finite_3) ⟶ toEnum n = of_nat n)
∀n. (2 ^ n = 0) = (LENGTH('l) ≤ n)
∀n. (2 ^ n = 0) = (LENGTH(Enum.finite_2) ≤ n)
∀n. (2 ^ n = 0) = (LENGTH(Enum.finite_3) ≤ n)
∀i j k. i - j - k = i - k - j
∀a n. a ≠ 0 ⟶ a ^ n ≠ 0
∀a n. a ≠ 0 ⟶ a ^ n ≠ 0
∀x. (∀n. x = of_nat n ∧ n < 2 ^ LENGTH('l) ⟶ False) ⟶ False
∀x. (∀n. x = of_nat n ∧ n < 2 ^ LENGTH(Enum.finite_2) ⟶ False) ⟶
False
∀x. (∀n. x = of_nat n ∧ n < 2 ^ LENGTH(Enum.finite_3) ⟶ False) ⟶
False
∀w. ∃n. w = of_nat n ∧ n < 2 ^ LENGTH('l)
∀w. ∃n. w = of_nat n ∧ n < 2 ^ LENGTH(Enum.finite_2)
∀w. ∃n. w = of_nat n ∧ n < 2 ^ LENGTH(Enum.finite_3)
∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ∧ of_nat x =
of_nat y ⟶ x = y
∀x y. x < 2 ^ LENGTH(Enum.finite_2) ∧ y < 2 ^
LENGTH(Enum.finite_2) ∧ of_nat x = of_nat y ⟶ x = y
∀x y. x < 2 ^ LENGTH(Enum.finite_3) ∧ y < 2 ^
LENGTH(Enum.finite_3) ∧ of_nat x = of_nat y ⟶ x = y
∀a b. - (2 ^ (size a - 1)) ≤ sint a sdiv sint b
∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (of_nat x =
of_nat y) = (x = y)
∀x y. x < 2 ^ LENGTH(Enum.finite_2) ∧ y < 2 ^
LENGTH(Enum.finite_2) ⟶
(of_nat x = of_nat y) = (x = y)
∀x y. x < 2 ^ LENGTH(Enum.finite_3) ∧ y < 2 ^
LENGTH(Enum.finite_3) ⟶
(of_nat x = of_nat y) = (x = y)
∀n. (n < 0) = False
∀a. (- a < a) = (0 < a)
∀a b. a * b = b * a
∀a b. a * b = b * a
∀a. - word_of_int a = word_of_int (- a)
∀P n. P 0 ∧ (∀n. 0 < n ∧ ¬ P n ⟶ (∃m<n. ¬ P m)) ⟶ P n
∀x y. x < 2 ^ LENGTH('l) ∧ y < x ⟶ of_nat y < of_nat x
∀x y. x < 2 ^ LENGTH(Enum.finite_2) ∧ y < x ⟶ of_nat y < of_nat
x
∀x y. x < 2 ^ LENGTH(Enum.finite_3) ∧ y < x ⟶ of_nat y < of_nat
x
¬ msb 0
1 = word_of_int 1
∀m n. m < n ⟶ n ≠ 0
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a - a = 0)
∀a n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (a ^
Suc n)) SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ Suc n = a * a ^ n)
∀a n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (a ^
Suc n)) SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ Suc n = a * a ^ n)
∀maxsize l qp k. ial_invar maxsize l qp ∧ k ∈ set l ⟶ k < length
qp
∀n<0. False
∀a b. a + b - a = b
∀n. ¬ n < 0
2 ^ LENGTH('l) = 0
2 ^ LENGTH(Enum.finite_2) = 0
2 ^ LENGTH(Enum.finite_3) = 0
∀n. (n = 0 ⟶ False) ⟶ 0 < n
∀n m. ¬ n < m ⟶ (n < Suc m) = (n = m)
∀x y i.
(x || y) !! (LENGTH('l) - Suc i) = (x !! (LENGTH('l) - Suc i)
∨ y !! (LENGTH('l) - Suc i)) ∧
(x && y) !! (LENGTH('l) - Suc i) = (x !! (LENGTH('l) - Suc i)
∧ y !! (LENGTH('l) - Suc i)) ∧
(x xor y) !! (LENGTH('l) - Suc i) = (x !! (LENGTH('l) - Suc
i) ≠ y !! (LENGTH('l) - Suc i)) ∧
(~~ x) !! (LENGTH('l) - Suc i) = (¬ x !! (LENGTH('l) - Suc
i))
∀x y i.
(x || y) !! (LENGTH(Enum.finite_2) - Suc i) =
(x !! (LENGTH(Enum.finite_2) - Suc i) ∨ y !!
(LENGTH(Enum.finite_2) - Suc i)) ∧
(x && y) !! (LENGTH(Enum.finite_2) - Suc i) =
(x !! (LENGTH(Enum.finite_2) - Suc i) ∧ y !!
(LENGTH(Enum.finite_2) - Suc i)) ∧
(x xor y) !! (LENGTH(Enum.finite_2) - Suc i) =
(x !! (LENGTH(Enum.finite_2) - Suc i) ≠ y !!
(LENGTH(Enum.finite_2) - Suc i)) ∧
(~~ x) !! (LENGTH(Enum.finite_2) - Suc i) = (¬ x !!
(LENGTH(Enum.finite_2) - Suc i))
∀x y i.
(x || y) !! (LENGTH(Enum.finite_3) - Suc i) =
(x !! (LENGTH(Enum.finite_3) - Suc i) ∨ y !!
(LENGTH(Enum.finite_3) - Suc i)) ∧
(x && y) !! (LENGTH(Enum.finite_3) - Suc i) =
(x !! (LENGTH(Enum.finite_3) - Suc i) ∧ y !!
(LENGTH(Enum.finite_3) - Suc i)) ∧
(x xor y) !! (LENGTH(Enum.finite_3) - Suc i) =
(x !! (LENGTH(Enum.finite_3) - Suc i) ≠ y !!
(LENGTH(Enum.finite_3) - Suc i)) ∧
(~~ x) !! (LENGTH(Enum.finite_3) - Suc i) = (¬ x !!
(LENGTH(Enum.finite_3) - Suc i))
∀i j P. i < j ∧ (∀i. j = Suc i ⟶ P i) ∧ (∀i. i < j ∧ P (Suc i) ⟶
P i) ⟶ P i
∀x n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (x <<
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(x << n = x * 2 ^ n)
∀i j P. i < j ∧ (∀i. P i (Suc i)) ∧ (∀i j k. i < j ∧ j < k ∧ P i
j ∧ P j k ⟶ P i k) ⟶ P i j
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (snat w))
SMT.Symb_Nil) SMT.Symb_Nil)
(unat w < 2 ^ (LENGTH('l) - 1) ⟶ snat w = unat w)
∀a. 0 * a = 0
∀a. 0 * a = 0
∀m n. Suc m < Suc n ⟶ m < n
∀a. 0 - a = 0
∀n m. ¬ n < m ∧ n < Suc m ⟶ m = n
∀P m n. (∀x. P x 0) ∧ (∀y. P 0 (Suc y)) ∧ (∀x y. P x y ⟶ P (Suc
x) (Suc y)) ⟶ P m n
∀a. a + 0 = a
∀a. a + 0 = a
∀n m. (Suc n < m) = (∃m'. m = Suc m' ∧ n < m')
∀n P. (∀i<Suc n. P i) = (P n ∧ (∀i<n. P i))
∀n>0. ∃m. n = Suc m
∀m n. (¬ m < n) = (n < Suc m)
∀m n. (m < Suc n) = (m < n ∨ m = n)
LENGTH('l) ≠ 0
LENGTH(Enum.finite_2) ≠ 0
LENGTH(Enum.finite_3) ≠ 0
∀m. m - 0 = m
∀n. n < 2 ^ n
∀r a. r ∈ sints LENGTH('l) ∧ word_of_int r = a ⟶ sint a = r
∀r a. r ∈ sints LENGTH(Enum.finite_2) ∧ word_of_int r = a ⟶ sint
a = r
∀r a. r ∈ sints LENGTH(Enum.finite_3) ∧ word_of_int r = a ⟶ sint
a = r
∀n P. (∃i<Suc n. P i) = (P n ∨ (∃i<n. P i))
∀n. (¬ 0 < n) = (n = 0)
∀x. 0 ≤ x
∀m s1 n s2.
is_aligned m s1 ∧
is_aligned n s2 ∧ s2 < LENGTH('l) ∧ m ∈ {n..n + (2 ^ s2 - 1)}
∧ s1 ≤ s2 ∧ 0 < s1 ⟶
(∃q. m - n = of_nat q * 2 ^ s1 ∧ q < 2 ^ (s2 - s1))
∀m s1 n s2.
is_aligned m s1 ∧
is_aligned n s2 ∧ s2 < LENGTH(Enum.finite_2) ∧ m ∈ {n..n + (2
^ s2 - 1)} ∧ s1 ≤ s2 ∧ 0 < s1 ⟶
(∃q. m - n = of_nat q * 2 ^ s1 ∧ q < 2 ^ (s2 - s1))
∀m s1 n s2.
is_aligned m s1 ∧
is_aligned n s2 ∧ s2 < LENGTH(Enum.finite_3) ∧ m ∈ {n..n + (2
^ s2 - 1)} ∧ s1 ≤ s2 ∧ 0 < s1 ⟶
(∃q. m - n = of_nat q * 2 ^ s1 ∧ q < 2 ^ (s2 - s1))
∀m n. m < n ⟶ m < Suc n
of_nat (2 ^ LENGTH('l)) = 0
of_nat (2 ^ LENGTH(Enum.finite_2)) = 0
of_nat (2 ^ LENGTH(Enum.finite_3)) = 0
∀m n. m < Suc n ∧ (m < n ⟶ False) ∧ (m = n ⟶ False) ⟶ False
∀n<LENGTH('l). to_bl (2 ^ n) = replicate (LENGTH('l) - Suc n)
False @ True # replicate n False
∀n<LENGTH(Enum.finite_2).
to_bl (2 ^ n) = replicate (LENGTH(Enum.finite_2) - Suc n)
False @ True # replicate n False
∀n<LENGTH(Enum.finite_3).
to_bl (2 ^ n) = replicate (LENGTH(Enum.finite_3) - Suc n)
False @ True # replicate n False
∀m n. m < n ∧ Suc m ≠ n ⟶ Suc m < n
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ 0 = 1)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ 0 = 1)
∀i k. Suc i < k ∧ (∀j. i < j ∧ k = Suc j ⟶ False) ⟶ False
∀n bin. (bin_sign (sbintrunc n bin) = - 1) = bin_nth bin n
∀m n. Suc m < n ⟶ m < n
∀i k. i < k ∧ (k = Suc i ⟶ False) ∧ (∀j. i < j ∧ k = Suc j ⟶
False) ⟶ False
∀n. n ≠ 0 ⟶ (∃m. n = Suc m)
∀n. 0 ≠ numeral n
∀n. 0 ≠ numeral n
∀y. (y = 0 ⟶ False) ∧ (∀nat. y = Suc nat ⟶ False) ⟶ False
∀n q m. 2 ^ n * q < 2 ^ m ∧ q < 2 ^ (LENGTH('l) - n) ⟶ q < 2 ^
(m - n)
∀n q m. 2 ^ n * q < 2 ^ m ∧ q < 2 ^ (LENGTH(Enum.finite_2) - n)
⟶ q < 2 ^ (m - n)
∀n q m. 2 ^ n * q < 2 ^ m ∧ q < 2 ^ (LENGTH(Enum.finite_3) - n)
⟶ q < 2 ^ (m - n)
∀m. 0 ≠ Suc m
∀n<LENGTH('l). of_nat n < 2 ^ n
∀n<LENGTH(Enum.finite_2). of_nat n < 2 ^ n
∀n<LENGTH(Enum.finite_3). of_nat n < 2 ^ n
∀P x. P (unat x) = (∄n. of_nat n = x ∧ n < 2 ^ LENGTH('l) ∧ ¬ P
n)
∀P x. P (unat x) = (∄n. of_nat n = x ∧ n < 2 ^
LENGTH(Enum.finite_2) ∧ ¬ P n)
∀P x. P (unat x) = (∄n. of_nat n = x ∧ n < 2 ^
LENGTH(Enum.finite_3) ∧ ¬ P n)
∀n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (num.Bit0
n)) SMT.Symb_Nil) SMT.Symb_Nil)
((num.One < num.Bit0 n) = True)
∀r a. of_nat r = a ∧ r < 2 ^ LENGTH('l) ⟶ unat a = r
∀r a. of_nat r = a ∧ r < 2 ^ LENGTH(Enum.finite_2) ⟶ unat a = r
∀r a. of_nat r = a ∧ r < 2 ^ LENGTH(Enum.finite_3) ⟶ unat a = r
∀m. 0 = Suc m ⟶ False
∀n x. n < 2 ^ LENGTH('l) ⟶ (unat x = n) = (x = of_nat n)
∀n x. n < 2 ^ LENGTH(Enum.finite_2) ⟶ (unat x = n) = (x = of_nat
n)
∀n x. n < 2 ^ LENGTH(Enum.finite_3) ⟶ (unat x = n) = (x = of_nat
n)
∀x y. (x - y)⇧2 = (y - x)⇧2
∀m. Suc m = 0 ⟶ False
∀P x. P (unat x) = (∀n. of_nat n = x ∧ n < 2 ^ LENGTH('l) ⟶ P n)
∀P x. P (unat x) = (∀n. of_nat n = x ∧ n < 2 ^
LENGTH(Enum.finite_2) ⟶ P n)
∀P x. P (unat x) = (∀n. of_nat n = x ∧ n < 2 ^
LENGTH(Enum.finite_3) ⟶ P n)
∀P k. P k ∧ (∀n. P (Suc n) ⟶ P n) ⟶ P 0
∀n m. n < m ⟶ Suc (m - Suc n) = m - n
∀a b. a + b = b + a
∀n f. n < 2 ^ LENGTH('l) ∧ unat f < n ⟶ f < of_nat n
∀n f. n < 2 ^ LENGTH(Enum.finite_2) ∧ unat f < n ⟶ f < of_nat n
∀n f. n < 2 ^ LENGTH(Enum.finite_3) ∧ unat f < n ⟶ f < of_nat n
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = (2 ^ (LENGTH('l) - 1) ≤ uint w))
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = (2 ^ (LENGTH(Enum.finite_2) - 1) ≤ uint w))
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb w = (2 ^ (LENGTH(Enum.finite_3) - 1) ≤ uint w))
∀a. 0 + a = a
∀a. 0 + a = a
∀nat x2. nat = Suc x2 ⟶ nat ≠ 0
∀n. (0 < 2 ^ n) = (n < LENGTH('l))
∀n. (0 < 2 ^ n) = (n < LENGTH(Enum.finite_2))
∀n. (0 < 2 ^ n) = (n < LENGTH(Enum.finite_3))
∀a m n. a ^ (m + n) = a ^ m * a ^ n
∀a m n. a ^ (m + n) = a ^ m * a ^ n
∀nat'. 0 ≠ Suc nat'
∀m n. m < n ⟶ Suc m ≤ n
∀x. sint x < 2 ^ (LENGTH('l) - 1)
∀x. sint x < 2 ^ (LENGTH(Enum.finite_2) - 1)
∀x. sint x < 2 ^ (LENGTH(Enum.finite_3) - 1)
∀nat'. Suc nat' ≠ 0
∀x2. Suc x2 ≠ 0
∀x2. 0 ≠ Suc x2
∀n. ¬ numeral n < 0
∀n. ¬ numeral n < 0
∀j k n. j < k ⟶ j - n < k
0 < 2
∀n f. n < 2 ^ LENGTH('l) ⟶ (unat f < n) = (f < of_nat n)
∀n f. n < 2 ^ LENGTH(Enum.finite_2) ⟶ (unat f < n) = (f < of_nat
n)
∀n f. n < 2 ^ LENGTH(Enum.finite_3) ⟶ (unat f < n) = (f < of_nat
n)
∀m n l. m < n ∧ m < l ⟶ l - n < l - m
∀a. ¬ a⇧2 < 0
∀a b. word_of_int a + word_of_int b = word_of_int (a + b)
∀m n. m - n = 0 ∧ n - m = 0 ⟶ m = n
∀bin. sint (numeral bin) = sbintrunc (LENGTH('l) - 1) (numeral
bin)
∀bin. sint (numeral bin) = sbintrunc (LENGTH(Enum.finite_2) - 1)
(numeral bin)
∀bin. sint (numeral bin) = sbintrunc (LENGTH(Enum.finite_3) - 1)
(numeral bin)
∀P k i. P k ∧ (∀n. P (Suc n) ⟶ P n) ⟶ P (k - i)
∀a n. word_of_int a ^ n = word_of_int (a ^ n)
∀m n. m ≤ n ∧ n ≤ m ⟶ m = n
∀m. ¬ of_nat m < 0
∀m. ¬ int m < 0
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀w. SCAST('l → 'l) (numeral w) = word_of_int (sbintrunc
(LENGTH('l) - Suc 0) (numeral w))
∀w. SCAST(Enum.finite_2 → 'l) (numeral w) =
word_of_int (sbintrunc (LENGTH(Enum.finite_2) - Suc 0)
(numeral w))
∀w. SCAST(Enum.finite_3 → 'l) (numeral w) =
word_of_int (sbintrunc (LENGTH(Enum.finite_3) - Suc 0)
(numeral w))
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
word_of_int (2 ^ LENGTH('l)) = 0
word_of_int (2 ^ LENGTH(0)) = 0
word_of_int (2 ^ LENGTH(Enum.finite_2)) = 0
word_of_int (2 ^ LENGTH(Enum.finite_3)) = 0
∀n m k. n < 2 ^ (m - k) ∧ k ≤ m ⟶ 2 ^ k * n < 2 ^ m
∀m n. of_nat m < of_nat n ⟶ m < n
∀m n. int m < int n ⟶ m < n
∀x<2 ^ (LENGTH('l) - 1). 0 <=s x
∀x<2 ^ (LENGTH(Enum.finite_2) - 1). 0 <=s x
∀x<2 ^ (LENGTH(Enum.finite_3) - 1). 0 <=s x
∀m n. m < n ⟶ of_nat m < of_nat n
∀m n. m < n ⟶ int m < int n
∀x. x ∈ UNIV
∀x. x ∈ UNIV
∀n. of_nat (Suc n) ≠ 0
∀n. int (Suc n) ≠ 0
∀n<LENGTH('l). 2 ^ n ≠ 0
∀n<LENGTH(Enum.finite_2). 2 ^ n ≠ 0
∀n<LENGTH(Enum.finite_3). 2 ^ n ≠ 0
∀b. (0 <=s UCAST('l → 'l signed) b) = (uint b < 2 ^ (LENGTH('l)
- 1))
∀b. (0 <=s UCAST(Enum.finite_2 → Enum.finite_2 signed) b) =
(uint b < 2 ^ (LENGTH(Enum.finite_2) - 1))
∀b. (0 <=s UCAST(Enum.finite_3 → Enum.finite_3 signed) b) =
(uint b < 2 ^ (LENGTH(Enum.finite_3) - 1))
∀m n. (m < Suc n) = (m = 0 ∨ (∃j. m = Suc j ∧ j < n))
∀a b. word_of_int a - word_of_int b = word_of_int (a - b)
∀n x. n < Suc (unat x) ⟶ n < 2 ^ LENGTH('l)
∀n x. n < Suc (unat x) ⟶ n < 2 ^ LENGTH(Enum.finite_2)
∀n x. n < Suc (unat x) ⟶ n < 2 ^ LENGTH(Enum.finite_3)
∀n P. (∀i<Suc n. P i) = (P 0 ∧ (∀i<n. P (Suc i)))
∀n. (n ≤ 0) = (n = 0)
∀k. nat (numeral k) = numeral k
∀m n. m + Suc n = Suc (m + n)
∀n. (0 < n) = (∃m. n = Suc m)
∀n m k. n < 2 ^ (m - k) ∧ k ≤ m ⟶ n * 2 ^ k < 2 ^ m
LENGTH('l) ≠ Suc 0
∀n P. (∃i<Suc n. P i) = (P 0 ∨ (∃i<n. P (Suc i)))
∀n m. n < LENGTH('l) ∧ m < LENGTH('l) ⟶ (2 ^ n = 2 ^ m) = (n =
m)
∀n m. n < LENGTH(Enum.finite_2) ∧ m < LENGTH(Enum.finite_2) ⟶ (2
^ n = 2 ^ m) = (n = m)
∀n m. n < LENGTH(Enum.finite_3) ∧ m < LENGTH(Enum.finite_3) ⟶ (2
^ n = 2 ^ m) = (n = m)
∀x n. to_bl (x xor 2 ^ n) =
(if n < LENGTH('l)
then take (LENGTH('l) - Suc n) (to_bl x) @
(¬ rev (to_bl x) ! n) # drop (LENGTH('l) - n) (to_bl
x)
else to_bl x)
∀x n. to_bl (x xor 2 ^ n) =
(if n < LENGTH(Enum.finite_2)
then take (LENGTH(Enum.finite_2) - Suc n) (to_bl x) @
(¬ rev (to_bl x) ! n) # drop (LENGTH(Enum.finite_2)
- n) (to_bl x)
else to_bl x)
∀x n. to_bl (x xor 2 ^ n) =
(if n < LENGTH(Enum.finite_3)
then take (LENGTH(Enum.finite_3) - Suc n) (to_bl x) @
(¬ rev (to_bl x) ! n) # drop (LENGTH(Enum.finite_3)
- n) (to_bl x)
else to_bl x)
∀m n. m - n < Suc m
∀a. Numeral1 * a = a
∀a. 1 * a = a
∀n x. n < LENGTH('l) ∧ x < 2 ^ (LENGTH('l) - n) ⟶ x << n >> n =
x
∀n x. n < LENGTH(Enum.finite_2) ∧ x < 2 ^ (LENGTH(Enum.finite_2)
- n) ⟶ x << n >> n = x
∀n x. n < LENGTH(Enum.finite_3) ∧ x < 2 ^ (LENGTH(Enum.finite_3)
- n) ⟶ x << n >> n = x
∀n>0. 0 ^ n = 0
∀n>0. 0 ^ n = 0
∀a. 0 - a = - a
∀n>0. n = Suc (n - 1)
∀n. 0 < 2 ^ n
∀n m k. n < 2 ^ (m - k) ∧ k ≤ m ∧ m < LENGTH('l) ⟶ 2 ^ k * n < 2
^ m
∀n m k. n < 2 ^ (m - k) ∧ k ≤ m ∧ m < LENGTH(Enum.finite_2) ⟶ 2
^ k * n < 2 ^ m
∀n m k. n < 2 ^ (m - k) ∧ k ≤ m ∧ m < LENGTH(Enum.finite_3) ⟶ 2
^ k * n < 2 ^ m
∀x y. (x || y) !! (LENGTH('l) - Suc 0) = (x !! (LENGTH('l) - Suc
0) ∨ y !! (LENGTH('l) - Suc 0)) ∧
(x && y) !! (LENGTH('l) - Suc 0) = (x !! (LENGTH('l) - Suc
0) ∧ y !! (LENGTH('l) - Suc 0)) ∧
(x xor y) !! (LENGTH('l) - Suc 0) = (x !! (LENGTH('l) -
Suc 0) ≠ y !! (LENGTH('l) - Suc 0)) ∧
(~~ x) !! (LENGTH('l) - Suc 0) = (¬ x !! (LENGTH('l) - Suc
0))
∀x y. (x || y) !! (LENGTH(Enum.finite_2) - Suc 0) =
(x !! (LENGTH(Enum.finite_2) - Suc 0) ∨ y !!
(LENGTH(Enum.finite_2) - Suc 0)) ∧
(x && y) !! (LENGTH(Enum.finite_2) - Suc 0) =
(x !! (LENGTH(Enum.finite_2) - Suc 0) ∧ y !!
(LENGTH(Enum.finite_2) - Suc 0)) ∧
(x xor y) !! (LENGTH(Enum.finite_2) - Suc 0) =
(x !! (LENGTH(Enum.finite_2) - Suc 0) ≠ y !!
(LENGTH(Enum.finite_2) - Suc 0)) ∧
(~~ x) !! (LENGTH(Enum.finite_2) - Suc 0) = (¬ x !!
(LENGTH(Enum.finite_2) - Suc 0))
∀x y. (x || y) !! (LENGTH(Enum.finite_3) - Suc 0) =
(x !! (LENGTH(Enum.finite_3) - Suc 0) ∨ y !!
(LENGTH(Enum.finite_3) - Suc 0)) ∧
(x && y) !! (LENGTH(Enum.finite_3) - Suc 0) =
(x !! (LENGTH(Enum.finite_3) - Suc 0) ∧ y !!
(LENGTH(Enum.finite_3) - Suc 0)) ∧
(x xor y) !! (LENGTH(Enum.finite_3) - Suc 0) =
(x !! (LENGTH(Enum.finite_3) - Suc 0) ≠ y !!
(LENGTH(Enum.finite_3) - Suc 0)) ∧
(~~ x) !! (LENGTH(Enum.finite_3) - Suc 0) = (¬ x !!
(LENGTH(Enum.finite_3) - Suc 0))
0⇧2 = 0
0⇧2 = 0
∀n. ¬ n < 0
SCAST('l → 'l) 1 = word_of_int (sbintrunc (LENGTH('l) - Suc 0)
1)
SCAST(Enum.finite_2 → 'l) 1 = word_of_int (sbintrunc
(LENGTH(Enum.finite_2) - Suc 0) 1)
SCAST(Enum.finite_3 → 'l) 1 = word_of_int (sbintrunc
(LENGTH(Enum.finite_3) - Suc 0) 1)
∀a b. a * b = b * a
∀a b. a * b = b * a
∀r. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat
(Transfer.Rel r)) SMT.Symb_Nil) SMT.Symb_Nil)
(Transfer.Rel r = r)
∀n m k. n < 2 ^ (m - k) ∧ k ≤ m ∧ m < LENGTH(Enum.finite_3) ⟶ n
* 2 ^ k < 2 ^ m
∀x n m. x < 2 ^ (n - m) ∧ m ≤ n ⟶ x < 2 ^ n div 2 ^ m
∀x n m. x < 2 ^ n div 2 ^ m ⟶ m ≤ n ∧ x < 2 ^ (n - m)
∀P. P ∧ Transfer.Rel (=) P False ⟶ False
∀i j k. i < j ∧ 0 < k ⟶ k * i < k * j
Numeral1 = Suc 0
∀n<2. n = 0 ∨ n = Suc 0
∀n m. Suc n = m ⟶ n = m - Suc 0
∀x2 y2. (num.Bit0 x2 = num.Bit0 y2) = (x2 = y2)
∀n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (max_snat
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(max_snat n = 2 ^ (n - 1))
∀n m a. n ≤ m ∧ 0 < a ⟶ a ^ (m - n) = a ^ m div a ^ n
∀a x n. (nat a < numeral x ^ n) = (a < numeral x ^ n)
∀uu. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (len_of
uu)) SMT.Symb_Nil) SMT.Symb_Nil)
(len_of uu = 0)
∀x. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (len_of
x)) SMT.Symb_Nil) SMT.Symb_Nil)
(len_of x = 2)
∀x. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (len_of
x)) SMT.Symb_Nil) SMT.Symb_Nil)
(len_of x = 4)
∀b a n m. 0 < b ⟶ (a * b ^ n < b ^ m) = (a < b ^ (m - n))
∀m n. (m - n = 0) = (m ≤ n)
∀n m. (Suc n ≤ Suc m) = (n ≤ m)
∀k j i. k ≤ j ⟶ i + (j - k) = i + j - k
∀m n. (Suc m ≤ n) = (m < n)
0 < 2
∀m n. (m < Suc n) = (m ≤ n)
∀n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (max_unat
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(max_unat n = 2 ^ n)
SMT: Names:
sorts:
Nat\$ = nat
Num\$ = num
L_word\$ = 'l word
Int_set\$ = int set
Nat_set\$ = nat set
L_itself\$ = 'l itself
Nat_list\$ = nat list
Bool_list\$ = bool list
Num0_word\$ = 0 word
L_word_set\$ = 'l word set
Int_int_fun\$ = int ⇒ int
Nat_int_fun\$ = nat ⇒ int
Nat_nat_fun\$ = nat ⇒ nat
Nat_num_fun\$ = nat ⇒ num
Num0_itself\$ = 0 itself
Int_bool_fun\$ = int ⇒ bool
Nat_bool_fun\$ = nat ⇒ bool
Bool_bool_fun\$ = bool ⇒ bool
Finite_2_word\$ = Enum.finite_2 word
Finite_3_word\$ = Enum.finite_3 word
L_signed_word\$ = 'l signed word
Int_l_word_fun\$ = int ⇒ 'l word
L_word_int_fun\$ = 'l word ⇒ int
Finite_2_itself\$ = Enum.finite_2 itself
Finite_3_itself\$ = Enum.finite_3 itself
Nat_option_list\$ = nat option list
Finite_2_word_set\$ = Enum.finite_2 word set
Finite_3_word_set\$ = Enum.finite_3 word set
Finite_2_signed_word\$ = Enum.finite_2 signed word
Finite_3_signed_word\$ = Enum.finite_3 signed word
Nat_nat_bool_fun_fun\$ = nat ⇒ nat ⇒ bool
Finite_2_word_int_fun\$ = Enum.finite_2 word ⇒ int
Finite_3_word_int_fun\$ = Enum.finite_3 word ⇒ int
Int_finite_2_word_fun\$ = int ⇒ Enum.finite_2 word
Int_finite_3_word_fun\$ = int ⇒ Enum.finite_3 word
Bool_bool_bool_fun_fun\$ = bool ⇒ bool ⇒ bool
functions:
n\$ = n
uu\$ = uu__
msb\$ = msb
nat\$ = nat
nth\$ = (!)
one\$ = 1
rel\$ = Transfer.Rel
rev\$ = rev
set\$ = set
suc\$ = Suc
top\$ = UNIV
uua\$ = uua__
uub\$ = uub__
uuc\$ = uuc__
uud\$ = uud__
uue\$ = uue__
uuf\$ = uuf__
uug\$ = uu
bit0\$ = num.Bit0
cons\$ = (#)
drop\$ = drop
less\$ = (<)
msb\$a = msb
msb\$b = msb
one\$a = num.One
one\$b = 1
one\$c = 1
one\$d = 1
plus\$ = (+)
sdiv\$ = (sdiv)
sint\$ = sint
size\$ = size
smod\$ = (smod)
snat\$ = snat
take\$ = take
top\$a = UNIV
type\$ = TYPE(Enum.finite_3)
uint\$ = uint
unat\$ = unat
zero\$ = 0
bitOR\$ = (||)
image\$ = (`)
less\$a = (<)
less\$b = (<)
less\$c = (<)
less\$d = (<)
minus\$ = (-)
plus\$a = (+)
plus\$b = (+)
plus\$c = (+)
power\$ = (^)
scast\$ = SCAST('l → 'l)
sint\$a = sint
sint\$b = sint
sints\$ = sints
size\$a = size
size\$b = size
size\$c = size
size\$d = length
times\$ = (*)
to_bl\$ = to_bl
type\$a = TYPE(Enum.finite_2)
type\$b = TYPE('l)
type\$c = TYPE(0)
ucast\$ = UCAST('l → 'l signed)
uint\$a = uint
uint\$b = uint
unat\$a = unat
unat\$b = unat
zero\$a = 0
zero\$b = 0
zero\$c = 0
zero\$d = 0
zero\$e = 0
zero\$f = 0
zero\$g = 0
append\$ = (@)
bitAND\$ = (&&)
bitNOT\$ = wordNOT
bitOR\$a = (||)
bitOR\$b = (||)
bitXOR\$ = (xor)
divide\$ = (div)
len_of\$ = len_of
member\$ = (∈)
minus\$a = (-)
minus\$b = (-)
minus\$c = (-)
modulo\$ = (mod)
of_nat\$ = int
power\$a = (^)
power\$b = (^)
power\$c = (^)
power\$d = (^)
scast\$a = SCAST(Enum.finite_2 → 'l)
scast\$b = SCAST(Enum.finite_3 → 'l)
shiftl\$ = (<<)
shiftr\$ = (>>)
td_ext\$ = td_ext
times\$a = (*)
times\$b = (*)
times\$c = (*)
times\$d = (*)
toEnum\$ = toEnum
to_bl\$a = to_bl
to_bl\$b = to_bl
ucast\$a = UCAST(Enum.finite_2 → Enum.finite_2 signed)
ucast\$b = UCAST(Enum.finite_3 → Enum.finite_3 signed)
uminus\$ = uminus
bin_nth\$ = bin_nth
bitAND\$a = (&&)
bitAND\$b = (&&)
bitNOT\$a = wordNOT
bitNOT\$b = wordNOT
bitXOR\$a = (xor)
bitXOR\$b = (xor)
collect\$ = Collect
divide\$a = (div)
divide\$b = (div)
divide\$c = (div)
fun_app\$ = SMT.fun_app
len_of\$a = len_of
len_of\$b = len_of
len_of\$c = len_of
less_eq\$ = (≤)
member\$a = (∈)
member\$b = (∈)
member\$c = (∈)
member\$d = (∈)
modulo\$a = (mod)
modulo\$b = (mod)
modulo\$c = (mod)
modulo\$d = (mod)
numeral\$ = numeral
of_nat\$a = of_nat
of_nat\$b = of_nat
of_nat\$c = of_nat
of_nat\$d = of_nat
shiftl\$a = (<<)
shiftl\$b = (<<)
shiftl\$c = (<<)
shiftr\$a = (>>)
shiftr\$b = (>>)
td_ext\$a = td_ext
td_ext\$b = td_ext
toEnum\$a = toEnum
toEnum\$b = toEnum
uminus\$a = uminus
uminus\$b = uminus
bin_sign\$ = bin_sign
collect\$a = Collect
fun_app\$a = SMT.fun_app
fun_app\$b = SMT.fun_app
fun_app\$c = SMT.fun_app
fun_app\$d = SMT.fun_app
fun_app\$e = SMT.fun_app
fun_app\$f = SMT.fun_app
fun_app\$g = SMT.fun_app
fun_app\$h = SMT.fun_app
fun_app\$i = SMT.fun_app
fun_app\$j = SMT.fun_app
fun_app\$k = SMT.fun_app
fun_app\$l = SMT.fun_app
fun_app\$m = SMT.fun_app
fun_app\$n = SMT.fun_app
less_eq\$a = (≤)
less_eq\$b = (≤)
less_eq\$c = (≤)
less_eq\$d = (≤)
max_snat\$ = max_snat
max_unat\$ = max_unat
numeral\$a = numeral
numeral\$b = numeral
numeral\$c = numeral
numeral\$d = numeral
test_bit\$ = (!!)
word_sle\$ = (<=s)
ial_invar\$ = ial_invar
replicate\$ = replicate
sbintrunc\$ = sbintrunc
test_bit\$a = (!!)
test_bit\$b = (!!)
word_sle\$a = (<=s)
word_sle\$b = (<=s)
word_sle\$c = (<=s)
word_sle\$d = (<=s)
word_sle\$e = (<=s)
is_aligned\$ = is_aligned
is_aligned\$a = is_aligned
is_aligned\$b = is_aligned
word_of_int\$ = word_of_int
word_of_int\$a = word_of_int
word_of_int\$b = word_of_int
word_of_int\$c = word_of_int
atLeastAtMost\$ = atLeastAtMost
atLeastAtMost\$a = atLeastAtMost
atLeastAtMost\$b = atLeastAtMost
SMT: Problem:
; --full-saturate-quant --inst-when=full-last-call --inst-no-
entail --term-db-mode=relevant --multi-trigger-linear --no-statistics
--random-seed=1 --lang=smt2 --continued-execution --tlimit 9990
(set-option :produce-unsat-cores true)
(declare-sort Nat\$ 0)
(declare-sort Num\$ 0)
(declare-sort L_word\$ 0)
(declare-sort Int_set\$ 0)
(declare-sort Nat_set\$ 0)
(declare-sort L_itself\$ 0)
(declare-sort Nat_list\$ 0)
(declare-sort Bool_list\$ 0)
(declare-sort Num0_word\$ 0)
(declare-sort L_word_set\$ 0)
(declare-sort Int_int_fun\$ 0)
(declare-sort Nat_int_fun\$ 0)
(declare-sort Nat_nat_fun\$ 0)
(declare-sort Nat_num_fun\$ 0)
(declare-sort Num0_itself\$ 0)
(declare-sort Int_bool_fun\$ 0)
(declare-sort Nat_bool_fun\$ 0)
(declare-sort Bool_bool_fun\$ 0)
(declare-sort Finite_2_word\$ 0)
(declare-sort Finite_3_word\$ 0)
(declare-sort L_signed_word\$ 0)
(declare-sort Int_l_word_fun\$ 0)
(declare-sort L_word_int_fun\$ 0)
(declare-sort Finite_2_itself\$ 0)
(declare-sort Finite_3_itself\$ 0)
(declare-sort Nat_option_list\$ 0)
(declare-sort Finite_2_word_set\$ 0)
(declare-sort Finite_3_word_set\$ 0)
(declare-sort Finite_2_signed_word\$ 0)
(declare-sort Finite_3_signed_word\$ 0)
(declare-sort Nat_nat_bool_fun_fun\$ 0)
(declare-sort Finite_2_word_int_fun\$ 0)
(declare-sort Finite_3_word_int_fun\$ 0)
(declare-sort Int_finite_2_word_fun\$ 0)
(declare-sort Int_finite_3_word_fun\$ 0)
(declare-sort Bool_bool_bool_fun_fun\$ 0)
(declare-fun n\$ () Nat\$)
(declare-fun uu\$ () Int_int_fun\$)
(declare-fun msb\$ (L_word\$) Bool)
(declare-fun nat\$ (Int) Nat\$)
(declare-fun nth\$ (Bool_list\$) Nat_bool_fun\$)
(declare-fun one\$ () Nat\$)
(declare-fun rel\$ (Bool_bool_bool_fun_fun\$)
Bool_bool_bool_fun_fun\$)
(declare-fun rev\$ (Bool_list\$) Bool_list\$)
(declare-fun set\$ (Nat_list\$) Nat_set\$)
(declare-fun suc\$ () Nat_nat_fun\$)
(declare-fun top\$ () Int_set\$)
(declare-fun uua\$ () Int_int_fun\$)
(declare-fun uub\$ () Int_int_fun\$)
(declare-fun uuc\$ (Nat\$) Int_bool_fun\$)
(declare-fun uud\$ (Nat_set\$) Nat_bool_fun\$)
(declare-fun uue\$ (Int_set\$) Int_bool_fun\$)
(declare-fun uuf\$ (Int) Int_int_fun\$)
(declare-fun uug\$ () Bool_bool_bool_fun_fun\$)
(declare-fun bit0\$ (Num\$) Num\$)
(declare-fun cons\$ (Bool Bool_list\$) Bool_list\$)
(declare-fun drop\$ (Nat\$ Bool_list\$) Bool_list\$)
(declare-fun less\$ () Nat_nat_bool_fun_fun\$)
(declare-fun msb\$a (Finite_2_word\$) Bool)
(declare-fun msb\$b (Finite_3_word\$) Bool)
(declare-fun one\$a () Num\$)
(declare-fun one\$b () L_word\$)
(declare-fun one\$c () Finite_2_word\$)
(declare-fun one\$d () Finite_3_word\$)
(declare-fun plus\$ (Nat\$) Nat_nat_fun\$)
(declare-fun sdiv\$ (Int Int) Int)
(declare-fun sint\$ () L_word_int_fun\$)
(declare-fun size\$ (L_word\$) Nat\$)
(declare-fun smod\$ (Int Int) Int)
(declare-fun snat\$ (L_word\$) Nat\$)
(declare-fun take\$ (Nat\$ Bool_list\$) Bool_list\$)
(declare-fun top\$a () Nat_set\$)
(declare-fun type\$ () Finite_3_itself\$)
(declare-fun uint\$ (L_word\$) Int)
(declare-fun unat\$ (L_word\$) Nat\$)
(declare-fun zero\$ () Nat\$)
(declare-fun bitOR\$ (L_word\$ L_word\$) L_word\$)
(declare-fun image\$ (Int_int_fun\$ Int_set\$) Int_set\$)
(declare-fun less\$a (L_word\$ L_word\$) Bool)
(declare-fun less\$b (Finite_2_word\$ Finite_2_word\$) Bool)
(declare-fun less\$c (Finite_3_word\$ Finite_3_word\$) Bool)
(declare-fun less\$d (Num\$ Num\$) Bool)
(declare-fun minus\$ (Nat\$) Nat_nat_fun\$)
(declare-fun plus\$a (L_word\$ L_word\$) L_word\$)
(declare-fun plus\$b (Finite_2_word\$ Finite_2_word\$)
Finite_2_word\$)
(declare-fun plus\$c (Finite_3_word\$ Finite_3_word\$)
Finite_3_word\$)
(declare-fun power\$ (Int) Nat_int_fun\$)
(declare-fun scast\$ (L_word\$) L_word\$)
(declare-fun sint\$a () Finite_2_word_int_fun\$)
(declare-fun sint\$b () Finite_3_word_int_fun\$)
(declare-fun sints\$ (Nat\$) Int_set\$)
(declare-fun size\$a (Num0_word\$) Nat\$)
(declare-fun size\$b (Finite_2_word\$) Nat\$)
(declare-fun size\$c (Finite_3_word\$) Nat\$)
(declare-fun size\$d (Nat_option_list\$) Nat\$)
(declare-fun times\$ (L_word\$ L_word\$) L_word\$)
(declare-fun to_bl\$ (L_word\$) Bool_list\$)
(declare-fun type\$a () Finite_2_itself\$)
(declare-fun type\$b () L_itself\$)
(declare-fun type\$c () Num0_itself\$)
(declare-fun ucast\$ (L_word\$) L_signed_word\$)
(declare-fun uint\$a (Finite_2_word\$) Int)
(declare-fun uint\$b (Finite_3_word\$) Int)
(declare-fun unat\$a (Finite_2_word\$) Nat\$)
(declare-fun unat\$b (Finite_3_word\$) Nat\$)
(declare-fun zero\$a () L_word\$)
(declare-fun zero\$b () Finite_2_word\$)
(declare-fun zero\$c () Finite_3_word\$)
(declare-fun zero\$d () Num0_word\$)
(declare-fun zero\$e () L_signed_word\$)
(declare-fun zero\$f () Finite_2_signed_word\$)
(declare-fun zero\$g () Finite_3_signed_word\$)
(declare-fun append\$ (Bool_list\$ Bool_list\$) Bool_list\$)
(declare-fun bitAND\$ (L_word\$ L_word\$) L_word\$)
(declare-fun bitNOT\$ (L_word\$) L_word\$)
(declare-fun bitOR\$a (Finite_2_word\$ Finite_2_word\$)
Finite_2_word\$)
(declare-fun bitOR\$b (Finite_3_word\$ Finite_3_word\$)
Finite_3_word\$)
(declare-fun bitXOR\$ (L_word\$ L_word\$) L_word\$)
(declare-fun divide\$ (L_word\$ L_word\$) L_word\$)
(declare-fun len_of\$ (Finite_3_itself\$) Nat\$)
(declare-fun member\$ (Nat\$ Nat_set\$) Bool)
(declare-fun minus\$a (L_word\$ L_word\$) L_word\$)
(declare-fun minus\$b (Finite_2_word\$ Finite_2_word\$)
Finite_2_word\$)
(declare-fun minus\$c (Finite_3_word\$ Finite_3_word\$)
Finite_3_word\$)
(declare-fun modulo\$ (Int Int) Int)
(declare-fun of_nat\$ () Nat_int_fun\$)
(declare-fun power\$a (Nat\$) Nat_nat_fun\$)
(declare-fun power\$b (L_word\$ Nat\$) L_word\$)
(declare-fun power\$c (Finite_2_word\$ Nat\$) Finite_2_word\$)
(declare-fun power\$d (Finite_3_word\$ Nat\$) Finite_3_word\$)
(declare-fun scast\$a (Finite_2_word\$) L_word\$)
(declare-fun scast\$b (Finite_3_word\$) L_word\$)
(declare-fun shiftl\$ (Int) Nat_int_fun\$)
(declare-fun shiftr\$ (L_word\$ Nat\$) L_word\$)
(declare-fun td_ext\$ (L_word_int_fun\$ Int_l_word_fun\$ Int_set\$
Int_int_fun\$) Bool)
(declare-fun times\$a (Finite_2_word\$ Finite_2_word\$)
Finite_2_word\$)
(declare-fun times\$b (Finite_3_word\$ Finite_3_word\$)
Finite_3_word\$)
(declare-fun times\$c (Nat\$) Nat_nat_fun\$)
(declare-fun times\$d (Int Int) Int)
(declare-fun toEnum\$ (Nat\$) L_word\$)
(declare-fun to_bl\$a (Finite_2_word\$) Bool_list\$)
(declare-fun to_bl\$b (Finite_3_word\$) Bool_list\$)
(declare-fun ucast\$a (Finite_2_word\$) Finite_2_signed_word\$)
(declare-fun ucast\$b (Finite_3_word\$) Finite_3_signed_word\$)
(declare-fun uminus\$ (L_word\$) L_word\$)
(declare-fun bin_nth\$ (Int) Nat_bool_fun\$)
(declare-fun bitAND\$a (Finite_2_word\$ Finite_2_word\$)
Finite_2_word\$)
(declare-fun bitAND\$b (Finite_3_word\$ Finite_3_word\$)
Finite_3_word\$)
(declare-fun bitNOT\$a (Finite_2_word\$) Finite_2_word\$)
(declare-fun bitNOT\$b (Finite_3_word\$) Finite_3_word\$)
(declare-fun bitXOR\$a (Finite_2_word\$ Finite_2_word\$)
Finite_2_word\$)
(declare-fun bitXOR\$b (Finite_3_word\$ Finite_3_word\$)
Finite_3_word\$)
(declare-fun collect\$ (Nat_bool_fun\$) Nat_set\$)
(declare-fun divide\$a (Finite_2_word\$ Finite_2_word\$)
Finite_2_word\$)
(declare-fun divide\$b (Finite_3_word\$ Finite_3_word\$)
Finite_3_word\$)
(declare-fun divide\$c (Nat\$) Nat_nat_fun\$)
(declare-fun fun_app\$ (Int_int_fun\$ Int) Int)
(declare-fun len_of\$a (Finite_2_itself\$) Nat\$)
(declare-fun len_of\$b (L_itself\$) Nat\$)
(declare-fun len_of\$c (Num0_itself\$) Nat\$)
(declare-fun less_eq\$ (L_word\$ L_word\$) Bool)
(declare-fun member\$a (Int Int_set\$) Bool)
(declare-fun member\$b (L_word\$ L_word_set\$) Bool)
(declare-fun member\$c (Finite_2_word\$ Finite_2_word_set\$) Bool)
(declare-fun member\$d (Finite_3_word\$ Finite_3_word_set\$) Bool)
(declare-fun modulo\$a (Nat\$) Nat_nat_fun\$)
(declare-fun modulo\$b (L_word\$ L_word\$) L_word\$)
(declare-fun modulo\$c (Finite_2_word\$ Finite_2_word\$)
Finite_2_word\$)
(declare-fun modulo\$d (Finite_3_word\$ Finite_3_word\$)
Finite_3_word\$)
(declare-fun numeral\$ (Num\$) Nat\$)
(declare-fun of_nat\$a () Nat_nat_fun\$)
(declare-fun of_nat\$b (Nat\$) L_word\$)
(declare-fun of_nat\$c (Nat\$) Finite_2_word\$)
(declare-fun of_nat\$d (Nat\$) Finite_3_word\$)
(declare-fun shiftl\$a (L_word\$ Nat\$) L_word\$)
(declare-fun shiftl\$b (Finite_2_word\$ Nat\$) Finite_2_word\$)
(declare-fun shiftl\$c (Finite_3_word\$ Nat\$) Finite_3_word\$)
(declare-fun shiftr\$a (Finite_2_word\$ Nat\$) Finite_2_word\$)
(declare-fun shiftr\$b (Finite_3_word\$ Nat\$) Finite_3_word\$)
(declare-fun td_ext\$a (Finite_2_word_int_fun\$
Int_finite_2_word_fun\$ Int_set\$ Int_int_fun\$) Bool)
(declare-fun td_ext\$b (Finite_3_word_int_fun\$
Int_finite_3_word_fun\$ Int_set\$ Int_int_fun\$) Bool)
(declare-fun toEnum\$a (Nat\$) Finite_2_word\$)
(declare-fun toEnum\$b (Nat\$) Finite_3_word\$)
(declare-fun uminus\$a (Finite_2_word\$) Finite_2_word\$)
(declare-fun uminus\$b (Finite_3_word\$) Finite_3_word\$)
(declare-fun bin_sign\$ (Int) Int)
(declare-fun collect\$a (Int_bool_fun\$) Int_set\$)
(declare-fun fun_app\$a (Nat_int_fun\$ Nat\$) Int)
(declare-fun fun_app\$b (Nat_nat_fun\$ Nat\$) Nat\$)
(declare-fun fun_app\$c (Int_bool_fun\$ Int) Bool)
(declare-fun fun_app\$d (Nat_bool_fun\$ Nat\$) Bool)
(declare-fun fun_app\$e (Bool_bool_fun\$ Bool) Bool)
(declare-fun fun_app\$f (Bool_bool_bool_fun_fun\$ Bool)
Bool_bool_fun\$)
(declare-fun fun_app\$g (Nat_nat_bool_fun_fun\$ Nat\$)
Nat_bool_fun\$)
(declare-fun fun_app\$h (Int_l_word_fun\$ Int) L_word\$)
(declare-fun fun_app\$i (L_word_int_fun\$ L_word\$) Int)
(declare-fun fun_app\$j (Finite_2_word_int_fun\$ Finite_2_word\$)
Int)
(declare-fun fun_app\$k (Finite_3_word_int_fun\$ Finite_3_word\$)
Int)
(declare-fun fun_app\$l (Int_finite_2_word_fun\$ Int)
Finite_2_word\$)
(declare-fun fun_app\$m (Int_finite_3_word_fun\$ Int)
Finite_3_word\$)
(declare-fun fun_app\$n (Nat_num_fun\$ Nat\$) Num\$)
(declare-fun less_eq\$a (Finite_2_word\$ Finite_2_word\$) Bool)
(declare-fun less_eq\$b (Finite_3_word\$ Finite_3_word\$) Bool)
(declare-fun less_eq\$c () Nat_nat_bool_fun_fun\$)
(declare-fun less_eq\$d (Num\$ Num\$) Bool)
(declare-fun max_snat\$ () Nat_nat_fun\$)
(declare-fun max_unat\$ () Nat_nat_fun\$)
(declare-fun numeral\$a (Num\$) Int)
(declare-fun numeral\$b (Num\$) L_word\$)
(declare-fun numeral\$c (Num\$) Finite_2_word\$)
(declare-fun numeral\$d (Num\$) Finite_3_word\$)
(declare-fun test_bit\$ (L_word\$) Nat_bool_fun\$)
(declare-fun word_sle\$ (L_word\$ L_word\$) Bool)
(declare-fun ial_invar\$ (Nat\$ Nat_list\$ Nat_option_list\$) Bool)
(declare-fun replicate\$ (Nat\$ Bool) Bool_list\$)
(declare-fun sbintrunc\$ (Nat\$) Int_int_fun\$)
(declare-fun test_bit\$a (Finite_2_word\$) Nat_bool_fun\$)
(declare-fun test_bit\$b (Finite_3_word\$) Nat_bool_fun\$)
(declare-fun word_sle\$a (Finite_2_word\$ Finite_2_word\$) Bool)
(declare-fun word_sle\$b (Finite_3_word\$ Finite_3_word\$) Bool)
(declare-fun word_sle\$c (L_signed_word\$ L_signed_word\$) Bool)
(declare-fun word_sle\$d (Finite_2_signed_word\$
Finite_2_signed_word\$) Bool)
(declare-fun word_sle\$e (Finite_3_signed_word\$
Finite_3_signed_word\$) Bool)
(declare-fun is_aligned\$ (L_word\$) Nat_bool_fun\$)
(declare-fun is_aligned\$a (Finite_2_word\$) Nat_bool_fun\$)
(declare-fun is_aligned\$b (Finite_3_word\$) Nat_bool_fun\$)
(declare-fun word_of_int\$ () Int_l_word_fun\$)
(declare-fun word_of_int\$a () Int_finite_2_word_fun\$)
(declare-fun word_of_int\$b () Int_finite_3_word_fun\$)
(declare-fun word_of_int\$c (Int) Num0_word\$)
(declare-fun atLeastAtMost\$ (L_word\$ L_word\$) L_word_set\$)
(declare-fun atLeastAtMost\$a (Finite_2_word\$ Finite_2_word\$)
Finite_2_word_set\$)
(declare-fun atLeastAtMost\$b (Finite_3_word\$ Finite_3_word\$)
Finite_3_word_set\$)
(assert (! (forall ((?v0 Int)) (! (= (fun_app\$ uub\$ ?v0) (-
(modulo\$ (+ ?v0 (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$
type\$)) one\$))) (fun_app\$a (power\$ 2) (len_of\$ type\$))) (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$)) one\$)))) :pattern
((fun_app\$ uub\$ ?v0)))) :named a0))
(assert (! (forall ((?v0 Int)) (! (= (fun_app\$ uua\$ ?v0) (-
(modulo\$ (+ ?v0 (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$a
type\$a)) one\$))) (fun_app\$a (power\$ 2) (len_of\$a type\$a))) (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (len_of\$a type\$a)) one\$)))) :pattern
((fun_app\$ uua\$ ?v0)))) :named a1))
(assert (! (forall ((?v0 Int)) (! (= (fun_app\$ uu\$ ?v0) (-
(modulo\$ (+ ?v0 (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$b
type\$b)) one\$))) (fun_app\$a (power\$ 2) (len_of\$b type\$b))) (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (len_of\$b type\$b)) one\$)))) :pattern
((fun_app\$ uu\$ ?v0)))) :named a2))
(assert (! (forall ((?v0 Nat\$) (?v1 Int)) (! (= (fun_app\$c (uuc\$
?v0) ?v1) (and (<= (- (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ ?v0)
one\$))) ?v1) (< ?v1 (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ ?v0)
one\$))))) :pattern ((fun_app\$c (uuc\$ ?v0) ?v1)))) :named a3))
(assert (! (forall ((?v0 Int) (?v1 Int)) (! (= (fun_app\$ (uuf\$
?v0) ?v1) (- ?v0 ?v1)) :pattern ((fun_app\$ (uuf\$ ?v0) ?v1)))) :named
a4))
(assert (! (forall ((?v0 Nat_set\$) (?v1 Nat\$)) (! (= (fun_app\$d
(uud\$ ?v0) ?v1) (member\$ ?v1 ?v0)) :pattern ((fun_app\$d (uud\$ ?v0)
?v1)))) :named a5))
(assert (! (forall ((?v0 Int_set\$) (?v1 Int)) (! (= (fun_app\$c
(uue\$ ?v0) ?v1) (member\$a ?v1 ?v0)) :pattern ((fun_app\$c (uue\$ ?v0)
?v1)))) :named a6))
(assert (! (forall ((?v0 Bool) (?v1 Bool)) (! (= (fun_app\$e
(fun_app\$f uug\$ ?v0) ?v1) (= ?v0 ?v1)) :pattern ((fun_app\$e (fun_app\$f
uug\$ ?v0) ?v1)))) :named a7))
(assert (! (not false) :named a8))
(assert (! (fun_app\$d (fun_app\$g less\$ n\$) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (fun_app\$b (minus\$ (len_of\$b type\$b))
(fun_app\$b suc\$ zero\$)))) :named a9))
(assert (! (msb\$ (fun_app\$h word_of_int\$ (fun_app\$a of_nat\$
n\$))) :named a10))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$d (fun_app\$g less\$ (fun_app\$b (power\$a (numeral\$ ?v0)) ?v1))
(fun_app\$b of_nat\$a ?v2)) (fun_app\$d (fun_app\$g less\$ (fun_app\$b
(power\$a (numeral\$ ?v0)) ?v1)) ?v2))) :named a11))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$a (power\$ (numeral\$a ?v0)) ?v1) (fun_app\$a of_nat\$ ?v2))
(fun_app\$d (fun_app\$g less\$ (fun_app\$b (power\$a (numeral\$ ?v0)) ?v1))
?v2))) :named a12))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (=
(fun_app\$d (fun_app\$g less\$ (fun_app\$b of_nat\$a ?v0)) (fun_app\$b
(power\$a (numeral\$ ?v1)) ?v2)) (fun_app\$d (fun_app\$g less\$ ?v0)
(fun_app\$b (power\$a (numeral\$ ?v1)) ?v2)))) :named a13))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (<
(fun_app\$a of_nat\$ ?v0) (fun_app\$a (power\$ (numeral\$a ?v1)) ?v2))
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ ?v1))
?v2)))) :named a14))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d
(fun_app\$g less\$ zero\$) (fun_app\$b (power\$a (fun_app\$b of_nat\$a ?v0))
?v1)) (or (fun_app\$d (fun_app\$g less\$ zero\$) ?v0) (= ?v1 zero\$))))
:named a15))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< 0 (fun_app\$a
(power\$ (fun_app\$a of_nat\$ ?v0)) ?v1)) (or (fun_app\$d (fun_app\$g less\$
zero\$) ?v0) (= ?v1 zero\$)))) :named a16))
(assert (! (= one\$ (fun_app\$b suc\$ zero\$)) :named a17))
(assert (! (forall ((?v0 L_word\$)) (! (= (msb\$ ?v0) (less_eq\$
(power\$b (numeral\$b (bit0\$ one\$a)) (fun_app\$b (minus\$ (len_of\$b
type\$b)) (fun_app\$b suc\$ zero\$))) ?v0)) :pattern ((msb\$ ?v0)))) :named
a18))
(assert (! (forall ((?v0 Finite_2_word\$)) (! (= (msb\$a ?v0)
(less_eq\$a (power\$c (numeral\$c (bit0\$ one\$a)) (fun_app\$b (minus\$
(len_of\$a type\$a)) (fun_app\$b suc\$ zero\$))) ?v0)) :pattern ((msb\$a
?v0)))) :named a19))
(assert (! (forall ((?v0 Finite_3_word\$)) (! (= (msb\$b ?v0)
(less_eq\$b (power\$d (numeral\$d (bit0\$ one\$a)) (fun_app\$b (minus\$
(len_of\$ type\$)) (fun_app\$b suc\$ zero\$))) ?v0)) :pattern ((msb\$b
?v0)))) :named a20))
(assert (! (forall ((?v0 Int)) (= (< 0 (fun_app\$a (power\$ ?v0)
(numeral\$ (bit0\$ one\$a)))) (not (= ?v0 0)))) :named a21))
(assert (! (=> (fun_app\$d (fun_app\$g less\$ n\$) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (fun_app\$b (minus\$ (len_of\$b
type\$b)) (fun_app\$b suc\$ zero\$)))) (= n\$ (nat\$ (fun_app\$i sint\$
(fun_app\$h word_of_int\$ (fun_app\$a of_nat\$ n\$)))))) :named a22))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$b (power\$a (numeral\$ ?v0)) ?v1) (fun_app\$b of_nat\$a ?v2)) (=
(fun_app\$b (power\$a (numeral\$ ?v0)) ?v1) ?v2))) :named a23))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$a (power\$ (numeral\$a ?v0)) ?v1) (fun_app\$a of_nat\$ ?v2)) (=
(fun_app\$b (power\$a (numeral\$ ?v0)) ?v1) ?v2))) :named a24))
(assert (! (forall ((?v0 Nat\$)) (! (= (of_nat\$b ?v0) (fun_app\$h
word_of_int\$ (fun_app\$a of_nat\$ ?v0))) :pattern ((of_nat\$b ?v0))))
:named a25))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(fun_app\$b of_nat\$a ?v0) (fun_app\$b (power\$a (numeral\$ ?v1)) ?v2)) (=
?v0 (fun_app\$b (power\$a (numeral\$ ?v1)) ?v2)))) :named a26))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(fun_app\$a of_nat\$ ?v0) (fun_app\$a (power\$ (numeral\$a ?v1)) ?v2)) (=
?v0 (fun_app\$b (power\$a (numeral\$ ?v1)) ?v2)))) :named a27))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$d (fun_app\$g less\$ (fun_app\$b (power\$a (fun_app\$b of_nat\$a
?v0)) ?v1)) (fun_app\$b of_nat\$a ?v2)) (fun_app\$d (fun_app\$g less\$
(fun_app\$b (power\$a ?v0) ?v1)) ?v2))) :named a28))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$a (power\$ (fun_app\$a of_nat\$ ?v0)) ?v1) (fun_app\$a of_nat\$
?v2)) (fun_app\$d (fun_app\$g less\$ (fun_app\$b (power\$a ?v0) ?v1)) ?v2)))
:named a29))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (member\$
?v0 (collect\$ ?v1)) (fun_app\$d ?v1 ?v0))) :named a30))
(assert (! (forall ((?v0 Int) (?v1 Int_bool_fun\$)) (= (member\$a
?v0 (collect\$a ?v1)) (fun_app\$c ?v1 ?v0))) :named a31))
(assert (! (td_ext\$ sint\$ word_of_int\$ (sints\$ (len_of\$b
type\$b)) uu\$) :named a32))
(assert (! (td_ext\$a sint\$a word_of_int\$a (sints\$ (len_of\$a
type\$a)) uua\$) :named a33))
(assert (! (td_ext\$b sint\$b word_of_int\$b (sints\$ (len_of\$
type\$)) uub\$) :named a34))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$d (fun_app\$g less\$ (fun_app\$b of_nat\$a ?v0)) (fun_app\$b
(power\$a (fun_app\$b of_nat\$a ?v1)) ?v2)) (fun_app\$d (fun_app\$g less\$
?v0) (fun_app\$b (power\$a ?v1) ?v2)))) :named a35))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$a of_nat\$ ?v0) (fun_app\$a (power\$ (fun_app\$a of_nat\$ ?v1))
?v2)) (fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a ?v1) ?v2))))
:named a36))
(assert (! (fun_app\$d (fun_app\$g less\$ zero\$) (len_of\$b type\$b))
:named a37))
(assert (! (fun_app\$d (fun_app\$g less\$ zero\$) (len_of\$a type\$a))
:named a38))
(assert (! (fun_app\$d (fun_app\$g less\$ zero\$) (len_of\$ type\$))
:named a39))
(assert (! (forall ((?v0 L_word\$)) (! (= (size\$ ?v0) (len_of\$b
type\$b)) :pattern ((size\$ ?v0)))) :named a40))
(assert (! (forall ((?v0 Num0_word\$)) (! (= (size\$a ?v0)
(len_of\$c type\$c)) :pattern ((size\$a ?v0)))) :named a41))
(assert (! (forall ((?v0 Finite_2_word\$)) (! (= (size\$b ?v0)
(len_of\$a type\$a)) :pattern ((size\$b ?v0)))) :named a42))
(assert (! (forall ((?v0 Finite_3_word\$)) (! (= (size\$c ?v0)
(len_of\$ type\$)) :pattern ((size\$c ?v0)))) :named a43))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
zero\$) ?v0) (= (fun_app\$b suc\$ (fun_app\$b (minus\$ ?v0) (fun_app\$b suc\$
zero\$))) ?v0))) :named a44))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$d (fun_app\$g less\$ ?v0)
(fun_app\$b suc\$ ?v0))) :named a45))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (fun_app\$g less\$
zero\$) (fun_app\$b of_nat\$a ?v0)) (fun_app\$d (fun_app\$g less\$ zero\$)
?v0))) :named a46))
(assert (! (forall ((?v0 Nat\$)) (= (< 0 (fun_app\$a of_nat\$ ?v0))
(fun_app\$d (fun_app\$g less\$ zero\$) ?v0))) :named a47))
(assert (! (forall ((?v0 L_word\$)) (=> (less\$a ?v0 (power\$b
(numeral\$b (bit0\$ one\$a)) (fun_app\$b (minus\$ (len_of\$b type\$b)) one\$)))
(not (msb\$ ?v0)))) :named a48))
(assert (! (forall ((?v0 Finite_2_word\$)) (=> (less\$b ?v0
(power\$c (numeral\$c (bit0\$ one\$a)) (fun_app\$b (minus\$ (len_of\$a
type\$a)) one\$))) (not (msb\$a ?v0)))) :named a49))
(assert (! (forall ((?v0 Finite_3_word\$)) (=> (less\$c ?v0
(power\$d (numeral\$d (bit0\$ one\$a)) (fun_app\$b (minus\$ (len_of\$ type\$))
one\$))) (not (msb\$b ?v0)))) :named a50))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(fun_app\$b (minus\$ ?v1) (fun_app\$b suc\$ zero\$)))) (fun_app\$d (fun_app\$g
less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v1)))) :named
a51))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$b (power\$a ?v0)
(numeral\$ (bit0\$ one\$a))) zero\$) (= ?v0 zero\$))) :named a52))
(assert (! (forall ((?v0 Int)) (= (= (fun_app\$a (power\$ ?v0)
(numeral\$ (bit0\$ one\$a))) 0) (= ?v0 0))) :named a53))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (fun_app\$g less\$
?v0) (fun_app\$b suc\$ zero\$)) (= ?v0 zero\$))) :named a54))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (fun_app\$g less\$
(fun_app\$b (minus\$ ?v0) (fun_app\$b suc\$ zero\$))) ?v0) (not (= ?v0
zero\$)))) :named a55))
(assert (! (forall ((?v0 L_word\$)) (fun_app\$d (fun_app\$g less\$
(unat\$ ?v0)) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$b
type\$b)))) :named a56))
(assert (! (forall ((?v0 Finite_2_word\$)) (fun_app\$d (fun_app\$g
less\$ (unat\$a ?v0)) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$a type\$a)))) :named a57))
(assert (! (forall ((?v0 Finite_3_word\$)) (fun_app\$d (fun_app\$g
less\$ (unat\$b ?v0)) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$ type\$)))) :named a58))
(assert (! (= (fun_app\$b of_nat\$a zero\$) zero\$) :named a59))
(assert (! (= (fun_app\$a of_nat\$ zero\$) 0) :named a60))
(assert (! (forall ((?v0 Nat\$)) (= (not (= ?v0 zero\$))
(fun_app\$d (fun_app\$g less\$ zero\$) ?v0))) :named a61))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
?v1)) (fun_app\$d (fun_app\$g less\$ ?v1) (len_of\$b type\$b))) (less\$a
(of_nat\$b ?v0) (power\$b (numeral\$b (bit0\$ one\$a)) ?v1)))) :named a62))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
?v1)) (fun_app\$d (fun_app\$g less\$ ?v1) (len_of\$a type\$a))) (less\$b
(of_nat\$c ?v0) (power\$c (numeral\$c (bit0\$ one\$a)) ?v1)))) :named a63))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
?v1)) (fun_app\$d (fun_app\$g less\$ ?v1) (len_of\$ type\$))) (less\$c
(of_nat\$d ?v0) (power\$d (numeral\$d (bit0\$ one\$a)) ?v1)))) :named a64))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ zero\$) ?v0) (fun_app\$d (fun_app\$g less\$ zero\$) ?v1))
(fun_app\$d (fun_app\$g less\$ (fun_app\$b (minus\$ ?v1) ?v0)) ?v1))) :named
a65))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$b suc\$
?v0) (fun_app\$b suc\$ ?v1)) (= ?v0 ?v1))) :named a66))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$b type\$b))) (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$b type\$b)))) (= (fun_app\$d
(fun_app\$g less_eq\$c ?v1) ?v0) (less_eq\$ (of_nat\$b ?v1) (of_nat\$b
?v0))))) :named a67))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$a type\$a))) (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$a type\$a)))) (= (fun_app\$d
(fun_app\$g less_eq\$c ?v1) ?v0) (less_eq\$a (of_nat\$c ?v1) (of_nat\$c
?v0))))) :named a68))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$ type\$))) (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (len_of\$ type\$)))) (= (fun_app\$d (fun_app\$g
less_eq\$c ?v1) ?v0) (less_eq\$b (of_nat\$d ?v1) (of_nat\$d ?v0))))) :named
a69))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$b suc\$
?v0) (fun_app\$b suc\$ ?v1)) (= ?v0 ?v1))) :named a70))
(assert (! (forall ((?v0 Num\$)) (fun_app\$d (fun_app\$g less\$
zero\$) (numeral\$ ?v0))) :named a71))
(assert (! (forall ((?v0 Num\$)) (< 0 (numeral\$a ?v0))) :named
a72))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$a
of_nat\$ ?v0) (fun_app\$a of_nat\$ ?v1)) (= ?v0 ?v1))) :named a73))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$d (fun_app\$g less\$
zero\$) (fun_app\$b suc\$ ?v0))) :named a74))
(assert (! (forall ((?v0 L_word\$)) (! (= (msb\$ ?v0) (fun_app\$d
(fun_app\$g less_eq\$c (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(fun_app\$b (minus\$ (len_of\$b type\$b)) one\$))) (unat\$ ?v0))) :pattern
((msb\$ ?v0)))) :named a75))
(assert (! (forall ((?v0 Finite_2_word\$)) (! (= (msb\$a ?v0)
(fun_app\$d (fun_app\$g less_eq\$c (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ (len_of\$a type\$a)) one\$))) (unat\$a ?v0)))
:pattern ((msb\$a ?v0)))) :named a76))
(assert (! (forall ((?v0 Finite_3_word\$)) (! (= (msb\$b ?v0)
(fun_app\$d (fun_app\$g less_eq\$c (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ (len_of\$ type\$)) one\$))) (unat\$b ?v0)))
:pattern ((msb\$b ?v0)))) :named a77))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b (minus\$
(fun_app\$b suc\$ ?v0)) (fun_app\$b suc\$ ?v1)) (fun_app\$b (minus\$ ?v0)
?v1))) :named a78))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d
(fun_app\$g less\$ (fun_app\$b suc\$ ?v0)) (fun_app\$b suc\$ ?v1)) (fun_app\$d
(fun_app\$g less\$ ?v0) ?v1))) :named a79))
(assert (! (forall ((?v0 Num\$)) (=> (fun_app\$d (fun_app\$g less\$
(numeral\$ ?v0)) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$ zero\$)))) (not
(msb\$ (numeral\$b ?v0))))) :named a80))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$) (?v2 Num\$)) (=> (and
(less_eq\$d ?v0 ?v1) (less\$d ?v1 ?v2)) (less\$d ?v0 ?v2))) :named a81))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$d (fun_app\$g less_eq\$c ?v0) ?v1) (fun_app\$d (fun_app\$g less\$
?v1) ?v2)) (fun_app\$d (fun_app\$g less\$ ?v0) ?v2))) :named a82))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (=> (and (<=
?v0 ?v1) (< ?v1 ?v2)) (< ?v0 ?v2))) :named a83))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ ?v0) ?v1) (fun_app\$d (fun_app\$g less\$ (fun_app\$b suc\$
?v0)) (fun_app\$b suc\$ ?v1)))) :named a84))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$)) (=> (fun_app\$d
(is_aligned\$ ?v0) ?v1) (exists ((?v2 Nat\$)) (and (= ?v0 (times\$
(power\$b (numeral\$b (bit0\$ one\$a)) ?v1) (of_nat\$b ?v2))) (fun_app\$d
(fun_app\$g less\$ ?v2) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(fun_app\$b (minus\$ (len_of\$b type\$b)) ?v1))))))) :named a85))
(assert (! (forall ((?v0 Finite_2_word\$) (?v1 Nat\$)) (=>
(fun_app\$d (is_aligned\$a ?v0) ?v1) (exists ((?v2 Nat\$)) (and (= ?v0
(times\$a (power\$c (numeral\$c (bit0\$ one\$a)) ?v1) (of_nat\$c ?v2)))
(fun_app\$d (fun_app\$g less\$ ?v2) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ (len_of\$a type\$a)) ?v1))))))) :named a86))
(assert (! (forall ((?v0 Finite_3_word\$) (?v1 Nat\$)) (=>
(fun_app\$d (is_aligned\$b ?v0) ?v1) (exists ((?v2 Nat\$)) (and (= ?v0
(times\$b (power\$d (numeral\$d (bit0\$ one\$a)) ?v1) (of_nat\$d ?v2)))
(fun_app\$d (fun_app\$g less\$ ?v2) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ (len_of\$ type\$)) ?v1))))))) :named a87))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
of_nat\$a (fun_app\$b (power\$a ?v0) ?v1)) (fun_app\$b (power\$a (fun_app\$b
of_nat\$a ?v0)) ?v1))) :named a88))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$a of_nat\$
(fun_app\$b (power\$a ?v0) ?v1)) (fun_app\$a (power\$ (fun_app\$a of_nat\$
?v0)) ?v1))) :named a89))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (minus\$ ?v0) ?v0)
zero\$)) :named a90))
(assert (! (forall ((?v0 L_word\$)) (and (<= (- (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$
zero\$)))) (fun_app\$i sint\$ ?v0)) (< (fun_app\$i sint\$ ?v0) (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$
zero\$)))))) :named a91))
(assert (! (forall ((?v0 Finite_2_word\$)) (and (<= (- (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$
zero\$)))) (fun_app\$j sint\$a ?v0)) (< (fun_app\$j sint\$a ?v0) (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$
zero\$)))))) :named a92))
(assert (! (forall ((?v0 Finite_3_word\$)) (and (<= (- (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
zero\$)))) (fun_app\$k sint\$b ?v0)) (< (fun_app\$k sint\$b ?v0) (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
zero\$)))))) :named a93))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (minus\$ (fun_app\$b (minus\$ (fun_app\$b suc\$ ?v0)) ?v1))
(fun_app\$b suc\$ ?v2)) (fun_app\$b (minus\$ (fun_app\$b (minus\$ ?v0) ?v1))
?v2))) :named a94))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d
(fun_app\$g less_eq\$c ?v0) ?v1) (not (fun_app\$d (fun_app\$g less\$ ?v1)
?v0)))) :named a95))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$b of_nat\$a ?v0)
zero\$) (= ?v0 zero\$))) :named a96))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$a of_nat\$ ?v0) 0)
(= ?v0 zero\$))) :named a97))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (minus\$ zero\$)
?v0) zero\$)) :named a98))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (= (= ?v0 (fun_app\$
(sbintrunc\$ ?v1) ?v0)) (member\$a ?v0 (image\$ (sbintrunc\$ ?v1) top\$))))
:named a99))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ zero\$) ?v0) (fun_app\$d (fun_app\$g less\$ zero\$)
(fun_app\$b (power\$a ?v0) ?v1)))) :named a100))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (=> (< 0 ?v0) (< 0
(fun_app\$a (power\$ ?v0) ?v1)))) :named a101))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d
(fun_app\$g less\$ zero\$) (fun_app\$b (power\$a ?v0) ?v1)) (or (fun_app\$d
(fun_app\$g less\$ zero\$) ?v0) (= ?v1 zero\$)))) :named a102))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$b (power\$a zero\$)
(numeral\$ ?v0)) zero\$)) :named a103))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$a (power\$ 0)
(numeral\$ ?v0)) 0)) :named a104))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (power\$a zero\$)
(fun_app\$b suc\$ ?v0)) zero\$)) :named a105))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$a (power\$ 0)
(fun_app\$b suc\$ ?v0)) 0)) :named a106))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d
(fun_app\$g less\$ (fun_app\$b of_nat\$a ?v0)) (fun_app\$b of_nat\$a ?v1))
(fun_app\$d (fun_app\$g less\$ ?v0) ?v1))) :named a107))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< (fun_app\$a
of_nat\$ ?v0) (fun_app\$a of_nat\$ ?v1)) (fun_app\$d (fun_app\$g less\$ ?v0)
?v1))) :named a108))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (< (smod\$
(fun_app\$i sint\$ ?v0) (fun_app\$i sint\$ ?v1)) (fun_app\$a (power\$ 2)
(fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$ zero\$))))) :named
a109))
(assert (! (forall ((?v0 Finite_2_word\$) (?v1 Finite_2_word\$))
(< (smod\$ (fun_app\$j sint\$a ?v0) (fun_app\$j sint\$a ?v1)) (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$
zero\$))))) :named a110))
(assert (! (forall ((?v0 Finite_3_word\$) (?v1 Finite_3_word\$))
(< (smod\$ (fun_app\$k sint\$b ?v0) (fun_app\$k sint\$b ?v1)) (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
zero\$))))) :named a111))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d
(fun_app\$g less\$ zero\$) (fun_app\$b (minus\$ ?v0) ?v1)) (fun_app\$d
(fun_app\$g less\$ ?v1) ?v0))) :named a112))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$d ?v0 zero\$) (forall ((?v2 Nat\$)) (=> (fun_app\$d ?v0 ?v2)
(fun_app\$d ?v0 (fun_app\$b suc\$ ?v2))))) (fun_app\$d ?v0 ?v1))) :named
a113))
(assert (! (forall ((?v0 Nat\$)) (= (sints\$ ?v0) (collect\$a (uuc\$
?v0)))) :named a114))
(assert (! (forall ((?v0 Nat\$)) (= (= zero\$ (fun_app\$b of_nat\$a
?v0)) (= zero\$ ?v0))) :named a115))
(assert (! (forall ((?v0 Nat\$)) (= (= 0 (fun_app\$a of_nat\$ ?v0))
(= zero\$ ?v0))) :named a116))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$b
(power\$a ?v0) ?v1) zero\$) (and (= ?v0 zero\$) (fun_app\$d (fun_app\$g
less\$ zero\$) ?v1)))) :named a117))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (= (= (fun_app\$a
(power\$ ?v0) ?v1) 0) (and (= ?v0 0) (fun_app\$d (fun_app\$g less\$ zero\$)
?v1)))) :named a118))
(assert (! (td_ext\$ sint\$ word_of_int\$ (sints\$ (len_of\$b
type\$b)) (sbintrunc\$ (fun_app\$b (minus\$ (len_of\$b type\$b)) one\$)))
:named a119))
(assert (! (td_ext\$a sint\$a word_of_int\$a (sints\$ (len_of\$a
type\$a)) (sbintrunc\$ (fun_app\$b (minus\$ (len_of\$a type\$a)) one\$)))
:named a120))
(assert (! (td_ext\$b sint\$b word_of_int\$b (sints\$ (len_of\$
type\$)) (sbintrunc\$ (fun_app\$b (minus\$ (len_of\$ type\$)) one\$))) :named
a121))
(assert (! (= (fun_app\$i sint\$ (power\$b (numeral\$b (bit0\$
one\$a)) (fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$ zero\$))))
(- (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$b type\$b))
(fun_app\$b suc\$ zero\$))))) :named a122))
(assert (! (= (fun_app\$j sint\$a (power\$c (numeral\$c (bit0\$
one\$a)) (fun_app\$b (minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$ zero\$))))
(- (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$a type\$a))
(fun_app\$b suc\$ zero\$))))) :named a123))
(assert (! (= (fun_app\$k sint\$b (power\$d (numeral\$d (bit0\$
one\$a)) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ zero\$))))
(- (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b
suc\$ zero\$))))) :named a124))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$d (fun_app\$g less_eq\$c
?v0) ?v0)) :named a125))
(assert (! (forall ((?v0 Int)) (<= ?v0 ?v0)) :named a126))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$b (power\$a ?v0)
(fun_app\$b suc\$ zero\$)) ?v0) :pattern ((power\$a ?v0)))) :named a127))
(assert (! (forall ((?v0 Int)) (! (= (fun_app\$a (power\$ ?v0)
(fun_app\$b suc\$ zero\$)) ?v0) :pattern ((power\$ ?v0)))) :named a128))
(assert (! (forall ((?v0 Int)) (= (- ?v0 0) ?v0)) :named a129))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (minus\$ ?v0)
zero\$) ?v0)) :named a130))
(assert (! (forall ((?v0 L_word\$)) (! (= (msb\$ ?v0) (fun_app\$d
(test_bit\$ ?v0) (fun_app\$b (minus\$ (len_of\$b type\$b)) one\$))) :pattern
((msb\$ ?v0)))) :named a131))
(assert (! (forall ((?v0 Finite_2_word\$)) (! (= (msb\$a ?v0)
(fun_app\$d (test_bit\$a ?v0) (fun_app\$b (minus\$ (len_of\$a type\$a))
one\$))) :pattern ((msb\$a ?v0)))) :named a132))
(assert (! (forall ((?v0 Finite_3_word\$)) (! (= (msb\$b ?v0)
(fun_app\$d (test_bit\$b ?v0) (fun_app\$b (minus\$ (len_of\$ type\$)) one\$)))
:pattern ((msb\$b ?v0)))) :named a133))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$d (fun_app\$g less\$
?v0) ?v0))) :named a134))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$b (power\$a
(fun_app\$b suc\$ zero\$)) ?v0) (fun_app\$b suc\$ zero\$)) :pattern
((fun_app\$b (power\$a (fun_app\$b suc\$ zero\$)) ?v0)))) :named a135))
(assert (! (= (fun_app\$i sint\$ (uminus\$ (power\$b (numeral\$b
(bit0\$ one\$a)) (fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$
zero\$))))) (- (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$b
type\$b)) (fun_app\$b suc\$ zero\$))))) :named a136))
(assert (! (= (fun_app\$j sint\$a (uminus\$a (power\$c (numeral\$c
(bit0\$ one\$a)) (fun_app\$b (minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$
zero\$))))) (- (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$a
type\$a)) (fun_app\$b suc\$ zero\$))))) :named a137))
(assert (! (= (fun_app\$k sint\$b (uminus\$b (power\$d (numeral\$d
(bit0\$ one\$a)) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
zero\$))))) (- (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ zero\$))))) :named a138))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$b of_nat\$a (numeral\$
?v0)) (numeral\$ ?v0))) :named a139))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$a of_nat\$ (numeral\$
?v0)) (numeral\$a ?v0))) :named a140))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$h word_of_int\$
(fun_app\$a (power\$ 2) ?v0)) (power\$b (numeral\$b (bit0\$ one\$a)) ?v0)))
:named a141))
(assert (! (forall ((?v0 Int)) (= (msb\$ (fun_app\$h word_of_int\$
?v0)) (fun_app\$d (bin_nth\$ ?v0) (fun_app\$b (minus\$ (len_of\$b type\$b))
one\$)))) :named a142))
(assert (! (forall ((?v0 Int)) (= (msb\$a (fun_app\$l
word_of_int\$a ?v0)) (fun_app\$d (bin_nth\$ ?v0) (fun_app\$b (minus\$
(len_of\$a type\$a)) one\$)))) :named a143))
(assert (! (forall ((?v0 Int)) (= (msb\$b (fun_app\$m
word_of_int\$b ?v0)) (fun_app\$d (bin_nth\$ ?v0) (fun_app\$b (minus\$
(len_of\$ type\$)) one\$)))) :named a144))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (<= (-
(fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b
suc\$ zero\$)))) (smod\$ (fun_app\$i sint\$ ?v0) (fun_app\$i sint\$ ?v1))))
:named a145))
(assert (! (forall ((?v0 Finite_2_word\$) (?v1 Finite_2_word\$))
(<= (- (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$a type\$a))
(fun_app\$b suc\$ zero\$)))) (smod\$ (fun_app\$j sint\$a ?v0) (fun_app\$j
sint\$a ?v1)))) :named a146))
(assert (! (forall ((?v0 Finite_3_word\$) (?v1 Finite_3_word\$))
(<= (- (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ zero\$)))) (smod\$ (fun_app\$k sint\$b ?v0) (fun_app\$k
sint\$b ?v1)))) :named a147))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (= (< (sdiv\$
(fun_app\$i sint\$ ?v0) (fun_app\$i sint\$ ?v1)) (fun_app\$a (power\$ 2)
(fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$ zero\$)))) (=> (=
?v0 (uminus\$ (power\$b (numeral\$b (bit0\$ one\$a)) (fun_app\$b (minus\$
(len_of\$b type\$b)) (fun_app\$b suc\$ zero\$))))) (not (= ?v1 (uminus\$
one\$b)))))) :named a148))
(assert (! (forall ((?v0 Finite_2_word\$) (?v1 Finite_2_word\$))
(= (< (sdiv\$ (fun_app\$j sint\$a ?v0) (fun_app\$j sint\$a ?v1)) (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$
zero\$)))) (=> (= ?v0 (uminus\$a (power\$c (numeral\$c (bit0\$ one\$a))
(fun_app\$b (minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$ zero\$))))) (not
(= ?v1 (uminus\$a one\$c)))))) :named a149))
(assert (! (forall ((?v0 Finite_3_word\$) (?v1 Finite_3_word\$))
(= (< (sdiv\$ (fun_app\$k sint\$b ?v0) (fun_app\$k sint\$b ?v1)) (fun_app\$a
(power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
zero\$)))) (=> (= ?v0 (uminus\$b (power\$d (numeral\$d (bit0\$ one\$a))
(fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ zero\$))))) (not (=
?v1 (uminus\$b one\$d)))))) :named a150))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$b
(power\$a ?v0) ?v1) (fun_app\$b suc\$ zero\$)) (or (= ?v1 zero\$) (= ?v0
(fun_app\$b suc\$ zero\$))))) :named a151))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) (len_of\$b type\$b)) (= (unat\$ (power\$b (numeral\$b (bit0\$ one\$a))
?v0)) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v0)))) :named
a152))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) (len_of\$a type\$a)) (= (unat\$a (power\$c (numeral\$c (bit0\$ one\$a))
?v0)) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v0)))) :named
a153))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) (len_of\$ type\$)) (= (unat\$b (power\$d (numeral\$d (bit0\$ one\$a))
?v0)) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v0)))) :named
a154))
(assert (! (forall ((?v0 Nat\$) (?v1 L_word\$)) (=> (fun_app\$d
(fun_app\$g less\$ ?v0) (len_of\$b type\$b)) (less\$a (bitAND\$ ?v1 (mask\$
?v0)) (power\$b (numeral\$b (bit0\$ one\$a)) ?v0)))) :named a155))
(assert (! (forall ((?v0 Nat\$) (?v1 Finite_2_word\$)) (=>
(fun_app\$d (fun_app\$g less\$ ?v0) (len_of\$a type\$a)) (less\$b (bitAND\$a
?v1 (mask\$a ?v0)) (power\$c (numeral\$c (bit0\$ one\$a)) ?v0)))) :named
a156))
(assert (! (forall ((?v0 Nat\$) (?v1 Finite_3_word\$)) (=>
(fun_app\$d (fun_app\$g less\$ ?v0) (len_of\$ type\$)) (less\$c (bitAND\$b ?v1
(mask\$b ?v0)) (power\$d (numeral\$d (bit0\$ one\$a)) ?v0)))) :named a157))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (not (= ?v0
?v1)) (and (=> (fun_app\$d (fun_app\$g less\$ ?v0) ?v1) false) (=>
(fun_app\$d (fun_app\$g less\$ ?v1) ?v0) false))) false)) :named a158))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$d (fun_app\$g less\$
?v0) ?v0))) :named a159))
(assert (! (forall ((?v0 Int)) (not (< ?v0 ?v0))) :named a160))
(assert (! (forall ((?v0 Num\$)) (not (less\$d ?v0 ?v0))) :named
a161))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$d (fun_app\$g less\$ zero\$) ?v0) (fun_app\$d (fun_app\$g less\$
(fun_app\$b (power\$a ?v0) ?v1)) (fun_app\$b (power\$a ?v0) ?v2)))
(fun_app\$d (fun_app\$g less\$ ?v1) ?v2))) :named a162))
(assert (! (forall ((?v0 L_word\$)) (! (= (msb\$ ?v0) (=
(bin_sign\$ (fun_app\$i sint\$ ?v0)) (- 1))) :pattern ((msb\$ ?v0))))
:named a163))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$b of_nat\$a ?v0) (fun_app\$b (power\$a (fun_app\$b of_nat\$a ?v1))
?v2)) (= ?v0 (fun_app\$b (power\$a ?v1) ?v2)))) :named a164))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$a of_nat\$ ?v0) (fun_app\$a (power\$ (fun_app\$a of_nat\$ ?v1))
?v2)) (= ?v0 (fun_app\$b (power\$a ?v1) ?v2)))) :named a165))
(assert (! (forall ((?v0 Int_bool_fun\$) (?v1 Int_bool_fun\$)) (=>
(forall ((?v2 Int)) (= (fun_app\$c ?v0 ?v2) (fun_app\$c ?v1 ?v2))) (=
(collect\$a ?v0) (collect\$a ?v1)))) :named a166))
(assert (! (= zero\$a (fun_app\$h word_of_int\$ 0)) :named a167))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$b (power\$a (fun_app\$b of_nat\$a ?v0)) ?v1) (fun_app\$b of_nat\$a
?v2)) (= (fun_app\$b (power\$a ?v0) ?v1) ?v2))) :named a168))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$a (power\$ (fun_app\$a of_nat\$ ?v0)) ?v1) (fun_app\$a of_nat\$
?v2)) (= (fun_app\$b (power\$a ?v0) ?v1) ?v2))) :named a169))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(fun_app\$b (minus\$ (len_of\$b type\$b)) ?v1))) (= (unat\$ (times\$ (power\$b
(numeral\$b (bit0\$ one\$a)) ?v1) (of_nat\$b ?v0))) (fun_app\$b (times\$c
(fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v1)) ?v0)))) :named
a170))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(fun_app\$b (minus\$ (len_of\$a type\$a)) ?v1))) (= (unat\$a (times\$a
(power\$c (numeral\$c (bit0\$ one\$a)) ?v1) (of_nat\$c ?v0))) (fun_app\$b
(times\$c (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v1)) ?v0))))
:named a171))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(fun_app\$b (minus\$ (len_of\$ type\$)) ?v1))) (= (unat\$b (times\$b (power\$d
(numeral\$d (bit0\$ one\$a)) ?v1) (of_nat\$d ?v0))) (fun_app\$b (times\$c
(fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v1)) ?v0)))) :named
a172))
(assert (! (= (numeral\$ (bit0\$ one\$a)) (fun_app\$b suc\$
(fun_app\$b suc\$ zero\$))) :named a173))
(assert (! (forall ((?v0 L_word\$)) (! (= (scast\$ ?v0) (fun_app\$h
word_of_int\$ (fun_app\$i sint\$ ?v0))) :pattern ((scast\$ ?v0)))) :named
a174))
(assert (! (forall ((?v0 Num\$)) (! (= (numeral\$b ?v0) (fun_app\$h
word_of_int\$ (numeral\$a ?v0))) :pattern ((numeral\$b ?v0)))) :named
a175))
(assert (! (forall ((?v0 Nat\$)) (=> (and (= (of_nat\$b ?v0)
zero\$a) (fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$
(bit0\$ one\$a))) (len_of\$b type\$b)))) (= ?v0 zero\$))) :named a176))
(assert (! (forall ((?v0 Nat\$)) (=> (and (= (of_nat\$c ?v0)
zero\$b) (fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$
(bit0\$ one\$a))) (len_of\$a type\$a)))) (= ?v0 zero\$))) :named a177))
(assert (! (forall ((?v0 Nat\$)) (=> (and (= (of_nat\$d ?v0)
zero\$c) (fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$
(bit0\$ one\$a))) (len_of\$ type\$)))) (= ?v0 zero\$))) :named a178))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (<= (-
(fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b
suc\$ zero\$)))) (sdiv\$ (fun_app\$i sint\$ ?v0) (fun_app\$i sint\$ ?v1))))
:named a179))
(assert (! (forall ((?v0 Finite_2_word\$) (?v1 Finite_2_word\$))
(<= (- (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$a type\$a))
(fun_app\$b suc\$ zero\$)))) (sdiv\$ (fun_app\$j sint\$a ?v0) (fun_app\$j
sint\$a ?v1)))) :named a180))
(assert (! (forall ((?v0 Finite_3_word\$) (?v1 Finite_3_word\$))
(<= (- (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ zero\$)))) (sdiv\$ (fun_app\$k sint\$b ?v0) (fun_app\$k
sint\$b ?v1)))) :named a181))
(assert (! (forall ((?v0 Nat\$)) (=> (and (fun_app\$d (fun_app\$g
less\$ zero\$) ?v0) (fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (len_of\$b type\$b)))) (not (= (of_nat\$b ?v0)
zero\$a)))) :named a182))
(assert (! (forall ((?v0 Nat\$)) (=> (and (fun_app\$d (fun_app\$g
less\$ zero\$) ?v0) (fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (len_of\$a type\$a)))) (not (= (of_nat\$c ?v0)
zero\$b)))) :named a183))
(assert (! (forall ((?v0 Nat\$)) (=> (and (fun_app\$d (fun_app\$g
less\$ zero\$) ?v0) (fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (len_of\$ type\$)))) (not (= (of_nat\$d ?v0)
zero\$c)))) :named a184))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (= (< (sdiv\$
(fun_app\$i sint\$ ?v0) (fun_app\$i sint\$ ?v1)) (fun_app\$a (power\$ 2)
(fun_app\$b (minus\$ (size\$ ?v0)) one\$))) (or (not (= ?v0 (uminus\$
(power\$b (numeral\$b (bit0\$ one\$a)) (fun_app\$b (minus\$ (size\$ ?v0))
one\$))))) (not (= ?v1 (uminus\$ one\$b)))))) :named a185))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (fun_app\$d (fun_app\$g
less_eq\$c (fun_app\$b (minus\$ ?v0) ?v1)) ?v0)) :named a186))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ zero\$) ?v0) (fun_app\$d (fun_app\$g less\$ (fun_app\$b
(minus\$ ?v0) (fun_app\$b suc\$ ?v1))) ?v0))) :named a187))
(assert (! (forall ((?v0 Nat\$)) (= (unat\$ (of_nat\$b ?v0))
(fun_app\$b (modulo\$a ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$b type\$b))))) :named a188))
(assert (! (forall ((?v0 Nat\$)) (= (unat\$a (of_nat\$c ?v0))
(fun_app\$b (modulo\$a ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$a type\$a))))) :named a189))
(assert (! (forall ((?v0 Nat\$)) (= (unat\$b (of_nat\$d ?v0))
(fun_app\$b (modulo\$a ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$ type\$))))) :named a190))
(assert (! (forall ((?v0 Nat_set\$)) (= (collect\$ (uud\$ ?v0))
?v0)) :named a191))
(assert (! (forall ((?v0 Int_set\$)) (= (collect\$a (uue\$ ?v0))
?v0)) :named a192))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ ?v1) ?v2))) (and (fun_app\$d (fun_app\$g
less_eq\$c ?v2) ?v1) (fun_app\$d (fun_app\$g less\$ ?v1) (len_of\$b
type\$b)))) (less\$a (times\$ (of_nat\$b ?v0) (power\$b (numeral\$b (bit0\$
one\$a)) ?v2)) (power\$b (numeral\$b (bit0\$ one\$a)) ?v1)))) :named a193))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ ?v1) ?v2))) (and (fun_app\$d (fun_app\$g
less_eq\$c ?v2) ?v1) (fun_app\$d (fun_app\$g less\$ ?v1) (len_of\$a
type\$a)))) (less\$b (times\$a (of_nat\$c ?v0) (power\$c (numeral\$c (bit0\$
one\$a)) ?v2)) (power\$c (numeral\$c (bit0\$ one\$a)) ?v1)))) :named a194))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ ?v1) ?v2))) (and (fun_app\$d (fun_app\$g
less_eq\$c ?v2) ?v1) (fun_app\$d (fun_app\$g less\$ ?v1) (len_of\$ type\$))))
(less\$c (times\$b (of_nat\$d ?v0) (power\$d (numeral\$d (bit0\$ one\$a))
?v2)) (power\$d (numeral\$d (bit0\$ one\$a)) ?v1)))) :named a195))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (! (=> (fun_app\$d
(fun_app\$g less\$ ?v0) ?v1) (= (fun_app\$b (modulo\$a ?v0) ?v1) ?v0))
:pattern ((fun_app\$b (modulo\$a ?v0) ?v1)))) :named a196))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$)) (=> (and
(fun_app\$d (is_aligned\$ ?v0) ?v1) (forall ((?v2 Nat\$)) (=> (and (= ?v0
(times\$ (power\$b (numeral\$b (bit0\$ one\$a)) ?v1) (of_nat\$b ?v2)))
(fun_app\$d (fun_app\$g less\$ ?v2) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ (len_of\$b type\$b)) ?v1)))) false))) false))
:named a197))
(assert (! (forall ((?v0 Finite_2_word\$) (?v1 Nat\$)) (=> (and
(fun_app\$d (is_aligned\$a ?v0) ?v1) (forall ((?v2 Nat\$)) (=> (and (= ?v0
(times\$a (power\$c (numeral\$c (bit0\$ one\$a)) ?v1) (of_nat\$c ?v2)))
(fun_app\$d (fun_app\$g less\$ ?v2) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ (len_of\$a type\$a)) ?v1)))) false))) false))
:named a198))
(assert (! (forall ((?v0 Finite_3_word\$) (?v1 Nat\$)) (=> (and
(fun_app\$d (is_aligned\$b ?v0) ?v1) (forall ((?v2 Nat\$)) (=> (and (= ?v0
(times\$b (power\$d (numeral\$d (bit0\$ one\$a)) ?v1) (of_nat\$d ?v2)))
(fun_app\$d (fun_app\$g less\$ ?v2) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ (len_of\$ type\$)) ?v1)))) false))) false))
:named a199))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(fun_app\$d (fun_app\$g less\$ (fun_app\$b (times\$c (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) ?v0)) ?v1)) (fun_app\$b (power\$a (numeral\$
(bit0\$ one\$a))) ?v2)) (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (fun_app\$b (minus\$ ?v2) ?v0)))))
:named a200))
(assert (! (forall ((?v0 L_word\$)) (! (= (msb\$ ?v0) (not (=
(shiftr\$ ?v0 (fun_app\$b (minus\$ (len_of\$b type\$b)) one\$)) zero\$a)))
:pattern ((msb\$ ?v0)))) :named a201))
(assert (! (forall ((?v0 Finite_2_word\$)) (! (= (msb\$a ?v0) (not
(= (shiftr\$a ?v0 (fun_app\$b (minus\$ (len_of\$a type\$a)) one\$)) zero\$b)))
:pattern ((msb\$a ?v0)))) :named a202))
(assert (! (forall ((?v0 Finite_3_word\$)) (! (= (msb\$b ?v0) (not
(= (shiftr\$b ?v0 (fun_app\$b (minus\$ (len_of\$ type\$)) one\$)) zero\$c)))
:pattern ((msb\$b ?v0)))) :named a203))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (forall
((?v2 Nat\$)) (=> (not (fun_app\$d ?v0 ?v2)) (exists ((?v3 Nat\$)) (and
(fun_app\$d (fun_app\$g less\$ ?v3) ?v2) (not (fun_app\$d ?v0 ?v3))))))
(fun_app\$d ?v0 ?v1))) :named a204))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (forall
((?v2 Nat\$)) (=> (forall ((?v3 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v3) ?v2) (fun_app\$d ?v0 ?v3))) (fun_app\$d ?v0 ?v2))) (fun_app\$d ?v0
?v1))) :named a205))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$b type\$b))) (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$b type\$b)))) (= (fun_app\$d
(fun_app\$g less\$ ?v1) ?v0) (less\$a (of_nat\$b ?v1) (of_nat\$b ?v0)))))
:named a206))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$a type\$a))) (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$a type\$a)))) (= (fun_app\$d
(fun_app\$g less\$ ?v1) ?v0) (less\$b (of_nat\$c ?v1) (of_nat\$c ?v0)))))
:named a207))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$ type\$))) (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (len_of\$ type\$)))) (= (fun_app\$d (fun_app\$g
less\$ ?v1) ?v0) (less\$c (of_nat\$d ?v1) (of_nat\$d ?v0))))) :named a208))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$b type\$b)))
(= (unat\$ (of_nat\$b ?v0)) ?v0))) :named a209))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$a type\$a)))
(= (unat\$a (of_nat\$c ?v0)) ?v0))) :named a210))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$ type\$))) (=
(unat\$b (of_nat\$d ?v0)) ?v0))) :named a211))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$)) (=> (and (less\$a
?v0 (power\$b (numeral\$b (bit0\$ one\$a)) (fun_app\$b (minus\$ (len_of\$b
type\$b)) ?v1))) (and (fun_app\$d (fun_app\$g less\$ ?v1) (len_of\$b
type\$b)) (not (= ?v0 zero\$a)))) (not (= (times\$ ?v0 (power\$b (numeral\$b
(bit0\$ one\$a)) ?v1)) zero\$a)))) :named a212))
(assert (! (forall ((?v0 Finite_2_word\$) (?v1 Nat\$)) (=> (and
(less\$b ?v0 (power\$c (numeral\$c (bit0\$ one\$a)) (fun_app\$b (minus\$
(len_of\$a type\$a)) ?v1))) (and (fun_app\$d (fun_app\$g less\$ ?v1)
(len_of\$a type\$a)) (not (= ?v0 zero\$b)))) (not (= (times\$a ?v0 (power\$c
(numeral\$c (bit0\$ one\$a)) ?v1)) zero\$b)))) :named a213))
(assert (! (forall ((?v0 Finite_3_word\$) (?v1 Nat\$)) (=> (and
(less\$c ?v0 (power\$d (numeral\$d (bit0\$ one\$a)) (fun_app\$b (minus\$
(len_of\$ type\$)) ?v1))) (and (fun_app\$d (fun_app\$g less\$ ?v1) (len_of\$
type\$)) (not (= ?v0 zero\$c)))) (not (= (times\$b ?v0 (power\$d (numeral\$d
(bit0\$ one\$a)) ?v1)) zero\$c)))) :named a214))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
of_nat\$a (fun_app\$b (times\$c ?v0) ?v1)) (fun_app\$b (times\$c (fun_app\$b
of_nat\$a ?v0)) (fun_app\$b of_nat\$a ?v1)))) :named a215))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$a of_nat\$
(fun_app\$b (times\$c ?v0) ?v1)) (times\$d (fun_app\$a of_nat\$ ?v0)
(fun_app\$a of_nat\$ ?v1)))) :named a216))
(assert (! (forall ((?v0 L_word\$)) (member\$a (fun_app\$i sint\$
?v0) (sints\$ (len_of\$b type\$b)))) :named a217))
(assert (! (forall ((?v0 Finite_2_word\$)) (member\$a (fun_app\$j
sint\$a ?v0) (sints\$ (len_of\$a type\$a)))) :named a218))
(assert (! (forall ((?v0 Finite_3_word\$)) (member\$a (fun_app\$k
sint\$b ?v0) (sints\$ (len_of\$ type\$)))) :named a219))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) ?v0) false)) :named a220))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$b of_nat\$a
(fun_app\$b suc\$ ?v0)) (fun_app\$b (plus\$ one\$) (fun_app\$b of_nat\$a
?v0))) :pattern ((fun_app\$b suc\$ ?v0)))) :named a221))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$a of_nat\$
(fun_app\$b suc\$ ?v0)) (+ 1 (fun_app\$a of_nat\$ ?v0))) :pattern
((fun_app\$b suc\$ ?v0)))) :named a222))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ ?v0) ?v1) (not (= ?v0 ?v1)))) :named a223))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$d (fun_app\$g less\$ ?v0) ?v1) (fun_app\$d (fun_app\$g less\$ ?v1)
?v2)) (fun_app\$d (fun_app\$g less\$ (fun_app\$b suc\$ ?v0)) ?v2))) :named
a224))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ ?v0) ?v1) (not (= ?v1 ?v0)))) :named a225))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 L_word\$) (?v3
L_word\$)) (=> (and (fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (fun_app\$b (minus\$ (len_of\$b type\$b)) ?v1)))
(and (= ?v2 (times\$ (power\$b (numeral\$b (bit0\$ one\$a)) ?v1) (of_nat\$b
?v0))) (and (less_eq\$ ?v3 ?v2) (and (fun_app\$d (fun_app\$g less\$ ?v1)
(len_of\$b type\$b)) (not (= (modulo\$b ?v3 (power\$b (numeral\$b (bit0\$
one\$a)) ?v1)) zero\$a)))))) (less\$a (divide\$ ?v3 (power\$b (numeral\$b
(bit0\$ one\$a)) ?v1)) (of_nat\$b ?v0)))) :named a226))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Finite_2_word\$)
(?v3 Finite_2_word\$)) (=> (and (fun_app\$d (fun_app\$g less\$ ?v0)
(fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (fun_app\$b (minus\$
(len_of\$a type\$a)) ?v1))) (and (= ?v2 (times\$a (power\$c (numeral\$c
(bit0\$ one\$a)) ?v1) (of_nat\$c ?v0))) (and (less_eq\$a ?v3 ?v2) (and
(fun_app\$d (fun_app\$g less\$ ?v1) (len_of\$a type\$a)) (not (= (modulo\$c
?v3 (power\$c (numeral\$c (bit0\$ one\$a)) ?v1)) zero\$b)))))) (less\$b
(divide\$a ?v3 (power\$c (numeral\$c (bit0\$ one\$a)) ?v1)) (of_nat\$c
?v0)))) :named a227))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Finite_3_word\$)
(?v3 Finite_3_word\$)) (=> (and (fun_app\$d (fun_app\$g less\$ ?v0)
(fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (fun_app\$b (minus\$
(len_of\$ type\$)) ?v1))) (and (= ?v2 (times\$b (power\$d (numeral\$d (bit0\$
one\$a)) ?v1) (of_nat\$d ?v0))) (and (less_eq\$b ?v3 ?v2) (and (fun_app\$d
(fun_app\$g less\$ ?v1) (len_of\$ type\$)) (not (= (modulo\$d ?v3 (power\$d
(numeral\$d (bit0\$ one\$a)) ?v1)) zero\$c)))))) (less\$c (divide\$b ?v3
(power\$d (numeral\$d (bit0\$ one\$a)) ?v1)) (of_nat\$d ?v0)))) :named
a228))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (not (= ?v0 ?v1))
(or (fun_app\$d (fun_app\$g less\$ ?v0) ?v1) (fun_app\$d (fun_app\$g less\$
?v1) ?v0)))) :named a229))
(assert (! (forall ((?v0 Nat\$)) (= (not (fun_app\$d (fun_app\$g
less\$ zero\$) ?v0)) (= ?v0 zero\$))) :named a230))
(assert (! (forall ((?v0 Nat\$)) (=> (and (=> (= ?v0 zero\$)
false) (=> (not (= ?v0 zero\$)) false)) false)) :named a231))
(assert (! (forall ((?v0 Int)) (= (fun_app\$i sint\$ (fun_app\$h
word_of_int\$ ?v0)) (fun_app\$ (sbintrunc\$ (fun_app\$b (minus\$ (len_of\$b
type\$b)) one\$)) ?v0))) :named a232))
(assert (! (forall ((?v0 Int)) (= (fun_app\$j sint\$a (fun_app\$l
word_of_int\$a ?v0)) (fun_app\$ (sbintrunc\$ (fun_app\$b (minus\$ (len_of\$a
type\$a)) one\$)) ?v0))) :named a233))
(assert (! (forall ((?v0 Int)) (= (fun_app\$k sint\$b (fun_app\$m
word_of_int\$b ?v0)) (fun_app\$ (sbintrunc\$ (fun_app\$b (minus\$ (len_of\$
type\$)) one\$)) ?v0))) :named a234))
(assert (! (forall ((?v0 Nat\$)) (not (= ?v0 (fun_app\$b suc\$
?v0)))) :named a235))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= (fun_app\$b
suc\$ ?v0) (fun_app\$b suc\$ ?v1)) (= ?v0 ?v1))) :named a236))
(assert (! (forall ((?v0 Nat\$)) (! (=> (fun_app\$d (fun_app\$g
less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$b
type\$b))) (= (toEnum\$ ?v0) (of_nat\$b ?v0))) :pattern ((toEnum\$ ?v0))))
:named a237))
(assert (! (forall ((?v0 Nat\$)) (! (=> (fun_app\$d (fun_app\$g
less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$a
type\$a))) (= (toEnum\$a ?v0) (of_nat\$c ?v0))) :pattern ((toEnum\$a
?v0)))) :named a238))
(assert (! (forall ((?v0 Nat\$)) (! (=> (fun_app\$d (fun_app\$g
less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$
type\$))) (= (toEnum\$b ?v0) (of_nat\$d ?v0))) :pattern ((toEnum\$b ?v0))))
:named a239))
(assert (! (forall ((?v0 Nat\$)) (= (= (power\$b (numeral\$b (bit0\$
one\$a)) ?v0) zero\$a) (fun_app\$d (fun_app\$g less_eq\$c (len_of\$b type\$b))
?v0))) :named a240))
(assert (! (forall ((?v0 Nat\$)) (= (= (power\$c (numeral\$c (bit0\$
one\$a)) ?v0) zero\$b) (fun_app\$d (fun_app\$g less_eq\$c (len_of\$a type\$a))
?v0))) :named a241))
(assert (! (forall ((?v0 Nat\$)) (= (= (power\$d (numeral\$d (bit0\$
one\$a)) ?v0) zero\$c) (fun_app\$d (fun_app\$g less_eq\$c (len_of\$ type\$))
?v0))) :named a242))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (minus\$ (fun_app\$b (minus\$ ?v0) ?v1)) ?v2) (fun_app\$b
(minus\$ (fun_app\$b (minus\$ ?v0) ?v2)) ?v1))) :named a243))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (not (= ?v0
zero\$)) (not (= (fun_app\$b (power\$a ?v0) ?v1) zero\$)))) :named a244))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (=> (not (= ?v0 0))
(not (= (fun_app\$a (power\$ ?v0) ?v1) 0)))) :named a245))
(assert (! (forall ((?v0 L_word\$)) (=> (forall ((?v1 Nat\$)) (=>
(and (= ?v0 (of_nat\$b ?v1)) (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$b type\$b)))) false)) false))
:named a246))
(assert (! (forall ((?v0 Finite_2_word\$)) (=> (forall ((?v1
Nat\$)) (=> (and (= ?v0 (of_nat\$c ?v1)) (fun_app\$d (fun_app\$g less\$ ?v1)
(fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$a type\$a))))
false)) false)) :named a247))
(assert (! (forall ((?v0 Finite_3_word\$)) (=> (forall ((?v1
Nat\$)) (=> (and (= ?v0 (of_nat\$d ?v1)) (fun_app\$d (fun_app\$g less\$ ?v1)
(fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$ type\$))))
false)) false)) :named a248))
(assert (! (forall ((?v0 L_word\$)) (exists ((?v1 Nat\$)) (and (=
?v0 (of_nat\$b ?v1)) (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$b type\$b)))))) :named a249))
(assert (! (forall ((?v0 Finite_2_word\$)) (exists ((?v1 Nat\$))
(and (= ?v0 (of_nat\$c ?v1)) (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$a type\$a)))))) :named a250))
(assert (! (forall ((?v0 Finite_3_word\$)) (exists ((?v1 Nat\$))
(and (= ?v0 (of_nat\$d ?v1)) (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$ type\$)))))) :named a251))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$b type\$b))) (and (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$b type\$b))) (= (of_nat\$b
?v0) (of_nat\$b ?v1)))) (= ?v0 ?v1))) :named a252))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$a type\$a))) (and (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$a type\$a))) (= (of_nat\$c
?v0) (of_nat\$c ?v1)))) (= ?v0 ?v1))) :named a253))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$ type\$))) (and (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$ type\$))) (= (of_nat\$d ?v0)
(of_nat\$d ?v1)))) (= ?v0 ?v1))) :named a254))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (<= (-
(fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (size\$ ?v0)) one\$))) (sdiv\$
(fun_app\$i sint\$ ?v0) (fun_app\$i sint\$ ?v1)))) :named a255))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$b type\$b))) (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$b type\$b)))) (= (= (of_nat\$b
?v0) (of_nat\$b ?v1)) (= ?v0 ?v1)))) :named a256))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$a type\$a))) (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$a type\$a)))) (= (= (of_nat\$c
?v0) (of_nat\$c ?v1)) (= ?v0 ?v1)))) :named a257))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$ type\$))) (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (len_of\$ type\$)))) (= (= (of_nat\$d ?v0)
(of_nat\$d ?v1)) (= ?v0 ?v1)))) :named a258))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (fun_app\$g less\$
?v0) zero\$) false)) :named a259))
(assert (! (forall ((?v0 Int)) (= (< (- ?v0) ?v0) (< 0 ?v0)))
:named a260))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(times\$c ?v0) ?v1) (fun_app\$b (times\$c ?v1) ?v0))) :named a261))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (times\$d ?v0 ?v1)
(times\$d ?v1 ?v0))) :named a262))
(assert (! (forall ((?v0 Int)) (= (uminus\$ (fun_app\$h
word_of_int\$ ?v0)) (fun_app\$h word_of_int\$ (- ?v0)))) :named a263))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$d ?v0 zero\$) (forall ((?v2 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ zero\$) ?v2) (not (fun_app\$d ?v0 ?v2))) (exists ((?v3
Nat\$)) (and (fun_app\$d (fun_app\$g less\$ ?v3) ?v2) (not (fun_app\$d ?v0
?v3))))))) (fun_app\$d ?v0 ?v1))) :named a264))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$b type\$b))) (fun_app\$d (fun_app\$g less\$ ?v1) ?v0)) (less\$a
(of_nat\$b ?v1) (of_nat\$b ?v0)))) :named a265))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$a type\$a))) (fun_app\$d (fun_app\$g less\$ ?v1) ?v0)) (less\$b
(of_nat\$c ?v1) (of_nat\$c ?v0)))) :named a266))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$ type\$))) (fun_app\$d (fun_app\$g less\$ ?v1) ?v0)) (less\$c
(of_nat\$d ?v1) (of_nat\$d ?v0)))) :named a267))
(assert (! (not (msb\$ zero\$a)) :named a268))
(assert (! (= one\$b (fun_app\$h word_of_int\$ 1)) :named a269))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ ?v0) ?v1) (not (= ?v1 zero\$)))) :named a270))
(assert (! (forall ((?v0 Int)) (! (= (- ?v0 ?v0) 0) :pattern
((uuf\$ ?v0)))) :named a271))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$b (minus\$ ?v0)
?v0) zero\$) :pattern ((minus\$ ?v0)))) :named a272))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (! (= (fun_app\$b
(power\$a ?v0) (fun_app\$b suc\$ ?v1)) (fun_app\$b (times\$c ?v0) (fun_app\$b
(power\$a ?v0) ?v1))) :pattern ((fun_app\$b (power\$a ?v0) (fun_app\$b suc\$
?v1))))) :named a273))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (! (= (fun_app\$a
(power\$ ?v0) (fun_app\$b suc\$ ?v1)) (times\$d ?v0 (fun_app\$a (power\$ ?v0)
?v1))) :pattern ((fun_app\$a (power\$ ?v0) (fun_app\$b suc\$ ?v1)))))
:named a274))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_list\$) (?v2
Nat_option_list\$) (?v3 Nat\$)) (=> (and (ial_invar\$ ?v0 ?v1 ?v2)
(member\$ ?v3 (set\$ ?v1))) (fun_app\$d (fun_app\$g less\$ ?v3) (size\$d
?v2)))) :named a275))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) zero\$) false)) :named a276))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b (minus\$
(fun_app\$b (plus\$ ?v0) ?v1)) ?v0) ?v1)) :named a277))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$d (fun_app\$g less\$
?v0) zero\$))) :named a278))
(assert (! (= (power\$b (numeral\$b (bit0\$ one\$a)) (len_of\$b
type\$b)) zero\$a) :named a279))
(assert (! (= (power\$c (numeral\$c (bit0\$ one\$a)) (len_of\$a
type\$a)) zero\$b) :named a280))
(assert (! (= (power\$d (numeral\$d (bit0\$ one\$a)) (len_of\$
type\$)) zero\$c) :named a281))
(assert (! (forall ((?v0 Nat\$)) (=> (=> (= ?v0 zero\$) false)
(fun_app\$d (fun_app\$g less\$ zero\$) ?v0))) :named a282))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (not (fun_app\$d
(fun_app\$g less\$ ?v0) ?v1)) (= (fun_app\$d (fun_app\$g less\$ ?v0)
(fun_app\$b suc\$ ?v1)) (= ?v0 ?v1)))) :named a283))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$) (?v2 Nat\$)) (and
(= (fun_app\$d (test_bit\$ (bitOR\$ ?v0 ?v1)) (fun_app\$b (minus\$ (len_of\$b
type\$b)) (fun_app\$b suc\$ ?v2))) (or (fun_app\$d (test_bit\$ ?v0)
(fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$ ?v2))) (fun_app\$d
(test_bit\$ ?v1) (fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$
?v2))))) (and (= (fun_app\$d (test_bit\$ (bitAND\$ ?v0 ?v1)) (fun_app\$b
(minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$ ?v2))) (and (fun_app\$d
(test_bit\$ ?v0) (fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$
?v2))) (fun_app\$d (test_bit\$ ?v1) (fun_app\$b (minus\$ (len_of\$b type\$b))
(fun_app\$b suc\$ ?v2))))) (and (= (fun_app\$d (test_bit\$ (bitXOR\$ ?v0
?v1)) (fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$ ?v2))) (not
(= (fun_app\$d (test_bit\$ ?v0) (fun_app\$b (minus\$ (len_of\$b type\$b))
(fun_app\$b suc\$ ?v2))) (fun_app\$d (test_bit\$ ?v1) (fun_app\$b (minus\$
(len_of\$b type\$b)) (fun_app\$b suc\$ ?v2)))))) (= (fun_app\$d (test_bit\$
(bitNOT\$ ?v0)) (fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$
?v2))) (not (fun_app\$d (test_bit\$ ?v0) (fun_app\$b (minus\$ (len_of\$b
type\$b)) (fun_app\$b suc\$ ?v2))))))))) :named a284))
(assert (! (forall ((?v0 Finite_2_word\$) (?v1 Finite_2_word\$)
(?v2 Nat\$)) (and (= (fun_app\$d (test_bit\$a (bitOR\$a ?v0 ?v1))
(fun_app\$b (minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$ ?v2))) (or
(fun_app\$d (test_bit\$a ?v0) (fun_app\$b (minus\$ (len_of\$a type\$a))
(fun_app\$b suc\$ ?v2))) (fun_app\$d (test_bit\$a ?v1) (fun_app\$b (minus\$
(len_of\$a type\$a)) (fun_app\$b suc\$ ?v2))))) (and (= (fun_app\$d
(test_bit\$a (bitAND\$a ?v0 ?v1)) (fun_app\$b (minus\$ (len_of\$a type\$a))
(fun_app\$b suc\$ ?v2))) (and (fun_app\$d (test_bit\$a ?v0) (fun_app\$b
(minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$ ?v2))) (fun_app\$d
(test_bit\$a ?v1) (fun_app\$b (minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$
?v2))))) (and (= (fun_app\$d (test_bit\$a (bitXOR\$a ?v0 ?v1)) (fun_app\$b
(minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$ ?v2))) (not (= (fun_app\$d
(test_bit\$a ?v0) (fun_app\$b (minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$
?v2))) (fun_app\$d (test_bit\$a ?v1) (fun_app\$b (minus\$ (len_of\$a
type\$a)) (fun_app\$b suc\$ ?v2)))))) (= (fun_app\$d (test_bit\$a (bitNOT\$a
?v0)) (fun_app\$b (minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$ ?v2))) (not
(fun_app\$d (test_bit\$a ?v0) (fun_app\$b (minus\$ (len_of\$a type\$a))
(fun_app\$b suc\$ ?v2))))))))) :named a285))
(assert (! (forall ((?v0 Finite_3_word\$) (?v1 Finite_3_word\$)
(?v2 Nat\$)) (and (= (fun_app\$d (test_bit\$b (bitOR\$b ?v0 ?v1))
(fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ ?v2))) (or
(fun_app\$d (test_bit\$b ?v0) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ ?v2))) (fun_app\$d (test_bit\$b ?v1) (fun_app\$b (minus\$
(len_of\$ type\$)) (fun_app\$b suc\$ ?v2))))) (and (= (fun_app\$d
(test_bit\$b (bitAND\$b ?v0 ?v1)) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ ?v2))) (and (fun_app\$d (test_bit\$b ?v0) (fun_app\$b
(minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ ?v2))) (fun_app\$d (test_bit\$b
?v1) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ ?v2))))) (and
(= (fun_app\$d (test_bit\$b (bitXOR\$b ?v0 ?v1)) (fun_app\$b (minus\$
(len_of\$ type\$)) (fun_app\$b suc\$ ?v2))) (not (= (fun_app\$d (test_bit\$b
?v0) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ ?v2)))
(fun_app\$d (test_bit\$b ?v1) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ ?v2)))))) (= (fun_app\$d (test_bit\$b (bitNOT\$b ?v0))
(fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ ?v2))) (not
(fun_app\$d (test_bit\$b ?v0) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ ?v2))))))))) :named a286))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat_bool_fun\$))
(=> (and (fun_app\$d (fun_app\$g less\$ ?v0) ?v1) (and (forall ((?v3
Nat\$)) (=> (= ?v1 (fun_app\$b suc\$ ?v3)) (fun_app\$d ?v2 ?v3))) (forall
((?v3 Nat\$)) (=> (and (fun_app\$d (fun_app\$g less\$ ?v3) ?v1) (fun_app\$d
?v2 (fun_app\$b suc\$ ?v3))) (fun_app\$d ?v2 ?v3))))) (fun_app\$d ?v2
?v0))) :named a287))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (! (= (fun_app\$a
(shiftl\$ ?v0) ?v1) (times\$d ?v0 (fun_app\$a (power\$ 2) ?v1))) :pattern
((fun_app\$a (shiftl\$ ?v0) ?v1)))) :named a288))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2
Nat_nat_bool_fun_fun\$)) (=> (and (fun_app\$d (fun_app\$g less\$ ?v0) ?v1)
(and (forall ((?v3 Nat\$)) (fun_app\$d (fun_app\$g ?v2 ?v3) (fun_app\$b
suc\$ ?v3))) (forall ((?v3 Nat\$) (?v4 Nat\$) (?v5 Nat\$)) (=> (and
(fun_app\$d (fun_app\$g less\$ ?v3) ?v4) (and (fun_app\$d (fun_app\$g less\$
?v4) ?v5) (and (fun_app\$d (fun_app\$g ?v2 ?v3) ?v4) (fun_app\$d
(fun_app\$g ?v2 ?v4) ?v5)))) (fun_app\$d (fun_app\$g ?v2 ?v3) ?v5)))))
(fun_app\$d (fun_app\$g ?v2 ?v0) ?v1))) :named a289))
(assert (! (forall ((?v0 L_word\$)) (! (=> (fun_app\$d (fun_app\$g
less\$ (unat\$ ?v0)) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(fun_app\$b (minus\$ (len_of\$b type\$b)) one\$))) (= (snat\$ ?v0) (unat\$
?v0))) :pattern ((snat\$ ?v0)))) :named a290))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (times\$c zero\$)
?v0) zero\$)) :named a291))
(assert (! (forall ((?v0 Int)) (= (* 0 ?v0) 0)) :named a292))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ (fun_app\$b suc\$ ?v0)) (fun_app\$b suc\$ ?v1)) (fun_app\$d
(fun_app\$g less\$ ?v0) ?v1))) :named a293))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (minus\$ zero\$)
?v0) zero\$)) :named a294))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (not
(fun_app\$d (fun_app\$g less\$ ?v0) ?v1)) (fun_app\$d (fun_app\$g less\$ ?v0)
(fun_app\$b suc\$ ?v1))) (= ?v1 ?v0))) :named a295))
(assert (! (forall ((?v0 Nat_nat_bool_fun_fun\$) (?v1 Nat\$) (?v2
Nat\$)) (=> (and (forall ((?v3 Nat\$)) (fun_app\$d (fun_app\$g ?v0 ?v3)
zero\$)) (and (forall ((?v3 Nat\$)) (fun_app\$d (fun_app\$g ?v0 zero\$)
(fun_app\$b suc\$ ?v3))) (forall ((?v3 Nat\$) (?v4 Nat\$)) (=> (fun_app\$d
(fun_app\$g ?v0 ?v3) ?v4) (fun_app\$d (fun_app\$g ?v0 (fun_app\$b suc\$
?v3)) (fun_app\$b suc\$ ?v4)))))) (fun_app\$d (fun_app\$g ?v0 ?v1) ?v2)))
:named a296))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (plus\$ ?v0) zero\$)
?v0)) :named a297))
(assert (! (forall ((?v0 Int)) (= (+ ?v0 0) ?v0)) :named a298))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d
(fun_app\$g less\$ (fun_app\$b suc\$ ?v0)) ?v1) (exists ((?v2 Nat\$)) (and
(= ?v1 (fun_app\$b suc\$ ?v2)) (fun_app\$d (fun_app\$g less\$ ?v0) ?v2)))))
:named a299))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (forall
((?v2 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$ ?v2) (fun_app\$b suc\$ ?v0))
(fun_app\$d ?v1 ?v2))) (and (fun_app\$d ?v1 ?v0) (forall ((?v2 Nat\$)) (=>
(fun_app\$d (fun_app\$g less\$ ?v2) ?v0) (fun_app\$d ?v1 ?v2)))))) :named
a300))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
zero\$) ?v0) (exists ((?v1 Nat\$)) (= ?v0 (fun_app\$b suc\$ ?v1))))) :named
a301))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (not (fun_app\$d
(fun_app\$g less\$ ?v0) ?v1)) (fun_app\$d (fun_app\$g less\$ ?v1) (fun_app\$b
suc\$ ?v0)))) :named a302))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b suc\$ ?v1)) (or (fun_app\$d (fun_app\$g
less\$ ?v0) ?v1) (= ?v0 ?v1)))) :named a303))
(assert (! (not (= (len_of\$b type\$b) zero\$)) :named a304))
(assert (! (not (= (len_of\$a type\$a) zero\$)) :named a305))
(assert (! (not (= (len_of\$ type\$) zero\$)) :named a306))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (minus\$ ?v0)
zero\$) ?v0)) :named a307))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$d (fun_app\$g less\$ ?v0)
(fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v0))) :named a308))
(assert (! (forall ((?v0 Int) (?v1 L_word\$)) (=> (and (member\$a
?v0 (sints\$ (len_of\$b type\$b))) (= (fun_app\$h word_of_int\$ ?v0) ?v1))
(= (fun_app\$i sint\$ ?v1) ?v0))) :named a309))
(assert (! (forall ((?v0 Int) (?v1 Finite_2_word\$)) (=> (and
(member\$a ?v0 (sints\$ (len_of\$a type\$a))) (= (fun_app\$l word_of_int\$a
?v0) ?v1)) (= (fun_app\$j sint\$a ?v1) ?v0))) :named a310))
(assert (! (forall ((?v0 Int) (?v1 Finite_3_word\$)) (=> (and
(member\$a ?v0 (sints\$ (len_of\$ type\$))) (= (fun_app\$m word_of_int\$b
?v0) ?v1)) (= (fun_app\$k sint\$b ?v1) ?v0))) :named a311))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (exists
((?v2 Nat\$)) (and (fun_app\$d (fun_app\$g less\$ ?v2) (fun_app\$b suc\$
?v0)) (fun_app\$d ?v1 ?v2))) (or (fun_app\$d ?v1 ?v0) (exists ((?v2
Nat\$)) (and (fun_app\$d (fun_app\$g less\$ ?v2) ?v0) (fun_app\$d ?v1
?v2)))))) :named a312))
(assert (! (forall ((?v0 Nat\$)) (= (not (fun_app\$d (fun_app\$g
less\$ zero\$) ?v0)) (= ?v0 zero\$))) :named a313))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$d (fun_app\$g less_eq\$c
zero\$) ?v0)) :named a314))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$) (?v2 L_word\$) (?v3
Nat\$)) (=> (and (fun_app\$d (is_aligned\$ ?v0) ?v1) (and (fun_app\$d
(is_aligned\$ ?v2) ?v3) (and (fun_app\$d (fun_app\$g less\$ ?v3) (len_of\$b
type\$b)) (and (member\$b ?v0 (atLeastAtMost\$ ?v2 (plus\$a ?v2 (minus\$a
(power\$b (numeral\$b (bit0\$ one\$a)) ?v3) one\$b)))) (and (fun_app\$d
(fun_app\$g less_eq\$c ?v1) ?v3) (fun_app\$d (fun_app\$g less\$ zero\$)
?v1)))))) (exists ((?v4 Nat\$)) (and (= (minus\$a ?v0 ?v2) (times\$
(of_nat\$b ?v4) (power\$b (numeral\$b (bit0\$ one\$a)) ?v1))) (fun_app\$d
(fun_app\$g less\$ ?v4) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(fun_app\$b (minus\$ ?v3) ?v1))))))) :named a315))
(assert (! (forall ((?v0 Finite_2_word\$) (?v1 Nat\$) (?v2
Finite_2_word\$) (?v3 Nat\$)) (=> (and (fun_app\$d (is_aligned\$a ?v0) ?v1)
(and (fun_app\$d (is_aligned\$a ?v2) ?v3) (and (fun_app\$d (fun_app\$g
less\$ ?v3) (len_of\$a type\$a)) (and (member\$c ?v0 (atLeastAtMost\$a ?v2
(plus\$b ?v2 (minus\$b (power\$c (numeral\$c (bit0\$ one\$a)) ?v3) one\$c))))
(and (fun_app\$d (fun_app\$g less_eq\$c ?v1) ?v3) (fun_app\$d (fun_app\$g
less\$ zero\$) ?v1)))))) (exists ((?v4 Nat\$)) (and (= (minus\$b ?v0 ?v2)
(times\$a (of_nat\$c ?v4) (power\$c (numeral\$c (bit0\$ one\$a)) ?v1)))
(fun_app\$d (fun_app\$g less\$ ?v4) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ ?v3) ?v1))))))) :named a316))
(assert (! (forall ((?v0 Finite_3_word\$) (?v1 Nat\$) (?v2
Finite_3_word\$) (?v3 Nat\$)) (=> (and (fun_app\$d (is_aligned\$b ?v0) ?v1)
(and (fun_app\$d (is_aligned\$b ?v2) ?v3) (and (fun_app\$d (fun_app\$g
less\$ ?v3) (len_of\$ type\$)) (and (member\$d ?v0 (atLeastAtMost\$b ?v2
(plus\$c ?v2 (minus\$c (power\$d (numeral\$d (bit0\$ one\$a)) ?v3) one\$d))))
(and (fun_app\$d (fun_app\$g less_eq\$c ?v1) ?v3) (fun_app\$d (fun_app\$g
less\$ zero\$) ?v1)))))) (exists ((?v4 Nat\$)) (and (= (minus\$c ?v0 ?v2)
(times\$b (of_nat\$d ?v4) (power\$d (numeral\$d (bit0\$ one\$a)) ?v1)))
(fun_app\$d (fun_app\$g less\$ ?v4) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ ?v3) ?v1))))))) :named a317))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ ?v0) ?v1) (fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b
suc\$ ?v1)))) :named a318))
(assert (! (= (of_nat\$b (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (len_of\$b type\$b))) zero\$a) :named a319))
(assert (! (= (of_nat\$c (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (len_of\$a type\$a))) zero\$b) :named a320))
(assert (! (= (of_nat\$d (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (len_of\$ type\$))) zero\$c) :named a321))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b suc\$ ?v1)) (and (=> (fun_app\$d
(fun_app\$g less\$ ?v0) ?v1) false) (=> (= ?v0 ?v1) false))) false))
:named a322))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) (len_of\$b type\$b)) (= (to_bl\$ (power\$b (numeral\$b (bit0\$ one\$a))
?v0)) (append\$ (replicate\$ (fun_app\$b (minus\$ (len_of\$b type\$b))
(fun_app\$b suc\$ ?v0)) false) (cons\$ true (replicate\$ ?v0 false))))))
:named a323))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) (len_of\$a type\$a)) (= (to_bl\$a (power\$c (numeral\$c (bit0\$ one\$a))
?v0)) (append\$ (replicate\$ (fun_app\$b (minus\$ (len_of\$a type\$a))
(fun_app\$b suc\$ ?v0)) false) (cons\$ true (replicate\$ ?v0 false))))))
:named a324))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) (len_of\$ type\$)) (= (to_bl\$b (power\$d (numeral\$d (bit0\$ one\$a))
?v0)) (append\$ (replicate\$ (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ ?v0)) false) (cons\$ true (replicate\$ ?v0 false))))))
:named a325))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) ?v1) (not (= (fun_app\$b suc\$ ?v0) ?v1)))
(fun_app\$d (fun_app\$g less\$ (fun_app\$b suc\$ ?v0)) ?v1))) :named a326))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$b (power\$a ?v0)
zero\$) one\$) :pattern ((power\$a ?v0)))) :named a327))
(assert (! (forall ((?v0 Int)) (! (= (fun_app\$a (power\$ ?v0)
zero\$) 1) :pattern ((power\$ ?v0)))) :named a328))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ (fun_app\$b suc\$ ?v0)) ?v1) (forall ((?v2 Nat\$)) (=>
(and (fun_app\$d (fun_app\$g less\$ ?v0) ?v2) (= ?v1 (fun_app\$b suc\$
?v2))) false))) false)) :named a329))
(assert (! (forall ((?v0 Nat\$) (?v1 Int)) (= (= (bin_sign\$
(fun_app\$ (sbintrunc\$ ?v0) ?v1)) (- 1)) (fun_app\$d (bin_nth\$ ?v1)
?v0))) :named a330))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ (fun_app\$b suc\$ ?v0)) ?v1) (fun_app\$d (fun_app\$g less\$
?v0) ?v1))) :named a331))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) ?v1) (and (=> (= ?v1 (fun_app\$b suc\$ ?v0)) false)
(forall ((?v2 Nat\$)) (=> (and (fun_app\$d (fun_app\$g less\$ ?v0) ?v2) (=
?v1 (fun_app\$b suc\$ ?v2))) false)))) false)) :named a332))
(assert (! (forall ((?v0 Nat\$)) (=> (not (= ?v0 zero\$)) (exists
((?v1 Nat\$)) (= ?v0 (fun_app\$b suc\$ ?v1))))) :named a333))
(assert (! (forall ((?v0 Num\$)) (not (= zero\$ (numeral\$ ?v0))))
:named a334))
(assert (! (forall ((?v0 Num\$)) (not (= 0 (numeral\$a ?v0))))
:named a335))
(assert (! (forall ((?v0 Nat\$)) (=> (and (=> (= ?v0 zero\$)
false) (forall ((?v1 Nat\$)) (=> (= ?v0 (fun_app\$b suc\$ ?v1)) false)))
false)) :named a336))
(assert (! (forall ((?v0 Nat\$) (?v1 L_word\$) (?v2 Nat\$)) (=>
(and (less\$a (times\$ (power\$b (numeral\$b (bit0\$ one\$a)) ?v0) ?v1)
(power\$b (numeral\$b (bit0\$ one\$a)) ?v2)) (less\$a ?v1 (power\$b
(numeral\$b (bit0\$ one\$a)) (fun_app\$b (minus\$ (len_of\$b type\$b)) ?v0))))
(less\$a ?v1 (power\$b (numeral\$b (bit0\$ one\$a)) (fun_app\$b (minus\$ ?v2)
?v0))))) :named a337))
(assert (! (forall ((?v0 Nat\$) (?v1 Finite_2_word\$) (?v2 Nat\$))
(=> (and (less\$b (times\$a (power\$c (numeral\$c (bit0\$ one\$a)) ?v0) ?v1)
(power\$c (numeral\$c (bit0\$ one\$a)) ?v2)) (less\$b ?v1 (power\$c
(numeral\$c (bit0\$ one\$a)) (fun_app\$b (minus\$ (len_of\$a type\$a)) ?v0))))
(less\$b ?v1 (power\$c (numeral\$c (bit0\$ one\$a)) (fun_app\$b (minus\$ ?v2)
?v0))))) :named a338))
(assert (! (forall ((?v0 Nat\$) (?v1 Finite_3_word\$) (?v2 Nat\$))
(=> (and (less\$c (times\$b (power\$d (numeral\$d (bit0\$ one\$a)) ?v0) ?v1)
(power\$d (numeral\$d (bit0\$ one\$a)) ?v2)) (less\$c ?v1 (power\$d
(numeral\$d (bit0\$ one\$a)) (fun_app\$b (minus\$ (len_of\$ type\$)) ?v0))))
(less\$c ?v1 (power\$d (numeral\$d (bit0\$ one\$a)) (fun_app\$b (minus\$ ?v2)
?v0))))) :named a339))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$b suc\$
?v0)))) :named a340))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) (len_of\$b type\$b)) (less\$a (of_nat\$b ?v0) (power\$b (numeral\$b
(bit0\$ one\$a)) ?v0)))) :named a341))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) (len_of\$a type\$a)) (less\$b (of_nat\$c ?v0) (power\$c (numeral\$c
(bit0\$ one\$a)) ?v0)))) :named a342))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) (len_of\$ type\$)) (less\$c (of_nat\$d ?v0) (power\$d (numeral\$d (bit0\$
one\$a)) ?v0)))) :named a343))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 L_word\$)) (=
(fun_app\$d ?v0 (unat\$ ?v1)) (not (exists ((?v2 Nat\$)) (and (= (of_nat\$b
?v2) ?v1) (and (fun_app\$d (fun_app\$g less\$ ?v2) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (len_of\$b type\$b))) (not (fun_app\$d ?v0
?v2)))))))) :named a344))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Finite_2_word\$)) (=
(fun_app\$d ?v0 (unat\$a ?v1)) (not (exists ((?v2 Nat\$)) (and (=
(of_nat\$c ?v2) ?v1) (and (fun_app\$d (fun_app\$g less\$ ?v2) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$a type\$a))) (not (fun_app\$d
?v0 ?v2)))))))) :named a345))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Finite_3_word\$)) (=
(fun_app\$d ?v0 (unat\$b ?v1)) (not (exists ((?v2 Nat\$)) (and (=
(of_nat\$d ?v2) ?v1) (and (fun_app\$d (fun_app\$g less\$ ?v2) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$ type\$))) (not (fun_app\$d
?v0 ?v2)))))))) :named a346))
(assert (! (forall ((?v0 Num\$)) (! (= (less\$d one\$a (bit0\$ ?v0))
true) :pattern ((bit0\$ ?v0)))) :named a347))
(assert (! (forall ((?v0 Nat\$) (?v1 L_word\$)) (=> (and (=
(of_nat\$b ?v0) ?v1) (fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$b type\$b)))) (= (unat\$ ?v1)
?v0))) :named a348))
(assert (! (forall ((?v0 Nat\$) (?v1 Finite_2_word\$)) (=> (and (=
(of_nat\$c ?v0) ?v1) (fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$a type\$a)))) (= (unat\$a ?v1)
?v0))) :named a349))
(assert (! (forall ((?v0 Nat\$) (?v1 Finite_3_word\$)) (=> (and (=
(of_nat\$d ?v0) ?v1) (fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) (len_of\$ type\$)))) (= (unat\$b ?v1)
?v0))) :named a350))
(assert (! (forall ((?v0 Nat\$)) (=> (= zero\$ (fun_app\$b suc\$
?v0)) false)) :named a351))
(assert (! (forall ((?v0 Nat\$) (?v1 L_word\$)) (=> (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$b type\$b))) (= (= (unat\$ ?v1) ?v0) (= ?v1 (of_nat\$b ?v0)))))
:named a352))
(assert (! (forall ((?v0 Nat\$) (?v1 Finite_2_word\$)) (=>
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (len_of\$a type\$a))) (= (= (unat\$a ?v1) ?v0) (= ?v1 (of_nat\$c
?v0))))) :named a353))
(assert (! (forall ((?v0 Nat\$) (?v1 Finite_3_word\$)) (=>
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (len_of\$ type\$))) (= (= (unat\$b ?v1) ?v0) (= ?v1 (of_nat\$d
?v0))))) :named a354))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$a (power\$
(- ?v0 ?v1)) (numeral\$ (bit0\$ one\$a))) (fun_app\$a (power\$ (- ?v1 ?v0))
(numeral\$ (bit0\$ one\$a))))) :named a355))
(assert (! (forall ((?v0 Nat\$)) (=> (= (fun_app\$b suc\$ ?v0)
zero\$) false)) :named a356))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 L_word\$)) (=
(fun_app\$d ?v0 (unat\$ ?v1)) (forall ((?v2 Nat\$)) (=> (and (= (of_nat\$b
?v2) ?v1) (fun_app\$d (fun_app\$g less\$ ?v2) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (len_of\$b type\$b)))) (fun_app\$d ?v0 ?v2)))))
:named a357))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Finite_2_word\$)) (=
(fun_app\$d ?v0 (unat\$a ?v1)) (forall ((?v2 Nat\$)) (=> (and (= (of_nat\$c
?v2) ?v1) (fun_app\$d (fun_app\$g less\$ ?v2) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (len_of\$a type\$a)))) (fun_app\$d ?v0 ?v2)))))
:named a358))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Finite_3_word\$)) (=
(fun_app\$d ?v0 (unat\$b ?v1)) (forall ((?v2 Nat\$)) (=> (and (= (of_nat\$d
?v2) ?v1) (fun_app\$d (fun_app\$g less\$ ?v2) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) (len_of\$ type\$)))) (fun_app\$d ?v0 ?v2)))))
:named a359))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$d ?v0 ?v1) (forall ((?v2 Nat\$)) (=> (fun_app\$d ?v0 (fun_app\$b
suc\$ ?v2)) (fun_app\$d ?v0 ?v2)))) (fun_app\$d ?v0 zero\$))) :named a360))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ ?v0) ?v1) (= (fun_app\$b suc\$ (fun_app\$b (minus\$ ?v1)
(fun_app\$b suc\$ ?v0))) (fun_app\$b (minus\$ ?v1) ?v0)))) :named a361))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b (plus\$
?v0) ?v1) (fun_app\$b (plus\$ ?v1) ?v0))) :named a362))
(assert (! (forall ((?v0 Nat\$) (?v1 L_word\$)) (=> (and
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (len_of\$b type\$b))) (fun_app\$d (fun_app\$g less\$ (unat\$ ?v1))
?v0)) (less\$a ?v1 (of_nat\$b ?v0)))) :named a363))
(assert (! (forall ((?v0 Nat\$) (?v1 Finite_2_word\$)) (=> (and
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (len_of\$a type\$a))) (fun_app\$d (fun_app\$g less\$ (unat\$a ?v1))
?v0)) (less\$b ?v1 (of_nat\$c ?v0)))) :named a364))
(assert (! (forall ((?v0 Nat\$) (?v1 Finite_3_word\$)) (=> (and
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (len_of\$ type\$))) (fun_app\$d (fun_app\$g less\$ (unat\$b ?v1))
?v0)) (less\$c ?v1 (of_nat\$d ?v0)))) :named a365))
(assert (! (forall ((?v0 L_word\$)) (! (= (msb\$ ?v0) (<=
(fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$b type\$b)) one\$))
(uint\$ ?v0))) :pattern ((msb\$ ?v0)))) :named a366))
(assert (! (forall ((?v0 Finite_2_word\$)) (! (= (msb\$a ?v0) (<=
(fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$a type\$a)) one\$))
(uint\$a ?v0))) :pattern ((msb\$a ?v0)))) :named a367))
(assert (! (forall ((?v0 Finite_3_word\$)) (! (= (msb\$b ?v0) (<=
(fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$)) one\$))
(uint\$b ?v0))) :pattern ((msb\$b ?v0)))) :named a368))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (plus\$ zero\$) ?v0)
?v0)) :named a369))
(assert (! (forall ((?v0 Int)) (= (+ 0 ?v0) ?v0)) :named a370))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= ?v0 (fun_app\$b
suc\$ ?v1)) (not (= ?v0 zero\$)))) :named a371))
(assert (! (forall ((?v0 Nat\$)) (= (less\$a zero\$a (power\$b
(numeral\$b (bit0\$ one\$a)) ?v0)) (fun_app\$d (fun_app\$g less\$ ?v0)
(len_of\$b type\$b)))) :named a372))
(assert (! (forall ((?v0 Nat\$)) (= (less\$b zero\$b (power\$c
(numeral\$c (bit0\$ one\$a)) ?v0)) (fun_app\$d (fun_app\$g less\$ ?v0)
(len_of\$a type\$a)))) :named a373))
(assert (! (forall ((?v0 Nat\$)) (= (less\$c zero\$c (power\$d
(numeral\$d (bit0\$ one\$a)) ?v0)) (fun_app\$d (fun_app\$g less\$ ?v0)
(len_of\$ type\$)))) :named a374))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (power\$a ?v0) (fun_app\$b (plus\$ ?v1) ?v2)) (fun_app\$b
(times\$c (fun_app\$b (power\$a ?v0) ?v1)) (fun_app\$b (power\$a ?v0)
?v2)))) :named a375))
(assert (! (forall ((?v0 Int) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$a (power\$ ?v0) (fun_app\$b (plus\$ ?v1) ?v2)) (times\$d
(fun_app\$a (power\$ ?v0) ?v1) (fun_app\$a (power\$ ?v0) ?v2)))) :named
a376))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$b suc\$
?v0)))) :named a377))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ ?v0) ?v1) (fun_app\$d (fun_app\$g less_eq\$c (fun_app\$b
suc\$ ?v0)) ?v1))) :named a378))
(assert (! (forall ((?v0 L_word\$)) (< (fun_app\$i sint\$ ?v0)
(fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$b type\$b)) one\$))))
:named a379))
(assert (! (forall ((?v0 Finite_2_word\$)) (< (fun_app\$j sint\$a
?v0) (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$a type\$a))
one\$)))) :named a380))
(assert (! (forall ((?v0 Finite_3_word\$)) (< (fun_app\$k sint\$b
?v0) (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$ type\$)) one\$))))
:named a381))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$b suc\$ ?v0)
zero\$))) :named a382))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$b suc\$ ?v0)
zero\$))) :named a383))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$b suc\$
?v0)))) :named a384))
(assert (! (forall ((?v0 Num\$)) (not (fun_app\$d (fun_app\$g less\$
(numeral\$ ?v0)) zero\$))) :named a385))
(assert (! (forall ((?v0 Num\$)) (not (< (numeral\$a ?v0) 0)))
:named a386))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(fun_app\$d (fun_app\$g less\$ ?v0) ?v1) (fun_app\$d (fun_app\$g less\$
(fun_app\$b (minus\$ ?v0) ?v2)) ?v1))) :named a387))
(assert (! (fun_app\$d (fun_app\$g less\$ zero\$) (numeral\$ (bit0\$
one\$a))) :named a388))
(assert (! (forall ((?v0 Nat\$) (?v1 L_word\$)) (=> (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$b type\$b))) (= (fun_app\$d (fun_app\$g less\$ (unat\$ ?v1)) ?v0)
(less\$a ?v1 (of_nat\$b ?v0))))) :named a389))
(assert (! (forall ((?v0 Nat\$) (?v1 Finite_2_word\$)) (=>
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (len_of\$a type\$a))) (= (fun_app\$d (fun_app\$g less\$ (unat\$a
?v1)) ?v0) (less\$b ?v1 (of_nat\$c ?v0))))) :named a390))
(assert (! (forall ((?v0 Nat\$) (?v1 Finite_3_word\$)) (=>
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (len_of\$ type\$))) (= (fun_app\$d (fun_app\$g less\$ (unat\$b ?v1))
?v0) (less\$c ?v1 (of_nat\$d ?v0))))) :named a391))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$d (fun_app\$g less\$ ?v0) ?v1) (fun_app\$d (fun_app\$g less\$ ?v0)
?v2)) (fun_app\$d (fun_app\$g less\$ (fun_app\$b (minus\$ ?v2) ?v1))
(fun_app\$b (minus\$ ?v2) ?v0)))) :named a392))
(assert (! (forall ((?v0 Int)) (not (< (fun_app\$a (power\$ ?v0)
(numeral\$ (bit0\$ one\$a))) 0))) :named a393))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (plus\$a (fun_app\$h
word_of_int\$ ?v0) (fun_app\$h word_of_int\$ ?v1)) (fun_app\$h word_of_int\$
(+ ?v0 ?v1)))) :named a394))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (=
(fun_app\$b (minus\$ ?v0) ?v1) zero\$) (= (fun_app\$b (minus\$ ?v1) ?v0)
zero\$)) (= ?v0 ?v1))) :named a395))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$i sint\$ (numeral\$b
?v0)) (fun_app\$ (sbintrunc\$ (fun_app\$b (minus\$ (len_of\$b type\$b))
one\$)) (numeral\$a ?v0)))) :named a396))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$j sint\$a (numeral\$c
?v0)) (fun_app\$ (sbintrunc\$ (fun_app\$b (minus\$ (len_of\$a type\$a))
one\$)) (numeral\$a ?v0)))) :named a397))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$k sint\$b (numeral\$d
?v0)) (fun_app\$ (sbintrunc\$ (fun_app\$b (minus\$ (len_of\$ type\$)) one\$))
(numeral\$a ?v0)))) :named a398))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (fun_app\$d ?v0 ?v1) (forall ((?v3 Nat\$)) (=> (fun_app\$d ?v0
(fun_app\$b suc\$ ?v3)) (fun_app\$d ?v0 ?v3)))) (fun_app\$d ?v0 (fun_app\$b
(minus\$ ?v1) ?v2)))) :named a399))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (= (power\$b (fun_app\$h
word_of_int\$ ?v0) ?v1) (fun_app\$h word_of_int\$ (fun_app\$a (power\$ ?v0)
?v1)))) :named a400))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less_eq\$c ?v0) ?v1) (fun_app\$d (fun_app\$g less_eq\$c ?v1)
?v0)) (= ?v0 ?v1))) :named a401))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$d (fun_app\$g less\$
(fun_app\$b of_nat\$a ?v0)) zero\$))) :named a402))
(assert (! (forall ((?v0 Nat\$)) (not (< (fun_app\$a of_nat\$ ?v0)
0))) :named a403))
(assert (! (forall ((?v0 Nat_nat_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (fun_app\$d (fun_app\$g less\$ (fun_app\$b ?v0
?v3)) (fun_app\$b ?v0 (fun_app\$b suc\$ ?v3)))) (= (fun_app\$d (fun_app\$g
less\$ (fun_app\$b ?v0 ?v1)) (fun_app\$b ?v0 ?v2)) (fun_app\$d (fun_app\$g
less\$ ?v1) ?v2)))) :named a404))
(assert (! (forall ((?v0 Nat_int_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (< (fun_app\$a ?v0 ?v3) (fun_app\$a ?v0
(fun_app\$b suc\$ ?v3)))) (= (< (fun_app\$a ?v0 ?v1) (fun_app\$a ?v0 ?v2))
(fun_app\$d (fun_app\$g less\$ ?v1) ?v2)))) :named a405))
(assert (! (forall ((?v0 Nat_num_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (less\$d (fun_app\$n ?v0 ?v3) (fun_app\$n ?v0
(fun_app\$b suc\$ ?v3)))) (= (less\$d (fun_app\$n ?v0 ?v1) (fun_app\$n ?v0
?v2)) (fun_app\$d (fun_app\$g less\$ ?v1) ?v2)))) :named a406))
(assert (! (forall ((?v0 Num\$)) (= (scast\$ (numeral\$b ?v0))
(fun_app\$h word_of_int\$ (fun_app\$ (sbintrunc\$ (fun_app\$b (minus\$
(len_of\$b type\$b)) (fun_app\$b suc\$ zero\$))) (numeral\$a ?v0))))) :named
a407))
(assert (! (forall ((?v0 Num\$)) (= (scast\$a (numeral\$c ?v0))
(fun_app\$h word_of_int\$ (fun_app\$ (sbintrunc\$ (fun_app\$b (minus\$
(len_of\$a type\$a)) (fun_app\$b suc\$ zero\$))) (numeral\$a ?v0))))) :named
a408))
(assert (! (forall ((?v0 Num\$)) (= (scast\$b (numeral\$d ?v0))
(fun_app\$h word_of_int\$ (fun_app\$ (sbintrunc\$ (fun_app\$b (minus\$
(len_of\$ type\$)) (fun_app\$b suc\$ zero\$))) (numeral\$a ?v0))))) :named
a409))
(assert (! (forall ((?v0 Nat_nat_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (fun_app\$d (fun_app\$g less\$ (fun_app\$b
?v0 ?v3)) (fun_app\$b ?v0 (fun_app\$b suc\$ ?v3)))) (fun_app\$d (fun_app\$g
less\$ ?v1) ?v2)) (fun_app\$d (fun_app\$g less\$ (fun_app\$b ?v0 ?v1))
(fun_app\$b ?v0 ?v2)))) :named a410))
(assert (! (forall ((?v0 Nat_int_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (< (fun_app\$a ?v0 ?v3) (fun_app\$a ?v0
(fun_app\$b suc\$ ?v3)))) (fun_app\$d (fun_app\$g less\$ ?v1) ?v2)) (<
(fun_app\$a ?v0 ?v1) (fun_app\$a ?v0 ?v2)))) :named a411))
(assert (! (forall ((?v0 Nat_num_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (less\$d (fun_app\$n ?v0 ?v3) (fun_app\$n
?v0 (fun_app\$b suc\$ ?v3)))) (fun_app\$d (fun_app\$g less\$ ?v1) ?v2))
(less\$d (fun_app\$n ?v0 ?v1) (fun_app\$n ?v0 ?v2)))) :named a412))
(assert (! (= (fun_app\$h word_of_int\$ (fun_app\$a (power\$ 2)
(len_of\$b type\$b))) zero\$a) :named a413))
(assert (! (= (word_of_int\$c (fun_app\$a (power\$ 2) (len_of\$c
type\$c))) zero\$d) :named a414))
(assert (! (= (fun_app\$l word_of_int\$a (fun_app\$a (power\$ 2)
(len_of\$a type\$a))) zero\$b) :named a415))
(assert (! (= (fun_app\$m word_of_int\$b (fun_app\$a (power\$ 2)
(len_of\$ type\$))) zero\$c) :named a416))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ ?v1) ?v2))) (fun_app\$d (fun_app\$g less_eq\$c
?v2) ?v1)) (fun_app\$d (fun_app\$g less\$ (fun_app\$b (times\$c (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) ?v2)) ?v0)) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) ?v1)))) :named a417))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ (fun_app\$b of_nat\$a ?v0)) (fun_app\$b of_nat\$a ?v1))
(fun_app\$d (fun_app\$g less\$ ?v0) ?v1))) :named a418))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (< (fun_app\$a
of_nat\$ ?v0) (fun_app\$a of_nat\$ ?v1)) (fun_app\$d (fun_app\$g less\$ ?v0)
?v1))) :named a419))
(assert (! (forall ((?v0 L_word\$)) (=> (less\$a ?v0 (power\$b
(numeral\$b (bit0\$ one\$a)) (fun_app\$b (minus\$ (len_of\$b type\$b)) one\$)))
(word_sle\$ zero\$a ?v0))) :named a420))
(assert (! (forall ((?v0 Finite_2_word\$)) (=> (less\$b ?v0
(power\$c (numeral\$c (bit0\$ one\$a)) (fun_app\$b (minus\$ (len_of\$a
type\$a)) one\$))) (word_sle\$a zero\$b ?v0))) :named a421))
(assert (! (forall ((?v0 Finite_3_word\$)) (=> (less\$c ?v0
(power\$d (numeral\$d (bit0\$ one\$a)) (fun_app\$b (minus\$ (len_of\$ type\$))
one\$))) (word_sle\$b zero\$c ?v0))) :named a422))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ ?v0) ?v1) (fun_app\$d (fun_app\$g less\$ (fun_app\$b
of_nat\$a ?v0)) (fun_app\$b of_nat\$a ?v1)))) :named a423))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$d
(fun_app\$g less\$ ?v0) ?v1) (< (fun_app\$a of_nat\$ ?v0) (fun_app\$a
of_nat\$ ?v1)))) :named a424))
(assert (! (forall ((?v0 Nat\$)) (member\$ ?v0 top\$a)) :named
a425))
(assert (! (forall ((?v0 Int)) (member\$a ?v0 top\$)) :named
a426))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$b of_nat\$a
(fun_app\$b suc\$ ?v0)) zero\$))) :named a427))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$a of_nat\$
(fun_app\$b suc\$ ?v0)) 0))) :named a428))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) (len_of\$b type\$b)) (not (= (power\$b (numeral\$b (bit0\$ one\$a)) ?v0)
zero\$a)))) :named a429))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) (len_of\$a type\$a)) (not (= (power\$c (numeral\$c (bit0\$ one\$a)) ?v0)
zero\$b)))) :named a430))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) (len_of\$ type\$)) (not (= (power\$d (numeral\$d (bit0\$ one\$a)) ?v0)
zero\$c)))) :named a431))
(assert (! (forall ((?v0 L_word\$)) (= (word_sle\$c zero\$e (ucast\$
?v0)) (< (uint\$ ?v0) (fun_app\$a (power\$ 2) (fun_app\$b (minus\$ (len_of\$b
type\$b)) one\$))))) :named a432))
(assert (! (forall ((?v0 Finite_2_word\$)) (= (word_sle\$d zero\$f
(ucast\$a ?v0)) (< (uint\$a ?v0) (fun_app\$a (power\$ 2) (fun_app\$b (minus\$
(len_of\$a type\$a)) one\$))))) :named a433))
(assert (! (forall ((?v0 Finite_3_word\$)) (= (word_sle\$e zero\$g
(ucast\$b ?v0)) (< (uint\$b ?v0) (fun_app\$a (power\$ 2) (fun_app\$b (minus\$
(len_of\$ type\$)) one\$))))) :named a434))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b suc\$ ?v1)) (or (= ?v0 zero\$) (exists
((?v2 Nat\$)) (and (= ?v0 (fun_app\$b suc\$ ?v2)) (fun_app\$d (fun_app\$g
less\$ ?v2) ?v1)))))) :named a435))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (minus\$a (fun_app\$h
word_of_int\$ ?v0) (fun_app\$h word_of_int\$ ?v1)) (fun_app\$h word_of_int\$
(- ?v0 ?v1)))) :named a436))
(assert (! (forall ((?v0 Nat\$) (?v1 L_word\$)) (=> (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b suc\$ (unat\$ ?v1))) (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a)))
(len_of\$b type\$b))))) :named a437))
(assert (! (forall ((?v0 Nat\$) (?v1 Finite_2_word\$)) (=>
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b suc\$ (unat\$a ?v1)))
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (len_of\$a type\$a))))) :named a438))
(assert (! (forall ((?v0 Nat\$) (?v1 Finite_3_word\$)) (=>
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b suc\$ (unat\$b ?v1)))
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (len_of\$ type\$))))) :named a439))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (forall
((?v2 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$ ?v2) (fun_app\$b suc\$ ?v0))
(fun_app\$d ?v1 ?v2))) (and (fun_app\$d ?v1 zero\$) (forall ((?v2 Nat\$))
(=> (fun_app\$d (fun_app\$g less\$ ?v2) ?v0) (fun_app\$d ?v1 (fun_app\$b
suc\$ ?v2))))))) :named a440))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (fun_app\$g
less_eq\$c ?v0) zero\$) (= ?v0 zero\$))) :named a441))
(assert (! (forall ((?v0 Num\$)) (= (nat\$ (numeral\$a ?v0))
(numeral\$ ?v0))) :named a442))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b (plus\$
?v0) (fun_app\$b suc\$ ?v1)) (fun_app\$b suc\$ (fun_app\$b (plus\$ ?v0)
?v1)))) :named a443))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (fun_app\$g less\$
zero\$) ?v0) (exists ((?v1 Nat\$)) (= ?v0 (fun_app\$b suc\$ ?v1))))) :named
a444))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ ?v1) ?v2))) (fun_app\$d (fun_app\$g less_eq\$c
?v2) ?v1)) (fun_app\$d (fun_app\$g less\$ (fun_app\$b (times\$c ?v0)
(fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v2))) (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) ?v1)))) :named a445))
(assert (! (not (= (len_of\$b type\$b) (fun_app\$b suc\$ zero\$)))
:named a446))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (exists
((?v2 Nat\$)) (and (fun_app\$d (fun_app\$g less\$ ?v2) (fun_app\$b suc\$
?v0)) (fun_app\$d ?v1 ?v2))) (or (fun_app\$d ?v1 zero\$) (exists ((?v2
Nat\$)) (and (fun_app\$d (fun_app\$g less\$ ?v2) ?v0) (fun_app\$d ?v1
(fun_app\$b suc\$ ?v2))))))) :named a447))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (len_of\$b type\$b)) (fun_app\$d (fun_app\$g less\$
?v1) (len_of\$b type\$b))) (= (= (power\$b (numeral\$b (bit0\$ one\$a)) ?v0)
(power\$b (numeral\$b (bit0\$ one\$a)) ?v1)) (= ?v0 ?v1)))) :named a448))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (len_of\$a type\$a)) (fun_app\$d (fun_app\$g less\$
?v1) (len_of\$a type\$a))) (= (= (power\$c (numeral\$c (bit0\$ one\$a)) ?v0)
(power\$c (numeral\$c (bit0\$ one\$a)) ?v1)) (= ?v0 ?v1)))) :named a449))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$d
(fun_app\$g less\$ ?v0) (len_of\$ type\$)) (fun_app\$d (fun_app\$g less\$ ?v1)
(len_of\$ type\$))) (= (= (power\$d (numeral\$d (bit0\$ one\$a)) ?v0)
(power\$d (numeral\$d (bit0\$ one\$a)) ?v1)) (= ?v0 ?v1)))) :named a450))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$)) (= (to_bl\$
(bitXOR\$ ?v0 (power\$b (numeral\$b (bit0\$ one\$a)) ?v1))) (ite (fun_app\$d
(fun_app\$g less\$ ?v1) (len_of\$b type\$b)) (append\$ (take\$ (fun_app\$b
(minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$ ?v1)) (to_bl\$ ?v0)) (cons\$
(not (fun_app\$d (nth\$ (rev\$ (to_bl\$ ?v0))) ?v1)) (drop\$ (fun_app\$b
(minus\$ (len_of\$b type\$b)) ?v1) (to_bl\$ ?v0)))) (to_bl\$ ?v0)))) :named
a451))
(assert (! (forall ((?v0 Finite_2_word\$) (?v1 Nat\$)) (= (to_bl\$a
(bitXOR\$a ?v0 (power\$c (numeral\$c (bit0\$ one\$a)) ?v1))) (ite (fun_app\$d
(fun_app\$g less\$ ?v1) (len_of\$a type\$a)) (append\$ (take\$ (fun_app\$b
(minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$ ?v1)) (to_bl\$a ?v0)) (cons\$
(not (fun_app\$d (nth\$ (rev\$ (to_bl\$a ?v0))) ?v1)) (drop\$ (fun_app\$b
(minus\$ (len_of\$a type\$a)) ?v1) (to_bl\$a ?v0)))) (to_bl\$a ?v0))))
:named a452))
(assert (! (forall ((?v0 Finite_3_word\$) (?v1 Nat\$)) (= (to_bl\$b
(bitXOR\$b ?v0 (power\$d (numeral\$d (bit0\$ one\$a)) ?v1))) (ite (fun_app\$d
(fun_app\$g less\$ ?v1) (len_of\$ type\$)) (append\$ (take\$ (fun_app\$b
(minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ ?v1)) (to_bl\$b ?v0)) (cons\$
(not (fun_app\$d (nth\$ (rev\$ (to_bl\$b ?v0))) ?v1)) (drop\$ (fun_app\$b
(minus\$ (len_of\$ type\$)) ?v1) (to_bl\$b ?v0)))) (to_bl\$b ?v0)))) :named
a453))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (fun_app\$d (fun_app\$g
less\$ (fun_app\$b (minus\$ ?v0) ?v1)) (fun_app\$b suc\$ ?v0))) :named
a454))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (times\$c (numeral\$
one\$a)) ?v0) ?v0)) :named a455))
(assert (! (forall ((?v0 Int)) (= (* 1 ?v0) ?v0)) :named a456))
(assert (! (forall ((?v0 Nat\$) (?v1 L_word\$)) (=> (and
(fun_app\$d (fun_app\$g less\$ ?v0) (len_of\$b type\$b)) (less\$a ?v1
(power\$b (numeral\$b (bit0\$ one\$a)) (fun_app\$b (minus\$ (len_of\$b
type\$b)) ?v0)))) (= (shiftr\$ (shiftl\$a ?v1 ?v0) ?v0) ?v1))) :named
a457))
(assert (! (forall ((?v0 Nat\$) (?v1 Finite_2_word\$)) (=> (and
(fun_app\$d (fun_app\$g less\$ ?v0) (len_of\$a type\$a)) (less\$b ?v1
(power\$c (numeral\$c (bit0\$ one\$a)) (fun_app\$b (minus\$ (len_of\$a
type\$a)) ?v0)))) (= (shiftr\$a (shiftl\$b ?v1 ?v0) ?v0) ?v1))) :named
a458))
(assert (! (forall ((?v0 Nat\$) (?v1 Finite_3_word\$)) (=> (and
(fun_app\$d (fun_app\$g less\$ ?v0) (len_of\$ type\$)) (less\$c ?v1 (power\$d
(numeral\$d (bit0\$ one\$a)) (fun_app\$b (minus\$ (len_of\$ type\$)) ?v0))))
(= (shiftr\$b (shiftl\$c ?v1 ?v0) ?v0) ?v1))) :named a459))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
zero\$) ?v0) (= (fun_app\$b (power\$a zero\$) ?v0) zero\$))) :named a460))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
zero\$) ?v0) (= (fun_app\$a (power\$ 0) ?v0) 0))) :named a461))
(assert (! (forall ((?v0 Int)) (= (- 0 ?v0) (- ?v0))) :named
a462))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
zero\$) ?v0) (= ?v0 (fun_app\$b suc\$ (fun_app\$b (minus\$ ?v0) one\$)))))
:named a463))
(assert (! (forall ((?v0 Nat\$)) (< 0 (fun_app\$a (power\$ 2)
?v0))) :named a464))
(assert (! (forall ((?v0 L_word\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(and (less\$a ?v0 (power\$b (numeral\$b (bit0\$ one\$a)) (fun_app\$b (minus\$
?v1) ?v2))) (and (fun_app\$d (fun_app\$g less_eq\$c ?v2) ?v1) (fun_app\$d
(fun_app\$g less\$ ?v1) (len_of\$b type\$b)))) (less\$a (times\$ (power\$b
(numeral\$b (bit0\$ one\$a)) ?v2) ?v0) (power\$b (numeral\$b (bit0\$ one\$a))
?v1)))) :named a465))
(assert (! (forall ((?v0 Finite_2_word\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (less\$b ?v0 (power\$c (numeral\$c (bit0\$ one\$a)) (fun_app\$b
(minus\$ ?v1) ?v2))) (and (fun_app\$d (fun_app\$g less_eq\$c ?v2) ?v1)
(fun_app\$d (fun_app\$g less\$ ?v1) (len_of\$a type\$a)))) (less\$b (times\$a
(power\$c (numeral\$c (bit0\$ one\$a)) ?v2) ?v0) (power\$c (numeral\$c (bit0\$
one\$a)) ?v1)))) :named a466))
(assert (! (forall ((?v0 Finite_3_word\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (less\$c ?v0 (power\$d (numeral\$d (bit0\$ one\$a)) (fun_app\$b
(minus\$ ?v1) ?v2))) (and (fun_app\$d (fun_app\$g less_eq\$c ?v2) ?v1)
(fun_app\$d (fun_app\$g less\$ ?v1) (len_of\$ type\$)))) (less\$c (times\$b
(power\$d (numeral\$d (bit0\$ one\$a)) ?v2) ?v0) (power\$d (numeral\$d (bit0\$
one\$a)) ?v1)))) :named a467))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (and (=
(fun_app\$d (test_bit\$ (bitOR\$ ?v0 ?v1)) (fun_app\$b (minus\$ (len_of\$b
type\$b)) (fun_app\$b suc\$ zero\$))) (or (fun_app\$d (test_bit\$ ?v0)
(fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$ zero\$)))
(fun_app\$d (test_bit\$ ?v1) (fun_app\$b (minus\$ (len_of\$b type\$b))
(fun_app\$b suc\$ zero\$))))) (and (= (fun_app\$d (test_bit\$ (bitAND\$ ?v0
?v1)) (fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$ zero\$)))
(and (fun_app\$d (test_bit\$ ?v0) (fun_app\$b (minus\$ (len_of\$b type\$b))
(fun_app\$b suc\$ zero\$))) (fun_app\$d (test_bit\$ ?v1) (fun_app\$b (minus\$
(len_of\$b type\$b)) (fun_app\$b suc\$ zero\$))))) (and (= (fun_app\$d
(test_bit\$ (bitXOR\$ ?v0 ?v1)) (fun_app\$b (minus\$ (len_of\$b type\$b))
(fun_app\$b suc\$ zero\$))) (not (= (fun_app\$d (test_bit\$ ?v0) (fun_app\$b
(minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$ zero\$))) (fun_app\$d
(test_bit\$ ?v1) (fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$
zero\$)))))) (= (fun_app\$d (test_bit\$ (bitNOT\$ ?v0)) (fun_app\$b (minus\$
(len_of\$b type\$b)) (fun_app\$b suc\$ zero\$))) (not (fun_app\$d (test_bit\$
?v0) (fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$
zero\$))))))))) :named a468))
(assert (! (forall ((?v0 Finite_2_word\$) (?v1 Finite_2_word\$))
(and (= (fun_app\$d (test_bit\$a (bitOR\$a ?v0 ?v1)) (fun_app\$b (minus\$
(len_of\$a type\$a)) (fun_app\$b suc\$ zero\$))) (or (fun_app\$d (test_bit\$a
?v0) (fun_app\$b (minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$ zero\$)))
(fun_app\$d (test_bit\$a ?v1) (fun_app\$b (minus\$ (len_of\$a type\$a))
(fun_app\$b suc\$ zero\$))))) (and (= (fun_app\$d (test_bit\$a (bitAND\$a ?v0
?v1)) (fun_app\$b (minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$ zero\$)))
(and (fun_app\$d (test_bit\$a ?v0) (fun_app\$b (minus\$ (len_of\$a type\$a))
(fun_app\$b suc\$ zero\$))) (fun_app\$d (test_bit\$a ?v1) (fun_app\$b (minus\$
(len_of\$a type\$a)) (fun_app\$b suc\$ zero\$))))) (and (= (fun_app\$d
(test_bit\$a (bitXOR\$a ?v0 ?v1)) (fun_app\$b (minus\$ (len_of\$a type\$a))
(fun_app\$b suc\$ zero\$))) (not (= (fun_app\$d (test_bit\$a ?v0) (fun_app\$b
(minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$ zero\$))) (fun_app\$d
(test_bit\$a ?v1) (fun_app\$b (minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$
zero\$)))))) (= (fun_app\$d (test_bit\$a (bitNOT\$a ?v0)) (fun_app\$b
(minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$ zero\$))) (not (fun_app\$d
(test_bit\$a ?v0) (fun_app\$b (minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$
zero\$))))))))) :named a469))
(assert (! (forall ((?v0 Finite_3_word\$) (?v1 Finite_3_word\$))
(and (= (fun_app\$d (test_bit\$b (bitOR\$b ?v0 ?v1)) (fun_app\$b (minus\$
(len_of\$ type\$)) (fun_app\$b suc\$ zero\$))) (or (fun_app\$d (test_bit\$b
?v0) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ zero\$)))
(fun_app\$d (test_bit\$b ?v1) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ zero\$))))) (and (= (fun_app\$d (test_bit\$b (bitAND\$b ?v0
?v1)) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ zero\$))) (and
(fun_app\$d (test_bit\$b ?v0) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ zero\$))) (fun_app\$d (test_bit\$b ?v1) (fun_app\$b (minus\$
(len_of\$ type\$)) (fun_app\$b suc\$ zero\$))))) (and (= (fun_app\$d
(test_bit\$b (bitXOR\$b ?v0 ?v1)) (fun_app\$b (minus\$ (len_of\$ type\$))
(fun_app\$b suc\$ zero\$))) (not (= (fun_app\$d (test_bit\$b ?v0) (fun_app\$b
(minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ zero\$))) (fun_app\$d
(test_bit\$b ?v1) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
zero\$)))))) (= (fun_app\$d (test_bit\$b (bitNOT\$b ?v0)) (fun_app\$b
(minus\$ (len_of\$ type\$)) (fun_app\$b suc\$ zero\$))) (not (fun_app\$d
(test_bit\$b ?v0) (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
zero\$))))))))) :named a470))
(assert (! (= (fun_app\$b (power\$a zero\$) (numeral\$ (bit0\$
one\$a))) zero\$) :named a471))
(assert (! (= (fun_app\$a (power\$ 0) (numeral\$ (bit0\$ one\$a))) 0)
:named a472))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$d (fun_app\$g less\$
?v0) zero\$))) :named a473))
(assert (! (= (scast\$ one\$b) (fun_app\$h word_of_int\$ (fun_app\$
(sbintrunc\$ (fun_app\$b (minus\$ (len_of\$b type\$b)) (fun_app\$b suc\$
zero\$))) 1))) :named a474))
(assert (! (= (scast\$a one\$c) (fun_app\$h word_of_int\$ (fun_app\$
(sbintrunc\$ (fun_app\$b (minus\$ (len_of\$a type\$a)) (fun_app\$b suc\$
zero\$))) 1))) :named a475))
(assert (! (= (scast\$b one\$d) (fun_app\$h word_of_int\$ (fun_app\$
(sbintrunc\$ (fun_app\$b (minus\$ (len_of\$ type\$)) (fun_app\$b suc\$
zero\$))) 1))) :named a476))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(times\$c ?v0) ?v1) (fun_app\$b (times\$c ?v1) ?v0))) :named a477))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (times\$d ?v0 ?v1)
(times\$d ?v1 ?v0))) :named a478))
(assert (! (forall ((?v0 Bool_bool_bool_fun_fun\$)) (! (= (rel\$
?v0) ?v0) :pattern ((rel\$ ?v0)))) :named a479))
(assert (! (forall ((?v0 Finite_3_word\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (less\$c ?v0 (power\$d (numeral\$d (bit0\$ one\$a)) (fun_app\$b
(minus\$ ?v1) ?v2))) (and (fun_app\$d (fun_app\$g less_eq\$c ?v2) ?v1)
(fun_app\$d (fun_app\$g less\$ ?v1) (len_of\$ type\$)))) (less\$c (times\$b
?v0 (power\$d (numeral\$d (bit0\$ one\$a)) ?v2)) (power\$d (numeral\$d (bit0\$
one\$a)) ?v1)))) :named a480))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ ?v1) ?v2))) (fun_app\$d (fun_app\$g less_eq\$c
?v2) ?v1)) (fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (divide\$c
(fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v1)) (fun_app\$b (power\$a
(numeral\$ (bit0\$ one\$a))) ?v2))))) :named a481))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (divide\$c (fun_app\$b
(power\$a (numeral\$ (bit0\$ one\$a))) ?v1)) (fun_app\$b (power\$a (numeral\$
(bit0\$ one\$a))) ?v2))) (and (fun_app\$d (fun_app\$g less_eq\$c ?v2) ?v1)
(fun_app\$d (fun_app\$g less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$
one\$a))) (fun_app\$b (minus\$ ?v1) ?v2)))))) :named a482))
(assert (! (forall ((?v0 Bool)) (=> (and ?v0 (fun_app\$e
(fun_app\$f (rel\$ uug\$) ?v0) false)) false)) :named a483))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$d (fun_app\$g less\$ ?v0) ?v1) (fun_app\$d (fun_app\$g less\$
zero\$) ?v2)) (fun_app\$d (fun_app\$g less\$ (fun_app\$b (times\$c ?v2) ?v0))
(fun_app\$b (times\$c ?v2) ?v1)))) :named a484))
(assert (! (= (numeral\$ one\$a) (fun_app\$b suc\$ zero\$)) :named
a485))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$d (fun_app\$g less\$
?v0) (numeral\$ (bit0\$ one\$a))) (or (= ?v0 zero\$) (= ?v0 (fun_app\$b suc\$
zero\$))))) :named a486))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= (fun_app\$b
suc\$ ?v0) ?v1) (= ?v0 (fun_app\$b (minus\$ ?v1) (fun_app\$b suc\$
zero\$))))) :named a487))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (bit0\$ ?v0)
(bit0\$ ?v1)) (= ?v0 ?v1))) :named a488))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$b max_snat\$ ?v0)
(fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (fun_app\$b (minus\$ ?v0)
one\$))) :pattern ((fun_app\$b max_snat\$ ?v0)))) :named a489))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$d (fun_app\$g less_eq\$c ?v0) ?v1) (fun_app\$d (fun_app\$g less\$
zero\$) ?v2)) (= (fun_app\$b (power\$a ?v2) (fun_app\$b (minus\$ ?v1) ?v0))
(fun_app\$b (divide\$c (fun_app\$b (power\$a ?v2) ?v1)) (fun_app\$b (power\$a
?v2) ?v0))))) :named a490))
(assert (! (forall ((?v0 Int) (?v1 Num\$) (?v2 Nat\$)) (=
(fun_app\$d (fun_app\$g less\$ (nat\$ ?v0)) (fun_app\$b (power\$a (numeral\$
?v1)) ?v2)) (< ?v0 (fun_app\$a (power\$ (numeral\$a ?v1)) ?v2)))) :named
a491))
(assert (! (forall ((?v0 Num0_itself\$)) (! (= (len_of\$c ?v0)
zero\$) :pattern ((len_of\$c ?v0)))) :named a492))
(assert (! (forall ((?v0 Finite_2_itself\$)) (! (= (len_of\$a ?v0)
(numeral\$ (bit0\$ one\$a))) :pattern ((len_of\$a ?v0)))) :named a493))
(assert (! (forall ((?v0 Finite_3_itself\$)) (! (= (len_of\$ ?v0)
(numeral\$ (bit0\$ (bit0\$ one\$a)))) :pattern ((len_of\$ ?v0)))) :named
a494))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$) (?v3 Nat\$))
(=> (fun_app\$d (fun_app\$g less\$ zero\$) ?v0) (= (fun_app\$d (fun_app\$g
less\$ (fun_app\$b (times\$c ?v1) (fun_app\$b (power\$a ?v0) ?v2)))
(fun_app\$b (power\$a ?v0) ?v3)) (fun_app\$d (fun_app\$g less\$ ?v1)
(fun_app\$b (power\$a ?v0) (fun_app\$b (minus\$ ?v3) ?v2)))))) :named
a495))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$b
(minus\$ ?v0) ?v1) zero\$) (fun_app\$d (fun_app\$g less_eq\$c ?v0) ?v1)))
:named a496))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d
(fun_app\$g less_eq\$c (fun_app\$b suc\$ ?v0)) (fun_app\$b suc\$ ?v1))
(fun_app\$d (fun_app\$g less_eq\$c ?v0) ?v1))) :named a497))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(fun_app\$d (fun_app\$g less_eq\$c ?v0) ?v1) (= (fun_app\$b (plus\$ ?v2)
(fun_app\$b (minus\$ ?v1) ?v0)) (fun_app\$b (minus\$ (fun_app\$b (plus\$ ?v2)
?v1)) ?v0)))) :named a498))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d
(fun_app\$g less_eq\$c (fun_app\$b suc\$ ?v0)) ?v1) (fun_app\$d (fun_app\$g
less\$ ?v0) ?v1))) :named a499))
(assert (! (< 0 2) :named a500))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d
(fun_app\$g less\$ ?v0) (fun_app\$b suc\$ ?v1)) (fun_app\$d (fun_app\$g
less_eq\$c ?v0) ?v1))) :named a501))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$b max_unat\$ ?v0)
(fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v0)) :pattern
((fun_app\$b max_unat\$ ?v0)))) :named a502))
(check-sat)
(get-unsat-core)

SMT: Invoking SMT solver "cvc4" ...
SMT: Solver:
SMT: Result:
/tmp/isabelle-lammich/process15966390893694044907/cache-io-
5670752:3.13: No set-logic command was given before this point.
/tmp/isabelle-lammich/process15966390893694044907/cache-io-
5670752:3.13: CVC4 will make all theories available.
/tmp/isabelle-lammich/process15966390893694044907/cache-io-
5670752:3.13: Consider setting a stricter logic for (likely) better
performance.
/tmp/isabelle-lammich/process15966390893694044907/cache-io-
5670752:3.13: To suppress this warning in the future use (set-logic
ALL).
unsat
(
a48
a187
a17
a37
a62
a9
a10
a25
)
SMT: Time (ms):
1482
SMT: Assertions:
¬ False  [¬ False]
n < 2 ^ (LENGTH('l) - Suc 0)
msb (word_of_int (int n))
∀i n x. (numeral i ^ n < of_nat x) = (numeral i ^ n < x)
∀i n x. (numeral i ^ n < int x) = (numeral i ^ n < x)
∀i n x. (numeral i ^ n < real x) = (numeral i ^ n < x)
∀x i n. (of_nat x < numeral i ^ n) = (x < numeral i ^ n)
∀x i n. (int x < numeral i ^ n) = (x < numeral i ^ n)
∀x i n. (real x < numeral i ^ n) = (x < numeral i ^ n)
∀x n. (0 < of_nat x ^ n) = (0 < x ∨ n = 0)
∀x n. (0 < int x ^ n) = (0 < x ∨ n = 0)
∀x n. (0 < real x ^ n) = (0 < x ∨ n = 0)
∀a. (0 < a⇧2) = (a ≠ 0)
∀a. (0 < a⇧2) = (a ≠ 0)
∀x n y. (numeral x ^ n = of_nat y) = (numeral x ^ n = y)
∀x n y. (numeral x ^ n = int y) = (numeral x ^ n = y)
∀x n y. (numeral x ^ n = real y) = (numeral x ^ n = y)
∀y x n. (of_nat y = numeral x ^ n) = (y = numeral x ^ n)
∀y x n. (int y = numeral x ^ n) = (y = numeral x ^ n)
∀y x n. (real y = numeral x ^ n) = (y = numeral x ^ n)
∀b w x. (of_nat b ^ w < of_nat x) = (b ^ w < x)
∀b w x. (int b ^ w < int x) = (b ^ w < x)
∀b w x. (real b ^ w < real x) = (b ^ w < x)
∀x b w. (of_nat x < of_nat b ^ w) = (x < b ^ w)
∀x b w. (int x < int b ^ w) = (x < b ^ w)
∀x b w. (real x < real b ^ w) = (x < b ^ w)
∀n. (0 < of_nat n) = (0 < n)
∀n. (0 < int n) = (0 < n)
∀n. (0 < real n) = (0 < n)
∀a. (a⇧2 = 0) = (a = 0)
∀a. (a⇧2 = 0) = (a = 0)
∀a. (a⇧2 = 0) = (a = 0)
∀n>0. Suc (n - Suc 0) = n
∀a. (a - Suc 0 < a) = (a ≠ 0)
∀nat nat'. (Suc nat = Suc nat') = (nat = nat')
∀x2 y2. (Suc x2 = Suc y2) = (x2 = y2)
∀m n. (int m = int n) = (m = n)
∀m n. (real m = real n) = (m = n)
∀n. (n ≠ 0) = (0 < n)
∀m n. (Suc m < Suc n) = (m < n)
∀m n. m < n ⟶ Suc m < Suc n
∀n. n < Suc n
∀m. m - m = 0
∀n. 0 - n = 0
∀m n k. Suc m - n - Suc k = m - n - k
∀m n. Suc m - Suc n = m - n
∀n. 0 ^ Suc n = 0
∀n. 0 ^ Suc n = 0
∀n. 0 ^ Suc n = 0
∀k. 0 ^ numeral k = 0
∀k. 0 ^ numeral k = 0
∀k. 0 ^ numeral k = 0
∀m. (of_nat m = 0) = (m = 0)
∀m. (int m = 0) = (m = 0)
∀m. (real m = 0) = (m = 0)
∀n. (0 = of_nat n) = (0 = n)
∀n. (0 = int n) = (0 = n)
∀n. (0 = real n) = (0 = n)
of_nat 0 = 0
int 0 = 0
real 0 = 0
∀m n. (of_nat m < of_nat n) = (m < n)
∀m n. (int m < int n) = (m < n)
∀m n. (real m < real n) = (m < n)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((^) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a ^ Suc 0 = a)
∀n. 0 < Suc n
∀n. (n < Suc 0) = (n = 0)
∀n m. (0 < n - m) = (m < n)
∀x n. (0 < x ^ n) = (0 < x ∨ n = 0)
∀x m. (x ^ m = Suc 0) = (m = 0 ∨ x = Suc 0)
∀n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (Suc 0 ^
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(Suc 0 ^ n = Suc 0)
∀m n. of_nat (m ^ n) = of_nat m ^ n
∀m n. int (m ^ n) = int m ^ n
∀m n. real (m ^ n) = real m ^ n
∀x b w. (of_nat x = of_nat b ^ w) = (x = b ^ w)
∀x b w. (int x = int b ^ w) = (x = b ^ w)
∀x b w. (real x = real b ^ w) = (x = b ^ w)
∀b w x. (of_nat b ^ w = of_nat x) = (b ^ w = x)
∀b w x. (int b ^ w = int x) = (b ^ w = x)
∀b w x. (real b ^ w = real x) = (b ^ w = x)
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
∀a n. (a ^ n = 0) = (a = 0 ∧ 0 < n)
∀x y. x ≠ y ∧ (x < y ⟶ False) ∧ (y < x ⟶ False) ⟶ False
∀P n. (∀n. ¬ P n ⟶ (∃m<n. ¬ P m)) ⟶ P n
∀P n. (∀n. (∀m<n. P m) ⟶ P n) ⟶ P n
∀n. n < n ⟶ False
∀s t. s < t ⟶ s ≠ t
∀n m. n < m ⟶ m ≠ n
∀n. ¬ n < n
∀m n. (m ≠ n) = (m < n ∨ n < m)
∀nat. (nat = 0 ⟶ False) ∧ (nat ≠ 0 ⟶ False) ⟶ False
∀n. n ≠ Suc n
∀x y. Suc x = Suc y ⟶ x = y
∀i j k. i - j - k = i - k - j
∀a n. a ≠ 0 ⟶ a ^ n ≠ 0
∀a n. a ≠ 0 ⟶ a ^ n ≠ 0
∀a n. a ≠ 0 ⟶ a ^ n ≠ 0
∀n. (n < 0) = False
∀P n. P 0 ∧ (∀n. 0 < n ∧ ¬ P n ⟶ (∃m<n. ¬ P m)) ⟶ P n
∀m n. m < n ⟶ n ≠ 0
∀n<0. False
∀n. ¬ n < 0
∀n. (¬ 0 < n) = (n = 0)
∀n. (n = 0 ⟶ False) ⟶ 0 < n
∀n m. ¬ n < m ⟶ (n < Suc m) = (n = m)
∀i j P. i < j ∧ (∀i. j = Suc i ⟶ P i) ∧ (∀i. i < j ∧ P (Suc i) ⟶
P i) ⟶ P i
∀i j P. i < j ∧ (∀i. P i (Suc i)) ∧ (∀i j k. i < j ∧ j < k ∧ P i
j ∧ P j k ⟶ P i k) ⟶ P i j
∀i j k. i < j ∧ j < k ⟶ Suc i < k
∀m n. Suc m < Suc n ⟶ m < n
∀n m. ¬ n < m ∧ n < Suc m ⟶ m = n
∀n m. (Suc n < m) = (∃m'. m = Suc m' ∧ n < m')
∀n P. (∀i<Suc n. P i) = (P n ∧ (∀i<n. P i))
∀m n. (¬ m < n) = (n < Suc m)
∀m n. (m < Suc n) = (m < n ∨ m = n)
∀n P. (∃i<Suc n. P i) = (P n ∨ (∃i<n. P i))
∀m n. m < n ⟶ m < Suc n
∀m n. m < Suc n ∧ (m < n ⟶ False) ∧ (m = n ⟶ False) ⟶ False
∀m n. m < n ∧ Suc m ≠ n ⟶ Suc m < n
∀i k. Suc i < k ∧ (∀j. i < j ∧ k = Suc j ⟶ False) ⟶ False
∀m n. Suc m < n ⟶ m < n
∀i k. i < k ∧ (k = Suc i ⟶ False) ∧ (∀j. i < j ∧ k = Suc j ⟶
False) ⟶ False
∀n. n ≠ 0 ⟶ (∃m. n = Suc m)
∀y. (y = 0 ⟶ False) ∧ (∀nat. y = Suc nat ⟶ False) ⟶ False
∀m. 0 ≠ Suc m
∀m. 0 = Suc m ⟶ False
∀m. Suc m = 0 ⟶ False
∀P k. P k ∧ (∀n. P (Suc n) ⟶ P n) ⟶ P 0
∀P m n. (∀x. P x 0) ∧ (∀y. P 0 (Suc y)) ∧ (∀x y. P x y ⟶ P (Suc
x) (Suc y)) ⟶ P m n
∀P n. P 0 ∧ (∀n. P n ⟶ P (Suc n)) ⟶ P n
∀nat x2. nat = Suc x2 ⟶ nat ≠ 0
∀nat'. 0 ≠ Suc nat'
∀nat'. Suc nat' ≠ 0
∀x2. 0 ≠ Suc x2
∀j k n. j < k ⟶ j - n < k
∀m n l. m < n ∧ m < l ⟶ l - n < l - m
∀m. m - 0 = m
∀m n. m - n = 0 ∧ n - m = 0 ⟶ m = n
∀P k i. P k ∧ (∀n. P (Suc n) ⟶ P n) ⟶ P (k - i)
∀a n. 0 < a ⟶ 0 < a ^ n
∀a n. 0 < a ⟶ 0 < a ^ n
∀a n. 0 < a ⟶ 0 < a ^ n
∀m. ¬ of_nat m < 0
∀m. ¬ int m < 0
∀m. ¬ real m < 0
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n m. (∀n. f n < f (Suc n)) ⟶ (f n < f m) = (n < m)
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀f n n'. (∀n. f n < f (Suc n)) ∧ n < n' ⟶ f n < f n'
∀m n. of_nat m < of_nat n ⟶ m < n
∀m n. int m < int n ⟶ m < n
∀m n. real m < real n ⟶ m < n
∀m n. m < n ⟶ of_nat m < of_nat n
∀m n. m < n ⟶ int m < int n
∀m n. m < n ⟶ real m < real n
∀n. of_nat (Suc n) ≠ 0
∀n. int (Suc n) ≠ 0
∀n. real (Suc n) ≠ 0
∀m n. (m < Suc n) = (m = 0 ∨ (∃j. m = Suc j ∧ j < n))
∀n>0. ∃m. n = Suc m
∀n P. (∀i<Suc n. P i) = (P 0 ∧ (∀i<n. P (Suc i)))
∀n. (0 < n) = (∃m. n = Suc m)
∀n P. (∃i<Suc n. P i) = (P 0 ∨ (∃i<n. P (Suc i)))
∀n m. 0 < n ∧ 0 < m ⟶ m - n < m
∀m n. m - n < Suc m
∀n m. n < m ⟶ Suc (m - Suc n) = m - n
∀i m n. 0 < i ∧ i ^ m < i ^ n ⟶ m < n
∀n>0. 0 ^ n = 0
∀n>0. 0 ^ n = 0
∀n>0. 0 ^ n = 0
∀n i. 0 < n ⟶ n - Suc i < n
0⇧2 = 0
0⇧2 = 0
0⇧2 = 0
∀x y. (x - y)⇧2 = (y - x)⇧2
∀x y. (x - y)⇧2 = (y - x)⇧2
∀a. ¬ a⇧2 < 0
∀a. ¬ a⇧2 < 0
of_nat (2 ^ LENGTH('l)) = 0
of_nat (2 ^ LENGTH(Enum.finite_2)) = 0
of_nat (2 ^ LENGTH(Enum.finite_3)) = 0
∀w. numeral w < 2 ^ (LENGTH('l) - Suc 0) ⟶ ¬ msb (numeral w)
0 < LENGTH('l)
0 < LENGTH(Enum.finite_2)
0 < LENGTH(Enum.finite_3)
2 ^ LENGTH('l) = 0
2 ^ LENGTH(Enum.finite_2) = 0
2 ^ LENGTH(Enum.finite_3) = 0
∀a x. a < 2 ^ (x - Suc 0) ⟶ a < 2 ^ x
∀n. of_nat n = 0 ∧ n < 2 ^ LENGTH('l) ⟶ n = 0
∀n. of_nat n = 0 ∧ n < 2 ^ LENGTH(Enum.finite_2) ⟶ n = 0
∀n. of_nat n = 0 ∧ n < 2 ^ LENGTH(Enum.finite_3) ⟶ n = 0
∀k. 0 < k ∧ k < 2 ^ LENGTH('l) ⟶ of_nat k ≠ 0
∀k. 0 < k ∧ k < 2 ^ LENGTH(Enum.finite_2) ⟶ of_nat k ≠ 0
∀k. 0 < k ∧ k < 2 ^ LENGTH(Enum.finite_3) ⟶ of_nat k ≠ 0
∀n. of_nat (numeral n) = numeral n
∀n. int (numeral n) = numeral n
∀n. real (numeral n) = numeral n
∀a b. (0 < a - b) = (b < a)
∀a b. (0 < a - b) = (b < a)
∀a b. (0 < a - b) = (b < a)
∀a b. (0 < a - b) = (b < a)
∀p x. p < 2 ^ x ∧ x < LENGTH('l) ⟶ of_nat p < 2 ^ x
∀p x. p < 2 ^ x ∧ x < LENGTH(Enum.finite_2) ⟶ of_nat p < 2 ^ x
∀p x. p < 2 ^ x ∧ x < LENGTH(Enum.finite_3) ⟶ of_nat p < 2 ^ x
∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (y < x) =
(of_nat y < of_nat x)
∀x y. x < 2 ^ LENGTH(Enum.finite_2) ∧ y < 2 ^
LENGTH(Enum.finite_2) ⟶
(y < x) = (of_nat y < of_nat x)
∀x y. x < 2 ^ LENGTH(Enum.finite_3) ∧ y < 2 ^
LENGTH(Enum.finite_3) ⟶
(y < x) = (of_nat y < of_nat x)
∀m n. (numeral m = numeral n) = (m = n)
∀m n. (numeral m = numeral n) = (m = n)
∀m n. (numeral m = numeral n) = (m = n)
∀x2 y2. (num.Bit0 x2 = num.Bit0 y2) = (x2 = y2)
∀n. (¬ 0 < n) = (n = 0)
∀m n. (numeral m < numeral n) = (m < n)
∀m n. (numeral m < numeral n) = (m < n)
∀m n. (numeral m < numeral n) = (m < n)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a - a = 0)
∀a. a - 0 = a
∀a. a - 0 = a
∀a. 0 - a = 0
∀a. a - 0 = a
∀a. a - 0 = a
∀a. a - 0 = a
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a - a = 0)
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((-) a))
SMT.Symb_Nil) SMT.Symb_Nil)
(a - a = 0)
∀bin. word_of_int (numeral bin) = numeral bin
∀xa x. word_of_int xa - word_of_int x = word_of_int (xa - x)
∀a b. word_of_int a - word_of_int b = word_of_int (a - b)
∀uu. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (len_of
uu)) SMT.Symb_Nil) SMT.Symb_Nil)
(len_of uu = 0)
∀x. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (len_of
x)) SMT.Symb_Nil) SMT.Symb_Nil)
(len_of x = 2)
∀x. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (len_of
x)) SMT.Symb_Nil) SMT.Symb_Nil)
(len_of x = 4)
∀x. (0 = x) = (x = 0)
∀x. (0 = x) = (x = 0)
∀x. (0 = x) = (x = 0)
∀a b c d. a - b = c - d ⟶ (a = b) = (c = d)
∀a c b. a - c - b = a - b - c
∀a c b. a - c - b = a - b - c
∀a b c d. False ⟶ a ^ b = c ^ d
∀a b c d. False ⟶ a ^ b = c ^ d
∀a b c d. False ⟶ a ^ b = c ^ d
∀x. ∃y. x = word_of_int y
∀P x. (∀y. P (word_of_int y)) ⟶ P x
∀a n. word_of_int a ^ n = word_of_int (a ^ n)
0 = word_of_int 0
∀b. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (numeral
b)) SMT.Symb_Nil) SMT.Symb_Nil)
(numeral b = word_of_int (numeral b))
0 = word_of_int 0
¬ msb 0
¬ 0 < 0
¬ 0 < 0
¬ 0 < 0
∀n. (n = 0 ⟶ False) ⟶ 0 < n
∀n. ¬ n < 0
∀m n. m < n ⟶ n ≠ 0
∀n. (0 < n) = (n ≠ 0)
∀n. 0 ≠ numeral n
∀n. 0 ≠ numeral n
∀n. 0 ≠ numeral n
∀a b. (a = b) = (a - b = 0)
∀a b. (a = b) = (a - b = 0)
∀a b d c. a < b ∧ d < c ⟶ a - c < b - d
∀a b d c. a < b ∧ d < c ⟶ a - c < b - d
∀a b c d. a - b = c - d ⟶ (a < b) = (c < d)
∀a b c d. a - b = c - d ⟶ (a < b) = (c < d)
∀b a c. b < a ⟶ c - a < c - b
∀b a c. b < a ⟶ c - a < c - b
∀a b c. a < b ⟶ a - c < b - c
∀a b c. a < b ⟶ a - c < b - c
∀x2. num.One ≠ num.Bit0 x2
∀n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (of_nat
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(of_nat n = word_of_int (int n))
∀n. 0 < numeral n
∀n. 0 < numeral n
∀n. 0 < numeral n
∀n. ¬ numeral n < 0
∀n. ¬ numeral n < 0
∀n. ¬ numeral n < 0
∀a b. (a < b) = (a - b < 0)
∀a b. (a < b) = (a - b < 0)
LENGTH('l) ≠ 0
LENGTH(Enum.finite_2) ≠ 0
LENGTH(Enum.finite_3) ≠ 0
∀w v. LENGTH('l) = 0 ⟶ w = v
∀w v. LENGTH(0) = 0 ⟶ w = v
∀w v. LENGTH(Enum.finite_2) = 0 ⟶ w = v
∀w v. LENGTH(Enum.finite_3) = 0 ⟶ w = v
∀n m. Suc n = m ⟶ n = m - Suc 0
∀n. word_of_int (2 ^ n) = 2 ^ n
∀k. of_nat k ≠ 0 ⟶ 0 < k
∀k. int k ≠ 0 ⟶ 0 < k
∀k. real k ≠ 0 ⟶ 0 < k
Numeral1 = Suc 0
(LENGTH('l) ≠ Suc 0) = (∃n. LENGTH('l) = Suc (Suc n))
(LENGTH(Enum.finite_2) ≠ Suc 0) = (∃n. LENGTH(Enum.finite_2) =
Suc (Suc n))
(LENGTH(Enum.finite_3) ≠ Suc 0) = (∃n. LENGTH(Enum.finite_3) =
Suc (Suc n))
∀n m. n < LENGTH('l) ∧ m < LENGTH('l) ⟶ (2 ^ n = 2 ^ m) = (n =
m)
∀n m. n < LENGTH(Enum.finite_2) ∧ m < LENGTH(Enum.finite_2) ⟶ (2
^ n = 2 ^ m) = (n = m)
∀n m. n < LENGTH(Enum.finite_3) ∧ m < LENGTH(Enum.finite_3) ⟶ (2
^ n = 2 ^ m) = (n = m)
∀n<LENGTH('l). 2 ^ n ≠ 0
∀n<LENGTH(Enum.finite_2). 2 ^ n ≠ 0
∀n<LENGTH(Enum.finite_3). 2 ^ n ≠ 0
∀n<LENGTH('l). of_nat n < 2 ^ n
∀n<LENGTH(Enum.finite_2). of_nat n < 2 ^ n
∀n<LENGTH(Enum.finite_3). of_nat n < 2 ^ n
2 = Suc (Suc 0)
word_of_int (2 ^ LENGTH('l)) = 0
word_of_int (2 ^ LENGTH(0)) = 0
word_of_int (2 ^ LENGTH(Enum.finite_2)) = 0
word_of_int (2 ^ LENGTH(Enum.finite_3)) = 0
∀n<2. n = 0 ∨ n = Suc 0
∀w. ∃n. w = of_nat n ∧ n < 2 ^ LENGTH('l)
∀w. ∃n. w = of_nat n ∧ n < 2 ^ LENGTH(Enum.finite_2)
∀w. ∃n. w = of_nat n ∧ n < 2 ^ LENGTH(Enum.finite_3)
∀x. (∀n. x = of_nat n ∧ n < 2 ^ LENGTH(Enum.finite_3) ⟶ False) ⟶
False
∀m v. (int m = numeral v) = (m = numeral v)
∀n. n < 2 ^ n
∀w n. (numeral w < real n) = (numeral w < n)
∀n w. (real n < numeral w) = (n < numeral w)
∀m n. (int m = int n) = (m = n)
(0 < 0) = False
∀k. k - 0 = k
∀a. (a < 0 ⟶ False) ∧ (a = 0 ⟶ False) ∧ (0 < a ⟶ False) ⟶ False
∀z. (∀m n. z = int m - int n ⟶ False) ⟶ False
∀i m n. (i < m - (m - n)) = (i < m ∧ i < n)
∀k>0. ∃n>0. k = int n
∀k. 0 < k ∧ (∀n. k = int n ∧ 0 < n ⟶ False) ⟶ False
∀n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (num.Bit0
n)) SMT.Symb_Nil) SMT.Symb_Nil)
((num.One < num.Bit0 n) = True)
∀m. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat ((<) m))
SMT.Symb_Nil) SMT.Symb_Nil)
((m < num.One) = False)
∀m n. SMT.trigger
(SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (num.Bit0 m <
num.Bit0 n)) SMT.Symb_Nil) SMT.Symb_Nil)
((num.Bit0 m < num.Bit0 n) = (m < n))
∀n. 0 < 2 ^ n
0 < 2
∀n. (num.One = num.Bit0 n) = False
∀m. (num.Bit0 m = num.One) = False
∀m n. (num.Bit0 m = num.Bit0 n) = (m = n)
(num.One = num.One) = True
∀n k P. (∃m. n = Suc m ∧ (m = k ∨ P m)) = (n = Suc k ∨ (∃m. n =
Suc m ∧ P m))
∀y. 0 < y ∨ 0 = y
∀m k. (m - k = m) = (k = 0 ∨ m = 0)
∀a n. 0 < a ⟶ (∃r>0. r ^ Suc n = a)
∀n a. 0 < n ∧ 0 < a ⟶ (∃r>0. r ^ n = a)
∀n a. 0 < n ∧ 0 < a ⟶ (∃x. (0 < x ∧ x ^ n = a) ∧ (∀y. 0 < y ∧ y
^ n = a ⟶ y = x))
0 < 2
∀a b. int (a - b) = (if int a < int b then 0 else int a - int b)
n < 2 ^ (LENGTH('l) - Suc 0) ⟶ n = nat (sint (word_of_int (int
n)))
∀n. nat (int n) = n
∀k. nat (numeral k) = numeral k
∀w z. (nat w < nat z) = (0 < z ∧ w < z)
∀z. (0 < nat z) = (0 < z)
∀v v'. numeral v - numeral v' = nat (numeral v - numeral v')
∀x n y. (numeral x ^ n = nat y) = (numeral x ^ n = y)
∀y x n. (nat y = numeral x ^ n) = (y = numeral x ^ n)
∀x n a. (numeral x ^ n < nat a) = (numeral x ^ n < a)
∀a x n. (nat a < numeral x ^ n) = (a < numeral x ^ n)
0 = nat 0
∀x. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (numeral
x)) SMT.Symb_Nil) SMT.Symb_Nil)
(numeral x = nat (numeral x))
∀n m. int (n - m) = int (nat (int n - int m))
SMT: Names:
sorts:
Nat\$ = nat
Num\$ = num
L_word\$ = 'l word
L_itself\$ = 'l itself
Num0_word\$ = 0 word
Int_int_fun\$ = int ⇒ int
Nat_int_fun\$ = nat ⇒ int
Nat_nat_fun\$ = nat ⇒ nat
Nat_num_fun\$ = nat ⇒ num
Num0_itself\$ = 0 itself
Nat_bool_fun\$ = nat ⇒ bool
Nat_real_fun\$ = nat ⇒ real
Num_bool_fun\$ = num ⇒ bool
Finite_2_word\$ = Enum.finite_2 word
Finite_3_word\$ = Enum.finite_3 word
Real_real_fun\$ = real ⇒ real
Finite_2_itself\$ = Enum.finite_2 itself
Finite_3_itself\$ = Enum.finite_3 itself
L_word_bool_fun\$ = 'l word ⇒ bool
Nat_nat_bool_fun_fun\$ = nat ⇒ nat ⇒ bool
functions:
n\$ = n
uu\$ = uu__
msb\$ = msb
nat\$ = nat
one\$ = num.One
suc\$ = Suc
uua\$ = uu
bit0\$ = num.Bit0
less\$ = (<)
sint\$ = sint
type\$ = TYPE('l)
zero\$ = 0
less\$a = (<)
less\$b = (<)
less\$c = (<)
less\$d = (<)
minus\$ = (-)
power\$ = (^)
type\$a = TYPE(Enum.finite_2)
type\$b = TYPE(Enum.finite_3)
type\$c = TYPE(0)
zero\$a = 0
zero\$b = 0
zero\$c = 0
zero\$d = 0
len_of\$ = len_of
minus\$a = (-)
of_nat\$ = int
power\$a = (^)
power\$b = (^)
power\$c = (^)
power\$d = (^)
power\$e = (^)
fun_app\$ = SMT.fun_app
len_of\$a = len_of
len_of\$b = len_of
len_of\$c = len_of
numeral\$ = numeral
of_nat\$a = of_nat
of_nat\$b = real
of_nat\$c = of_nat
of_nat\$d = of_nat
of_nat\$e = of_nat
fun_app\$a = SMT.fun_app
fun_app\$b = SMT.fun_app
fun_app\$c = SMT.fun_app
fun_app\$d = SMT.fun_app
fun_app\$e = SMT.fun_app
fun_app\$f = SMT.fun_app
fun_app\$g = SMT.fun_app
fun_app\$h = SMT.fun_app
fun_app\$i = SMT.fun_app
numeral\$a = numeral
numeral\$b = numeral
numeral\$c = numeral
numeral\$d = numeral
numeral\$e = numeral
word_of_int\$ = word_of_int
word_of_int\$a = word_of_int
word_of_int\$b = word_of_int
word_of_int\$c = word_of_int
SMT: Problem:
; --full-saturate-quant --inst-when=full-last-call --inst-no-
entail --term-db-mode=relevant --multi-trigger-linear --no-statistics
--random-seed=1 --lang=smt2 --continued-execution --tlimit 9354
(set-option :produce-unsat-cores true)
(set-logic AUFLIRA)
(declare-sort Nat\$ 0)
(declare-sort Num\$ 0)
(declare-sort L_word\$ 0)
(declare-sort L_itself\$ 0)
(declare-sort Num0_word\$ 0)
(declare-sort Int_int_fun\$ 0)
(declare-sort Nat_int_fun\$ 0)
(declare-sort Nat_nat_fun\$ 0)
(declare-sort Nat_num_fun\$ 0)
(declare-sort Num0_itself\$ 0)
(declare-sort Nat_bool_fun\$ 0)
(declare-sort Nat_real_fun\$ 0)
(declare-sort Num_bool_fun\$ 0)
(declare-sort Finite_2_word\$ 0)
(declare-sort Finite_3_word\$ 0)
(declare-sort Real_real_fun\$ 0)
(declare-sort Finite_2_itself\$ 0)
(declare-sort Finite_3_itself\$ 0)
(declare-sort L_word_bool_fun\$ 0)
(declare-sort Nat_nat_bool_fun_fun\$ 0)
(declare-fun n\$ () Nat\$)
(declare-fun uu\$ (Real) Real_real_fun\$)
(declare-fun msb\$ () L_word_bool_fun\$)
(declare-fun nat\$ (Int) Nat\$)
(declare-fun one\$ () Num\$)
(declare-fun suc\$ () Nat_nat_fun\$)
(declare-fun uua\$ (Int) Int_int_fun\$)
(declare-fun bit0\$ (Num\$) Num\$)
(declare-fun less\$ () Nat_nat_bool_fun_fun\$)
(declare-fun sint\$ (L_word\$) Int)
(declare-fun type\$ () L_itself\$)
(declare-fun zero\$ () Nat\$)
(declare-fun less\$a (Num\$) Num_bool_fun\$)
(declare-fun less\$b (L_word\$) L_word_bool_fun\$)
(declare-fun less\$c (Finite_2_word\$ Finite_2_word\$) Bool)
(declare-fun less\$d (Finite_3_word\$ Finite_3_word\$) Bool)
(declare-fun minus\$ (Nat\$) Nat_nat_fun\$)
(declare-fun power\$ (Nat\$) Nat_nat_fun\$)
(declare-fun type\$a () Finite_2_itself\$)
(declare-fun type\$b () Finite_3_itself\$)
(declare-fun type\$c () Num0_itself\$)
(declare-fun zero\$a () L_word\$)
(declare-fun zero\$b () Finite_2_word\$)
(declare-fun zero\$c () Finite_3_word\$)
(declare-fun zero\$d () Num0_word\$)
(declare-fun len_of\$ (L_itself\$) Nat\$)
(declare-fun minus\$a (L_word\$ L_word\$) L_word\$)
(declare-fun of_nat\$ () Nat_int_fun\$)
(declare-fun power\$a (Int) Nat_int_fun\$)
(declare-fun power\$b (Real) Nat_real_fun\$)
(declare-fun power\$c (L_word\$ Nat\$) L_word\$)
(declare-fun power\$d (Finite_2_word\$ Nat\$) Finite_2_word\$)
(declare-fun power\$e (Finite_3_word\$ Nat\$) Finite_3_word\$)
(declare-fun fun_app\$ (Real_real_fun\$ Real) Real)
(declare-fun len_of\$a (Finite_2_itself\$) Nat\$)
(declare-fun len_of\$b (Finite_3_itself\$) Nat\$)
(declare-fun len_of\$c (Num0_itself\$) Nat\$)
(declare-fun numeral\$ (Num\$) Nat\$)
(declare-fun of_nat\$a () Nat_nat_fun\$)
(declare-fun of_nat\$b () Nat_real_fun\$)
(declare-fun of_nat\$c (Nat\$) L_word\$)
(declare-fun of_nat\$d (Nat\$) Finite_2_word\$)
(declare-fun of_nat\$e (Nat\$) Finite_3_word\$)
(declare-fun fun_app\$a (Int_int_fun\$ Int) Int)
(declare-fun fun_app\$b (Nat_bool_fun\$ Nat\$) Bool)
(declare-fun fun_app\$c (Nat_nat_bool_fun_fun\$ Nat\$)
Nat_bool_fun\$)
(declare-fun fun_app\$d (Nat_nat_fun\$ Nat\$) Nat\$)
(declare-fun fun_app\$e (L_word_bool_fun\$ L_word\$) Bool)
(declare-fun fun_app\$f (Nat_int_fun\$ Nat\$) Int)
(declare-fun fun_app\$g (Nat_real_fun\$ Nat\$) Real)
(declare-fun fun_app\$h (Num_bool_fun\$ Num\$) Bool)
(declare-fun fun_app\$i (Nat_num_fun\$ Nat\$) Num\$)
(declare-fun numeral\$a (Num\$) Int)
(declare-fun numeral\$b (Num\$) Real)
(declare-fun numeral\$c (Num\$) L_word\$)
(declare-fun numeral\$d (Num\$) Finite_2_word\$)
(declare-fun numeral\$e (Num\$) Finite_3_word\$)
(declare-fun word_of_int\$ (Int) L_word\$)
(declare-fun word_of_int\$a (Int) Num0_word\$)
(declare-fun word_of_int\$b (Int) Finite_2_word\$)
(declare-fun word_of_int\$c (Int) Finite_3_word\$)
(assert (! (forall ((?v0 Real) (?v1 Real)) (! (= (fun_app\$ (uu\$
?v0) ?v1) (- ?v0 ?v1)) :pattern ((fun_app\$ (uu\$ ?v0) ?v1)))) :named
a0))
(assert (! (forall ((?v0 Int) (?v1 Int)) (! (= (fun_app\$a (uua\$
?v0) ?v1) (- ?v0 ?v1)) :pattern ((fun_app\$a (uua\$ ?v0) ?v1)))) :named
a1))
(assert (! (not false) :named a2))
(assert (! (fun_app\$b (fun_app\$c less\$ n\$) (fun_app\$d (power\$
(numeral\$ (bit0\$ one\$))) (fun_app\$d (minus\$ (len_of\$ type\$)) (fun_app\$d
suc\$ zero\$)))) :named a3))
(assert (! (fun_app\$e msb\$ (word_of_int\$ (fun_app\$f of_nat\$
n\$))) :named a4))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less\$ (fun_app\$d (power\$ (numeral\$ ?v0)) ?v1))
(fun_app\$d of_nat\$a ?v2)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d
(power\$ (numeral\$ ?v0)) ?v1)) ?v2))) :named a5))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$f (power\$a (numeral\$a ?v0)) ?v1) (fun_app\$f of_nat\$ ?v2))
(fun_app\$b (fun_app\$c less\$ (fun_app\$d (power\$ (numeral\$ ?v0)) ?v1))
?v2))) :named a6))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$g (power\$b (numeral\$b ?v0)) ?v1) (fun_app\$g of_nat\$b ?v2))
(fun_app\$b (fun_app\$c less\$ (fun_app\$d (power\$ (numeral\$ ?v0)) ?v1))
?v2))) :named a7))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less\$ (fun_app\$d of_nat\$a ?v0)) (fun_app\$d
(power\$ (numeral\$ ?v1)) ?v2)) (fun_app\$b (fun_app\$c less\$ ?v0)
(fun_app\$d (power\$ (numeral\$ ?v1)) ?v2)))) :named a8))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (<
(fun_app\$f of_nat\$ ?v0) (fun_app\$f (power\$a (numeral\$a ?v1)) ?v2))
(fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d (power\$ (numeral\$ ?v1))
?v2)))) :named a9))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (<
(fun_app\$g of_nat\$b ?v0) (fun_app\$g (power\$b (numeral\$b ?v1)) ?v2))
(fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d (power\$ (numeral\$ ?v1))
?v2)))) :named a10))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ zero\$) (fun_app\$d (power\$ (fun_app\$d of_nat\$a ?v0))
?v1)) (or (fun_app\$b (fun_app\$c less\$ zero\$) ?v0) (= ?v1 zero\$))))
:named a11))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< 0 (fun_app\$f
(power\$a (fun_app\$f of_nat\$ ?v0)) ?v1)) (or (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= ?v1 zero\$)))) :named a12))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< 0.0 (fun_app\$g
(power\$b (fun_app\$g of_nat\$b ?v0)) ?v1)) (or (fun_app\$b (fun_app\$c
less\$ zero\$) ?v0) (= ?v1 zero\$)))) :named a13))
(assert (! (forall ((?v0 Real)) (= (< 0.0 (fun_app\$g (power\$b
?v0) (numeral\$ (bit0\$ one\$)))) (not (= ?v0 0.0)))) :named a14))
(assert (! (forall ((?v0 Int)) (= (< 0 (fun_app\$f (power\$a ?v0)
(numeral\$ (bit0\$ one\$)))) (not (= ?v0 0)))) :named a15))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$d (power\$ (numeral\$ ?v0)) ?v1) (fun_app\$d of_nat\$a ?v2)) (=
(fun_app\$d (power\$ (numeral\$ ?v0)) ?v1) ?v2))) :named a16))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$f (power\$a (numeral\$a ?v0)) ?v1) (fun_app\$f of_nat\$ ?v2)) (=
(fun_app\$d (power\$ (numeral\$ ?v0)) ?v1) ?v2))) :named a17))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$g (power\$b (numeral\$b ?v0)) ?v1) (fun_app\$g of_nat\$b ?v2)) (=
(fun_app\$d (power\$ (numeral\$ ?v0)) ?v1) ?v2))) :named a18))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(fun_app\$d of_nat\$a ?v0) (fun_app\$d (power\$ (numeral\$ ?v1)) ?v2)) (=
?v0 (fun_app\$d (power\$ (numeral\$ ?v1)) ?v2)))) :named a19))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(fun_app\$f of_nat\$ ?v0) (fun_app\$f (power\$a (numeral\$a ?v1)) ?v2)) (=
?v0 (fun_app\$d (power\$ (numeral\$ ?v1)) ?v2)))) :named a20))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$) (?v2 Nat\$)) (= (=
(fun_app\$g of_nat\$b ?v0) (fun_app\$g (power\$b (numeral\$b ?v1)) ?v2)) (=
?v0 (fun_app\$d (power\$ (numeral\$ ?v1)) ?v2)))) :named a21))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less\$ (fun_app\$d (power\$ (fun_app\$d of_nat\$a
?v0)) ?v1)) (fun_app\$d of_nat\$a ?v2)) (fun_app\$b (fun_app\$c less\$
(fun_app\$d (power\$ ?v0) ?v1)) ?v2))) :named a22))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$f (power\$a (fun_app\$f of_nat\$ ?v0)) ?v1) (fun_app\$f of_nat\$
?v2)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d (power\$ ?v0) ?v1)) ?v2)))
:named a23))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$g (power\$b (fun_app\$g of_nat\$b ?v0)) ?v1) (fun_app\$g of_nat\$b
?v2)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d (power\$ ?v0) ?v1)) ?v2)))
:named a24))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less\$ (fun_app\$d of_nat\$a ?v0)) (fun_app\$d
(power\$ (fun_app\$d of_nat\$a ?v1)) ?v2)) (fun_app\$b (fun_app\$c less\$
?v0) (fun_app\$d (power\$ ?v1) ?v2)))) :named a25))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$f of_nat\$ ?v0) (fun_app\$f (power\$a (fun_app\$f of_nat\$ ?v1))
?v2)) (fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d (power\$ ?v1) ?v2))))
:named a26))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (<
(fun_app\$g of_nat\$b ?v0) (fun_app\$g (power\$b (fun_app\$g of_nat\$b ?v1))
?v2)) (fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d (power\$ ?v1) ?v2))))
:named a27))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c less\$
zero\$) (fun_app\$d of_nat\$a ?v0)) (fun_app\$b (fun_app\$c less\$ zero\$)
?v0))) :named a28))
(assert (! (forall ((?v0 Nat\$)) (= (< 0 (fun_app\$f of_nat\$ ?v0))
(fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a29))
(assert (! (forall ((?v0 Nat\$)) (= (< 0.0 (fun_app\$g of_nat\$b
?v0)) (fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a30))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$d (power\$ ?v0)
(numeral\$ (bit0\$ one\$))) zero\$) (= ?v0 zero\$))) :named a31))
(assert (! (forall ((?v0 Int)) (= (= (fun_app\$f (power\$a ?v0)
(numeral\$ (bit0\$ one\$))) 0) (= ?v0 0))) :named a32))
(assert (! (forall ((?v0 Real)) (= (= (fun_app\$g (power\$b ?v0)
(numeral\$ (bit0\$ one\$))) 0.0) (= ?v0 0.0))) :named a33))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= (fun_app\$d suc\$ (fun_app\$d (minus\$ ?v0) (fun_app\$d suc\$
zero\$))) ?v0))) :named a34))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c less\$
(fun_app\$d (minus\$ ?v0) (fun_app\$d suc\$ zero\$))) ?v0) (not (= ?v0
zero\$)))) :named a35))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d suc\$
?v0) (fun_app\$d suc\$ ?v1)) (= ?v0 ?v1))) :named a36))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d suc\$
?v0) (fun_app\$d suc\$ ?v1)) (= ?v0 ?v1))) :named a37))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (= ?v0 ?v1))) :named a38))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$g
of_nat\$b ?v0) (fun_app\$g of_nat\$b ?v1)) (= ?v0 ?v1))) :named a39))
(assert (! (forall ((?v0 Nat\$)) (= (not (= ?v0 zero\$))
(fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a40))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) (fun_app\$d suc\$ ?v1)) (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1))) :named a41))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$ (fun_app\$d suc\$
?v0)) (fun_app\$d suc\$ ?v1)))) :named a42))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$b (fun_app\$c less\$ ?v0)
(fun_app\$d suc\$ ?v0))) :named a43))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (minus\$ ?v0) ?v0)
zero\$)) :named a44))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (minus\$ zero\$)
?v0) zero\$)) :named a45))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$d (minus\$ (fun_app\$d (minus\$ (fun_app\$d suc\$ ?v0)) ?v1))
(fun_app\$d suc\$ ?v2)) (fun_app\$d (minus\$ (fun_app\$d (minus\$ ?v0) ?v1))
?v2))) :named a46))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d (minus\$
(fun_app\$d suc\$ ?v0)) (fun_app\$d suc\$ ?v1)) (fun_app\$d (minus\$ ?v0)
?v1))) :named a47))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (power\$ zero\$)
(fun_app\$d suc\$ ?v0)) zero\$)) :named a48))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$f (power\$a 0)
(fun_app\$d suc\$ ?v0)) 0)) :named a49))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$g (power\$b 0.0)
(fun_app\$d suc\$ ?v0)) 0.0)) :named a50))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$d (power\$ zero\$)
(numeral\$ ?v0)) zero\$)) :named a51))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$f (power\$a 0)
(numeral\$ ?v0)) 0)) :named a52))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$g (power\$b 0.0)
(numeral\$ ?v0)) 0.0)) :named a53))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$d of_nat\$a ?v0)
zero\$) (= ?v0 zero\$))) :named a54))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$f of_nat\$ ?v0) 0)
(= ?v0 zero\$))) :named a55))
(assert (! (forall ((?v0 Nat\$)) (= (= (fun_app\$g of_nat\$b ?v0)
0.0) (= ?v0 zero\$))) :named a56))
(assert (! (forall ((?v0 Nat\$)) (= (= zero\$ (fun_app\$d of_nat\$a
?v0)) (= zero\$ ?v0))) :named a57))
(assert (! (forall ((?v0 Nat\$)) (= (= 0 (fun_app\$f of_nat\$ ?v0))
(= zero\$ ?v0))) :named a58))
(assert (! (forall ((?v0 Nat\$)) (= (= 0.0 (fun_app\$g of_nat\$b
?v0)) (= zero\$ ?v0))) :named a59))
(assert (! (= (fun_app\$d of_nat\$a zero\$) zero\$) :named a60))
(assert (! (= (fun_app\$f of_nat\$ zero\$) 0) :named a61))
(assert (! (= (fun_app\$g of_nat\$b zero\$) 0.0) :named a62))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ (fun_app\$d of_nat\$a ?v0)) (fun_app\$d of_nat\$a ?v1))
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1))) :named a63))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (fun_app\$b (fun_app\$c less\$ ?v0)
?v1))) :named a64))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (< (fun_app\$g
of_nat\$b ?v0) (fun_app\$g of_nat\$b ?v1)) (fun_app\$b (fun_app\$c less\$
?v0) ?v1))) :named a65))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$d (power\$ ?v0)
(fun_app\$d suc\$ zero\$)) ?v0) :pattern ((power\$ ?v0)))) :named a66))
(assert (! (forall ((?v0 Int)) (! (= (fun_app\$f (power\$a ?v0)
(fun_app\$d suc\$ zero\$)) ?v0) :pattern ((power\$a ?v0)))) :named a67))
(assert (! (forall ((?v0 Real)) (! (= (fun_app\$g (power\$b ?v0)
(fun_app\$d suc\$ zero\$)) ?v0) :pattern ((power\$b ?v0)))) :named a68))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$b (fun_app\$c less\$
zero\$) (fun_app\$d suc\$ ?v0))) :named a69))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c less\$
?v0) (fun_app\$d suc\$ zero\$)) (= ?v0 zero\$))) :named a70))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ zero\$) (fun_app\$d (minus\$ ?v0) ?v1)) (fun_app\$b
(fun_app\$c less\$ ?v1) ?v0))) :named a71))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ zero\$) (fun_app\$d (power\$ ?v0) ?v1)) (or (fun_app\$b
(fun_app\$c less\$ zero\$) ?v0) (= ?v1 zero\$)))) :named a72))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d
(power\$ ?v0) ?v1) (fun_app\$d suc\$ zero\$)) (or (= ?v1 zero\$) (= ?v0
(fun_app\$d suc\$ zero\$))))) :named a73))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$d (power\$
(fun_app\$d suc\$ zero\$)) ?v0) (fun_app\$d suc\$ zero\$)) :pattern
((fun_app\$d (power\$ (fun_app\$d suc\$ zero\$)) ?v0)))) :named a74))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$d
of_nat\$a (fun_app\$d (power\$ ?v0) ?v1)) (fun_app\$d (power\$ (fun_app\$d
of_nat\$a ?v0)) ?v1))) :named a75))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$f of_nat\$
(fun_app\$d (power\$ ?v0) ?v1)) (fun_app\$f (power\$a (fun_app\$f of_nat\$
?v0)) ?v1))) :named a76))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$g
of_nat\$b (fun_app\$d (power\$ ?v0) ?v1)) (fun_app\$g (power\$b (fun_app\$g
of_nat\$b ?v0)) ?v1))) :named a77))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$d of_nat\$a ?v0) (fun_app\$d (power\$ (fun_app\$d of_nat\$a ?v1))
?v2)) (= ?v0 (fun_app\$d (power\$ ?v1) ?v2)))) :named a78))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$f of_nat\$ ?v0) (fun_app\$f (power\$a (fun_app\$f of_nat\$ ?v1))
?v2)) (= ?v0 (fun_app\$d (power\$ ?v1) ?v2)))) :named a79))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$g of_nat\$b ?v0) (fun_app\$g (power\$b (fun_app\$g of_nat\$b ?v1))
?v2)) (= ?v0 (fun_app\$d (power\$ ?v1) ?v2)))) :named a80))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$d (power\$ (fun_app\$d of_nat\$a ?v0)) ?v1) (fun_app\$d of_nat\$a
?v2)) (= (fun_app\$d (power\$ ?v0) ?v1) ?v2))) :named a81))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$f (power\$a (fun_app\$f of_nat\$ ?v0)) ?v1) (fun_app\$f of_nat\$
?v2)) (= (fun_app\$d (power\$ ?v0) ?v1) ?v2))) :named a82))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (= (=
(fun_app\$g (power\$b (fun_app\$g of_nat\$b ?v0)) ?v1) (fun_app\$g of_nat\$b
?v2)) (= (fun_app\$d (power\$ ?v0) ?v1) ?v2))) :named a83))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d
(power\$ ?v0) ?v1) zero\$) (and (= ?v0 zero\$) (fun_app\$b (fun_app\$c less\$
zero\$) ?v1)))) :named a84))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (= (= (fun_app\$f
(power\$a ?v0) ?v1) 0) (and (= ?v0 0) (fun_app\$b (fun_app\$c less\$ zero\$)
?v1)))) :named a85))
(assert (! (forall ((?v0 Real) (?v1 Nat\$)) (= (= (fun_app\$g
(power\$b ?v0) ?v1) 0.0) (and (= ?v0 0.0) (fun_app\$b (fun_app\$c less\$
zero\$) ?v1)))) :named a86))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (not (= ?v0
?v1)) (and (=> (fun_app\$b (fun_app\$c less\$ ?v0) ?v1) false) (=>
(fun_app\$b (fun_app\$c less\$ ?v1) ?v0) false))) false)) :named a87))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (forall
((?v2 Nat\$)) (=> (not (fun_app\$b ?v0 ?v2)) (exists ((?v3 Nat\$)) (and
(fun_app\$b (fun_app\$c less\$ ?v3) ?v2) (not (fun_app\$b ?v0 ?v3))))))
(fun_app\$b ?v0 ?v1))) :named a88))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (forall
((?v2 Nat\$)) (=> (forall ((?v3 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v3) ?v2) (fun_app\$b ?v0 ?v3))) (fun_app\$b ?v0 ?v2))) (fun_app\$b ?v0
?v1))) :named a89))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v0) ?v0) false)) :named a90))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (not (= ?v0 ?v1)))) :named a91))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (not (= ?v1 ?v0)))) :named a92))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$b (fun_app\$c less\$
?v0) ?v0))) :named a93))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (not (= ?v0 ?v1))
(or (fun_app\$b (fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$
?v1) ?v0)))) :named a94))
(assert (! (forall ((?v0 Nat\$)) (=> (and (=> (= ?v0 zero\$)
false) (=> (not (= ?v0 zero\$)) false)) false)) :named a95))
(assert (! (forall ((?v0 Nat\$)) (not (= ?v0 (fun_app\$d suc\$
?v0)))) :named a96))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= (fun_app\$d
suc\$ ?v0) (fun_app\$d suc\$ ?v1)) (= ?v0 ?v1))) :named a97))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$d (minus\$ (fun_app\$d (minus\$ ?v0) ?v1)) ?v2) (fun_app\$d
(minus\$ (fun_app\$d (minus\$ ?v0) ?v2)) ?v1))) :named a98))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (not (= ?v0
zero\$)) (not (= (fun_app\$d (power\$ ?v0) ?v1) zero\$)))) :named a99))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (=> (not (= ?v0 0))
(not (= (fun_app\$f (power\$a ?v0) ?v1) 0)))) :named a100))
(assert (! (forall ((?v0 Real) (?v1 Nat\$)) (=> (not (= ?v0 0.0))
(not (= (fun_app\$g (power\$b ?v0) ?v1) 0.0)))) :named a101))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c less\$
?v0) zero\$) false)) :named a102))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$b ?v0 zero\$) (forall ((?v2 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ zero\$) ?v2) (not (fun_app\$b ?v0 ?v2))) (exists ((?v3
Nat\$)) (and (fun_app\$b (fun_app\$c less\$ ?v3) ?v2) (not (fun_app\$b ?v0
?v3))))))) (fun_app\$b ?v0 ?v1))) :named a103))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (not (= ?v1 zero\$)))) :named a104))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v0) zero\$) false)) :named a105))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$b (fun_app\$c less\$
?v0) zero\$))) :named a106))
(assert (! (forall ((?v0 Nat\$)) (= (not (fun_app\$b (fun_app\$c
less\$ zero\$) ?v0)) (= ?v0 zero\$))) :named a107))
(assert (! (forall ((?v0 Nat\$)) (=> (=> (= ?v0 zero\$) false)
(fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a108))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (not (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1)) (= (fun_app\$b (fun_app\$c less\$ ?v0)
(fun_app\$d suc\$ ?v1)) (= ?v0 ?v1)))) :named a109))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat_bool_fun\$))
(=> (and (fun_app\$b (fun_app\$c less\$ ?v0) ?v1) (and (forall ((?v3
Nat\$)) (=> (= ?v1 (fun_app\$d suc\$ ?v3)) (fun_app\$b ?v2 ?v3))) (forall
((?v3 Nat\$)) (=> (and (fun_app\$b (fun_app\$c less\$ ?v3) ?v1) (fun_app\$b
?v2 (fun_app\$d suc\$ ?v3))) (fun_app\$b ?v2 ?v3))))) (fun_app\$b ?v2
?v0))) :named a110))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2
Nat_nat_bool_fun_fun\$)) (=> (and (fun_app\$b (fun_app\$c less\$ ?v0) ?v1)
(and (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c ?v2 ?v3) (fun_app\$d
suc\$ ?v3))) (forall ((?v3 Nat\$) (?v4 Nat\$) (?v5 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less\$ ?v3) ?v4) (and (fun_app\$b (fun_app\$c less\$
?v4) ?v5) (and (fun_app\$b (fun_app\$c ?v2 ?v3) ?v4) (fun_app\$b
(fun_app\$c ?v2 ?v4) ?v5)))) (fun_app\$b (fun_app\$c ?v2 ?v3) ?v5)))))
(fun_app\$b (fun_app\$c ?v2 ?v0) ?v1))) :named a111))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$ ?v1)
?v2)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) ?v2))) :named
a112))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) (fun_app\$d suc\$ ?v1)) (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1))) :named a113))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (not
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1)) (fun_app\$b (fun_app\$c less\$ ?v0)
(fun_app\$d suc\$ ?v1))) (= ?v1 ?v0))) :named a114))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) ?v1) (exists ((?v2 Nat\$)) (and
(= ?v1 (fun_app\$d suc\$ ?v2)) (fun_app\$b (fun_app\$c less\$ ?v0) ?v2)))))
:named a115))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (forall
((?v2 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$ ?v2) (fun_app\$d suc\$ ?v0))
(fun_app\$b ?v1 ?v2))) (and (fun_app\$b ?v1 ?v0) (forall ((?v2 Nat\$)) (=>
(fun_app\$b (fun_app\$c less\$ ?v2) ?v0) (fun_app\$b ?v1 ?v2)))))) :named
a116))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (not (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1)) (fun_app\$b (fun_app\$c less\$ ?v1) (fun_app\$d
suc\$ ?v0)))) :named a117))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ ?v0) (fun_app\$d suc\$ ?v1)) (or (fun_app\$b (fun_app\$c
less\$ ?v0) ?v1) (= ?v0 ?v1)))) :named a118))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (exists
((?v2 Nat\$)) (and (fun_app\$b (fun_app\$c less\$ ?v2) (fun_app\$d suc\$
?v0)) (fun_app\$b ?v1 ?v2))) (or (fun_app\$b ?v1 ?v0) (exists ((?v2
Nat\$)) (and (fun_app\$b (fun_app\$c less\$ ?v2) ?v0) (fun_app\$b ?v1
?v2)))))) :named a119))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d
suc\$ ?v1)))) :named a120))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) (fun_app\$d suc\$ ?v1)) (and (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) false) (=> (= ?v0 ?v1) false))) false))
:named a121))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (not (= (fun_app\$d suc\$ ?v0) ?v1)))
(fun_app\$b (fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) ?v1))) :named a122))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) ?v1) (forall ((?v2 Nat\$)) (=>
(and (fun_app\$b (fun_app\$c less\$ ?v0) ?v2) (= ?v1 (fun_app\$d suc\$
?v2))) false))) false)) :named a123))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ (fun_app\$d suc\$ ?v0)) ?v1) (fun_app\$b (fun_app\$c less\$
?v0) ?v1))) :named a124))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (and (=> (= ?v1 (fun_app\$d suc\$ ?v0)) false)
(forall ((?v2 Nat\$)) (=> (and (fun_app\$b (fun_app\$c less\$ ?v0) ?v2) (=
?v1 (fun_app\$d suc\$ ?v2))) false)))) false)) :named a125))
(assert (! (forall ((?v0 Nat\$)) (=> (not (= ?v0 zero\$)) (exists
((?v1 Nat\$)) (= ?v0 (fun_app\$d suc\$ ?v1))))) :named a126))
(assert (! (forall ((?v0 Nat\$)) (=> (and (=> (= ?v0 zero\$)
false) (forall ((?v1 Nat\$)) (=> (= ?v0 (fun_app\$d suc\$ ?v1)) false)))
false)) :named a127))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$d suc\$
?v0)))) :named a128))
(assert (! (forall ((?v0 Nat\$)) (=> (= zero\$ (fun_app\$d suc\$
?v0)) false)) :named a129))
(assert (! (forall ((?v0 Nat\$)) (=> (= (fun_app\$d suc\$ ?v0)
zero\$) false)) :named a130))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$b ?v0 ?v1) (forall ((?v2 Nat\$)) (=> (fun_app\$b ?v0 (fun_app\$d
suc\$ ?v2)) (fun_app\$b ?v0 ?v2)))) (fun_app\$b ?v0 zero\$))) :named a131))
(assert (! (forall ((?v0 Nat_nat_bool_fun_fun\$) (?v1 Nat\$) (?v2
Nat\$)) (=> (and (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c ?v0 ?v3)
zero\$)) (and (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c ?v0 zero\$)
(fun_app\$d suc\$ ?v3))) (forall ((?v3 Nat\$) (?v4 Nat\$)) (=> (fun_app\$b
(fun_app\$c ?v0 ?v3) ?v4) (fun_app\$b (fun_app\$c ?v0 (fun_app\$d suc\$
?v3)) (fun_app\$d suc\$ ?v4)))))) (fun_app\$b (fun_app\$c ?v0 ?v1) ?v2)))
:named a132))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$)) (=> (and
(fun_app\$b ?v0 zero\$) (forall ((?v2 Nat\$)) (=> (fun_app\$b ?v0 ?v2)
(fun_app\$b ?v0 (fun_app\$d suc\$ ?v2))))) (fun_app\$b ?v0 ?v1))) :named
a133))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= ?v0 (fun_app\$d
suc\$ ?v1)) (not (= ?v0 zero\$)))) :named a134))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$d suc\$
?v0)))) :named a135))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$d suc\$ ?v0)
zero\$))) :named a136))
(assert (! (forall ((?v0 Nat\$)) (not (= zero\$ (fun_app\$d suc\$
?v0)))) :named a137))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=>
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$
(fun_app\$d (minus\$ ?v0) ?v2)) ?v1))) :named a138))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$ ?v0)
?v2)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d (minus\$ ?v2) ?v1))
(fun_app\$d (minus\$ ?v2) ?v0)))) :named a139))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (minus\$ ?v0)
zero\$) ?v0)) :named a140))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (=
(fun_app\$d (minus\$ ?v0) ?v1) zero\$) (= (fun_app\$d (minus\$ ?v1) ?v0)
zero\$)) (= ?v0 ?v1))) :named a141))
(assert (! (forall ((?v0 Nat_bool_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (fun_app\$b ?v0 ?v1) (forall ((?v3 Nat\$)) (=> (fun_app\$b ?v0
(fun_app\$d suc\$ ?v3)) (fun_app\$b ?v0 ?v3)))) (fun_app\$b ?v0 (fun_app\$d
(minus\$ ?v1) ?v2)))) :named a142))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$ zero\$)
(fun_app\$d (power\$ ?v0) ?v1)))) :named a143))
(assert (! (forall ((?v0 Real) (?v1 Nat\$)) (=> (< 0.0 ?v0) (<
0.0 (fun_app\$g (power\$b ?v0) ?v1)))) :named a144))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (=> (< 0 ?v0) (< 0
(fun_app\$f (power\$a ?v0) ?v1)))) :named a145))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$b (fun_app\$c less\$
(fun_app\$d of_nat\$a ?v0)) zero\$))) :named a146))
(assert (! (forall ((?v0 Nat\$)) (not (< (fun_app\$f of_nat\$ ?v0)
0))) :named a147))
(assert (! (forall ((?v0 Nat\$)) (not (< (fun_app\$g of_nat\$b ?v0)
0.0))) :named a148))
(assert (! (forall ((?v0 Nat_nat_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d ?v0
?v3)) (fun_app\$d ?v0 (fun_app\$d suc\$ ?v3)))) (= (fun_app\$b (fun_app\$c
less\$ (fun_app\$d ?v0 ?v1)) (fun_app\$d ?v0 ?v2)) (fun_app\$b (fun_app\$c
less\$ ?v1) ?v2)))) :named a149))
(assert (! (forall ((?v0 Nat_real_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (< (fun_app\$g ?v0 ?v3) (fun_app\$g ?v0
(fun_app\$d suc\$ ?v3)))) (= (< (fun_app\$g ?v0 ?v1) (fun_app\$g ?v0 ?v2))
(fun_app\$b (fun_app\$c less\$ ?v1) ?v2)))) :named a150))
(assert (! (forall ((?v0 Nat_int_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (< (fun_app\$f ?v0 ?v3) (fun_app\$f ?v0
(fun_app\$d suc\$ ?v3)))) (= (< (fun_app\$f ?v0 ?v1) (fun_app\$f ?v0 ?v2))
(fun_app\$b (fun_app\$c less\$ ?v1) ?v2)))) :named a151))
(assert (! (forall ((?v0 Nat_num_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (forall ((?v3 Nat\$)) (fun_app\$h (less\$a (fun_app\$i ?v0 ?v3))
(fun_app\$i ?v0 (fun_app\$d suc\$ ?v3)))) (= (fun_app\$h (less\$a (fun_app\$i
?v0 ?v1)) (fun_app\$i ?v0 ?v2)) (fun_app\$b (fun_app\$c less\$ ?v1) ?v2))))
:named a152))
(assert (! (forall ((?v0 Nat_nat_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d
?v0 ?v3)) (fun_app\$d ?v0 (fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c
less\$ ?v1) ?v2)) (fun_app\$b (fun_app\$c less\$ (fun_app\$d ?v0 ?v1))
(fun_app\$d ?v0 ?v2)))) :named a153))
(assert (! (forall ((?v0 Nat_real_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (< (fun_app\$g ?v0 ?v3) (fun_app\$g ?v0
(fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c less\$ ?v1) ?v2)) (<
(fun_app\$g ?v0 ?v1) (fun_app\$g ?v0 ?v2)))) :named a154))
(assert (! (forall ((?v0 Nat_int_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (< (fun_app\$f ?v0 ?v3) (fun_app\$f ?v0
(fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c less\$ ?v1) ?v2)) (<
(fun_app\$f ?v0 ?v1) (fun_app\$f ?v0 ?v2)))) :named a155))
(assert (! (forall ((?v0 Nat_num_fun\$) (?v1 Nat\$) (?v2 Nat\$))
(=> (and (forall ((?v3 Nat\$)) (fun_app\$h (less\$a (fun_app\$i ?v0 ?v3))
(fun_app\$i ?v0 (fun_app\$d suc\$ ?v3)))) (fun_app\$b (fun_app\$c less\$ ?v1)
?v2)) (fun_app\$h (less\$a (fun_app\$i ?v0 ?v1)) (fun_app\$i ?v0 ?v2))))
:named a156))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ (fun_app\$d of_nat\$a ?v0)) (fun_app\$d of_nat\$a ?v1))
(fun_app\$b (fun_app\$c less\$ ?v0) ?v1))) :named a157))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (< (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (fun_app\$b (fun_app\$c less\$ ?v0)
?v1))) :named a158))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (< (fun_app\$g
of_nat\$b ?v0) (fun_app\$g of_nat\$b ?v1)) (fun_app\$b (fun_app\$c less\$
?v0) ?v1))) :named a159))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (fun_app\$b (fun_app\$c less\$ (fun_app\$d
of_nat\$a ?v0)) (fun_app\$d of_nat\$a ?v1)))) :named a160))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (< (fun_app\$f of_nat\$ ?v0) (fun_app\$f
of_nat\$ ?v1)))) :named a161))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (< (fun_app\$g of_nat\$b ?v0) (fun_app\$g
of_nat\$b ?v1)))) :named a162))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$d of_nat\$a
(fun_app\$d suc\$ ?v0)) zero\$))) :named a163))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$f of_nat\$
(fun_app\$d suc\$ ?v0)) 0))) :named a164))
(assert (! (forall ((?v0 Nat\$)) (not (= (fun_app\$g of_nat\$b
(fun_app\$d suc\$ ?v0)) 0.0))) :named a165))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$b
(fun_app\$c less\$ ?v0) (fun_app\$d suc\$ ?v1)) (or (= ?v0 zero\$) (exists
((?v2 Nat\$)) (and (= ?v0 (fun_app\$d suc\$ ?v2)) (fun_app\$b (fun_app\$c
less\$ ?v2) ?v1)))))) :named a166))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (exists ((?v1 Nat\$)) (= ?v0 (fun_app\$d suc\$ ?v1))))) :named
a167))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (forall
((?v2 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$ ?v2) (fun_app\$d suc\$ ?v0))
(fun_app\$b ?v1 ?v2))) (and (fun_app\$b ?v1 zero\$) (forall ((?v2 Nat\$))
(=> (fun_app\$b (fun_app\$c less\$ ?v2) ?v0) (fun_app\$b ?v1 (fun_app\$d
suc\$ ?v2))))))) :named a168))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (exists ((?v1 Nat\$)) (= ?v0 (fun_app\$d suc\$ ?v1))))) :named
a169))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat_bool_fun\$)) (= (exists
((?v2 Nat\$)) (and (fun_app\$b (fun_app\$c less\$ ?v2) (fun_app\$d suc\$
?v0)) (fun_app\$b ?v1 ?v2))) (or (fun_app\$b ?v1 zero\$) (exists ((?v2
Nat\$)) (and (fun_app\$b (fun_app\$c less\$ ?v2) ?v0) (fun_app\$b ?v1
(fun_app\$d suc\$ ?v2))))))) :named a170))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$ zero\$) ?v1))
(fun_app\$b (fun_app\$c less\$ (fun_app\$d (minus\$ ?v1) ?v0)) ?v1))) :named
a171))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (fun_app\$b (fun_app\$c
less\$ (fun_app\$d (minus\$ ?v0) ?v1)) (fun_app\$d suc\$ ?v0))) :named
a172))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (= (fun_app\$d suc\$ (fun_app\$d (minus\$ ?v1)
(fun_app\$d suc\$ ?v0))) (fun_app\$d (minus\$ ?v1) ?v0)))) :named a173))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=> (and
(fun_app\$b (fun_app\$c less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$
(fun_app\$d (power\$ ?v0) ?v1)) (fun_app\$d (power\$ ?v0) ?v2))) (fun_app\$b
(fun_app\$c less\$ ?v1) ?v2))) :named a174))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= (fun_app\$d (power\$ zero\$) ?v0) zero\$))) :named a175))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= (fun_app\$f (power\$a 0) ?v0) 0))) :named a176))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= (fun_app\$g (power\$b 0.0) ?v0) 0.0))) :named a177))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$ (fun_app\$d
(minus\$ ?v0) (fun_app\$d suc\$ ?v1))) ?v0))) :named a178))
(assert (! (= (fun_app\$d (power\$ zero\$) (numeral\$ (bit0\$ one\$)))
zero\$) :named a179))
(assert (! (= (fun_app\$f (power\$a 0) (numeral\$ (bit0\$ one\$))) 0)
:named a180))
(assert (! (= (fun_app\$g (power\$b 0.0) (numeral\$ (bit0\$ one\$)))
0.0) :named a181))
(assert (! (forall ((?v0 Real) (?v1 Real)) (= (fun_app\$g
(power\$b (- ?v0 ?v1)) (numeral\$ (bit0\$ one\$))) (fun_app\$g (power\$b (-
?v1 ?v0)) (numeral\$ (bit0\$ one\$))))) :named a182))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$f (power\$a
(- ?v0 ?v1)) (numeral\$ (bit0\$ one\$))) (fun_app\$f (power\$a (- ?v1 ?v0))
(numeral\$ (bit0\$ one\$))))) :named a183))
(assert (! (forall ((?v0 Real)) (not (< (fun_app\$g (power\$b ?v0)
(numeral\$ (bit0\$ one\$))) 0.0))) :named a184))
(assert (! (forall ((?v0 Int)) (not (< (fun_app\$f (power\$a ?v0)
(numeral\$ (bit0\$ one\$))) 0))) :named a185))
(assert (! (= (of_nat\$c (fun_app\$d (power\$ (numeral\$ (bit0\$
one\$))) (len_of\$ type\$))) zero\$a) :named a186))
(assert (! (= (of_nat\$d (fun_app\$d (power\$ (numeral\$ (bit0\$
one\$))) (len_of\$a type\$a))) zero\$b) :named a187))
(assert (! (= (of_nat\$e (fun_app\$d (power\$ (numeral\$ (bit0\$
one\$))) (len_of\$b type\$b))) zero\$c) :named a188))
(assert (! (forall ((?v0 Num\$)) (=> (fun_app\$b (fun_app\$c less\$
(numeral\$ ?v0)) (fun_app\$d (power\$ (numeral\$ (bit0\$ one\$))) (fun_app\$d
(minus\$ (len_of\$ type\$)) (fun_app\$d suc\$ zero\$)))) (not (fun_app\$e msb\$
(numeral\$c ?v0))))) :named a189))
(assert (! (fun_app\$b (fun_app\$c less\$ zero\$) (len_of\$ type\$))
:named a190))
(assert (! (fun_app\$b (fun_app\$c less\$ zero\$) (len_of\$a type\$a))
:named a191))
(assert (! (fun_app\$b (fun_app\$c less\$ zero\$) (len_of\$b type\$b))
:named a192))
(assert (! (= (power\$c (numeral\$c (bit0\$ one\$)) (len_of\$ type\$))
zero\$a) :named a193))
(assert (! (= (power\$d (numeral\$d (bit0\$ one\$)) (len_of\$a
type\$a)) zero\$b) :named a194))
(assert (! (= (power\$e (numeral\$e (bit0\$ one\$)) (len_of\$b
type\$b)) zero\$c) :named a195))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) (fun_app\$d (power\$ (numeral\$ (bit0\$ one\$)))
(fun_app\$d (minus\$ ?v1) (fun_app\$d suc\$ zero\$)))) (fun_app\$b (fun_app\$c
less\$ ?v0) (fun_app\$d (power\$ (numeral\$ (bit0\$ one\$))) ?v1)))) :named
a196))
(assert (! (forall ((?v0 Nat\$)) (=> (and (= (of_nat\$c ?v0)
zero\$a) (fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d (power\$ (numeral\$
(bit0\$ one\$))) (len_of\$ type\$)))) (= ?v0 zero\$))) :named a197))
(assert (! (forall ((?v0 Nat\$)) (=> (and (= (of_nat\$d ?v0)
zero\$b) (fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d (power\$ (numeral\$
(bit0\$ one\$))) (len_of\$a type\$a)))) (= ?v0 zero\$))) :named a198))
(assert (! (forall ((?v0 Nat\$)) (=> (and (= (of_nat\$e ?v0)
zero\$c) (fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d (power\$ (numeral\$
(bit0\$ one\$))) (len_of\$b type\$b)))) (= ?v0 zero\$))) :named a199))
(assert (! (forall ((?v0 Nat\$)) (=> (and (fun_app\$b (fun_app\$c
less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d (power\$
(numeral\$ (bit0\$ one\$))) (len_of\$ type\$)))) (not (= (of_nat\$c ?v0)
zero\$a)))) :named a200))
(assert (! (forall ((?v0 Nat\$)) (=> (and (fun_app\$b (fun_app\$c
less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d (power\$
(numeral\$ (bit0\$ one\$))) (len_of\$a type\$a)))) (not (= (of_nat\$d ?v0)
zero\$b)))) :named a201))
(assert (! (forall ((?v0 Nat\$)) (=> (and (fun_app\$b (fun_app\$c
less\$ zero\$) ?v0) (fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d (power\$
(numeral\$ (bit0\$ one\$))) (len_of\$b type\$b)))) (not (= (of_nat\$e ?v0)
zero\$c)))) :named a202))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$d of_nat\$a (numeral\$
?v0)) (numeral\$ ?v0))) :named a203))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$f of_nat\$ (numeral\$
?v0)) (numeral\$a ?v0))) :named a204))
(assert (! (forall ((?v0 Num\$)) (= (fun_app\$g of_nat\$b (numeral\$
?v0)) (numeral\$b ?v0))) :named a205))
(assert (! (forall ((?v0 Real) (?v1 Real)) (= (< 0.0 (- ?v0
?v1)) (< ?v1 ?v0))) :named a206))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (< 0 (- ?v0 ?v1)) (<
?v1 ?v0))) :named a207))
(assert (! (forall ((?v0 Real) (?v1 Real)) (= (< 0.0 (- ?v0
?v1)) (< ?v1 ?v0))) :named a208))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (< 0 (- ?v0 ?v1)) (<
?v1 ?v0))) :named a209))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) (fun_app\$d (power\$ (numeral\$ (bit0\$ one\$))) ?v1))
(fun_app\$b (fun_app\$c less\$ ?v1) (len_of\$ type\$))) (fun_app\$e (less\$b
(of_nat\$c ?v0)) (power\$c (numeral\$c (bit0\$ one\$)) ?v1)))) :named a210))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) (fun_app\$d (power\$ (numeral\$ (bit0\$ one\$))) ?v1))
(fun_app\$b (fun_app\$c less\$ ?v1) (len_of\$a type\$a))) (less\$c (of_nat\$d
?v0) (power\$d (numeral\$d (bit0\$ one\$)) ?v1)))) :named a211))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) (fun_app\$d (power\$ (numeral\$ (bit0\$ one\$))) ?v1))
(fun_app\$b (fun_app\$c less\$ ?v1) (len_of\$b type\$b))) (less\$d (of_nat\$e
?v0) (power\$e (numeral\$e (bit0\$ one\$)) ?v1)))) :named a212))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) (fun_app\$d (power\$ (numeral\$ (bit0\$ one\$)))
(len_of\$ type\$))) (fun_app\$b (fun_app\$c less\$ ?v1) (fun_app\$d (power\$
(numeral\$ (bit0\$ one\$))) (len_of\$ type\$)))) (= (fun_app\$b (fun_app\$c
less\$ ?v1) ?v0) (fun_app\$e (less\$b (of_nat\$c ?v1)) (of_nat\$c ?v0)))))
:named a213))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) (fun_app\$d (power\$ (numeral\$ (bit0\$ one\$)))
(len_of\$a type\$a))) (fun_app\$b (fun_app\$c less\$ ?v1) (fun_app\$d (power\$
(numeral\$ (bit0\$ one\$))) (len_of\$a type\$a)))) (= (fun_app\$b (fun_app\$c
less\$ ?v1) ?v0) (less\$c (of_nat\$d ?v1) (of_nat\$d ?v0))))) :named a214))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) (fun_app\$d (power\$ (numeral\$ (bit0\$ one\$)))
(len_of\$b type\$b))) (fun_app\$b (fun_app\$c less\$ ?v1) (fun_app\$d (power\$
(numeral\$ (bit0\$ one\$))) (len_of\$b type\$b)))) (= (fun_app\$b (fun_app\$c
less\$ ?v1) ?v0) (less\$d (of_nat\$e ?v1) (of_nat\$e ?v0))))) :named a215))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (numeral\$ ?v0)
(numeral\$ ?v1)) (= ?v0 ?v1))) :named a216))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (numeral\$a ?v0)
(numeral\$a ?v1)) (= ?v0 ?v1))) :named a217))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (numeral\$b ?v0)
(numeral\$b ?v1)) (= ?v0 ?v1))) :named a218))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (bit0\$ ?v0)
(bit0\$ ?v1)) (= ?v0 ?v1))) :named a219))
(assert (! (forall ((?v0 Nat\$)) (= (not (fun_app\$b (fun_app\$c
less\$ zero\$) ?v0)) (= ?v0 zero\$))) :named a220))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (fun_app\$b
(fun_app\$c less\$ (numeral\$ ?v0)) (numeral\$ ?v1)) (fun_app\$h (less\$a
?v0) ?v1))) :named a221))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (< (numeral\$a ?v0)
(numeral\$a ?v1)) (fun_app\$h (less\$a ?v0) ?v1))) :named a222))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (< (numeral\$b ?v0)
(numeral\$b ?v1)) (fun_app\$h (less\$a ?v0) ?v1))) :named a223))
(assert (! (forall ((?v0 Real)) (! (= (- ?v0 ?v0) 0.0) :pattern
((uu\$ ?v0)))) :named a224))
(assert (! (forall ((?v0 Int)) (! (= (- ?v0 ?v0) 0) :pattern
((uua\$ ?v0)))) :named a225))
(assert (! (forall ((?v0 Real)) (= (- ?v0 0.0) ?v0)) :named
a226))
(assert (! (forall ((?v0 Int)) (= (- ?v0 0) ?v0)) :named a227))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (minus\$ zero\$)
?v0) zero\$)) :named a228))
(assert (! (forall ((?v0 Real)) (= (- ?v0 0.0) ?v0)) :named
a229))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$d (minus\$ ?v0)
zero\$) ?v0)) :named a230))
(assert (! (forall ((?v0 Int)) (= (- ?v0 0) ?v0)) :named a231))
(assert (! (forall ((?v0 Real)) (! (= (- ?v0 ?v0) 0.0) :pattern
((uu\$ ?v0)))) :named a232))
(assert (! (forall ((?v0 Nat\$)) (! (= (fun_app\$d (minus\$ ?v0)
?v0) zero\$) :pattern ((minus\$ ?v0)))) :named a233))
(assert (! (forall ((?v0 Int)) (! (= (- ?v0 ?v0) 0) :pattern
((uua\$ ?v0)))) :named a234))
(assert (! (forall ((?v0 Num\$)) (= (word_of_int\$ (numeral\$a
?v0)) (numeral\$c ?v0))) :named a235))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (minus\$a
(word_of_int\$ ?v0) (word_of_int\$ ?v1)) (word_of_int\$ (- ?v0 ?v1))))
:named a236))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (minus\$a
(word_of_int\$ ?v0) (word_of_int\$ ?v1)) (word_of_int\$ (- ?v0 ?v1))))
:named a237))
(assert (! (forall ((?v0 Num0_itself\$)) (! (= (len_of\$c ?v0)
zero\$) :pattern ((len_of\$c ?v0)))) :named a238))
(assert (! (forall ((?v0 Finite_2_itself\$)) (! (= (len_of\$a ?v0)
(numeral\$ (bit0\$ one\$))) :pattern ((len_of\$a ?v0)))) :named a239))
(assert (! (forall ((?v0 Finite_3_itself\$)) (! (= (len_of\$b ?v0)
(numeral\$ (bit0\$ (bit0\$ one\$)))) :pattern ((len_of\$b ?v0)))) :named
a240))
(assert (! (forall ((?v0 Nat\$)) (= (= zero\$ ?v0) (= ?v0 zero\$)))
:named a241))
(assert (! (forall ((?v0 Int)) (= (= 0 ?v0) (= ?v0 0))) :named
a242))
(assert (! (forall ((?v0 Real)) (= (= 0.0 ?v0) (= ?v0 0.0)))
:named a243))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int)) (=>
(= (- ?v0 ?v1) (- ?v2 ?v3)) (= (= ?v0 ?v1) (= ?v2 ?v3)))) :named a244))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$d (minus\$ (fun_app\$d (minus\$ ?v0) ?v1)) ?v2) (fun_app\$d
(minus\$ (fun_app\$d (minus\$ ?v0) ?v2)) ?v1))) :named a245))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (= (- (- ?v0
?v1) ?v2) (- (- ?v0 ?v2) ?v1))) :named a246))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$) (?v3 Nat\$))
(=> false (= (fun_app\$d (power\$ ?v0) ?v1) (fun_app\$d (power\$ ?v2)
?v3)))) :named a247))
(assert (! (forall ((?v0 Int) (?v1 Nat\$) (?v2 Int) (?v3 Nat\$))
(=> false (= (fun_app\$f (power\$a ?v0) ?v1) (fun_app\$f (power\$a ?v2)
?v3)))) :named a248))
(assert (! (forall ((?v0 Real) (?v1 Nat\$) (?v2 Real) (?v3 Nat\$))
(=> false (= (fun_app\$g (power\$b ?v0) ?v1) (fun_app\$g (power\$b ?v2)
?v3)))) :named a249))
(assert (! (forall ((?v0 L_word\$)) (exists ((?v1 Int)) (= ?v0
(word_of_int\$ ?v1)))) :named a250))
(assert (! (forall ((?v0 L_word_bool_fun\$) (?v1 L_word\$)) (=>
(forall ((?v2 Int)) (fun_app\$e ?v0 (word_of_int\$ ?v2))) (fun_app\$e ?v0
?v1))) :named a251))
(assert (! (forall ((?v0 Int) (?v1 Nat\$)) (= (power\$c
(word_of_int\$ ?v0) ?v1) (word_of_int\$ (fun_app\$f (power\$a ?v0) ?v1))))
:named a252))
(assert (! (= zero\$a (word_of_int\$ 0)) :named a253))
(assert (! (forall ((?v0 Num\$)) (! (= (numeral\$c ?v0)
(word_of_int\$ (numeral\$a ?v0))) :pattern ((numeral\$c ?v0)))) :named
a254))
(assert (! (= zero\$a (word_of_int\$ 0)) :named a255))
(assert (! (not (fun_app\$e msb\$ zero\$a)) :named a256))
(assert (! (not (fun_app\$b (fun_app\$c less\$ zero\$) zero\$))
:named a257))
(assert (! (not (< 0.0 0.0)) :named a258))
(assert (! (not (< 0 0)) :named a259))
(assert (! (forall ((?v0 Nat\$)) (=> (=> (= ?v0 zero\$) false)
(fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a260))
(assert (! (forall ((?v0 Nat\$)) (not (fun_app\$b (fun_app\$c less\$
?v0) zero\$))) :named a261))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (fun_app\$b
(fun_app\$c less\$ ?v0) ?v1) (not (= ?v1 zero\$)))) :named a262))
(assert (! (forall ((?v0 Nat\$)) (= (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (not (= ?v0 zero\$)))) :named a263))
(assert (! (forall ((?v0 Num\$)) (not (= zero\$ (numeral\$ ?v0))))
:named a264))
(assert (! (forall ((?v0 Num\$)) (not (= 0 (numeral\$a ?v0))))
:named a265))
(assert (! (forall ((?v0 Num\$)) (not (= 0.0 (numeral\$b ?v0))))
:named a266))
(assert (! (forall ((?v0 Real) (?v1 Real)) (= (= ?v0 ?v1) (= (-
?v0 ?v1) 0.0))) :named a267))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (= ?v0 ?v1) (= (-
?v0 ?v1) 0))) :named a268))
(assert (! (forall ((?v0 Real) (?v1 Real) (?v2 Real) (?v3 Real))
(=> (and (< ?v0 ?v1) (< ?v2 ?v3)) (< (- ?v0 ?v3) (- ?v1 ?v2)))) :named
a269))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int)) (=>
(and (< ?v0 ?v1) (< ?v2 ?v3)) (< (- ?v0 ?v3) (- ?v1 ?v2)))) :named
a270))
(assert (! (forall ((?v0 Real) (?v1 Real) (?v2 Real) (?v3 Real))
(=> (= (- ?v0 ?v1) (- ?v2 ?v3)) (= (< ?v0 ?v1) (< ?v2 ?v3)))) :named
a271))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int)) (=>
(= (- ?v0 ?v1) (- ?v2 ?v3)) (= (< ?v0 ?v1) (< ?v2 ?v3)))) :named a272))
(assert (! (forall ((?v0 Real) (?v1 Real) (?v2 Real)) (=> (< ?v0
?v1) (< (- ?v2 ?v1) (- ?v2 ?v0)))) :named a273))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (=> (< ?v0
?v1) (< (- ?v2 ?v1) (- ?v2 ?v0)))) :named a274))
(assert (! (forall ((?v0 Real) (?v1 Real) (?v2 Real)) (=> (< ?v0
?v1) (< (- ?v0 ?v2) (- ?v1 ?v2)))) :named a275))
(assert (! (forall ((?v0 Int) (?v1 Int) (?v2 Int)) (=> (< ?v0
?v1) (< (- ?v0 ?v2) (- ?v1 ?v2)))) :named a276))
(assert (! (forall ((?v0 Num\$)) (not (= one\$ (bit0\$ ?v0))))
:named a277))
(assert (! (forall ((?v0 Nat\$)) (! (= (of_nat\$c ?v0)
(word_of_int\$ (fun_app\$f of_nat\$ ?v0))) :pattern ((of_nat\$c ?v0))))
:named a278))
(assert (! (forall ((?v0 Num\$)) (fun_app\$b (fun_app\$c less\$
zero\$) (numeral\$ ?v0))) :named a279))
(assert (! (forall ((?v0 Num\$)) (< 0 (numeral\$a ?v0))) :named
a280))
(assert (! (forall ((?v0 Num\$)) (< 0.0 (numeral\$b ?v0))) :named
a281))
(assert (! (forall ((?v0 Num\$)) (not (fun_app\$b (fun_app\$c less\$
(numeral\$ ?v0)) zero\$))) :named a282))
(assert (! (forall ((?v0 Num\$)) (not (< (numeral\$a ?v0) 0)))
:named a283))
(assert (! (forall ((?v0 Num\$)) (not (< (numeral\$b ?v0) 0.0)))
:named a284))
(assert (! (forall ((?v0 Real) (?v1 Real)) (= (< ?v0 ?v1) (< (-
?v0 ?v1) 0.0))) :named a285))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (< ?v0 ?v1) (< (-
?v0 ?v1) 0))) :named a286))
(assert (! (not (= (len_of\$ type\$) zero\$)) :named a287))
(assert (! (not (= (len_of\$a type\$a) zero\$)) :named a288))
(assert (! (not (= (len_of\$b type\$b) zero\$)) :named a289))
(assert (! (forall ((?v0 L_word\$) (?v1 L_word\$)) (=> (= (len_of\$
type\$) zero\$) (= ?v0 ?v1))) :named a290))
(assert (! (forall ((?v0 Num0_word\$) (?v1 Num0_word\$)) (=> (=
(len_of\$c type\$c) zero\$) (= ?v0 ?v1))) :named a291))
(assert (! (forall ((?v0 Finite_2_word\$) (?v1 Finite_2_word\$))
(=> (= (len_of\$a type\$a) zero\$) (= ?v0 ?v1))) :named a292))
(assert (! (forall ((?v0 Finite_3_word\$) (?v1 Finite_3_word\$))
(=> (= (len_of\$b type\$b) zero\$) (= ?v0 ?v1))) :named a293))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (= (fun_app\$d
suc\$ ?v0) ?v1) (= ?v0 (fun_app\$d (minus\$ ?v1) (fun_app\$d suc\$
zero\$))))) :named a294))
(assert (! (forall ((?v0 Nat\$)) (= (word_of_int\$ (fun_app\$f
(power\$a 2) ?v0)) (power\$c (numeral\$c (bit0\$ one\$)) ?v0))) :named
a295))
(assert (! (forall ((?v0 Nat\$)) (=> (not (= (fun_app\$d of_nat\$a
?v0) zero\$)) (fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a296))
(assert (! (forall ((?v0 Nat\$)) (=> (not (= (fun_app\$f of_nat\$
?v0) 0)) (fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a297))
(assert (! (forall ((?v0 Nat\$)) (=> (not (= (fun_app\$g of_nat\$b
?v0) 0.0)) (fun_app\$b (fun_app\$c less\$ zero\$) ?v0))) :named a298))
(assert (! (= (numeral\$ one\$) (fun_app\$d suc\$ zero\$)) :named
a299))
(assert (! (= (not (= (len_of\$ type\$) (fun_app\$d suc\$ zero\$)))
(exists ((?v0 Nat\$)) (= (len_of\$ type\$) (fun_app\$d suc\$ (fun_app\$d suc\$
?v0))))) :named a300))
(assert (! (= (not (= (len_of\$a type\$a) (fun_app\$d suc\$ zero\$)))
(exists ((?v0 Nat\$)) (= (len_of\$a type\$a) (fun_app\$d suc\$ (fun_app\$d
suc\$ ?v0))))) :named a301))
(assert (! (= (not (= (len_of\$b type\$b) (fun_app\$d suc\$ zero\$)))
(exists ((?v0 Nat\$)) (= (len_of\$b type\$b) (fun_app\$d suc\$ (fun_app\$d
suc\$ ?v0))))) :named a302))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) (len_of\$ type\$)) (fun_app\$b (fun_app\$c less\$ ?v1)
(len_of\$ type\$))) (= (= (power\$c (numeral\$c (bit0\$ one\$)) ?v0) (power\$c
(numeral\$c (bit0\$ one\$)) ?v1)) (= ?v0 ?v1)))) :named a303))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) (len_of\$a type\$a)) (fun_app\$b (fun_app\$c less\$
?v1) (len_of\$a type\$a))) (= (= (power\$d (numeral\$d (bit0\$ one\$)) ?v0)
(power\$d (numeral\$d (bit0\$ one\$)) ?v1)) (= ?v0 ?v1)))) :named a304))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (=> (and (fun_app\$b
(fun_app\$c less\$ ?v0) (len_of\$b type\$b)) (fun_app\$b (fun_app\$c less\$
?v1) (len_of\$b type\$b))) (= (= (power\$e (numeral\$e (bit0\$ one\$)) ?v0)
(power\$e (numeral\$e (bit0\$ one\$)) ?v1)) (= ?v0 ?v1)))) :named a305))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v0) (len_of\$ type\$)) (not (= (power\$c (numeral\$c (bit0\$ one\$)) ?v0)
zero\$a)))) :named a306))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v0) (len_of\$a type\$a)) (not (= (power\$d (numeral\$d (bit0\$ one\$)) ?v0)
zero\$b)))) :named a307))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v0) (len_of\$b type\$b)) (not (= (power\$e (numeral\$e (bit0\$ one\$)) ?v0)
zero\$c)))) :named a308))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v0) (len_of\$ type\$)) (fun_app\$e (less\$b (of_nat\$c ?v0)) (power\$c
(numeral\$c (bit0\$ one\$)) ?v0)))) :named a309))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v0) (len_of\$a type\$a)) (less\$c (of_nat\$d ?v0) (power\$d (numeral\$d
(bit0\$ one\$)) ?v0)))) :named a310))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v0) (len_of\$b type\$b)) (less\$d (of_nat\$e ?v0) (power\$e (numeral\$e
(bit0\$ one\$)) ?v0)))) :named a311))
(assert (! (= (numeral\$ (bit0\$ one\$)) (fun_app\$d suc\$ (fun_app\$d
suc\$ zero\$))) :named a312))
(assert (! (= (word_of_int\$ (fun_app\$f (power\$a 2) (len_of\$
type\$))) zero\$a) :named a313))
(assert (! (= (word_of_int\$a (fun_app\$f (power\$a 2) (len_of\$c
type\$c))) zero\$d) :named a314))
(assert (! (= (word_of_int\$b (fun_app\$f (power\$a 2) (len_of\$a
type\$a))) zero\$b) :named a315))
(assert (! (= (word_of_int\$c (fun_app\$f (power\$a 2) (len_of\$b
type\$b))) zero\$c) :named a316))
(assert (! (forall ((?v0 Nat\$)) (=> (fun_app\$b (fun_app\$c less\$
?v0) (numeral\$ (bit0\$ one\$))) (or (= ?v0 zero\$) (= ?v0 (fun_app\$d suc\$
zero\$))))) :named a317))
(assert (! (forall ((?v0 L_word\$)) (exists ((?v1 Nat\$)) (and (=
?v0 (of_nat\$c ?v1)) (fun_app\$b (fun_app\$c less\$ ?v1) (fun_app\$d (power\$
(numeral\$ (bit0\$ one\$))) (len_of\$ type\$)))))) :named a318))
(assert (! (forall ((?v0 Finite_2_word\$)) (exists ((?v1 Nat\$))
(and (= ?v0 (of_nat\$d ?v1)) (fun_app\$b (fun_app\$c less\$ ?v1) (fun_app\$d
(power\$ (numeral\$ (bit0\$ one\$))) (len_of\$a type\$a)))))) :named a319))
(assert (! (forall ((?v0 Finite_3_word\$)) (exists ((?v1 Nat\$))
(and (= ?v0 (of_nat\$e ?v1)) (fun_app\$b (fun_app\$c less\$ ?v1) (fun_app\$d
(power\$ (numeral\$ (bit0\$ one\$))) (len_of\$b type\$b)))))) :named a320))
(assert (! (forall ((?v0 Finite_3_word\$)) (=> (forall ((?v1
Nat\$)) (=> (and (= ?v0 (of_nat\$e ?v1)) (fun_app\$b (fun_app\$c less\$ ?v1)
(fun_app\$d (power\$ (numeral\$ (bit0\$ one\$))) (len_of\$b type\$b))))
false)) false)) :named a321))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$)) (= (= (fun_app\$f
of_nat\$ ?v0) (numeral\$a ?v1)) (= ?v0 (numeral\$ ?v1)))) :named a322))
(assert (! (forall ((?v0 Nat\$)) (fun_app\$b (fun_app\$c less\$ ?v0)
(fun_app\$d (power\$ (numeral\$ (bit0\$ one\$))) ?v0))) :named a323))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$)) (= (< (numeral\$b ?v0)
(fun_app\$g of_nat\$b ?v1)) (fun_app\$b (fun_app\$c less\$ (numeral\$ ?v0))
?v1))) :named a324))
(assert (! (forall ((?v0 Nat\$) (?v1 Num\$)) (= (< (fun_app\$g
of_nat\$b ?v0) (numeral\$b ?v1)) (fun_app\$b (fun_app\$c less\$ ?v0)
(numeral\$ ?v1)))) :named a325))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)) (= ?v0 ?v1))) :named a326))
(assert (! (= (< 0 0) false) :named a327))
(assert (! (forall ((?v0 Int)) (= (- ?v0 0) ?v0)) :named a328))
(assert (! (forall ((?v0 Int)) (=> (and (=> (< ?v0 0) false)
(and (=> (= ?v0 0) false) (=> (< 0 ?v0) false))) false)) :named a329))
(assert (! (forall ((?v0 Int)) (=> (forall ((?v1 Nat\$) (?v2
Nat\$)) (=> (= ?v0 (- (fun_app\$f of_nat\$ ?v1) (fun_app\$f of_nat\$ ?v2)))
false)) false)) :named a330))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less\$ ?v0) (fun_app\$d (minus\$ ?v1) (fun_app\$d
(minus\$ ?v1) ?v2))) (and (fun_app\$b (fun_app\$c less\$ ?v0) ?v1)
(fun_app\$b (fun_app\$c less\$ ?v0) ?v2)))) :named a331))
(assert (! (forall ((?v0 Int)) (=> (< 0 ?v0) (exists ((?v1
Nat\$)) (and (fun_app\$b (fun_app\$c less\$ zero\$) ?v1) (= ?v0 (fun_app\$f
of_nat\$ ?v1)))))) :named a332))
(assert (! (forall ((?v0 Int)) (=> (and (< 0 ?v0) (forall ((?v1
Nat\$)) (=> (and (= ?v0 (fun_app\$f of_nat\$ ?v1)) (fun_app\$b (fun_app\$c
less\$ zero\$) ?v1)) false))) false)) :named a333))
(assert (! (forall ((?v0 Num\$)) (! (= (fun_app\$h (less\$a one\$)
(bit0\$ ?v0)) true) :pattern ((bit0\$ ?v0)))) :named a334))
(assert (! (forall ((?v0 Num\$)) (! (= (fun_app\$h (less\$a ?v0)
one\$) false) :pattern ((less\$a ?v0)))) :named a335))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (! (= (fun_app\$h
(less\$a (bit0\$ ?v0)) (bit0\$ ?v1)) (fun_app\$h (less\$a ?v0) ?v1))
:pattern ((fun_app\$h (less\$a (bit0\$ ?v0)) (bit0\$ ?v1))))) :named a336))
(assert (! (forall ((?v0 Nat\$)) (< 0 (fun_app\$f (power\$a 2)
?v0))) :named a337))
(assert (! (fun_app\$b (fun_app\$c less\$ zero\$) (numeral\$ (bit0\$
one\$))) :named a338))
(assert (! (forall ((?v0 Num\$)) (= (= one\$ (bit0\$ ?v0)) false))
:named a339))
(assert (! (forall ((?v0 Num\$)) (= (= (bit0\$ ?v0) one\$) false))
:named a340))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (= (bit0\$ ?v0)
(bit0\$ ?v1)) (= ?v0 ?v1))) :named a341))
(assert (! (= (= one\$ one\$) true) :named a342))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat_bool_fun\$))
(= (exists ((?v3 Nat\$)) (and (= ?v0 (fun_app\$d suc\$ ?v3)) (or (= ?v3
?v1) (fun_app\$b ?v2 ?v3)))) (or (= ?v0 (fun_app\$d suc\$ ?v1)) (exists
((?v3 Nat\$)) (and (= ?v0 (fun_app\$d suc\$ ?v3)) (fun_app\$b ?v2 ?v3))))))
:named a343))
(assert (! (forall ((?v0 Nat\$)) (or (fun_app\$b (fun_app\$c less\$
zero\$) ?v0) (= zero\$ ?v0))) :named a344))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (= (fun_app\$d
(minus\$ ?v0) ?v1) ?v0) (or (= ?v1 zero\$) (= ?v0 zero\$)))) :named a345))
(assert (! (forall ((?v0 Real) (?v1 Nat\$)) (=> (< 0.0 ?v0)
(exists ((?v2 Real)) (and (< 0.0 ?v2) (= (fun_app\$g (power\$b ?v2)
(fun_app\$d suc\$ ?v1)) ?v0))))) :named a346))
(assert (! (forall ((?v0 Nat\$) (?v1 Real)) (=> (and (fun_app\$b
(fun_app\$c less\$ zero\$) ?v0) (< 0.0 ?v1)) (exists ((?v2 Real)) (and (<
0.0 ?v2) (= (fun_app\$g (power\$b ?v2) ?v0) ?v1))))) :named a347))
(assert (! (forall ((?v0 Nat\$) (?v1 Real)) (=> (and (fun_app\$b
(fun_app\$c less\$ zero\$) ?v0) (< 0.0 ?v1)) (exists ((?v2 Real)) (and
(and (< 0.0 ?v2) (= (fun_app\$g (power\$b ?v2) ?v0) ?v1)) (forall ((?v3
Real)) (=> (and (< 0.0 ?v3) (= (fun_app\$g (power\$b ?v3) ?v0) ?v1)) (=
?v3 ?v2))))))) :named a348))
(assert (! (< 0 2) :named a349))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$f of_nat\$
(fun_app\$d (minus\$ ?v0) ?v1)) (ite (< (fun_app\$f of_nat\$ ?v0)
(fun_app\$f of_nat\$ ?v1)) 0 (- (fun_app\$f of_nat\$ ?v0) (fun_app\$f
of_nat\$ ?v1))))) :named a350))
(assert (! (=> (fun_app\$b (fun_app\$c less\$ n\$) (fun_app\$d
(power\$ (numeral\$ (bit0\$ one\$))) (fun_app\$d (minus\$ (len_of\$ type\$))
(fun_app\$d suc\$ zero\$)))) (= n\$ (nat\$ (sint\$ (word_of_int\$ (fun_app\$f
of_nat\$ n\$)))))) :named a351))
(assert (! (forall ((?v0 Nat\$)) (= (nat\$ (fun_app\$f of_nat\$
?v0)) ?v0)) :named a352))
(assert (! (forall ((?v0 Num\$)) (= (nat\$ (numeral\$a ?v0))
(numeral\$ ?v0))) :named a353))
(assert (! (forall ((?v0 Int) (?v1 Int)) (= (fun_app\$b
(fun_app\$c less\$ (nat\$ ?v0)) (nat\$ ?v1)) (and (< 0 ?v1) (< ?v0 ?v1))))
:named a354))
(assert (! (forall ((?v0 Int)) (= (fun_app\$b (fun_app\$c less\$
zero\$) (nat\$ ?v0)) (< 0 ?v0))) :named a355))
(assert (! (forall ((?v0 Num\$) (?v1 Num\$)) (= (fun_app\$d (minus\$
(numeral\$ ?v0)) (numeral\$ ?v1)) (nat\$ (- (numeral\$a ?v0) (numeral\$a
?v1))))) :named a356))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Int)) (= (=
(fun_app\$d (power\$ (numeral\$ ?v0)) ?v1) (nat\$ ?v2)) (= (fun_app\$f
(power\$a (numeral\$a ?v0)) ?v1) ?v2))) :named a357))
(assert (! (forall ((?v0 Int) (?v1 Num\$) (?v2 Nat\$)) (= (= (nat\$
?v0) (fun_app\$d (power\$ (numeral\$ ?v1)) ?v2)) (= ?v0 (fun_app\$f
(power\$a (numeral\$a ?v1)) ?v2)))) :named a358))
(assert (! (forall ((?v0 Num\$) (?v1 Nat\$) (?v2 Int)) (=
(fun_app\$b (fun_app\$c less\$ (fun_app\$d (power\$ (numeral\$ ?v0)) ?v1))
(nat\$ ?v2)) (< (fun_app\$f (power\$a (numeral\$a ?v0)) ?v1) ?v2))) :named
a359))
(assert (! (forall ((?v0 Int) (?v1 Num\$) (?v2 Nat\$)) (=
(fun_app\$b (fun_app\$c less\$ (nat\$ ?v0)) (fun_app\$d (power\$ (numeral\$
?v1)) ?v2)) (< ?v0 (fun_app\$f (power\$a (numeral\$a ?v1)) ?v2)))) :named
a360))
(assert (! (= zero\$ (nat\$ 0)) :named a361))
(assert (! (forall ((?v0 Num\$)) (! (= (numeral\$ ?v0) (nat\$
(numeral\$a ?v0))) :pattern ((numeral\$ ?v0)))) :named a362))
(assert (! (forall ((?v0 Nat\$) (?v1 Nat\$)) (= (fun_app\$f of_nat\$
(fun_app\$d (minus\$ ?v0) ?v1)) (fun_app\$f of_nat\$ (nat\$ (- (fun_app\$f
of_nat\$ ?v0) (fun_app\$f of_nat\$ ?v1)))))) :named a363))
(check-sat)
(get-unsat-core)

SMT: Invoking SMT solver "cvc4" ...
"e": Try this: by (metis One_nat_def le_less_trans less_not_refl
msb_unat_big snat_in_bounds_aux unat_of_nat_eq word_of_nat) (40 ms)
"vampire": Try this: by (metis One_nat_def le_less_trans max_unat_def
msb_unat_big nat_neq_iff nat_numeral snat_in_bounds_aux unat_split_asm
word_of_nat) (80 ms)
SMT: Solver:
SMT: Result:
unsat
((set-logic <null>)
(declare-fun ?v0!39 () Nat\$)
(proof
(let ((?x244 (fun_app\$a of_nat\$ n\$)))
(let ((?x245 (fun_app\$i word_of_int\$ ?x244)))
(let ((?x451 (fun_app\$k sint\$ ?x245)))
(let ((?x452 (nat\$ ?x451)))
(let ((?x14090 (of_nat\$b ?x452)))
(let ((?x236 (fun_app\$b suc\$ zero\$)))
(let ((?x1977 (fun_app\$b suc\$ ?x236)))
(let ((?x13654 (power\$a ?x1977)))
(let ((?x13674 (fun_app\$b ?x13654 ?x236)))
(let ((?x8654 (fun_app\$b suc\$ ?v0!39)))
(let ((?x8655 (fun_app\$b suc\$ ?x8654)))
(let ((?x13655 (fun_app\$b ?x13654 ?x8655)))
(let ((?x13673 (divide\$b ?x13655)))
(let ((?x13675 (fun_app\$b ?x13673 ?x13674)))
(let ((?x29940 (of_nat\$b ?x13675)))
(let ((?x29941 (less_eq\$ ?x29940)))
(let ((\$x31736 (fun_app\$d ?x29941 ?x14090)))
(let ((?x33 (len_of\$ type\$)))
(let ((?x34 (minus\$ ?x33)))
(let ((?x237 (fun_app\$b ?x34 ?x236)))
(let ((?x231 (bit0\$ one\$a)))
(let ((?x402 (numeral\$b ?x231)))
(let ((?x403 (power\$b ?x402)))
(let ((?x404 (fun_app\$j ?x403 ?x237)))
(let ((?x405 (less_eq\$ ?x404)))
(let ((\$x14268 (fun_app\$d ?x405 ?x245)))
(let ((\$x1028613 (= ?x14090 ?x245)))
(let ((?x14570 (fun_app\$a of_nat\$ ?x452)))
(let ((\$x20198 (= ?x244 ?x14570)))
(let ((\$x453 (= n\$ ?x452)))
(let ((?x232 (numeral\$ ?x231)))
(let ((?x233 (power\$a ?x232)))
(let ((?x238 (fun_app\$b ?x233 ?x237)))
(let ((?x228 (fun_app\$h less\$ n\$)))
(let ((\$x239 (fun_app\$e ?x228 ?x238)))
(let ((@x240 (asserted \$x239)))
(let ((\$x456 (not \$x239)))
(let ((\$x457 (or \$x456 \$x453)))
(let ((@x462 (mp (asserted (=> \$x239 \$x453)) (rewrite (= (=>
\$x239 \$x453) \$x457)) \$x457)))
(let ((@x1093637 (monotonicity (symm (unit-resolution @x462
@x240 \$x453) (= ?x452 n\$)) (= ?x14570 ?x244))))
(let ((@x1093640 (monotonicity (symm @x1093637 \$x20198) (= ?x245
(fun_app\$i word_of_int\$ ?x14570)))))
(let ((?x1029495 (fun_app\$i word_of_int\$ ?x14570)))
(let ((\$x1029496 (= ?x14090 ?x1029495)))
(let ((\$x488 (forall ((?v0 Nat\$) )(! (let ((?x483 (of_nat\$b
?v0)))
(= ?x483 (fun_app\$i word_of_int\$ (fun_app\$a of_nat\$ ?v0))))
:pattern ( (of_nat\$b ?v0) ) :qid k!197))
))
(let ((?x483 (of_nat\$b ?0)))
(let ((\$x486 (= ?x483 (fun_app\$i word_of_int\$ (fun_app\$a of_nat\$
?0)))))
(let ((@x6078 (mp~ (asserted \$x488) (nnf-pos (refl (~ \$x486
\$x486)) (~ \$x488 \$x488)) \$x488)))
(let ((\$x18574 (not \$x488)))
(let ((\$x1029501 (or \$x18574 \$x1029496)))
(let ((@x1029502 ((_ quant-inst (nat\$ ?x451)) \$x1029501)))
(let ((@x1093645 (trans (unit-resolution @x1029502 @x6078
\$x1029496) (symm @x1093640 (= ?x1029495 ?x245)) \$x1028613)))
(let ((?x14688 (of_nat\$b ?x238)))
(let ((\$x16342 (= ?x404 ?x14688)))
(let ((\$x11091 (forall ((?v0 Nat\$) )(! (let ((?x231 (bit0\$
one\$a)))
(let ((?x402 (numeral\$b ?x231)))
(let ((?x403 (power\$b ?x402)))
(let ((?x818 (fun_app\$j ?x403 ?v0)))
(= ?x818 (of_nat\$b (fun_app\$b (power\$a (numeral\$ ?x231))
?v0))))))) :pattern ( (fun_app\$j (power\$b (numeral\$b (bit0\$ one\$a)))
?v0) ) :pattern ( (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) ?v0) )
:qid k!238))
))
(let ((\$x950 (forall ((?v0 Nat\$) )(! (let ((?x231 (bit0\$
one\$a)))
(let ((?x402 (numeral\$b ?x231)))
(let ((?x403 (power\$b ?x402)))
(let ((?x818 (fun_app\$j ?x403 ?v0)))
(= ?x818 (of_nat\$b (fun_app\$b (power\$a (numeral\$ ?x231))
?v0))))))) :qid k!238))
))
(let ((?x818 (fun_app\$j ?x403 ?0)))
(let ((\$x949 (= ?x818 (of_nat\$b (fun_app\$b ?x233 ?0)))))
(let ((@x6029 (mp~ (asserted \$x950) (nnf-pos (refl (~ \$x949
\$x949)) (~ \$x950 \$x950)) \$x950)))
(let ((@x11096 (mp @x6029 (quant-intro (refl (= \$x949 \$x949)) (=
\$x950 \$x11091)) \$x11091)))
(let ((\$x16355 (not \$x11091)))
(let ((\$x16356 (or \$x16355 \$x16342)))
(let ((@x16357 ((_ quant-inst (fun_app\$b ?x34 ?x236)) \$x16356)))
(let ((\$x8656 (= ?x33 ?x8655)))
(let ((\$x5134 (= ?x33 ?x236)))
(let ((\$x5135 (not \$x5134)))
(let ((@x5137 (asserted \$x5135)))
(let ((\$x8674 (or \$x5134 \$x8656)))
(let ((\$x8662 (forall ((?v0 Nat\$) )(! (not (= (len_of\$ type\$)
(fun_app\$b suc\$ (fun_app\$b suc\$ ?v0)))) :qid k!586))
))
(let ((\$x8666 (or \$x5135 \$x8662)))
(let ((@x8676 (monotonicity (rewrite (= (not \$x5135) \$x5134)) (=
(or (not \$x5135) \$x8656) \$x8674))))
(let ((@x8679 (monotonicity @x8676 (= (and (or (not \$x5135)
\$x8656) \$x8666) (and \$x8674 \$x8666)))))
(let ((\$x8668 (and (or (not \$x5135) \$x8656) \$x8666)))
(let ((\$x5731 (exists ((?v0 Nat\$) )(! (let ((?x33 (len_of\$
type\$)))
(= ?x33 (fun_app\$b suc\$ (fun_app\$b suc\$ ?v0)))) :qid k!586))
))
(let ((\$x5734 (= \$x5135 \$x5731)))
(let ((\$x8659 (not (= ?x33 (fun_app\$b suc\$ (fun_app\$b suc\$
?0))))))
(let ((@x8670 (nnf-pos (refl (~ \$x5135 \$x5135)) (refl (~ (not
\$x5135) (not \$x5135))) (sk (~ \$x5731 \$x8656)) (nnf-neg (refl (~ \$x8659
\$x8659)) (~ (not \$x5731) \$x8662)) (~ \$x5734 \$x8668))))
(let ((@x5739 (mp (asserted (= \$x5135 \$x5731)) (rewrite (= (=
\$x5135 \$x5731) \$x5734)) \$x5734)))
(let ((@x8681 (and-elim (mp (mp~ @x5739 @x8670 \$x8668) @x8679
(and \$x8674 \$x8666)) \$x8674)))
(let ((@x1093567 (monotonicity (symm (unit-resolution @x8681
@x5137 \$x8656) (= ?x8655 ?x33)) (= (minus\$ ?x8655) ?x34))))
(let ((@x1093571 (monotonicity (symm @x1093567 (= ?x34 (minus\$
?x8655))) (= ?x237 (fun_app\$b (minus\$ ?x8655) ?x236)))))
(let ((@x1093573 (monotonicity @x1093571 (= ?x238 (fun_app\$b
?x233 (fun_app\$b (minus\$ ?x8655) ?x236))))))
(let ((?x13670 (minus\$ ?x8655)))
(let ((?x13671 (fun_app\$b ?x13670 ?x236)))
(let ((?x14027 (fun_app\$b ?x233 ?x13671)))
(let ((?x13672 (fun_app\$b ?x13654 ?x13671)))
(let ((@x1093560 (monotonicity (symm (asserted (= ?x232 ?x1977))
(= ?x1977 ?x232)) (= ?x13654 ?x233))))
(let ((@x1093579 (symm (monotonicity (symm @x1093560 (= ?x233
?x13654)) (= ?x14027 ?x13672)) (= ?x13672 ?x14027))))
(let ((\$x13676 (= ?x13672 ?x13675)))
(let ((?x355 (fun_app\$h less\$ zero\$)))
(let ((\$x13668 (fun_app\$e ?x355 ?x1977)))
(let ((\$x13626 (= ?x1977 zero\$)))
(let ((\$x13669 (not \$x13668)))
(let ((\$x15498 (= \$x13669 \$x13626)))
(let ((\$x11809 (forall ((?v0 Nat\$) )(! (let ((\$x361 (= ?v0
zero\$)))
(let ((?x355 (fun_app\$h less\$ zero\$)))
(let ((\$x650 (fun_app\$e ?x355 ?v0)))
(let ((\$x658 (not \$x650)))
(= \$x658 \$x361))))) :pattern ( (fun_app\$e (fun_app\$h less\$
zero\$) ?v0) ) :qid k!368))
))
(let ((\$x2692 (forall ((?v0 Nat\$) )(! (let ((\$x361 (= ?v0
zero\$)))
(let ((?x355 (fun_app\$h less\$ zero\$)))
(let ((\$x650 (fun_app\$e ?x355 ?v0)))
(let ((\$x658 (not \$x650)))
(= \$x658 \$x361))))) :qid k!368))
))
(let ((\$x361 (= ?0 zero\$)))
(let ((\$x650 (fun_app\$e ?x355 ?0)))
(let ((\$x658 (not \$x650)))
(let ((\$x2689 (= \$x658 \$x361)))
(let ((\$x2686 (forall ((?v0 Nat\$) )(! (let ((\$x361 (= ?v0
zero\$)))
(let ((?x355 (fun_app\$h less\$ zero\$)))
(let ((\$x650 (fun_app\$e ?x355 ?v0)))
(let ((\$x658 (not \$x650)))
(= \$x658 \$x361))))) :qid k!368))
))
(let ((@x2697 (mp (asserted \$x2686) (quant-intro (rewrite (= (=
\$x658 \$x361) \$x2689)) (= \$x2686 \$x2692)) \$x2692)))
(let ((@x11814 (mp (mp~ @x2697 (nnf-pos (refl (~ \$x2689 \$x2689))
(~ \$x2692 \$x2692)) \$x2692) (quant-intro (refl (= \$x2689 \$x2689)) (=
\$x2692 \$x11809)) \$x11809)))
(let ((\$x15529 (not \$x11809)))
(let ((\$x15530 (or \$x15529 \$x15498)))
(let ((@x15531 ((_ quant-inst (fun_app\$b suc\$ ?x236)) \$x15530)))
(let ((\$x13637 (not \$x13626)))
(let ((\$x12412 (forall ((?v0 Nat\$) )(! (not (= (fun_app\$b suc\$
?v0) zero\$)) :pattern ( (fun_app\$b suc\$ ?v0) ) :qid k!477))
))
(let ((\$x4289 (forall ((?v0 Nat\$) )(! (not (= (fun_app\$b suc\$
?v0) zero\$)) :qid k!477))
))
(let ((\$x4286 (not (= (fun_app\$b suc\$ ?0) zero\$))))
(let ((\$x4284 (forall ((?v0 Nat\$) )(! (=> (= (fun_app\$b suc\$
?v0) zero\$) false) :qid k!477))
))
(let ((@x4291 (quant-intro (rewrite (= (=> (= (fun_app\$b suc\$
?0) zero\$) false) \$x4286)) (= \$x4284 \$x4289))))
(let ((@x7917 (mp~ (mp (asserted \$x4284) @x4291 \$x4289) (nnf-pos
(refl (~ \$x4286 \$x4286)) (~ \$x4289 \$x4289)) \$x4289)))
(let ((@x12417 (mp @x7917 (quant-intro (refl (= \$x4286 \$x4286))
(= \$x4289 \$x12412)) \$x12412)))
(let ((\$x16168 (not \$x12412)))
(let ((\$x16601 (or \$x16168 \$x13637)))
(let ((@x16602 ((_ quant-inst (fun_app\$b suc\$ zero\$)) \$x16601)))
(let ((@x1093548 (unit-resolution (def-axiom (or (not \$x15498)
\$x13668 \$x13626)) (unit-resolution @x16602 @x12417 \$x13637) (unit-
resolution @x15531 @x11814 \$x15498) \$x13668)))
(let ((?x13663 (fun_app\$h less_eq\$a ?x236)))
(let ((\$x13664 (fun_app\$e ?x13663 ?x8655)))
(let ((\$x13753 (fun_app\$e ?x355 ?x8655)))
(let ((\$x13763 (= zero\$ ?x8654)))
(let ((\$x13762 (fun_app\$e ?x355 ?x8654)))
(let ((\$x13765 (or \$x13762 \$x13763)))
(let ((\$x13766 (= \$x13753 \$x13765)))
(let ((\$x12175 (forall ((?v0 Nat\$) (?v1 Nat\$) )(! (let ((?x666
(fun_app\$b suc\$ ?v1)))
(let ((?x719 (fun_app\$h less\$ ?v0)))
(let ((\$x3224 (fun_app\$e ?x719 ?x666)))
(= \$x3224 (or (fun_app\$e ?x719 ?v1) (= ?v0 ?v1)))))) :pattern (
(fun_app\$e (fun_app\$h less\$ ?v0) (fun_app\$b suc\$ ?v1)) ) :qid k!437))
))
(let ((\$x3720 (forall ((?v0 Nat\$) (?v1 Nat\$) )(! (let ((?x666
(fun_app\$b suc\$ ?v1)))
(let ((?x719 (fun_app\$h less\$ ?v0)))
(let ((\$x3224 (fun_app\$e ?x719 ?x666)))
(= \$x3224 (or (fun_app\$e ?x719 ?v1) (= ?v0 ?v1)))))) :qid
k!437))
))
(let ((?x666 (fun_app\$b suc\$ ?0)))
(let ((?x719 (fun_app\$h less\$ ?1)))
(let ((\$x3224 (fun_app\$e ?x719 ?x666)))
(let ((\$x3717 (= \$x3224 (or (fun_app\$e ?x719 ?0) (= ?1 ?0)))))
(let ((\$x3715 (forall ((?v0 Nat\$) (?v1 Nat\$) )(! (let ((?x666
(fun_app\$b suc\$ ?v1)))
(let ((?x719 (fun_app\$h less\$ ?v0)))
(let ((\$x3224 (fun_app\$e ?x719 ?x666)))
(= \$x3224 (or (fun_app\$e ?x719 ?v1) (= ?v0 ?v1)))))) :qid
k!437))
))
(let ((@x3719 (rewrite (= (= \$x3224 (or (fun_app\$e ?x719 ?0) (=
?1 ?0))) \$x3717))))
(let ((@x7589 (mp~ (mp (asserted \$x3715) (quant-intro @x3719 (=
\$x3715 \$x3720)) \$x3720) (nnf-pos (refl (~ \$x3717 \$x3717)) (~ \$x3720
\$x3720)) \$x3720)))
(let ((@x12180 (mp @x7589 (quant-intro (refl (= \$x3717 \$x3717))
(= \$x3720 \$x12175)) \$x12175)))
(let ((\$x13699 (not \$x12175)))
(let ((\$x13775 (or \$x13699 \$x13766)))
(let ((@x13776 ((_ quant-inst zero\$ (fun_app\$b suc\$ ?v0!39))
\$x13775)))
(let ((\$x11076 (forall ((?v0 Nat\$) )(! (let ((?x666 (fun_app\$b
suc\$ ?v0)))
(let ((?x355 (fun_app\$h less\$ zero\$)))
(fun_app\$e ?x355 ?x666))) :pattern ( (fun_app\$b suc\$ ?v0) ) :qid
k!235))
))
(let ((\$x926 (forall ((?v0 Nat\$) )(! (let ((?x666 (fun_app\$b
suc\$ ?v0)))
(let ((?x355 (fun_app\$h less\$ zero\$)))
(fun_app\$e ?x355 ?x666))) :qid k!235))
))
(let ((@x11080 (quant-intro (refl (= (fun_app\$e ?x355 ?x666)
(fun_app\$e ?x355 ?x666))) (= \$x926 \$x11076))))
(let ((@x3620 (nnf-pos (refl (~ (fun_app\$e ?x355 ?x666)
(fun_app\$e ?x355 ?x666))) (~ \$x926 \$x926))))
(let ((@x11081 (mp (mp~ (asserted \$x926) @x3620 \$x926) @x11080
\$x11076)))
(let ((\$x16244 (not \$x11076)))
(let ((\$x17305 (or \$x16244 \$x13762)))
(let ((@x17306 ((_ quant-inst ?v0!39) \$x17305)))
(let ((@x1093551 (unit-resolution (def-axiom (or \$x13765 (not
\$x13762))) (unit-resolution @x17306 @x11081 \$x13762) \$x13765)))
(let ((@x1093552 (unit-resolution (def-axiom (or (not \$x13766)
\$x13753 (not \$x13765))) @x1093551 (unit-resolution @x13776 @x12180
\$x13766) \$x13753)))
(let ((\$x13754 (not \$x13753)))
(let ((\$x15204 (or \$x13754 \$x13664)))
(let ((\$x12507 (forall ((?v0 Nat\$) (?v1 Nat\$) )(! (let ((\$x4479
(fun_app\$e (fun_app\$h less_eq\$a (fun_app\$b suc\$ ?v0)) ?v1)))
(let ((?x719 (fun_app\$h less\$ ?v0)))
(let ((\$x954 (fun_app\$e ?x719 ?v1)))
(let ((\$x1078 (not \$x954)))
(or \$x1078 \$x4479))))) :pattern ( (fun_app\$e (fun_app\$h less\$
?v0) ?v1) ) :pattern ( (fun_app\$e (fun_app\$h less_eq\$a (fun_app\$b suc\$
?v0)) ?v1) ) :qid k!495))
))
(let ((\$x4486 (forall ((?v0 Nat\$) (?v1 Nat\$) )(! (let ((\$x4479
(fun_app\$e (fun_app\$h less_eq\$a (fun_app\$b suc\$ ?v0)) ?v1)))
(let ((?x719 (fun_app\$h less\$ ?v0)))
(let ((\$x954 (fun_app\$e ?x719 ?v1)))
(let ((\$x1078 (not \$x954)))
(or \$x1078 \$x4479))))) :qid k!495))
))
(let ((\$x4479 (fun_app\$e (fun_app\$h less_eq\$a (fun_app\$b suc\$
?1)) ?0)))
(let ((\$x954 (fun_app\$e ?x719 ?0)))
(let ((\$x1078 (not \$x954)))
(let ((\$x4483 (or \$x1078 \$x4479)))
(let ((\$x4481 (forall ((?v0 Nat\$) (?v1 Nat\$) )(! (let ((\$x4479
(fun_app\$e (fun_app\$h less_eq\$a (fun_app\$b suc\$ ?v0)) ?v1)))
(let ((?x719 (fun_app\$h less\$ ?v0)))
(let ((\$x954 (fun_app\$e ?x719 ?v1)))
(=> \$x954 \$x4479)))) :qid k!495))
))
(let ((@x4491 (mp (asserted \$x4481) (quant-intro (rewrite (= (=>
\$x954 \$x4479) \$x4483)) (= \$x4481 \$x4486)) \$x4486)))
(let ((@x12512 (mp (mp~ @x4491 (nnf-pos (refl (~ \$x4483 \$x4483))
(~ \$x4486 \$x4486)) \$x4486) (quant-intro (refl (= \$x4483 \$x4483)) (=
\$x4486 \$x12507)) \$x12507)))
(let ((\$x14633 (not \$x12507)))
(let ((\$x15207 (or \$x14633 \$x13754 \$x13664)))
(let ((@x15212 (mp ((_ quant-inst zero\$ (fun_app\$b suc\$ ?x8654))
(or \$x14633 \$x15204)) (rewrite (= (or \$x14633 \$x15204) \$x15207))
\$x15207)))
(let ((\$x13667 (not \$x13664)))
(let ((\$x13677 (or \$x13667 \$x13669 \$x13676)))
(let ((\$x13243 (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$) )(!
(let ((?x6296 (fun_app\$b (divide\$b (fun_app\$b (power\$a ?v2) ?v1))
(fun_app\$b (power\$a ?v2) ?v0))))
(let ((\$x6297 (= (fun_app\$b (power\$a ?v2) (fun_app\$b (minus\$
?v1) ?v0)) ?x6296)))
(let ((?x355 (fun_app\$h less\$ zero\$)))
(let ((\$x650 (fun_app\$e ?x355 ?v2)))
(let ((\$x658 (not \$x650)))
(let ((\$x1015 (fun_app\$e (fun_app\$h less_eq\$a ?v0) ?v1)))
(let ((\$x9019 (not \$x1015)))
(or \$x9019 \$x658 \$x6297)))))))) :pattern ( (fun_app\$b (power\$a
?v2) (fun_app\$b (minus\$ ?v1) ?v0)) ) :pattern ( (fun_app\$b (divide\$b
(fun_app\$b (power\$a ?v2) ?v1)) (fun_app\$b (power\$a ?v2) ?v0)) ) :qid
k!620))
))
(let ((\$x10793 (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$) )(!
(let ((?x6296 (fun_app\$b (divide\$b (fun_app\$b (power\$a ?v2) ?v1))
(fun_app\$b (power\$a ?v2) ?v0))))
(let ((\$x6297 (= (fun_app\$b (power\$a ?v2) (fun_app\$b (minus\$
?v1) ?v0)) ?x6296)))
(let ((?x355 (fun_app\$h less\$ zero\$)))
(let ((\$x650 (fun_app\$e ?x355 ?v2)))
(let ((\$x658 (not \$x650)))
(let ((\$x1015 (fun_app\$e (fun_app\$h less_eq\$a ?v0) ?v1)))
(let ((\$x9019 (not \$x1015)))
(or \$x9019 \$x658 \$x6297)))))))) :qid k!620))
))
(let ((?x6296 (fun_app\$b (divide\$b (fun_app\$b (power\$a ?0) ?1))
(fun_app\$b (power\$a ?0) ?2))))
(let ((\$x6297 (= (fun_app\$b (power\$a ?0) (fun_app\$b (minus\$ ?1)
?2)) ?x6296)))
(let ((\$x1015 (fun_app\$e (fun_app\$h less_eq\$a ?2) ?1)))
(let ((\$x9019 (not \$x1015)))
(let ((\$x10788 (or \$x9019 \$x658 \$x6297)))
(let ((\$x6305 (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$) )(! (let
((?x6296 (fun_app\$b (divide\$b (fun_app\$b (power\$a ?v2) ?v1)) (fun_app\$b
(power\$a ?v2) ?v0))))
(let ((\$x6297 (= (fun_app\$b (power\$a ?v2) (fun_app\$b (minus\$
?v1) ?v0)) ?x6296)))
(let ((?x355 (fun_app\$h less\$ zero\$)))
(let ((\$x650 (fun_app\$e ?x355 ?v2)))
(let ((\$x1015 (fun_app\$e (fun_app\$h less_eq\$a ?v0) ?v1)))
(let ((\$x6280 (and \$x1015 \$x650)))
(let ((\$x6301 (not \$x6280)))
(or \$x6301 \$x6297)))))))) :qid k!620))
))
(let ((@x10780 (monotonicity (rewrite (= (and \$x1015 \$x650) (not
(or \$x9019 \$x658)))) (= (not (and \$x1015 \$x650)) (not (not (or \$x9019
\$x658)))))))
(let ((@x10784 (trans @x10780 (rewrite (= (not (not (or \$x9019
\$x658))) (or \$x9019 \$x658))) (= (not (and \$x1015 \$x650)) (or \$x9019
\$x658)))))
(let ((@x10787 (monotonicity @x10784 (= (or (not (and \$x1015
\$x650)) \$x6297) (or (or \$x9019 \$x658) \$x6297)))))
(let ((@x10792 (trans @x10787 (rewrite (= (or (or \$x9019 \$x658)
\$x6297) \$x10788)) (= (or (not (and \$x1015 \$x650)) \$x6297) \$x10788))))
(let ((@x8873 (refl (~ (or (not (and \$x1015 \$x650)) \$x6297) (or
(not (and \$x1015 \$x650)) \$x6297)))))
(let ((\$x6299 (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$) )(! (let
((?x6296 (fun_app\$b (divide\$b (fun_app\$b (power\$a ?v2) ?v1)) (fun_app\$b
(power\$a ?v2) ?v0))))
(let ((\$x6297 (= (fun_app\$b (power\$a ?v2) (fun_app\$b (minus\$
?v1) ?v0)) ?x6296)))
(let ((?x355 (fun_app\$h less\$ zero\$)))
(let ((\$x650 (fun_app\$e ?x355 ?v2)))
(let ((\$x1015 (fun_app\$e (fun_app\$h less_eq\$a ?v0) ?v1)))
(let ((\$x6280 (and \$x1015 \$x650)))
(=> \$x6280 \$x6297))))))) :qid k!620))
))
(let ((@x6304 (rewrite (= (=> (and \$x1015 \$x650) \$x6297) (or
(not (and \$x1015 \$x650)) \$x6297)))))
(let ((@x8876 (mp~ (mp (asserted \$x6299) (quant-intro @x6304 (=
\$x6299 \$x6305)) \$x6305) (nnf-pos @x8873 (~ \$x6305 \$x6305)) \$x6305)))
(let ((@x13248 (mp (mp @x8876 (quant-intro @x10792 (= \$x6305
\$x10793)) \$x10793) (quant-intro (refl (= \$x10788 \$x10788)) (= \$x10793
\$x13243)) \$x13243)))
(let ((\$x13680 (not \$x13243)))
(let ((\$x13681 (or \$x13680 \$x13667 \$x13669 \$x13676)))
(let ((@x13686 (mp ((_ quant-inst (fun_app\$b suc\$ zero\$)
(fun_app\$b suc\$ ?x8654) (fun_app\$b suc\$ ?x236)) (or \$x13680 \$x13677))
(rewrite (= (or \$x13680 \$x13677) \$x13681)) \$x13681)))
(let ((@x1093556 (unit-resolution (unit-resolution @x13686
@x13248 \$x13677) (unit-resolution (unit-resolution @x15212 @x12512
\$x15204) @x1093552 \$x13664) @x1093548 \$x13676)))
(let ((@x1093585 (trans (trans (symm @x1093556 (= ?x13675
?x13672)) @x1093579 (= ?x13675 ?x14027)) (symm @x1093573 (= ?x14027
?x238)) (= ?x13675 ?x238))))
(let ((@x1093652 (trans (monotonicity @x1093585 (= ?x29940
?x14688)) (symm (unit-resolution @x16357 @x11096 \$x16342) (= ?x14688
?x404)) (= ?x29940 ?x404))))
(let ((@x1093658 (symm (monotonicity (monotonicity @x1093652 (=
?x29941 ?x405)) @x1093645 (= \$x31736 \$x14268)) (= \$x14268 \$x31736))))
(let ((\$x246 (fun_app\$d msb\$ ?x245)))
(let ((\$x14269 (= \$x246 \$x14268)))
(let ((\$x414 (forall ((?v0 L_word\$) )(! (let ((?x236 (fun_app\$b
suc\$ zero\$)))
(let ((?x33 (len_of\$ type\$)))
(let ((?x34 (minus\$ ?x33)))
(let ((?x237 (fun_app\$b ?x34 ?x236)))
(let ((?x231 (bit0\$ one\$a)))
(let ((?x402 (numeral\$b ?x231)))
(let ((?x403 (power\$b ?x402)))
(let ((?x404 (fun_app\$j ?x403 ?x237)))
(let ((?x405 (less_eq\$ ?x404)))
(let ((\$x401 (fun_app\$d msb\$ ?v0)))
(= \$x401 (fun_app\$d ?x405 ?v0)))))))))))) :pattern ( (fun_app\$d
msb\$ ?v0) ) :qid k!192))
))
(let ((\$x401 (fun_app\$d msb\$ ?0)))
(let ((\$x411 (= \$x401 (fun_app\$d ?x405 ?0))))
(let ((\$x409 (forall ((?v0 L_word\$) )(! (let ((?x236 (fun_app\$b
suc\$ zero\$)))
(let ((?x33 (len_of\$ type\$)))
(let ((?x34 (minus\$ ?x33)))
(let ((?x237 (fun_app\$b ?x34 ?x236)))
(let ((?x231 (bit0\$ one\$a)))
(let ((?x402 (numeral\$b ?x231)))
(let ((?x403 (power\$b ?x402)))
(let ((?x404 (fun_app\$j ?x403 ?x237)))
(let ((?x405 (less_eq\$ ?x404)))
(let ((\$x401 (fun_app\$d msb\$ ?v0)))
(= \$x401 (fun_app\$d ?x405 ?v0)))))))))))) :pattern ( (fun_app\$d
msb\$ ?v0) ) :qid k!192))
))
(let ((@x416 (quant-intro (rewrite (= (= \$x401 (fun_app\$d ?x405
?0)) \$x411)) (= \$x409 \$x414))))
(let ((@x2976 (mp~ (mp (asserted \$x409) @x416 \$x414) (nnf-pos
(refl (~ \$x411 \$x411)) (~ \$x414 \$x414)) \$x414)))
(let ((\$x14285 (not \$x414)))
(let ((\$x14286 (or \$x14285 \$x14269)))
(let ((@x14287 ((_ quant-inst (fun_app\$i word_of_int\$ ?x244))
\$x14286)))
(let ((@x247 (asserted \$x246)))
(let ((@x1093633 (unit-resolution (def-axiom (or (not \$x14269)
(not \$x246) \$x14268)) @x247 (or (not \$x14269) \$x14268))))
(let ((@x1093659 (mp (unit-resolution @x1093633 (unit-resolution
@x14287 @x2976 \$x14269) \$x14268) @x1093658 \$x31736)))
(let ((\$x31754 (not \$x31736)))
(let ((?x29872 (fun_app\$h less_eq\$a ?x13675)))
(let ((\$x31671 (fun_app\$e ?x29872 ?x452)))
(let ((\$x31694 (not \$x31671)))
(let ((@x1093589 (monotonicity (monotonicity @x1093585 (=
?x29872 (fun_app\$h less_eq\$a ?x238))) (= \$x31671 (fun_app\$e (fun_app\$h
less_eq\$a ?x238) ?x452)))))
(let ((@x1093593 (monotonicity (symm @x1093589 (= (fun_app\$e
(fun_app\$h less_eq\$a ?x238) ?x452) \$x31671)) (= (not (fun_app\$e
(fun_app\$h less_eq\$a ?x238) ?x452)) \$x31694))))
(let ((?x14766 (fun_app\$h less_eq\$a ?x238)))
(let ((\$x14784 (fun_app\$e ?x14766 ?x452)))
(let ((\$x14806 (not \$x14784)))
(let ((?x14017 (fun_app\$h less\$ ?x452)))
(let ((\$x14096 (fun_app\$e ?x14017 ?x238)))
(let ((\$x14097 (not \$x14096)))
(let ((\$x14797 (= \$x14784 \$x14097)))
(let ((\$x11193 (forall ((?v0 Nat\$) (?v1 Nat\$) )(! (let ((?x665
(fun_app\$h less\$ ?v1)))
(let ((\$x1185 (fun_app\$e ?x665 ?v0)))
(let ((\$x1186 (not \$x1185)))
(let ((\$x1184 (fun_app\$e (fun_app\$h less_eq\$a ?v0) ?v1)))
(= \$x1184 \$x1186))))) :pattern ( (fun_app\$e (fun_app\$h less_eq\$a
?v0) ?v1) ) :pattern ( (fun_app\$e (fun_app\$h less\$ ?v1) ?v0) ) :qid
k!254))
))
(let ((\$x1193 (forall ((?v0 Nat\$) (?v1 Nat\$) )(! (let ((?x665
(fun_app\$h less\$ ?v1)))
(let ((\$x1185 (fun_app\$e ?x665 ?v0)))
(let ((\$x1186 (not \$x1185)))
(let ((\$x1184 (fun_app\$e (fun_app\$h less_eq\$a ?v0) ?v1)))
(= \$x1184 \$x1186))))) :qid k!254))
))
(let ((?x665 (fun_app\$h less\$ ?0)))
(let ((\$x1185 (fun_app\$e ?x665 ?1)))
(let ((\$x1186 (not \$x1185)))
(let ((\$x1184 (fun_app\$e (fun_app\$h less_eq\$a ?1) ?0)))
(let ((\$x1190 (= \$x1184 \$x1186)))
(let ((\$x1188 (forall ((?v0 Nat\$) (?v1 Nat\$) )(! (let ((?x665
(fun_app\$h less\$ ?v1)))
(let ((\$x1185 (fun_app\$e ?x665 ?v0)))
(let ((\$x1186 (not \$x1185)))
(let ((\$x1184 (fun_app\$e (fun_app\$h less_eq\$a ?v0) ?v1)))
(= \$x1184 \$x1186))))) :qid k!254))
))
(let ((@x1198 (mp (asserted \$x1188) (quant-intro (rewrite (= (=
\$x1184 \$x1186) \$x1190)) (= \$x1188 \$x1193)) \$x1193)))
(let ((@x11198 (mp (mp~ @x1198 (nnf-pos (refl (~ \$x1190 \$x1190))
(~ \$x1193 \$x1193)) \$x1193) (quant-intro (refl (= \$x1190 \$x1190)) (=
\$x1193 \$x11193)) \$x11193)))
(let ((\$x14800 (not \$x11193)))
(let ((\$x14801 (or \$x14800 \$x14797)))
(let ((@x14802 ((_ quant-inst (fun_app\$b ?x233 ?x237) (nat\$
?x451)) \$x14801)))
(let ((@x1093539 (monotonicity (symm (unit-resolution @x462
@x240 \$x453) (= ?x452 n\$)) (= ?x14017 ?x228))))
(let ((@x1093544 (mp @x240 (symm (monotonicity @x1093539 (=
\$x14096 \$x239)) (= \$x239 \$x14096)) \$x14096)))
(let ((@x1093545 (unit-resolution (def-axiom (or (not \$x14797)
\$x14806 \$x14097)) @x1093544 (unit-resolution @x14802 @x11198 \$x14797)
\$x14806)))
(let ((\$x31737 (= \$x31671 \$x31736)))
(let ((?x786 (fun_app\$b ?x233 ?x33)))
(let ((\$x14747 (fun_app\$e ?x14017 ?x786)))
(let ((@x1093603 (monotonicity (symm (unit-resolution @x8681
@x5137 \$x8656) (= ?x8655 ?x33)) (= (fun_app\$b ?x233 ?x8655) ?x786))))
(let ((?x14018 (fun_app\$b ?x233 ?x8655)))
(let ((\$x14071 (fun_app\$e ?x14017 ?x14018)))
(let ((\$x14028 (fun_app\$e ?x14017 ?x14027)))
(let ((@x1093598 (symm (monotonicity @x1093539 (symm @x1093573
(= ?x14027 ?x238)) (= \$x14028 \$x239)) (= \$x239 \$x14028))))
(let ((\$x14029 (not \$x14028)))
(let ((\$x14072 (or \$x14029 \$x14071)))
(let ((\$x10975 (forall ((?v0 Nat\$) (?v1 Nat\$) )(! (let ((?x231
(bit0\$ one\$a)))
(let ((?x232 (numeral\$ ?x231)))
(let ((?x233 (power\$a ?x232)))
(let ((?x723 (fun_app\$b ?x233 ?v1)))
(let ((?x719 (fun_app\$h less\$ ?v0)))
(let ((\$x724 (fun_app\$e ?x719 ?x723)))
(let ((\$x722 (fun_app\$e ?x719 (fun_app\$b ?x233 (fun_app\$b
(minus\$ ?v1) (fun_app\$b suc\$ zero\$))))))
(or (not \$x722) \$x724)))))))) :pattern ( (fun_app\$e (fun_app\$h
less\$ ?v0) (fun_app\$b (power\$a (numeral\$ (bit0\$ one\$a))) (fun_app\$b
(minus\$ ?v1) (fun_app\$b suc\$ zero\$)))) ) :qid k!215))
))
(let ((\$x732 (forall ((?v0 Nat\$) (?v1 Nat\$) )(! (let ((?x231
(bit0\$ one\$a)))
(let ((?x232 (numeral\$ ?x231)))
(let ((?x233 (power\$a ?x232)))
(let ((?x723 (fun_app\$b ?x233 ?v1)))
(let ((?x719 (fun_app\$h less\$ ?v0)))
(let ((\$x724 (fun_app\$e ?x719 ?x723)))
(let ((\$x722 (fun_app\$e ?x719 (fun_app\$b ?x233 (fun_app\$b
(minus\$ ?v1) (fun_app\$b suc\$ zero\$))))))
(or (not \$x722) \$x724)))))))) :qid k!215))
))
(let ((?x723 (fun_app\$b ?x233 ?0)))
(let ((\$x724 (fun_app\$e ?x719 ?x723)))
(let ((\$x729 (or (not (fun_app\$e ?x719 (fun_app\$b ?x233
(fun_app\$b (minus\$ ?0) ?x236)))) \$x724)))
(let ((\$x726 (forall ((?v0 Nat\$) (?v1 Nat\$) )(! (let ((?x231
(bit0\$ one\$a)))
(let ((?x232 (numeral\$ ?x231)))
(let ((?x233 (power\$a ?x232)))
(let ((?x723 (fun_app\$b ?x233 ?v1)))
(let ((?x719 (fun_app\$h less\$ ?v0)))
(let ((\$x724 (fun_app\$e ?x719 ?x723)))
(let ((\$x722 (fun_app\$e ?x719 (fun_app\$b ?x233 (fun_app\$b
(minus\$ ?v1) (fun_app\$b suc\$ zero\$))))))
(=> \$x722 \$x724)))))))) :qid k!215))
))
(let ((\$x722 (fun_app\$e ?x719 (fun_app\$b ?x233 (fun_app\$b
(minus\$ ?0) ?x236)))))
(let ((@x737 (mp (asserted \$x726) (quant-intro (rewrite (= (=>
\$x722 \$x724) \$x729)) (= \$x726 \$x732)) \$x732)))
(let ((@x10980 (mp (mp~ @x737 (nnf-pos (refl (~ \$x729 \$x729)) (~
\$x732 \$x732)) \$x732) (quant-intro (refl (= \$x729 \$x729)) (= \$x732
\$x10975)) \$x10975)))
(let ((\$x14082 (not \$x10975)))
(let ((\$x14083 (or \$x14082 \$x14029 \$x14071)))
(let ((@x14088 (mp ((_ quant-inst (nat\$ ?x451) (fun_app\$b suc\$
?x8654)) (or \$x14082 \$x14072)) (rewrite (= (or \$x14082 \$x14072)
\$x14083)) \$x14083)))
(let ((@x1093601 (unit-resolution (unit-resolution @x14088
@x10980 \$x14072) (mp @x240 @x1093598 \$x14028) \$x14071)))
(let ((?x29937 (fun_app\$h less\$ ?x13675)))
(let ((\$x29938 (fun_app\$e ?x29937 ?x786)))
(let ((?x14252 (unat\$ ?x245)))
(let ((?x29914 (fun_app\$h less\$ ?x14252)))
(let ((\$x29924 (fun_app\$e ?x29914 ?x786)))
(let ((\$x11006 (forall ((?v0 L_word\$) )(! (let ((?x33 (len_of\$
type\$)))
(let ((?x231 (bit0\$ one\$a)))
(let ((?x232 (numeral\$ ?x231)))
(let ((?x233 (power\$a ?x232)))
(let ((?x786 (fun_app\$b ?x233 ?x33)))
(let ((?x783 (unat\$ ?v0)))
(let ((?x784 (fun_app\$h less\$ ?x783)))
(fun_app\$e ?x784 ?x786)))))))) :pattern ( (unat\$ ?v0) ) :qid
k!220))
))
(let ((\$x788 (forall ((?v0 L_word\$) )(! (let ((?x33 (len_of\$
type\$)))
(let ((?x231 (bit0\$ one\$a)))
(let ((?x232 (numeral\$ ?x231)))
(let ((?x233 (power\$a ?x232)))
(let ((?x786 (fun_app\$b ?x233 ?x33)))
(let ((?x783 (unat\$ ?v0)))
(let ((?x784 (fun_app\$h less\$ ?x783)))
(fun_app\$e ?x784 ?x786)))))))) :qid k!220))
))
(let ((?x783 (unat\$ ?0)))
(let ((?x784 (fun_app\$h less\$ ?x783)))
(let ((\$x787 (fun_app\$e ?x784 ?x786)))
(let ((@x2716 (mp~ (asserted \$x788) (nnf-pos (refl (~ \$x787
\$x787)) (~ \$x788 \$x788)) \$x788)))
(let ((@x11011 (mp @x2716 (quant-intro (refl (= \$x787 \$x787)) (=
\$x788 \$x11006)) \$x11006)))
(let ((\$x116438 (not \$x11006)))
(let ((\$x116439 (or \$x116438 \$x29924)))
(let ((@x116440 ((_ quant-inst (fun_app\$i word_of_int\$ ?x244))
\$x116439)))
(let ((\$x29873 (fun_app\$e ?x29872 ?x14252)))
(let ((?x36 (fun_app\$b ?x34 one\$)))
(let ((?x929 (fun_app\$b ?x233 ?x36)))
(let ((?x930 (fun_app\$h less_eq\$a ?x929)))
(let ((\$x14253 (fun_app\$e ?x930 ?x14252)))
(let ((@x1093615 (monotonicity (monotonicity (asserted (= one\$
?x236)) (= ?x36 ?x237)) (= ?x929 ?x238))))
(let ((@x1093621 (trans (monotonicity @x1093585 (= ?x29872
?x14766)) (symm (monotonicity @x1093615 (= ?x930 ?x14766)) (= ?x14766
?x930)) (= ?x29872 ?x930))))
(let ((\$x14267 (= \$x246 \$x14253)))
(let ((\$x938 (forall ((?v0 L_word\$) )(! (let ((?x783 (unat\$
?v0)))
(let ((?x33 (len_of\$ type\$)))
(let ((?x34 (minus\$ ?x33)))
(let ((?x36 (fun_app\$b ?x34 one\$)))
(let ((?x231 (bit0\$ one\$a)))
(let ((?x232 (numeral\$ ?x231)))
(let ((?x233 (power\$a ?x232)))
(let ((?x929 (fun_app\$b ?x233 ?x36)))
(let ((?x930 (fun_app\$h less_eq\$a ?x929)))
(let ((\$x401 (fun_app\$d msb\$ ?v0)))
(= \$x401 (fun_app\$e ?x930 ?x783)))))))))))) :pattern (
(fun_app\$d msb\$ ?v0) ) :qid k!236))
))
(let ((@x3623 (refl (~ (= \$x401 (fun_app\$e ?x930 ?x783)) (=
\$x401 (fun_app\$e ?x930 ?x783))))))
(let ((\$x933 (forall ((?v0 L_word\$) )(! (let ((?x783 (unat\$
?v0)))
(let ((?x33 (len_of\$ type\$)))
(let ((?x34 (minus\$ ?x33)))
(let ((?x36 (fun_app\$b ?x34 one\$)))
(let ((?x231 (bit0\$ one\$a)))
(let ((?x232 (numeral\$ ?x231)))
(let ((?x233 (power\$a ?x232)))
(let ((?x929 (fun_app\$b ?x233 ?x36)))
(let ((?x930 (fun_app\$h less_eq\$a ?x929)))
(let ((\$x401 (fun_app\$d msb\$ ?v0)))
(= \$x401 (fun_app\$e ?x930 ?x783)))))))))))) :pattern (
(fun_app\$d msb\$ ?v0) ) :qid k!236))
))
(let ((@x937 (rewrite (= (= \$x401 (fun_app\$e ?x930 ?x783)) (=
\$x401 (fun_app\$e ?x930 ?x783))))))
(let ((@x3156 (mp~ (mp (asserted \$x933) (quant-intro @x937 (=
\$x933 \$x938)) \$x938) (nnf-pos @x3623 (~ \$x938 \$x938)) \$x938)))
(let ((\$x14270 (not \$x938)))
(let ((\$x14271 (or \$x14270 \$x14267)))
(let ((@x14272 ((_ quant-inst (fun_app\$i word_of_int\$ ?x244))
\$x14271)))
(let ((@x1093610 (unit-resolution (def-axiom (or (not \$x14267)
(not \$x246) \$x14253)) @x247 (or (not \$x14267) \$x14253))))
(let ((@x1093626 (mp (unit-resolution @x1093610 (unit-resolution
@x14272 @x3156 \$x14267) \$x14253) (symm (monotonicity @x1093621 (=
\$x29873 \$x14253)) (= \$x14253 \$x29873)) \$x29873)))
(let ((\$x11125 (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$) )(!
(let ((?x310 (fun_app\$h less\$ ?v0)))
(let ((\$x1018 (fun_app\$e ?x310 ?v2)))
(let ((?x719 (fun_app\$h less\$ ?v1)))
(let ((\$x954 (fun_app\$e ?x719 ?v2)))
(let ((\$x1078 (not \$x954)))
(let ((\$x1015 (fun_app\$e (fun_app\$h less_eq\$a ?v0) ?v1)))
(let ((\$x9019 (not \$x1015)))
(or \$x9019 \$x1078 \$x1018)))))))) :pattern ( (fun_app\$e
(fun_app\$h less_eq\$a ?v0) ?v1) (fun_app\$e (fun_app\$h less\$ ?v1) ?v2) )
:qid k!243))
))
(let ((\$x9039 (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$) )(! (let
((?x310 (fun_app\$h less\$ ?v0)))
(let ((\$x1018 (fun_app\$e ?x310 ?v2)))
(let ((?x719 (fun_app\$h less\$ ?v1)))
(let ((\$x954 (fun_app\$e ?x719 ?v2)))
(let ((\$x1078 (not \$x954)))
(let ((\$x1015 (fun_app\$e (fun_app\$h less_eq\$a ?v0) ?v1)))
(let ((\$x9019 (not \$x1015)))
(or \$x9019 \$x1078 \$x1018)))))))) :qid k!243))
))
(let ((?x310 (fun_app\$h less\$ ?2)))
(let ((\$x1018 (fun_app\$e ?x310 ?0)))
(let ((\$x9034 (or \$x9019 \$x1078 \$x1018)))
(let ((\$x1026 (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$) )(! (let
((?x310 (fun_app\$h less\$ ?v0)))
(let ((\$x1018 (fun_app\$e ?x310 ?v2)))
(let ((?x719 (fun_app\$h less\$ ?v1)))
(let ((\$x954 (fun_app\$e ?x719 ?v2)))
(let ((\$x1015 (fun_app\$e (fun_app\$h less_eq\$a ?v0) ?v1)))
(let ((\$x1017 (and \$x1015 \$x954)))
(let ((\$x1022 (not \$x1017)))
(or \$x1022 \$x1018)))))))) :qid k!243))
))
(let ((@x9026 (monotonicity (rewrite (= (and \$x1015 \$x954) (not
(or \$x9019 \$x1078)))) (= (not (and \$x1015 \$x954)) (not (not (or \$x9019
\$x1078)))))))
(let ((@x9030 (trans @x9026 (rewrite (= (not (not (or \$x9019
\$x1078))) (or \$x9019 \$x1078))) (= (not (and \$x1015 \$x954)) (or \$x9019
\$x1078)))))
(let ((@x9033 (monotonicity @x9030 (= (or (not (and \$x1015
\$x954)) \$x1018) (or (or \$x9019 \$x1078) \$x1018)))))
(let ((@x9038 (trans @x9033 (rewrite (= (or (or \$x9019 \$x1078)
\$x1018) \$x9034)) (= (or (not (and \$x1015 \$x954)) \$x1018) \$x9034))))
(let ((@x4372 (refl (~ (or (not (and \$x1015 \$x954)) \$x1018) (or
(not (and \$x1015 \$x954)) \$x1018)))))
(let ((\$x1020 (forall ((?v0 Nat\$) (?v1 Nat\$) (?v2 Nat\$) )(! (let
((?x310 (fun_app\$h less\$ ?v0)))
(let ((\$x1018 (fun_app\$e ?x310 ?v2)))
(let ((?x719 (fun_app\$h less\$ ?v1)))
(let ((\$x954 (fun_app\$e ?x719 ?v2)))
(let ((\$x1015 (fun_app\$e (fun_app\$h less_eq\$a ?v0) ?v1)))
(let ((\$x1017 (and \$x1015 \$x954)))
(=> \$x1017 \$x1018))))))) :qid k!243))
))
(let ((@x1025 (rewrite (= (=> (and \$x1015 \$x954) \$x1018) (or
(not (and \$x1015 \$x954)) \$x1018)))))
(let ((@x6331 (mp~ (mp (asserted \$x1020) (quant-intro @x1025 (=
\$x1020 \$x1026)) \$x1026) (nnf-pos @x4372 (~ \$x1026 \$x1026)) \$x1026)))
(let ((@x11130 (mp (mp @x6331 (quant-intro @x9038 (= \$x1026
\$x9039)) \$x9039) (quant-intro (refl (= \$x9034 \$x9034)) (= \$x9039
\$x11125)) \$x11125)))
(let ((\$x29925 (not \$x29924)))
(let ((\$x29874 (not \$x29873)))
(let ((\$x31765 (not \$x11125)))
(let ((\$x396157 (or \$x31765 \$x29874 \$x29925 \$x29938)))
(let ((@x396162 (mp ((_ quant-inst (fun_app\$b ?x13673 ?x13674)
(unat\$ ?x245) (fun_app\$b ?x233 ?x33)) (or \$x31765 (or \$x29874 \$x29925
\$x29938))) (rewrite (= (or \$x31765 (or \$x29874 \$x29925 \$x29938))
\$x396157)) \$x396157)))
(let ((\$x29939 (not \$x29938)))
(let ((\$x14755 (not \$x14747)))
(let ((\$x31744 (or \$x14755 \$x29939 \$x31737)))
(let ((\$x11042 (forall ((?v0 Nat\$) (?v1 Nat\$) )(! (let ((?x816
(of_nat\$b ?v0)))
(let ((\$x866 (fun_app\$d (less_eq\$ (of_nat\$b ?v1)) ?x816)))
(let ((?x863 (fun_app\$h less_eq\$a ?v1)))
(let ((\$x864 (fun_app\$e ?x863 ?v0)))
(let ((\$x871 (= \$x864 \$x866)))
(let ((?x33 (len_of\$ type\$)))
(let ((?x231 (bit0\$ one\$a)))
(let ((?x232 (numeral\$ ?x231)))
(let ((?x233 (power\$a ?x232)))
(let ((?x786 (fun_app\$b ?x233 ?x33)))
(let ((?x665 (fun_app\$h less\$ ?v1)))
(let ((\$x859 (fun_app\$e ?x665 ?x786)))
(let ((\$x2374 (not \$x859)))
(let ((?x719 (fun_app\$h less\$ ?v0)))
(let ((\$x858 (fun_app\$e ?x719 ?x786)))
(let ((\$x4233 (not \$x858)))
(or \$x4233 \$x2374 \$x871))))))))))))))))) :pattern ( (fun_app\$e
(fun_app\$h less_eq\$a ?v1) ?v0) ) :pattern ( (fun_app\$d (less_eq\$
(of_nat\$b ?v1)) (of_nat\$b ?v0)) ) :qid k!229))
))
(let ((\$x8966 (forall ((?v0 Nat\$) (?v1 Nat\$) )(! (let ((?x816
(of_nat\$b ?v0)))
(let ((\$x866 (fun_app\$d (less_eq\$ (of_nat\$b ?v1)) ?x816)))
(let ((?x863 (fun_app\$h less_eq\$a ?v1)))
(let ((\$x864 (fun_app\$e ?x863 ?v0)))
(let ((\$x871 (= \$x864 \$x866)))
(let ((?x33 (len_of\$ type\$)))
(let ((?x231 (bit0\$ one\$a)))
(let ((?x232 (numeral\$ ?x231)))
(let ((?x233 (power\$a ?x232)))
(let ((?x786 (fun_app\$b ?x233 ?x33)))
(let ((?x665 (fun_app\$h less\$ ?v1)))
(let ((\$x859 (fun_app\$e ?x665 ?x786)))
(let ((\$x2374 (not \$x859)))
(let ((?x719 (fun_app\$h less\$ ?v0)))
(let ((\$x858 (fun_app\$e ?x719 ?x786)))
(let ((\$x4233 (not \$x858)))
(or \$x4233 \$x2374 \$x871))))))))))))))))) :qid k!229))
))
(let ((?x816 (of_nat\$b ?1)))
(let ((\$x866 (fun_app\$d (less_eq\$ ?x483) ?x816)))
(let ((?x863 (fun_app\$h less_eq\$a ?0)))
(let ((\$x864 (fun_app\$e ?x863 ?1)))
(let ((\$x871 (= \$x864 \$x866)))
(let ((\$x859 (fun_app\$e ?x665 ?x786)))
(let ((\$x2374 (not \$x859)))
(let ((\$x858 (fun_app\$e ?x719 ?x786)))
(let ((\$x4233 (not \$x858)))
(let ((\$x8961 (or \$x4233 \$x2374 \$x871)))
(let ((\$x883 (forall ((?v0 Nat\$) (?v1 Nat\$) )(! (let ((?x816
(of_nat\$b ?v0)))
(let ((\$x866 (fun_app\$d (less_eq\$ (of_nat\$b ?v1)) ?x816)))
(let ((?x863 (fun_app\$h less_eq\$a ?v1)))
(let ((\$x864 (fun_app\$e ?x863 ?v0)))
(let ((\$x871 (= \$x864 \$x866)))
(let ((?x33 (len_of\$ type\$)))
(let ((?x231 (bit0\$ one\$a)))
(let ((?x232 (numeral\$ ?x231)))
(let ((?x233 (power\$a ?x232)))
(let ((?x786 (fun_app\$b ?x233 ?x33)))
(let ((?x665 (fun_app\$h less\$ ?v1)))
(let ((\$x859 (fun_app\$e ?x665 ?x786)))
(let ((?x719 (fun_app\$h less\$ ?v0)))
(let ((\$x858 (fun_app\$e ?x719 ?x786)))
(let ((\$x861 (and \$x858 \$x859)))
(let ((\$x877 (not \$x861)))
(or \$x877 \$x871))))))))))))))))) :qid k!229))
))
(let ((@x8953 (monotonicity (rewrite (= (and \$x858 \$x859) (not
(or \$x4233 \$x2374)))) (= (not (and \$x858 \$x859)) (not (not (or \$x4233
\$x2374)))))))
(let ((@x8957 (trans @x8953 (rewrite (= (not (not (or \$x4233
\$x2374))) (or \$x4233 \$x2374))) (= (not (and \$x858 \$x859)) (or \$x4233
\$x2374)))))
(let ((@x8960 (monotonicity @x8957 (= (or (not (and \$x858
\$x859)) \$x871) (or (or \$x4233 \$x2374) \$x871)))))
(let ((@x8965 (trans @x8960 (rewrite (= (or (or \$x4233 \$x2374)
\$x871) \$x8961)) (= (or (not (and \$x858 \$x859)) \$x871) \$x8961))))
(let ((@x2933 (refl (~ (or (not (and \$x858 \$x859)) \$x871) (or
(not (and \$x858 \$x859)) \$x871)))))
(let ((\$x869 (forall ((?v0 Nat\$) (?v1 Nat\$) )(! (let ((?x816
(of_nat\$b ?v0)))
(let ((\$x866 (fun_app\$d (less_eq\$ (of_nat\$b ?v1)) ?x816)))
(let ((?x863 (fun_app\$h less_eq\$a ?v1)))
(let ((\$x864 (fun_app\$e ?x863 ?v0)))
(let ((?x33 (len_of\$ type\$)))
(let ((?x231 (bit0\$ one\$a)))
(let ((?x232 (numeral\$ ?x231)))
(let ((?x233 (power\$a ?x232)))
(let ((?x786 (fun_app\$b ?x233 ?x33)))
(let ((?x665 (fun_app\$h less\$ ?v1)))
(let ((\$x859 (fun_app\$e ?x665 ?x786)))
(let ((?x719 (fun_app\$h less\$ ?v0)))
(let ((\$x858 (fun_app\$e ?x719 ?x786)))
(let ((\$x861 (and \$x858 \$x859)))
(=> \$x861 (= \$x864 \$x866)))))))))))))))) :qid k!229))
))
(let ((\$x861 (and \$x858 \$x859)))
(let ((\$x877 (not \$x861)))
(let ((\$x878 (or \$x877 \$x871)))
(let ((\$x868 (=> \$x861 (= \$x864 \$x866))))
(let ((@x876 (monotonicity (rewrite (= (= \$x864 \$x866) \$x871))
(= \$x868 (=> \$x861 \$x871)))))
(let ((@x885 (quant-intro (trans @x876 (rewrite (= (=> \$x861
\$x871) \$x878)) (= \$x868 \$x878)) (= \$x869 \$x883))))
(let ((@x2936 (mp~ (mp (asserted \$x869) @x885 \$x883) (nnf-pos
@x2933 (~ \$x883 \$x883)) \$x883)))
(let ((@x11047 (mp (mp @x2936 (quant-intro @x8965 (= \$x883
\$x8966)) \$x8966) (quant-intro (refl (= \$x8961 \$x8961)) (= \$x8966
\$x11042)) \$x11042)))
(let ((\$x29948 (not \$x11042)))
(let ((\$x31747 (or \$x29948 \$x14755 \$x29939 \$x31737)))
(let ((@x31752 (mp ((_ quant-inst (nat\$ ?x451) (fun_app\$b
?x13673 ?x13674)) (or \$x29948 \$x31744)) (rewrite (= (or \$x29948
\$x31744) \$x31747)) \$x31747)))
(let ((@x1093629 (unit-resolution (unit-resolution @x31752
@x11047 \$x31744) (unit-resolution @x396162 @x11130 @x1093626 (unit-
resolution @x116440 @x11011 \$x29924) \$x29938) (mp @x1093601
(monotonicity @x1093603 (= \$x14071 \$x14747)) \$x14747) \$x31737)))
(let ((@x1093630 (unit-resolution (def-axiom (or (not \$x31737)
\$x31671 \$x31754)) @x1093629 (mp @x1093545 @x1093593 \$x31694) \$x31754)))
(unit-resolution @x1093630 @x1093659
false))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
SMT: Time (ms):
8620
SMT: Assertions:
¬ False  [¬ False]
n < 2 ^ (LENGTH('l) - Suc 0)
msb (word_of_int (int n))
1 = Suc 0
∀a. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb a))
SMT.Symb_Nil) SMT.Symb_Nil)
(msb a = (2 ^ (LENGTH('l) - Suc 0) ≤ a))
n < 2 ^ (LENGTH('l) - Suc 0) ⟶ n = nat (sint (word_of_int (int
n)))
∀n. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (of_nat
n)) SMT.Symb_Nil) SMT.Symb_Nil)
(of_nat n = word_of_int (int n))
∀a x. a < 2 ^ (x - Suc 0) ⟶ a < 2 ^ x
∀x. unat x < 2 ^ LENGTH('l)
∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (y ≤ x) =
(of_nat y ≤ of_nat x)
∀n. 0 < Suc n
∀w. SMT.trigger (SMT.Symb_Cons (SMT.Symb_Cons (SMT.pat (msb w))
SMT.Symb_Nil) SMT.Symb_Nil)