[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$ = (<)
         mask$ = mask
         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 = (<)
         mask$a = mask
         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 mask$ (Nat$) L_word$)
       (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 mask$a (Nat$) L_signed_word$)
       (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$ = (<)
         mask$ = mask
         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 = (<)
         mask$a = mask
         mask$b = mask
         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 mask$ (Nat$) L_word$)
       (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 mask$a (Nat$) Finite_2_word$)
       (declare-fun mask$b (Nat$) Finite_3_word$)
       (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)