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



Hi Peter,


I think I have found the problem for Z3, but I cannot explain why it would appear now.

SMT (directly or via Sledgehammer) starts z3 with a timeout of XXs. However, SMT sees the answer "timeout" (as given by Z3) an error. So basically, it a timing issue: if SMT kills the call to the solver, everything is fine. Otherwise, it fails.


I don't know what happens for CVC4, I have not managed to reproduce the issue.


Can you try the attached patch?

Thanks,
Mathias


Attachment: support_timeout
Description: Binary data


> On 15. May 2019, at 16:09, Peter Lammich <lammich at in.tum.de> wrote:
> 
> 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)
>             (msb w = (2 ^ (LENGTH('l) - 1) ≤ unat w))
>        ∀n. 2 ^ n = of_nat (2 ^ n)
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀y x. (y ≤ x) = (¬ x < y)
>        2 = Suc (Suc 0)
>        ∀n. (¬ 0 < n) = (n = 0)
>        ∀m n. (m < Suc n) = (m < n ∨ m = n)
>        ∀n. (¬ 0 < n) = (n = 0)
>        ∀m. Suc m = 0 ⟶ False
>        ∀m n. m < n ⟶ Suc m ≤ n
>        LENGTH('l) ≠ Suc 0
>        (LENGTH('l) ≠ Suc 0) = (∃n. LENGTH('l) = Suc (Suc n))
>        ∀n m a. n ≤ m ∧ 0 < a ⟶ a ^ (m - n) = a ^ m div a ^ n 
> SMT: Names:
>        sorts:
>          Nat$ = nat
>          Num$ = num
>          L_word$ = 'l word
>          L_itself$ = 'l itself
>        functions:
>          n$ = n
>          msb$ = msb
>          nat$ = nat
>          one$ = num.One
>          suc$ = Suc
>          bit0$ = num.Bit0
>          less$ = (<)
>          one$a = 1
>          sint$ = sint
>          type$ = TYPE('l)
>          unat$ = unat
>          zero$ = 0
>          less$a = (<)
>          minus$ = (-)
>          power$ = (^)
>          divide$ = (div)
>          len_of$ = len_of
>          of_nat$ = int
>          power$a = (^)
>          less_eq$ = (≤)
>          numeral$ = numeral
>          of_nat$a = of_nat
>          less_eq$a = (≤)
>          numeral$a = numeral
>          word_of_int$ = word_of_int 
> SMT: Problem:
>        ; smt.random_seed=1 smt.refine_inj_axioms=false -T:30 -smt2
>        (set-option :produce-proofs true)
>        (declare-sort Nat$ 0)
>        (declare-sort Num$ 0)
>        (declare-sort L_word$ 0)
>        (declare-sort L_itself$ 0)
>        (declare-fun n$ () Nat$)
>        (declare-fun msb$ (L_word$) Bool)
>        (declare-fun nat$ (Int) Nat$)
>        (declare-fun one$ () Num$)
>        (declare-fun suc$ (Nat$) Nat$)
>        (declare-fun bit0$ (Num$) Num$)
>        (declare-fun less$ (Nat$ Nat$) Bool)
>        (declare-fun one$a () Nat$)
>        (declare-fun sint$ (L_word$) Int)
>        (declare-fun type$ () L_itself$)
>        (declare-fun unat$ (L_word$) Nat$)
>        (declare-fun zero$ () Nat$)
>        (declare-fun less$a (L_word$ L_word$) Bool)
>        (declare-fun minus$ (Nat$ Nat$) Nat$)
>        (declare-fun power$ (Nat$ Nat$) Nat$)
>        (declare-fun divide$ (Nat$ Nat$) Nat$)
>        (declare-fun len_of$ (L_itself$) Nat$)
>        (declare-fun of_nat$ (Nat$) Int)
>        (declare-fun power$a (L_word$ Nat$) L_word$)
>        (declare-fun less_eq$ (L_word$ L_word$) Bool)
>        (declare-fun numeral$ (Num$) Nat$)
>        (declare-fun of_nat$a (Nat$) L_word$)
>        (declare-fun less_eq$a (Nat$ Nat$) Bool)
>        (declare-fun numeral$a (Num$) L_word$)
>        (declare-fun word_of_int$ (Int) L_word$)
>        (assert (! (not false) :named a0))
>        (assert (! (less$ n$ (power$ (numeral$ (bit0$ one$)) (minus$
> (len_of$ type$) (suc$ zero$)))) :named a1))
>        (assert (! (msb$ (word_of_int$ (of_nat$ n$))) :named a2))
>        (assert (! (= one$a (suc$ zero$)) :named a3))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$
> (power$a (numeral$a (bit0$ one$)) (minus$ (len_of$ type$) (suc$
> zero$))) ?v0)) :pattern ((msb$ ?v0)))) :named a4))
>        (assert (! (=> (less$ n$ (power$ (numeral$ (bit0$ one$)) (minus$
> (len_of$ type$) (suc$ zero$)))) (= n$ (nat$ (sint$ (word_of_int$
> (of_nat$ n$)))))) :named a5))
>        (assert (! (forall ((?v0 Nat$)) (! (= (of_nat$a ?v0)
> (word_of_int$ (of_nat$ ?v0))) :pattern ((of_nat$a ?v0)))) :named a6))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$ zero$)))) (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) ?v1)))) :named a7))
>        (assert (! (forall ((?v0 L_word$)) (less$ (unat$ ?v0) (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) :named a8))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (and (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (len_of$ type$))) (less$ ?v1 (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) (= (less_eq$a ?v1 ?v0)
> (less_eq$ (of_nat$a ?v1) (of_nat$a ?v0))))) :named a9))
>        (assert (! (forall ((?v0 Nat$)) (less$ zero$ (suc$ ?v0))) :named
> a10))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$a
> (power$ (numeral$ (bit0$ one$)) (minus$ (len_of$ type$) one$a)) (unat$
> ?v0))) :pattern ((msb$ ?v0)))) :named a11))
>        (assert (! (forall ((?v0 Nat$)) (= (power$a (numeral$a (bit0$
> one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))) :named
> a12))
>        (assert (! (forall ((?v0 L_word$) (?v1 L_word$) (?v2 L_word$))
> (=> (and (less_eq$ ?v0 ?v1) (less$a ?v1 ?v2)) (less$a ?v0 ?v2))) :named
> a13))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$)) (=> (and
> (less_eq$a ?v0 ?v1) (less$ ?v1 ?v2)) (less$ ?v0 ?v2))) :named a14))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (= (less_eq$a ?v0
> ?v1) (not (less$ ?v1 ?v0)))) :named a15))
>        (assert (! (= (numeral$ (bit0$ one$)) (suc$ (suc$ zero$)))
> :named a16))
>        (assert (! (forall ((?v0 Nat$)) (= (not (less$ zero$ ?v0)) (=
> ?v0 zero$))) :named a17))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (= (less$ ?v0 (suc$
> ?v1)) (or (less$ ?v0 ?v1) (= ?v0 ?v1)))) :named a18))
>        (assert (! (forall ((?v0 Nat$)) (= (not (less$ zero$ ?v0)) (=
> ?v0 zero$))) :named a19))
>        (assert (! (forall ((?v0 Nat$)) (=> (= (suc$ ?v0) zero$) false))
> :named a20))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (less$ ?v0 ?v1)
> (less_eq$a (suc$ ?v0) ?v1))) :named a21))
>        (assert (! (not (= (len_of$ type$) (suc$ zero$))) :named a22))
>        (assert (! (= (not (= (len_of$ type$) (suc$ zero$))) (exists
> ((?v0 Nat$)) (= (len_of$ type$) (suc$ (suc$ ?v0))))) :named a23))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$)) (=> (and
> (less_eq$a ?v0 ?v1) (less$ zero$ ?v2)) (= (power$ ?v2 (minus$ ?v1 ?v0))
> (divide$ (power$ ?v2 ?v1) (power$ ?v2 ?v0))))) :named a24))
>        (check-sat)
>        (get-proof)
>         
> SMT: Invoking SMT solver "z3" ... 
> SMT: Solver: 
> SMT: Result:
>        unsat
>        ((set-logic <null>)
>        (declare-fun ?v0!0 () Nat$)
>        (proof
>        (let ((?x42 (of_nat$ n$)))
>        (let ((?x43 (word_of_int$ ?x42)))
>        (let ((?x37 (suc$ zero$)))
>        (let ((?x35 (len_of$ type$)))
>        (let ((?x38 (minus$ ?x35 ?x37)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x51 (numeral$a ?x31)))
>        (let ((?x52 (power$a ?x51 ?x38)))
>        (let (($x597 (less_eq$ ?x52 ?x43)))
>        (let (($x610 (not $x597)))
>        (let ((?x64 (sint$ ?x43)))
>        (let ((?x65 (nat$ ?x64)))
>        (let ((?x769 (of_nat$a ?x65)))
>        (let ((?x32 (numeral$ ?x31)))
>        (let ((?x39 (power$ ?x32 ?x38)))
>        (let ((?x703 (of_nat$a ?x39)))
>        (let (($x770 (less_eq$ ?x703 ?x769)))
>        (let (($x782 (not $x770)))
>        (let ((?x2149 (of_nat$ ?x65)))
>        (let ((?x2150 (word_of_int$ ?x2149)))
>        (let (($x2153 (= ?x769 ?x2150)))
>        (let (($x81 (forall ((?v0 Nat$) )(! (let ((?x78 (word_of_int$
> (of_nat$ ?v0))))
>        (let ((?x75 (of_nat$a ?v0)))
>        (= ?x75 ?x78))) :pattern ( (of_nat$a ?v0) ) :qid k!38))
>        ))
>        (let ((?x78 (word_of_int$ (of_nat$ ?0))))
>        (let ((?x75 (of_nat$a ?0)))
>        (let (($x79 (= ?x75 ?x78)))
>        (let ((@x289 (mp~ (asserted $x81) (nnf-pos (refl (~ $x79 $x79))
> (~ $x81 $x81)) $x81)))
>        (let (($x921 (not $x81)))
>        (let (($x2156 (or $x921 $x2153)))
>        (let ((@x2157 ((_ quant-inst (nat$ ?x64)) $x2156)))
>        (let (($x67 (= n$ ?x65)))
>        (let (($x40 (less$ n$ ?x39)))
>        (let ((@x41 (asserted $x40)))
>        (let (($x71 (or (not $x40) $x67)))
>        (let ((@x76 (mp (asserted (=> $x40 $x67)) (rewrite (= (=> $x40
> $x67) $x71)) $x71)))
>        (let ((@x2163 (symm (unit-resolution @x76 @x41 $x67) (= ?x65
> n$))))
>        (let ((@x2229 (monotonicity (symm (monotonicity @x2163 (= ?x2149
> ?x42)) (= ?x42 ?x2149)) (= ?x43 ?x2150))))
>        (let ((@x2233 (trans @x2229 (symm (unit-resolution @x2157 @x289
> $x2153) (= ?x2150 ?x769)) (= ?x43 ?x769))))
>        (let (($x704 (= ?x52 ?x703)))
>        (let (($x523 (forall ((?v0 Nat$) )(! (= (power$a (numeral$a
> (bit0$ one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))
> :pattern ( (power$a (numeral$a (bit0$ one$)) ?v0) ) :pattern ( (power$
> (numeral$ (bit0$ one$)) ?v0) ) :qid k!44))
>        ))
>        (let (($x151 (forall ((?v0 Nat$) )(! (= (power$a (numeral$a
> (bit0$ one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))
> :qid k!44))
>        ))
>        (let (($x150 (= (power$a ?x51 ?0) (of_nat$a (power$ ?x32 ?0)))))
>        (let ((@x319 (mp~ (asserted $x151) (nnf-pos (refl (~ $x150
> $x150)) (~ $x151 $x151)) $x151)))
>        (let ((@x528 (mp @x319 (quant-intro (refl (= $x150 $x150)) (=
> $x151 $x523)) $x523)))
>        (let (($x709 (not $x523)))
>        (let (($x710 (or $x709 $x704)))
>        (let ((@x711 ((_ quant-inst (minus$ ?x35 ?x37)) $x710)))
>        (let ((@x2238 (symm (monotonicity (unit-resolution @x711 @x528
> $x704) @x2233 (= $x597 $x770)) (= $x770 $x597))))
>        (let (($x653 (less_eq$a ?x39 ?x65)))
>        (let (($x670 (not $x653)))
>        (let (($x621 (less$ ?x65 ?x39)))
>        (let (($x622 (not $x621)))
>        (let (($x654 (= $x653 $x622)))
>        (let (($x545 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x185
> (less_eq$a ?v0 ?v1)))
>        (= $x185 (not (less$ ?v1 ?v0)))) :pattern ( (less_eq$a ?v0 ?v1)
> ) :pattern ( (less$ ?v1 ?v0) ) :qid k!47))
>        ))
>        (let (($x195 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x185
> (less_eq$a ?v0 ?v1)))
>        (= $x185 (not (less$ ?v1 ?v0)))) :qid k!47))
>        ))
>        (let (($x185 (less_eq$a ?1 ?0)))
>        (let (($x192 (= $x185 (not (less$ ?0 ?1)))))
>        (let (($x190 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x185
> (less_eq$a ?v0 ?v1)))
>        (= $x185 (not (less$ ?v1 ?v0)))) :qid k!47))
>        ))
>        (let ((@x197 (quant-intro (rewrite (= (= $x185 (not (less$ ?0
> ?1))) $x192)) (= $x190 $x195))))
>        (let ((@x334 (mp~ (mp (asserted $x190) @x197 $x195) (nnf-pos
> (refl (~ $x192 $x192)) (~ $x195 $x195)) $x195)))
>        (let ((@x550 (mp @x334 (quant-intro (refl (= $x192 $x192)) (=
> $x195 $x545)) $x545)))
>        (let (($x664 (not $x545)))
>        (let (($x665 (or $x664 $x654)))
>        (let ((@x666 ((_ quant-inst (power$ ?x32 ?x38) (nat$ ?x64))
> $x665)))
>        (let ((@x2168 (mp @x41 (symm (monotonicity @x2163 (= $x621
> $x40)) (= $x40 $x621)) $x621)))
>        (let ((@x2169 (unit-resolution (def-axiom (or (not $x654) $x670
> $x622)) @x2168 (unit-resolution @x666 @x550 $x654) $x670)))
>        (let (($x771 (= $x653 $x770)))
>        (let ((?x100 (power$ ?x32 ?x35)))
>        (let (($x750 (less$ ?x65 ?x100)))
>        (let ((?x361 (suc$ ?v0!0)))
>        (let ((?x362 (suc$ ?x361)))
>        (let (($x363 (= ?x35 ?x362)))
>        (let (($x251 (= ?x35 ?x37)))
>        (let (($x252 (not $x251)))
>        (let ((@x254 (asserted $x252)))
>        (let (($x381 (or $x251 $x363)))
>        (let (($x369 (forall ((?v0 Nat$) )(! (not (= (len_of$ type$)
> (suc$ (suc$ ?v0)))) :qid k!55))
>        ))
>        (let (($x373 (or $x252 $x369)))
>        (let ((@x383 (monotonicity (rewrite (= (not $x252) $x251)) (=
> (or (not $x252) $x363) $x381))))
>        (let ((@x386 (monotonicity @x383 (= (and (or (not $x252) $x363)
> $x373) (and $x381 $x373)))))
>        (let (($x375 (and (or (not $x252) $x363) $x373)))
>        (let (($x257 (exists ((?v0 Nat$) )(! (let ((?x35 (len_of$
> type$)))
>        (= ?x35 (suc$ (suc$ ?v0)))) :qid k!55))
>        ))
>        (let (($x260 (= $x252 $x257)))
>        (let (($x366 (not (= ?x35 (suc$ (suc$ ?0))))))
>        (let ((@x377 (nnf-pos (refl (~ $x252 $x252)) (refl (~ (not
> $x252) (not $x252))) (sk (~ $x257 $x363)) (nnf-neg (refl (~ $x366
> $x366)) (~ (not $x257) $x369)) (~ $x260 $x375))))
>        (let ((@x265 (mp (asserted (= $x252 $x257)) (rewrite (= (= $x252
> $x257) $x260)) $x260)))
>        (let ((@x388 (and-elim (mp (mp~ @x265 @x377 $x375) @x386 (and
> $x381 $x373)) $x381)))
>        (let ((@x2185 (monotonicity (unit-resolution @x388 @x254 $x363)
> (= ?x100 (power$ ?x32 ?x362)))))
>        (let ((@x2189 (symm (monotonicity @x2185 (= $x750 (less$ ?x65
> (power$ ?x32 ?x362)))) (= (less$ ?x65 (power$ ?x32 ?x362)) $x750))))
>        (let ((?x650 (power$ ?x32 ?x362)))
>        (let (($x651 (less$ ?x65 ?x650)))
>        (let ((?x639 (minus$ ?x362 ?x37)))
>        (let ((?x640 (power$ ?x32 ?x639)))
>        (let (($x648 (less$ ?x65 ?x640)))
>        (let ((@x2174 (monotonicity (symm (unit-resolution @x388 @x254
> $x363) (= ?x362 ?x35)) (= ?x639 ?x38))))
>        (let ((@x2180 (symm (monotonicity @x2163 (monotonicity @x2174 (=
> ?x640 ?x39)) (= $x648 $x40)) (= $x40 $x648))))
>        (let (($x649 (not $x648)))
>        (let (($x652 (or $x649 $x651)))
>        (let (($x493 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x86
> (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$
> zero$))))))
>        (or (not $x86) (less$ ?v0 (power$ (numeral$ (bit0$ one$))
> ?v1)))) :pattern ( (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (minus$
> ?v1 (suc$ zero$)))) ) :qid k!39))
>        ))
>        (let (($x96 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x86
> (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$
> zero$))))))
>        (or (not $x86) (less$ ?v0 (power$ (numeral$ (bit0$ one$))
> ?v1)))) :qid k!39))
>        ))
>        (let (($x93 (or (not (less$ ?1 (power$ ?x32 (minus$ ?0 ?x37))))
> (less$ ?1 (power$ ?x32 ?0)))))
>        (let (($x90 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x86
> (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$
> zero$))))))
>        (=> $x86 (less$ ?v0 (power$ (numeral$ (bit0$ one$)) ?v1)))) :qid
> k!39))
>        ))
>        (let (($x86 (less$ ?1 (power$ ?x32 (minus$ ?0 ?x37)))))
>        (let ((@x98 (quant-intro (rewrite (= (=> $x86 (less$ ?1 (power$
> ?x32 ?0))) $x93)) (= $x90 $x96))))
>        (let ((@x294 (mp~ (mp (asserted $x90) @x98 $x96) (nnf-pos (refl
> (~ $x93 $x93)) (~ $x96 $x96)) $x96)))
>        (let ((@x498 (mp @x294 (quant-intro (refl (= $x93 $x93)) (= $x96
> $x493)) $x493)))
>        (let (($x656 (or (not $x493) $x649 $x651)))
>        (let ((@x661 (mp ((_ quant-inst (nat$ ?x64) (suc$ ?x361)) (or
> (not $x493) $x652)) (rewrite (= (or (not $x493) $x652) $x656)) $x656)))
>        (let ((@x2183 (unit-resolution (unit-resolution @x661 @x498
> $x652) (mp @x41 @x2180 $x648) $x651)))
>        (let (($x744 (less$ ?x39 ?x100)))
>        (let (($x1257 (less$ ?x39 ?x650)))
>        (let ((?x604 (unat$ ?x43)))
>        (let (($x1233 (less$ ?x604 ?x650)))
>        (let ((@x2197 (symm (monotonicity (symm @x2185 (= ?x650 ?x100))
> (= $x1233 (less$ ?x604 ?x100))) (= (less$ ?x604 ?x100) $x1233))))
>        (let (($x730 (less$ ?x604 ?x100)))
>        (let (($x500 (forall ((?v0 L_word$) )(! (let ((?x35 (len_of$
> type$)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x32 (numeral$ ?x31)))
>        (let ((?x100 (power$ ?x32 ?x35)))
>        (let ((?x99 (unat$ ?v0)))
>        (less$ ?x99 ?x100)))))) :pattern ( (unat$ ?v0) ) :qid k!40))
>        ))
>        (let (($x103 (forall ((?v0 L_word$) )(! (let ((?x35 (len_of$
> type$)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x32 (numeral$ ?x31)))
>        (let ((?x100 (power$ ?x32 ?x35)))
>        (let ((?x99 (unat$ ?v0)))
>        (less$ ?x99 ?x100)))))) :qid k!40))
>        ))
>        (let ((@x504 (quant-intro (refl (= (less$ (unat$ ?0) ?x100)
> (less$ (unat$ ?0) ?x100))) (= $x103 $x500))))
>        (let ((@x298 (nnf-pos (refl (~ (less$ (unat$ ?0) ?x100) (less$
> (unat$ ?0) ?x100))) (~ $x103 $x103))))
>        (let ((@x505 (mp (mp~ (asserted $x103) @x298 $x103) @x504
> $x500)))
>        (let (($x801 (or (not $x500) $x730)))
>        (let ((@x802 ((_ quant-inst (word_of_int$ ?x42)) $x801)))
>        (let (($x719 (less_eq$a ?x39 ?x604)))
>        (let (($x47 (= one$a ?x37)))
>        (let ((@x48 (asserted $x47)))
>        (let ((@x2206 (monotonicity (monotonicity @x48 (= (minus$ ?x35
> one$a) ?x38)) (= (power$ ?x32 (minus$ ?x35 one$a)) ?x39))))
>        (let ((@x2210 (monotonicity (symm @x2206 (= ?x39 (power$ ?x32
> (minus$ ?x35 one$a)))) (= $x719 (less_eq$a (power$ ?x32 (minus$ ?x35
> one$a)) ?x604)))))
>        (let ((@x2212 (symm @x2210 (= (less_eq$a (power$ ?x32 (minus$
> ?x35 one$a)) ?x604) $x719))))
>        (let ((?x135 (minus$ ?x35 one$a)))
>        (let ((?x136 (power$ ?x32 ?x135)))
>        (let (($x605 (less_eq$a ?x136 ?x604)))
>        (let (($x44 (msb$ ?x43)))
>        (let (($x620 (= $x44 $x605)))
>        (let (($x144 (forall ((?v0 L_word$) )(! (let ((?x99 (unat$
> ?v0)))
>        (let ((?x35 (len_of$ type$)))
>        (let ((?x135 (minus$ ?x35 one$a)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x32 (numeral$ ?x31)))
>        (let ((?x136 (power$ ?x32 ?x135)))
>        (let (($x137 (less_eq$a ?x136 ?x99)))
>        (let (($x50 (msb$ ?v0)))
>        (= $x50 $x137))))))))) :pattern ( (msb$ ?v0) ) :qid k!43))
>        ))
>        (let ((?x99 (unat$ ?0)))
>        (let (($x137 (less_eq$a ?x136 ?x99)))
>        (let (($x50 (msb$ ?0)))
>        (let (($x141 (= $x50 $x137)))
>        (let (($x139 (forall ((?v0 L_word$) )(! (let ((?x99 (unat$
> ?v0)))
>        (let ((?x35 (len_of$ type$)))
>        (let ((?x135 (minus$ ?x35 one$a)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x32 (numeral$ ?x31)))
>        (let ((?x136 (power$ ?x32 ?x135)))
>        (let (($x137 (less_eq$a ?x136 ?x99)))
>        (let (($x50 (msb$ ?v0)))
>        (= $x50 $x137))))))))) :pattern ( (msb$ ?v0) ) :qid k!43))
>        ))
>        (let ((@x149 (mp (asserted $x139) (quant-intro (rewrite (= (=
> $x50 $x137) $x141)) (= $x139 $x144)) $x144)))
>        (let ((@x314 (mp~ @x149 (nnf-pos (refl (~ $x141 $x141)) (~ $x144
> $x144)) $x144)))
>        (let (($x624 (or (not $x144) $x620)))
>        (let ((@x625 ((_ quant-inst (word_of_int$ ?x42)) $x624)))
>        (let ((@x45 (asserted $x44)))
>        (let ((@x2201 (unit-resolution (def-axiom (or (not $x620) (not
> $x44) $x605)) @x45 (or (not $x620) $x605))))
>        (let ((@x2213 (mp (unit-resolution @x2201 (unit-resolution @x625
> @x314 $x620) $x605) @x2212 $x719)))
>        (let (($x537 (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$) )(! (let
> (($x174 (less$ ?v0 ?v2)))
>        (let (($x172 (less$ ?v1 ?v2)))
>        (let (($x244 (not $x172)))
>        (let (($x170 (less_eq$a ?v0 ?v1)))
>        (let (($x445 (not $x170)))
>        (or $x445 $x244 $x174)))))) :pattern ( (less_eq$a ?v0 ?v1)
> (less$ ?v1 ?v2) ) :qid k!46))
>        ))
>        (let (($x465 (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$) )(! (let
> (($x174 (less$ ?v0 ?v2)))
>        (let (($x172 (less$ ?v1 ?v2)))
>        (let (($x244 (not $x172)))
>        (let (($x170 (less_eq$a ?v0 ?v1)))
>        (let (($x445 (not $x170)))
>        (or $x445 $x244 $x174)))))) :qid k!46))
>        ))
>        (let (($x174 (less$ ?2 ?0)))
>        (let (($x172 (less$ ?1 ?0)))
>        (let (($x244 (not $x172)))
>        (let (($x170 (less_eq$a ?2 ?1)))
>        (let (($x445 (not $x170)))
>        (let (($x460 (or $x445 $x244 $x174)))
>        (let (($x182 (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$) )(! (let
> (($x174 (less$ ?v0 ?v2)))
>        (let (($x172 (less$ ?v1 ?v2)))
>        (let (($x170 (less_eq$a ?v0 ?v1)))
>        (let (($x173 (and $x170 $x172)))
>        (let (($x178 (not $x173)))
>        (or $x178 $x174)))))) :qid k!46))
>        ))
>        (let ((@x452 (monotonicity (rewrite (= (and $x170 $x172) (not
> (or $x445 $x244)))) (= (not (and $x170 $x172)) (not (not (or $x445
> $x244)))))))
>        (let ((@x456 (trans @x452 (rewrite (= (not (not (or $x445
> $x244))) (or $x445 $x244))) (= (not (and $x170 $x172)) (or $x445
> $x244)))))
>        (let ((@x459 (monotonicity @x456 (= (or (not (and $x170 $x172))
> $x174) (or (or $x445 $x244) $x174)))))
>        (let ((@x464 (trans @x459 (rewrite (= (or (or $x445 $x244)
> $x174) $x460)) (= (or (not (and $x170 $x172)) $x174) $x460))))
>        (let ((@x326 (refl (~ (or (not (and $x170 $x172)) $x174) (or
> (not (and $x170 $x172)) $x174)))))
>        (let (($x176 (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$) )(! (let
> (($x174 (less$ ?v0 ?v2)))
>        (let (($x172 (less$ ?v1 ?v2)))
>        (let (($x170 (less_eq$a ?v0 ?v1)))
>        (let (($x173 (and $x170 $x172)))
>        (=> $x173 $x174))))) :qid k!46))
>        ))
>        (let ((@x181 (rewrite (= (=> (and $x170 $x172) $x174) (or (not
> (and $x170 $x172)) $x174)))))
>        (let ((@x329 (mp~ (mp (asserted $x176) (quant-intro @x181 (=
> $x176 $x182)) $x182) (nnf-pos @x326 (~ $x182 $x182)) $x182)))
>        (let ((@x542 (mp (mp @x329 (quant-intro @x464 (= $x182 $x465))
> $x465) (quant-intro (refl (= $x460 $x460)) (= $x465 $x537)) $x537)))
>        (let (($x1240 (not $x1233)))
>        (let (($x737 (not $x719)))
>        (let (($x793 (not $x537)))
>        (let (($x1273 (or $x793 $x737 $x1240 $x1257)))
>        (let ((@x1278 (mp ((_ quant-inst (power$ ?x32 ?x38) (unat$ ?x43)
> (power$ ?x32 ?x362)) (or $x793 (or $x737 $x1240 $x1257))) (rewrite (=
> (or $x793 (or $x737 $x1240 $x1257)) $x1273)) $x1273)))
>        (let ((@x2216 (unit-resolution (unit-resolution @x1278 @x542
> @x2213 (or $x1240 $x1257)) (mp (unit-resolution @x802 @x505 $x730)
> @x2197 $x1233) $x1257)))
>        (let ((@x2219 (mp @x2216 (monotonicity (symm @x2185 (= ?x650
> ?x100)) (= $x1257 $x744)) $x744)))
>        (let (($x745 (not $x744)))
>        (let (($x751 (not $x750)))
>        (let (($x772 (or $x751 $x745 $x771)))
>        (let (($x508 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let ((?x75
> (of_nat$a ?v1)))
>        (let (($x110 (less_eq$ ?x75 (of_nat$a ?v0))))
>        (let (($x108 (less_eq$a ?v1 ?v0)))
>        (let (($x115 (= $x108 $x110)))
>        (or (not (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (len_of$
> type$)))) (not (less$ ?v1 (power$ (numeral$ (bit0$ one$)) (len_of$
> type$)))) $x115))))) :pattern ( (less_eq$a ?v1 ?v0) ) :pattern (
> (less_eq$ (of_nat$a ?v1) (of_nat$a ?v0)) ) :qid k!41))
>        ))
>        (let (($x416 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let ((?x75
> (of_nat$a ?v1)))
>        (let (($x110 (less_eq$ ?x75 (of_nat$a ?v0))))
>        (let (($x108 (less_eq$a ?v1 ?v0)))
>        (let (($x115 (= $x108 $x110)))
>        (or (not (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (len_of$
> type$)))) (not (less$ ?v1 (power$ (numeral$ (bit0$ one$)) (len_of$
> type$)))) $x115))))) :qid k!41))
>        ))
>        (let (($x110 (less_eq$ ?x75 (of_nat$a ?1))))
>        (let (($x108 (less_eq$a ?0 ?1)))
>        (let (($x115 (= $x108 $x110)))
>        (let (($x411 (or (not (less$ ?1 ?x100)) (not (less$ ?0 ?x100))
> $x115)))
>        (let (($x127 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let ((?x75
> (of_nat$a ?v1)))
>        (let (($x110 (less_eq$ ?x75 (of_nat$a ?v0))))
>        (let (($x108 (less_eq$a ?v1 ?v0)))
>        (let (($x115 (= $x108 $x110)))
>        (let (($x107 (and (less$ ?v0 (power$ (numeral$ (bit0$ one$))
> (len_of$ type$))) (less$ ?v1 (power$ (numeral$ (bit0$ one$)) (len_of$
> type$))))))
>        (let (($x121 (not $x107)))
>        (or $x121 $x115))))))) :qid k!41))
>        ))
>        (let (($x412 (= (or (or (not (less$ ?1 ?x100)) (not (less$ ?0
> ?x100))) $x115) $x411)))
>        (let (($x107 (and (less$ ?1 ?x100) (less$ ?0 ?x100))))
>        (let (($x121 (not $x107)))
>        (let (($x122 (or $x121 $x115)))
>        (let (($x409 (= $x122 (or (or (not (less$ ?1 ?x100)) (not (less$
> ?0 ?x100))) $x115))))
>        (let (($x397 (or (not (less$ ?1 ?x100)) (not (less$ ?0
> ?x100)))))
>        (let ((@x403 (monotonicity (rewrite (= $x107 (not $x397))) (=
> $x121 (not (not $x397))))))
>        (let ((@x410 (monotonicity (trans @x403 (rewrite (= (not (not
> $x397)) $x397)) (= $x121 $x397)) $x409)))
>        (let ((@x418 (quant-intro (trans @x410 (rewrite $x412) (= $x122
> $x411)) (= $x127 $x416))))
>        (let (($x113 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x107
> (and (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (len_of$ type$)))
> (less$ ?v1 (power$ (numeral$ (bit0$ one$)) (len_of$ type$))))))
>        (=> $x107 (= (less_eq$a ?v1 ?v0) (less_eq$ (of_nat$a ?v1)
> (of_nat$a ?v0))))) :qid k!41))
>        ))
>        (let ((@x120 (monotonicity (rewrite (= (= $x108 $x110) $x115))
> (= (=> $x107 (= $x108 $x110)) (=> $x107 $x115)))))
>        (let ((@x126 (trans @x120 (rewrite (= (=> $x107 $x115) $x122))
> (= (=> $x107 (= $x108 $x110)) $x122))))
>        (let ((@x304 (mp~ (mp (asserted $x113) (quant-intro @x126 (=
> $x113 $x127)) $x127) (nnf-pos (refl (~ $x122 $x122)) (~ $x127 $x127))
> $x127)))
>        (let ((@x513 (mp (mp @x304 @x418 $x416) (quant-intro (refl (=
> $x411 $x411)) (= $x416 $x508)) $x508)))
>        (let (($x752 (not $x508)))
>        (let (($x775 (or $x752 $x751 $x745 $x771)))
>        (let ((@x780 (mp ((_ quant-inst (nat$ ?x64) (power$ ?x32 ?x38))
> (or $x752 $x772)) (rewrite (= (or $x752 $x772) $x775)) $x775)))
>        (let ((@x2221 (unit-resolution (unit-resolution @x780 @x513
> $x772) @x2219 (mp @x2183 @x2189 $x750) $x771)))
>        (let ((@x2241 (mp (unit-resolution (def-axiom (or (not $x771)
> $x653 $x782)) @x2221 @x2169 $x782) (monotonicity @x2238 (= $x782
> $x610)) $x610)))
>        (let (($x598 (= $x44 $x597)))
>        (let (($x61 (forall ((?v0 L_word$) )(! (let ((?x37 (suc$
> zero$)))
>        (let ((?x35 (len_of$ type$)))
>        (let ((?x38 (minus$ ?x35 ?x37)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x51 (numeral$a ?x31)))
>        (let ((?x52 (power$a ?x51 ?x38)))
>        (let (($x53 (less_eq$ ?x52 ?v0)))
>        (let (($x50 (msb$ ?v0)))
>        (= $x50 $x53))))))))) :pattern ( (msb$ ?v0) ) :qid k!36))
>        ))
>        (let ((@x282 (refl (~ (= $x50 (less_eq$ ?x52 ?0)) (= $x50
> (less_eq$ ?x52 ?0))))))
>        (let (($x56 (forall ((?v0 L_word$) )(! (let ((?x37 (suc$
> zero$)))
>        (let ((?x35 (len_of$ type$)))
>        (let ((?x38 (minus$ ?x35 ?x37)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x51 (numeral$a ?x31)))
>        (let ((?x52 (power$a ?x51 ?x38)))
>        (let (($x53 (less_eq$ ?x52 ?v0)))
>        (let (($x50 (msb$ ?v0)))
>        (= $x50 $x53))))))))) :pattern ( (msb$ ?v0) ) :qid k!36))
>        ))
>        (let ((@x60 (rewrite (= (= $x50 (less_eq$ ?x52 ?0)) (= $x50
> (less_eq$ ?x52 ?0))))))
>        (let ((@x284 (mp~ (mp (asserted $x56) (quant-intro @x60 (= $x56
> $x61)) $x61) (nnf-pos @x282 (~ $x61 $x61)) $x61)))
>        (let (($x607 (or (not $x61) $x598)))
>        (let ((@x608 ((_ quant-inst (word_of_int$ ?x42)) $x607)))
>        (let ((@x2158 (unit-resolution (def-axiom (or (not $x598) (not
> $x44) $x597)) @x45 (or (not $x598) $x597))))
>        (unit-resolution (unit-resolution @x2158 (unit-resolution @x608
> @x284 $x598) $x597) @x2241
> false))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
> )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
> )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
> ))) 
> SMT: Time (ms):
>        21 
> SMT: Assertions:
>        ¬ False  [¬ False]
>        n < 2 ^ (LENGTH('l) - Suc 0)
>        msb (word_of_int (int n))
>        ∀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)
>        ∀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))
>        ∀n. 2 ^ n = of_nat (2 ^ n)
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀y x. (y ≤ x) = (¬ x < y)
>        LENGTH('l) ≠ Suc 0
>        (LENGTH('l) ≠ Suc 0) = (∃n. LENGTH('l) = Suc (Suc n)) 
> SMT: Names:
>        sorts:
>          Nat$ = nat
>          Num$ = num
>          L_word$ = 'l word
>          L_itself$ = 'l itself
>        functions:
>          n$ = n
>          msb$ = msb
>          nat$ = nat
>          one$ = num.One
>          suc$ = Suc
>          bit0$ = num.Bit0
>          less$ = (<)
>          one$a = 1
>          sint$ = sint
>          type$ = TYPE('l)
>          unat$ = unat
>          zero$ = 0
>          less$a = (<)
>          minus$ = (-)
>          power$ = (^)
>          len_of$ = len_of
>          of_nat$ = int
>          power$a = (^)
>          less_eq$ = (≤)
>          numeral$ = numeral
>          of_nat$a = of_nat
>          less_eq$a = (≤)
>          numeral$a = numeral
>          word_of_int$ = word_of_int 
> SMT: Problem:
>        ; smt.random_seed=1 smt.refine_inj_axioms=false -T:1 -smt2
>        (set-option :produce-proofs true)
>        (declare-sort Nat$ 0)
>        (declare-sort Num$ 0)
>        (declare-sort L_word$ 0)
>        (declare-sort L_itself$ 0)
>        (declare-fun n$ () Nat$)
>        (declare-fun msb$ (L_word$) Bool)
>        (declare-fun nat$ (Int) Nat$)
>        (declare-fun one$ () Num$)
>        (declare-fun suc$ (Nat$) Nat$)
>        (declare-fun bit0$ (Num$) Num$)
>        (declare-fun less$ (Nat$ Nat$) Bool)
>        (declare-fun one$a () Nat$)
>        (declare-fun sint$ (L_word$) Int)
>        (declare-fun type$ () L_itself$)
>        (declare-fun unat$ (L_word$) Nat$)
>        (declare-fun zero$ () Nat$)
>        (declare-fun less$a (L_word$ L_word$) Bool)
>        (declare-fun minus$ (Nat$ Nat$) Nat$)
>        (declare-fun power$ (Nat$ Nat$) Nat$)
>        (declare-fun len_of$ (L_itself$) Nat$)
>        (declare-fun of_nat$ (Nat$) Int)
>        (declare-fun power$a (L_word$ Nat$) L_word$)
>        (declare-fun less_eq$ (L_word$ L_word$) Bool)
>        (declare-fun numeral$ (Num$) Nat$)
>        (declare-fun of_nat$a (Nat$) L_word$)
>        (declare-fun less_eq$a (Nat$ Nat$) Bool)
>        (declare-fun numeral$a (Num$) L_word$)
>        (declare-fun word_of_int$ (Int) L_word$)
>        (assert (! (not false) :named a0))
>        (assert (! (less$ n$ (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 L_word$)) (! (= (msb$ ?v0) (less_eq$
> (power$a (numeral$a (bit0$ one$)) (minus$ (len_of$ type$) (suc$
> zero$))) ?v0)) :pattern ((msb$ ?v0)))) :named a3))
>        (assert (! (=> (less$ n$ (power$ (numeral$ (bit0$ one$)) (minus$
> (len_of$ type$) (suc$ zero$)))) (= n$ (nat$ (sint$ (word_of_int$
> (of_nat$ n$)))))) :named a4))
>        (assert (! (forall ((?v0 Nat$)) (! (= (of_nat$a ?v0)
> (word_of_int$ (of_nat$ ?v0))) :pattern ((of_nat$a ?v0)))) :named a5))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$ zero$)))) (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) ?v1)))) :named a6))
>        (assert (! (forall ((?v0 L_word$)) (less$ (unat$ ?v0) (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) :named a7))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (and (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (len_of$ type$))) (less$ ?v1 (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) (= (less_eq$a ?v1 ?v0)
> (less_eq$ (of_nat$a ?v1) (of_nat$a ?v0))))) :named a8))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$a
> (power$ (numeral$ (bit0$ one$)) (minus$ (len_of$ type$) one$a)) (unat$
> ?v0))) :pattern ((msb$ ?v0)))) :named a9))
>        (assert (! (forall ((?v0 Nat$)) (= (power$a (numeral$a (bit0$
> one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))) :named
> a10))
>        (assert (! (forall ((?v0 L_word$) (?v1 L_word$) (?v2 L_word$))
> (=> (and (less_eq$ ?v0 ?v1) (less$a ?v1 ?v2)) (less$a ?v0 ?v2))) :named
> a11))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$)) (=> (and
> (less_eq$a ?v0 ?v1) (less$ ?v1 ?v2)) (less$ ?v0 ?v2))) :named a12))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (= (less_eq$a ?v0
> ?v1) (not (less$ ?v1 ?v0)))) :named a13))
>        (assert (! (not (= (len_of$ type$) (suc$ zero$))) :named a14))
>        (assert (! (= (not (= (len_of$ type$) (suc$ zero$))) (exists
> ((?v0 Nat$)) (= (len_of$ type$) (suc$ (suc$ ?v0))))) :named a15))
>        (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))
>        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)
>        ∀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))
>        ∀n. 2 ^ n = of_nat (2 ^ n)
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀y x. (y ≤ x) = (¬ x < y)
>        LENGTH('l) ≠ Suc 0
>        (LENGTH('l) ≠ Suc 0) = (∃n. LENGTH('l) = Suc (Suc n))
>        1 = Suc 0 
> SMT: Names:
>        sorts:
>          Nat$ = nat
>          Num$ = num
>          L_word$ = 'l word
>          L_itself$ = 'l itself
>        functions:
>          n$ = n
>          msb$ = msb
>          nat$ = nat
>          one$ = num.One
>          suc$ = Suc
>          bit0$ = num.Bit0
>          less$ = (<)
>          one$a = 1
>          sint$ = sint
>          type$ = TYPE('l)
>          unat$ = unat
>          zero$ = 0
>          less$a = (<)
>          minus$ = (-)
>          power$ = (^)
>          len_of$ = len_of
>          of_nat$ = int
>          power$a = (^)
>          less_eq$ = (≤)
>          numeral$ = numeral
>          of_nat$a = of_nat
>          less_eq$a = (≤)
>          numeral$a = numeral
>          word_of_int$ = word_of_int 
> SMT: Problem:
>        ; smt.random_seed=1 smt.refine_inj_axioms=false -T:1 -smt2
>        (set-option :produce-proofs true)
>        (declare-sort Nat$ 0)
>        (declare-sort Num$ 0)
>        (declare-sort L_word$ 0)
>        (declare-sort L_itself$ 0)
>        (declare-fun n$ () Nat$)
>        (declare-fun msb$ (L_word$) Bool)
>        (declare-fun nat$ (Int) Nat$)
>        (declare-fun one$ () Num$)
>        (declare-fun suc$ (Nat$) Nat$)
>        (declare-fun bit0$ (Num$) Num$)
>        (declare-fun less$ (Nat$ Nat$) Bool)
>        (declare-fun one$a () Nat$)
>        (declare-fun sint$ (L_word$) Int)
>        (declare-fun type$ () L_itself$)
>        (declare-fun unat$ (L_word$) Nat$)
>        (declare-fun zero$ () Nat$)
>        (declare-fun less$a (L_word$ L_word$) Bool)
>        (declare-fun minus$ (Nat$ Nat$) Nat$)
>        (declare-fun power$ (Nat$ Nat$) Nat$)
>        (declare-fun len_of$ (L_itself$) Nat$)
>        (declare-fun of_nat$ (Nat$) Int)
>        (declare-fun power$a (L_word$ Nat$) L_word$)
>        (declare-fun less_eq$ (Nat$ Nat$) Bool)
>        (declare-fun numeral$ (Num$) Nat$)
>        (declare-fun of_nat$a (Nat$) L_word$)
>        (declare-fun less_eq$a (L_word$ L_word$) Bool)
>        (declare-fun numeral$a (Num$) L_word$)
>        (declare-fun word_of_int$ (Int) L_word$)
>        (assert (! (not false) :named a0))
>        (assert (! (less$ n$ (power$ (numeral$ (bit0$ one$)) (minus$
> (len_of$ type$) (suc$ zero$)))) :named a1))
>        (assert (! (msb$ (word_of_int$ (of_nat$ n$))) :named a2))
>        (assert (! (=> (less$ n$ (power$ (numeral$ (bit0$ one$)) (minus$
> (len_of$ type$) (suc$ zero$)))) (= n$ (nat$ (sint$ (word_of_int$
> (of_nat$ n$)))))) :named a3))
>        (assert (! (forall ((?v0 Nat$)) (! (= (of_nat$a ?v0)
> (word_of_int$ (of_nat$ ?v0))) :pattern ((of_nat$a ?v0)))) :named a4))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$ zero$)))) (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) ?v1)))) :named a5))
>        (assert (! (forall ((?v0 L_word$)) (less$ (unat$ ?v0) (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) :named a6))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (and (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (len_of$ type$))) (less$ ?v1 (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) (= (less_eq$ ?v1 ?v0)
> (less_eq$a (of_nat$a ?v1) (of_nat$a ?v0))))) :named a7))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$
> (power$ (numeral$ (bit0$ one$)) (minus$ (len_of$ type$) one$a)) (unat$
> ?v0))) :pattern ((msb$ ?v0)))) :named a8))
>        (assert (! (forall ((?v0 Nat$)) (= (power$a (numeral$a (bit0$
> one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))) :named
> a9))
>        (assert (! (forall ((?v0 L_word$) (?v1 L_word$) (?v2 L_word$))
> (=> (and (less_eq$a ?v0 ?v1) (less$a ?v1 ?v2)) (less$a ?v0 ?v2)))
> :named a10))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$)) (=> (and
> (less_eq$ ?v0 ?v1) (less$ ?v1 ?v2)) (less$ ?v0 ?v2))) :named a11))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (= (less_eq$ ?v0 ?v1)
> (not (less$ ?v1 ?v0)))) :named a12))
>        (assert (! (not (= (len_of$ type$) (suc$ zero$))) :named a13))
>        (assert (! (= (not (= (len_of$ type$) (suc$ zero$))) (exists
> ((?v0 Nat$)) (= (len_of$ type$) (suc$ (suc$ ?v0))))) :named a14))
>        (assert (! (= one$a (suc$ zero$)) :named a15))
>        (check-sat)
>        (get-proof)
>         
> SMT: Invoking SMT solver "z3" ... 
> SMT: Solver: 
> SMT: Result:
>        sat
>        (error "line 48 column 10: proof is not available") 
> SMT: Time (ms):
>        21 
> SMT: Assertions:
>        ¬ False  [¬ False]
>        n < 2 ^ (LENGTH('l) - Suc 0)
>        msb (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)
>        ∀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))
>        ∀n. 2 ^ n = of_nat (2 ^ n)
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀y x. (y ≤ x) = (¬ x < y)
>        LENGTH('l) ≠ Suc 0
>        (LENGTH('l) ≠ Suc 0) = (∃n. LENGTH('l) = Suc (Suc n))
>        ∀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))
>        1 = Suc 0 
> SMT: Names:
>        sorts:
>          Nat$ = nat
>          Num$ = num
>          L_word$ = 'l word
>          L_itself$ = 'l itself
>        functions:
>          n$ = n
>          msb$ = msb
>          one$ = num.One
>          suc$ = Suc
>          bit0$ = num.Bit0
>          less$ = (<)
>          one$a = 1
>          type$ = TYPE('l)
>          unat$ = unat
>          zero$ = 0
>          less$a = (<)
>          minus$ = (-)
>          power$ = (^)
>          len_of$ = len_of
>          of_nat$ = int
>          power$a = (^)
>          less_eq$ = (≤)
>          numeral$ = numeral
>          of_nat$a = of_nat
>          less_eq$a = (≤)
>          numeral$a = numeral
>          word_of_int$ = word_of_int 
> SMT: Problem:
>        ; smt.random_seed=1 smt.refine_inj_axioms=false -T:1 -smt2
>        (set-option :produce-proofs true)
>        (declare-sort Nat$ 0)
>        (declare-sort Num$ 0)
>        (declare-sort L_word$ 0)
>        (declare-sort L_itself$ 0)
>        (declare-fun n$ () Nat$)
>        (declare-fun msb$ (L_word$) Bool)
>        (declare-fun one$ () Num$)
>        (declare-fun suc$ (Nat$) Nat$)
>        (declare-fun bit0$ (Num$) Num$)
>        (declare-fun less$ (Nat$ Nat$) Bool)
>        (declare-fun one$a () Nat$)
>        (declare-fun type$ () L_itself$)
>        (declare-fun unat$ (L_word$) Nat$)
>        (declare-fun zero$ () Nat$)
>        (declare-fun less$a (L_word$ L_word$) Bool)
>        (declare-fun minus$ (Nat$ Nat$) Nat$)
>        (declare-fun power$ (Nat$ Nat$) Nat$)
>        (declare-fun len_of$ (L_itself$) Nat$)
>        (declare-fun of_nat$ (Nat$) Int)
>        (declare-fun power$a (L_word$ Nat$) L_word$)
>        (declare-fun less_eq$ (Nat$ Nat$) Bool)
>        (declare-fun numeral$ (Num$) Nat$)
>        (declare-fun of_nat$a (Nat$) L_word$)
>        (declare-fun less_eq$a (L_word$ L_word$) Bool)
>        (declare-fun numeral$a (Num$) L_word$)
>        (declare-fun word_of_int$ (Int) L_word$)
>        (assert (! (not false) :named a0))
>        (assert (! (less$ n$ (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 Nat$)) (! (= (of_nat$a ?v0)
> (word_of_int$ (of_nat$ ?v0))) :pattern ((of_nat$a ?v0)))) :named a3))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$ zero$)))) (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) ?v1)))) :named a4))
>        (assert (! (forall ((?v0 L_word$)) (less$ (unat$ ?v0) (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) :named a5))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (and (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (len_of$ type$))) (less$ ?v1 (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) (= (less_eq$ ?v1 ?v0)
> (less_eq$a (of_nat$a ?v1) (of_nat$a ?v0))))) :named a6))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$
> (power$ (numeral$ (bit0$ one$)) (minus$ (len_of$ type$) one$a)) (unat$
> ?v0))) :pattern ((msb$ ?v0)))) :named a7))
>        (assert (! (forall ((?v0 Nat$)) (= (power$a (numeral$a (bit0$
> one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))) :named
> a8))
>        (assert (! (forall ((?v0 L_word$) (?v1 L_word$) (?v2 L_word$))
> (=> (and (less_eq$a ?v0 ?v1) (less$a ?v1 ?v2)) (less$a ?v0 ?v2)))
> :named a9))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$)) (=> (and
> (less_eq$ ?v0 ?v1) (less$ ?v1 ?v2)) (less$ ?v0 ?v2))) :named a10))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (= (less_eq$ ?v0 ?v1)
> (not (less$ ?v1 ?v0)))) :named a11))
>        (assert (! (not (= (len_of$ type$) (suc$ zero$))) :named a12))
>        (assert (! (= (not (= (len_of$ type$) (suc$ zero$))) (exists
> ((?v0 Nat$)) (= (len_of$ type$) (suc$ (suc$ ?v0))))) :named a13))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$a
> (power$a (numeral$a (bit0$ one$)) (minus$ (len_of$ type$) (suc$
> zero$))) ?v0)) :pattern ((msb$ ?v0)))) :named a14))
>        (assert (! (= one$a (suc$ zero$)) :named a15))
>        (check-sat)
>        (get-proof)
>         
> SMT: Invoking SMT solver "z3" ... 
> SMT: Solver: 
> SMT: Result:
>        unsat
>        ((set-logic <null>)
>        (declare-fun ?v0!0 () Nat$)
>        (proof
>        (let ((?x494 (of_nat$a n$)))
>        (let ((?x37 (suc$ zero$)))
>        (let ((?x35 (len_of$ type$)))
>        (let ((?x38 (minus$ ?x35 ?x37)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x32 (numeral$ ?x31)))
>        (let ((?x39 (power$ ?x32 ?x38)))
>        (let ((?x472 (of_nat$a ?x39)))
>        (let (($x495 (less_eq$a ?x472 ?x494)))
>        (let ((?x42 (of_nat$ n$)))
>        (let ((?x43 (word_of_int$ ?x42)))
>        (let ((?x118 (numeral$a ?x31)))
>        (let ((?x183 (power$a ?x118 ?x38)))
>        (let (($x456 (less_eq$a ?x183 ?x43)))
>        (let (($x686 (= ?x494 ?x43)))
>        (let (($x52 (forall ((?v0 Nat$) )(! (let ((?x49 (word_of_int$
> (of_nat$ ?v0))))
>        (let ((?x47 (of_nat$a ?v0)))
>        (= ?x47 ?x49))) :pattern ( (of_nat$a ?v0) ) :qid k!32))
>        ))
>        (let ((?x49 (word_of_int$ (of_nat$ ?0))))
>        (let ((?x47 (of_nat$a ?0)))
>        (let (($x50 (= ?x47 ?x49)))
>        (let ((@x200 (mp~ (asserted $x52) (nnf-pos (refl (~ $x50 $x50))
> (~ $x52 $x52)) $x52)))
>        (let (($x561 (not $x52)))
>        (let (($x705 (or $x561 $x686)))
>        (let ((@x706 ((_ quant-inst n$) $x705)))
>        (let (($x473 (= ?x183 ?x472)))
>        (let (($x380 (forall ((?v0 Nat$) )(! (= (power$a (numeral$a
> (bit0$ one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))
> :pattern ( (power$a (numeral$a (bit0$ one$)) ?v0) ) :pattern ( (power$
> (numeral$ (bit0$ one$)) ?v0) ) :qid k!37))
>        ))
>        (let (($x123 (forall ((?v0 Nat$) )(! (= (power$a (numeral$a
> (bit0$ one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))
> :qid k!37))
>        ))
>        (let (($x122 (= (power$a ?x118 ?0) (of_nat$a (power$ ?x32
> ?0)))))
>        (let ((@x225 (mp~ (asserted $x123) (nnf-pos (refl (~ $x122
> $x122)) (~ $x123 $x123)) $x123)))
>        (let ((@x385 (mp @x225 (quant-intro (refl (= $x122 $x122)) (=
> $x123 $x380)) $x380)))
>        (let (($x490 (or (not $x380) $x473)))
>        (let ((@x491 ((_ quant-inst (minus$ ?x35 ?x37)) $x490)))
>        (let ((@x778 (monotonicity (symm (unit-resolution @x491 @x385
> $x473) (= ?x472 ?x183)) (unit-resolution @x706 @x200 $x686) (= $x495
> $x456))))
>        (let (($x44 (msb$ ?x43)))
>        (let (($x457 (= $x44 $x456)))
>        (let (($x192 (forall ((?v0 L_word$) )(! (let ((?x37 (suc$
> zero$)))
>        (let ((?x35 (len_of$ type$)))
>        (let ((?x38 (minus$ ?x35 ?x37)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x118 (numeral$a ?x31)))
>        (let ((?x183 (power$a ?x118 ?x38)))
>        (let (($x184 (less_eq$a ?x183 ?v0)))
>        (let (($x102 (msb$ ?v0)))
>        (= $x102 $x184))))))))) :pattern ( (msb$ ?v0) ) :qid k!43))
>        ))
>        (let (($x184 (less_eq$a ?x183 ?0)))
>        (let (($x102 (msb$ ?0)))
>        (let (($x189 (= $x102 $x184)))
>        (let (($x187 (forall ((?v0 L_word$) )(! (let ((?x37 (suc$
> zero$)))
>        (let ((?x35 (len_of$ type$)))
>        (let ((?x38 (minus$ ?x35 ?x37)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x118 (numeral$a ?x31)))
>        (let ((?x183 (power$a ?x118 ?x38)))
>        (let (($x184 (less_eq$a ?x183 ?v0)))
>        (let (($x102 (msb$ ?v0)))
>        (= $x102 $x184))))))))) :pattern ( (msb$ ?v0) ) :qid k!43))
>        ))
>        (let ((@x197 (mp (asserted $x187) (quant-intro (rewrite (= (=
> $x102 $x184) $x189)) (= $x187 $x192)) $x192)))
>        (let ((@x280 (mp~ @x197 (nnf-pos (refl (~ $x189 $x189)) (~ $x192
> $x192)) $x192)))
>        (let (($x475 (or (not $x192) $x457)))
>        (let ((@x476 ((_ quant-inst (word_of_int$ ?x42)) $x475)))
>        (let ((@x45 (asserted $x44)))
>        (let ((@x771 (unit-resolution (def-axiom (or (not $x457) (not
> $x44) $x456)) @x45 (or (not $x457) $x456))))
>        (let ((@x781 (mp (unit-resolution @x771 (unit-resolution @x476
> @x280 $x457) $x456) (symm @x778 (= $x456 $x495)) $x495)))
>        (let (($x508 (not $x495)))
>        (let (($x430 (less_eq$ ?x39 n$)))
>        (let (($x496 (= $x430 $x495)))
>        (let ((?x73 (power$ ?x32 ?x35)))
>        (let (($x487 (less$ n$ ?x73)))
>        (let ((?x247 (suc$ ?v0!0)))
>        (let ((?x248 (suc$ ?x247)))
>        (let (($x249 (= ?x35 ?x248)))
>        (let (($x170 (= ?x35 ?x37)))
>        (let (($x171 (not $x170)))
>        (let ((@x173 (asserted $x171)))
>        (let (($x267 (or $x170 $x249)))
>        (let (($x255 (forall ((?v0 Nat$) )(! (not (= (len_of$ type$)
> (suc$ (suc$ ?v0)))) :qid k!42))
>        ))
>        (let (($x259 (or $x171 $x255)))
>        (let ((@x269 (monotonicity (rewrite (= (not $x171) $x170)) (=
> (or (not $x171) $x249) $x267))))
>        (let ((@x272 (monotonicity @x269 (= (and (or (not $x171) $x249)
> $x259) (and $x267 $x259)))))
>        (let (($x261 (and (or (not $x171) $x249) $x259)))
>        (let (($x177 (exists ((?v0 Nat$) )(! (let ((?x35 (len_of$
> type$)))
>        (= ?x35 (suc$ (suc$ ?v0)))) :qid k!42))
>        ))
>        (let (($x180 (= $x171 $x177)))
>        (let (($x252 (not (= ?x35 (suc$ (suc$ ?0))))))
>        (let ((@x263 (nnf-pos (refl (~ $x171 $x171)) (refl (~ (not
> $x171) (not $x171))) (sk (~ $x177 $x249)) (nnf-neg (refl (~ $x252
> $x252)) (~ (not $x177) $x255)) (~ $x180 $x261))))
>        (let ((@x185 (mp (asserted (= $x171 $x177)) (rewrite (= (= $x171
> $x177) $x180)) $x180)))
>        (let ((@x274 (and-elim (mp (mp~ @x185 @x263 $x261) @x272 (and
> $x267 $x259)) $x267)))
>        (let ((@x725 (monotonicity (unit-resolution @x274 @x173 $x249)
> (= ?x73 (power$ ?x32 ?x248)))))
>        (let ((@x729 (symm (monotonicity @x725 (= $x487 (less$ n$
> (power$ ?x32 ?x248)))) (= (less$ n$ (power$ ?x32 ?x248)) $x487))))
>        (let ((?x427 (power$ ?x32 ?x248)))
>        (let (($x428 (less$ n$ ?x427)))
>        (let ((?x418 (minus$ ?x248 ?x37)))
>        (let ((?x419 (power$ ?x32 ?x418)))
>        (let (($x425 (less$ n$ ?x419)))
>        (let ((@x714 (monotonicity (symm (unit-resolution @x274 @x173
> $x249) (= ?x248 ?x35)) (= ?x418 ?x38))))
>        (let ((@x718 (monotonicity (monotonicity @x714 (= ?x419 ?x39))
> (= $x425 (less$ n$ ?x39)))))
>        (let (($x40 (less$ n$ ?x39)))
>        (let ((@x41 (asserted $x40)))
>        (let (($x426 (not $x425)))
>        (let (($x429 (or $x426 $x428)))
>        (let (($x357 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x57
> (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$
> zero$))))))
>        (or (not $x57) (less$ ?v0 (power$ (numeral$ (bit0$ one$))
> ?v1)))) :pattern ( (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (minus$
> ?v1 (suc$ zero$)))) ) :qid k!33))
>        ))
>        (let (($x67 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x57
> (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$
> zero$))))))
>        (or (not $x57) (less$ ?v0 (power$ (numeral$ (bit0$ one$))
> ?v1)))) :qid k!33))
>        ))
>        (let (($x64 (or (not (less$ ?1 (power$ ?x32 (minus$ ?0 ?x37))))
> (less$ ?1 (power$ ?x32 ?0)))))
>        (let (($x61 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x57
> (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$
> zero$))))))
>        (=> $x57 (less$ ?v0 (power$ (numeral$ (bit0$ one$)) ?v1)))) :qid
> k!33))
>        ))
>        (let (($x57 (less$ ?1 (power$ ?x32 (minus$ ?0 ?x37)))))
>        (let ((@x69 (quant-intro (rewrite (= (=> $x57 (less$ ?1 (power$
> ?x32 ?0))) $x64)) (= $x61 $x67))))
>        (let ((@x205 (mp~ (mp (asserted $x61) @x69 $x67) (nnf-pos (refl
> (~ $x64 $x64)) (~ $x67 $x67)) $x67)))
>        (let ((@x362 (mp @x205 (quant-intro (refl (= $x64 $x64)) (= $x67
> $x357)) $x357)))
>        (let (($x433 (or (not $x357) $x426 $x428)))
>        (let ((@x438 (mp ((_ quant-inst n$ (suc$ ?x247)) (or (not $x357)
> $x429)) (rewrite (= (or (not $x357) $x429) $x433)) $x433)))
>        (let ((@x723 (unit-resolution (unit-resolution @x438 @x362
> $x429) (mp @x41 (symm @x718 (= $x40 $x425)) $x425) $x428)))
>        (let (($x492 (less$ ?x39 ?x73)))
>        (let (($x575 (less$ ?x39 ?x427)))
>        (let ((?x440 (unat$ ?x43)))
>        (let (($x565 (less$ ?x440 ?x427)))
>        (let ((@x737 (symm (monotonicity (symm @x725 (= ?x427 ?x73)) (=
> $x565 (less$ ?x440 ?x73))) (= (less$ ?x440 ?x73) $x565))))
>        (let (($x519 (less$ ?x440 ?x73)))
>        (let (($x364 (forall ((?v0 L_word$) )(! (let ((?x35 (len_of$
> type$)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x32 (numeral$ ?x31)))
>        (let ((?x73 (power$ ?x32 ?x35)))
>        (let ((?x71 (unat$ ?v0)))
>        (less$ ?x71 ?x73)))))) :pattern ( (unat$ ?v0) ) :qid k!34))
>        ))
>        (let (($x75 (forall ((?v0 L_word$) )(! (let ((?x35 (len_of$
> type$)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x32 (numeral$ ?x31)))
>        (let ((?x73 (power$ ?x32 ?x35)))
>        (let ((?x71 (unat$ ?v0)))
>        (less$ ?x71 ?x73)))))) :qid k!34))
>        ))
>        (let ((@x368 (quant-intro (refl (= (less$ (unat$ ?0) ?x73)
> (less$ (unat$ ?0) ?x73))) (= $x75 $x364))))
>        (let ((@x209 (nnf-pos (refl (~ (less$ (unat$ ?0) ?x73) (less$
> (unat$ ?0) ?x73))) (~ $x75 $x75))))
>        (let ((@x369 (mp (mp~ (asserted $x75) @x209 $x75) @x368 $x364)))
>        (let (($x556 (or (not $x364) $x519)))
>        (let ((@x557 ((_ quant-inst (word_of_int$ ?x42)) $x556)))
>        (let (($x498 (less_eq$ ?x39 ?x440)))
>        (let (($x195 (= one$a ?x37)))
>        (let ((@x196 (asserted $x195)))
>        (let ((@x746 (monotonicity (monotonicity @x196 (= (minus$ ?x35
> one$a) ?x38)) (= (power$ ?x32 (minus$ ?x35 one$a)) ?x39))))
>        (let ((@x750 (monotonicity (symm @x746 (= ?x39 (power$ ?x32
> (minus$ ?x35 one$a)))) (= $x498 (less_eq$ (power$ ?x32 (minus$ ?x35
> one$a)) ?x440)))))
>        (let ((@x752 (symm @x750 (= (less_eq$ (power$ ?x32 (minus$ ?x35
> one$a)) ?x440) $x498))))
>        (let ((?x105 (minus$ ?x35 one$a)))
>        (let ((?x106 (power$ ?x32 ?x105)))
>        (let (($x441 (less_eq$ ?x106 ?x440)))
>        (let (($x455 (= $x44 $x441)))
>        (let (($x115 (forall ((?v0 L_word$) )(! (let ((?x71 (unat$
> ?v0)))
>        (let ((?x35 (len_of$ type$)))
>        (let ((?x105 (minus$ ?x35 one$a)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x32 (numeral$ ?x31)))
>        (let ((?x106 (power$ ?x32 ?x105)))
>        (let (($x107 (less_eq$ ?x106 ?x71)))
>        (let (($x102 (msb$ ?v0)))
>        (= $x102 $x107))))))))) :pattern ( (msb$ ?v0) ) :qid k!36))
>        ))
>        (let ((?x71 (unat$ ?0)))
>        (let (($x107 (less_eq$ ?x106 ?x71)))
>        (let (($x112 (= $x102 $x107)))
>        (let (($x110 (forall ((?v0 L_word$) )(! (let ((?x71 (unat$
> ?v0)))
>        (let ((?x35 (len_of$ type$)))
>        (let ((?x105 (minus$ ?x35 one$a)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x32 (numeral$ ?x31)))
>        (let ((?x106 (power$ ?x32 ?x105)))
>        (let (($x107 (less_eq$ ?x106 ?x71)))
>        (let (($x102 (msb$ ?v0)))
>        (= $x102 $x107))))))))) :pattern ( (msb$ ?v0) ) :qid k!36))
>        ))
>        (let ((@x120 (mp (asserted $x110) (quant-intro (rewrite (= (=
> $x102 $x107) $x112)) (= $x110 $x115)) $x115)))
>        (let ((@x220 (mp~ @x120 (nnf-pos (refl (~ $x112 $x112)) (~ $x115
> $x115)) $x115)))
>        (let (($x459 (or (not $x115) $x455)))
>        (let ((@x460 ((_ quant-inst (word_of_int$ ?x42)) $x459)))
>        (let ((@x741 (unit-resolution (def-axiom (or (not $x455) (not
> $x44) $x441)) @x45 (or (not $x455) $x441))))
>        (let ((@x753 (mp (unit-resolution @x741 (unit-resolution @x460
> @x220 $x455) $x441) @x752 $x498)))
>        (let (($x394 (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$) )(! (let
> (($x146 (less$ ?v0 ?v2)))
>        (let (($x144 (less$ ?v1 ?v2)))
>        (let (($x332 (not $x144)))
>        (or (not (less_eq$ ?v0 ?v1)) $x332 $x146)))) :pattern (
> (less_eq$ ?v0 ?v1) (less$ ?v1 ?v2) ) :qid k!39))
>        ))
>        (let (($x352 (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$) )(! (let
> (($x146 (less$ ?v0 ?v2)))
>        (let (($x144 (less$ ?v1 ?v2)))
>        (let (($x332 (not $x144)))
>        (or (not (less_eq$ ?v0 ?v1)) $x332 $x146)))) :qid k!39))
>        ))
>        (let (($x146 (less$ ?2 ?0)))
>        (let (($x144 (less$ ?1 ?0)))
>        (let (($x332 (not $x144)))
>        (let (($x347 (or (not (less_eq$ ?2 ?1)) $x332 $x146)))
>        (let (($x154 (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$) )(! (let
> (($x146 (less$ ?v0 ?v2)))
>        (let (($x144 (less$ ?v1 ?v2)))
>        (let (($x142 (less_eq$ ?v0 ?v1)))
>        (let (($x145 (and $x142 $x144)))
>        (let (($x150 (not $x145)))
>        (or $x150 $x146)))))) :qid k!39))
>        ))
>        (let (($x142 (less_eq$ ?2 ?1)))
>        (let (($x145 (and $x142 $x144)))
>        (let (($x150 (not $x145)))
>        (let (($x151 (or $x150 $x146)))
>        (let ((@x341 (rewrite (= (not (not (or (not $x142) $x332))) (or
> (not $x142) $x332)))))
>        (let ((@x339 (monotonicity (rewrite (= $x145 (not (or (not
> $x142) $x332)))) (= $x150 (not (not (or (not $x142) $x332)))))))
>        (let ((@x346 (monotonicity (trans @x339 @x341 (= $x150 (or (not
> $x142) $x332))) (= $x151 (or (or (not $x142) $x332) $x146)))))
>        (let ((@x351 (trans @x346 (rewrite (= (or (or (not $x142) $x332)
> $x146) $x347)) (= $x151 $x347))))
>        (let (($x148 (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$) )(! (let
> (($x146 (less$ ?v0 ?v2)))
>        (let (($x144 (less$ ?v1 ?v2)))
>        (let (($x142 (less_eq$ ?v0 ?v1)))
>        (let (($x145 (and $x142 $x144)))
>        (=> $x145 $x146))))) :qid k!39))
>        ))
>        (let ((@x159 (mp (asserted $x148) (quant-intro (rewrite (= (=>
> $x145 $x146) $x151)) (= $x148 $x154)) $x154)))
>        (let ((@x355 (mp (mp~ @x159 (nnf-pos (refl (~ $x151 $x151)) (~
> $x154 $x154)) $x154) (quant-intro @x351 (= $x154 $x352)) $x352)))
>        (let ((@x399 (mp @x355 (quant-intro (refl (= $x347 $x347)) (=
> $x352 $x394)) $x394)))
>        (let (($x573 (not $x565)))
>        (let (($x526 (not $x498)))
>        (let (($x566 (not $x394)))
>        (let (($x591 (or $x566 $x526 $x573 $x575)))
>        (let ((@x596 (mp ((_ quant-inst (power$ ?x32 ?x38) (unat$ ?x43)
> (power$ ?x32 ?x248)) (or $x566 (or $x526 $x573 $x575))) (rewrite (= (or
> $x566 (or $x526 $x573 $x575)) $x591)) $x591)))
>        (let ((@x756 (unit-resolution (unit-resolution @x596 @x399 @x753
> (or $x573 $x575)) (mp (unit-resolution @x557 @x369 $x519) @x737 $x565)
> $x575)))
>        (let ((@x759 (mp @x756 (monotonicity (symm @x725 (= ?x427 ?x73))
> (= $x575 $x492)) $x492)))
>        (let (($x493 (not $x492)))
>        (let (($x488 (not $x487)))
>        (let (($x497 (or $x488 $x493 $x496)))
>        (let (($x372 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let ((?x47
> (of_nat$a ?v1)))
>        (let (($x82 (less_eq$a ?x47 (of_nat$a ?v0))))
>        (let (($x80 (less_eq$ ?v1 ?v0)))
>        (let (($x87 (= $x80 $x82)))
>        (or (not (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (len_of$
> type$)))) (not (less$ ?v1 (power$ (numeral$ (bit0$ one$)) (len_of$
> type$)))) $x87))))) :pattern ( (less_eq$ ?v1 ?v0) ) :pattern (
> (less_eq$a (of_nat$a ?v1) (of_nat$a ?v0)) ) :qid k!35))
>        ))
>        (let (($x302 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let ((?x47
> (of_nat$a ?v1)))
>        (let (($x82 (less_eq$a ?x47 (of_nat$a ?v0))))
>        (let (($x80 (less_eq$ ?v1 ?v0)))
>        (let (($x87 (= $x80 $x82)))
>        (or (not (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (len_of$
> type$)))) (not (less$ ?v1 (power$ (numeral$ (bit0$ one$)) (len_of$
> type$)))) $x87))))) :qid k!35))
>        ))
>        (let (($x82 (less_eq$a ?x47 (of_nat$a ?1))))
>        (let (($x80 (less_eq$ ?0 ?1)))
>        (let (($x87 (= $x80 $x82)))
>        (let (($x297 (or (not (less$ ?1 ?x73)) (not (less$ ?0 ?x73))
> $x87)))
>        (let (($x99 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let ((?x47
> (of_nat$a ?v1)))
>        (let (($x82 (less_eq$a ?x47 (of_nat$a ?v0))))
>        (let (($x80 (less_eq$ ?v1 ?v0)))
>        (let (($x87 (= $x80 $x82)))
>        (let (($x79 (and (less$ ?v0 (power$ (numeral$ (bit0$ one$))
> (len_of$ type$))) (less$ ?v1 (power$ (numeral$ (bit0$ one$)) (len_of$
> type$))))))
>        (let (($x93 (not $x79)))
>        (or $x93 $x87))))))) :qid k!35))
>        ))
>        (let (($x298 (= (or (or (not (less$ ?1 ?x73)) (not (less$ ?0
> ?x73))) $x87) $x297)))
>        (let (($x79 (and (less$ ?1 ?x73) (less$ ?0 ?x73))))
>        (let (($x93 (not $x79)))
>        (let (($x94 (or $x93 $x87)))
>        (let (($x295 (= $x94 (or (or (not (less$ ?1 ?x73)) (not (less$
> ?0 ?x73))) $x87))))
>        (let (($x281 (or (not (less$ ?1 ?x73)) (not (less$ ?0 ?x73)))))
>        (let ((@x289 (monotonicity (rewrite (= $x79 (not $x281))) (=
> $x93 (not (not $x281))))))
>        (let ((@x296 (monotonicity (trans @x289 (rewrite (= (not (not
> $x281)) $x281)) (= $x93 $x281)) $x295)))
>        (let ((@x304 (quant-intro (trans @x296 (rewrite $x298) (= $x94
> $x297)) (= $x99 $x302))))
>        (let (($x85 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x79 (and
> (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (len_of$ type$))) (less$ ?v1
> (power$ (numeral$ (bit0$ one$)) (len_of$ type$))))))
>        (=> $x79 (= (less_eq$ ?v1 ?v0) (less_eq$a (of_nat$a ?v1)
> (of_nat$a ?v0))))) :qid k!35))
>        ))
>        (let ((@x92 (monotonicity (rewrite (= (= $x80 $x82) $x87)) (=
> (=> $x79 (= $x80 $x82)) (=> $x79 $x87)))))
>        (let ((@x98 (trans @x92 (rewrite (= (=> $x79 $x87) $x94)) (= (=>
> $x79 (= $x80 $x82)) $x94))))
>        (let ((@x215 (mp~ (mp (asserted $x85) (quant-intro @x98 (= $x85
> $x99)) $x99) (nnf-pos (refl (~ $x94 $x94)) (~ $x99 $x99)) $x99)))
>        (let ((@x377 (mp (mp @x215 @x304 $x302) (quant-intro (refl (=
> $x297 $x297)) (= $x302 $x372)) $x372)))
>        (let (($x500 (not $x372)))
>        (let (($x501 (or $x500 $x488 $x493 $x496)))
>        (let ((@x506 (mp ((_ quant-inst n$ (power$ ?x32 ?x38)) (or $x500
> $x497)) (rewrite (= (or $x500 $x497) $x501)) $x501)))
>        (let ((@x761 (unit-resolution (unit-resolution @x506 @x377
> $x497) @x759 (mp @x723 @x729 $x487) $x496)))
>        (let (($x448 (not $x430)))
>        (let (($x431 (not $x40)))
>        (let (($x439 (= $x430 $x431)))
>        (let (($x402 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x157
> (less_eq$ ?v0 ?v1)))
>        (= $x157 (not (less$ ?v1 ?v0)))) :pattern ( (less_eq$ ?v0 ?v1) )
> :pattern ( (less$ ?v1 ?v0) ) :qid k!40))
>        ))
>        (let (($x167 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x157
> (less_eq$ ?v0 ?v1)))
>        (= $x157 (not (less$ ?v1 ?v0)))) :qid k!40))
>        ))
>        (let (($x157 (less_eq$ ?1 ?0)))
>        (let (($x164 (= $x157 (not (less$ ?0 ?1)))))
>        (let (($x162 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x157
> (less_eq$ ?v0 ?v1)))
>        (= $x157 (not (less$ ?v1 ?v0)))) :qid k!40))
>        ))
>        (let ((@x169 (quant-intro (rewrite (= (= $x157 (not (less$ ?0
> ?1))) $x164)) (= $x162 $x167))))
>        (let ((@x240 (mp~ (mp (asserted $x162) @x169 $x167) (nnf-pos
> (refl (~ $x164 $x164)) (~ $x167 $x167)) $x167)))
>        (let ((@x407 (mp @x240 (quant-intro (refl (= $x164 $x164)) (=
> $x167 $x402)) $x402)))
>        (let (($x442 (not $x402)))
>        (let (($x443 (or $x442 $x439)))
>        (let ((@x444 ((_ quant-inst (power$ ?x32 ?x38) n$) $x443)))
>        (let ((@x764 (unit-resolution (def-axiom (or (not $x439) $x448
> $x431)) @x41 (or (not $x439) $x448))))
>        (let ((@x767 (unit-resolution (def-axiom (or (not $x496) $x430
> $x508)) (unit-resolution @x764 (unit-resolution @x444 @x407 $x439)
> $x448) (or (not $x496) $x508))))
>        (unit-resolution (unit-resolution @x767 @x761 $x508) @x781
> false))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
> )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
> ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 
> SMT: Time (ms):
>        11 
> SMT: Assertions:
>        ¬ False  [¬ False]
>        n < 2 ^ (LENGTH('l) - Suc 0)
>        msb (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)
>        ∀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))
>        ∀n. 2 ^ n = of_nat (2 ^ n)
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀y x. (y ≤ x) = (¬ x < y)
>        LENGTH('l) ≠ Suc 0
>        (LENGTH('l) ≠ Suc 0) = (∃n. LENGTH('l) = Suc (Suc n))
>        ∀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))
>        1 = Suc 0 
> SMT: Names:
>        sorts:
>          Nat$ = nat
>          Num$ = num
>          L_word$ = 'l word
>          L_itself$ = 'l itself
>        functions:
>          n$ = n
>          msb$ = msb
>          one$ = num.One
>          suc$ = Suc
>          bit0$ = num.Bit0
>          less$ = (<)
>          one$a = 1
>          type$ = TYPE('l)
>          unat$ = unat
>          zero$ = 0
>          less$a = (<)
>          minus$ = (-)
>          power$ = (^)
>          len_of$ = len_of
>          of_nat$ = int
>          power$a = (^)
>          less_eq$ = (≤)
>          numeral$ = numeral
>          of_nat$a = of_nat
>          less_eq$a = (≤)
>          numeral$a = numeral
>          word_of_int$ = word_of_int 
> SMT: Problem:
>        ; smt.random_seed=1 smt.refine_inj_axioms=false -T:1 -smt2
>        (set-option :produce-proofs true)
>        (declare-sort Nat$ 0)
>        (declare-sort Num$ 0)
>        (declare-sort L_word$ 0)
>        (declare-sort L_itself$ 0)
>        (declare-fun n$ () Nat$)
>        (declare-fun msb$ (L_word$) Bool)
>        (declare-fun one$ () Num$)
>        (declare-fun suc$ (Nat$) Nat$)
>        (declare-fun bit0$ (Num$) Num$)
>        (declare-fun less$ (Nat$ Nat$) Bool)
>        (declare-fun one$a () Nat$)
>        (declare-fun type$ () L_itself$)
>        (declare-fun unat$ (L_word$) Nat$)
>        (declare-fun zero$ () Nat$)
>        (declare-fun less$a (L_word$ L_word$) Bool)
>        (declare-fun minus$ (Nat$ Nat$) Nat$)
>        (declare-fun power$ (Nat$ Nat$) Nat$)
>        (declare-fun len_of$ (L_itself$) Nat$)
>        (declare-fun of_nat$ (Nat$) Int)
>        (declare-fun power$a (L_word$ Nat$) L_word$)
>        (declare-fun less_eq$ (Nat$ Nat$) Bool)
>        (declare-fun numeral$ (Num$) Nat$)
>        (declare-fun of_nat$a (Nat$) L_word$)
>        (declare-fun less_eq$a (L_word$ L_word$) Bool)
>        (declare-fun numeral$a (Num$) L_word$)
>        (declare-fun word_of_int$ (Int) L_word$)
>        (assert (! (not false) :named a0))
>        (assert (! (less$ n$ (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 Nat$) (?v1 Nat$)) (=> (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$ zero$)))) (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) ?v1)))) :named a3))
>        (assert (! (forall ((?v0 L_word$)) (less$ (unat$ ?v0) (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) :named a4))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (and (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (len_of$ type$))) (less$ ?v1 (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) (= (less_eq$ ?v1 ?v0)
> (less_eq$a (of_nat$a ?v1) (of_nat$a ?v0))))) :named a5))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$
> (power$ (numeral$ (bit0$ one$)) (minus$ (len_of$ type$) one$a)) (unat$
> ?v0))) :pattern ((msb$ ?v0)))) :named a6))
>        (assert (! (forall ((?v0 Nat$)) (= (power$a (numeral$a (bit0$
> one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))) :named
> a7))
>        (assert (! (forall ((?v0 L_word$) (?v1 L_word$) (?v2 L_word$))
> (=> (and (less_eq$a ?v0 ?v1) (less$a ?v1 ?v2)) (less$a ?v0 ?v2)))
> :named a8))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$)) (=> (and
> (less_eq$ ?v0 ?v1) (less$ ?v1 ?v2)) (less$ ?v0 ?v2))) :named a9))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (= (less_eq$ ?v0 ?v1)
> (not (less$ ?v1 ?v0)))) :named a10))
>        (assert (! (not (= (len_of$ type$) (suc$ zero$))) :named a11))
>        (assert (! (= (not (= (len_of$ type$) (suc$ zero$))) (exists
> ((?v0 Nat$)) (= (len_of$ type$) (suc$ (suc$ ?v0))))) :named a12))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$a
> (power$a (numeral$a (bit0$ one$)) (minus$ (len_of$ type$) (suc$
> zero$))) ?v0)) :pattern ((msb$ ?v0)))) :named a13))
>        (assert (! (= one$a (suc$ zero$)) :named a14))
>        (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))
>        ∀x. unat x < 2 ^ LENGTH('l)
>        ∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (y ≤ x) =
> (of_nat y ≤ of_nat x)
>        ∀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))
>        ∀n. 2 ^ n = of_nat (2 ^ n)
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀y x. (y ≤ x) = (¬ x < y)
>        LENGTH('l) ≠ Suc 0
>        (LENGTH('l) ≠ Suc 0) = (∃n. LENGTH('l) = Suc (Suc 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. 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))
>        1 = Suc 0 
> SMT: Names:
>        sorts:
>          Nat$ = nat
>          Num$ = num
>          L_word$ = 'l word
>          L_itself$ = 'l itself
>        functions:
>          n$ = n
>          msb$ = msb
>          one$ = num.One
>          suc$ = Suc
>          bit0$ = num.Bit0
>          less$ = (<)
>          one$a = 1
>          type$ = TYPE('l)
>          unat$ = unat
>          zero$ = 0
>          less$a = (<)
>          minus$ = (-)
>          power$ = (^)
>          len_of$ = len_of
>          of_nat$ = int
>          power$a = (^)
>          less_eq$ = (≤)
>          numeral$ = numeral
>          of_nat$a = of_nat
>          less_eq$a = (≤)
>          numeral$a = numeral
>          word_of_int$ = word_of_int 
> SMT: Problem:
>        ; smt.random_seed=1 smt.refine_inj_axioms=false -T:1 -smt2
>        (set-option :produce-proofs true)
>        (declare-sort Nat$ 0)
>        (declare-sort Num$ 0)
>        (declare-sort L_word$ 0)
>        (declare-sort L_itself$ 0)
>        (declare-fun n$ () Nat$)
>        (declare-fun msb$ (L_word$) Bool)
>        (declare-fun one$ () Num$)
>        (declare-fun suc$ (Nat$) Nat$)
>        (declare-fun bit0$ (Num$) Num$)
>        (declare-fun less$ (Nat$ Nat$) Bool)
>        (declare-fun one$a () Nat$)
>        (declare-fun type$ () L_itself$)
>        (declare-fun unat$ (L_word$) Nat$)
>        (declare-fun zero$ () Nat$)
>        (declare-fun less$a (L_word$ L_word$) Bool)
>        (declare-fun minus$ (Nat$ Nat$) Nat$)
>        (declare-fun power$ (Nat$ Nat$) Nat$)
>        (declare-fun len_of$ (L_itself$) Nat$)
>        (declare-fun of_nat$ (Nat$) Int)
>        (declare-fun power$a (L_word$ Nat$) L_word$)
>        (declare-fun less_eq$ (Nat$ Nat$) Bool)
>        (declare-fun numeral$ (Num$) Nat$)
>        (declare-fun of_nat$a (Nat$) L_word$)
>        (declare-fun less_eq$a (L_word$ L_word$) Bool)
>        (declare-fun numeral$a (Num$) L_word$)
>        (declare-fun word_of_int$ (Int) L_word$)
>        (assert (! (not false) :named a0))
>        (assert (! (less$ n$ (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 L_word$)) (less$ (unat$ ?v0) (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) :named a3))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (and (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (len_of$ type$))) (less$ ?v1 (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) (= (less_eq$ ?v1 ?v0)
> (less_eq$a (of_nat$a ?v1) (of_nat$a ?v0))))) :named a4))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$
> (power$ (numeral$ (bit0$ one$)) (minus$ (len_of$ type$) one$a)) (unat$
> ?v0))) :pattern ((msb$ ?v0)))) :named a5))
>        (assert (! (forall ((?v0 Nat$)) (= (power$a (numeral$a (bit0$
> one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))) :named
> a6))
>        (assert (! (forall ((?v0 L_word$) (?v1 L_word$) (?v2 L_word$))
> (=> (and (less_eq$a ?v0 ?v1) (less$a ?v1 ?v2)) (less$a ?v0 ?v2)))
> :named a7))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$)) (=> (and
> (less_eq$ ?v0 ?v1) (less$ ?v1 ?v2)) (less$ ?v0 ?v2))) :named a8))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (= (less_eq$ ?v0 ?v1)
> (not (less$ ?v1 ?v0)))) :named a9))
>        (assert (! (not (= (len_of$ type$) (suc$ zero$))) :named a10))
>        (assert (! (= (not (= (len_of$ type$) (suc$ zero$))) (exists
> ((?v0 Nat$)) (= (len_of$ type$) (suc$ (suc$ ?v0))))) :named a11))
>        (assert (! (forall ((?v0 Nat$)) (! (= (of_nat$a ?v0)
> (word_of_int$ (of_nat$ ?v0))) :pattern ((of_nat$a ?v0)))) :named a12))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$a
> (power$a (numeral$a (bit0$ one$)) (minus$ (len_of$ type$) (suc$
> zero$))) ?v0)) :pattern ((msb$ ?v0)))) :named a13))
>        (assert (! (= one$a (suc$ zero$)) :named a14))
>        (check-sat)
>        (get-proof)
>         
> SMT: Invoking SMT solver "z3" ... 
> SMT: Solver: 
> SMT: Result:
>        sat
>        (error "line 45 column 10: proof is not available") 
> SMT: Time (ms):
>        21 
> SMT: Assertions:
>        ¬ False  [¬ False]
>        n < 2 ^ (LENGTH('l) - Suc 0)
>        msb (word_of_int (int n))
>        ∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (y ≤ x) =
> (of_nat y ≤ of_nat x)
>        ∀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))
>        ∀n. 2 ^ n = of_nat (2 ^ n)
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀y x. (y ≤ x) = (¬ x < y)
>        LENGTH('l) ≠ Suc 0
>        (LENGTH('l) ≠ Suc 0) = (∃n. LENGTH('l) = Suc (Suc n))
>        ∀a x. a < 2 ^ (x - Suc 0) ⟶ a < 2 ^ x
>        ∀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. 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))
>        1 = Suc 0 
> SMT: Names:
>        sorts:
>          Nat$ = nat
>          Num$ = num
>          L_word$ = 'l word
>          L_itself$ = 'l itself
>        functions:
>          n$ = n
>          msb$ = msb
>          one$ = num.One
>          suc$ = Suc
>          bit0$ = num.Bit0
>          less$ = (<)
>          one$a = 1
>          type$ = TYPE('l)
>          unat$ = unat
>          zero$ = 0
>          less$a = (<)
>          minus$ = (-)
>          power$ = (^)
>          len_of$ = len_of
>          of_nat$ = int
>          power$a = (^)
>          less_eq$ = (≤)
>          numeral$ = numeral
>          of_nat$a = of_nat
>          less_eq$a = (≤)
>          numeral$a = numeral
>          word_of_int$ = word_of_int 
> SMT: Problem:
>        ; smt.random_seed=1 smt.refine_inj_axioms=false -T:1 -smt2
>        (set-option :produce-proofs true)
>        (declare-sort Nat$ 0)
>        (declare-sort Num$ 0)
>        (declare-sort L_word$ 0)
>        (declare-sort L_itself$ 0)
>        (declare-fun n$ () Nat$)
>        (declare-fun msb$ (L_word$) Bool)
>        (declare-fun one$ () Num$)
>        (declare-fun suc$ (Nat$) Nat$)
>        (declare-fun bit0$ (Num$) Num$)
>        (declare-fun less$ (Nat$ Nat$) Bool)
>        (declare-fun one$a () Nat$)
>        (declare-fun type$ () L_itself$)
>        (declare-fun unat$ (L_word$) Nat$)
>        (declare-fun zero$ () Nat$)
>        (declare-fun less$a (L_word$ L_word$) Bool)
>        (declare-fun minus$ (Nat$ Nat$) Nat$)
>        (declare-fun power$ (Nat$ Nat$) Nat$)
>        (declare-fun len_of$ (L_itself$) Nat$)
>        (declare-fun of_nat$ (Nat$) Int)
>        (declare-fun power$a (L_word$ Nat$) L_word$)
>        (declare-fun less_eq$ (Nat$ Nat$) Bool)
>        (declare-fun numeral$ (Num$) Nat$)
>        (declare-fun of_nat$a (Nat$) L_word$)
>        (declare-fun less_eq$a (L_word$ L_word$) Bool)
>        (declare-fun numeral$a (Num$) L_word$)
>        (declare-fun word_of_int$ (Int) L_word$)
>        (assert (! (not false) :named a0))
>        (assert (! (less$ n$ (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 Nat$) (?v1 Nat$)) (=> (and (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (len_of$ type$))) (less$ ?v1 (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) (= (less_eq$ ?v1 ?v0)
> (less_eq$a (of_nat$a ?v1) (of_nat$a ?v0))))) :named a3))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$
> (power$ (numeral$ (bit0$ one$)) (minus$ (len_of$ type$) one$a)) (unat$
> ?v0))) :pattern ((msb$ ?v0)))) :named a4))
>        (assert (! (forall ((?v0 Nat$)) (= (power$a (numeral$a (bit0$
> one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))) :named
> a5))
>        (assert (! (forall ((?v0 L_word$) (?v1 L_word$) (?v2 L_word$))
> (=> (and (less_eq$a ?v0 ?v1) (less$a ?v1 ?v2)) (less$a ?v0 ?v2)))
> :named a6))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$)) (=> (and
> (less_eq$ ?v0 ?v1) (less$ ?v1 ?v2)) (less$ ?v0 ?v2))) :named a7))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (= (less_eq$ ?v0 ?v1)
> (not (less$ ?v1 ?v0)))) :named a8))
>        (assert (! (not (= (len_of$ type$) (suc$ zero$))) :named a9))
>        (assert (! (= (not (= (len_of$ type$) (suc$ zero$))) (exists
> ((?v0 Nat$)) (= (len_of$ type$) (suc$ (suc$ ?v0))))) :named a10))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$ zero$)))) (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) ?v1)))) :named a11))
>        (assert (! (forall ((?v0 Nat$)) (! (= (of_nat$a ?v0)
> (word_of_int$ (of_nat$ ?v0))) :pattern ((of_nat$a ?v0)))) :named a12))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$a
> (power$a (numeral$a (bit0$ one$)) (minus$ (len_of$ type$) (suc$
> zero$))) ?v0)) :pattern ((msb$ ?v0)))) :named a13))
>        (assert (! (= one$a (suc$ zero$)) :named a14))
>        (check-sat)
>        (get-proof)
>         
> SMT: Invoking SMT solver "z3" ... 
> SMT: Solver: 
> SMT: Result:
>        sat
>        (error "line 45 column 10: proof is not available") 
> SMT: Time (ms):
>        21 
> SMT: Assertions:
>        ¬ False  [¬ False]
>        n < 2 ^ (LENGTH('l) - Suc 0)
>        msb (word_of_int (int 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))
>        ∀n. 2 ^ n = of_nat (2 ^ n)
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀y x. (y ≤ x) = (¬ x < y)
>        LENGTH('l) ≠ Suc 0
>        (LENGTH('l) ≠ Suc 0) = (∃n. LENGTH('l) = Suc (Suc n))
>        ∀x. unat x < 2 ^ LENGTH('l)
>        ∀a x. a < 2 ^ (x - Suc 0) ⟶ a < 2 ^ x
>        ∀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. 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))
>        1 = Suc 0 
> SMT: Names:
>        sorts:
>          Nat$ = nat
>          Num$ = num
>          L_word$ = 'l word
>          L_itself$ = 'l itself
>        functions:
>          n$ = n
>          msb$ = msb
>          one$ = num.One
>          suc$ = Suc
>          bit0$ = num.Bit0
>          less$ = (<)
>          one$a = 1
>          type$ = TYPE('l)
>          unat$ = unat
>          zero$ = 0
>          less$a = (<)
>          minus$ = (-)
>          power$ = (^)
>          len_of$ = len_of
>          of_nat$ = int
>          power$a = (^)
>          less_eq$ = (≤)
>          numeral$ = numeral
>          of_nat$a = of_nat
>          less_eq$a = (≤)
>          numeral$a = numeral
>          word_of_int$ = word_of_int 
> SMT: Problem:
>        ; smt.random_seed=1 smt.refine_inj_axioms=false -T:1 -smt2
>        (set-option :produce-proofs true)
>        (declare-sort Nat$ 0)
>        (declare-sort Num$ 0)
>        (declare-sort L_word$ 0)
>        (declare-sort L_itself$ 0)
>        (declare-fun n$ () Nat$)
>        (declare-fun msb$ (L_word$) Bool)
>        (declare-fun one$ () Num$)
>        (declare-fun suc$ (Nat$) Nat$)
>        (declare-fun bit0$ (Num$) Num$)
>        (declare-fun less$ (Nat$ Nat$) Bool)
>        (declare-fun one$a () Nat$)
>        (declare-fun type$ () L_itself$)
>        (declare-fun unat$ (L_word$) Nat$)
>        (declare-fun zero$ () Nat$)
>        (declare-fun less$a (L_word$ L_word$) Bool)
>        (declare-fun minus$ (Nat$ Nat$) Nat$)
>        (declare-fun power$ (Nat$ Nat$) Nat$)
>        (declare-fun len_of$ (L_itself$) Nat$)
>        (declare-fun of_nat$ (Nat$) Int)
>        (declare-fun power$a (L_word$ Nat$) L_word$)
>        (declare-fun less_eq$ (Nat$ Nat$) Bool)
>        (declare-fun numeral$ (Num$) Nat$)
>        (declare-fun of_nat$a (Nat$) L_word$)
>        (declare-fun less_eq$a (L_word$ L_word$) Bool)
>        (declare-fun numeral$a (Num$) L_word$)
>        (declare-fun word_of_int$ (Int) L_word$)
>        (assert (! (not false) :named a0))
>        (assert (! (less$ n$ (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 L_word$)) (! (= (msb$ ?v0) (less_eq$
> (power$ (numeral$ (bit0$ one$)) (minus$ (len_of$ type$) one$a)) (unat$
> ?v0))) :pattern ((msb$ ?v0)))) :named a3))
>        (assert (! (forall ((?v0 Nat$)) (= (power$a (numeral$a (bit0$
> one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))) :named
> a4))
>        (assert (! (forall ((?v0 L_word$) (?v1 L_word$) (?v2 L_word$))
> (=> (and (less_eq$a ?v0 ?v1) (less$a ?v1 ?v2)) (less$a ?v0 ?v2)))
> :named a5))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$)) (=> (and
> (less_eq$ ?v0 ?v1) (less$ ?v1 ?v2)) (less$ ?v0 ?v2))) :named a6))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (= (less_eq$ ?v0 ?v1)
> (not (less$ ?v1 ?v0)))) :named a7))
>        (assert (! (not (= (len_of$ type$) (suc$ zero$))) :named a8))
>        (assert (! (= (not (= (len_of$ type$) (suc$ zero$))) (exists
> ((?v0 Nat$)) (= (len_of$ type$) (suc$ (suc$ ?v0))))) :named a9))
>        (assert (! (forall ((?v0 L_word$)) (less$ (unat$ ?v0) (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) :named a10))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$ zero$)))) (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) ?v1)))) :named a11))
>        (assert (! (forall ((?v0 Nat$)) (! (= (of_nat$a ?v0)
> (word_of_int$ (of_nat$ ?v0))) :pattern ((of_nat$a ?v0)))) :named a12))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$a
> (power$a (numeral$a (bit0$ one$)) (minus$ (len_of$ type$) (suc$
> zero$))) ?v0)) :pattern ((msb$ ?v0)))) :named a13))
>        (assert (! (= one$a (suc$ zero$)) :named a14))
>        (check-sat)
>        (get-proof)
>         
> SMT: Invoking SMT solver "z3" ... 
> SMT: Solver: 
> SMT: Result:
>        sat
>        (error "line 45 column 10: proof is not available") 
> SMT: Time (ms):
>        11 
> SMT: Assertions:
>        ¬ False  [¬ False]
>        n < 2 ^ (LENGTH('l) - Suc 0)
>        msb (word_of_int (int n))
>        ∀n. 2 ^ n = of_nat (2 ^ n)
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀y x. (y ≤ x) = (¬ x < y)
>        LENGTH('l) ≠ Suc 0
>        (LENGTH('l) ≠ Suc 0) = (∃n. LENGTH('l) = Suc (Suc n))
>        ∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (y ≤ x) =
> (of_nat y ≤ of_nat x)
>        ∀x. unat x < 2 ^ LENGTH('l)
>        ∀a x. a < 2 ^ (x - Suc 0) ⟶ a < 2 ^ x
>        ∀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. 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))
>        1 = Suc 0 
> SMT: Names:
>        sorts:
>          Nat$ = nat
>          Num$ = num
>          L_word$ = 'l word
>          L_itself$ = 'l itself
>        functions:
>          n$ = n
>          msb$ = msb
>          one$ = num.One
>          suc$ = Suc
>          bit0$ = num.Bit0
>          less$ = (<)
>          one$a = 1
>          type$ = TYPE('l)
>          unat$ = unat
>          zero$ = 0
>          less$a = (<)
>          minus$ = (-)
>          power$ = (^)
>          len_of$ = len_of
>          of_nat$ = int
>          power$a = (^)
>          less_eq$ = (≤)
>          numeral$ = numeral
>          of_nat$a = of_nat
>          less_eq$a = (≤)
>          numeral$a = numeral
>          word_of_int$ = word_of_int 
> SMT: Problem:
>        ; smt.random_seed=1 smt.refine_inj_axioms=false -T:1 -smt2
>        (set-option :produce-proofs true)
>        (declare-sort Nat$ 0)
>        (declare-sort Num$ 0)
>        (declare-sort L_word$ 0)
>        (declare-sort L_itself$ 0)
>        (declare-fun n$ () Nat$)
>        (declare-fun msb$ (L_word$) Bool)
>        (declare-fun one$ () Num$)
>        (declare-fun suc$ (Nat$) Nat$)
>        (declare-fun bit0$ (Num$) Num$)
>        (declare-fun less$ (Nat$ Nat$) Bool)
>        (declare-fun one$a () Nat$)
>        (declare-fun type$ () L_itself$)
>        (declare-fun unat$ (L_word$) Nat$)
>        (declare-fun zero$ () Nat$)
>        (declare-fun less$a (L_word$ L_word$) Bool)
>        (declare-fun minus$ (Nat$ Nat$) Nat$)
>        (declare-fun power$ (Nat$ Nat$) Nat$)
>        (declare-fun len_of$ (L_itself$) Nat$)
>        (declare-fun of_nat$ (Nat$) Int)
>        (declare-fun power$a (L_word$ Nat$) L_word$)
>        (declare-fun less_eq$ (L_word$ L_word$) Bool)
>        (declare-fun numeral$ (Num$) Nat$)
>        (declare-fun of_nat$a (Nat$) L_word$)
>        (declare-fun less_eq$a (Nat$ Nat$) Bool)
>        (declare-fun numeral$a (Num$) L_word$)
>        (declare-fun word_of_int$ (Int) L_word$)
>        (assert (! (not false) :named a0))
>        (assert (! (less$ n$ (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 Nat$)) (= (power$a (numeral$a (bit0$
> one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))) :named
> a3))
>        (assert (! (forall ((?v0 L_word$) (?v1 L_word$) (?v2 L_word$))
> (=> (and (less_eq$ ?v0 ?v1) (less$a ?v1 ?v2)) (less$a ?v0 ?v2))) :named
> a4))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$)) (=> (and
> (less_eq$a ?v0 ?v1) (less$ ?v1 ?v2)) (less$ ?v0 ?v2))) :named a5))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (= (less_eq$a ?v0
> ?v1) (not (less$ ?v1 ?v0)))) :named a6))
>        (assert (! (not (= (len_of$ type$) (suc$ zero$))) :named a7))
>        (assert (! (= (not (= (len_of$ type$) (suc$ zero$))) (exists
> ((?v0 Nat$)) (= (len_of$ type$) (suc$ (suc$ ?v0))))) :named a8))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (and (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (len_of$ type$))) (less$ ?v1 (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) (= (less_eq$a ?v1 ?v0)
> (less_eq$ (of_nat$a ?v1) (of_nat$a ?v0))))) :named a9))
>        (assert (! (forall ((?v0 L_word$)) (less$ (unat$ ?v0) (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) :named a10))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$ zero$)))) (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) ?v1)))) :named a11))
>        (assert (! (forall ((?v0 Nat$)) (! (= (of_nat$a ?v0)
> (word_of_int$ (of_nat$ ?v0))) :pattern ((of_nat$a ?v0)))) :named a12))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$
> (power$a (numeral$a (bit0$ one$)) (minus$ (len_of$ type$) (suc$
> zero$))) ?v0)) :pattern ((msb$ ?v0)))) :named a13))
>        (assert (! (= one$a (suc$ zero$)) :named a14))
>        (check-sat)
>        (get-proof)
>         
> SMT: Invoking SMT solver "z3" ... 
> SMT: Solver: 
> SMT: Result:
>        sat
>        (error "line 45 column 10: proof is not available") 
> SMT: Time (ms):
>        21 
> SMT: Assertions:
>        ¬ False  [¬ False]
>        n < 2 ^ (LENGTH('l) - Suc 0)
>        msb (word_of_int (int n))
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀y x. (y ≤ x) = (¬ x < y)
>        LENGTH('l) ≠ Suc 0
>        (LENGTH('l) ≠ Suc 0) = (∃n. LENGTH('l) = Suc (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))
>        ∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (y ≤ x) =
> (of_nat y ≤ of_nat x)
>        ∀x. unat x < 2 ^ LENGTH('l)
>        ∀a x. a < 2 ^ (x - Suc 0) ⟶ a < 2 ^ x
>        ∀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. 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))
>        1 = Suc 0 
> SMT: Names:
>        sorts:
>          Nat$ = nat
>          Num$ = num
>          L_word$ = 'l word
>          L_itself$ = 'l itself
>        functions:
>          n$ = n
>          msb$ = msb
>          one$ = num.One
>          suc$ = Suc
>          bit0$ = num.Bit0
>          less$ = (<)
>          one$a = 1
>          type$ = TYPE('l)
>          unat$ = unat
>          zero$ = 0
>          less$a = (<)
>          minus$ = (-)
>          power$ = (^)
>          len_of$ = len_of
>          of_nat$ = int
>          power$a = (^)
>          less_eq$ = (≤)
>          numeral$ = numeral
>          of_nat$a = of_nat
>          less_eq$a = (≤)
>          numeral$a = numeral
>          word_of_int$ = word_of_int 
> SMT: Problem:
>        ; smt.random_seed=1 smt.refine_inj_axioms=false -T:1 -smt2
>        (set-option :produce-proofs true)
>        (declare-sort Nat$ 0)
>        (declare-sort Num$ 0)
>        (declare-sort L_word$ 0)
>        (declare-sort L_itself$ 0)
>        (declare-fun n$ () Nat$)
>        (declare-fun msb$ (L_word$) Bool)
>        (declare-fun one$ () Num$)
>        (declare-fun suc$ (Nat$) Nat$)
>        (declare-fun bit0$ (Num$) Num$)
>        (declare-fun less$ (Nat$ Nat$) Bool)
>        (declare-fun one$a () Nat$)
>        (declare-fun type$ () L_itself$)
>        (declare-fun unat$ (L_word$) Nat$)
>        (declare-fun zero$ () Nat$)
>        (declare-fun less$a (L_word$ L_word$) Bool)
>        (declare-fun minus$ (Nat$ Nat$) Nat$)
>        (declare-fun power$ (Nat$ Nat$) Nat$)
>        (declare-fun len_of$ (L_itself$) Nat$)
>        (declare-fun of_nat$ (Nat$) Int)
>        (declare-fun power$a (L_word$ Nat$) L_word$)
>        (declare-fun less_eq$ (L_word$ L_word$) Bool)
>        (declare-fun numeral$ (Num$) Nat$)
>        (declare-fun of_nat$a (Nat$) L_word$)
>        (declare-fun less_eq$a (Nat$ Nat$) Bool)
>        (declare-fun numeral$a (Num$) L_word$)
>        (declare-fun word_of_int$ (Int) L_word$)
>        (assert (! (not false) :named a0))
>        (assert (! (less$ n$ (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 L_word$) (?v1 L_word$) (?v2 L_word$))
> (=> (and (less_eq$ ?v0 ?v1) (less$a ?v1 ?v2)) (less$a ?v0 ?v2))) :named
> a3))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$)) (=> (and
> (less_eq$a ?v0 ?v1) (less$ ?v1 ?v2)) (less$ ?v0 ?v2))) :named a4))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (= (less_eq$a ?v0
> ?v1) (not (less$ ?v1 ?v0)))) :named a5))
>        (assert (! (not (= (len_of$ type$) (suc$ zero$))) :named a6))
>        (assert (! (= (not (= (len_of$ type$) (suc$ zero$))) (exists
> ((?v0 Nat$)) (= (len_of$ type$) (suc$ (suc$ ?v0))))) :named a7))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$a
> (power$ (numeral$ (bit0$ one$)) (minus$ (len_of$ type$) one$a)) (unat$
> ?v0))) :pattern ((msb$ ?v0)))) :named a8))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (and (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (len_of$ type$))) (less$ ?v1 (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) (= (less_eq$a ?v1 ?v0)
> (less_eq$ (of_nat$a ?v1) (of_nat$a ?v0))))) :named a9))
>        (assert (! (forall ((?v0 L_word$)) (less$ (unat$ ?v0) (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) :named a10))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$ zero$)))) (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) ?v1)))) :named a11))
>        (assert (! (forall ((?v0 Nat$)) (! (= (of_nat$a ?v0)
> (word_of_int$ (of_nat$ ?v0))) :pattern ((of_nat$a ?v0)))) :named a12))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$
> (power$a (numeral$a (bit0$ one$)) (minus$ (len_of$ type$) (suc$
> zero$))) ?v0)) :pattern ((msb$ ?v0)))) :named a13))
>        (assert (! (= one$a (suc$ zero$)) :named a14))
>        (check-sat)
>        (get-proof)
>         
> SMT: Invoking SMT solver "z3" ... 
> SMT: Solver: 
> SMT: Result:
>        sat
>        (error "line 45 column 10: proof is not available") 
> SMT: Time (ms):
>        31 
> SMT: Assertions:
>        ¬ False  [¬ False]
>        n < 2 ^ (LENGTH('l) - Suc 0)
>        msb (word_of_int (int n))
>        ∀y x. (y ≤ x) = (¬ x < y)
>        LENGTH('l) ≠ Suc 0
>        (LENGTH('l) ≠ Suc 0) = (∃n. LENGTH('l) = Suc (Suc n))
>        ∀n. 2 ^ n = of_nat (2 ^ 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))
>        ∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (y ≤ x) =
> (of_nat y ≤ of_nat x)
>        ∀x. unat x < 2 ^ LENGTH('l)
>        ∀a x. a < 2 ^ (x - Suc 0) ⟶ a < 2 ^ x
>        ∀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. 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))
>        1 = Suc 0 
> SMT: Names:
>        sorts:
>          Nat$ = nat
>          Num$ = num
>          L_word$ = 'l word
>          L_itself$ = 'l itself
>        functions:
>          n$ = n
>          msb$ = msb
>          one$ = num.One
>          suc$ = Suc
>          bit0$ = num.Bit0
>          less$ = (<)
>          one$a = 1
>          type$ = TYPE('l)
>          unat$ = unat
>          zero$ = 0
>          minus$ = (-)
>          power$ = (^)
>          len_of$ = len_of
>          of_nat$ = int
>          power$a = (^)
>          less_eq$ = (≤)
>          numeral$ = numeral
>          of_nat$a = of_nat
>          less_eq$a = (≤)
>          numeral$a = numeral
>          word_of_int$ = word_of_int 
> SMT: Problem:
>        ; smt.random_seed=1 smt.refine_inj_axioms=false -T:1 -smt2
>        (set-option :produce-proofs true)
>        (declare-sort Nat$ 0)
>        (declare-sort Num$ 0)
>        (declare-sort L_word$ 0)
>        (declare-sort L_itself$ 0)
>        (declare-fun n$ () Nat$)
>        (declare-fun msb$ (L_word$) Bool)
>        (declare-fun one$ () Num$)
>        (declare-fun suc$ (Nat$) Nat$)
>        (declare-fun bit0$ (Num$) Num$)
>        (declare-fun less$ (Nat$ Nat$) Bool)
>        (declare-fun one$a () Nat$)
>        (declare-fun type$ () L_itself$)
>        (declare-fun unat$ (L_word$) Nat$)
>        (declare-fun zero$ () Nat$)
>        (declare-fun minus$ (Nat$ Nat$) Nat$)
>        (declare-fun power$ (Nat$ Nat$) Nat$)
>        (declare-fun len_of$ (L_itself$) Nat$)
>        (declare-fun of_nat$ (Nat$) Int)
>        (declare-fun power$a (L_word$ Nat$) L_word$)
>        (declare-fun less_eq$ (Nat$ Nat$) Bool)
>        (declare-fun numeral$ (Num$) Nat$)
>        (declare-fun of_nat$a (Nat$) L_word$)
>        (declare-fun less_eq$a (L_word$ L_word$) Bool)
>        (declare-fun numeral$a (Num$) L_word$)
>        (declare-fun word_of_int$ (Int) L_word$)
>        (assert (! (not false) :named a0))
>        (assert (! (less$ n$ (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 Nat$) (?v1 Nat$)) (= (less_eq$ ?v0 ?v1)
> (not (less$ ?v1 ?v0)))) :named a3))
>        (assert (! (not (= (len_of$ type$) (suc$ zero$))) :named a4))
>        (assert (! (= (not (= (len_of$ type$) (suc$ zero$))) (exists
> ((?v0 Nat$)) (= (len_of$ type$) (suc$ (suc$ ?v0))))) :named a5))
>        (assert (! (forall ((?v0 Nat$)) (= (power$a (numeral$a (bit0$
> one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))) :named
> a6))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$
> (power$ (numeral$ (bit0$ one$)) (minus$ (len_of$ type$) one$a)) (unat$
> ?v0))) :pattern ((msb$ ?v0)))) :named a7))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (and (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (len_of$ type$))) (less$ ?v1 (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) (= (less_eq$ ?v1 ?v0)
> (less_eq$a (of_nat$a ?v1) (of_nat$a ?v0))))) :named a8))
>        (assert (! (forall ((?v0 L_word$)) (less$ (unat$ ?v0) (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) :named a9))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$ zero$)))) (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) ?v1)))) :named a10))
>        (assert (! (forall ((?v0 Nat$)) (! (= (of_nat$a ?v0)
> (word_of_int$ (of_nat$ ?v0))) :pattern ((of_nat$a ?v0)))) :named a11))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$a
> (power$a (numeral$a (bit0$ one$)) (minus$ (len_of$ type$) (suc$
> zero$))) ?v0)) :pattern ((msb$ ?v0)))) :named a12))
>        (assert (! (= one$a (suc$ zero$)) :named a13))
>        (check-sat)
>        (get-proof)
>         
> SMT: Invoking SMT solver "z3" ... 
> SMT: Solver: 
> SMT: Result:
>        sat
>        (error "line 43 column 10: proof is not available") 
> SMT: Time (ms):
>        32 
> SMT: Assertions:
>        ¬ False  [¬ False]
>        n < 2 ^ (LENGTH('l) - Suc 0)
>        msb (word_of_int (int n))
>        LENGTH('l) ≠ Suc 0
>        (LENGTH('l) ≠ Suc 0) = (∃n. LENGTH('l) = Suc (Suc n))
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀n. 2 ^ n = of_nat (2 ^ 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))
>        ∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (y ≤ x) =
> (of_nat y ≤ of_nat x)
>        ∀x. unat x < 2 ^ LENGTH('l)
>        ∀a x. a < 2 ^ (x - Suc 0) ⟶ a < 2 ^ x
>        ∀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. 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))
>        1 = Suc 0 
> SMT: Names:
>        sorts:
>          Nat$ = nat
>          Num$ = num
>          L_word$ = 'l word
>          L_itself$ = 'l itself
>        functions:
>          n$ = n
>          msb$ = msb
>          one$ = num.One
>          suc$ = Suc
>          bit0$ = num.Bit0
>          less$ = (<)
>          one$a = 1
>          type$ = TYPE('l)
>          unat$ = unat
>          zero$ = 0
>          less$a = (<)
>          minus$ = (-)
>          power$ = (^)
>          len_of$ = len_of
>          of_nat$ = int
>          power$a = (^)
>          less_eq$ = (≤)
>          numeral$ = numeral
>          of_nat$a = of_nat
>          less_eq$a = (≤)
>          numeral$a = numeral
>          word_of_int$ = word_of_int 
> SMT: Problem:
>        ; smt.random_seed=1 smt.refine_inj_axioms=false -T:1 -smt2
>        (set-option :produce-proofs true)
>        (declare-sort Nat$ 0)
>        (declare-sort Num$ 0)
>        (declare-sort L_word$ 0)
>        (declare-sort L_itself$ 0)
>        (declare-fun n$ () Nat$)
>        (declare-fun msb$ (L_word$) Bool)
>        (declare-fun one$ () Num$)
>        (declare-fun suc$ (Nat$) Nat$)
>        (declare-fun bit0$ (Num$) Num$)
>        (declare-fun less$ (Nat$ Nat$) Bool)
>        (declare-fun one$a () Nat$)
>        (declare-fun type$ () L_itself$)
>        (declare-fun unat$ (L_word$) Nat$)
>        (declare-fun zero$ () Nat$)
>        (declare-fun less$a (L_word$ L_word$) Bool)
>        (declare-fun minus$ (Nat$ Nat$) Nat$)
>        (declare-fun power$ (Nat$ Nat$) Nat$)
>        (declare-fun len_of$ (L_itself$) Nat$)
>        (declare-fun of_nat$ (Nat$) Int)
>        (declare-fun power$a (L_word$ Nat$) L_word$)
>        (declare-fun less_eq$ (L_word$ L_word$) Bool)
>        (declare-fun numeral$ (Num$) Nat$)
>        (declare-fun of_nat$a (Nat$) L_word$)
>        (declare-fun less_eq$a (Nat$ Nat$) Bool)
>        (declare-fun numeral$a (Num$) L_word$)
>        (declare-fun word_of_int$ (Int) L_word$)
>        (assert (! (not false) :named a0))
>        (assert (! (less$ n$ (power$ (numeral$ (bit0$ one$)) (minus$
> (len_of$ type$) (suc$ zero$)))) :named a1))
>        (assert (! (msb$ (word_of_int$ (of_nat$ n$))) :named a2))
>        (assert (! (not (= (len_of$ type$) (suc$ zero$))) :named a3))
>        (assert (! (= (not (= (len_of$ type$) (suc$ zero$))) (exists
> ((?v0 Nat$)) (= (len_of$ type$) (suc$ (suc$ ?v0))))) :named a4))
>        (assert (! (forall ((?v0 L_word$) (?v1 L_word$) (?v2 L_word$))
> (=> (and (less_eq$ ?v0 ?v1) (less$a ?v1 ?v2)) (less$a ?v0 ?v2))) :named
> a5))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$)) (=> (and
> (less_eq$a ?v0 ?v1) (less$ ?v1 ?v2)) (less$ ?v0 ?v2))) :named a6))
>        (assert (! (forall ((?v0 Nat$)) (= (power$a (numeral$a (bit0$
> one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))) :named
> a7))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$a
> (power$ (numeral$ (bit0$ one$)) (minus$ (len_of$ type$) one$a)) (unat$
> ?v0))) :pattern ((msb$ ?v0)))) :named a8))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (and (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (len_of$ type$))) (less$ ?v1 (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) (= (less_eq$a ?v1 ?v0)
> (less_eq$ (of_nat$a ?v1) (of_nat$a ?v0))))) :named a9))
>        (assert (! (forall ((?v0 L_word$)) (less$ (unat$ ?v0) (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) :named a10))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$ zero$)))) (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) ?v1)))) :named a11))
>        (assert (! (forall ((?v0 Nat$)) (! (= (of_nat$a ?v0)
> (word_of_int$ (of_nat$ ?v0))) :pattern ((of_nat$a ?v0)))) :named a12))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$
> (power$a (numeral$a (bit0$ one$)) (minus$ (len_of$ type$) (suc$
> zero$))) ?v0)) :pattern ((msb$ ?v0)))) :named a13))
>        (assert (! (= one$a (suc$ zero$)) :named a14))
>        (check-sat)
>        (get-proof)
>         
> SMT: Invoking SMT solver "z3" ... 
> SMT: Solver: 
> SMT: Result:
>        sat
>        (error "line 45 column 10: proof is not available") 
> SMT: Time (ms):
>        21 
> SMT: Assertions:
>        ¬ False  [¬ False]
>        n < 2 ^ (LENGTH('l) - Suc 0)
>        msb (word_of_int (int n))
>        (LENGTH('l) ≠ Suc 0) = (∃n. LENGTH('l) = Suc (Suc n))
>        ∀y x. (y ≤ x) = (¬ x < y)
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀n. 2 ^ n = of_nat (2 ^ 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))
>        ∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (y ≤ x) =
> (of_nat y ≤ of_nat x)
>        ∀x. unat x < 2 ^ LENGTH('l)
>        ∀a x. a < 2 ^ (x - Suc 0) ⟶ a < 2 ^ x
>        ∀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. 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))
>        1 = Suc 0 
> SMT: Names:
>        sorts:
>          Nat$ = nat
>          Num$ = num
>          L_word$ = 'l word
>          L_itself$ = 'l itself
>        functions:
>          n$ = n
>          msb$ = msb
>          one$ = num.One
>          suc$ = Suc
>          bit0$ = num.Bit0
>          less$ = (<)
>          one$a = 1
>          type$ = TYPE('l)
>          unat$ = unat
>          zero$ = 0
>          less$a = (<)
>          minus$ = (-)
>          power$ = (^)
>          len_of$ = len_of
>          of_nat$ = int
>          power$a = (^)
>          less_eq$ = (≤)
>          numeral$ = numeral
>          of_nat$a = of_nat
>          less_eq$a = (≤)
>          numeral$a = numeral
>          word_of_int$ = word_of_int 
> SMT: Problem:
>        ; smt.random_seed=1 smt.refine_inj_axioms=false -T:1 -smt2
>        (set-option :produce-proofs true)
>        (declare-sort Nat$ 0)
>        (declare-sort Num$ 0)
>        (declare-sort L_word$ 0)
>        (declare-sort L_itself$ 0)
>        (declare-fun n$ () Nat$)
>        (declare-fun msb$ (L_word$) Bool)
>        (declare-fun one$ () Num$)
>        (declare-fun suc$ (Nat$) Nat$)
>        (declare-fun bit0$ (Num$) Num$)
>        (declare-fun less$ (Nat$ Nat$) Bool)
>        (declare-fun one$a () Nat$)
>        (declare-fun type$ () L_itself$)
>        (declare-fun unat$ (L_word$) Nat$)
>        (declare-fun zero$ () Nat$)
>        (declare-fun less$a (L_word$ L_word$) Bool)
>        (declare-fun minus$ (Nat$ Nat$) Nat$)
>        (declare-fun power$ (Nat$ Nat$) Nat$)
>        (declare-fun len_of$ (L_itself$) Nat$)
>        (declare-fun of_nat$ (Nat$) Int)
>        (declare-fun power$a (L_word$ Nat$) L_word$)
>        (declare-fun less_eq$ (Nat$ Nat$) Bool)
>        (declare-fun numeral$ (Num$) Nat$)
>        (declare-fun of_nat$a (Nat$) L_word$)
>        (declare-fun less_eq$a (L_word$ L_word$) Bool)
>        (declare-fun numeral$a (Num$) L_word$)
>        (declare-fun word_of_int$ (Int) L_word$)
>        (assert (! (not false) :named a0))
>        (assert (! (less$ n$ (power$ (numeral$ (bit0$ one$)) (minus$
> (len_of$ type$) (suc$ zero$)))) :named a1))
>        (assert (! (msb$ (word_of_int$ (of_nat$ n$))) :named a2))
>        (assert (! (= (not (= (len_of$ type$) (suc$ zero$))) (exists
> ((?v0 Nat$)) (= (len_of$ type$) (suc$ (suc$ ?v0))))) :named a3))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (= (less_eq$ ?v0 ?v1)
> (not (less$ ?v1 ?v0)))) :named a4))
>        (assert (! (forall ((?v0 L_word$) (?v1 L_word$) (?v2 L_word$))
> (=> (and (less_eq$a ?v0 ?v1) (less$a ?v1 ?v2)) (less$a ?v0 ?v2)))
> :named a5))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$)) (=> (and
> (less_eq$ ?v0 ?v1) (less$ ?v1 ?v2)) (less$ ?v0 ?v2))) :named a6))
>        (assert (! (forall ((?v0 Nat$)) (= (power$a (numeral$a (bit0$
> one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))) :named
> a7))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$
> (power$ (numeral$ (bit0$ one$)) (minus$ (len_of$ type$) one$a)) (unat$
> ?v0))) :pattern ((msb$ ?v0)))) :named a8))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (and (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (len_of$ type$))) (less$ ?v1 (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) (= (less_eq$ ?v1 ?v0)
> (less_eq$a (of_nat$a ?v1) (of_nat$a ?v0))))) :named a9))
>        (assert (! (forall ((?v0 L_word$)) (less$ (unat$ ?v0) (power$
> (numeral$ (bit0$ one$)) (len_of$ type$)))) :named a10))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$ zero$)))) (less$ ?v0
> (power$ (numeral$ (bit0$ one$)) ?v1)))) :named a11))
>        (assert (! (forall ((?v0 Nat$)) (! (= (of_nat$a ?v0)
> (word_of_int$ (of_nat$ ?v0))) :pattern ((of_nat$a ?v0)))) :named a12))
>        (assert (! (forall ((?v0 L_word$)) (! (= (msb$ ?v0) (less_eq$a
> (power$a (numeral$a (bit0$ one$)) (minus$ (len_of$ type$) (suc$
> zero$))) ?v0)) :pattern ((msb$ ?v0)))) :named a13))
>        (assert (! (= one$a (suc$ zero$)) :named a14))
>        (check-sat)
>        (get-proof)
>         
> SMT: Invoking SMT solver "z3" ... 
> SMT: Solver: 
> SMT: Result:
>        unsat
>        ((set-logic <null>)
>        (proof
>        (let ((?x487 (of_nat$a n$)))
>        (let ((?x37 (suc$ zero$)))
>        (let ((?x35 (len_of$ type$)))
>        (let ((?x38 (minus$ ?x35 ?x37)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x32 (numeral$ ?x31)))
>        (let ((?x39 (power$ ?x32 ?x38)))
>        (let ((?x440 (of_nat$a ?x39)))
>        (let (($x488 (less_eq$a ?x440 ?x487)))
>        (let ((?x42 (of_nat$ n$)))
>        (let ((?x43 (word_of_int$ ?x42)))
>        (let ((?x106 (numeral$a ?x31)))
>        (let ((?x183 (power$a ?x106 ?x38)))
>        (let (($x455 (less_eq$a ?x183 ?x43)))
>        (let (($x651 (= ?x487 ?x43)))
>        (let (($x181 (forall ((?v0 Nat$) )(! (let ((?x177 (word_of_int$
> (of_nat$ ?v0))))
>        (let ((?x136 (of_nat$a ?v0)))
>        (= ?x136 ?x177))) :pattern ( (of_nat$a ?v0) ) :qid k!41))
>        ))
>        (let ((?x177 (word_of_int$ (of_nat$ ?0))))
>        (let ((?x136 (of_nat$a ?0)))
>        (let (($x179 (= ?x136 ?x177)))
>        (let ((@x274 (mp~ (asserted $x181) (nnf-pos (refl (~ $x179
> $x179)) (~ $x181 $x181)) $x181)))
>        (let (($x570 (not $x181)))
>        (let (($x666 (or $x570 $x651)))
>        (let ((@x667 ((_ quant-inst n$) $x666)))
>        (let (($x441 (= ?x183 ?x440)))
>        (let (($x389 (forall ((?v0 Nat$) )(! (= (power$a (numeral$a
> (bit0$ one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))
> :pattern ( (power$a (numeral$a (bit0$ one$)) ?v0) ) :pattern ( (power$
> (numeral$ (bit0$ one$)) ?v0) ) :qid k!36))
>        ))
>        (let (($x112 (forall ((?v0 Nat$) )(! (= (power$a (numeral$a
> (bit0$ one$)) ?v0) (of_nat$a (power$ (numeral$ (bit0$ one$)) ?v0)))
> :qid k!36))
>        ))
>        (let (($x111 (= (power$a ?x106 ?0) (of_nat$a (power$ ?x32
> ?0)))))
>        (let ((@x249 (mp~ (asserted $x112) (nnf-pos (refl (~ $x111
> $x111)) (~ $x112 $x112)) $x112)))
>        (let ((@x394 (mp @x249 (quant-intro (refl (= $x111 $x111)) (=
> $x112 $x389)) $x389)))
>        (let (($x452 (or (not $x389) $x441)))
>        (let ((@x453 ((_ quant-inst (minus$ ?x35 ?x37)) $x452)))
>        (let ((@x708 (monotonicity (symm (unit-resolution @x453 @x394
> $x441) (= ?x440 ?x183)) (unit-resolution @x667 @x274 $x651) (= $x488
> $x455))))
>        (let (($x44 (msb$ ?x43)))
>        (let (($x456 (= $x44 $x455)))
>        (let (($x191 (forall ((?v0 L_word$) )(! (let ((?x37 (suc$
> zero$)))
>        (let ((?x35 (len_of$ type$)))
>        (let ((?x38 (minus$ ?x35 ?x37)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x106 (numeral$a ?x31)))
>        (let ((?x183 (power$a ?x106 ?x38)))
>        (let (($x184 (less_eq$a ?x183 ?v0)))
>        (let (($x114 (msb$ ?v0)))
>        (= $x114 $x184))))))))) :pattern ( (msb$ ?v0) ) :qid k!42))
>        ))
>        (let (($x184 (less_eq$a ?x183 ?0)))
>        (let (($x114 (msb$ ?0)))
>        (let (($x188 (= $x114 $x184)))
>        (let (($x186 (forall ((?v0 L_word$) )(! (let ((?x37 (suc$
> zero$)))
>        (let ((?x35 (len_of$ type$)))
>        (let ((?x38 (minus$ ?x35 ?x37)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x106 (numeral$a ?x31)))
>        (let ((?x183 (power$a ?x106 ?x38)))
>        (let (($x184 (less_eq$a ?x183 ?v0)))
>        (let (($x114 (msb$ ?v0)))
>        (= $x114 $x184))))))))) :pattern ( (msb$ ?v0) ) :qid k!42))
>        ))
>        (let ((@x196 (mp (asserted $x186) (quant-intro (rewrite (= (=
> $x114 $x184) $x188)) (= $x186 $x191)) $x191)))
>        (let ((@x279 (mp~ @x196 (nnf-pos (refl (~ $x188 $x188)) (~ $x191
> $x191)) $x191)))
>        (let (($x474 (or (not $x191) $x456)))
>        (let ((@x475 ((_ quant-inst (word_of_int$ ?x42)) $x474)))
>        (let ((@x45 (asserted $x44)))
>        (let ((@x701 (unit-resolution (def-axiom (or (not $x456) (not
> $x44) $x455)) @x45 (or (not $x456) $x455))))
>        (let ((@x711 (mp (unit-resolution @x701 (unit-resolution @x475
> @x279 $x456) $x455) (symm @x708 (= $x455 $x488)) $x488)))
>        (let (($x501 (not $x488)))
>        (let (($x417 (less_eq$ ?x39 n$)))
>        (let (($x489 (= $x417 $x488)))
>        (let ((?x130 (power$ ?x32 ?x35)))
>        (let (($x472 (less$ ?x39 ?x130)))
>        (let ((?x449 (unat$ ?x43)))
>        (let (($x510 (less_eq$ ?x39 ?x449)))
>        (let (($x194 (= one$a ?x37)))
>        (let ((@x195 (asserted $x194)))
>        (let ((@x678 (monotonicity (monotonicity @x195 (= (minus$ ?x35
> one$a) ?x38)) (= (power$ ?x32 (minus$ ?x35 one$a)) ?x39))))
>        (let ((@x682 (monotonicity (symm @x678 (= ?x39 (power$ ?x32
> (minus$ ?x35 one$a)))) (= $x510 (less_eq$ (power$ ?x32 (minus$ ?x35
> one$a)) ?x449)))))
>        (let ((@x684 (symm @x682 (= (less_eq$ (power$ ?x32 (minus$ ?x35
> one$a)) ?x449) $x510))))
>        (let ((?x116 (minus$ ?x35 one$a)))
>        (let ((?x117 (power$ ?x32 ?x116)))
>        (let (($x450 (less_eq$ ?x117 ?x449)))
>        (let (($x454 (= $x44 $x450)))
>        (let (($x127 (forall ((?v0 L_word$) )(! (let ((?x118 (unat$
> ?v0)))
>        (let ((?x35 (len_of$ type$)))
>        (let ((?x116 (minus$ ?x35 one$a)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x32 (numeral$ ?x31)))
>        (let ((?x117 (power$ ?x32 ?x116)))
>        (let (($x119 (less_eq$ ?x117 ?x118)))
>        (let (($x114 (msb$ ?v0)))
>        (= $x114 $x119))))))))) :pattern ( (msb$ ?v0) ) :qid k!37))
>        ))
>        (let ((?x118 (unat$ ?0)))
>        (let (($x119 (less_eq$ ?x117 ?x118)))
>        (let (($x124 (= $x114 $x119)))
>        (let (($x122 (forall ((?v0 L_word$) )(! (let ((?x118 (unat$
> ?v0)))
>        (let ((?x35 (len_of$ type$)))
>        (let ((?x116 (minus$ ?x35 one$a)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x32 (numeral$ ?x31)))
>        (let ((?x117 (power$ ?x32 ?x116)))
>        (let (($x119 (less_eq$ ?x117 ?x118)))
>        (let (($x114 (msb$ ?v0)))
>        (= $x114 $x119))))))))) :pattern ( (msb$ ?v0) ) :qid k!37))
>        ))
>        (let ((@x132 (mp (asserted $x122) (quant-intro (rewrite (= (=
> $x114 $x119) $x124)) (= $x122 $x127)) $x127)))
>        (let ((@x254 (mp~ @x132 (nnf-pos (refl (~ $x124 $x124)) (~ $x127
> $x127)) $x127)))
>        (let (($x458 (or (not $x127) $x454)))
>        (let ((@x459 ((_ quant-inst (word_of_int$ ?x42)) $x458)))
>        (let ((@x673 (unit-resolution (def-axiom (or (not $x454) (not
> $x44) $x450)) @x45 (or (not $x454) $x450))))
>        (let ((@x685 (mp (unit-resolution @x673 (unit-resolution @x459
> @x254 $x454) $x450) @x684 $x510)))
>        (let (($x491 (less$ ?x449 ?x130)))
>        (let (($x404 (forall ((?v0 L_word$) )(! (let ((?x35 (len_of$
> type$)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x32 (numeral$ ?x31)))
>        (let ((?x130 (power$ ?x32 ?x35)))
>        (let ((?x118 (unat$ ?v0)))
>        (less$ ?x118 ?x130)))))) :pattern ( (unat$ ?v0) ) :qid k!39))
>        ))
>        (let (($x159 (forall ((?v0 L_word$) )(! (let ((?x35 (len_of$
> type$)))
>        (let ((?x31 (bit0$ one$)))
>        (let ((?x32 (numeral$ ?x31)))
>        (let ((?x130 (power$ ?x32 ?x35)))
>        (let ((?x118 (unat$ ?v0)))
>        (less$ ?x118 ?x130)))))) :qid k!39))
>        ))
>        (let ((@x408 (quant-intro (refl (= (less$ ?x118 ?x130) (less$
> ?x118 ?x130))) (= $x159 $x404))))
>        (let ((@x263 (nnf-pos (refl (~ (less$ ?x118 ?x130) (less$ ?x118
> ?x130))) (~ $x159 $x159))))
>        (let ((@x409 (mp (mp~ (asserted $x159) @x263 $x159) @x408
> $x404)))
>        (let (($x574 (or (not $x404) $x491)))
>        (let ((@x575 ((_ quant-inst (word_of_int$ ?x42)) $x574)))
>        (let (($x381 (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$) )(! (let
> (($x95 (less$ ?v0 ?v2)))
>        (let (($x93 (less$ ?v1 ?v2)))
>        (let (($x306 (not $x93)))
>        (or (not (less_eq$ ?v0 ?v1)) $x306 $x95)))) :pattern ( (less_eq$
> ?v0 ?v1) (less$ ?v1 ?v2) ) :qid k!35))
>        ))
>        (let (($x326 (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$) )(! (let
> (($x95 (less$ ?v0 ?v2)))
>        (let (($x93 (less$ ?v1 ?v2)))
>        (let (($x306 (not $x93)))
>        (or (not (less_eq$ ?v0 ?v1)) $x306 $x95)))) :qid k!35))
>        ))
>        (let (($x95 (less$ ?2 ?0)))
>        (let (($x93 (less$ ?1 ?0)))
>        (let (($x306 (not $x93)))
>        (let (($x321 (or (not (less_eq$ ?2 ?1)) $x306 $x95)))
>        (let (($x103 (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$) )(! (let
> (($x95 (less$ ?v0 ?v2)))
>        (let (($x93 (less$ ?v1 ?v2)))
>        (let (($x91 (less_eq$ ?v0 ?v1)))
>        (let (($x94 (and $x91 $x93)))
>        (let (($x99 (not $x94)))
>        (or $x99 $x95)))))) :qid k!35))
>        ))
>        (let (($x91 (less_eq$ ?2 ?1)))
>        (let (($x94 (and $x91 $x93)))
>        (let (($x99 (not $x94)))
>        (let (($x100 (or $x99 $x95)))
>        (let ((@x315 (rewrite (= (not (not (or (not $x91) $x306))) (or
> (not $x91) $x306)))))
>        (let ((@x313 (monotonicity (rewrite (= $x94 (not (or (not $x91)
> $x306)))) (= $x99 (not (not (or (not $x91) $x306)))))))
>        (let ((@x320 (monotonicity (trans @x313 @x315 (= $x99 (or (not
> $x91) $x306))) (= $x100 (or (or (not $x91) $x306) $x95)))))
>        (let ((@x325 (trans @x320 (rewrite (= (or (or (not $x91) $x306)
> $x95) $x321)) (= $x100 $x321))))
>        (let (($x97 (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$) )(! (let
> (($x95 (less$ ?v0 ?v2)))
>        (let (($x93 (less$ ?v1 ?v2)))
>        (let (($x91 (less_eq$ ?v0 ?v1)))
>        (let (($x94 (and $x91 $x93)))
>        (=> $x94 $x95))))) :qid k!35))
>        ))
>        (let ((@x108 (mp (asserted $x97) (quant-intro (rewrite (= (=>
> $x94 $x95) $x100)) (= $x97 $x103)) $x103)))
>        (let ((@x329 (mp (mp~ @x108 (nnf-pos (refl (~ $x100 $x100)) (~
> $x103 $x103)) $x103) (quant-intro @x325 (= $x103 $x326)) $x326)))
>        (let ((@x386 (mp @x329 (quant-intro (refl (= $x321 $x321)) (=
> $x326 $x381)) $x381)))
>        (let (($x492 (not $x491)))
>        (let (($x527 (not $x510)))
>        (let (($x599 (not $x381)))
>        (let (($x621 (or $x599 $x527 $x492 $x472)))
>        (let ((@x626 (mp ((_ quant-inst (power$ ?x32 ?x38) (unat$ ?x43)
> (power$ ?x32 ?x35)) (or $x599 (or $x527 $x492 $x472))) (rewrite (= (or
> $x599 (or $x527 $x492 $x472)) $x621)) $x621)))
>        (let (($x425 (less$ n$ ?x130)))
>        (let (($x411 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x164
> (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$
> zero$))))))
>        (or (not $x164) (less$ ?v0 (power$ (numeral$ (bit0$ one$))
> ?v1)))) :pattern ( (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (minus$
> ?v1 (suc$ zero$)))) ) :qid k!40))
>        ))
>        (let (($x173 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x164
> (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$
> zero$))))))
>        (or (not $x164) (less$ ?v0 (power$ (numeral$ (bit0$ one$))
> ?v1)))) :qid k!40))
>        ))
>        (let (($x170 (or (not (less$ ?1 (power$ ?x32 (minus$ ?0 ?x37))))
> (less$ ?1 (power$ ?x32 ?0)))))
>        (let (($x167 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x164
> (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (minus$ ?v1 (suc$
> zero$))))))
>        (=> $x164 (less$ ?v0 (power$ (numeral$ (bit0$ one$)) ?v1))))
> :qid k!40))
>        ))
>        (let (($x164 (less$ ?1 (power$ ?x32 (minus$ ?0 ?x37)))))
>        (let ((@x175 (quant-intro (rewrite (= (=> $x164 (less$ ?1
> (power$ ?x32 ?0))) $x170)) (= $x167 $x173))))
>        (let ((@x269 (mp~ (mp (asserted $x167) @x175 $x173) (nnf-pos
> (refl (~ $x170 $x170)) (~ $x173 $x173)) $x173)))
>        (let ((@x416 (mp @x269 (quant-intro (refl (= $x170 $x170)) (=
> $x173 $x411)) $x411)))
>        (let (($x40 (less$ n$ ?x39)))
>        (let ((@x41 (asserted $x40)))
>        (let (($x418 (not $x40)))
>        (let (($x443 (or (not $x411) $x418 $x425)))
>        (let ((@x448 (mp ((_ quant-inst n$ (len_of$ type$)) (or (not
> $x411) (or $x418 $x425))) (rewrite (= (or (not $x411) (or $x418 $x425))
> $x443)) $x443)))
>        (let (($x397 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let ((?x136
> (of_nat$a ?v1)))
>        (let (($x138 (less_eq$a ?x136 (of_nat$a ?v0))))
>        (let (($x135 (less_eq$ ?v1 ?v0)))
>        (let (($x143 (= $x135 $x138)))
>        (or (not (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (len_of$
> type$)))) (not (less$ ?v1 (power$ (numeral$ (bit0$ one$)) (len_of$
> type$)))) $x143))))) :pattern ( (less_eq$ ?v1 ?v0) ) :pattern (
> (less_eq$a (of_nat$a ?v1) (of_nat$a ?v0)) ) :qid k!38))
>        ))
>        (let (($x351 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let ((?x136
> (of_nat$a ?v1)))
>        (let (($x138 (less_eq$a ?x136 (of_nat$a ?v0))))
>        (let (($x135 (less_eq$ ?v1 ?v0)))
>        (let (($x143 (= $x135 $x138)))
>        (or (not (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (len_of$
> type$)))) (not (less$ ?v1 (power$ (numeral$ (bit0$ one$)) (len_of$
> type$)))) $x143))))) :qid k!38))
>        ))
>        (let (($x138 (less_eq$a ?x136 (of_nat$a ?1))))
>        (let (($x135 (less_eq$ ?0 ?1)))
>        (let (($x143 (= $x135 $x138)))
>        (let (($x346 (or (not (less$ ?1 ?x130)) (not (less$ ?0 ?x130))
> $x143)))
>        (let (($x155 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let ((?x136
> (of_nat$a ?v1)))
>        (let (($x138 (less_eq$a ?x136 (of_nat$a ?v0))))
>        (let (($x135 (less_eq$ ?v1 ?v0)))
>        (let (($x143 (= $x135 $x138)))
>        (let (($x134 (and (less$ ?v0 (power$ (numeral$ (bit0$ one$))
> (len_of$ type$))) (less$ ?v1 (power$ (numeral$ (bit0$ one$)) (len_of$
> type$))))))
>        (let (($x149 (not $x134)))
>        (or $x149 $x143))))))) :qid k!38))
>        ))
>        (let (($x347 (= (or (or (not (less$ ?1 ?x130)) (not (less$ ?0
> ?x130))) $x143) $x346)))
>        (let (($x134 (and (less$ ?1 ?x130) (less$ ?0 ?x130))))
>        (let (($x149 (not $x134)))
>        (let (($x150 (or $x149 $x143)))
>        (let (($x344 (= $x150 (or (or (not (less$ ?1 ?x130)) (not (less$
> ?0 ?x130))) $x143))))
>        (let (($x332 (or (not (less$ ?1 ?x130)) (not (less$ ?0
> ?x130)))))
>        (let ((@x338 (monotonicity (rewrite (= $x134 (not $x332))) (=
> $x149 (not (not $x332))))))
>        (let ((@x345 (monotonicity (trans @x338 (rewrite (= (not (not
> $x332)) $x332)) (= $x149 $x332)) $x344)))
>        (let ((@x353 (quant-intro (trans @x345 (rewrite $x347) (= $x150
> $x346)) (= $x155 $x351))))
>        (let (($x141 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x134
> (and (less$ ?v0 (power$ (numeral$ (bit0$ one$)) (len_of$ type$)))
> (less$ ?v1 (power$ (numeral$ (bit0$ one$)) (len_of$ type$))))))
>        (=> $x134 (= (less_eq$ ?v1 ?v0) (less_eq$a (of_nat$a ?v1)
> (of_nat$a ?v0))))) :qid k!38))
>        ))
>        (let ((@x148 (monotonicity (rewrite (= (= $x135 $x138) $x143))
> (= (=> $x134 (= $x135 $x138)) (=> $x134 $x143)))))
>        (let ((@x154 (trans @x148 (rewrite (= (=> $x134 $x143) $x150))
> (= (=> $x134 (= $x135 $x138)) $x150))))
>        (let ((@x259 (mp~ (mp (asserted $x141) (quant-intro @x154 (=
> $x141 $x155)) $x155) (nnf-pos (refl (~ $x150 $x150)) (~ $x155 $x155))
> $x155)))
>        (let ((@x402 (mp (mp @x259 @x353 $x351) (quant-intro (refl (=
> $x346 $x346)) (= $x351 $x397)) $x397)))
>        (let (($x486 (not $x472)))
>        (let (($x471 (not $x425)))
>        (let (($x493 (not $x397)))
>        (let (($x494 (or $x493 $x471 $x486 $x489)))
>        (let ((@x499 (mp ((_ quant-inst n$ (power$ ?x32 ?x38)) (or $x493
> (or $x471 $x486 $x489))) (rewrite (= (or $x493 (or $x471 $x486 $x489))
> $x494)) $x494)))
>        (let ((@x690 (unit-resolution @x499 @x402 (unit-resolution @x448
> @x41 @x416 $x425) (or $x486 $x489))))
>        (let ((@x691 (unit-resolution @x690 (unit-resolution @x626 @x386
> (unit-resolution @x575 @x409 $x491) @x685 $x472) $x489)))
>        (let (($x433 (not $x417)))
>        (let (($x424 (= $x417 $x418)))
>        (let (($x367 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x59
> (less_eq$ ?v0 ?v1)))
>        (= $x59 (not (less$ ?v1 ?v0)))) :pattern ( (less_eq$ ?v0 ?v1) )
> :pattern ( (less$ ?v1 ?v0) ) :qid k!33))
>        ))
>        (let (($x69 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x59
> (less_eq$ ?v0 ?v1)))
>        (= $x59 (not (less$ ?v1 ?v0)))) :qid k!33))
>        ))
>        (let (($x59 (less_eq$ ?1 ?0)))
>        (let (($x66 (= $x59 (not (less$ ?0 ?1)))))
>        (let (($x64 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x59
> (less_eq$ ?v0 ?v1)))
>        (= $x59 (not (less$ ?v1 ?v0)))) :qid k!33))
>        ))
>        (let ((@x71 (quant-intro (rewrite (= (= $x59 (not (less$ ?0
> ?1))) $x66)) (= $x64 $x69))))
>        (let ((@x234 (mp~ (mp (asserted $x64) @x71 $x69) (nnf-pos (refl
> (~ $x66 $x66)) (~ $x69 $x69)) $x69)))
>        (let ((@x372 (mp @x234 (quant-intro (refl (= $x66 $x66)) (= $x69
> $x367)) $x367)))
>        (let (($x427 (not $x367)))
>        (let (($x428 (or $x427 $x424)))
>        (let ((@x429 ((_ quant-inst (power$ ?x32 ?x38) n$) $x428)))
>        (let ((@x694 (unit-resolution (def-axiom (or (not $x424) $x433
> $x418)) @x41 (or (not $x424) $x433))))
>        (let ((@x697 (unit-resolution (def-axiom (or (not $x489) $x417
> $x501)) (unit-resolution @x694 (unit-resolution @x429 @x372 $x424)
> $x433) (or (not $x489) $x501))))
>        (unit-resolution (unit-resolution @x697 @x691 $x501) @x711
> false))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
> )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
> )))))))))))))))))))))))))))) 
> SMT: Time (ms):
>        11 
> SMT: Solver: 
> SMT: Result:
>        unknown
>        (error "Cannot get an unsat core unless immediately preceded by
> UNSAT/VALID response.") 
> SMT: Time (ms):
>        9391 
> "cvc4": A prover error occurred:
> Solver "cvc4" failed -- enable tracing using the "smt_trace" option for
> details 
> SMT: Assertions:
>        1 = Suc 0
>        ∀y x. (y ≤ x) = (¬ x < y)
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀a. msb a = (2 ^ (LENGTH('l) - Suc 0) ≤ a)
>        ∀w. msb w = (2 ^ (LENGTH('l) - 1) ≤ unat w)
>        ∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (y ≤ x) =
> (of_nat y ≤ of_nat x)
>        ∀a x. a < 2 ^ (x - Suc 0) ⟶ a < 2 ^ x
>        ∀x. unat x < 2 ^ LENGTH('l)
>        ∀n. of_nat n = word_of_int (int n)
>        ∀n. 2 ^ n = of_nat (2 ^ n)
>        ¬ (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n)) ⟶
> False) 
> SMT: Names:
>        sorts:
>          Nat$ = nat
>          Num$ = num
>          L_word$ = 'l word
>          L_itself$ = 'l itself
>        functions:
>          n$ = n
>          msb$ = msb
>          one$ = 1
>          suc$ = Suc
>          bit0$ = num.Bit0
>          less$ = (<)
>          one$a = num.One
>          type$ = TYPE('l)
>          unat$ = unat
>          zero$ = 0
>          less$a = (<)
>          minus$ = (-)
>          power$ = (^)
>          len_of$ = len_of
>          of_nat$ = of_nat
>          power$a = (^)
>          less_eq$ = (≤)
>          numeral$ = numeral
>          of_nat$a = int
>          less_eq$a = (≤)
>          numeral$a = numeral
>          word_of_int$ = word_of_int 
> SMT: Problem:
>        ; smt.random_seed=1 smt.refine_inj_axioms=false -T:20 -smt2
>        (set-option :produce-proofs true)
>        (declare-sort Nat$ 0)
>        (declare-sort Num$ 0)
>        (declare-sort L_word$ 0)
>        (declare-sort L_itself$ 0)
>        (declare-fun n$ () Nat$)
>        (declare-fun msb$ (L_word$) Bool)
>        (declare-fun one$ () Nat$)
>        (declare-fun suc$ (Nat$) Nat$)
>        (declare-fun bit0$ (Num$) Num$)
>        (declare-fun less$ (Nat$ Nat$) Bool)
>        (declare-fun one$a () Num$)
>        (declare-fun type$ () L_itself$)
>        (declare-fun unat$ (L_word$) Nat$)
>        (declare-fun zero$ () Nat$)
>        (declare-fun less$a (L_word$ L_word$) Bool)
>        (declare-fun minus$ (Nat$ Nat$) Nat$)
>        (declare-fun power$ (L_word$ Nat$) L_word$)
>        (declare-fun len_of$ (L_itself$) Nat$)
>        (declare-fun of_nat$ (Nat$) L_word$)
>        (declare-fun power$a (Nat$ Nat$) Nat$)
>        (declare-fun less_eq$ (Nat$ Nat$) Bool)
>        (declare-fun numeral$ (Num$) L_word$)
>        (declare-fun of_nat$a (Nat$) Int)
>        (declare-fun less_eq$a (L_word$ L_word$) Bool)
>        (declare-fun numeral$a (Num$) Nat$)
>        (declare-fun word_of_int$ (Int) L_word$)
>        (assert (! (= one$ (suc$ zero$)) :named a0))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (= (less_eq$ ?v0 ?v1)
> (not (less$ ?v1 ?v0)))) :named a1))
>        (assert (! (forall ((?v0 L_word$) (?v1 L_word$) (?v2 L_word$))
> (=> (and (less_eq$a ?v0 ?v1) (less$a ?v1 ?v2)) (less$a ?v0 ?v2)))
> :named a2))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$)) (=> (and
> (less_eq$ ?v0 ?v1) (less$ ?v1 ?v2)) (less$ ?v0 ?v2))) :named a3))
>        (assert (! (forall ((?v0 L_word$)) (= (msb$ ?v0) (less_eq$a
> (power$ (numeral$ (bit0$ one$a)) (minus$ (len_of$ type$) (suc$ zero$)))
> ?v0))) :named a4))
>        (assert (! (forall ((?v0 L_word$)) (= (msb$ ?v0) (less_eq$
> (power$a (numeral$a (bit0$ one$a)) (minus$ (len_of$ type$) one$))
> (unat$ ?v0)))) :named a5))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (and (less$ ?v0
> (power$a (numeral$a (bit0$ one$a)) (len_of$ type$))) (less$ ?v1
> (power$a (numeral$a (bit0$ one$a)) (len_of$ type$)))) (= (less_eq$ ?v1
> ?v0) (less_eq$a (of_nat$ ?v1) (of_nat$ ?v0))))) :named a6))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (less$ ?v0
> (power$a (numeral$a (bit0$ one$a)) (minus$ ?v1 (suc$ zero$)))) (less$
> ?v0 (power$a (numeral$a (bit0$ one$a)) ?v1)))) :named a7))
>        (assert (! (forall ((?v0 L_word$)) (less$ (unat$ ?v0) (power$a
> (numeral$a (bit0$ one$a)) (len_of$ type$)))) :named a8))
>        (assert (! (forall ((?v0 Nat$)) (= (of_nat$ ?v0) (word_of_int$
> (of_nat$a ?v0)))) :named a9))
>        (assert (! (forall ((?v0 Nat$)) (= (power$ (numeral$ (bit0$
> one$a)) ?v0) (of_nat$ (power$a (numeral$a (bit0$ one$a)) ?v0)))) :named
> a10))
>        (assert (! (not (=> (and (less$ n$ (power$a (numeral$a (bit0$
> one$a)) (minus$ (len_of$ type$) (suc$ zero$)))) (msb$ (word_of_int$
> (of_nat$a n$)))) false)) :named a11))
>        (check-sat)
>        (get-proof)
>         
> SMT: Invoking SMT solver "z3" ... 
> SMT: Solver: 
> SMT: Result:
>        unsat
>        ((set-logic <null>)
>        (proof
>        (let ((?x86 (len_of$ type$)))
>        (let ((?x83 (bit0$ one$a)))
>        (let ((?x99 (numeral$a ?x83)))
>        (let ((?x114 (power$a ?x99 ?x86)))
>        (let ((?x29 (suc$ zero$)))
>        (let ((?x87 (minus$ ?x86 ?x29)))
>        (let ((?x173 (power$a ?x99 ?x87)))
>        (let (($x464 (less$ ?x173 ?x114)))
>        (let ((?x175 (of_nat$a n$)))
>        (let ((?x176 (word_of_int$ ?x175)))
>        (let ((?x426 (unat$ ?x176)))
>        (let (($x491 (less_eq$ ?x173 ?x426)))
>        (let (($x30 (= one$ ?x29)))
>        (let ((@x31 (asserted $x30)))
>        (let ((@x617 (monotonicity (monotonicity @x31 (= (minus$ ?x86
> one$) ?x87)) (= (power$a ?x99 (minus$ ?x86 one$)) ?x173))))
>        (let ((@x621 (monotonicity (symm @x617 (= ?x173 (power$a ?x99
> (minus$ ?x86 one$)))) (= $x491 (less_eq$ (power$a ?x99 (minus$ ?x86
> one$)) ?x426)))))
>        (let ((@x623 (symm @x621 (= (less_eq$ (power$a ?x99 (minus$ ?x86
> one$)) ?x426) $x491))))
>        (let ((?x100 (minus$ ?x86 one$)))
>        (let ((?x102 (power$a ?x99 ?x100)))
>        (let (($x427 (less_eq$ ?x102 ?x426)))
>        (let (($x177 (msb$ ?x176)))
>        (let (($x442 (= $x177 $x427)))
>        (let (($x351 (forall ((?v0 L_word$) )(! (let ((?x103 (unat$
> ?v0)))
>        (let ((?x86 (len_of$ type$)))
>        (let ((?x100 (minus$ ?x86 one$)))
>        (let ((?x83 (bit0$ one$a)))
>        (let ((?x99 (numeral$a ?x83)))
>        (let ((?x102 (power$a ?x99 ?x100)))
>        (let (($x104 (less_eq$ ?x102 ?x103)))
>        (let (($x80 (msb$ ?v0)))
>        (= $x80 $x104))))))))) :pattern ( (msb$ ?v0) ) :pattern ( (unat$
> ?v0) ) :qid k!34))
>        ))
>        (let (($x111 (forall ((?v0 L_word$) )(! (let ((?x103 (unat$
> ?v0)))
>        (let ((?x86 (len_of$ type$)))
>        (let ((?x100 (minus$ ?x86 one$)))
>        (let ((?x83 (bit0$ one$a)))
>        (let ((?x99 (numeral$a ?x83)))
>        (let ((?x102 (power$a ?x99 ?x100)))
>        (let (($x104 (less_eq$ ?x102 ?x103)))
>        (let (($x80 (msb$ ?v0)))
>        (= $x80 $x104))))))))) :qid k!34))
>        ))
>        (let ((?x103 (unat$ ?0)))
>        (let (($x104 (less_eq$ ?x102 ?x103)))
>        (let (($x80 (msb$ ?0)))
>        (let (($x108 (= $x80 $x104)))
>        (let (($x106 (forall ((?v0 L_word$) )(! (let ((?x103 (unat$
> ?v0)))
>        (let ((?x86 (len_of$ type$)))
>        (let ((?x100 (minus$ ?x86 one$)))
>        (let ((?x83 (bit0$ one$a)))
>        (let ((?x99 (numeral$a ?x83)))
>        (let ((?x102 (power$a ?x99 ?x100)))
>        (let (($x104 (less_eq$ ?x102 ?x103)))
>        (let (($x80 (msb$ ?v0)))
>        (= $x80 $x104))))))))) :qid k!34))
>        ))
>        (let ((@x116 (mp (asserted $x106) (quant-intro (rewrite (= (=
> $x80 $x104) $x108)) (= $x106 $x111)) $x111)))
>        (let ((@x356 (mp (mp~ @x116 (nnf-pos (refl (~ $x108 $x108)) (~
> $x111 $x111)) $x111) (quant-intro (refl (= $x108 $x108)) (= $x111
> $x351)) $x351)))
>        (let (($x446 (or (not $x351) $x442)))
>        (let ((@x447 ((_ quant-inst (word_of_int$ ?x175)) $x446)))
>        (let (($x174 (less$ n$ ?x173)))
>        (let (($x178 (and $x174 $x177)))
>        (let ((@x187 (monotonicity (rewrite (= (=> $x178 false) (not
> $x178))) (= (not (=> $x178 false)) (not (not $x178))))))
>        (let ((@x191 (trans @x187 (rewrite (= (not (not $x178)) $x178))
> (= (not (=> $x178 false)) $x178))))
>        (let ((@x193 (and-elim (mp (asserted (not (=> $x178 false)))
> @x191 $x178) $x177)))
>        (let ((@x612 (unit-resolution (def-axiom (or (not $x442) (not
> $x177) $x427)) @x193 (or (not $x442) $x427))))
>        (let ((@x624 (mp (unit-resolution @x612 (unit-resolution @x447
> @x356 $x442) $x427) @x623 $x491)))
>        (let (($x472 (less$ ?x426 ?x114)))
>        (let (($x372 (forall ((?v0 L_word$) )(! (let ((?x86 (len_of$
> type$)))
>        (let ((?x83 (bit0$ one$a)))
>        (let ((?x99 (numeral$a ?x83)))
>        (let ((?x114 (power$a ?x99 ?x86)))
>        (let ((?x103 (unat$ ?v0)))
>        (less$ ?x103 ?x114)))))) :pattern ( (unat$ ?v0) ) :qid k!37))
>        ))
>        (let (($x159 (forall ((?v0 L_word$) )(! (let ((?x86 (len_of$
> type$)))
>        (let ((?x83 (bit0$ one$a)))
>        (let ((?x99 (numeral$a ?x83)))
>        (let ((?x114 (power$a ?x99 ?x86)))
>        (let ((?x103 (unat$ ?v0)))
>        (less$ ?x103 ?x114)))))) :qid k!37))
>        ))
>        (let ((@x376 (quant-intro (refl (= (less$ ?x103 ?x114) (less$
> ?x103 ?x114))) (= $x159 $x372))))
>        (let ((@x233 (nnf-pos (refl (~ (less$ ?x103 ?x114) (less$ ?x103
> ?x114))) (~ $x159 $x159))))
>        (let ((@x377 (mp (mp~ (asserted $x159) @x233 $x159) @x376
> $x372)))
>        (let (($x549 (or (not $x372) $x472)))
>        (let ((@x550 ((_ quant-inst (word_of_int$ ?x175)) $x549)))
>        (let (($x336 (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$) )(! (let
> (($x69 (less$ ?v0 ?v2)))
>        (let (($x67 (less$ ?v1 ?v2)))
>        (let (($x271 (not $x67)))
>        (or (not (less_eq$ ?v0 ?v1)) $x271 $x69)))) :pattern ( (less_eq$
> ?v0 ?v1) (less$ ?v1 ?v2) ) :qid k!32))
>        ))
>        (let (($x291 (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$) )(! (let
> (($x69 (less$ ?v0 ?v2)))
>        (let (($x67 (less$ ?v1 ?v2)))
>        (let (($x271 (not $x67)))
>        (or (not (less_eq$ ?v0 ?v1)) $x271 $x69)))) :qid k!32))
>        ))
>        (let (($x69 (less$ ?2 ?0)))
>        (let (($x67 (less$ ?1 ?0)))
>        (let (($x271 (not $x67)))
>        (let (($x286 (or (not (less_eq$ ?2 ?1)) $x271 $x69)))
>        (let (($x77 (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$) )(! (let
> (($x69 (less$ ?v0 ?v2)))
>        (let (($x67 (less$ ?v1 ?v2)))
>        (let (($x65 (less_eq$ ?v0 ?v1)))
>        (let (($x68 (and $x65 $x67)))
>        (let (($x73 (not $x68)))
>        (or $x73 $x69)))))) :qid k!32))
>        ))
>        (let (($x65 (less_eq$ ?2 ?1)))
>        (let (($x68 (and $x65 $x67)))
>        (let (($x73 (not $x68)))
>        (let (($x74 (or $x73 $x69)))
>        (let ((@x280 (rewrite (= (not (not (or (not $x65) $x271))) (or
> (not $x65) $x271)))))
>        (let ((@x278 (monotonicity (rewrite (= $x68 (not (or (not $x65)
> $x271)))) (= $x73 (not (not (or (not $x65) $x271)))))))
>        (let ((@x285 (monotonicity (trans @x278 @x280 (= $x73 (or (not
> $x65) $x271))) (= $x74 (or (or (not $x65) $x271) $x69)))))
>        (let ((@x290 (trans @x285 (rewrite (= (or (or (not $x65) $x271)
> $x69) $x286)) (= $x74 $x286))))
>        (let (($x71 (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$) )(! (let
> (($x69 (less$ ?v0 ?v2)))
>        (let (($x67 (less$ ?v1 ?v2)))
>        (let (($x65 (less_eq$ ?v0 ?v1)))
>        (let (($x68 (and $x65 $x67)))
>        (=> $x68 $x69))))) :qid k!32))
>        ))
>        (let ((@x82 (mp (asserted $x71) (quant-intro (rewrite (= (=>
> $x68 $x69) $x74)) (= $x71 $x77)) $x77)))
>        (let ((@x294 (mp (mp~ @x82 (nnf-pos (refl (~ $x74 $x74)) (~ $x77
> $x77)) $x77) (quant-intro @x290 (= $x77 $x291)) $x291)))
>        (let ((@x341 (mp @x294 (quant-intro (refl (= $x286 $x286)) (=
> $x291 $x336)) $x336)))
>        (let (($x473 (not $x472)))
>        (let (($x508 (not $x491)))
>        (let (($x579 (not $x336)))
>        (let (($x601 (or $x579 $x508 $x473 $x464)))
>        (let ((@x606 (mp ((_ quant-inst (power$a ?x99 ?x87) (unat$
> ?x176) (power$a ?x99 ?x86)) (or $x579 (or $x508 $x473 $x464))) (rewrite
> (= (or $x579 (or $x508 $x473 $x464)) $x601)) $x601)))
>        (let ((?x443 (of_nat$ n$)))
>        (let ((?x458 (of_nat$ ?x173)))
>        (let (($x469 (less_eq$a ?x458 ?x443)))
>        (let (($x394 (less_eq$ ?x173 n$)))
>        (let (($x470 (= $x394 $x469)))
>        (let (($x481 (not $x470)))
>        (let (($x444 (= ?x443 ?x176)))
>        (let (($x380 (forall ((?v0 Nat$) )(! (let ((?x162 (of_nat$a
> ?v0)))
>        (let ((?x163 (word_of_int$ ?x162)))
>        (let ((?x120 (of_nat$ ?v0)))
>        (= ?x120 ?x163)))) :pattern ( (of_nat$ ?v0) ) :pattern (
> (of_nat$a ?v0) ) :qid k!38))
>        ))
>        (let (($x165 (forall ((?v0 Nat$) )(! (let ((?x162 (of_nat$a
> ?v0)))
>        (let ((?x163 (word_of_int$ ?x162)))
>        (let ((?x120 (of_nat$ ?v0)))
>        (= ?x120 ?x163)))) :qid k!38))
>        ))
>        (let ((?x162 (of_nat$a ?0)))
>        (let ((?x163 (word_of_int$ ?x162)))
>        (let ((?x120 (of_nat$ ?0)))
>        (let (($x164 (= ?x120 ?x163)))
>        (let ((@x239 (mp~ (asserted $x165) (nnf-pos (refl (~ $x164
> $x164)) (~ $x165 $x165)) $x165)))
>        (let ((@x385 (mp @x239 (quant-intro (refl (= $x164 $x164)) (=
> $x165 $x380)) $x380)))
>        (let (($x460 (not $x380)))
>        (let (($x461 (or $x460 $x444)))
>        (let ((@x462 ((_ quant-inst n$) $x461)))
>        (let ((?x84 (numeral$ ?x83)))
>        (let ((?x88 (power$ ?x84 ?x87)))
>        (let (($x459 (= ?x88 ?x458)))
>        (let (($x388 (forall ((?v0 Nat$) )(! (= (power$ (numeral$ (bit0$
> one$a)) ?v0) (of_nat$ (power$a (numeral$a (bit0$ one$a)) ?v0)))
> :pattern ( (power$ (numeral$ (bit0$ one$a)) ?v0) ) :pattern ( (power$a
> (numeral$a (bit0$ one$a)) ?v0) ) :qid k!39))
>        ))
>        (let (($x170 (forall ((?v0 Nat$) )(! (= (power$ (numeral$ (bit0$
> one$a)) ?v0) (of_nat$ (power$a (numeral$a (bit0$ one$a)) ?v0))) :qid
> k!39))
>        ))
>        (let (($x169 (= (power$ ?x84 ?0) (of_nat$ (power$a ?x99 ?0)))))
>        (let ((@x244 (mp~ (asserted $x170) (nnf-pos (refl (~ $x169
> $x169)) (~ $x170 $x170)) $x170)))
>        (let ((@x393 (mp @x244 (quant-intro (refl (= $x169 $x169)) (=
> $x170 $x388)) $x388)))
>        (let (($x466 (or (not $x388) $x459)))
>        (let ((@x467 ((_ quant-inst (minus$ ?x86 ?x29)) $x466)))
>        (let ((@x636 (monotonicity (symm (unit-resolution @x467 @x393
> $x459) (= ?x458 ?x88)) (unit-resolution @x462 @x385 $x444) (= $x469
> (less_eq$a ?x88 ?x176)))))
>        (let (($x417 (less_eq$a ?x88 ?x176)))
>        (let (($x418 (= $x177 $x417)))
>        (let (($x344 (forall ((?v0 L_word$) )(! (let ((?x29 (suc$
> zero$)))
>        (let ((?x86 (len_of$ type$)))
>        (let ((?x87 (minus$ ?x86 ?x29)))
>        (let ((?x83 (bit0$ one$a)))
>        (let ((?x84 (numeral$ ?x83)))
>        (let ((?x88 (power$ ?x84 ?x87)))
>        (let (($x89 (less_eq$a ?x88 ?v0)))
>        (let (($x80 (msb$ ?v0)))
>        (= $x80 $x89))))))))) :pattern ( (msb$ ?v0) ) :pattern (
> (less_eq$a (power$ (numeral$ (bit0$ one$a)) (minus$ (len_of$ type$)
> (suc$ zero$))) ?v0) ) :qid k!33))
>        ))
>        (let (($x96 (forall ((?v0 L_word$) )(! (let ((?x29 (suc$
> zero$)))
>        (let ((?x86 (len_of$ type$)))
>        (let ((?x87 (minus$ ?x86 ?x29)))
>        (let ((?x83 (bit0$ one$a)))
>        (let ((?x84 (numeral$ ?x83)))
>        (let ((?x88 (power$ ?x84 ?x87)))
>        (let (($x89 (less_eq$a ?x88 ?v0)))
>        (let (($x80 (msb$ ?v0)))
>        (= $x80 $x89))))))))) :qid k!33))
>        ))
>        (let (($x89 (less_eq$a ?x88 ?0)))
>        (let (($x93 (= $x80 $x89)))
>        (let (($x91 (forall ((?v0 L_word$) )(! (let ((?x29 (suc$
> zero$)))
>        (let ((?x86 (len_of$ type$)))
>        (let ((?x87 (minus$ ?x86 ?x29)))
>        (let ((?x83 (bit0$ one$a)))
>        (let ((?x84 (numeral$ ?x83)))
>        (let ((?x88 (power$ ?x84 ?x87)))
>        (let (($x89 (less_eq$a ?x88 ?v0)))
>        (let (($x80 (msb$ ?v0)))
>        (= $x80 $x89))))))))) :qid k!33))
>        ))
>        (let ((@x101 (mp (asserted $x91) (quant-intro (rewrite (= (=
> $x80 $x89) $x93)) (= $x91 $x96)) $x96)))
>        (let ((@x349 (mp (mp~ @x101 (nnf-pos (refl (~ $x93 $x93)) (~
> $x96 $x96)) $x96) (quant-intro (refl (= $x93 $x93)) (= $x96 $x344))
> $x344)))
>        (let (($x429 (or (not $x344) $x418)))
>        (let ((@x430 ((_ quant-inst (word_of_int$ ?x175)) $x429)))
>        (let ((@x629 (unit-resolution (def-axiom (or (not $x418) (not
> $x177) $x417)) @x193 (or (not $x418) $x417))))
>        (let ((@x639 (mp (unit-resolution @x629 (unit-resolution @x430
> @x349 $x418) $x417) (symm @x636 (= $x417 $x469)) $x469)))
>        (let (($x410 (not $x394)))
>        (let (($x395 (not $x174)))
>        (let (($x401 (= $x394 $x395)))
>        (let (($x322 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x34
> (less_eq$ ?v0 ?v1)))
>        (= $x34 (not (less$ ?v1 ?v0)))) :pattern ( (less_eq$ ?v0 ?v1) )
> :pattern ( (less$ ?v1 ?v0) ) :qid k!30))
>        ))
>        (let (($x43 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x34
> (less_eq$ ?v0 ?v1)))
>        (= $x34 (not (less$ ?v1 ?v0)))) :qid k!30))
>        ))
>        (let (($x34 (less_eq$ ?1 ?0)))
>        (let (($x40 (= $x34 (not (less$ ?0 ?1)))))
>        (let (($x38 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x34
> (less_eq$ ?v0 ?v1)))
>        (= $x34 (not (less$ ?v1 ?v0)))) :qid k!30))
>        ))
>        (let ((@x45 (quant-intro (rewrite (= (= $x34 (not (less$ ?0
> ?1))) $x40)) (= $x38 $x43))))
>        (let ((@x199 (mp~ (mp (asserted $x38) @x45 $x43) (nnf-pos (refl
> (~ $x40 $x40)) (~ $x43 $x43)) $x43)))
>        (let ((@x327 (mp @x199 (quant-intro (refl (= $x40 $x40)) (= $x43
> $x322)) $x322)))
>        (let (($x404 (not $x322)))
>        (let (($x405 (or $x404 $x401)))
>        (let ((@x406 ((_ quant-inst (power$a ?x99 ?x87) n$) $x405)))
>        (let ((@x192 (and-elim (mp (asserted (not (=> $x178 false)))
> @x191 $x178) $x174)))
>        (let ((@x642 (unit-resolution (def-axiom (or (not $x401) $x410
> $x395)) @x192 (or (not $x401) $x410))))
>        (let ((@x645 (unit-resolution (def-axiom (or $x481 $x394 (not
> $x469))) (unit-resolution @x642 (unit-resolution @x406 @x327 $x401)
> $x410) (or $x481 (not $x469)))))
>        (let (($x402 (less$ n$ ?x114)))
>        (let (($x366 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x145
> (less$ ?v0 (power$a (numeral$a (bit0$ one$a)) (minus$ ?v1 (suc$
> zero$))))))
>        (or (not $x145) (less$ ?v0 (power$a (numeral$a (bit0$ one$a))
> ?v1)))) :pattern ( (less$ ?v0 (power$a (numeral$a (bit0$ one$a))
> (minus$ ?v1 (suc$ zero$)))) ) :qid k!36))
>        ))
>        (let (($x155 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x145
> (less$ ?v0 (power$a (numeral$a (bit0$ one$a)) (minus$ ?v1 (suc$
> zero$))))))
>        (or (not $x145) (less$ ?v0 (power$a (numeral$a (bit0$ one$a))
> ?v1)))) :qid k!36))
>        ))
>        (let (($x152 (or (not (less$ ?1 (power$a ?x99 (minus$ ?0
> ?x29)))) (less$ ?1 (power$a ?x99 ?0)))))
>        (let (($x149 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x145
> (less$ ?v0 (power$a (numeral$a (bit0$ one$a)) (minus$ ?v1 (suc$
> zero$))))))
>        (=> $x145 (less$ ?v0 (power$a (numeral$a (bit0$ one$a)) ?v1))))
> :qid k!36))
>        ))
>        (let (($x145 (less$ ?1 (power$a ?x99 (minus$ ?0 ?x29)))))
>        (let ((@x157 (quant-intro (rewrite (= (=> $x145 (less$ ?1
> (power$a ?x99 ?0))) $x152)) (= $x149 $x155))))
>        (let ((@x229 (mp~ (mp (asserted $x149) @x157 $x155) (nnf-pos
> (refl (~ $x152 $x152)) (~ $x155 $x155)) $x155)))
>        (let ((@x371 (mp @x229 (quant-intro (refl (= $x152 $x152)) (=
> $x155 $x366)) $x366)))
>        (let (($x420 (or (not $x366) $x395 $x402)))
>        (let ((@x425 (mp ((_ quant-inst n$ (len_of$ type$)) (or (not
> $x366) (or $x395 $x402))) (rewrite (= (or (not $x366) (or $x395 $x402))
> $x420)) $x420)))
>        (let (($x359 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let ((?x120
> (of_nat$ ?v1)))
>        (let (($x122 (less_eq$a ?x120 (of_nat$ ?v0))))
>        (let (($x119 (less_eq$ ?v1 ?v0)))
>        (let (($x127 (= $x119 $x122)))
>        (let (($x296 (not (less$ ?v1 (power$a (numeral$a (bit0$ one$a))
> (len_of$ type$))))))
>        (let (($x295 (not (less$ ?v0 (power$a (numeral$a (bit0$ one$a))
> (len_of$ type$))))))
>        (or $x295 $x296 $x127))))))) :pattern ( (less_eq$ ?v1 ?v0) )
> :pattern ( (less_eq$a (of_nat$ ?v1) (of_nat$ ?v0)) ) :qid k!35))
>        ))
>        (let (($x316 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let ((?x120
> (of_nat$ ?v1)))
>        (let (($x122 (less_eq$a ?x120 (of_nat$ ?v0))))
>        (let (($x119 (less_eq$ ?v1 ?v0)))
>        (let (($x127 (= $x119 $x122)))
>        (let (($x296 (not (less$ ?v1 (power$a (numeral$a (bit0$ one$a))
> (len_of$ type$))))))
>        (let (($x295 (not (less$ ?v0 (power$a (numeral$a (bit0$ one$a))
> (len_of$ type$))))))
>        (or $x295 $x296 $x127))))))) :qid k!35))
>        ))
>        (let (($x122 (less_eq$a ?x120 (of_nat$ ?1))))
>        (let (($x119 (less_eq$ ?0 ?1)))
>        (let (($x127 (= $x119 $x122)))
>        (let (($x311 (or (not (less$ ?1 ?x114)) (not (less$ ?0 ?x114))
> $x127)))
>        (let (($x139 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let ((?x120
> (of_nat$ ?v1)))
>        (let (($x122 (less_eq$a ?x120 (of_nat$ ?v0))))
>        (let (($x119 (less_eq$ ?v1 ?v0)))
>        (let (($x127 (= $x119 $x122)))
>        (let (($x118 (and (less$ ?v0 (power$a (numeral$a (bit0$ one$a))
> (len_of$ type$))) (less$ ?v1 (power$a (numeral$a (bit0$ one$a))
> (len_of$ type$))))))
>        (let (($x133 (not $x118)))
>        (or $x133 $x127))))))) :qid k!35))
>        ))
>        (let (($x312 (= (or (or (not (less$ ?1 ?x114)) (not (less$ ?0
> ?x114))) $x127) $x311)))
>        (let (($x118 (and (less$ ?1 ?x114) (less$ ?0 ?x114))))
>        (let (($x133 (not $x118)))
>        (let (($x134 (or $x133 $x127)))
>        (let (($x309 (= $x134 (or (or (not (less$ ?1 ?x114)) (not (less$
> ?0 ?x114))) $x127))))
>        (let (($x297 (or (not (less$ ?1 ?x114)) (not (less$ ?0
> ?x114)))))
>        (let ((@x303 (monotonicity (rewrite (= $x118 (not $x297))) (=
> $x133 (not (not $x297))))))
>        (let ((@x310 (monotonicity (trans @x303 (rewrite (= (not (not
> $x297)) $x297)) (= $x133 $x297)) $x309)))
>        (let ((@x318 (quant-intro (trans @x310 (rewrite $x312) (= $x134
> $x311)) (= $x139 $x316))))
>        (let (($x125 (forall ((?v0 Nat$) (?v1 Nat$) )(! (let (($x118
> (and (less$ ?v0 (power$a (numeral$a (bit0$ one$a)) (len_of$ type$)))
> (less$ ?v1 (power$a (numeral$a (bit0$ one$a)) (len_of$ type$))))))
>        (=> $x118 (= (less_eq$ ?v1 ?v0) (less_eq$a (of_nat$ ?v1)
> (of_nat$ ?v0))))) :qid k!35))
>        ))
>        (let ((@x132 (monotonicity (rewrite (= (= $x119 $x122) $x127))
> (= (=> $x118 (= $x119 $x122)) (=> $x118 $x127)))))
>        (let ((@x138 (trans @x132 (rewrite (= (=> $x118 $x127) $x134))
> (= (=> $x118 (= $x119 $x122)) $x134))))
>        (let ((@x224 (mp~ (mp (asserted $x125) (quant-intro @x138 (=
> $x125 $x139)) $x139) (nnf-pos (refl (~ $x134 $x134)) (~ $x139 $x139))
> $x139)))
>        (let ((@x364 (mp (mp @x224 @x318 $x316) (quant-intro (refl (=
> $x311 $x311)) (= $x316 $x359)) $x359)))
>        (let (($x468 (not $x464)))
>        (let (($x463 (not $x402)))
>        (let (($x474 (not $x359)))
>        (let (($x475 (or $x474 $x463 $x468 $x470)))
>        (let ((@x480 (mp ((_ quant-inst n$ (power$a ?x99 ?x87)) (or
> $x474 (or $x463 $x468 $x470))) (rewrite (= (or $x474 (or $x463 $x468
> $x470)) $x475)) $x475)))
>        (let ((@x649 (unit-resolution @x480 @x364 (unit-resolution @x425
> @x371 @x192 $x402) (or $x468 $x470))))
>        (unit-resolution @x649 (unit-resolution @x645 @x639 $x481)
> (unit-resolution @x606 @x341 (unit-resolution @x550 @x377 $x472) @x624
> $x464)
> false))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
> )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
> ))))))))))))))))))))))))))))))))))) 
> SMT: Time (ms):
>        11 
> SMT: Goal: "quant-inst"
>        proposition:
>          ¬ (∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨ (v1
> ≤ v0) = (of_nat v1 ≤ of_nat v0)) ∨
>          ¬ n < 2 ^ LENGTH('l) ∨
>          ¬ 2 ^ (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l) ∨
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) = (of_nat (2 ^ (LENGTH('l) -
> Suc 0)) ≤ of_nat n) 
> SMT: Goal: "rewrite"
>        proposition:
>          (¬ (∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨
> (v1 ≤ v0) = (of_nat v1 ≤ of_nat v0)) ∨
>           ¬ n < 2 ^ LENGTH('l) ∨
>           ¬ 2 ^ (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l) ∨
>           (2 ^ (LENGTH('l) - Suc 0) ≤ n) = (of_nat (2 ^ (LENGTH('l) -
> Suc 0)) ≤ of_nat n)) =
>          (¬ (∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨
> (v1 ≤ v0) = (of_nat v1 ≤ of_nat v0)) ∨
>           ¬ n < 2 ^ LENGTH('l) ∨
>           ¬ 2 ^ (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l) ∨
>           (2 ^ (LENGTH('l) - Suc 0) ≤ n) = (of_nat (2 ^ (LENGTH('l) -
> Suc 0)) ≤ of_nat n)) 
> SMT: Trying prover "rules" 
> SMT: Goal: "mp"
>        assumptions:
>          ¬ (∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨ (v1
> ≤ v0) = (of_nat v1 ≤ of_nat v0)) ∨
>          ¬ n < 2 ^ LENGTH('l) ∨
>          ¬ 2 ^ (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l) ∨
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) = (of_nat (2 ^ (LENGTH('l) -
> Suc 0)) ≤ of_nat n)
>          (¬ (∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨
> (v1 ≤ v0) = (of_nat v1 ≤ of_nat v0)) ∨
>           ¬ n < 2 ^ LENGTH('l) ∨
>           ¬ 2 ^ (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l) ∨
>           (2 ^ (LENGTH('l) - Suc 0) ≤ n) = (of_nat (2 ^ (LENGTH('l) -
> Suc 0)) ≤ of_nat n)) =
>          (¬ (∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨
> (v1 ≤ v0) = (of_nat v1 ≤ of_nat v0)) ∨
>           ¬ n < 2 ^ LENGTH('l) ∨
>           ¬ 2 ^ (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l) ∨
>           (2 ^ (LENGTH('l) - Suc 0) ≤ n) = (of_nat (2 ^ (LENGTH('l) -
> Suc 0)) ≤ of_nat n))
>        proposition:
>          ¬ (∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨ (v1
> ≤ v0) = (of_nat v1 ≤ of_nat v0)) ∨
>          ¬ n < 2 ^ LENGTH('l) ∨
>          ¬ 2 ^ (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l) ∨
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) = (of_nat (2 ^ (LENGTH('l) -
> Suc 0)) ≤ of_nat n) 
> SMT: Goal: "rewrite"
>        proposition:
>          ((a__ ≤ ) = (of_nat a__ ≤ of_nat )) = ((a__ ≤ ) = (of_nat a__
> ≤ of_nat )) 
> SMT: Trying prover "rules" 
> SMT: Goal: "monotonicity"
>        assumptions:
>          (( ≤ a__) = (of_nat  ≤ of_nat a__)) = (( ≤ a__) = (of_nat  ≤
> of_nat a__))
>        proposition:
>          (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l) ⟶ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) =
>          (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l) ⟶ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) 
> SMT: Trying prover "basic" 
> SMT: Goal: "rewrite"
>        proposition:
>          (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l) ⟶ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) =
>          (¬ (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l)) ∨ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) 
> SMT: Trying prover "rules" 
> SMT: Goal: "trans"
>        assumptions:
>          (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l) ⟶ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) =
>          (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l) ⟶ ( ≤ a__) =
> (of_nat  ≤ of_nat a__))
>          (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l) ⟶ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) =
>          (¬ (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l)) ∨ ( ≤ a__) =
> (of_nat  ≤ of_nat a__))
>        proposition:
>          (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l) ⟶ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) =
>          (¬ (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l)) ∨ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) 
> SMT: Goal: "quant-intro"
>        assumptions:
>          (?a3 < 2 ^ LENGTH('l) ∧ ?b2 < 2 ^ LENGTH('l) ⟶ (?b2 ≤ ?a3) =
> (of_nat ?b2 ≤ of_nat ?a3)) =
>          (¬ (?a3 < 2 ^ LENGTH('l) ∧ ?b2 < 2 ^ LENGTH('l)) ∨ (?b2 ≤ ?a3)
> = (of_nat ?b2 ≤ of_nat ?a3))
>        proposition:
>          (∀v0 v1. v0 < 2 ^ LENGTH('l) ∧ v1 < 2 ^ LENGTH('l) ⟶ (v1 ≤ v0)
> = (of_nat v1 ≤ of_nat v0)) =
>          (∀v0 v1. ¬ (v0 < 2 ^ LENGTH('l) ∧ v1 < 2 ^ LENGTH('l)) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0)) 
> SMT: Goal: "mp"
>        assumptions:
>          ∀v0 v1. v0 < 2 ^ LENGTH('l) ∧ v1 < 2 ^ LENGTH('l) ⟶ (v1 ≤ v0)
> = (of_nat v1 ≤ of_nat v0)
>          (∀v0 v1. v0 < 2 ^ LENGTH('l) ∧ v1 < 2 ^ LENGTH('l) ⟶ (v1 ≤ v0)
> = (of_nat v1 ≤ of_nat v0)) =
>          (∀v0 v1. ¬ (v0 < 2 ^ LENGTH('l) ∧ v1 < 2 ^ LENGTH('l)) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0))
>        proposition:
>          ∀v0 v1. ¬ (v0 < 2 ^ LENGTH('l) ∧ v1 < 2 ^ LENGTH('l)) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0) 
> SMT: Goal: "refl"
>        proposition:
>          (¬ (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l)) ∨ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) =
>          (¬ (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l)) ∨ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) 
> SMT: Goal: "nnf-pos"
>        assumptions:
>          (¬ (?a1 < 2 ^ LENGTH('l) ∧ ?b < 2 ^ LENGTH('l)) ∨ (?b ≤ ?a1) =
> (of_nat ?b ≤ of_nat ?a1)) =
>          (¬ (?a1 < 2 ^ LENGTH('l) ∧ ?b < 2 ^ LENGTH('l)) ∨ (?b ≤ ?a1) =
> (of_nat ?b ≤ of_nat ?a1))
>        proposition:
>          (∀v0 v1. ¬ (v0 < 2 ^ LENGTH('l) ∧ v1 < 2 ^ LENGTH('l)) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0)) =
>          (∀v0 v1. ¬ (v0 < 2 ^ LENGTH('l) ∧ v1 < 2 ^ LENGTH('l)) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0)) 
> SMT: Trying prover "prop" 
> SMT: Goal: "mp~"
>        assumptions:
>          ∀v0 v1. ¬ (v0 < 2 ^ LENGTH('l) ∧ v1 < 2 ^ LENGTH('l)) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0)
>          (∀v0 v1. ¬ (v0 < 2 ^ LENGTH('l) ∧ v1 < 2 ^ LENGTH('l)) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0)) =
>          (∀v0 v1. ¬ (v0 < 2 ^ LENGTH('l) ∧ v1 < 2 ^ LENGTH('l)) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0))
>        proposition:
>          ∀v0 v1. ¬ (v0 < 2 ^ LENGTH('l) ∧ v1 < 2 ^ LENGTH('l)) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0) 
> SMT: Goal: "rewrite"
>        proposition:
>          (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l)) = (¬ (¬ a__ < 2 ^
> LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l))) 
> SMT: Trying prover "rules" 
> SMT: Goal: "monotonicity"
>        assumptions:
>          (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l)) = (¬ (¬ a__ < 2 ^
> LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l)))
>        proposition:
>          (¬ (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l))) =
>          (¬ ¬ (¬ a__ < 2 ^ LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l))) 
> SMT: Trying prover "basic" 
> SMT: Goal: "rewrite"
>        proposition:
>          (¬ ¬ (¬ a__ < 2 ^ LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l))) =
>          (¬ a__ < 2 ^ LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l)) 
> SMT: Trying prover "rules" 
> SMT: Goal: "trans"
>        assumptions:
>          (¬ (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l))) =
>          (¬ ¬ (¬ a__ < 2 ^ LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l)))
>          (¬ ¬ (¬ a__ < 2 ^ LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l))) =
>          (¬ a__ < 2 ^ LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l))
>        proposition:
>          (¬ (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l))) = (¬ a__ < 2 ^
> LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l)) 
> SMT: Goal: "monotonicity"
>        assumptions:
>          (¬ (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l))) = (¬ a__ < 2 ^
> LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l))
>        proposition:
>          (¬ (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l)) ∨ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) =
>          ((¬ a__ < 2 ^ LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l)) ∨ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) 
> SMT: Trying prover "basic" 
> SMT: Goal: "rewrite"
>        proposition:
>          ((¬ a__ < 2 ^ LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l)) ∨ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) =
>          (¬ a__ < 2 ^ LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l) ∨ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) 
> SMT: Trying prover "rules" 
> SMT: Trying prover "conj_disj_perm" 
> SMT: Goal: "trans"
>        assumptions:
>          (¬ (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l)) ∨ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) =
>          ((¬ a__ < 2 ^ LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l)) ∨ ( ≤ a__) =
> (of_nat  ≤ of_nat a__))
>          ((¬ a__ < 2 ^ LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l)) ∨ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) =
>          (¬ a__ < 2 ^ LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l) ∨ ( ≤ a__) =
> (of_nat  ≤ of_nat a__))
>        proposition:
>          (¬ (a__ < 2 ^ LENGTH('l) ∧  < 2 ^ LENGTH('l)) ∨ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) =
>          (¬ a__ < 2 ^ LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l) ∨ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) 
> SMT: Goal: "quant-intro"
>        assumptions:
>          (¬ (?a6 < 2 ^ LENGTH('l) ∧ ?b5 < 2 ^ LENGTH('l)) ∨ (?b5 ≤ ?a6)
> = (of_nat ?b5 ≤ of_nat ?a6)) =
>          (¬ ?a6 < 2 ^ LENGTH('l) ∨ ¬ ?b5 < 2 ^ LENGTH('l) ∨ (?b5 ≤ ?a6)
> = (of_nat ?b5 ≤ of_nat ?a6))
>        proposition:
>          (∀v0 v1. ¬ (v0 < 2 ^ LENGTH('l) ∧ v1 < 2 ^ LENGTH('l)) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0)) =
>          (∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0)) 
> SMT: Goal: "mp"
>        assumptions:
>          ∀v0 v1. ¬ (v0 < 2 ^ LENGTH('l) ∧ v1 < 2 ^ LENGTH('l)) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0)
>          (∀v0 v1. ¬ (v0 < 2 ^ LENGTH('l) ∧ v1 < 2 ^ LENGTH('l)) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0)) =
>          (∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0))
>        proposition:
>          ∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0) 
> SMT: Goal: "refl"
>        proposition:
>          (¬ a__ < 2 ^ LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l) ∨ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) =
>          (¬ a__ < 2 ^ LENGTH('l) ∨ ¬  < 2 ^ LENGTH('l) ∨ ( ≤ a__) =
> (of_nat  ≤ of_nat a__)) 
> SMT: Goal: "quant-intro"
>        assumptions:
>          (¬ ?a1 < 2 ^ LENGTH('l) ∨ ¬ ?b < 2 ^ LENGTH('l) ∨ (?b ≤ ?a1) =
> (of_nat ?b ≤ of_nat ?a1)) =
>          (¬ ?a1 < 2 ^ LENGTH('l) ∨ ¬ ?b < 2 ^ LENGTH('l) ∨ (?b ≤ ?a1) =
> (of_nat ?b ≤ of_nat ?a1))
>        proposition:
>          (∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0)) =
>          (∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0)) 
> SMT: Goal: "mp"
>        assumptions:
>          ∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0)
>          (∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0)) =
>          (∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0))
>        proposition:
>          ∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0) 
> SMT: Goal: "quant-inst"
>        proposition:
>          ¬ (∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1) ∨
>          ¬ n < 2 ^ (LENGTH('l) - Suc 0) ∨ n < 2 ^ LENGTH('l) 
> SMT: Goal: "rewrite"
>        proposition:
>          (¬ (∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1) ∨
>           ¬ n < 2 ^ (LENGTH('l) - Suc 0) ∨ n < 2 ^ LENGTH('l)) =
>          (¬ (∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1) ∨
>           ¬ n < 2 ^ (LENGTH('l) - Suc 0) ∨ n < 2 ^ LENGTH('l)) 
> SMT: Trying prover "rules" 
> SMT: Goal: "mp"
>        assumptions:
>          ¬ (∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1) ∨
>          ¬ n < 2 ^ (LENGTH('l) - Suc 0) ∨ n < 2 ^ LENGTH('l)
>          (¬ (∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1) ∨
>           ¬ n < 2 ^ (LENGTH('l) - Suc 0) ∨ n < 2 ^ LENGTH('l)) =
>          (¬ (∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1) ∨
>           ¬ n < 2 ^ (LENGTH('l) - Suc 0) ∨ n < 2 ^ LENGTH('l))
>        proposition:
>          ¬ (∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1) ∨
>          ¬ n < 2 ^ (LENGTH('l) - Suc 0) ∨ n < 2 ^ LENGTH('l) 
> SMT: Goal: "rewrite"
>        proposition:
>          (a__ < 2 ^ ( - Suc 0) ⟶ a__ < 2 ^ ) = (¬ a__ < 2 ^ ( - Suc 0)
> ∨ a__ < 2 ^ ) 
> SMT: Trying prover "rules" 
> SMT: Goal: "quant-intro"
>        assumptions:
>          (?a1 < 2 ^ (?b - Suc 0) ⟶ ?a1 < 2 ^ ?b) = (¬ ?a1 < 2 ^ (?b -
> Suc 0) ∨ ?a1 < 2 ^ ?b)
>        proposition:
>          (∀v0 v1. v0 < 2 ^ (v1 - Suc 0) ⟶ v0 < 2 ^ v1) = (∀v0 v1. ¬ v0
> < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1) 
> SMT: Goal: "mp"
>        assumptions:
>          ∀v0 v1. v0 < 2 ^ (v1 - Suc 0) ⟶ v0 < 2 ^ v1
>          (∀v0 v1. v0 < 2 ^ (v1 - Suc 0) ⟶ v0 < 2 ^ v1) = (∀v0 v1. ¬ v0
> < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1)
>        proposition:
>          ∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1 
> SMT: Goal: "refl"
>        proposition:
>          (¬ a__ < 2 ^ ( - Suc 0) ∨ a__ < 2 ^ ) = (¬ a__ < 2 ^ ( - Suc
> 0) ∨ a__ < 2 ^ ) 
> SMT: Goal: "nnf-pos"
>        assumptions:
>          (¬ ?a1 < 2 ^ (?b - Suc 0) ∨ ?a1 < 2 ^ ?b) = (¬ ?a1 < 2 ^ (?b -
> Suc 0) ∨ ?a1 < 2 ^ ?b)
>        proposition:
>          (∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1) = (∀v0 v1. ¬
> v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1) 
> SMT: Trying prover "prop" 
> SMT: Goal: "mp~"
>        assumptions:
>          ∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1
>          (∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1) = (∀v0 v1. ¬
> v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1)
>        proposition:
>          ∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1 
> SMT: Goal: "refl"
>        proposition:
>          (¬ a__ < 2 ^ ( - Suc 0) ∨ a__ < 2 ^ ) = (¬ a__ < 2 ^ ( - Suc
> 0) ∨ a__ < 2 ^ ) 
> SMT: Goal: "quant-intro"
>        assumptions:
>          (¬ ?a1 < 2 ^ (?b - Suc 0) ∨ ?a1 < 2 ^ ?b) = (¬ ?a1 < 2 ^ (?b -
> Suc 0) ∨ ?a1 < 2 ^ ?b)
>        proposition:
>          (∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1) = (∀v0 v1. ¬
> v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1) 
> SMT: Goal: "mp"
>        assumptions:
>          ∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1
>          (∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1) = (∀v0 v1. ¬
> v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1)
>        proposition:
>          ∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1 
> SMT: Goal: "rewrite"
>        proposition:
>          (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n)) ⟶
> False) =
>          (¬ (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int
> n)))) 
> SMT: Trying prover "rules" 
> SMT: Goal: "monotonicity"
>        assumptions:
>          (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n)) ⟶
> False) =
>          (¬ (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n))))
>        proposition:
>          (¬ (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n)) ⟶
> False)) =
>          (¬ ¬ (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int
> n)))) 
> SMT: Trying prover "basic" 
> SMT: Goal: "rewrite"
>        proposition:
>          (¬ ¬ (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int
> n)))) =
>          (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n))) 
> SMT: Trying prover "rules" 
> SMT: Goal: "trans"
>        assumptions:
>          (¬ (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n)) ⟶
> False)) =
>          (¬ ¬ (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int
> n))))
>          (¬ ¬ (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int
> n)))) =
>          (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n)))
>        proposition:
>          (¬ (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n)) ⟶
> False)) =
>          (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n))) 
> SMT: Goal: "mp"
>        assumptions:
>          ¬ (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n)) ⟶
> False)
>          (¬ (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n)) ⟶
> False)) =
>          (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n)))
>        proposition:
>          n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n)) 
> SMT: Goal: "and-elim"
>        assumptions:
>          n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n))
>        proposition:
>          n < 2 ^ (LENGTH('l) - Suc 0) 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          ¬ (∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1) ∨
>          ¬ n < 2 ^ (LENGTH('l) - Suc 0) ∨ n < 2 ^ LENGTH('l)
>          ∀v0 v1. ¬ v0 < 2 ^ (v1 - Suc 0) ∨ v0 < 2 ^ v1
>          n < 2 ^ (LENGTH('l) - Suc 0)
>        proposition:
>          n < 2 ^ LENGTH('l) 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          ¬ (∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨ (v1
> ≤ v0) = (of_nat v1 ≤ of_nat v0)) ∨
>          ¬ n < 2 ^ LENGTH('l) ∨
>          ¬ 2 ^ (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l) ∨
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) = (of_nat (2 ^ (LENGTH('l) -
> Suc 0)) ≤ of_nat n)
>          ∀v0 v1. ¬ v0 < 2 ^ LENGTH('l) ∨ ¬ v1 < 2 ^ LENGTH('l) ∨ (v1 ≤
> v0) = (of_nat v1 ≤ of_nat v0)
>          n < 2 ^ LENGTH('l)
>        proposition:
>          ¬ 2 ^ (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l) ∨
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) = (of_nat (2 ^ (LENGTH('l) -
> Suc 0)) ≤ of_nat n) 
> SMT: Goal: "def-axiom"
>        proposition:
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) ≠ (of_nat (2 ^ (LENGTH('l) -
> Suc 0)) ≤ of_nat n) ∨
>          2 ^ (LENGTH('l) - Suc 0) ≤ n ∨ ¬ of_nat (2 ^ (LENGTH('l) - Suc
> 0)) ≤ of_nat n 
> SMT: Trying prover "rules" 
> SMT: Goal: "def-axiom"
>        proposition:
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) ≠ (¬ n < 2 ^ (LENGTH('l) - Suc
> 0)) ∨
>          ¬ 2 ^ (LENGTH('l) - Suc 0) ≤ n ∨ ¬ n < 2 ^ (LENGTH('l) - Suc
> 0) 
> SMT: Trying prover "rules" 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) ≠ (¬ n < 2 ^ (LENGTH('l) - Suc
> 0)) ∨
>          ¬ 2 ^ (LENGTH('l) - Suc 0) ≤ n ∨ ¬ n < 2 ^ (LENGTH('l) - Suc
> 0)
>          n < 2 ^ (LENGTH('l) - Suc 0)
>        proposition:
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) ≠ (¬ n < 2 ^ (LENGTH('l) - Suc
> 0)) ∨
>          ¬ 2 ^ (LENGTH('l) - Suc 0) ≤ n 
> SMT: Goal: "quant-inst"
>        proposition:
>          ¬ (∀v0 v1. (v0 ≤ v1) = (¬ v1 < v0)) ∨
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) = (¬ n < 2 ^ (LENGTH('l) - Suc
> 0)) 
> SMT: Goal: "rewrite"
>        proposition:
>          ((a__ ≤ ) = (¬  < a__)) = ((a__ ≤ ) = (¬  < a__)) 
> SMT: Trying prover "rules" 
> SMT: Goal: "quant-intro"
>        assumptions:
>          ((?a1 ≤ ?b) = (¬ ?b < ?a1)) = ((?a1 ≤ ?b) = (¬ ?b < ?a1))
>        proposition:
>          (∀v0 v1. (v0 ≤ v1) = (¬ v1 < v0)) = (∀v0 v1. (v0 ≤ v1) = (¬ v1
> < v0)) 
> SMT: Goal: "mp"
>        assumptions:
>          ∀v0 v1. (v0 ≤ v1) = (¬ v1 < v0)
>          (∀v0 v1. (v0 ≤ v1) = (¬ v1 < v0)) = (∀v0 v1. (v0 ≤ v1) = (¬ v1
> < v0))
>        proposition:
>          ∀v0 v1. (v0 ≤ v1) = (¬ v1 < v0) 
> SMT: Goal: "refl"
>        proposition:
>          ((a__ ≤ ) = (¬  < a__)) = ((a__ ≤ ) = (¬  < a__)) 
> SMT: Goal: "nnf-pos"
>        assumptions:
>          ((?a1 ≤ ?b) = (¬ ?b < ?a1)) = ((?a1 ≤ ?b) = (¬ ?b < ?a1))
>        proposition:
>          (∀v0 v1. (v0 ≤ v1) = (¬ v1 < v0)) = (∀v0 v1. (v0 ≤ v1) = (¬ v1
> < v0)) 
> SMT: Trying prover "prop" 
> SMT: Goal: "mp~"
>        assumptions:
>          ∀v0 v1. (v0 ≤ v1) = (¬ v1 < v0)
>          (∀v0 v1. (v0 ≤ v1) = (¬ v1 < v0)) = (∀v0 v1. (v0 ≤ v1) = (¬ v1
> < v0))
>        proposition:
>          ∀v0 v1. (v0 ≤ v1) = (¬ v1 < v0) 
> SMT: Goal: "refl"
>        proposition:
>          ((a__ ≤ ) = (¬  < a__)) = ((a__ ≤ ) = (¬  < a__)) 
> SMT: Goal: "quant-intro"
>        assumptions:
>          ((?a1 ≤ ?b) = (¬ ?b < ?a1)) = ((?a1 ≤ ?b) = (¬ ?b < ?a1))
>        proposition:
>          (∀v0 v1. (v0 ≤ v1) = (¬ v1 < v0)) = (∀v0 v1. (v0 ≤ v1) = (¬ v1
> < v0)) 
> SMT: Goal: "mp"
>        assumptions:
>          ∀v0 v1. (v0 ≤ v1) = (¬ v1 < v0)
>          (∀v0 v1. (v0 ≤ v1) = (¬ v1 < v0)) = (∀v0 v1. (v0 ≤ v1) = (¬ v1
> < v0))
>        proposition:
>          ∀v0 v1. (v0 ≤ v1) = (¬ v1 < v0) 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          ¬ (∀v0 v1. (v0 ≤ v1) = (¬ v1 < v0)) ∨
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) = (¬ n < 2 ^ (LENGTH('l) - Suc
> 0))
>          ∀v0 v1. (v0 ≤ v1) = (¬ v1 < v0)
>        proposition:
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) = (¬ n < 2 ^ (LENGTH('l) - Suc
> 0)) 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) ≠ (¬ n < 2 ^ (LENGTH('l) - Suc
> 0)) ∨ ¬ 2 ^ (LENGTH('l) - Suc 0) ≤ n
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) = (¬ n < 2 ^ (LENGTH('l) - Suc
> 0))
>        proposition:
>          ¬ 2 ^ (LENGTH('l) - Suc 0) ≤ n 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) ≠ (of_nat (2 ^ (LENGTH('l) -
> Suc 0)) ≤ of_nat n) ∨
>          2 ^ (LENGTH('l) - Suc 0) ≤ n ∨ ¬ of_nat (2 ^ (LENGTH('l) - Suc
> 0)) ≤ of_nat n
>          ¬ 2 ^ (LENGTH('l) - Suc 0) ≤ n
>        proposition:
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) ≠ (of_nat (2 ^ (LENGTH('l) -
> Suc 0)) ≤ of_nat n) ∨
>          ¬ of_nat (2 ^ (LENGTH('l) - Suc 0)) ≤ of_nat n 
> SMT: Goal: "def-axiom"
>        proposition:
>          msb (word_of_int (int n)) ≠ (2 ^ (LENGTH('l) - Suc 0) ≤
> word_of_int (int n)) ∨
>          ¬ msb (word_of_int (int n)) ∨ 2 ^ (LENGTH('l) - Suc 0) ≤
> word_of_int (int n) 
> SMT: Trying prover "rules" 
> SMT: Goal: "mp"
>        assumptions:
>          ¬ (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n)) ⟶
> False)
>          (¬ (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n)) ⟶
> False)) =
>          (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n)))
>        proposition:
>          n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n)) 
> SMT: Goal: "and-elim"
>        assumptions:
>          n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n))
>        proposition:
>          msb (word_of_int (int n)) 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          msb (word_of_int (int n)) ≠ (2 ^ (LENGTH('l) - Suc 0) ≤
> word_of_int (int n)) ∨
>          ¬ msb (word_of_int (int n)) ∨ 2 ^ (LENGTH('l) - Suc 0) ≤
> word_of_int (int n)
>          msb (word_of_int (int n))
>        proposition:
>          msb (word_of_int (int n)) ≠ (2 ^ (LENGTH('l) - Suc 0) ≤
> word_of_int (int n)) ∨
>          2 ^ (LENGTH('l) - Suc 0) ≤ word_of_int (int n) 
> SMT: Goal: "quant-inst"
>        proposition:
>          ¬ (∀v0. msb v0 = (2 ^ (LENGTH('l) - Suc 0) ≤ v0)) ∨
>          msb (word_of_int (int n)) = (2 ^ (LENGTH('l) - Suc 0) ≤
> word_of_int (int n)) 
> SMT: Goal: "rewrite"
>        proposition:
>          (msb  = (2 ^ (LENGTH('l) - Suc 0) ≤ )) = (msb  = (2 ^
> (LENGTH('l) - Suc 0) ≤ )) 
> SMT: Trying prover "rules" 
> SMT: Goal: "quant-intro"
>        assumptions:
>          (msb ?a = (2 ^ (LENGTH('l) - Suc 0) ≤ ?a)) = (msb ?a = (2 ^
> (LENGTH('l) - Suc 0) ≤ ?a))
>        proposition:
>          (∀v0. msb v0 = (2 ^ (LENGTH('l) - Suc 0) ≤ v0)) = (∀v0. msb v0
> = (2 ^ (LENGTH('l) - Suc 0) ≤ v0)) 
> SMT: Goal: "mp"
>        assumptions:
>          ∀v0. msb v0 = (2 ^ (LENGTH('l) - Suc 0) ≤ v0)
>          (∀v0. msb v0 = (2 ^ (LENGTH('l) - Suc 0) ≤ v0)) = (∀v0. msb v0
> = (2 ^ (LENGTH('l) - Suc 0) ≤ v0))
>        proposition:
>          ∀v0. msb v0 = (2 ^ (LENGTH('l) - Suc 0) ≤ v0) 
> SMT: Goal: "refl"
>        proposition:
>          (msb  = (2 ^ (LENGTH('l) - Suc 0) ≤ )) = (msb  = (2 ^
> (LENGTH('l) - Suc 0) ≤ )) 
> SMT: Goal: "nnf-pos"
>        assumptions:
>          (msb ?a = (2 ^ (LENGTH('l) - Suc 0) ≤ ?a)) = (msb ?a = (2 ^
> (LENGTH('l) - Suc 0) ≤ ?a))
>        proposition:
>          (∀v0. msb v0 = (2 ^ (LENGTH('l) - Suc 0) ≤ v0)) = (∀v0. msb v0
> = (2 ^ (LENGTH('l) - Suc 0) ≤ v0)) 
> SMT: Trying prover "prop" 
> SMT: Goal: "mp~"
>        assumptions:
>          ∀v0. msb v0 = (2 ^ (LENGTH('l) - Suc 0) ≤ v0)
>          (∀v0. msb v0 = (2 ^ (LENGTH('l) - Suc 0) ≤ v0)) = (∀v0. msb v0
> = (2 ^ (LENGTH('l) - Suc 0) ≤ v0))
>        proposition:
>          ∀v0. msb v0 = (2 ^ (LENGTH('l) - Suc 0) ≤ v0) 
> SMT: Goal: "refl"
>        proposition:
>          (msb  = (2 ^ (LENGTH('l) - Suc 0) ≤ )) = (msb  = (2 ^
> (LENGTH('l) - Suc 0) ≤ )) 
> SMT: Goal: "quant-intro"
>        assumptions:
>          (msb ?a = (2 ^ (LENGTH('l) - Suc 0) ≤ ?a)) = (msb ?a = (2 ^
> (LENGTH('l) - Suc 0) ≤ ?a))
>        proposition:
>          (∀v0. msb v0 = (2 ^ (LENGTH('l) - Suc 0) ≤ v0)) = (∀v0. msb v0
> = (2 ^ (LENGTH('l) - Suc 0) ≤ v0)) 
> SMT: Goal: "mp"
>        assumptions:
>          ∀v0. msb v0 = (2 ^ (LENGTH('l) - Suc 0) ≤ v0)
>          (∀v0. msb v0 = (2 ^ (LENGTH('l) - Suc 0) ≤ v0)) = (∀v0. msb v0
> = (2 ^ (LENGTH('l) - Suc 0) ≤ v0))
>        proposition:
>          ∀v0. msb v0 = (2 ^ (LENGTH('l) - Suc 0) ≤ v0) 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          ¬ (∀v0. msb v0 = (2 ^ (LENGTH('l) - Suc 0) ≤ v0)) ∨
>          msb (word_of_int (int n)) = (2 ^ (LENGTH('l) - Suc 0) ≤
> word_of_int (int n))
>          ∀v0. msb v0 = (2 ^ (LENGTH('l) - Suc 0) ≤ v0)
>        proposition:
>          msb (word_of_int (int n)) = (2 ^ (LENGTH('l) - Suc 0) ≤
> word_of_int (int n)) 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          msb (word_of_int (int n)) ≠ (2 ^ (LENGTH('l) - Suc 0) ≤
> word_of_int (int n)) ∨
>          2 ^ (LENGTH('l) - Suc 0) ≤ word_of_int (int n)
>          msb (word_of_int (int n)) = (2 ^ (LENGTH('l) - Suc 0) ≤
> word_of_int (int n))
>        proposition:
>          2 ^ (LENGTH('l) - Suc 0) ≤ word_of_int (int n) 
> SMT: Goal: "quant-inst"
>        proposition:
>          ¬ (∀v0. 2 ^ v0 = of_nat (2 ^ v0)) ∨ 2 ^ (LENGTH('l) - Suc 0) =
> of_nat (2 ^ (LENGTH('l) - Suc 0)) 
> SMT: Goal: "refl"
>        proposition:
>          (2 ^  = of_nat (2 ^ )) = (2 ^  = of_nat (2 ^ )) 
> SMT: Goal: "nnf-pos"
>        assumptions:
>          (2 ^ ?a = of_nat (2 ^ ?a)) = (2 ^ ?a = of_nat (2 ^ ?a))
>        proposition:
>          (∀v0. 2 ^ v0 = of_nat (2 ^ v0)) = (∀v0. 2 ^ v0 = of_nat (2 ^
> v0)) 
> SMT: Trying prover "prop" 
> SMT: Goal: "mp~"
>        assumptions:
>          ∀v0. 2 ^ v0 = of_nat (2 ^ v0)
>          (∀v0. 2 ^ v0 = of_nat (2 ^ v0)) = (∀v0. 2 ^ v0 = of_nat (2 ^
> v0))
>        proposition:
>          ∀v0. 2 ^ v0 = of_nat (2 ^ v0) 
> SMT: Goal: "refl"
>        proposition:
>          (2 ^  = of_nat (2 ^ )) = (2 ^  = of_nat (2 ^ )) 
> SMT: Goal: "quant-intro"
>        assumptions:
>          (2 ^ ?a = of_nat (2 ^ ?a)) = (2 ^ ?a = of_nat (2 ^ ?a))
>        proposition:
>          (∀v0. 2 ^ v0 = of_nat (2 ^ v0)) = (∀v0. 2 ^ v0 = of_nat (2 ^
> v0)) 
> SMT: Goal: "mp"
>        assumptions:
>          ∀v0. 2 ^ v0 = of_nat (2 ^ v0)
>          (∀v0. 2 ^ v0 = of_nat (2 ^ v0)) = (∀v0. 2 ^ v0 = of_nat (2 ^
> v0))
>        proposition:
>          ∀v0. 2 ^ v0 = of_nat (2 ^ v0) 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          ¬ (∀v0. 2 ^ v0 = of_nat (2 ^ v0)) ∨ 2 ^ (LENGTH('l) - Suc 0) =
> of_nat (2 ^ (LENGTH('l) - Suc 0))
>          ∀v0. 2 ^ v0 = of_nat (2 ^ v0)
>        proposition:
>          2 ^ (LENGTH('l) - Suc 0) = of_nat (2 ^ (LENGTH('l) - Suc 0)) 
> SMT: Goal: "symm"
>        assumptions:
>          2 ^ (LENGTH('l) - Suc 0) = of_nat (2 ^ (LENGTH('l) - Suc 0))
>        proposition:
>          of_nat (2 ^ (LENGTH('l) - Suc 0)) = 2 ^ (LENGTH('l) - Suc 0) 
> SMT: Goal: "quant-inst"
>        proposition:
>          ¬ (∀v0. of_nat v0 = word_of_int (int v0)) ∨ of_nat n =
> word_of_int (int n) 
> SMT: Goal: "refl"
>        proposition:
>          (of_nat  = word_of_int (int )) = (of_nat  = word_of_int (int
> )) 
> SMT: Goal: "nnf-pos"
>        assumptions:
>          (of_nat ?a = word_of_int (int ?a)) = (of_nat ?a = word_of_int
> (int ?a))
>        proposition:
>          (∀v0. of_nat v0 = word_of_int (int v0)) = (∀v0. of_nat v0 =
> word_of_int (int v0)) 
> SMT: Trying prover "prop" 
> SMT: Goal: "mp~"
>        assumptions:
>          ∀v0. of_nat v0 = word_of_int (int v0)
>          (∀v0. of_nat v0 = word_of_int (int v0)) = (∀v0. of_nat v0 =
> word_of_int (int v0))
>        proposition:
>          ∀v0. of_nat v0 = word_of_int (int v0) 
> SMT: Goal: "refl"
>        proposition:
>          (of_nat  = word_of_int (int )) = (of_nat  = word_of_int (int
> )) 
> SMT: Goal: "quant-intro"
>        assumptions:
>          (of_nat ?a = word_of_int (int ?a)) = (of_nat ?a = word_of_int
> (int ?a))
>        proposition:
>          (∀v0. of_nat v0 = word_of_int (int v0)) = (∀v0. of_nat v0 =
> word_of_int (int v0)) 
> SMT: Goal: "mp"
>        assumptions:
>          ∀v0. of_nat v0 = word_of_int (int v0)
>          (∀v0. of_nat v0 = word_of_int (int v0)) = (∀v0. of_nat v0 =
> word_of_int (int v0))
>        proposition:
>          ∀v0. of_nat v0 = word_of_int (int v0) 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          ¬ (∀v0. of_nat v0 = word_of_int (int v0)) ∨ of_nat n =
> word_of_int (int n)
>          ∀v0. of_nat v0 = word_of_int (int v0)
>        proposition:
>          of_nat n = word_of_int (int n) 
> SMT: Goal: "monotonicity"
>        assumptions:
>          of_nat (2 ^ (LENGTH('l) - Suc 0)) = 2 ^ (LENGTH('l) - Suc 0)
>          of_nat n = word_of_int (int n)
>        proposition:
>          (of_nat (2 ^ (LENGTH('l) - Suc 0)) ≤ of_nat n) = (2 ^
> (LENGTH('l) - Suc 0) ≤ word_of_int (int n)) 
> SMT: Trying prover "basic" 
> SMT: Goal: "symm"
>        assumptions:
>          (of_nat (2 ^ (LENGTH('l) - Suc 0)) ≤ of_nat n) = (2 ^
> (LENGTH('l) - Suc 0) ≤ word_of_int (int n))
>        proposition:
>          (2 ^ (LENGTH('l) - Suc 0) ≤ word_of_int (int n)) = (of_nat (2
> ^ (LENGTH('l) - Suc 0)) ≤ of_nat n) 
> SMT: Goal: "mp"
>        assumptions:
>          2 ^ (LENGTH('l) - Suc 0) ≤ word_of_int (int n)
>          (2 ^ (LENGTH('l) - Suc 0) ≤ word_of_int (int n)) = (of_nat (2
> ^ (LENGTH('l) - Suc 0)) ≤ of_nat n)
>        proposition:
>          of_nat (2 ^ (LENGTH('l) - Suc 0)) ≤ of_nat n 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) ≠ (of_nat (2 ^ (LENGTH('l) -
> Suc 0)) ≤ of_nat n) ∨
>          ¬ of_nat (2 ^ (LENGTH('l) - Suc 0)) ≤ of_nat n
>          of_nat (2 ^ (LENGTH('l) - Suc 0)) ≤ of_nat n
>        proposition:
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) ≠ (of_nat (2 ^ (LENGTH('l) -
> Suc 0)) ≤ of_nat n) 
> SMT: Goal: "quant-inst"
>        proposition:
>          ¬ (∀v0 v1 v2. ¬ v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2) ∨
>          ¬ 2 ^ (LENGTH('l) - Suc 0) ≤ unat (word_of_int (int n)) ∨
>          ¬ unat (word_of_int (int n)) < 2 ^ LENGTH('l) ∨ 2 ^
> (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l) 
> SMT: Goal: "rewrite"
>        proposition:
>          (¬ (∀v0 v1 v2. ¬ v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2) ∨
>           ¬ 2 ^ (LENGTH('l) - Suc 0) ≤ unat (word_of_int (int n)) ∨
>           ¬ unat (word_of_int (int n)) < 2 ^ LENGTH('l) ∨ 2 ^
> (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l)) =
>          (¬ (∀v0 v1 v2. ¬ v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2) ∨
>           ¬ 2 ^ (LENGTH('l) - Suc 0) ≤ unat (word_of_int (int n)) ∨
>           ¬ unat (word_of_int (int n)) < 2 ^ LENGTH('l) ∨ 2 ^
> (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l)) 
> SMT: Trying prover "rules" 
> SMT: Goal: "mp"
>        assumptions:
>          ¬ (∀v0 v1 v2. ¬ v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2) ∨
>          ¬ 2 ^ (LENGTH('l) - Suc 0) ≤ unat (word_of_int (int n)) ∨
>          ¬ unat (word_of_int (int n)) < 2 ^ LENGTH('l) ∨ 2 ^
> (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l)
>          (¬ (∀v0 v1 v2. ¬ v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2) ∨
>           ¬ 2 ^ (LENGTH('l) - Suc 0) ≤ unat (word_of_int (int n)) ∨
>           ¬ unat (word_of_int (int n)) < 2 ^ LENGTH('l) ∨ 2 ^
> (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l)) =
>          (¬ (∀v0 v1 v2. ¬ v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2) ∨
>           ¬ 2 ^ (LENGTH('l) - Suc 0) ≤ unat (word_of_int (int n)) ∨
>           ¬ unat (word_of_int (int n)) < 2 ^ LENGTH('l) ∨ 2 ^
> (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l))
>        proposition:
>          ¬ (∀v0 v1 v2. ¬ v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2) ∨
>          ¬ 2 ^ (LENGTH('l) - Suc 0) ≤ unat (word_of_int (int n)) ∨
>          ¬ unat (word_of_int (int n)) < 2 ^ LENGTH('l) ∨ 2 ^
> (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l) 
> SMT: Goal: "rewrite"
>        proposition:
>          (a__ ≤ b__ ∧ b__ <  ⟶ a__ < ) = (¬ (a__ ≤ b__ ∧ b__ < ) ∨ a__
> < ) 
> SMT: Trying prover "rules" 
> SMT: Goal: "quant-intro"
>        assumptions:
>          (?a2 ≤ ?b1 ∧ ?b1 < ?c ⟶ ?a2 < ?c) = (¬ (?a2 ≤ ?b1 ∧ ?b1 < ?c)
> ∨ ?a2 < ?c)
>        proposition:
>          (∀v0 v1 v2. v0 ≤ v1 ∧ v1 < v2 ⟶ v0 < v2) = (∀v0 v1 v2. ¬ (v0 ≤
> v1 ∧ v1 < v2) ∨ v0 < v2) 
> SMT: Goal: "mp"
>        assumptions:
>          ∀v0 v1 v2. v0 ≤ v1 ∧ v1 < v2 ⟶ v0 < v2
>          (∀v0 v1 v2. v0 ≤ v1 ∧ v1 < v2 ⟶ v0 < v2) = (∀v0 v1 v2. ¬ (v0 ≤
> v1 ∧ v1 < v2) ∨ v0 < v2)
>        proposition:
>          ∀v0 v1 v2. ¬ (v0 ≤ v1 ∧ v1 < v2) ∨ v0 < v2 
> SMT: Goal: "refl"
>        proposition:
>          (¬ (a__ ≤ b__ ∧ b__ < ) ∨ a__ < ) = (¬ (a__ ≤ b__ ∧ b__ < ) ∨
> a__ < ) 
> SMT: Goal: "nnf-pos"
>        assumptions:
>          (¬ (?a2 ≤ ?b1 ∧ ?b1 < ?c) ∨ ?a2 < ?c) = (¬ (?a2 ≤ ?b1 ∧ ?b1 <
> ?c) ∨ ?a2 < ?c)
>        proposition:
>          (∀v0 v1 v2. ¬ (v0 ≤ v1 ∧ v1 < v2) ∨ v0 < v2) = (∀v0 v1 v2. ¬
> (v0 ≤ v1 ∧ v1 < v2) ∨ v0 < v2) 
> SMT: Trying prover "prop" 
> SMT: Goal: "mp~"
>        assumptions:
>          ∀v0 v1 v2. ¬ (v0 ≤ v1 ∧ v1 < v2) ∨ v0 < v2
>          (∀v0 v1 v2. ¬ (v0 ≤ v1 ∧ v1 < v2) ∨ v0 < v2) = (∀v0 v1 v2. ¬
> (v0 ≤ v1 ∧ v1 < v2) ∨ v0 < v2)
>        proposition:
>          ∀v0 v1 v2. ¬ (v0 ≤ v1 ∧ v1 < v2) ∨ v0 < v2 
> SMT: Goal: "rewrite"
>        proposition:
>          (a__ ≤ b__ ∧ b__ < ) = (¬ (¬ a__ ≤ b__ ∨ ¬ b__ < )) 
> SMT: Trying prover "rules" 
> SMT: Goal: "monotonicity"
>        assumptions:
>          (a__ ≤ b__ ∧ b__ < ) = (¬ (¬ a__ ≤ b__ ∨ ¬ b__ < ))
>        proposition:
>          (¬ (a__ ≤ b__ ∧ b__ < )) = (¬ ¬ (¬ a__ ≤ b__ ∨ ¬ b__ < )) 
> SMT: Trying prover "basic" 
> SMT: Goal: "rewrite"
>        proposition:
>          (¬ ¬ (¬ a__ ≤ b__ ∨ ¬ b__ < )) = (¬ a__ ≤ b__ ∨ ¬ b__ < ) 
> SMT: Trying prover "rules" 
> SMT: Goal: "trans"
>        assumptions:
>          (¬ (a__ ≤ b__ ∧ b__ < )) = (¬ ¬ (¬ a__ ≤ b__ ∨ ¬ b__ < ))
>          (¬ ¬ (¬ a__ ≤ b__ ∨ ¬ b__ < )) = (¬ a__ ≤ b__ ∨ ¬ b__ < )
>        proposition:
>          (¬ (a__ ≤ b__ ∧ b__ < )) = (¬ a__ ≤ b__ ∨ ¬ b__ < ) 
> SMT: Goal: "monotonicity"
>        assumptions:
>          (¬ (a__ ≤ b__ ∧ b__ < )) = (¬ a__ ≤ b__ ∨ ¬ b__ < )
>        proposition:
>          (¬ (a__ ≤ b__ ∧ b__ < ) ∨ a__ < ) = ((¬ a__ ≤ b__ ∨ ¬ b__ < )
> ∨ a__ < ) 
> SMT: Trying prover "basic" 
> SMT: Goal: "rewrite"
>        proposition:
>          ((¬ a__ ≤ b__ ∨ ¬ b__ < ) ∨ a__ < ) = (¬ a__ ≤ b__ ∨ ¬ b__
> <  ∨ a__ < ) 
> SMT: Trying prover "rules" 
> SMT: Trying prover "conj_disj_perm" 
> SMT: Goal: "trans"
>        assumptions:
>          (¬ (a__ ≤ b__ ∧ b__ < ) ∨ a__ < ) = ((¬ a__ ≤ b__ ∨ ¬ b__ < )
> ∨ a__ < )
>          ((¬ a__ ≤ b__ ∨ ¬ b__ < ) ∨ a__ < ) = (¬ a__ ≤ b__ ∨ ¬ b__
> <  ∨ a__ < )
>        proposition:
>          (¬ (a__ ≤ b__ ∧ b__ < ) ∨ a__ < ) = (¬ a__ ≤ b__ ∨ ¬ b__ <  ∨
> a__ < ) 
> SMT: Goal: "quant-intro"
>        assumptions:
>          (¬ (?a7 ≤ ?b6 ∧ ?b6 < ?c5) ∨ ?a7 < ?c5) = (¬ ?a7 ≤ ?b6 ∨ ¬ ?b6
> < ?c5 ∨ ?a7 < ?c5)
>        proposition:
>          (∀v0 v1 v2. ¬ (v0 ≤ v1 ∧ v1 < v2) ∨ v0 < v2) = (∀v0 v1 v2. ¬
> v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2) 
> SMT: Goal: "mp"
>        assumptions:
>          ∀v0 v1 v2. ¬ (v0 ≤ v1 ∧ v1 < v2) ∨ v0 < v2
>          (∀v0 v1 v2. ¬ (v0 ≤ v1 ∧ v1 < v2) ∨ v0 < v2) = (∀v0 v1 v2. ¬
> v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2)
>        proposition:
>          ∀v0 v1 v2. ¬ v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2 
> SMT: Goal: "refl"
>        proposition:
>          (¬ a__ ≤ b__ ∨ ¬ b__ <  ∨ a__ < ) = (¬ a__ ≤ b__ ∨ ¬ b__ <  ∨
> a__ < ) 
> SMT: Goal: "quant-intro"
>        assumptions:
>          (¬ ?a2 ≤ ?b1 ∨ ¬ ?b1 < ?c ∨ ?a2 < ?c) = (¬ ?a2 ≤ ?b1 ∨ ¬ ?b1 <
> ?c ∨ ?a2 < ?c)
>        proposition:
>          (∀v0 v1 v2. ¬ v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2) = (∀v0 v1 v2. ¬
> v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2) 
> SMT: Goal: "mp"
>        assumptions:
>          ∀v0 v1 v2. ¬ v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2
>          (∀v0 v1 v2. ¬ v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2) = (∀v0 v1 v2. ¬
> v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2)
>        proposition:
>          ∀v0 v1 v2. ¬ v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2 
> SMT: Goal: "quant-inst"
>        proposition:
>          ¬ (∀v0. unat v0 < 2 ^ LENGTH('l)) ∨ unat (word_of_int (int n))
> < 2 ^ LENGTH('l) 
> SMT: Goal: "refl"
>        proposition:
>          (unat  < 2 ^ LENGTH('l)) = (unat  < 2 ^ LENGTH('l)) 
> SMT: Goal: "nnf-pos"
>        assumptions:
>          (unat ?a < 2 ^ LENGTH('l)) = (unat ?a < 2 ^ LENGTH('l))
>        proposition:
>          (∀v0. unat v0 < 2 ^ LENGTH('l)) = (∀v0. unat v0 < 2 ^
> LENGTH('l)) 
> SMT: Trying prover "prop" 
> SMT: Goal: "mp~"
>        assumptions:
>          ∀v0. unat v0 < 2 ^ LENGTH('l)
>          (∀v0. unat v0 < 2 ^ LENGTH('l)) = (∀v0. unat v0 < 2 ^
> LENGTH('l))
>        proposition:
>          ∀v0. unat v0 < 2 ^ LENGTH('l) 
> SMT: Goal: "refl"
>        proposition:
>          (unat  < 2 ^ LENGTH('l)) = (unat  < 2 ^ LENGTH('l)) 
> SMT: Goal: "quant-intro"
>        assumptions:
>          (unat ?a < 2 ^ LENGTH('l)) = (unat ?a < 2 ^ LENGTH('l))
>        proposition:
>          (∀v0. unat v0 < 2 ^ LENGTH('l)) = (∀v0. unat v0 < 2 ^
> LENGTH('l)) 
> SMT: Goal: "mp"
>        assumptions:
>          ∀v0. unat v0 < 2 ^ LENGTH('l)
>          (∀v0. unat v0 < 2 ^ LENGTH('l)) = (∀v0. unat v0 < 2 ^
> LENGTH('l))
>        proposition:
>          ∀v0. unat v0 < 2 ^ LENGTH('l) 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          ¬ (∀v0. unat v0 < 2 ^ LENGTH('l)) ∨ unat (word_of_int (int n))
> < 2 ^ LENGTH('l)
>          ∀v0. unat v0 < 2 ^ LENGTH('l)
>        proposition:
>          unat (word_of_int (int n)) < 2 ^ LENGTH('l) 
> SMT: Goal: "def-axiom"
>        proposition:
>          msb (word_of_int (int n)) ≠ (2 ^ (LENGTH('l) - 1) ≤ unat
> (word_of_int (int n))) ∨
>          ¬ msb (word_of_int (int n)) ∨ 2 ^ (LENGTH('l) - 1) ≤ unat
> (word_of_int (int n)) 
> SMT: Trying prover "rules" 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          msb (word_of_int (int n)) ≠ (2 ^ (LENGTH('l) - 1) ≤ unat
> (word_of_int (int n))) ∨
>          ¬ msb (word_of_int (int n)) ∨ 2 ^ (LENGTH('l) - 1) ≤ unat
> (word_of_int (int n))
>          msb (word_of_int (int n))
>        proposition:
>          msb (word_of_int (int n)) ≠ (2 ^ (LENGTH('l) - 1) ≤ unat
> (word_of_int (int n))) ∨
>          2 ^ (LENGTH('l) - 1) ≤ unat (word_of_int (int n)) 
> SMT: Goal: "quant-inst"
>        proposition:
>          ¬ (∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0)) ∨
>          msb (word_of_int (int n)) = (2 ^ (LENGTH('l) - 1) ≤ unat
> (word_of_int (int n))) 
> SMT: Goal: "rewrite"
>        proposition:
>          (msb  = (2 ^ (LENGTH('l) - 1) ≤ unat )) = (msb  = (2 ^
> (LENGTH('l) - 1) ≤ unat )) 
> SMT: Trying prover "rules" 
> SMT: Goal: "quant-intro"
>        assumptions:
>          (msb ?a = (2 ^ (LENGTH('l) - 1) ≤ unat ?a)) = (msb ?a = (2 ^
> (LENGTH('l) - 1) ≤ unat ?a))
>        proposition:
>          (∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0)) =
>          (∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0)) 
> SMT: Goal: "mp"
>        assumptions:
>          ∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0)
>          (∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0)) = (∀v0. msb
> v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0))
>        proposition:
>          ∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0) 
> SMT: Goal: "refl"
>        proposition:
>          (msb  = (2 ^ (LENGTH('l) - 1) ≤ unat )) = (msb  = (2 ^
> (LENGTH('l) - 1) ≤ unat )) 
> SMT: Goal: "nnf-pos"
>        assumptions:
>          (msb ?a = (2 ^ (LENGTH('l) - 1) ≤ unat ?a)) = (msb ?a = (2 ^
> (LENGTH('l) - 1) ≤ unat ?a))
>        proposition:
>          (∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0)) =
>          (∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0)) 
> SMT: Trying prover "prop" 
> SMT: Goal: "mp~"
>        assumptions:
>          ∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0)
>          (∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0)) = (∀v0. msb
> v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0))
>        proposition:
>          ∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0) 
> SMT: Goal: "refl"
>        proposition:
>          (msb  = (2 ^ (LENGTH('l) - 1) ≤ unat )) = (msb  = (2 ^
> (LENGTH('l) - 1) ≤ unat )) 
> SMT: Goal: "quant-intro"
>        assumptions:
>          (msb ?a = (2 ^ (LENGTH('l) - 1) ≤ unat ?a)) = (msb ?a = (2 ^
> (LENGTH('l) - 1) ≤ unat ?a))
>        proposition:
>          (∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0)) =
>          (∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0)) 
> SMT: Goal: "mp"
>        assumptions:
>          ∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0)
>          (∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0)) = (∀v0. msb
> v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0))
>        proposition:
>          ∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0) 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          ¬ (∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0)) ∨
>          msb (word_of_int (int n)) = (2 ^ (LENGTH('l) - 1) ≤ unat
> (word_of_int (int n)))
>          ∀v0. msb v0 = (2 ^ (LENGTH('l) - 1) ≤ unat v0)
>        proposition:
>          msb (word_of_int (int n)) = (2 ^ (LENGTH('l) - 1) ≤ unat
> (word_of_int (int n))) 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          msb (word_of_int (int n)) ≠ (2 ^ (LENGTH('l) - 1) ≤ unat
> (word_of_int (int n))) ∨
>          2 ^ (LENGTH('l) - 1) ≤ unat (word_of_int (int n))
>          msb (word_of_int (int n)) = (2 ^ (LENGTH('l) - 1) ≤ unat
> (word_of_int (int n)))
>        proposition:
>          2 ^ (LENGTH('l) - 1) ≤ unat (word_of_int (int n)) 
> SMT: Goal: "monotonicity"
>        assumptions:
>          1 = Suc 0
>        proposition:
>          LENGTH('l) - 1 = LENGTH('l) - Suc 0 
> SMT: Trying prover "basic" 
> SMT: Goal: "monotonicity"
>        assumptions:
>          LENGTH('l) - 1 = LENGTH('l) - Suc 0
>        proposition:
>          2 ^ (LENGTH('l) - 1) = 2 ^ (LENGTH('l) - Suc 0) 
> SMT: Trying prover "basic" 
> SMT: Goal: "symm"
>        assumptions:
>          2 ^ (LENGTH('l) - 1) = 2 ^ (LENGTH('l) - Suc 0)
>        proposition:
>          2 ^ (LENGTH('l) - Suc 0) = 2 ^ (LENGTH('l) - 1) 
> SMT: Goal: "monotonicity"
>        assumptions:
>          2 ^ (LENGTH('l) - Suc 0) = 2 ^ (LENGTH('l) - 1)
>        proposition:
>          (2 ^ (LENGTH('l) - Suc 0) ≤ unat (word_of_int (int n))) =
>          (2 ^ (LENGTH('l) - 1) ≤ unat (word_of_int (int n))) 
> SMT: Trying prover "basic" 
> SMT: Goal: "symm"
>        assumptions:
>          (2 ^ (LENGTH('l) - Suc 0) ≤ unat (word_of_int (int n))) =
>          (2 ^ (LENGTH('l) - 1) ≤ unat (word_of_int (int n)))
>        proposition:
>          (2 ^ (LENGTH('l) - 1) ≤ unat (word_of_int (int n))) =
>          (2 ^ (LENGTH('l) - Suc 0) ≤ unat (word_of_int (int n))) 
> SMT: Goal: "mp"
>        assumptions:
>          2 ^ (LENGTH('l) - 1) ≤ unat (word_of_int (int n))
>          (2 ^ (LENGTH('l) - 1) ≤ unat (word_of_int (int n))) =
>          (2 ^ (LENGTH('l) - Suc 0) ≤ unat (word_of_int (int n)))
>        proposition:
>          2 ^ (LENGTH('l) - Suc 0) ≤ unat (word_of_int (int n)) 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          ¬ (∀v0 v1 v2. ¬ v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2) ∨
>          ¬ 2 ^ (LENGTH('l) - Suc 0) ≤ unat (word_of_int (int n)) ∨
>          ¬ unat (word_of_int (int n)) < 2 ^ LENGTH('l) ∨ 2 ^
> (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l)
>          ∀v0 v1 v2. ¬ v0 ≤ v1 ∨ ¬ v1 < v2 ∨ v0 < v2
>          unat (word_of_int (int n)) < 2 ^ LENGTH('l)
>          2 ^ (LENGTH('l) - Suc 0) ≤ unat (word_of_int (int n))
>        proposition:
>          2 ^ (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l) 
> SMT: Goal: "unit-resolution"
>        assumptions:
>          ¬ 2 ^ (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l) ∨
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) = (of_nat (2 ^ (LENGTH('l) -
> Suc 0)) ≤ of_nat n)
>          (2 ^ (LENGTH('l) - Suc 0) ≤ n) ≠ (of_nat (2 ^ (LENGTH('l) -
> Suc 0)) ≤ of_nat n)
>          2 ^ (LENGTH('l) - Suc 0) < 2 ^ LENGTH('l)
>        proposition:
>          False 
> SMT: Assertions:
>        ∀y x. (y ≤ x) = (¬ x < y)
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀a. msb a = (2 ^ (LENGTH('l) - Suc 0) ≤ a)
>        ∀w. msb w = (2 ^ (LENGTH('l) - 1) ≤ unat w)
>        ∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (y ≤ x) =
> (of_nat y ≤ of_nat x)
>        ∀a x. a < 2 ^ (x - Suc 0) ⟶ a < 2 ^ x
>        ∀x. unat x < 2 ^ LENGTH('l)
>        ∀n. of_nat n = word_of_int (int n)
>        ∀n. 2 ^ n = of_nat (2 ^ n)
>        ¬ (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n)) ⟶
> False) 
> SMT: Names:
>        sorts:
>          Nat$ = nat
>          Num$ = num
>          L_word$ = 'l word
>          L_itself$ = 'l itself
>        functions:
>          n$ = n
>          msb$ = msb
>          one$ = num.One
>          suc$ = Suc
>          bit0$ = num.Bit0
>          less$ = (<)
>          one$a = 1
>          type$ = TYPE('l)
>          unat$ = unat
>          zero$ = 0
>          less$a = (<)
>          minus$ = (-)
>          power$ = (^)
>          len_of$ = len_of
>          of_nat$ = of_nat
>          power$a = (^)
>          less_eq$ = (≤)
>          numeral$ = numeral
>          of_nat$a = int
>          less_eq$a = (≤)
>          numeral$a = numeral
>          word_of_int$ = word_of_int 
> SMT: Problem:
>        ; smt.random_seed=1 smt.refine_inj_axioms=false -T:20 -smt2
>        (set-option :produce-proofs true)
>        (declare-sort Nat$ 0)
>        (declare-sort Num$ 0)
>        (declare-sort L_word$ 0)
>        (declare-sort L_itself$ 0)
>        (declare-fun n$ () Nat$)
>        (declare-fun msb$ (L_word$) Bool)
>        (declare-fun one$ () Num$)
>        (declare-fun suc$ (Nat$) Nat$)
>        (declare-fun bit0$ (Num$) Num$)
>        (declare-fun less$ (Nat$ Nat$) Bool)
>        (declare-fun one$a () Nat$)
>        (declare-fun type$ () L_itself$)
>        (declare-fun unat$ (L_word$) Nat$)
>        (declare-fun zero$ () Nat$)
>        (declare-fun less$a (L_word$ L_word$) Bool)
>        (declare-fun minus$ (Nat$ Nat$) Nat$)
>        (declare-fun power$ (L_word$ Nat$) L_word$)
>        (declare-fun len_of$ (L_itself$) Nat$)
>        (declare-fun of_nat$ (Nat$) L_word$)
>        (declare-fun power$a (Nat$ Nat$) Nat$)
>        (declare-fun less_eq$ (Nat$ Nat$) Bool)
>        (declare-fun numeral$ (Num$) L_word$)
>        (declare-fun of_nat$a (Nat$) Int)
>        (declare-fun less_eq$a (L_word$ L_word$) Bool)
>        (declare-fun numeral$a (Num$) Nat$)
>        (declare-fun word_of_int$ (Int) L_word$)
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (= (less_eq$ ?v0 ?v1)
> (not (less$ ?v1 ?v0)))) :named a0))
>        (assert (! (forall ((?v0 L_word$) (?v1 L_word$) (?v2 L_word$))
> (=> (and (less_eq$a ?v0 ?v1) (less$a ?v1 ?v2)) (less$a ?v0 ?v2)))
> :named a1))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$)) (=> (and
> (less_eq$ ?v0 ?v1) (less$ ?v1 ?v2)) (less$ ?v0 ?v2))) :named a2))
>        (assert (! (forall ((?v0 L_word$)) (= (msb$ ?v0) (less_eq$a
> (power$ (numeral$ (bit0$ one$)) (minus$ (len_of$ type$) (suc$ zero$)))
> ?v0))) :named a3))
>        (assert (! (forall ((?v0 L_word$)) (= (msb$ ?v0) (less_eq$
> (power$a (numeral$a (bit0$ one$)) (minus$ (len_of$ type$) one$a))
> (unat$ ?v0)))) :named a4))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (and (less$ ?v0
> (power$a (numeral$a (bit0$ one$)) (len_of$ type$))) (less$ ?v1 (power$a
> (numeral$a (bit0$ one$)) (len_of$ type$)))) (= (less_eq$ ?v1 ?v0)
> (less_eq$a (of_nat$ ?v1) (of_nat$ ?v0))))) :named a5))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (less$ ?v0
> (power$a (numeral$a (bit0$ one$)) (minus$ ?v1 (suc$ zero$)))) (less$
> ?v0 (power$a (numeral$a (bit0$ one$)) ?v1)))) :named a6))
>        (assert (! (forall ((?v0 L_word$)) (less$ (unat$ ?v0) (power$a
> (numeral$a (bit0$ one$)) (len_of$ type$)))) :named a7))
>        (assert (! (forall ((?v0 Nat$)) (= (of_nat$ ?v0) (word_of_int$
> (of_nat$a ?v0)))) :named a8))
>        (assert (! (forall ((?v0 Nat$)) (= (power$ (numeral$ (bit0$
> one$)) ?v0) (of_nat$ (power$a (numeral$a (bit0$ one$)) ?v0)))) :named
> a9))
>        (assert (! (not (=> (and (less$ n$ (power$a (numeral$a (bit0$
> one$)) (minus$ (len_of$ type$) (suc$ zero$)))) (msb$ (word_of_int$
> (of_nat$a n$)))) false)) :named a10))
>        (check-sat)
>        (get-proof)
>         
> SMT: Invoking SMT solver "z3" ... 
> SMT: Assertions:
>        1 = Suc 0
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀x y z. x ≤ y ∧ y < z ⟶ x < z
>        ∀a. msb a = (2 ^ (LENGTH('l) - Suc 0) ≤ a)
>        ∀w. msb w = (2 ^ (LENGTH('l) - 1) ≤ unat w)
>        ∀x y. x < 2 ^ LENGTH('l) ∧ y < 2 ^ LENGTH('l) ⟶ (y ≤ x) =
> (of_nat y ≤ of_nat x)
>        ∀a x. a < 2 ^ (x - Suc 0) ⟶ a < 2 ^ x
>        ∀x. unat x < 2 ^ LENGTH('l)
>        ∀n. of_nat n = word_of_int (int n)
>        ∀n. 2 ^ n = of_nat (2 ^ n)
>        ¬ (n < 2 ^ (LENGTH('l) - Suc 0) ∧ msb (word_of_int (int n)) ⟶
> False) 
> SMT: Names:
>        sorts:
>          Nat$ = nat
>          Num$ = num
>          L_word$ = 'l word
>          L_itself$ = 'l itself
>        functions:
>          n$ = n
>          msb$ = msb
>          one$ = 1
>          suc$ = Suc
>          bit0$ = num.Bit0
>          less$ = (<)
>          one$a = num.One
>          type$ = TYPE('l)
>          unat$ = unat
>          zero$ = 0
>          less$a = (<)
>          minus$ = (-)
>          power$ = (^)
>          len_of$ = len_of
>          of_nat$ = of_nat
>          power$a = (^)
>          less_eq$ = (≤)
>          numeral$ = numeral
>          of_nat$a = int
>          less_eq$a = (≤)
>          numeral$a = numeral
>          word_of_int$ = word_of_int 
> SMT: Problem:
>        ; smt.random_seed=1 smt.refine_inj_axioms=false -T:20 -smt2
>        (set-option :produce-proofs true)
>        (declare-sort Nat$ 0)
>        (declare-sort Num$ 0)
>        (declare-sort L_word$ 0)
>        (declare-sort L_itself$ 0)
>        (declare-fun n$ () Nat$)
>        (declare-fun msb$ (L_word$) Bool)
>        (declare-fun one$ () Nat$)
>        (declare-fun suc$ (Nat$) Nat$)
>        (declare-fun bit0$ (Num$) Num$)
>        (declare-fun less$ (L_word$ L_word$) Bool)
>        (declare-fun one$a () Num$)
>        (declare-fun type$ () L_itself$)
>        (declare-fun unat$ (L_word$) Nat$)
>        (declare-fun zero$ () Nat$)
>        (declare-fun less$a (Nat$ Nat$) Bool)
>        (declare-fun minus$ (Nat$ Nat$) Nat$)
>        (declare-fun power$ (L_word$ Nat$) L_word$)
>        (declare-fun len_of$ (L_itself$) Nat$)
>        (declare-fun of_nat$ (Nat$) L_word$)
>        (declare-fun power$a (Nat$ Nat$) Nat$)
>        (declare-fun less_eq$ (L_word$ L_word$) Bool)
>        (declare-fun numeral$ (Num$) L_word$)
>        (declare-fun of_nat$a (Nat$) Int)
>        (declare-fun less_eq$a (Nat$ Nat$) Bool)
>        (declare-fun numeral$a (Num$) Nat$)
>        (declare-fun word_of_int$ (Int) L_word$)
>        (assert (! (= one$ (suc$ zero$)) :named a0))
>        (assert (! (forall ((?v0 L_word$) (?v1 L_word$) (?v2 L_word$))
> (=> (and (less_eq$ ?v0 ?v1) (less$ ?v1 ?v2)) (less$ ?v0 ?v2))) :named
> a1))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$) (?v2 Nat$)) (=> (and
> (less_eq$a ?v0 ?v1) (less$a ?v1 ?v2)) (less$a ?v0 ?v2))) :named a2))
>        (assert (! (forall ((?v0 L_word$)) (= (msb$ ?v0) (less_eq$
> (power$ (numeral$ (bit0$ one$a)) (minus$ (len_of$ type$) (suc$ zero$)))
> ?v0))) :named a3))
>        (assert (! (forall ((?v0 L_word$)) (= (msb$ ?v0) (less_eq$a
> (power$a (numeral$a (bit0$ one$a)) (minus$ (len_of$ type$) one$))
> (unat$ ?v0)))) :named a4))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (and (less$a ?v0
> (power$a (numeral$a (bit0$ one$a)) (len_of$ type$))) (less$a ?v1
> (power$a (numeral$a (bit0$ one$a)) (len_of$ type$)))) (= (less_eq$a ?v1
> ?v0) (less_eq$ (of_nat$ ?v1) (of_nat$ ?v0))))) :named a5))
>        (assert (! (forall ((?v0 Nat$) (?v1 Nat$)) (=> (less$a ?v0
> (power$a (numeral$a (bit0$ one$a)) (minus$ ?v1 (suc$ zero$)))) (less$a
> ?v0 (power$a (numeral$a (bit0$ one$a)) ?v1)))) :named a6))
>        (assert (! (forall ((?v0 L_word$)) (less$a (unat$ ?v0) (power$a
> (numeral$a (bit0$ one$a)) (len_of$ type$)))) :named a7))
>        (assert (! (forall ((?v0 Nat$)) (= (of_nat$ ?v0) (word_of_int$
> (of_nat$a ?v0)))) :