; Automatically generated by map2smt (set-logic HORN) (declare-datatypes ((treeOfInt 0) ) (((node-treeOfInt (data-treeOfInt Int) (left-treeOfInt treeOfInt) (right-treeOfInt treeOfInt)) (leaf-treeOfInt)))) (declare-datatypes ((listOfInt 0) ) (((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) (declare-fun len (listOfInt Int) Bool) (declare-fun mem (Int listOfInt Bool) Bool) (declare-fun nmax (Int Int Int) Bool) (declare-fun less (Int Int Bool) Bool) (declare-fun height (treeOfInt Int) Bool) (declare-fun tinsertall (treeOfInt listOfInt treeOfInt) Bool) (declare-fun tinsert (treeOfInt Int treeOfInt) Bool) (declare-fun plus (Int Int Int) Bool) (declare-fun tremove (treeOfInt Int treeOfInt) Bool) (declare-fun tremoveall (treeOfInt listOfInt treeOfInt) Bool) (declare-fun tcontains (treeOfInt Int Bool) Bool) (declare-fun leq (Int Int Bool) Bool) (declare-fun tmember (treeOfInt Int Bool) Bool) (declare-fun append (listOfInt listOfInt listOfInt) Bool) (declare-fun content (treeOfInt listOfInt) Bool) (declare-fun tsize (treeOfInt Int) Bool) (declare-fun ff () Bool) (assert (forall ( (A Int) ) (=> (= A 0) (len nil-listOfInt A) ) ) ) (assert (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) (=> (and (= C (+ 1 D)) (len B D) ) (len (cons-listOfInt A B) C) ) ) ) (assert (forall ( (A Int) (B Bool) ) (=> (= B false) (mem A nil-listOfInt B) ) ) ) (assert (forall ( (A Int) (B listOfInt) (C Bool) ) (=> (= C true) (mem A (cons-listOfInt A B) C) ) ) ) (assert (forall ( (A Int) (B Int) (C listOfInt) (D Bool) ) (=> (and (= D true) (mem A C D) ) (mem A (cons-listOfInt B C) D) ) ) ) (assert (forall ( (A Int) (B Int) (C listOfInt) (D Bool) ) (=> (and (= D false) (>= (- B A) 1) (mem A C D) ) (mem A (cons-listOfInt B C) D) ) ) ) (assert (forall ( (A Int) (B Int) (C listOfInt) (D Bool) ) (=> (and (= D false) (<= (- B A) (- 1)) (mem A C D) ) (mem A (cons-listOfInt B C) D) ) ) ) (assert (forall ( (A Int) (B Int) (C Bool) ) (=> (and (= C true) (less A B C) ) (nmax A B B) ) ) ) (assert (forall ( (A Int) (B Int) (C Bool) ) (=> (and (= C false) (less A B C) ) (nmax A B A) ) ) ) (assert (forall ( (A Int) ) (=> (= A 0) (height leaf-treeOfInt A) ) ) ) (assert (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Int) (F Int) (G Int) ) (=> (and (= D (+ 1 E)) (height B F) (height C G) (nmax F G E) ) (height (node-treeOfInt A B C) D) ) ) ) (assert (forall ( (A treeOfInt) ) (tinsertall A nil-listOfInt A) ) ) (assert (forall ( (A treeOfInt) (B Int) (C listOfInt) (D treeOfInt) (E treeOfInt) ) (=> (and (tinsertall A C E) (tinsert E B D) ) (tinsertall A (cons-listOfInt B C) D) ) ) ) (assert (forall ( (A Int) ) (tremove leaf-treeOfInt A leaf-treeOfInt) ) ) (assert (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) (=> (and (<= D (- A 1)) (tremove B D E) ) (tremove (node-treeOfInt A B C) D (node-treeOfInt A E C) ) ) ) ) (assert (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) (=> (and (<= A (- D 1)) (tremove C D E) ) (tremove (node-treeOfInt A B C) D (node-treeOfInt A B E) ) ) ) ) (assert (forall ( (A Int) (B treeOfInt) ) (tremove (node-treeOfInt A leaf-treeOfInt B) A B) ) ) (assert (forall ( (A Int) (B Int) (C treeOfInt) (D treeOfInt) (E treeOfInt) (F treeOfInt) ) (=> (tremove (node-treeOfInt B C D) B F) (tremove (node-treeOfInt A (node-treeOfInt B C D) E) A (node-treeOfInt B F E) ) ) ) ) (assert (forall ( (A treeOfInt) ) (tremoveall A nil-listOfInt A) ) ) (assert (forall ( (A treeOfInt) (B Int) (C listOfInt) (D treeOfInt) (E treeOfInt) ) (=> (and (tremove A B E) (tremoveall E C D) ) (tremoveall A (cons-listOfInt B C) D) ) ) ) (assert (forall ( (A Int) (B Bool) ) (=> (= B false) (tcontains leaf-treeOfInt A B) ) ) ) (assert (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Bool) ) (=> (= D true) (tcontains (node-treeOfInt A B C) A D) ) ) ) (assert (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) (=> (and (= E true) (tcontains B D E) ) (tcontains (node-treeOfInt A B C) D E) ) ) ) (assert (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) (=> (and (= E true) (tcontains C D E) ) (tcontains (node-treeOfInt A B C) D E) ) ) ) (assert (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) (=> (and (= E false) (>= (- D A) 1) (tcontains B D E) (tcontains C D E) ) (tcontains (node-treeOfInt A B C) D E) ) ) ) (assert (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) (=> (and (= E false) (<= (- D A) (- 1)) (tcontains B D E) (tcontains C D E) ) (tcontains (node-treeOfInt A B C) D E) ) ) ) (assert (forall ( (A Int) (B Bool) ) (=> (= B false) (tmember leaf-treeOfInt A B) ) ) ) (assert (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Bool) ) (=> (= D true) (tmember (node-treeOfInt A B C) A D) ) ) ) (assert (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) (F Bool) ) (=> (and (= F true) (>= (- D A) 1) (tmember C D E) (less A D F) ) (tmember (node-treeOfInt A B C) D E) ) ) ) (assert (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) (F Bool) ) (=> (and (= F false) (<= (- D A) (- 1)) (tmember B D E) (less A D F) ) (tmember (node-treeOfInt A B C) D E) ) ) ) (assert (forall ( (A listOfInt) ) (append nil-listOfInt A A) ) ) (assert (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) (=> (append B C D) (append (cons-listOfInt A B) C (cons-listOfInt A D)) ) ) ) (assert (content leaf-treeOfInt nil-listOfInt) ) (assert (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D listOfInt) (E listOfInt) (F listOfInt) ) (=> (and (content B E) (content C F) (append E (cons-listOfInt A F) D) ) (content (node-treeOfInt A B C) D) ) ) ) (assert (forall ( (A Int) ) (=> (= A 0) (tsize leaf-treeOfInt A) ) ) ) (assert (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Int) (F Int) (G Int) ) (=> (and (= D (+ 1 E)) (= (+ F G) E) (tsize B F) (tsize C G) ) (tsize (node-treeOfInt A B C) D) ) ) ) (assert (forall ( (A Int) ) (tinsert leaf-treeOfInt A (node-treeOfInt A leaf-treeOfInt leaf-treeOfInt) ) ) ) (assert (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) (=> (and (<= A (- D 1)) (tinsert C D E) ) (tinsert (node-treeOfInt A B C) D (node-treeOfInt A B E) ) ) ) ) (assert (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) (=> (and (>= A D) (tinsert B D E) ) (tinsert (node-treeOfInt A B C) D (node-treeOfInt A E C) ) ) ) ) (assert (forall ( (A Int) (B Int) (C Int) ) (=> (and (= C (+ A B)) (>= A 0) (>= B 0) ) (plus A B C) ) ) ) (assert (forall ( (A Int) (B Int) (C Bool) ) (=> (and (<= A B) (= C true) ) (leq A B C) ) ) ) (assert (forall ( (A Int) (B Int) (C Bool) ) (=> (and (>= A (+ B 1)) (= C false) ) (leq A B C) ) ) ) (assert (forall ( (A Int) (B Int) (C Bool) ) (=> (and (<= A (- B 1)) (= C true) ) (less A B C) ) ) ) (assert (forall ( (A Int) (B Int) (C Bool) ) (=> (and (>= A B) (= C false) ) (less A B C) ) ) ) (assert (forall ( (A Bool) (B Bool) (C treeOfInt) (D Int) (E listOfInt) ) (=> (and (not (= A B)) (tcontains C D A) (content C E) (mem D E B) ) ff ) ) ) (assert (not ff)) (check-sat)