(NOTE-LIB "bags" T) Loading ./numbers/bags.lib Finished loading ./numbers/bags.lib Loading ./numbers/bags.o Finished loading ./numbers/bags.o (#./numbers/bags.lib #./numbers/bags) (PROVE-LEMMA EQUAL-PLUS-0 (REWRITE) (EQUAL (EQUAL (PLUS A B) 0) (AND (ZEROP A) (ZEROP B)))) This simplifies, opening up the functions ZEROP and AND, to six new conjectures: Case 6. (IMPLIES (AND (NOT (EQUAL (PLUS A B) 0)) (NOT (NUMBERP A))) (NOT (EQUAL B 0))), which again simplifies, expanding NUMBERP, PLUS, and EQUAL, to: T. Case 5. (IMPLIES (AND (NOT (EQUAL (PLUS A B) 0)) (NOT (NUMBERP A))) (NUMBERP B)), which again simplifies, unfolding PLUS and EQUAL, to: T. Case 4. (IMPLIES (AND (NOT (EQUAL (PLUS A B) 0)) (EQUAL A 0)) (NOT (EQUAL B 0))), which again simplifies, using linear arithmetic, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL (PLUS A B) 0)) (EQUAL A 0)) (NUMBERP B)), which again simplifies, expanding the functions EQUAL and PLUS, to: T. Case 2. (IMPLIES (AND (EQUAL (PLUS A B) 0) (NOT (EQUAL A 0))) (NOT (NUMBERP A))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (EQUAL (PLUS A B) 0) (NOT (EQUAL B 0))) (NOT (NUMBERP B))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EQUAL-PLUS-0 (PROVE-LEMMA PLUS-CANCELLATION (REWRITE) (EQUAL (EQUAL (PLUS A B) (PLUS A C)) (EQUAL (FIX B) (FIX C)))) This conjecture simplifies, expanding the definition of FIX, to the following seven new formulas: Case 7. (IMPLIES (AND (NUMBERP C) (NUMBERP B) (NOT (EQUAL B C))) (NOT (EQUAL (PLUS A B) (PLUS A C)))). This again simplifies, using linear arithmetic, to: T. Case 6. (IMPLIES (AND (NUMBERP C) (NOT (NUMBERP B)) (NOT (EQUAL 0 C))) (NOT (EQUAL (PLUS A B) (PLUS A C)))), which we will name *1. Case 5. (IMPLIES (AND (NOT (NUMBERP C)) (NUMBERP B) (NOT (EQUAL B 0))) (NOT (EQUAL (PLUS A B) (PLUS A C)))), which we would usually push and work on later by induction. But if we must use induction to prove the input conjecture, we prefer to induct on the original formulation of the problem. Thus we will disregard all that we have previously done, give the name *1 to the original input, and work on it. So now let us consider: (EQUAL (EQUAL (PLUS A B) (PLUS A C)) (EQUAL (FIX B) (FIX C))). We gave this the name *1 above. Perhaps we can prove it by induction. Two inductions are suggested by terms in the conjecture. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP A) (p A B C)) (IMPLIES (AND (NOT (ZEROP A)) (p (SUB1 A) B C)) (p A B C))). Linear arithmetic, the lemmas SUB1-LESSEQP and SUB1-LESSP, and the definition of ZEROP inform us that the measure (COUNT A) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme produces the following two new formulas: Case 2. (IMPLIES (ZEROP A) (EQUAL (EQUAL (PLUS A B) (PLUS A C)) (EQUAL (FIX B) (FIX C)))). This simplifies, expanding the functions ZEROP, EQUAL, PLUS, and FIX, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP A)) (EQUAL (EQUAL (PLUS (SUB1 A) B) (PLUS (SUB1 A) C)) (EQUAL (FIX B) (FIX C)))) (EQUAL (EQUAL (PLUS A B) (PLUS A C)) (EQUAL (FIX B) (FIX C)))). This simplifies, rewriting with ADD1-EQUAL, and unfolding the definitions of ZEROP, FIX, PLUS, and EQUAL, to two new goals: Case 1.2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP C)) (EQUAL B 0) (EQUAL (EQUAL (PLUS (SUB1 A) B) (PLUS (SUB1 A) C)) T)) (EQUAL (PLUS A 0) (ADD1 (PLUS (SUB1 A) C)))), which again simplifies, trivially, to: (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP C)) (EQUAL (PLUS (SUB1 A) 0) (PLUS (SUB1 A) C))) (EQUAL (PLUS A 0) (ADD1 (PLUS (SUB1 A) 0)))), which again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP B)) (EQUAL 0 C) (EQUAL (EQUAL (PLUS (SUB1 A) B) (PLUS (SUB1 A) C)) T)) (EQUAL (ADD1 (PLUS (SUB1 A) B)) (PLUS A 0))), which again simplifies, trivially, to the new formula: (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP B)) (EQUAL (PLUS (SUB1 A) B) (PLUS (SUB1 A) 0))) (EQUAL (ADD1 (PLUS (SUB1 A) 0)) (PLUS A 0))), which again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PLUS-CANCELLATION (DISABLE PLUS-CANCELLATION) [ 0.0 0.0 0.0 ] PLUS-CANCELLATION-OFF (PROVE-LEMMA EQUAL-DIFFERENCE-0 (REWRITE) (AND (EQUAL (EQUAL (DIFFERENCE X Y) 0) (NOT (LESSP Y X))) (EQUAL (EQUAL 0 (DIFFERENCE X Y)) (NOT (LESSP Y X)))) ((INDUCT (DIFFERENCE X Y)))) WARNING: Note that the proposed lemma EQUAL-DIFFERENCE-0 is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This conjecture can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to three new conjectures: Case 3. (IMPLIES (ZEROP X) (AND (EQUAL (EQUAL (DIFFERENCE X Y) 0) (NOT (LESSP Y X))) (EQUAL (EQUAL 0 (DIFFERENCE X Y)) (NOT (LESSP Y X))))), which simplifies, expanding the definitions of ZEROP, EQUAL, DIFFERENCE, LESSP, NOT, and AND, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (ZEROP Y)) (AND (EQUAL (EQUAL (DIFFERENCE X Y) 0) (NOT (LESSP Y X))) (EQUAL (EQUAL 0 (DIFFERENCE X Y)) (NOT (LESSP Y X))))), which simplifies, unfolding the definitions of ZEROP, EQUAL, DIFFERENCE, LESSP, NOT, and AND, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (EQUAL (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0) (NOT (LESSP (SUB1 Y) (SUB1 X)))) (EQUAL (EQUAL 0 (DIFFERENCE (SUB1 X) (SUB1 Y))) (NOT (LESSP (SUB1 Y) (SUB1 X))))) (AND (EQUAL (EQUAL (DIFFERENCE X Y) 0) (NOT (LESSP Y X))) (EQUAL (EQUAL 0 (DIFFERENCE X Y)) (NOT (LESSP Y X))))), which simplifies, expanding the functions NOT, EQUAL, DIFFERENCE, LESSP, and AND, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EQUAL-DIFFERENCE-0 (PROVE-LEMMA DIFFERENCE-CANCELLATION (REWRITE) (EQUAL (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y)) (IF (LESSP X Y) (NOT (LESSP Y Z)) (IF (LESSP Z Y) (NOT (LESSP Y X)) (EQUAL (FIX X) (FIX Z))))) ((ENABLE EQUAL-DIFFERENCE-0))) This simplifies, opening up NOT and FIX, to the following 11 new goals: Case 11.(IMPLIES (AND (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y)) (NOT (LESSP X Y)) (NOT (LESSP Z Y)) (NOT (NUMBERP Z)) (NUMBERP X)) (EQUAL (EQUAL X 0) T)). This again simplifies, applying EQUAL-DIFFERENCE-0, and expanding DIFFERENCE and LESSP, to the following two new conjectures: Case 11.2. (IMPLIES (AND (NOT (LESSP Y X)) (NOT (LESSP X Y)) (EQUAL Y 0) (NOT (NUMBERP Z)) (NUMBERP X)) (EQUAL X 0)). But this again simplifies, using linear arithmetic, to: T. Case 11.1. (IMPLIES (AND (NOT (LESSP Y X)) (NOT (LESSP X Y)) (NOT (NUMBERP Y)) (NOT (NUMBERP Z)) (NUMBERP X)) (EQUAL X 0)), which again simplifies, unfolding the definition of LESSP, to: T. Case 10.(IMPLIES (AND (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y)) (NOT (LESSP X Y)) (NOT (LESSP Z Y)) (NUMBERP Z) (NOT (NUMBERP X))) (EQUAL (EQUAL 0 Z) T)), which again simplifies, rewriting with EQUAL-DIFFERENCE-0, and opening up the functions DIFFERENCE, LESSP, and EQUAL, to the following two new formulas: Case 10.2. (IMPLIES (AND (NOT (LESSP Y Z)) (EQUAL Y 0) (NUMBERP Z) (NOT (NUMBERP X))) (EQUAL 0 Z)). But this again simplifies, using linear arithmetic, to: T. Case 10.1. (IMPLIES (AND (NOT (LESSP Y Z)) (NOT (NUMBERP Y)) (NUMBERP Z) (NOT (NUMBERP X))) (EQUAL 0 Z)), which again simplifies, expanding the function LESSP, to: T. Case 9. (IMPLIES (AND (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y)) (NOT (LESSP X Y)) (NOT (LESSP Z Y)) (NUMBERP Z) (NUMBERP X)) (EQUAL (EQUAL X Z) T)), which again simplifies, obviously, to the new formula: (IMPLIES (AND (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y)) (NOT (LESSP X Y)) (NOT (LESSP Z Y)) (NUMBERP Z) (NUMBERP X)) (EQUAL X Z)), which again simplifies, using linear arithmetic, to: T. Case 8. (IMPLIES (AND (NOT (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y))) (NOT (LESSP X Y)) (NOT (LESSP Z Y)) (NOT (NUMBERP Z))) (NOT (EQUAL X 0))), which again simplifies, opening up the functions EQUAL and DIFFERENCE, to: T. Case 7. (IMPLIES (AND (NOT (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y))) (NOT (LESSP X Y)) (NOT (LESSP Z Y)) (NOT (NUMBERP X))) (NOT (EQUAL 0 Z))), which again simplifies, expanding the functions DIFFERENCE and EQUAL, to: T. Case 6. (IMPLIES (AND (NOT (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y))) (NOT (LESSP X Y)) (NOT (LESSP Z Y)) (NUMBERP Z) (NUMBERP X)) (NOT (EQUAL X Z))), which again simplifies, trivially, to: T. Case 5. (IMPLIES (AND (NOT (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y))) (LESSP X Y)) (LESSP Y Z)). Call the above conjecture *1. Case 4. (IMPLIES (AND (NOT (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y))) (NOT (LESSP X Y)) (NOT (LESSP Z Y)) (NOT (NUMBERP Z))) (NUMBERP X)). This again simplifies, unfolding DIFFERENCE and EQUAL, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y))) (NOT (LESSP X Y)) (LESSP Z Y)) (LESSP Y X)), which again simplifies, using linear arithmetic, to three new formulas: Case 3.3. (IMPLIES (AND (NOT (NUMBERP Y)) (NOT (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y))) (NOT (LESSP X Y)) (LESSP Z Y)) (LESSP Y X)), which again simplifies, expanding DIFFERENCE and LESSP, to: T. Case 3.2. (IMPLIES (AND (NOT (NUMBERP X)) (NOT (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y))) (NOT (LESSP X Y)) (LESSP Z Y)) (LESSP Y X)), which again simplifies, appealing to the lemma EQUAL-DIFFERENCE-0, and unfolding the functions DIFFERENCE, LESSP, and EQUAL, to: T. Case 3.1. (IMPLIES (AND (NUMBERP X) (NUMBERP Y) (NOT (EQUAL (DIFFERENCE X X) (DIFFERENCE Z X))) (NOT (LESSP X X)) (LESSP Z X)) (LESSP X X)), which again simplifies, trivially, to the new conjecture: (IMPLIES (AND (NUMBERP X) (NUMBERP Y) (NOT (EQUAL (DIFFERENCE X X) (DIFFERENCE Z X))) (LESSP Z X)) (LESSP X X)), which we would normally push and work on later by induction. But if we must use induction to prove the input conjecture, we prefer to induct on the original formulation of the problem. Thus we will disregard all that we have previously done, give the name *1 to the original input, and work on it. So now let us return to: (EQUAL (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y)) (COND ((LESSP X Y) (NOT (LESSP Y Z))) ((LESSP Z Y) (NOT (LESSP Y X))) (T (EQUAL (FIX X) (FIX Z))))), named *1. Let us appeal to the induction principle. The recursive terms in the conjecture suggest 12 inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP X) (p X Y Z)) (IMPLIES (AND (NOT (ZEROP X)) (ZEROP Y)) (p X Y Z)) (IMPLIES (AND (NOT (ZEROP X)) (NOT (ZEROP Y)) (p (SUB1 X) (SUB1 Y) (SUB1 Z))) (p X Y Z))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP can be used to establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instances chosen for Z and Y. The above induction scheme generates the following three new goals: Case 3. (IMPLIES (ZEROP X) (EQUAL (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y)) (COND ((LESSP X Y) (NOT (LESSP Y Z))) ((LESSP Z Y) (NOT (LESSP Y X))) (T (EQUAL (FIX X) (FIX Z)))))). This simplifies, opening up the functions ZEROP, EQUAL, DIFFERENCE, LESSP, NOT, and FIX, to the following 12 new goals: Case 3.12. (IMPLIES (AND (EQUAL X 0) (NUMBERP Z) (EQUAL Y 0) (EQUAL 0 Z)) (EQUAL (EQUAL 0 Z) T)). However this again simplifies, opening up the definitions of NUMBERP and EQUAL, to: T. Case 3.11. (IMPLIES (AND (EQUAL X 0) (NUMBERP Z) (NOT (NUMBERP Y)) (EQUAL 0 Z)) (EQUAL (EQUAL 0 Z) T)), which again simplifies, expanding the definitions of NUMBERP and EQUAL, to: T. Case 3.10. (IMPLIES (AND (EQUAL X 0) (EQUAL Z 0) (NOT (NUMBERP Y)) (NUMBERP Z)) (EQUAL (EQUAL 0 Z) T)), which again simplifies, unfolding the functions NUMBERP and EQUAL, to: T. Case 3.9. (IMPLIES (AND (EQUAL X 0) (EQUAL Z 0) (EQUAL Y 0) (NUMBERP Z)) (EQUAL (EQUAL 0 Z) T)), which again simplifies, expanding the functions NUMBERP and EQUAL, to: T. Case 3.8. (IMPLIES (AND (EQUAL X 0) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL 0 (DIFFERENCE (SUB1 Z) (SUB1 Y))))) (LESSP (SUB1 Y) (SUB1 Z))), which again simplifies, appealing to the lemma EQUAL-DIFFERENCE-0, to: T. Case 3.7. (IMPLIES (AND (EQUAL X 0) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (EQUAL Y 0)) (NUMBERP Y) (EQUAL 0 (DIFFERENCE (SUB1 Z) (SUB1 Y)))) (NOT (LESSP (SUB1 Y) (SUB1 Z)))), which again simplifies, using linear arithmetic, to: T. Case 3.6. (IMPLIES (AND (NOT (NUMBERP X)) (NUMBERP Z) (EQUAL Y 0) (EQUAL 0 Z)) (EQUAL (EQUAL 0 Z) T)), which again simplifies, opening up the definitions of NUMBERP and EQUAL, to: T. Case 3.5. (IMPLIES (AND (NOT (NUMBERP X)) (NUMBERP Z) (NOT (NUMBERP Y)) (EQUAL 0 Z)) (EQUAL (EQUAL 0 Z) T)), which again simplifies, expanding NUMBERP and EQUAL, to: T. Case 3.4. (IMPLIES (AND (NOT (NUMBERP X)) (EQUAL Z 0) (NOT (NUMBERP Y)) (NUMBERP Z)) (EQUAL (EQUAL 0 Z) T)), which again simplifies, unfolding NUMBERP and EQUAL, to: T. Case 3.3. (IMPLIES (AND (NOT (NUMBERP X)) (EQUAL Z 0) (EQUAL Y 0) (NUMBERP Z)) (EQUAL (EQUAL 0 Z) T)), which again simplifies, opening up NUMBERP and EQUAL, to: T. Case 3.2. (IMPLIES (AND (NOT (NUMBERP X)) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL 0 (DIFFERENCE (SUB1 Z) (SUB1 Y))))) (LESSP (SUB1 Y) (SUB1 Z))), which again simplifies, rewriting with EQUAL-DIFFERENCE-0, to: T. Case 3.1. (IMPLIES (AND (NOT (NUMBERP X)) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (EQUAL Y 0)) (NUMBERP Y) (EQUAL 0 (DIFFERENCE (SUB1 Z) (SUB1 Y)))) (NOT (LESSP (SUB1 Y) (SUB1 Z)))). However this again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP X)) (ZEROP Y)) (EQUAL (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y)) (COND ((LESSP X Y) (NOT (LESSP Y Z))) ((LESSP Z Y) (NOT (LESSP Y X))) (T (EQUAL (FIX X) (FIX Z)))))), which simplifies, expanding ZEROP, EQUAL, DIFFERENCE, LESSP, and FIX, to four new goals: Case 2.4. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL Y 0) (NUMBERP Z) (EQUAL X Z)) (EQUAL (EQUAL X Z) T)), which again simplifies, expanding the function EQUAL, to: T. Case 2.3. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL Y 0) (NUMBERP Z) (EQUAL X Z)) (NOT (EQUAL Z 0))), which again simplifies, trivially, to: T. Case 2.2. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (NUMBERP Y)) (NUMBERP Z) (EQUAL X Z)) (EQUAL (EQUAL X Z) T)). This again simplifies, expanding EQUAL, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (NUMBERP Y)) (NUMBERP Z) (EQUAL X Z)) (NOT (EQUAL Z 0))), which again simplifies, trivially, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (NOT (ZEROP Y)) (EQUAL (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y))) (COND ((LESSP (SUB1 X) (SUB1 Y)) (NOT (LESSP (SUB1 Y) (SUB1 Z)))) ((LESSP (SUB1 Z) (SUB1 Y)) (NOT (LESSP (SUB1 Y) (SUB1 X)))) (T (EQUAL (FIX (SUB1 X)) (FIX (SUB1 Z))))))) (EQUAL (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y)) (COND ((LESSP X Y) (NOT (LESSP Y Z))) ((LESSP Z Y) (NOT (LESSP Y X))) (T (EQUAL (FIX X) (FIX Z)))))). This simplifies, unfolding the definitions of ZEROP, NOT, FIX, DIFFERENCE, and LESSP, to the following 18 new goals: Case 1.18. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (LESSP (SUB1 Z) (SUB1 Y)) (NOT (LESSP (SUB1 Y) (SUB1 X))) (NOT (NUMBERP Z))) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0)). This again simplifies, using linear arithmetic, to: T. Case 1.17. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (LESSP (SUB1 Z) (SUB1 Y)) (NOT (LESSP (SUB1 Y) (SUB1 X))) (EQUAL Z 0)) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0)), which again simplifies, using linear arithmetic, to: T. Case 1.16. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y))) (LESSP (SUB1 X) (SUB1 Y)) (NOT (LESSP (SUB1 Y) (SUB1 Z))) (NOT (NUMBERP Z))) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0)), which again simplifies, applying EQUAL-DIFFERENCE-0, to: (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y))) (LESSP (SUB1 X) (SUB1 Y)) (NOT (LESSP (SUB1 Y) (SUB1 Z))) (NOT (NUMBERP Z))) (NOT (LESSP (SUB1 Y) (SUB1 X)))), which again simplifies, using linear arithmetic, to: T. Case 1.15. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y))) (LESSP (SUB1 X) (SUB1 Y)) (NOT (LESSP (SUB1 Y) (SUB1 Z))) (EQUAL Z 0)) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0)), which again simplifies, applying EQUAL-DIFFERENCE-0, and unfolding the functions SUB1, EQUAL, DIFFERENCE, and LESSP, to: T. Case 1.14. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y)))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (LESSP (SUB1 Z) (SUB1 Y)) (LESSP (SUB1 Y) (SUB1 X)) (NOT (NUMBERP Z))) (NOT (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0))). But this again simplifies, using linear arithmetic, to: T. Case 1.13. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y)))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (LESSP (SUB1 Z) (SUB1 Y)) (LESSP (SUB1 Y) (SUB1 X)) (EQUAL Z 0)) (NOT (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0))), which again simplifies, using linear arithmetic, to: T. Case 1.12. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y)))) (LESSP (SUB1 X) (SUB1 Y)) (LESSP (SUB1 Y) (SUB1 Z)) (EQUAL Z 0)) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0)), which again simplifies, rewriting with EQUAL-DIFFERENCE-0, and expanding the definitions of SUB1, EQUAL, DIFFERENCE, and LESSP, to: T. Case 1.11. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y)))) (LESSP (SUB1 X) (SUB1 Y)) (LESSP (SUB1 Y) (SUB1 Z)) (NOT (NUMBERP Z))) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0)). However this again simplifies, rewriting with EQUAL-DIFFERENCE-0, to the new conjecture: (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y)))) (LESSP (SUB1 X) (SUB1 Y)) (LESSP (SUB1 Y) (SUB1 Z)) (NOT (NUMBERP Z))) (NOT (LESSP (SUB1 Y) (SUB1 X)))), which again simplifies, using linear arithmetic, to: T. Case 1.10. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y)))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (NOT (LESSP (SUB1 Z) (SUB1 Y))) (NOT (EQUAL (SUB1 X) (SUB1 Z))) (EQUAL Z 0) (NOT (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0))) (LESSP (SUB1 Y) (SUB1 X))), which again simplifies, using linear arithmetic, to: T. Case 1.9. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y)))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (NOT (LESSP (SUB1 Z) (SUB1 Y))) (NOT (EQUAL (SUB1 X) (SUB1 Z))) (EQUAL Z 0) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0)) (NOT (LESSP (SUB1 Y) (SUB1 X)))), which again simplifies, using linear arithmetic, to: T. Case 1.8. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y)))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (NOT (LESSP (SUB1 Z) (SUB1 Y))) (NOT (EQUAL (SUB1 X) (SUB1 Z))) (NOT (NUMBERP Z)) (NOT (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0))) (LESSP (SUB1 Y) (SUB1 X))), which again simplifies, using linear arithmetic, to: T. Case 1.7. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y)))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (NOT (LESSP (SUB1 Z) (SUB1 Y))) (NOT (EQUAL (SUB1 X) (SUB1 Z))) (NOT (NUMBERP Z)) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0)) (NOT (LESSP (SUB1 Y) (SUB1 X)))), which again simplifies, using linear arithmetic, to: T. Case 1.6. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y)))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (NOT (LESSP (SUB1 Z) (SUB1 Y))) (NOT (EQUAL (SUB1 X) (SUB1 Z))) (NOT (EQUAL Z 0)) (NUMBERP Z)) (NOT (EQUAL X Z))), which again simplifies, clearly, to: T. Case 1.5. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (NOT (LESSP (SUB1 Z) (SUB1 Y))) (EQUAL (EQUAL (SUB1 X) (SUB1 Z)) T) (EQUAL Z 0) (NOT (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0))) (LESSP (SUB1 Y) (SUB1 X))). This again simplifies, using linear arithmetic, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (NOT (LESSP (SUB1 Z) (SUB1 Y))) (EQUAL (EQUAL (SUB1 X) (SUB1 Z)) T) (EQUAL Z 0) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0)) (NOT (LESSP (SUB1 Y) (SUB1 X)))), which again simplifies, using linear arithmetic, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (NOT (LESSP (SUB1 Z) (SUB1 Y))) (EQUAL (EQUAL (SUB1 X) (SUB1 Z)) T) (NOT (NUMBERP Z)) (NOT (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0))) (LESSP (SUB1 Y) (SUB1 X))), which again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (NOT (LESSP (SUB1 Z) (SUB1 Y))) (EQUAL (EQUAL (SUB1 X) (SUB1 Z)) T) (NOT (NUMBERP Z)) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0)) (NOT (LESSP (SUB1 Y) (SUB1 X)))), which again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (NOT (LESSP (SUB1 Z) (SUB1 Y))) (EQUAL (EQUAL (SUB1 X) (SUB1 Z)) T) (NOT (EQUAL Z 0)) (NUMBERP Z)) (EQUAL (EQUAL X Z) T)), which again simplifies, obviously, to: (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) (DIFFERENCE (SUB1 Z) (SUB1 Y))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (NOT (LESSP (SUB1 Z) (SUB1 Y))) (EQUAL (SUB1 X) (SUB1 Z)) (NOT (EQUAL Z 0)) (NUMBERP Z)) (EQUAL X Z)), which again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.1 ] DIFFERENCE-CANCELLATION (DISABLE DIFFERENCE-CANCELLATION) [ 0.0 0.0 0.0 ] DIFFERENCE-CANCELLATION-OFF (PROVE-LEMMA COMMUTATIVITY-OF-PLUS (REWRITE) (EQUAL (PLUS X Y) (PLUS Y X))) This formula simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] COMMUTATIVITY-OF-PLUS (PROVE-LEMMA COMMUTATIVITY2-OF-PLUS (REWRITE) (EQUAL (PLUS X (PLUS Y Z)) (PLUS Y (PLUS X Z)))) WARNING: the previously added lemma, COMMUTATIVITY-OF-PLUS, could be applied whenever the newly proposed COMMUTATIVITY2-OF-PLUS could! This simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] COMMUTATIVITY2-OF-PLUS (PROVE-LEMMA PLUS-ZERO-ARG2 (REWRITE) (IMPLIES (ZEROP Y) (EQUAL (PLUS X Y) (FIX X))) ((INDUCT (PLUS X Y)))) WARNING: the previously added lemma, COMMUTATIVITY-OF-PLUS, could be applied whenever the newly proposed PLUS-ZERO-ARG2 could! This formula can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to the following two new formulas: Case 2. (IMPLIES (AND (ZEROP X) (ZEROP Y)) (EQUAL (PLUS X Y) (FIX X))). This simplifies, applying COMMUTATIVITY-OF-PLUS, and opening up the definitions of ZEROP, PLUS, FIX, and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (IMPLIES (ZEROP Y) (EQUAL (PLUS (SUB1 X) Y) (FIX (SUB1 X)))) (ZEROP Y)) (EQUAL (PLUS X Y) (FIX X))), which simplifies, applying COMMUTATIVITY-OF-PLUS and ADD1-SUB1, and expanding ZEROP, FIX, IMPLIES, EQUAL, and PLUS, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PLUS-ZERO-ARG2 (PROVE-LEMMA PLUS-ADD1-ARG1 (REWRITE) (EQUAL (PLUS (ADD1 A) B) (ADD1 (PLUS A B)))) WARNING: the previously added lemma, COMMUTATIVITY-OF-PLUS, could be applied whenever the newly proposed PLUS-ADD1-ARG1 could! This conjecture simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PLUS-ADD1-ARG1 (PROVE-LEMMA PLUS-ADD1-ARG2 (REWRITE) (EQUAL (PLUS X (ADD1 Y)) (IF (NUMBERP Y) (ADD1 (PLUS X Y)) (ADD1 X)))) WARNING: the previously added lemma, COMMUTATIVITY-OF-PLUS, could be applied whenever the newly proposed PLUS-ADD1-ARG2 could! This simplifies, obviously, to two new formulas: Case 2. (IMPLIES (NOT (NUMBERP Y)) (EQUAL (PLUS X (ADD1 Y)) (ADD1 X))), which again simplifies, rewriting with the lemmas SUB1-TYPE-RESTRICTION, PLUS-ADD1-ARG1, COMMUTATIVITY-OF-PLUS, and ADD1-EQUAL, and opening up the functions EQUAL and PLUS, to: T. Case 1. (IMPLIES (NUMBERP Y) (EQUAL (PLUS X (ADD1 Y)) (ADD1 (PLUS X Y)))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PLUS-ADD1-ARG2 (PROVE-LEMMA ASSOCIATIVITY-OF-PLUS (REWRITE) (EQUAL (PLUS (PLUS X Y) Z) (PLUS X (PLUS Y Z)))) WARNING: the previously added lemma, COMMUTATIVITY-OF-PLUS, could be applied whenever the newly proposed ASSOCIATIVITY-OF-PLUS could! This simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] ASSOCIATIVITY-OF-PLUS (PROVE-LEMMA PLUS-DIFFERENCE-ARG1 (REWRITE) (EQUAL (PLUS (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE (PLUS A C) B) (PLUS 0 C))) ((INDUCT (DIFFERENCE A B)))) WARNING: the previously added lemma, COMMUTATIVITY-OF-PLUS, could be applied whenever the newly proposed PLUS-DIFFERENCE-ARG1 could! This conjecture can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to three new formulas: Case 3. (IMPLIES (ZEROP A) (EQUAL (PLUS (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE (PLUS A C) B) (PLUS 0 C)))), which simplifies, unfolding the functions ZEROP, EQUAL, DIFFERENCE, PLUS, and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (ZEROP B)) (EQUAL (PLUS (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE (PLUS A C) B) (PLUS 0 C)))), which simplifies, rewriting with EQUAL-PLUS-0, and expanding ZEROP, EQUAL, DIFFERENCE, and LESSP, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (PLUS (DIFFERENCE (SUB1 A) (SUB1 B)) C) (IF (LESSP (SUB1 B) (SUB1 A)) (DIFFERENCE (PLUS (SUB1 A) C) (SUB1 B)) (PLUS 0 C)))) (EQUAL (PLUS (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE (PLUS A C) B) (PLUS 0 C)))). This simplifies, rewriting with COMMUTATIVITY-OF-PLUS, EQUAL-DIFFERENCE-0, PLUS-ZERO-ARG2, and SUB1-ADD1, and opening up EQUAL, PLUS, DIFFERENCE, ZEROP, LESSP, and NUMBERP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PLUS-DIFFERENCE-ARG1 (PROVE-LEMMA PLUS-DIFFERENCE-ARG2 (REWRITE) (EQUAL (PLUS A (DIFFERENCE B C)) (IF (LESSP C B) (DIFFERENCE (PLUS A B) C) (PLUS A 0))) ((INDUCT (PLUS A B)))) WARNING: the previously added lemma, COMMUTATIVITY-OF-PLUS, could be applied whenever the newly proposed PLUS-DIFFERENCE-ARG2 could! This formula can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to the following two new formulas: Case 2. (IMPLIES (ZEROP A) (EQUAL (PLUS A (DIFFERENCE B C)) (IF (LESSP C B) (DIFFERENCE (PLUS A B) C) (PLUS A 0)))). This simplifies, applying PLUS-ZERO-ARG2, and unfolding the definitions of ZEROP, EQUAL, and PLUS, to four new goals: Case 2.4. (IMPLIES (AND (EQUAL A 0) (NOT (LESSP C B))) (EQUAL (DIFFERENCE B C) 0)), which again simplifies, appealing to the lemma EQUAL-DIFFERENCE-0, to: T. Case 2.3. (IMPLIES (AND (EQUAL A 0) (LESSP C B) (NOT (NUMBERP B))) (EQUAL (DIFFERENCE B C) (DIFFERENCE 0 C))), which again simplifies, expanding the definition of LESSP, to: T. Case 2.2. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (LESSP C B))) (EQUAL (DIFFERENCE B C) 0)), which again simplifies, rewriting with the lemma EQUAL-DIFFERENCE-0, to: T. Case 2.1. (IMPLIES (AND (NOT (NUMBERP A)) (LESSP C B) (NOT (NUMBERP B))) (EQUAL (DIFFERENCE B C) (DIFFERENCE 0 C))), which again simplifies, expanding the function LESSP, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL (PLUS (SUB1 A) (DIFFERENCE B C)) (IF (LESSP C B) (DIFFERENCE (PLUS (SUB1 A) B) C) (PLUS (SUB1 A) 0)))) (EQUAL (PLUS A (DIFFERENCE B C)) (IF (LESSP C B) (DIFFERENCE (PLUS A B) C) (PLUS A 0)))), which simplifies, rewriting with COMMUTATIVITY-OF-PLUS, PLUS-ZERO-ARG2, EQUAL-DIFFERENCE-0, and SUB1-ADD1, and unfolding ZEROP, PLUS, and DIFFERENCE, to the following three new conjectures: Case 1.3. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (LESSP C B) (EQUAL (PLUS (SUB1 A) (DIFFERENCE B C)) (DIFFERENCE (PLUS B (SUB1 A)) C)) (NOT (EQUAL C 0)) (NUMBERP C)) (EQUAL (ADD1 (DIFFERENCE (PLUS B (SUB1 A)) C)) (DIFFERENCE (PLUS B (SUB1 A)) (SUB1 C)))). But this again simplifies, using linear arithmetic, to two new goals: Case 1.3.2. (IMPLIES (AND (LESSP (PLUS B (SUB1 A)) C) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP C B) (EQUAL (PLUS (SUB1 A) (DIFFERENCE B C)) (DIFFERENCE (PLUS B (SUB1 A)) C)) (NOT (EQUAL C 0)) (NUMBERP C)) (EQUAL (ADD1 (DIFFERENCE (PLUS B (SUB1 A)) C)) (DIFFERENCE (PLUS B (SUB1 A)) (SUB1 C)))), which again simplifies, using linear arithmetic, to: T. Case 1.3.1. (IMPLIES (AND (LESSP (PLUS B (SUB1 A)) (SUB1 C)) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP C B) (EQUAL (PLUS (SUB1 A) (DIFFERENCE B C)) (DIFFERENCE (PLUS B (SUB1 A)) C)) (NOT (EQUAL C 0)) (NUMBERP C)) (EQUAL (ADD1 (DIFFERENCE (PLUS B (SUB1 A)) C)) (DIFFERENCE (PLUS B (SUB1 A)) (SUB1 C)))), which again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (LESSP C B) (EQUAL (PLUS (SUB1 A) (DIFFERENCE B C)) (DIFFERENCE (PLUS B (SUB1 A)) C)) (EQUAL C 0)) (EQUAL (ADD1 (DIFFERENCE (PLUS B (SUB1 A)) C)) (ADD1 (PLUS B (SUB1 A))))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP (PLUS B (SUB1 A)) 0) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP 0 B) (EQUAL (PLUS (SUB1 A) (DIFFERENCE B 0)) (DIFFERENCE (PLUS B (SUB1 A)) 0))) (EQUAL (ADD1 (DIFFERENCE (PLUS B (SUB1 A)) 0)) (ADD1 (PLUS B (SUB1 A))))). However this again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (LESSP C B) (EQUAL (PLUS (SUB1 A) (DIFFERENCE B C)) (DIFFERENCE (PLUS B (SUB1 A)) C)) (NOT (NUMBERP C))) (EQUAL (ADD1 (DIFFERENCE (PLUS B (SUB1 A)) C)) (ADD1 (PLUS B (SUB1 A))))), which again simplifies, rewriting with COMMUTATIVITY-OF-PLUS and EQUAL-PLUS-0, and expanding the definitions of LESSP and DIFFERENCE, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PLUS-DIFFERENCE-ARG2 (PROVE-LEMMA DIFFERENCE-PLUS-CANCELLATION-PROOF NIL (EQUAL (DIFFERENCE (PLUS X Y) X) (FIX Y))) This conjecture simplifies, opening up the function FIX, to the following two new goals: Case 2. (IMPLIES (NOT (NUMBERP Y)) (EQUAL (DIFFERENCE (PLUS X Y) X) 0)). But this again simplifies, applying PLUS-ZERO-ARG2 and EQUAL-DIFFERENCE-0, and expanding ZEROP, to the following two new formulas: Case 2.2. (IMPLIES (AND (NOT (NUMBERP Y)) (NOT (NUMBERP X))) (NOT (LESSP X 0))). However this again simplifies, using linear arithmetic, to: T. Case 2.1. (IMPLIES (AND (NOT (NUMBERP Y)) (NUMBERP X)) (NOT (LESSP X X))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (NUMBERP Y) (EQUAL (DIFFERENCE (PLUS X Y) X) Y)), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP (PLUS X Y) X) (NUMBERP Y)) (EQUAL (DIFFERENCE (PLUS X Y) X) Y)). But this again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS-CANCELLATION-PROOF (PROVE-LEMMA DIFFERENCE-PLUS-CANCELLATION (REWRITE) (AND (EQUAL (DIFFERENCE (PLUS X Y) X) (FIX Y)) (EQUAL (DIFFERENCE (PLUS Y X) X) (FIX Y))) ((USE (DIFFERENCE-PLUS-CANCELLATION-PROOF (X X) (Y Y))) (ENABLE COMMUTATIVITY-OF-PLUS))) WARNING: Note that the proposed lemma DIFFERENCE-PLUS-CANCELLATION is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This formula simplifies, rewriting with PLUS-ZERO-ARG2, EQUAL-DIFFERENCE-0, and COMMUTATIVITY-OF-PLUS, and expanding the definitions of FIX, ZEROP, and AND, to the following two new conjectures: Case 2. (IMPLIES (AND (NOT (NUMBERP Y)) (EQUAL (DIFFERENCE (PLUS X Y) X) 0) (NOT (NUMBERP X))) (NOT (LESSP X 0))). This again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (NUMBERP Y)) (EQUAL (DIFFERENCE (PLUS X Y) X) 0) (NUMBERP X)) (NOT (LESSP X X))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS-CANCELLATION (DISABLE DIFFERENCE-PLUS-CANCELLATION) [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS-CANCELLATION-OFF (PROVE-LEMMA DIFFERENCE-PLUS-PLUS-CANCELLATION-PROOF NIL (EQUAL (DIFFERENCE (PLUS X Y) (PLUS X Z)) (DIFFERENCE Y Z))) This simplifies, using linear arithmetic, to the following two new conjectures: Case 2. (IMPLIES (LESSP (PLUS X Y) (PLUS X Z)) (EQUAL (DIFFERENCE (PLUS X Y) (PLUS X Z)) (DIFFERENCE Y Z))). Give the above formula the name *1. Case 1. (IMPLIES (LESSP Y Z) (EQUAL (DIFFERENCE (PLUS X Y) (PLUS X Z)) (DIFFERENCE Y Z))), which we would usually push and work on later by induction. But if we must use induction to prove the input conjecture, we prefer to induct on the original formulation of the problem. Thus we will disregard all that we have previously done, give the name *1 to the original input, and work on it. So now let us consider: (EQUAL (DIFFERENCE (PLUS X Y) (PLUS X Z)) (DIFFERENCE Y Z)). We gave this the name *1 above. Perhaps we can prove it by induction. There are four plausible inductions. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (ZEROP X) (p X Y Z)) (IMPLIES (AND (NOT (ZEROP X)) (p (SUB1 X) Y Z)) (p X Y Z))). Linear arithmetic, the lemmas SUB1-LESSEQP and SUB1-LESSP, and the definition of ZEROP establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme produces the following two new conjectures: Case 2. (IMPLIES (ZEROP X) (EQUAL (DIFFERENCE (PLUS X Y) (PLUS X Z)) (DIFFERENCE Y Z))). This simplifies, using linear arithmetic, to the following two new goals: Case 2.2. (IMPLIES (AND (LESSP (PLUS X Y) (PLUS X Z)) (ZEROP X)) (EQUAL (DIFFERENCE (PLUS X Y) (PLUS X Z)) (DIFFERENCE Y Z))). But this again simplifies, rewriting with PLUS-ZERO-ARG2, and opening up the functions PLUS, ZEROP, NUMBERP, DIFFERENCE, and EQUAL, to: T. Case 2.1. (IMPLIES (AND (LESSP Y Z) (ZEROP X)) (EQUAL (DIFFERENCE (PLUS X Y) (PLUS X Z)) (DIFFERENCE Y Z))). But this again simplifies, expanding the functions ZEROP, EQUAL, and PLUS, to six new conjectures: Case 2.1.6. (IMPLIES (AND (LESSP Y Z) (EQUAL X 0) (NOT (NUMBERP Z)) (NOT (NUMBERP Y))) (EQUAL (DIFFERENCE 0 0) (DIFFERENCE Y Z))), which again simplifies, expanding the definition of LESSP, to: T. Case 2.1.5. (IMPLIES (AND (LESSP Y Z) (EQUAL X 0) (NOT (NUMBERP Z)) (NUMBERP Y)) (EQUAL (DIFFERENCE Y 0) (DIFFERENCE Y Z))), which again simplifies, expanding the definition of LESSP, to: T. Case 2.1.4. (IMPLIES (AND (LESSP Y Z) (EQUAL X 0) (NUMBERP Z) (NOT (NUMBERP Y))) (EQUAL (DIFFERENCE 0 Z) (DIFFERENCE Y Z))), which again simplifies, expanding the definitions of LESSP, EQUAL, and DIFFERENCE, to: T. Case 2.1.3. (IMPLIES (AND (LESSP Y Z) (NOT (NUMBERP X)) (NOT (NUMBERP Z)) (NOT (NUMBERP Y))) (EQUAL (DIFFERENCE 0 0) (DIFFERENCE Y Z))), which again simplifies, unfolding the definition of LESSP, to: T. Case 2.1.2. (IMPLIES (AND (LESSP Y Z) (NOT (NUMBERP X)) (NOT (NUMBERP Z)) (NUMBERP Y)) (EQUAL (DIFFERENCE Y 0) (DIFFERENCE Y Z))), which again simplifies, unfolding LESSP, to: T. Case 2.1.1. (IMPLIES (AND (LESSP Y Z) (NOT (NUMBERP X)) (NUMBERP Z) (NOT (NUMBERP Y))) (EQUAL (DIFFERENCE 0 Z) (DIFFERENCE Y Z))), which again simplifies, opening up the functions LESSP, EQUAL, and DIFFERENCE, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (DIFFERENCE (PLUS (SUB1 X) Y) (PLUS (SUB1 X) Z)) (DIFFERENCE Y Z))) (EQUAL (DIFFERENCE (PLUS X Y) (PLUS X Z)) (DIFFERENCE Y Z))), which simplifies, using linear arithmetic, to two new goals: Case 1.2. (IMPLIES (AND (LESSP (PLUS X Y) (PLUS X Z)) (NOT (ZEROP X)) (EQUAL (DIFFERENCE (PLUS (SUB1 X) Y) (PLUS (SUB1 X) Z)) (DIFFERENCE Y Z))) (EQUAL (DIFFERENCE (PLUS X Y) (PLUS X Z)) (DIFFERENCE Y Z))), which again simplifies, rewriting with SUB1-ADD1, and expanding the functions PLUS, ZEROP, and DIFFERENCE, to: T. Case 1.1. (IMPLIES (AND (LESSP Y Z) (NOT (ZEROP X)) (EQUAL (DIFFERENCE (PLUS (SUB1 X) Y) (PLUS (SUB1 X) Z)) (DIFFERENCE Y Z))) (EQUAL (DIFFERENCE (PLUS X Y) (PLUS X Z)) (DIFFERENCE Y Z))). But this again simplifies, applying SUB1-ADD1, and expanding the definitions of ZEROP, PLUS, and DIFFERENCE, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] DIFFERENCE-PLUS-PLUS-CANCELLATION-PROOF (PROVE-LEMMA DIFFERENCE-PLUS-PLUS-CANCELLATION (REWRITE) (AND (EQUAL (DIFFERENCE (PLUS X Y) (PLUS X Z)) (DIFFERENCE Y Z)) (EQUAL (DIFFERENCE (PLUS Y X) (PLUS X Z)) (DIFFERENCE Y Z)) (EQUAL (DIFFERENCE (PLUS X Y) (PLUS Z X)) (DIFFERENCE Y Z)) (EQUAL (DIFFERENCE (PLUS Y X) (PLUS Z X)) (DIFFERENCE Y Z))) ((USE (DIFFERENCE-PLUS-PLUS-CANCELLATION-PROOF (X X) (Y Y) (Z Z))) (ENABLE COMMUTATIVITY-OF-PLUS))) WARNING: Note that the proposed lemma DIFFERENCE-PLUS-PLUS-CANCELLATION is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and four replacement rules. This simplifies, applying COMMUTATIVITY-OF-PLUS, and unfolding the function AND, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS-PLUS-CANCELLATION (DISABLE DIFFERENCE-PLUS-PLUS-CANCELLATION) [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS-PLUS-CANCELLATION-OFF (PROVE-LEMMA DIFFERENCE-PLUS-PLUS-CANCELLATION-HACK (REWRITE) (EQUAL (DIFFERENCE (PLUS W X A) (PLUS Y Z A)) (DIFFERENCE (PLUS W X) (PLUS Y Z))) ((ENABLE COMMUTATIVITY-OF-PLUS COMMUTATIVITY2-OF-PLUS DIFFERENCE-PLUS-PLUS-CANCELLATION) (DO-NOT-INDUCT T))) This conjecture simplifies, using linear arithmetic, to the following two new goals: Case 2. (IMPLIES (LESSP (PLUS W X A) (PLUS Y Z A)) (EQUAL (DIFFERENCE (PLUS W X A) (PLUS Y Z A)) (DIFFERENCE (PLUS W X) (PLUS Y Z)))). However this again simplifies, rewriting with COMMUTATIVITY-OF-PLUS, COMMUTATIVITY2-OF-PLUS, and DIFFERENCE-PLUS-PLUS-CANCELLATION, to: T. Case 1. (IMPLIES (LESSP (PLUS W X) (PLUS Y Z)) (EQUAL (DIFFERENCE (PLUS W X A) (PLUS Y Z A)) (DIFFERENCE (PLUS W X) (PLUS Y Z)))). This again simplifies, applying COMMUTATIVITY-OF-PLUS, COMMUTATIVITY2-OF-PLUS, and DIFFERENCE-PLUS-PLUS-CANCELLATION, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS-PLUS-CANCELLATION-HACK (DISABLE DIFFERENCE-PLUS-PLUS-CANCELLATION-HACK) [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS-PLUS-CANCELLATION-HACK-OFF (PROVE-LEMMA DIFF-SUB1-ARG2 (REWRITE) (EQUAL (DIFFERENCE A (SUB1 B)) (IF (ZEROP B) (FIX A) (IF (LESSP A B) 0 (ADD1 (DIFFERENCE A B))))) ((INDUCT (DIFFERENCE A B)))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to three new conjectures: Case 3. (IMPLIES (ZEROP A) (EQUAL (DIFFERENCE A (SUB1 B)) (COND ((ZEROP B) (FIX A)) ((LESSP A B) 0) (T (ADD1 (DIFFERENCE A B)))))), which simplifies, opening up the definitions of ZEROP, EQUAL, DIFFERENCE, FIX, LESSP, and ADD1, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (ZEROP B)) (EQUAL (DIFFERENCE A (SUB1 B)) (COND ((ZEROP B) (FIX A)) ((LESSP A B) 0) (T (ADD1 (DIFFERENCE A B)))))), which simplifies, applying SUB1-NNUMBERP, and unfolding ZEROP, SUB1, EQUAL, DIFFERENCE, and FIX, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (DIFFERENCE (SUB1 A) (SUB1 (SUB1 B))) (COND ((ZEROP (SUB1 B)) (FIX (SUB1 A))) ((LESSP (SUB1 A) (SUB1 B)) 0) (T (ADD1 (DIFFERENCE (SUB1 A) (SUB1 B))))))) (EQUAL (DIFFERENCE A (SUB1 B)) (COND ((ZEROP B) (FIX A)) ((LESSP A B) 0) (T (ADD1 (DIFFERENCE A B)))))). This simplifies, opening up ZEROP, FIX, DIFFERENCE, LESSP, and EQUAL, to the following two new conjectures: Case 1.2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (SUB1 B) 0) (EQUAL (DIFFERENCE (SUB1 A) (SUB1 (SUB1 B))) (SUB1 A)) (NOT (EQUAL (SUB1 A) 0))) (EQUAL A (ADD1 (SUB1 A)))). However this again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (SUB1 B) 0) (EQUAL (DIFFERENCE (SUB1 A) (SUB1 (SUB1 B))) (SUB1 A)) (EQUAL (SUB1 A) 0)) (EQUAL A 1)), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFF-SUB1-ARG2 (DISABLE DIFF-SUB1-ARG2) [ 0.0 0.0 0.0 ] DIFF-SUB1-ARG2-OFF (PROVE-LEMMA DIFF-DIFF-ARG1 (REWRITE) (EQUAL (DIFFERENCE (DIFFERENCE X Y) Z) (DIFFERENCE X (PLUS Y Z)))) This simplifies, using linear arithmetic, to the following three new conjectures: Case 3. (IMPLIES (LESSP (DIFFERENCE X Y) Z) (EQUAL (DIFFERENCE (DIFFERENCE X Y) Z) (DIFFERENCE X (PLUS Y Z)))). Give the above formula the name *1. Case 2. (IMPLIES (LESSP X Y) (EQUAL (DIFFERENCE (DIFFERENCE X Y) Z) (DIFFERENCE X (PLUS Y Z)))), which we would usually push and work on later by induction. But if we must use induction to prove the input conjecture, we prefer to induct on the original formulation of the problem. Thus we will disregard all that we have previously done, give the name *1 to the original input, and work on it. So now let us consider: (EQUAL (DIFFERENCE (DIFFERENCE X Y) Z) (DIFFERENCE X (PLUS Y Z))). We gave this the name *1 above. Perhaps we can prove it by induction. There are five plausible inductions. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (ZEROP X) (p X Y Z)) (IMPLIES (AND (NOT (ZEROP X)) (ZEROP Y)) (p X Y Z)) (IMPLIES (AND (NOT (ZEROP X)) (NOT (ZEROP Y)) (p (SUB1 X) (SUB1 Y) Z)) (p X Y Z))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for Y. The above induction scheme produces the following three new conjectures: Case 3. (IMPLIES (ZEROP X) (EQUAL (DIFFERENCE (DIFFERENCE X Y) Z) (DIFFERENCE X (PLUS Y Z)))). This simplifies, using linear arithmetic, to the following three new goals: Case 3.3. (IMPLIES (AND (LESSP (DIFFERENCE X Y) Z) (ZEROP X)) (EQUAL (DIFFERENCE (DIFFERENCE X Y) Z) (DIFFERENCE X (PLUS Y Z)))). But this again simplifies, unfolding the functions DIFFERENCE, ZEROP, EQUAL, and PLUS, to: T. Case 3.2. (IMPLIES (AND (LESSP X Y) (ZEROP X)) (EQUAL (DIFFERENCE (DIFFERENCE X Y) Z) (DIFFERENCE X (PLUS Y Z)))), which again simplifies, opening up ZEROP, EQUAL, DIFFERENCE, and PLUS, to: T. Case 3.1. (IMPLIES (AND (LESSP X (PLUS Y Z)) (ZEROP X)) (EQUAL (DIFFERENCE (DIFFERENCE X Y) Z) (DIFFERENCE X (PLUS Y Z)))), which again simplifies, applying the lemma PLUS-ZERO-ARG2, and opening up PLUS, ZEROP, EQUAL, DIFFERENCE, and NUMBERP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP X)) (ZEROP Y)) (EQUAL (DIFFERENCE (DIFFERENCE X Y) Z) (DIFFERENCE X (PLUS Y Z)))), which simplifies, using linear arithmetic, to three new formulas: Case 2.3. (IMPLIES (AND (LESSP (DIFFERENCE X Y) Z) (NOT (ZEROP X)) (ZEROP Y)) (EQUAL (DIFFERENCE (DIFFERENCE X Y) Z) (DIFFERENCE X (PLUS Y Z)))), which again simplifies, expanding DIFFERENCE, ZEROP, EQUAL, and PLUS, to two new conjectures: Case 2.3.2. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL Y 0) (LESSP X Z) (NOT (NUMBERP Z))) (EQUAL (DIFFERENCE X Z) (DIFFERENCE X 0))), which again simplifies, unfolding the definition of LESSP, to: T. Case 2.3.1. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (NUMBERP Y)) (LESSP X Z) (NOT (NUMBERP Z))) (EQUAL (DIFFERENCE X Z) (DIFFERENCE X 0))), which again simplifies, unfolding LESSP, to: T. Case 2.2. (IMPLIES (AND (LESSP X Y) (NOT (ZEROP X)) (ZEROP Y)) (EQUAL (DIFFERENCE (DIFFERENCE X Y) Z) (DIFFERENCE X (PLUS Y Z)))), which again simplifies, opening up the functions ZEROP, EQUAL, DIFFERENCE, and PLUS, to two new conjectures: Case 2.2.2. (IMPLIES (AND (LESSP X Y) (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL Y 0) (NOT (NUMBERP Z))) (EQUAL (DIFFERENCE X Z) (DIFFERENCE X 0))), which again simplifies, using linear arithmetic, to: T. Case 2.2.1. (IMPLIES (AND (LESSP X Y) (NOT (EQUAL X 0)) (NUMBERP X) (NOT (NUMBERP Y)) (NOT (NUMBERP Z))) (EQUAL (DIFFERENCE X Z) (DIFFERENCE X 0))), which again simplifies, unfolding the definition of LESSP, to: T. Case 2.1. (IMPLIES (AND (LESSP X (PLUS Y Z)) (NOT (ZEROP X)) (ZEROP Y)) (EQUAL (DIFFERENCE (DIFFERENCE X Y) Z) (DIFFERENCE X (PLUS Y Z)))), which again simplifies, applying the lemma PLUS-ZERO-ARG2, and expanding the definitions of PLUS, ZEROP, EQUAL, DIFFERENCE, and NUMBERP, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (NOT (ZEROP Y)) (EQUAL (DIFFERENCE (DIFFERENCE (SUB1 X) (SUB1 Y)) Z) (DIFFERENCE (SUB1 X) (PLUS (SUB1 Y) Z)))) (EQUAL (DIFFERENCE (DIFFERENCE X Y) Z) (DIFFERENCE X (PLUS Y Z)))), which simplifies, using linear arithmetic, to three new goals: Case 1.3. (IMPLIES (AND (LESSP (DIFFERENCE X Y) Z) (NOT (ZEROP X)) (NOT (ZEROP Y)) (EQUAL (DIFFERENCE (DIFFERENCE (SUB1 X) (SUB1 Y)) Z) (DIFFERENCE (SUB1 X) (PLUS (SUB1 Y) Z)))) (EQUAL (DIFFERENCE (DIFFERENCE X Y) Z) (DIFFERENCE X (PLUS Y Z)))), which again simplifies, applying the lemma SUB1-ADD1, and opening up the functions DIFFERENCE, ZEROP, and PLUS, to: T. Case 1.2. (IMPLIES (AND (LESSP X Y) (NOT (ZEROP X)) (NOT (ZEROP Y)) (EQUAL (DIFFERENCE (DIFFERENCE (SUB1 X) (SUB1 Y)) Z) (DIFFERENCE (SUB1 X) (PLUS (SUB1 Y) Z)))) (EQUAL (DIFFERENCE (DIFFERENCE X Y) Z) (DIFFERENCE X (PLUS Y Z)))), which again simplifies, appealing to the lemma SUB1-ADD1, and expanding LESSP, ZEROP, DIFFERENCE, and PLUS, to: T. Case 1.1. (IMPLIES (AND (LESSP X (PLUS Y Z)) (NOT (ZEROP X)) (NOT (ZEROP Y)) (EQUAL (DIFFERENCE (DIFFERENCE (SUB1 X) (SUB1 Y)) Z) (DIFFERENCE (SUB1 X) (PLUS (SUB1 Y) Z)))) (EQUAL (DIFFERENCE (DIFFERENCE X Y) Z) (DIFFERENCE X (PLUS Y Z)))), which again simplifies, rewriting with SUB1-ADD1, and opening up the definitions of PLUS, ZEROP, and DIFFERENCE, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] DIFF-DIFF-ARG1 (PROVE-LEMMA DIFF-DIFF-ARG2 (REWRITE) (EQUAL (DIFFERENCE A (DIFFERENCE B C)) (IF (LESSP B C) (FIX A) (DIFFERENCE (PLUS A C) B))) ((ENABLE DIFF-SUB1-ARG2 PLUS-ZERO-ARG2) (INDUCT (DIFFERENCE A B)))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to three new goals: Case 3. (IMPLIES (ZEROP A) (EQUAL (DIFFERENCE A (DIFFERENCE B C)) (IF (LESSP B C) (FIX A) (DIFFERENCE (PLUS A C) B)))), which simplifies, unfolding the definitions of ZEROP, EQUAL, DIFFERENCE, FIX, and PLUS, to four new conjectures: Case 3.4. (IMPLIES (AND (EQUAL A 0) (NOT (LESSP B C)) (NUMBERP C)) (EQUAL 0 (DIFFERENCE C B))), which again simplifies, applying EQUAL-DIFFERENCE-0, to: T. Case 3.3. (IMPLIES (AND (EQUAL A 0) (NOT (LESSP B C)) (NOT (NUMBERP C))) (EQUAL 0 (DIFFERENCE 0 B))). This again simplifies, unfolding the definitions of LESSP, EQUAL, and DIFFERENCE, to: T. Case 3.2. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (LESSP B C)) (NUMBERP C)) (EQUAL 0 (DIFFERENCE C B))), which again simplifies, rewriting with EQUAL-DIFFERENCE-0, to: T. Case 3.1. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (LESSP B C)) (NOT (NUMBERP C))) (EQUAL 0 (DIFFERENCE 0 B))). However this again simplifies, expanding the definitions of LESSP, EQUAL, and DIFFERENCE, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (ZEROP B)) (EQUAL (DIFFERENCE A (DIFFERENCE B C)) (IF (LESSP B C) (FIX A) (DIFFERENCE (PLUS A C) B)))), which simplifies, applying EQUAL-PLUS-0, and opening up the definitions of ZEROP, EQUAL, DIFFERENCE, LESSP, and FIX, to the following four new conjectures: Case 2.4. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL B 0) (NOT (NUMBERP C))) (EQUAL A (PLUS A C))). This again simplifies, rewriting with PLUS-ZERO-ARG2, and unfolding the function ZEROP, to: T. Case 2.3. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL B 0) (EQUAL C 0)) (EQUAL A (PLUS A C))). But this again simplifies, using linear arithmetic, to: T. Case 2.2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP B)) (NOT (NUMBERP C))) (EQUAL A (PLUS A C))), which again simplifies, applying PLUS-ZERO-ARG2, and unfolding the function ZEROP, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP B)) (EQUAL C 0)) (EQUAL A (PLUS A C))). But this again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (DIFFERENCE (SUB1 A) (DIFFERENCE (SUB1 B) C)) (IF (LESSP (SUB1 B) C) (FIX (SUB1 A)) (DIFFERENCE (PLUS (SUB1 A) C) (SUB1 B))))) (EQUAL (DIFFERENCE A (DIFFERENCE B C)) (IF (LESSP B C) (FIX A) (DIFFERENCE (PLUS A C) B)))), which simplifies, rewriting with the lemmas COMMUTATIVITY-OF-PLUS, DIFF-SUB1-ARG2, and SUB1-ADD1, and expanding the functions FIX, PLUS, and DIFFERENCE, to seven new conjectures: Case 1.7. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (SUB1 B) C)) (LESSP (PLUS C (SUB1 A)) B) (EQUAL (DIFFERENCE (SUB1 A) (DIFFERENCE (SUB1 B) C)) 0) (NOT (LESSP B C))) (EQUAL (DIFFERENCE A (DIFFERENCE B C)) 0)), which again simplifies, using linear arithmetic, to two new formulas: Case 1.7.2. (IMPLIES (AND (LESSP A (DIFFERENCE B C)) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (SUB1 B) C)) (LESSP (PLUS C (SUB1 A)) B) (EQUAL (DIFFERENCE (SUB1 A) (DIFFERENCE (SUB1 B) C)) 0) (NOT (LESSP B C))) (EQUAL (DIFFERENCE A (DIFFERENCE B C)) 0)), which again simplifies, using linear arithmetic, to the conjecture: (IMPLIES (AND (LESSP (SUB1 A) (DIFFERENCE (SUB1 B) C)) (LESSP A (DIFFERENCE B C)) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (SUB1 B) C)) (LESSP (PLUS C (SUB1 A)) B) (EQUAL (DIFFERENCE (SUB1 A) (DIFFERENCE (SUB1 B) C)) 0) (NOT (LESSP B C))) (EQUAL (DIFFERENCE A (DIFFERENCE B C)) 0)). However this again simplifies, appealing to the lemma EQUAL-DIFFERENCE-0, to: (IMPLIES (AND (LESSP (SUB1 A) (DIFFERENCE (SUB1 B) C)) (LESSP A (DIFFERENCE B C)) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (SUB1 B) C)) (LESSP (PLUS C (SUB1 A)) B) (NOT (LESSP (DIFFERENCE (SUB1 B) C) (SUB1 A))) (NOT (LESSP B C))) (NOT (LESSP (DIFFERENCE B C) A))). However this again simplifies, using linear arithmetic, to: T. Case 1.7.1. (IMPLIES (AND (LESSP (SUB1 A) (DIFFERENCE (SUB1 B) C)) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (SUB1 B) C)) (LESSP (PLUS C (SUB1 A)) B) (EQUAL (DIFFERENCE (SUB1 A) (DIFFERENCE (SUB1 B) C)) 0) (NOT (LESSP B C))) (EQUAL (DIFFERENCE A (DIFFERENCE B C)) 0)), which again simplifies, applying EQUAL-DIFFERENCE-0, to: (IMPLIES (AND (LESSP (SUB1 A) (DIFFERENCE (SUB1 B) C)) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (SUB1 B) C)) (LESSP (PLUS C (SUB1 A)) B) (NOT (LESSP (DIFFERENCE (SUB1 B) C) (SUB1 A))) (NOT (LESSP B C))) (NOT (LESSP (DIFFERENCE B C) A))), which again simplifies, using linear arithmetic, to: T. Case 1.6. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (SUB1 B) C)) (LESSP (PLUS C (SUB1 A)) B) (EQUAL (DIFFERENCE (SUB1 A) (DIFFERENCE (SUB1 B) C)) 0) (LESSP B C)) (EQUAL (DIFFERENCE A (DIFFERENCE B C)) A)), which again simplifies, using linear arithmetic, to: T. Case 1.5. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (SUB1 B) C)) (NOT (LESSP (PLUS C (SUB1 A)) B)) (EQUAL (DIFFERENCE (SUB1 A) (DIFFERENCE (SUB1 B) C)) (ADD1 (DIFFERENCE (PLUS C (SUB1 A)) B))) (NOT (LESSP B C))) (EQUAL (DIFFERENCE A (DIFFERENCE B C)) (ADD1 (DIFFERENCE (PLUS C (SUB1 A)) B)))), which again simplifies, using linear arithmetic, to the formula: (IMPLIES (AND (LESSP A (DIFFERENCE B C)) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (SUB1 B) C)) (NOT (LESSP (PLUS C (SUB1 A)) B)) (EQUAL (DIFFERENCE (SUB1 A) (DIFFERENCE (SUB1 B) C)) (ADD1 (DIFFERENCE (PLUS C (SUB1 A)) B))) (NOT (LESSP B C))) (EQUAL (DIFFERENCE A (DIFFERENCE B C)) (ADD1 (DIFFERENCE (PLUS C (SUB1 A)) B)))). However this again simplifies, using linear arithmetic, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (SUB1 B) C)) (NOT (LESSP (PLUS C (SUB1 A)) B)) (EQUAL (DIFFERENCE (SUB1 A) (DIFFERENCE (SUB1 B) C)) (ADD1 (DIFFERENCE (PLUS C (SUB1 A)) B))) (LESSP B C)) (EQUAL (DIFFERENCE A (DIFFERENCE B C)) A)), which again simplifies, using linear arithmetic, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (LESSP (SUB1 B) C) (EQUAL (DIFFERENCE (SUB1 A) (DIFFERENCE (SUB1 B) C)) (SUB1 A)) (NOT (LESSP B C)) (LESSP (PLUS C (SUB1 A)) B)) (EQUAL (DIFFERENCE A (DIFFERENCE B C)) 0)), which again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (LESSP (SUB1 B) C) (EQUAL (DIFFERENCE (SUB1 A) (DIFFERENCE (SUB1 B) C)) (SUB1 A)) (NOT (LESSP B C)) (NOT (LESSP (PLUS C (SUB1 A)) B))) (EQUAL (DIFFERENCE A (DIFFERENCE B C)) (ADD1 (DIFFERENCE (PLUS C (SUB1 A)) B)))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP A (DIFFERENCE B C)) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (LESSP (SUB1 B) C) (EQUAL (DIFFERENCE (SUB1 A) (DIFFERENCE (SUB1 B) C)) (SUB1 A)) (NOT (LESSP B C)) (NOT (LESSP (PLUS C (SUB1 A)) B))) (EQUAL (DIFFERENCE A (DIFFERENCE B C)) (ADD1 (DIFFERENCE (PLUS C (SUB1 A)) B)))). However this again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (LESSP (SUB1 B) C) (EQUAL (DIFFERENCE (SUB1 A) (DIFFERENCE (SUB1 B) C)) (SUB1 A)) (LESSP B C)) (EQUAL (DIFFERENCE A (DIFFERENCE B C)) A)). Applying the lemma SUB1-ELIM, replace B by (ADD1 X) to eliminate (SUB1 B). We rely upon the type restriction lemma noted when SUB1 was introduced to restrict the new variable. We thus obtain: (IMPLIES (AND (NUMBERP X) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL (ADD1 X) 0)) (LESSP X C) (EQUAL (DIFFERENCE (SUB1 A) (DIFFERENCE X C)) (SUB1 A)) (LESSP (ADD1 X) C)) (EQUAL (DIFFERENCE A (DIFFERENCE (ADD1 X) C)) A)), which further simplifies, rewriting with SUB1-ADD1 and DIFF-SUB1-ARG2, and unfolding LESSP, DIFFERENCE, and EQUAL, to: T. Q.E.D. [ 0.0 0.1 0.3 ] DIFF-DIFF-ARG2 (PROVE-LEMMA DIFF-DIFF-DIFF (REWRITE) (IMPLIES (AND (LEQ B A) (LEQ D C)) (EQUAL (DIFFERENCE (DIFFERENCE A B) (DIFFERENCE C D)) (DIFFERENCE (PLUS A D) (PLUS B C)))) ((ENABLE DIFF-DIFF-ARG1 DIFF-DIFF-ARG2 PLUS-DIFFERENCE-ARG2 PLUS-ZERO-ARG2) (DO-NOT-INDUCT T))) WARNING: the previously added lemma, DIFF-DIFF-ARG2, could be applied whenever the newly proposed DIFF-DIFF-DIFF could! WARNING: the previously added lemma, DIFF-DIFF-ARG1, could be applied whenever the newly proposed DIFF-DIFF-DIFF could! This formula can be simplified, using the abbreviations AND, IMPLIES, and DIFF-DIFF-ARG1, to the new goal: (IMPLIES (AND (NOT (LESSP A B)) (NOT (LESSP C D))) (EQUAL (DIFFERENCE A (PLUS B (DIFFERENCE C D))) (DIFFERENCE (PLUS A D) (PLUS B C)))), which simplifies, using linear arithmetic, to two new goals: Case 2. (IMPLIES (AND (LESSP A (PLUS B (DIFFERENCE C D))) (NOT (LESSP A B)) (NOT (LESSP C D))) (EQUAL (DIFFERENCE A (PLUS B (DIFFERENCE C D))) (DIFFERENCE (PLUS A D) (PLUS B C)))), which again simplifies, rewriting with PLUS-ZERO-ARG2, PLUS-DIFFERENCE-ARG2, and DIFF-DIFF-ARG2, and unfolding the functions ZEROP, LESSP, EQUAL, DIFFERENCE, and PLUS, to the following eight new formulas: Case 2.8. (IMPLIES (AND (NOT (LESSP D C)) (NOT (NUMBERP B)) (LESSP A 0) (NOT (LESSP C D)) (NOT (NUMBERP C)) (NOT (EQUAL A 0)) (NUMBERP A)) (EQUAL A (DIFFERENCE (PLUS A D) 0))). This again simplifies, using linear arithmetic, to: T. Case 2.7. (IMPLIES (AND (NOT (LESSP D C)) (NOT (NUMBERP B)) (LESSP A 0) (NOT (LESSP C D)) (NOT (NUMBERP C)) (EQUAL A 0)) (EQUAL 0 (DIFFERENCE (PLUS A D) 0))), which again simplifies, using linear arithmetic, to: T. Case 2.6. (IMPLIES (AND (NOT (LESSP D C)) (NOT (NUMBERP B)) (LESSP A 0) (NOT (LESSP C D)) (NOT (NUMBERP C)) (NOT (NUMBERP A))) (EQUAL 0 (DIFFERENCE (PLUS A D) 0))), which again simplifies, using linear arithmetic, to: T. Case 2.5. (IMPLIES (AND (NOT (LESSP D C)) (NOT (NUMBERP B)) (LESSP A 0) (NOT (LESSP C D)) (NUMBERP C) (NOT (EQUAL A 0)) (NUMBERP A)) (EQUAL A (DIFFERENCE (PLUS A D) C))), which again simplifies, using linear arithmetic, to: T. Case 2.4. (IMPLIES (AND (NOT (LESSP D C)) (NOT (NUMBERP B)) (LESSP A 0) (NOT (LESSP C D)) (NUMBERP C) (EQUAL A 0)) (EQUAL 0 (DIFFERENCE (PLUS A D) C))), which again simplifies, using linear arithmetic, to: T. Case 2.3. (IMPLIES (AND (NOT (LESSP D C)) (NOT (NUMBERP B)) (LESSP A 0) (NOT (LESSP C D)) (NUMBERP C) (NOT (NUMBERP A))) (EQUAL 0 (DIFFERENCE (PLUS A D) C))), which again simplifies, using linear arithmetic, to: T. Case 2.2. (IMPLIES (AND (LESSP D C) (LESSP A (DIFFERENCE (PLUS B C) D)) (NOT (LESSP A B)) (NOT (LESSP C D)) (LESSP (PLUS B C) D) (NUMBERP A)) (EQUAL A (DIFFERENCE (PLUS A D) (PLUS B C)))), which again simplifies, using linear arithmetic, to: T. Case 2.1. (IMPLIES (AND (LESSP D C) (LESSP A (DIFFERENCE (PLUS B C) D)) (NOT (LESSP A B)) (NOT (LESSP C D)) (LESSP (PLUS B C) D) (NOT (NUMBERP A))) (EQUAL 0 (DIFFERENCE (PLUS A D) (PLUS B C)))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (LESSP (PLUS A D) (PLUS B C)) (NOT (LESSP A B)) (NOT (LESSP C D))) (EQUAL (DIFFERENCE A (PLUS B (DIFFERENCE C D))) (DIFFERENCE (PLUS A D) (PLUS B C)))), which again simplifies, rewriting with PLUS-ZERO-ARG2 and PLUS-DIFFERENCE-ARG2, and opening up the function ZEROP, to the following three new conjectures: Case 1.3. (IMPLIES (AND (LESSP (PLUS A D) (PLUS B C)) (NOT (LESSP A B)) (NOT (LESSP C D)) (NOT (LESSP D C)) (NUMBERP B)) (EQUAL (DIFFERENCE A B) (DIFFERENCE (PLUS A D) (PLUS B C)))). However this again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (LESSP (PLUS A D) (PLUS B C)) (NOT (LESSP A B)) (NOT (LESSP C D)) (NOT (LESSP D C)) (NOT (NUMBERP B))) (EQUAL (DIFFERENCE A 0) (DIFFERENCE (PLUS A D) (PLUS B C)))), which again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (LESSP (PLUS A D) (PLUS B C)) (NOT (LESSP A B)) (NOT (LESSP C D)) (LESSP D C)) (EQUAL (DIFFERENCE A (DIFFERENCE (PLUS B C) D)) (DIFFERENCE (PLUS A D) (PLUS B C)))), which again simplifies, applying DIFF-DIFF-ARG2, to the following two new formulas: Case 1.1.2. (IMPLIES (AND (LESSP (PLUS A D) (PLUS B C)) (NOT (LESSP A B)) (NOT (LESSP C D)) (LESSP D C) (LESSP (PLUS B C) D) (NUMBERP A)) (EQUAL A (DIFFERENCE (PLUS A D) (PLUS B C)))). But this again simplifies, using linear arithmetic, to: T. Case 1.1.1. (IMPLIES (AND (LESSP (PLUS A D) (PLUS B C)) (NOT (LESSP A B)) (NOT (LESSP C D)) (LESSP D C) (LESSP (PLUS B C) D) (NOT (NUMBERP A))) (EQUAL 0 (DIFFERENCE (PLUS A D) (PLUS B C)))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFF-DIFF-DIFF (DISABLE DIFF-DIFF-DIFF) [ 0.0 0.0 0.0 ] DIFF-DIFF-DIFF-OFF (PROVE-LEMMA DIFFERENCE-LESSP-ARG1 (REWRITE) (IMPLIES (LESSP A B) (EQUAL (DIFFERENCE A B) 0))) This conjecture can be simplified, using the abbreviations EQUAL-DIFFERENCE-0 and IMPLIES, to: (IMPLIES (LESSP A B) (NOT (LESSP B A))). This simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-LESSP-ARG1 (DISABLE DIFFERENCE-LESSP-ARG1) [ 0.0 0.0 0.0 ] DIFFERENCE-LESSP-ARG1-OFF (DEFN PLUS-FRINGE (X) (IF (AND (LISTP X) (EQUAL (CAR X) 'PLUS)) (APPEND (PLUS-FRINGE (CADR X)) (PLUS-FRINGE (CADDR X))) (CONS X NIL))) Linear arithmetic, the lemmas CAR-LESSEQP, CDR-LESSEQP, and CDR-LESSP, and the definition of AND establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each recursive call. Hence, PLUS-FRINGE is accepted under the principle of definition. Note that (LISTP (PLUS-FRINGE X)) is a theorem. [ 0.0 0.0 0.0 ] PLUS-FRINGE (DEFN PLUS-TREE (L) (IF (NLISTP L) ''0 (IF (NLISTP (CDR L)) (LIST 'FIX (CAR L)) (IF (NLISTP (CDDR L)) (LIST 'PLUS (CAR L) (CADR L)) (LIST 'PLUS (CAR L) (PLUS-TREE (CDR L))))))) Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP inform us that the measure (COUNT L) decreases according to the well-founded relation LESSP in each recursive call. Hence, PLUS-TREE is accepted under the principle of definition. Note that (LISTP (PLUS-TREE L)) is a theorem. [ 0.0 0.0 0.0 ] PLUS-TREE (PROVE-LEMMA NUMBERP-EVAL$-PLUS (REWRITE) (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'PLUS)) (NUMBERP (EVAL$ T X A)))) . Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X). This produces: (IMPLIES (EQUAL Z 'PLUS) (NUMBERP (EVAL$ T (CONS Z V) A))), which simplifies, applying REWRITE-EVAL$, to: T. Q.E.D. [ 0.0 0.0 0.0 ] NUMBERP-EVAL$-PLUS (DISABLE NUMBERP-EVAL$-PLUS) [ 0.0 0.0 0.0 ] NUMBERP-EVAL$-PLUS-OFF (PROVE-LEMMA NUMBERP-EVAL$-PLUS-TREE (REWRITE) (NUMBERP (EVAL$ T (PLUS-TREE L) A)) ((ENABLE PLUS-TREE))) Call the conjecture *1. We will try to prove it by induction. There is only one suggested induction. We will induct according to the following scheme: (AND (IMPLIES (NLISTP L) (p L A)) (IMPLIES (AND (NOT (NLISTP L)) (NLISTP (CDR L))) (p L A)) (IMPLIES (AND (NOT (NLISTP L)) (NOT (NLISTP (CDR L))) (NLISTP (CDDR L))) (p L A)) (IMPLIES (AND (NOT (NLISTP L)) (NOT (NLISTP (CDR L))) (NOT (NLISTP (CDDR L))) (p (CDR L) A)) (p L A))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP can be used to establish that the measure (COUNT L) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates the following four new formulas: Case 4. (IMPLIES (NLISTP L) (NUMBERP (EVAL$ T (PLUS-TREE L) A))). This simplifies, expanding the definitions of NLISTP, PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, and NUMBERP, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP L)) (NLISTP (CDR L))) (NUMBERP (EVAL$ T (PLUS-TREE L) A))). This simplifies, appealing to the lemmas REWRITE-EVAL$ and CAR-CONS, and opening up NLISTP, PLUS-TREE, and FIX, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP L)) (NOT (NLISTP (CDR L))) (NLISTP (CDDR L))) (NUMBERP (EVAL$ T (PLUS-TREE L) A))). This simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and unfolding the definitions of NLISTP and PLUS-TREE, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP L)) (NOT (NLISTP (CDR L))) (NOT (NLISTP (CDDR L))) (NUMBERP (EVAL$ T (PLUS-TREE (CDR L)) A))) (NUMBERP (EVAL$ T (PLUS-TREE L) A))), which simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and expanding the functions NLISTP and PLUS-TREE, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] NUMBERP-EVAL$-PLUS-TREE (DISABLE NUMBERP-EVAL$-PLUS-TREE) [ 0.0 0.0 0.0 ] NUMBERP-EVAL$-PLUS-TREE-OFF (PROVE-LEMMA MEMBER-IMPLIES-PLUS-TREE-GREATEREQP (REWRITE) (IMPLIES (MEMBER X Y) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T X A)))) ((ENABLE PLUS-TREE PLUS-ZERO-ARG2))) WARNING: When the linear lemma MEMBER-IMPLIES-PLUS-TREE-GREATEREQP is stored under (EVAL$ T (PLUS-TREE Y) A) it contains the free variable X which will be chosen by instantiating the hypothesis (MEMBER X Y). WARNING: When the linear lemma MEMBER-IMPLIES-PLUS-TREE-GREATEREQP is stored under (EVAL$ T X A) it contains the free variable Y which will be chosen by instantiating the hypothesis (MEMBER X Y). WARNING: Note that the proposed lemma MEMBER-IMPLIES-PLUS-TREE-GREATEREQP is to be stored as zero type prescription rules, zero compound recognizer rules, two linear rules, and zero replacement rules. Give the conjecture the name *1. We will appeal to induction. Three inductions are suggested by terms in the conjecture. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (NLISTP Y) (p Y A X)) (IMPLIES (AND (NOT (NLISTP Y)) (EQUAL X (CAR Y))) (p Y A X)) (IMPLIES (AND (NOT (NLISTP Y)) (NOT (EQUAL X (CAR Y))) (p (CDR Y) A X)) (p Y A X))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP can be used to establish that the measure (COUNT Y) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme leads to four new goals: Case 4. (IMPLIES (AND (NLISTP Y) (MEMBER X Y)) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T X A)))), which simplifies, rewriting with MEMBER-NON-LIST, and opening up the definition of NLISTP, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP Y)) (EQUAL X (CAR Y)) (MEMBER X Y)) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T X A)))). This simplifies, unfolding the functions NLISTP, MEMBER, and PLUS-TREE, to the following three new conjectures: Case 3.3. (IMPLIES (AND (LISTP Y) (NOT (LISTP (CDR Y)))) (NOT (LESSP (EVAL$ T (LIST 'FIX (CAR Y)) A) (EVAL$ T (CAR Y) A)))). But this again simplifies, applying REWRITE-EVAL$ and CAR-CONS, and unfolding FIX, to the following two new formulas: Case 3.3.2. (IMPLIES (AND (LISTP Y) (NOT (LISTP (CDR Y))) (NOT (NUMBERP (EVAL$ T (CAR Y) A)))) (NOT (LESSP 0 (EVAL$ T (CAR Y) A)))). But this again simplifies, expanding the function LESSP, to: T. Case 3.3.1. (IMPLIES (AND (LISTP Y) (NOT (LISTP (CDR Y))) (NUMBERP (EVAL$ T (CAR Y) A))) (NOT (LESSP (EVAL$ T (CAR Y) A) (EVAL$ T (CAR Y) A)))), which again simplifies, using linear arithmetic, to: T. Case 3.2. (IMPLIES (AND (LISTP Y) (LISTP (CDR Y)) (LISTP (CDDR Y))) (NOT (LESSP (EVAL$ T (LIST 'PLUS (CAR Y) (PLUS-TREE (CDR Y))) A) (EVAL$ T (CAR Y) A)))), which again simplifies, applying the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: (IMPLIES (AND (LISTP Y) (LISTP (CDR Y)) (LISTP (CDDR Y))) (NOT (LESSP (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T (CAR Y) A)))). But this again simplifies, using linear arithmetic, to: T. Case 3.1. (IMPLIES (AND (LISTP Y) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y)))) (NOT (LESSP (EVAL$ T (LIST 'PLUS (CAR Y) (CADR Y)) A) (EVAL$ T (CAR Y) A)))), which again simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: (IMPLIES (AND (LISTP Y) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y)))) (NOT (LESSP (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CADR Y) A)) (EVAL$ T (CAR Y) A)))). However this again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP Y)) (NOT (EQUAL X (CAR Y))) (NOT (MEMBER X (CDR Y))) (MEMBER X Y)) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T X A)))), which simplifies, opening up NLISTP and MEMBER, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP Y)) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X Y)) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T X A)))), which simplifies, unfolding NLISTP, MEMBER, and PLUS-TREE, to three new conjectures: Case 1.3. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (NOT (LISTP (CDR Y)))) (NOT (LESSP (EVAL$ T (LIST 'FIX (CAR Y)) A) (EVAL$ T X A)))), which again simplifies, rewriting with REWRITE-EVAL$ and CAR-CONS, and expanding the definition of FIX, to the following two new conjectures: Case 1.3.2. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (NOT (LISTP (CDR Y))) (NOT (NUMBERP (EVAL$ T (CAR Y) A)))) (NOT (LESSP 0 (EVAL$ T X A)))). This again simplifies, expanding the definitions of EQUAL and LESSP, to: (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (NOT (LISTP (CDR Y))) (NOT (NUMBERP (EVAL$ T (CAR Y) A))) (NOT (EQUAL (EVAL$ T X A) 0))) (NOT (NUMBERP (EVAL$ T X A)))). But this further simplifies, expanding PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, and LESSP, to: T. Case 1.3.1. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (NOT (LISTP (CDR Y))) (NUMBERP (EVAL$ T (CAR Y) A))) (NOT (LESSP (EVAL$ T (CAR Y) A) (EVAL$ T X A)))), which further simplifies, applying MEMBER-NON-LIST, and unfolding the definitions of PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, and LESSP, to: T. Case 1.2. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (LISTP (CDDR Y))) (NOT (LESSP (EVAL$ T (LIST 'PLUS (CAR Y) (PLUS-TREE (CDR Y))) A) (EVAL$ T X A)))). However this again simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to the new conjecture: (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (LISTP (CDDR Y))) (NOT (LESSP (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)))), which again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y)))) (NOT (LESSP (EVAL$ T (LIST 'PLUS (CAR Y) (CADR Y)) A) (EVAL$ T X A)))), which again simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y)))) (NOT (LESSP (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CADR Y) A)) (EVAL$ T X A)))). However this further simplifies, applying REWRITE-EVAL$, CAR-CONS, MEMBER-NON-LIST, and COMMUTATIVITY-OF-PLUS, and unfolding the functions PLUS-TREE, FIX, and MEMBER, to the following two new goals: Case 1.1.2. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CADR Y) A))) (NOT (LESSP 0 (EVAL$ T X A))) (EQUAL X (CADR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y)))) (NOT (LESSP (PLUS (EVAL$ T X A) (EVAL$ T (CAR Y) A)) (EVAL$ T X A)))). However this again simplifies, using linear arithmetic, to: T. Case 1.1.1. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NUMBERP (EVAL$ T (CADR Y) A)) (NOT (LESSP (EVAL$ T (CADR Y) A) (EVAL$ T X A))) (EQUAL X (CADR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y)))) (NOT (LESSP (PLUS (EVAL$ T X A) (EVAL$ T (CAR Y) A)) (EVAL$ T X A)))), which again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] MEMBER-IMPLIES-PLUS-TREE-GREATEREQP (DISABLE MEMBER-IMPLIES-PLUS-TREE-GREATEREQP) [ 0.0 0.0 0.0 ] MEMBER-IMPLIES-PLUS-TREE-GREATEREQP-OFF (PROVE-LEMMA PLUS-TREE-DELETE (REWRITE) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X Y)) A) (IF (MEMBER X Y) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T X A)) (EVAL$ T (PLUS-TREE Y) A))) ((ENABLE DELETE PLUS-TREE DELETE-NON-MEMBER DIFFERENCE-PLUS-CANCELLATION EQUAL-DIFFERENCE-0 EQUAL-PLUS-0 LISTP-DELETE MEMBER-IMPLIES-PLUS-TREE-GREATEREQP NUMBERP-EVAL$-PLUS-TREE PLUS-ZERO-ARG2))) This simplifies, clearly, to the following two new formulas: Case 2. (IMPLIES (NOT (MEMBER X Y)) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X Y)) A) (EVAL$ T (PLUS-TREE Y) A))). But this again simplifies, rewriting with DELETE-NON-MEMBER, to: T. Case 1. (IMPLIES (MEMBER X Y) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X Y)) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T X A)))). Name the above subgoal *1. We will appeal to induction. There are four plausible inductions. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (NLISTP Y) (p X Y A)) (IMPLIES (AND (NOT (NLISTP Y)) (EQUAL X (CAR Y))) (p X Y A)) (IMPLIES (AND (NOT (NLISTP Y)) (NOT (EQUAL X (CAR Y))) (p X (CDR Y) A)) (p X Y A))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP can be used to show that the measure (COUNT Y) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates four new conjectures: Case 4. (IMPLIES (AND (NLISTP Y) (MEMBER X Y)) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X Y)) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T X A)))), which simplifies, appealing to the lemma MEMBER-NON-LIST, and unfolding the definition of NLISTP, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP Y)) (EQUAL X (CAR Y)) (MEMBER X Y)) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X Y)) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T X A)))), which simplifies, unfolding the definitions of NLISTP, MEMBER, DELETE, and PLUS-TREE, to three new goals: Case 3.3. (IMPLIES (AND (LISTP Y) (NOT (LISTP (CDR Y)))) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) (DIFFERENCE (EVAL$ T (LIST 'FIX (CAR Y)) A) (EVAL$ T (CAR Y) A)))), which again simplifies, applying the lemmas REWRITE-EVAL$ and CAR-CONS, and unfolding FIX, to two new goals: Case 3.3.2. (IMPLIES (AND (LISTP Y) (NOT (LISTP (CDR Y))) (NOT (NUMBERP (EVAL$ T (CAR Y) A)))) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) (DIFFERENCE 0 (EVAL$ T (CAR Y) A)))), which again simplifies, unfolding EQUAL and DIFFERENCE, to the goal: (IMPLIES (AND (LISTP Y) (NOT (LISTP (CDR Y))) (NOT (NUMBERP (EVAL$ T (CAR Y) A)))) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) 0)). But this further simplifies, unfolding PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, and EVAL$, to: T. Case 3.3.1. (IMPLIES (AND (LISTP Y) (NOT (LISTP (CDR Y))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) (DIFFERENCE (EVAL$ T (CAR Y) A) (EVAL$ T (CAR Y) A)))), which further simplifies, applying EQUAL-DIFFERENCE-0, and opening up PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, and EVAL$, to: (IMPLIES (AND (LISTP Y) (NOT (LISTP (CDR Y))) (NUMBERP (EVAL$ T (CAR Y) A))) (NOT (LESSP (EVAL$ T (CAR Y) A) (EVAL$ T (CAR Y) A)))), which again simplifies, using linear arithmetic, to: T. Case 3.2. (IMPLIES (AND (LISTP Y) (LISTP (CDR Y)) (LISTP (CDDR Y))) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) (DIFFERENCE (EVAL$ T (LIST 'PLUS (CAR Y) (PLUS-TREE (CDR Y))) A) (EVAL$ T (CAR Y) A)))), which again simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-CONS, CDR-CONS, NUMBERP-EVAL$-PLUS-TREE, and DIFFERENCE-PLUS-CANCELLATION, to: T. Case 3.1. (IMPLIES (AND (LISTP Y) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y)))) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) (DIFFERENCE (EVAL$ T (LIST 'PLUS (CAR Y) (CADR Y)) A) (EVAL$ T (CAR Y) A)))), which again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, CDR-CONS, and DIFFERENCE-PLUS-CANCELLATION, to the following two new conjectures: Case 3.1.2. (IMPLIES (AND (LISTP Y) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (NUMBERP (EVAL$ T (CADR Y) A)))) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) 0)). But this further simplifies, appealing to the lemmas REWRITE-EVAL$ and CAR-CONS, and unfolding PLUS-TREE, FIX, and EQUAL, to: T. Case 3.1.1. (IMPLIES (AND (LISTP Y) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NUMBERP (EVAL$ T (CADR Y) A))) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T (CADR Y) A))), which further simplifies, rewriting with the lemmas REWRITE-EVAL$ and CAR-CONS, and unfolding PLUS-TREE and FIX, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP Y)) (NOT (EQUAL X (CAR Y))) (NOT (MEMBER X (CDR Y))) (MEMBER X Y)) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X Y)) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T X A)))), which simplifies, expanding the functions NLISTP and MEMBER, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP Y)) (NOT (EQUAL X (CAR Y))) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X Y)) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X Y)) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T X A)))), which simplifies, rewriting with CAR-CONS, LISTP-DELETE, and CDR-CONS, and expanding NLISTP, MEMBER, DELETE, and PLUS-TREE, to the following six new goals: Case 1.6. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (NOT (LISTP (CDR Y)))) (EQUAL (EVAL$ T (LIST 'FIX (CAR Y)) A) (DIFFERENCE (EVAL$ T (LIST 'FIX (CAR Y)) A) (EVAL$ T X A)))). This again simplifies, rewriting with LISTP-DELETE, EQUAL-DIFFERENCE-0, REWRITE-EVAL$, and CAR-CONS, and unfolding the definitions of PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, and FIX, to the following two new formulas: Case 1.6.2. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (PLUS-TREE (CDR Y)) A))) (MEMBER X (CDR Y)) (NOT (LISTP (CDR Y))) (NOT (NUMBERP (EVAL$ T (CAR Y) A)))) (EQUAL 0 (DIFFERENCE 0 (EVAL$ T X A)))). But this again simplifies, using linear arithmetic and rewriting with MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to the following three new conjectures: Case 1.6.2.3. (IMPLIES (AND (NOT (NUMBERP (EVAL$ T (PLUS-TREE (CDR Y)) A))) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (PLUS-TREE (CDR Y)) A))) (MEMBER X (CDR Y)) (NOT (LISTP (CDR Y))) (NOT (NUMBERP (EVAL$ T (CAR Y) A)))) (EQUAL 0 (DIFFERENCE 0 (EVAL$ T X A)))). This again simplifies, using linear arithmetic and applying the lemma MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to: (IMPLIES (AND (LESSP 0 (EVAL$ T X A)) (NOT (NUMBERP (EVAL$ T (PLUS-TREE (CDR Y)) A))) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (PLUS-TREE (CDR Y)) A))) (MEMBER X (CDR Y)) (NOT (LISTP (CDR Y))) (NOT (NUMBERP (EVAL$ T (CAR Y) A)))) (EQUAL 0 (DIFFERENCE 0 (EVAL$ T X A)))). But this again simplifies, using linear arithmetic and applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to: T. Case 1.6.2.2. (IMPLIES (AND (NOT (NUMBERP (EVAL$ T X A))) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (PLUS-TREE (CDR Y)) A))) (MEMBER X (CDR Y)) (NOT (LISTP (CDR Y))) (NOT (NUMBERP (EVAL$ T (CAR Y) A)))) (EQUAL 0 (DIFFERENCE 0 (EVAL$ T X A)))). However this again simplifies, rewriting with NUMBERP-EVAL$-PLUS-TREE, and unfolding the functions LESSP, EQUAL, and DIFFERENCE, to: T. Case 1.6.2.1. (IMPLIES (AND (NUMBERP (EVAL$ T X A)) (NUMBERP (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A)) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (NOT (LISTP (CDR Y))) (NOT (NUMBERP (EVAL$ T (CAR Y) A)))) (EQUAL 0 (DIFFERENCE 0 (EVAL$ T X A)))). But this again simplifies, opening up the functions EQUAL and DIFFERENCE, to: T. Case 1.6.1. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (PLUS-TREE (CDR Y)) A))) (MEMBER X (CDR Y)) (NOT (LISTP (CDR Y))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (DIFFERENCE (EVAL$ T (CAR Y) A) (EVAL$ T X A)))), which again simplifies, using linear arithmetic and applying the lemma MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to three new formulas: Case 1.6.1.3. (IMPLIES (AND (NOT (NUMBERP (EVAL$ T (PLUS-TREE (CDR Y)) A))) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (PLUS-TREE (CDR Y)) A))) (MEMBER X (CDR Y)) (NOT (LISTP (CDR Y))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (DIFFERENCE (EVAL$ T (CAR Y) A) (EVAL$ T X A)))), which again simplifies, using linear arithmetic and rewriting with the lemma MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to: (IMPLIES (AND (LESSP (EVAL$ T (CAR Y) A) (EVAL$ T X A)) (NOT (NUMBERP (EVAL$ T (PLUS-TREE (CDR Y)) A))) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (PLUS-TREE (CDR Y)) A))) (MEMBER X (CDR Y)) (NOT (LISTP (CDR Y))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (DIFFERENCE (EVAL$ T (CAR Y) A) (EVAL$ T X A)))). But this again simplifies, using linear arithmetic and appealing to the lemma MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to: T. Case 1.6.1.2. (IMPLIES (AND (NOT (NUMBERP (EVAL$ T X A))) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (PLUS-TREE (CDR Y)) A))) (MEMBER X (CDR Y)) (NOT (LISTP (CDR Y))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (DIFFERENCE (EVAL$ T (CAR Y) A) (EVAL$ T X A)))), which again simplifies, appealing to the lemma NUMBERP-EVAL$-PLUS-TREE, and opening up LESSP and DIFFERENCE, to: T. Case 1.6.1.1. (IMPLIES (AND (NUMBERP (EVAL$ T X A)) (NUMBERP (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A)) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (NOT (LISTP (CDR Y))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (DIFFERENCE (EVAL$ T (CAR Y) A) (EVAL$ T X A)))), which again simplifies, obviously, to the new goal: (IMPLIES (AND (NUMBERP (EVAL$ T X A)) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A)) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (NOT (LISTP (CDR Y))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (DIFFERENCE (EVAL$ T (CAR Y) A) (EVAL$ T X A)))), which further simplifies, using linear arithmetic, applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, and opening up the functions EVAL$, EQUAL, LITATOM, LISTP, CAR, CDR, and PLUS-TREE, to the new goal: (IMPLIES (AND (LESSP (EVAL$ T (CAR Y) A) (EVAL$ T X A)) (NUMBERP (EVAL$ T X A)) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A)) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (NOT (LISTP (CDR Y))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (DIFFERENCE (EVAL$ T (CAR Y) A) (EVAL$ T X A)))), which finally simplifies, using linear arithmetic, applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, and opening up EVAL$, EQUAL, LITATOM, LISTP, CAR, CDR, and PLUS-TREE, to: T. Case 1.5. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (LISTP (CDDR Y)) (LISTP (CDR (DELETE X (CDR Y))))) (EQUAL (EVAL$ T (LIST 'PLUS (CAR Y) (PLUS-TREE (DELETE X (CDR Y)))) A) (DIFFERENCE (EVAL$ T (LIST 'PLUS (CAR Y) (PLUS-TREE (CDR Y))) A) (EVAL$ T X A)))). But this again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (LISTP (CDDR Y)) (LISTP (CDR (DELETE X (CDR Y))))) (EQUAL (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (DELETE X (CDR Y))) A)) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)))), which again simplifies, using linear arithmetic, to two new goals: Case 1.5.2. (IMPLIES (AND (LESSP (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A)) (LISTP Y) (NOT (EQUAL X (CAR Y))) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (LISTP (CDDR Y)) (LISTP (CDR (DELETE X (CDR Y))))) (EQUAL (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (DELETE X (CDR Y))) A)) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)))), which again simplifies, using linear arithmetic and applying the lemma MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to: T. Case 1.5.1. (IMPLIES (AND (LESSP (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)) (LISTP Y) (NOT (EQUAL X (CAR Y))) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (LISTP (CDDR Y)) (LISTP (CDR (DELETE X (CDR Y))))) (EQUAL (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (DELETE X (CDR Y))) A)) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A)) (LESSP (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)) (LISTP Y) (NOT (EQUAL X (CAR Y))) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (LISTP (CDDR Y)) (LISTP (CDR (DELETE X (CDR Y))))) (EQUAL (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (DELETE X (CDR Y))) A)) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)))). But this again simplifies, using linear arithmetic and applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to: T. Case 1.4. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (LISTP (CDDR Y)) (NOT (LISTP (CDR (DELETE X (CDR Y)))))) (EQUAL (EVAL$ T (LIST 'PLUS (CAR Y) (CAR (DELETE X (CDR Y)))) A) (DIFFERENCE (EVAL$ T (LIST 'PLUS (CAR Y) (PLUS-TREE (CDR Y))) A) (EVAL$ T X A)))). However this again simplifies, applying LISTP-DELETE, REWRITE-EVAL$, CAR-CONS, CDR-CONS, and PLUS-ZERO-ARG2, and expanding the functions PLUS-TREE, FIX, and ZEROP, to the following three new goals: Case 1.4.3. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (EQUAL 0 (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (LISTP (CDDR Y)) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NOT (NUMBERP (EVAL$ T (CAR Y) A)))) (EQUAL 0 (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)))). But this again simplifies, applying the lemmas EQUAL-DIFFERENCE-0 and NUMBERP-EVAL$-PLUS-TREE, and opening up PLUS, to: T. Case 1.4.2. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (EQUAL 0 (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (LISTP (CDDR Y)) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)))), which again simplifies, using linear arithmetic, to two new goals: Case 1.4.2.2. (IMPLIES (AND (LESSP (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A)) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (EQUAL 0 (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (LISTP (CDDR Y)) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)))), which again simplifies, using linear arithmetic and applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to: T. Case 1.4.2.1. (IMPLIES (AND (LESSP (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (EQUAL 0 (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (LISTP (CDDR Y)) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)))). But this again simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A)) (LESSP (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (EQUAL 0 (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (LISTP (CDDR Y)) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)))). However this again simplifies, using linear arithmetic and applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to: T. Case 1.4.1. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A)) (EQUAL (EVAL$ T (CAR (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (LISTP (CDDR Y)) (NOT (LISTP (CDR (DELETE X (CDR Y)))))) (EQUAL (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CAR (DELETE X (CDR Y))) A)) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)))). However this again simplifies, using linear arithmetic, to two new conjectures: Case 1.4.1.2. (IMPLIES (AND (LESSP (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A)) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A)) (EQUAL (EVAL$ T (CAR (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (LISTP (CDDR Y)) (NOT (LISTP (CDR (DELETE X (CDR Y)))))) (EQUAL (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CAR (DELETE X (CDR Y))) A)) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)))), which again simplifies, using linear arithmetic and rewriting with MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to: T. Case 1.4.1.1. (IMPLIES (AND (LESSP (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A)) (EQUAL (EVAL$ T (CAR (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (LISTP (CDDR Y)) (NOT (LISTP (CDR (DELETE X (CDR Y)))))) (EQUAL (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CAR (DELETE X (CDR Y))) A)) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)))). This again simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A)) (LESSP (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A)) (EQUAL (EVAL$ T (CAR (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (LISTP (CDDR Y)) (NOT (LISTP (CDR (DELETE X (CDR Y)))))) (EQUAL (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CAR (DELETE X (CDR Y))) A)) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EVAL$ T X A)))). However this again simplifies, using linear arithmetic and rewriting with MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to: T. Case 1.3. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (LISTP (CDR (DELETE X (CDR Y))))) (EQUAL (EVAL$ T (LIST 'PLUS (CAR Y) (PLUS-TREE (DELETE X (CDR Y)))) A) (DIFFERENCE (EVAL$ T (LIST 'PLUS (CAR Y) (CADR Y)) A) (EVAL$ T X A)))). But this again simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (LISTP (CDR (DELETE X (CDR Y))))) (EQUAL (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (PLUS-TREE (DELETE X (CDR Y))) A)) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CADR Y) A)) (EVAL$ T X A)))). This further simplifies, appealing to the lemmas CONS-CAR-CDR, DELETE-NON-MEMBER, MEMBER-NON-LIST, REWRITE-EVAL$, and CAR-CONS, and unfolding the functions DELETE, PLUS-TREE, FIX, and MEMBER, to: T. Case 1.2. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y)))))) (EQUAL (EVAL$ T (LIST 'PLUS (CAR Y) (CAR (DELETE X (CDR Y)))) A) (DIFFERENCE (EVAL$ T (LIST 'PLUS (CAR Y) (CADR Y)) A) (EVAL$ T X A)))), which again simplifies, rewriting with LISTP-DELETE, REWRITE-EVAL$, CAR-CONS, CDR-CONS, and PLUS-ZERO-ARG2, and expanding PLUS-TREE, FIX, and ZEROP, to the following three new formulas: Case 1.2.3. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (EQUAL 0 (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NOT (NUMBERP (EVAL$ T (CAR Y) A)))) (EQUAL 0 (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CADR Y) A)) (EVAL$ T X A)))). But this again simplifies, applying EQUAL-DIFFERENCE-0, and expanding PLUS, to the following two new formulas: Case 1.2.3.2. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (PLUS-TREE (CDR Y)) A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NOT (NUMBERP (EVAL$ T (CAR Y) A))) (NOT (NUMBERP (EVAL$ T (CADR Y) A)))) (NOT (LESSP (EVAL$ T X A) 0))). This again simplifies, using linear arithmetic, to: T. Case 1.2.3.1. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (PLUS-TREE (CDR Y)) A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NOT (NUMBERP (EVAL$ T (CAR Y) A))) (NUMBERP (EVAL$ T (CADR Y) A))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (CADR Y) A)))), which again simplifies, using linear arithmetic and rewriting with MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to the following three new goals: Case 1.2.3.1.3. (IMPLIES (AND (NOT (NUMBERP (EVAL$ T (PLUS-TREE (CDR Y)) A))) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (PLUS-TREE (CDR Y)) A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NOT (NUMBERP (EVAL$ T (CAR Y) A))) (NUMBERP (EVAL$ T (CADR Y) A))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (CADR Y) A)))). However this again simplifies, applying NUMBERP-EVAL$-PLUS-TREE, to: T. Case 1.2.3.1.2. (IMPLIES (AND (NOT (NUMBERP (EVAL$ T X A))) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (PLUS-TREE (CDR Y)) A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NOT (NUMBERP (EVAL$ T (CAR Y) A))) (NUMBERP (EVAL$ T (CADR Y) A))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (CADR Y) A)))). However this again simplifies, rewriting with NUMBERP-EVAL$-PLUS-TREE, and unfolding the function LESSP, to: (IMPLIES (AND (NOT (NUMBERP (EVAL$ T X A))) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) 0) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NOT (NUMBERP (EVAL$ T (CAR Y) A))) (NUMBERP (EVAL$ T (CADR Y) A))) (EQUAL (EVAL$ T (CADR Y) A) 0)), which finally simplifies, applying the lemmas CONS-CAR-CDR, DELETE-NON-MEMBER, and MEMBER-NON-LIST, and expanding the definition of DELETE, to: T. Case 1.2.3.1.1. (IMPLIES (AND (NUMBERP (EVAL$ T X A)) (NUMBERP (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A)) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NOT (NUMBERP (EVAL$ T (CAR Y) A))) (NUMBERP (EVAL$ T (CADR Y) A))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (CADR Y) A)))), which again simplifies, trivially, to the new goal: (IMPLIES (AND (NUMBERP (EVAL$ T X A)) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A)) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NOT (NUMBERP (EVAL$ T (CAR Y) A))) (NUMBERP (EVAL$ T (CADR Y) A))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (CADR Y) A)))), which finally simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, CONS-CAR-CDR, DELETE-NON-MEMBER, and MEMBER-NON-LIST, and opening up the definitions of PLUS-TREE, FIX, and DELETE, to: T. Case 1.2.2. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (EQUAL 0 (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CADR Y) A)) (EVAL$ T X A)))). This again simplifies, rewriting with EQUAL-DIFFERENCE-0, to: (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (PLUS-TREE (CDR Y)) A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CADR Y) A)) (EVAL$ T X A)))), which again simplifies, using linear arithmetic and rewriting with MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to the following three new formulas: Case 1.2.2.3. (IMPLIES (AND (NOT (NUMBERP (EVAL$ T (PLUS-TREE (CDR Y)) A))) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (PLUS-TREE (CDR Y)) A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CADR Y) A)) (EVAL$ T X A)))). But this again simplifies, appealing to the lemma NUMBERP-EVAL$-PLUS-TREE, to: T. Case 1.2.2.2. (IMPLIES (AND (NOT (NUMBERP (EVAL$ T X A))) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T (PLUS-TREE (CDR Y)) A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CADR Y) A)) (EVAL$ T X A)))), which again simplifies, applying the lemmas NUMBERP-EVAL$-PLUS-TREE and EQUAL-PLUS-0, and unfolding the definitions of LESSP and DIFFERENCE, to two new goals: Case 1.2.2.2.2. (IMPLIES (AND (NOT (NUMBERP (EVAL$ T X A))) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) 0) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NUMBERP (EVAL$ T (CAR Y) A)) (NOT (EQUAL (EVAL$ T (CADR Y) A) 0)) (NUMBERP (EVAL$ T (CADR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CADR Y) A)))), which finally simplifies, rewriting with CONS-CAR-CDR, DELETE-NON-MEMBER, and MEMBER-NON-LIST, and opening up the function DELETE, to: T. Case 1.2.2.2.1. (IMPLIES (AND (NOT (NUMBERP (EVAL$ T X A))) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) 0) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NUMBERP (EVAL$ T (CAR Y) A)) (NOT (EQUAL (EVAL$ T (CAR Y) A) 0))) (EQUAL (EVAL$ T (CAR Y) A) (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CADR Y) A)))). This finally simplifies, applying CONS-CAR-CDR, DELETE-NON-MEMBER, MEMBER-NON-LIST, REWRITE-EVAL$, and CAR-CONS, and expanding the functions DELETE, PLUS-TREE, FIX, EQUAL, and MEMBER, to: T. Case 1.2.2.1. (IMPLIES (AND (NUMBERP (EVAL$ T X A)) (NUMBERP (EVAL$ T (PLUS-TREE (CDR Y)) A)) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A)) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CADR Y) A)) (EVAL$ T X A)))). This again simplifies, trivially, to: (IMPLIES (AND (NUMBERP (EVAL$ T X A)) (EQUAL (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A)) (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A))) (NOT (LESSP (EVAL$ T X A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y))))) (NUMBERP (EVAL$ T (CAR Y) A))) (EQUAL (EVAL$ T (CAR Y) A) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CADR Y) A)) (EVAL$ T X A)))), which finally simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, CONS-CAR-CDR, DELETE-NON-MEMBER, and MEMBER-NON-LIST, and opening up the definitions of PLUS-TREE, FIX, DELETE, LESSP, and MEMBER, to: T. Case 1.2.1. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NUMBERP (EVAL$ T (CAR (DELETE X (CDR Y))) A)) (EQUAL (EVAL$ T (CAR (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y)))))) (EQUAL (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CAR (DELETE X (CDR Y))) A)) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CADR Y) A)) (EVAL$ T X A)))). This again simplifies, obviously, to: (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (EQUAL (EVAL$ T (CAR (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (NOT (EQUAL X (CADR Y))) (NOT (LISTP (CDR (DELETE X (CDR Y)))))) (EQUAL (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CAR (DELETE X (CDR Y))) A)) (DIFFERENCE (PLUS (EVAL$ T (CAR Y) A) (EVAL$ T (CADR Y) A)) (EVAL$ T X A)))), which further simplifies, applying CONS-CAR-CDR, DELETE-NON-MEMBER, MEMBER-NON-LIST, REWRITE-EVAL$, and CAR-CONS, and unfolding the functions DELETE, PLUS-TREE, FIX, and MEMBER, to: T. Case 1.1. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (EQUAL (EVAL$ T (PLUS-TREE (DELETE X (CDR Y))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (CDR Y)) A) (EVAL$ T X A))) (MEMBER X (CDR Y)) (LISTP (CDR Y)) (NOT (LISTP (CDDR Y))) (EQUAL X (CADR Y))) (EQUAL (EVAL$ T (LIST 'FIX (CAR Y)) A) (DIFFERENCE (EVAL$ T (LIST 'PLUS (CAR Y) (CADR Y)) A) (EVAL$ T X A)))). But this again simplifies, applying the lemmas EQUAL-DIFFERENCE-0, REWRITE-EVAL$, CAR-CONS, CDR-CONS, and DIFFERENCE-PLUS-CANCELLATION, and unfolding the functions DELETE, PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, MEMBER, and FIX, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.7 0.1 ] PLUS-TREE-DELETE (DISABLE PLUS-TREE-DELETE) [ 0.0 0.0 0.0 ] PLUS-TREE-DELETE-OFF (PROVE-LEMMA SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP (REWRITE) (IMPLIES (SUBBAGP X Y) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE X) A)))) ((ENABLE PLUS-TREE SUBBAGP MEMBER-IMPLIES-PLUS-TREE-GREATEREQP PLUS-TREE-DELETE PLUS-ZERO-ARG2 SUBBAGP-CDR2))) WARNING: When the linear lemma SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP is stored under (EVAL$ T (PLUS-TREE Y) A) it contains the free variable X which will be chosen by instantiating the hypothesis (SUBBAGP X Y). WARNING: When the linear lemma SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP is stored under (EVAL$ T (PLUS-TREE X) A) it contains the free variable Y which will be chosen by instantiating the hypothesis (SUBBAGP X Y). WARNING: Note that the proposed lemma SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP is to be stored as zero type prescription rules, zero compound recognizer rules, two linear rules, and zero replacement rules. Name the conjecture *1. Perhaps we can prove it by induction. There are three plausible inductions. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (p (DELETE (CAR X) Y) A (CDR X))) (p Y A X)) (IMPLIES (AND (LISTP X) (NOT (MEMBER (CAR X) Y))) (p Y A X)) (IMPLIES (NOT (LISTP X)) (p Y A X))). Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for Y. The above induction scheme leads to the following four new formulas: Case 4. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (SUBBAGP (CDR X) (DELETE (CAR X) Y))) (SUBBAGP X Y)) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE X) A)))). This simplifies, opening up the definition of SUBBAGP, to: T. Case 3. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (LESSP (EVAL$ T (PLUS-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (SUBBAGP X Y)) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE X) A)))). This simplifies, applying PLUS-TREE-DELETE, and unfolding SUBBAGP and PLUS-TREE, to three new formulas: Case 3.3. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (LESSP (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)) (EVAL$ T (PLUS-TREE (CDR X)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (NOT (LISTP (CDR X)))) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (LIST 'FIX (CAR X)) A)))), which again simplifies, rewriting with the lemmas REWRITE-EVAL$ and CAR-CONS, and opening up the definition of FIX, to two new formulas: Case 3.3.2. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (LESSP (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)) (EVAL$ T (PLUS-TREE (CDR X)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (NOT (LISTP (CDR X))) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) 0))), which again simplifies, using linear arithmetic, to: T. Case 3.3.1. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (LESSP (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)) (EVAL$ T (PLUS-TREE (CDR X)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (NOT (LISTP (CDR X))) (NUMBERP (EVAL$ T (CAR X) A))) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)))), which again simplifies, using linear arithmetic and applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to: T. Case 3.2. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (LESSP (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)) (EVAL$ T (PLUS-TREE (CDR X)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (LISTP (CDDR X))) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (LIST 'PLUS (CAR X) (PLUS-TREE (CDR X))) A)))). This again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (LESSP (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)) (EVAL$ T (PLUS-TREE (CDR X)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (LISTP (CDDR X))) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (PLUS-TREE (CDR X)) A))))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)) (LISTP X) (MEMBER (CAR X) Y) (NOT (LESSP (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)) (EVAL$ T (PLUS-TREE (CDR X)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (LISTP (CDDR X))) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (PLUS-TREE (CDR X)) A))))). However this again simplifies, using linear arithmetic and applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to: T. Case 3.1. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (LESSP (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)) (EVAL$ T (PLUS-TREE (CDR X)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (NOT (LISTP (CDDR X)))) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (LIST 'PLUS (CAR X) (CADR X)) A)))). This again simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (LESSP (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)) (EVAL$ T (PLUS-TREE (CDR X)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (NOT (LISTP (CDDR X)))) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (CADR X) A))))). But this further simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, and PLUS-ZERO-ARG2, and expanding the definitions of PLUS-TREE, FIX, and ZEROP, to the following three new formulas: Case 3.1.3. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (NUMBERP (EVAL$ T (CADR X) A))) (NOT (LESSP (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)) 0)) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) 0))). However this again simplifies, using linear arithmetic, to: T. Case 3.1.2. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (NUMBERP (EVAL$ T (CADR X) A))) (NOT (LESSP (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)) 0)) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NUMBERP (EVAL$ T (CAR X) A))) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)))), which again simplifies, using linear arithmetic and applying the lemma MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to: T. Case 3.1.1. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NUMBERP (EVAL$ T (CADR X) A)) (NOT (LESSP (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)) (EVAL$ T (CADR X) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (NOT (LISTP (CDDR X)))) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (CADR X) A))))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)) (LISTP X) (MEMBER (CAR X) Y) (NUMBERP (EVAL$ T (CADR X) A)) (NOT (LESSP (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)) (EVAL$ T (CADR X) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (NOT (LISTP (CDDR X)))) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (CADR X) A))))). However this again simplifies, using linear arithmetic and applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to: T. Case 2. (IMPLIES (AND (LISTP X) (NOT (MEMBER (CAR X) Y)) (SUBBAGP X Y)) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE X) A)))). This simplifies, unfolding the definition of SUBBAGP, to: T. Case 1. (IMPLIES (AND (NOT (LISTP X)) (SUBBAGP X Y)) (NOT (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE X) A)))). This simplifies, applying SUBBAGP-CDR2, and opening up SUBBAGP, PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, and LESSP, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP (DISABLE SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP) [ 0.0 0.0 0.0 ] SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP-OFF (PROVE-LEMMA PLUS-TREE-BAGDIFF (REWRITE) (IMPLIES (SUBBAGP X Y) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y X)) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE X) A)))) ((ENABLE BAGDIFF PLUS-TREE SUBBAGP COMMUTATIVITY-OF-PLUS DIFF-DIFF-ARG1 DIFFERENCE-LESSP-ARG1 MEMBER-IMPLIES-PLUS-TREE-GREATEREQP NUMBERP-EVAL$-PLUS-TREE PLUS-TREE-DELETE PLUS-ZERO-ARG2 SUBBAGP-CDR2 SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP))) Give the conjecture the name *1. Perhaps we can prove it by induction. Four inductions are suggested by terms in the conjecture. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (p (DELETE (CAR X) Y) (CDR X) A)) (p Y X A)) (IMPLIES (AND (LISTP X) (NOT (MEMBER (CAR X) Y)) (p Y (CDR X) A)) (p Y X A)) (IMPLIES (NOT (LISTP X)) (p Y X A))). Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instances chosen for Y. The above induction scheme generates the following five new goals: Case 5. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (SUBBAGP (CDR X) (DELETE (CAR X) Y))) (SUBBAGP X Y)) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y X)) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE X) A)))). This simplifies, unfolding the definition of SUBBAGP, to: T. Case 4. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (SUBBAGP X Y)) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y X)) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE X) A)))). This simplifies, rewriting with PLUS-TREE-DELETE and DIFF-DIFF-ARG1, and expanding the functions SUBBAGP, BAGDIFF, and PLUS-TREE, to three new conjectures: Case 4.3. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (PLUS-TREE (CDR X)) A)))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (NOT (LISTP (CDR X)))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (LIST 'FIX (CAR X)) A)))), which again simplifies, applying the lemmas REWRITE-EVAL$ and CAR-CONS, and expanding FIX, to two new goals: Case 4.3.2. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (PLUS-TREE (CDR X)) A)))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (NOT (LISTP (CDR X))) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) 0))), which again simplifies, appealing to the lemma NUMBERP-EVAL$-PLUS-TREE, and unfolding the functions PLUS, EQUAL, and DIFFERENCE, to two new conjectures: Case 4.3.2.2. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (NOT (LISTP (CDR X))) (NOT (NUMBERP (EVAL$ T (CAR X) A))) (NOT (EQUAL (EVAL$ T (PLUS-TREE Y) A) 0))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (PLUS-TREE Y) A))), which further simplifies, applying BAGDIFF-DELETE, NUMBERP-EVAL$-PLUS-TREE, PLUS-TREE-DELETE, and SUBBAGP-CDR2, and opening up the functions BAGDIFF, DIFFERENCE, PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, and SUBBAGP, to: T. Case 4.3.2.1. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (NOT (LISTP (CDR X))) (NOT (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (PLUS-TREE Y) A) 0)) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) 0)). But this again simplifies, using linear arithmetic, to two new conjectures: Case 4.3.2.1.2. (IMPLIES (AND (NOT (NUMBERP (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A))) (LISTP X) (MEMBER (CAR X) Y) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (DIFFERENCE 0 (EVAL$ T (PLUS-TREE (CDR X)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (NOT (LISTP (CDR X))) (NOT (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (PLUS-TREE Y) A) 0)) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) 0)), which again simplifies, clearly, to: T. Case 4.3.2.1.1. (IMPLIES (AND (LESSP 0 (EVAL$ T (PLUS-TREE (CDR X)) A)) (LISTP X) (MEMBER (CAR X) Y) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (DIFFERENCE 0 (EVAL$ T (PLUS-TREE (CDR X)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (NOT (LISTP (CDR X))) (NOT (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (PLUS-TREE Y) A) 0)) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) 0)). This again simplifies, using linear arithmetic, applying SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP and PLUS-TREE-DELETE, and expanding DIFFERENCE, to: T. Case 4.3.1. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (PLUS-TREE (CDR X)) A)))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (NOT (LISTP (CDR X))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)))). However this further simplifies, applying BAGDIFF-DELETE, PLUS-TREE-DELETE, PLUS-ZERO-ARG2, and SUBBAGP-CDR2, and unfolding BAGDIFF, PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, ZEROP, and SUBBAGP, to: T. Case 4.2. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (PLUS-TREE (CDR X)) A)))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (LISTP (CDDR X))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (LIST 'PLUS (CAR X) (PLUS-TREE (CDR X))) A)))). However this again simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Case 4.1. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (PLUS-TREE (CDR X)) A)))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (NOT (LISTP (CDDR X)))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (LIST 'PLUS (CAR X) (CADR X)) A)))), which again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to the new formula: (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (PLUS-TREE (CDR X)) A)))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (NOT (LISTP (CDDR X)))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (CADR X) A))))), which further simplifies, appealing to the lemmas BAGDIFF-DELETE, MEMBER-BAGDIFF, PLUS-TREE-DELETE, REWRITE-EVAL$, CAR-CONS, DELETE-NON-MEMBER, and PLUS-ZERO-ARG2, and opening up the definitions of PLUS-TREE, FIX, and ZEROP, to two new conjectures: Case 4.1.2. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (NUMBERP (EVAL$ T (CADR X) A))) (NOT (LESSP (OCCURRENCES (CAR X) (CDR X)) (OCCURRENCES (CAR X) Y))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) 0))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) 0))), which again simplifies, rewriting with PLUS-ZERO-ARG2 and NUMBERP-EVAL$-PLUS-TREE, and opening up the definitions of ZEROP, EQUAL, and DIFFERENCE, to: T. Case 4.1.1. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (NUMBERP (EVAL$ T (CADR X) A))) (NOT (LESSP (OCCURRENCES (CAR X) (CDR X)) (OCCURRENCES (CAR X) Y))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) 0))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)))). But this again simplifies, using linear arithmetic, to three new goals: Case 4.1.1.3. (IMPLIES (AND (LESSP (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) 0)) (LISTP X) (MEMBER (CAR X) Y) (NOT (NUMBERP (EVAL$ T (CADR X) A))) (NOT (LESSP (OCCURRENCES (CAR X) (CDR X)) (OCCURRENCES (CAR X) Y))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) 0))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)))), which again simplifies, using linear arithmetic and appealing to the lemma MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to: T. Case 4.1.1.2. (IMPLIES (AND (NOT (NUMBERP (EVAL$ T (PLUS-TREE (BAGDIFF Y (CDR X))) A))) (LISTP X) (MEMBER (CAR X) Y) (NOT (NUMBERP (EVAL$ T (CADR X) A))) (NOT (LESSP (OCCURRENCES (CAR X) (CDR X)) (OCCURRENCES (CAR X) Y))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) 0))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)))), which again simplifies, obviously, to: T. Case 4.1.1.1. (IMPLIES (AND (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)) (LISTP X) (MEMBER (CAR X) Y) (NOT (NUMBERP (EVAL$ T (CADR X) A))) (NOT (LESSP (OCCURRENCES (CAR X) (CDR X)) (OCCURRENCES (CAR X) Y))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) 0))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)))). However this again simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) 0)) (LESSP (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)) (LISTP X) (MEMBER (CAR X) Y) (NOT (NUMBERP (EVAL$ T (CADR X) A))) (NOT (LESSP (OCCURRENCES (CAR X) (CDR X)) (OCCURRENCES (CAR X) Y))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (PLUS (EVAL$ T (CAR X) A) 0))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)))). This finally simplifies, using linear arithmetic and applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, to: T. Case 3. (IMPLIES (AND (LISTP X) (NOT (MEMBER (CAR X) Y)) (NOT (SUBBAGP (CDR X) Y)) (SUBBAGP X Y)) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y X)) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE X) A)))). This simplifies, expanding the function SUBBAGP, to: T. Case 2. (IMPLIES (AND (LISTP X) (NOT (MEMBER (CAR X) Y)) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y (CDR X))) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (SUBBAGP X Y)) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y X)) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE X) A)))). This simplifies, expanding the definition of SUBBAGP, to: T. Case 1. (IMPLIES (AND (NOT (LISTP X)) (SUBBAGP X Y)) (EQUAL (EVAL$ T (PLUS-TREE (BAGDIFF Y X)) A) (DIFFERENCE (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE X) A)))). This simplifies, rewriting with SUBBAGP-CDR2 and NUMBERP-EVAL$-PLUS-TREE, and unfolding the definitions of SUBBAGP, BAGDIFF, PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, and DIFFERENCE, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.6 0.0 ] PLUS-TREE-BAGDIFF (DISABLE PLUS-TREE-BAGDIFF) [ 0.0 0.0 0.0 ] PLUS-TREE-BAGDIFF-OFF (PROVE-LEMMA NUMBERP-EVAL$-BRIDGE (REWRITE) (IMPLIES (EQUAL (EVAL$ T Z A) (EVAL$ T (PLUS-TREE X) A)) (NUMBERP (EVAL$ T Z A))) ((ENABLE PLUS-TREE NUMBERP-EVAL$-PLUS-TREE))) WARNING: Note that NUMBERP-EVAL$-BRIDGE contains the free variable X which will be chosen by instantiating the hypothesis: (EQUAL (EVAL$ T Z A) (EVAL$ T (PLUS-TREE X) A)). . We use the above equality hypothesis by substituting (EVAL$ T (PLUS-TREE X) A) for (EVAL$ T Z A) and keeping the equality hypothesis. This produces the new goal: (IMPLIES (EQUAL (EVAL$ T Z A) (EVAL$ T (PLUS-TREE X) A)) (NUMBERP (EVAL$ T (PLUS-TREE X) A))), which simplifies, trivially, to: (IMPLIES (EQUAL (EVAL$ T Z A) (EVAL$ T (PLUS-TREE X) A)) (NUMBERP (EVAL$ T Z A))), which we would normally push and work on later by induction. But if we must use induction to prove the input conjecture, we prefer to induct on the original formulation of the problem. Thus we will disregard all that we have previously done, give the name *1 to the original input, and work on it. So now let us return to: (IMPLIES (EQUAL (EVAL$ T Z A) (EVAL$ T (PLUS-TREE X) A)) (NUMBERP (EVAL$ T Z A))), named *1. Let us appeal to the induction principle. Three inductions are suggested by terms in the conjecture. They merge into two likely candidate inductions, both of which are unflawed. So we will choose the one suggested by the largest number of nonprimitive recursive functions. We will induct according to the following scheme: (AND (IMPLIES (LITATOM Z) (p Z A X)) (IMPLIES (AND (NOT (LITATOM Z)) (NLISTP Z)) (p Z A X)) (IMPLIES (AND (NOT (LITATOM Z)) (NOT (NLISTP Z)) (EQUAL (CAR Z) 'QUOTE)) (p Z A X)) (IMPLIES (AND (NOT (LITATOM Z)) (NOT (NLISTP Z)) (NOT (EQUAL (CAR Z) 'QUOTE)) (p (CDR Z) A X)) (p Z A X))). Linear arithmetic, the lemmas CDR-LESSEQP, CDR-LESSP, CAR-LESSEQP, and CAR-LESSP, and the definition of NLISTP inform us that the measure (COUNT Z) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme produces five new conjectures: Case 5. (IMPLIES (AND (LITATOM Z) (EQUAL (EVAL$ T Z A) (EVAL$ T (PLUS-TREE X) A))) (NUMBERP (EVAL$ T Z A))), which simplifies, unfolding the functions EVAL$ and EQUAL, to: (IMPLIES (AND (LITATOM Z) (EQUAL (CDR (ASSOC Z A)) (EVAL$ T (PLUS-TREE X) A))) (NUMBERP (CDR (ASSOC Z A)))). We use the above equality hypothesis by substituting: (EVAL$ T (PLUS-TREE X) A) for (CDR (ASSOC Z A)) and throwing away the equality. We thus obtain: (IMPLIES (LITATOM Z) (NUMBERP (EVAL$ T (PLUS-TREE X) A))), which further simplifies, rewriting with the lemma NUMBERP-EVAL$-PLUS-TREE, to: T. Case 4. (IMPLIES (AND (NOT (LITATOM Z)) (NLISTP Z) (EQUAL (EVAL$ T Z A) (EVAL$ T (PLUS-TREE X) A))) (NUMBERP (EVAL$ T Z A))), which simplifies, opening up NLISTP, EVAL$, and EQUAL, to: (IMPLIES (AND (NOT (LITATOM Z)) (NOT (LISTP Z)) (EQUAL Z (EVAL$ T (PLUS-TREE X) A))) (NUMBERP Z)). But this again simplifies, applying NUMBERP-EVAL$-PLUS-TREE, to: T. Case 3. (IMPLIES (AND (NOT (LITATOM Z)) (NOT (NLISTP Z)) (EQUAL (CAR Z) 'QUOTE) (EQUAL (EVAL$ T Z A) (EVAL$ T (PLUS-TREE X) A))) (NUMBERP (EVAL$ T Z A))). This simplifies, expanding the functions NLISTP, EVAL$, and EQUAL, to the new formula: (IMPLIES (AND (NOT (LITATOM Z)) (LISTP Z) (EQUAL (CAR Z) 'QUOTE) (EQUAL (CADR Z) (EVAL$ T (PLUS-TREE X) A))) (NUMBERP (CADR Z))), which again simplifies, obviously, to: (IMPLIES (AND (LISTP Z) (EQUAL (CAR Z) 'QUOTE) (EQUAL (CADR Z) (EVAL$ T (PLUS-TREE X) A))) (NUMBERP (CADR Z))). Applying the lemma CAR-CDR-ELIM, replace Z by (CONS V W) to eliminate (CAR Z) and (CDR Z) and W by (CONS D C) to eliminate (CAR W) and (CDR W). This produces the following two new conjectures: Case 3.2. (IMPLIES (AND (NOT (LISTP W)) (EQUAL V 'QUOTE) (EQUAL (CAR W) (EVAL$ T (PLUS-TREE X) A))) (NUMBERP (CAR W))). But this further simplifies, rewriting with CAR-NLISTP, and unfolding the definition of NUMBERP, to: T. Case 3.1. (IMPLIES (AND (EQUAL V 'QUOTE) (EQUAL D (EVAL$ T (PLUS-TREE X) A))) (NUMBERP D)). However this further simplifies, applying NUMBERP-EVAL$-PLUS-TREE, to: T. Case 2. (IMPLIES (AND (NOT (LITATOM Z)) (NOT (NLISTP Z)) (NOT (EQUAL (CAR Z) 'QUOTE)) (NOT (EQUAL (EVAL$ T (CDR Z) A) (EVAL$ T (PLUS-TREE X) A))) (EQUAL (EVAL$ T Z A) (EVAL$ T (PLUS-TREE X) A))) (NUMBERP (EVAL$ T Z A))). This simplifies, applying the lemma NUMBERP-EVAL$-PLUS-TREE, and opening up NLISTP, EVAL$, and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (LITATOM Z)) (NOT (NLISTP Z)) (NOT (EQUAL (CAR Z) 'QUOTE)) (NUMBERP (EVAL$ T (CDR Z) A)) (EQUAL (EVAL$ T Z A) (EVAL$ T (PLUS-TREE X) A))) (NUMBERP (EVAL$ T Z A))). This simplifies, applying the lemma NUMBERP-EVAL$-PLUS-TREE, and expanding the definitions of NLISTP, EVAL$, and EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] NUMBERP-EVAL$-BRIDGE (DISABLE NUMBERP-EVAL$-BRIDGE) [ 0.0 0.0 0.0 ] NUMBERP-EVAL$-BRIDGE-OFF (PROVE-LEMMA BRIDGE-TO-SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP (REWRITE) (IMPLIES (AND (SUBBAGP Y (PLUS-FRINGE Z)) (EQUAL (EVAL$ T Z A) (EVAL$ T (PLUS-TREE (PLUS-FRINGE Z)) A))) (EQUAL (LESSP (EVAL$ T Z A) (EVAL$ T (PLUS-TREE Y) A)) F)) ((ENABLE SUBBAGP PLUS-FRINGE PLUS-TREE SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP))) This conjecture simplifies, using linear arithmetic and applying SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] BRIDGE-TO-SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP (DISABLE BRIDGE-TO-SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP) [ 0.0 0.0 0.0 ] BRIDGE-TO-SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP-OFF (PROVE-LEMMA EVAL$-PLUS-TREE-APPEND (REWRITE) (EQUAL (EVAL$ T (PLUS-TREE (APPEND X Y)) A) (PLUS (EVAL$ T (PLUS-TREE X) A) (EVAL$ T (PLUS-TREE Y) A))) ((ENABLE PLUS-ZERO-ARG2 COMMUTATIVITY2-OF-PLUS COMMUTATIVITY-OF-PLUS EQUAL-PLUS-0 PLUS-CANCELLATION PLUS-TREE NUMBERP-EVAL$-PLUS-TREE NUMBERP-EVAL$-BRIDGE))) Name the conjecture *1. We will appeal to induction. The recursive terms in the conjecture suggest three inductions. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP X) (p (CDR X) Y A)) (p X Y A)) (IMPLIES (NOT (LISTP X)) (p X Y A))). Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates the following two new conjectures: Case 2. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE (CDR X)) A) (EVAL$ T (PLUS-TREE Y) A)))) (EQUAL (EVAL$ T (PLUS-TREE (APPEND X Y)) A) (PLUS (EVAL$ T (PLUS-TREE X) A) (EVAL$ T (PLUS-TREE Y) A)))). This simplifies, rewriting with COMMUTATIVITY-OF-PLUS, CAR-CONS, and CDR-CONS, and expanding APPEND and PLUS-TREE, to nine new formulas: Case 2.9. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (NOT (LISTP (APPEND (CDR X) Y)))) (EQUAL (EVAL$ T (LIST 'FIX (CAR X)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (LIST 'FIX (CAR X)) A)))), which again simplifies, appealing to the lemmas NUMBERP-EVAL$-PLUS-TREE, EQUAL-PLUS-0, REWRITE-EVAL$, and CAR-CONS, and expanding the definitions of PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, FIX, and PLUS, to: T. Case 2.8. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (LISTP (CDR (APPEND (CDR X) Y)))) (EQUAL (EVAL$ T (LIST 'PLUS (CAR X) (PLUS-TREE (APPEND (CDR X) Y))) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (LIST 'FIX (CAR X)) A)))), which again simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and expanding the definition of FIX, to the following two new goals: Case 2.8.2. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (LISTP (CDR (APPEND (CDR X) Y))) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A)) (PLUS (EVAL$ T (PLUS-TREE Y) A) 0))). This again simplifies, applying NUMBERP-EVAL$-PLUS-TREE and PLUS-ZERO-ARG2, and opening up PLUS and ZEROP, to: (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (LISTP (CDR (APPEND (CDR X) Y))) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (EVAL$ T (PLUS-TREE Y) A))), which further simplifies, appealing to the lemmas NUMBERP-EVAL$-PLUS-TREE and PLUS-ZERO-ARG2, and expanding APPEND, PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, and ZEROP, to: T. Case 2.8.1. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (LISTP (CDR (APPEND (CDR X) Y))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A)) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)))), which again simplifies, applying COMMUTATIVITY-OF-PLUS, NUMBERP-EVAL$-PLUS-TREE, and PLUS-CANCELLATION, to the new formula: (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (LISTP (CDR (APPEND (CDR X) Y))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (EVAL$ T (PLUS-TREE Y) A))), which further simplifies, rewriting with NUMBERP-EVAL$-PLUS-TREE and PLUS-ZERO-ARG2, and unfolding APPEND, PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, and ZEROP, to: T. Case 2.7. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y))))) (EQUAL (EVAL$ T (LIST 'PLUS (CAR X) (CAR (APPEND (CDR X) Y))) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (LIST 'FIX (CAR X)) A)))). However this again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, CDR-CONS, and PLUS-ZERO-ARG2, and opening up the definitions of PLUS-TREE, FIX, and ZEROP, to the following four new formulas: Case 2.7.4. (IMPLIES (AND (LISTP X) (NOT (NUMBERP (EVAL$ T (CAR (APPEND (CDR X) Y)) A))) (EQUAL 0 (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL 0 (PLUS (EVAL$ T (PLUS-TREE Y) A) 0))). However this again simplifies, using linear arithmetic, to: T. Case 2.7.3. (IMPLIES (AND (LISTP X) (NOT (NUMBERP (EVAL$ T (CAR (APPEND (CDR X) Y)) A))) (EQUAL 0 (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (CAR X) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)))), which again simplifies, using linear arithmetic, to: T. Case 2.7.2. (IMPLIES (AND (LISTP X) (NUMBERP (EVAL$ T (CAR (APPEND (CDR X) Y)) A)) (EQUAL (EVAL$ T (CAR (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (CAR (APPEND (CDR X) Y)) A)) (PLUS (EVAL$ T (PLUS-TREE Y) A) 0))), which again simplifies, appealing to the lemmas NUMBERP-EVAL$-PLUS-TREE and PLUS-ZERO-ARG2, and expanding the functions PLUS and ZEROP, to the goal: (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (CAR (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL (EVAL$ T (CAR (APPEND (CDR X) Y)) A) (EVAL$ T (PLUS-TREE Y) A))). This further simplifies, rewriting with NUMBERP-EVAL$-PLUS-TREE, PLUS-ZERO-ARG2, REWRITE-EVAL$, CAR-CONS, and NUMBERP-EVAL$-BRIDGE, and opening up APPEND, PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, ZEROP, and FIX, to: T. Case 2.7.1. (IMPLIES (AND (LISTP X) (NUMBERP (EVAL$ T (CAR (APPEND (CDR X) Y)) A)) (EQUAL (EVAL$ T (CAR (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (CAR (APPEND (CDR X) Y)) A)) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CAR X) A)))). However this again simplifies, appealing to the lemmas COMMUTATIVITY-OF-PLUS, NUMBERP-EVAL$-PLUS-TREE, and PLUS-CANCELLATION, to: (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (CAR (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (CAR (APPEND (CDR X) Y)) A) (EVAL$ T (PLUS-TREE Y) A))). But this further simplifies, rewriting with NUMBERP-EVAL$-PLUS-TREE, PLUS-ZERO-ARG2, REWRITE-EVAL$, CAR-CONS, and NUMBERP-EVAL$-BRIDGE, and opening up the functions APPEND, PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, ZEROP, and FIX, to: T. Case 2.6. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (LISTP (CDR X)) (LISTP (CDDR X)) (NOT (LISTP (APPEND (CDR X) Y)))) (EQUAL (EVAL$ T (LIST 'FIX (CAR X)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (LIST 'PLUS (CAR X) (PLUS-TREE (CDR X))) A)))). However this again simplifies, rewriting with NUMBERP-EVAL$-PLUS-TREE, EQUAL-PLUS-0, REWRITE-EVAL$, CAR-CONS, CDR-CONS, and PLUS-ZERO-ARG2, and expanding PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, FIX, ZEROP, and PLUS, to: T. Case 2.5. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (LISTP (CDR X)) (LISTP (CDDR X)) (LISTP (APPEND (CDR X) Y)) (LISTP (CDR (APPEND (CDR X) Y)))) (EQUAL (EVAL$ T (LIST 'PLUS (CAR X) (PLUS-TREE (APPEND (CDR X) Y))) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (LIST 'PLUS (CAR X) (PLUS-TREE (CDR X))) A)))). However this again simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, CDR-CONS, and COMMUTATIVITY2-OF-PLUS, to: T. Case 2.4. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (LISTP (CDR X)) (LISTP (CDDR X)) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y))))) (EQUAL (EVAL$ T (LIST 'PLUS (CAR X) (CAR (APPEND (CDR X) Y))) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (LIST 'PLUS (CAR X) (PLUS-TREE (CDR X))) A)))), which again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, CDR-CONS, PLUS-ZERO-ARG2, and COMMUTATIVITY2-OF-PLUS, and expanding the definitions of PLUS-TREE, FIX, and ZEROP, to: T. Case 2.3. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NOT (LISTP (APPEND (CDR X) Y)))) (EQUAL (EVAL$ T (LIST 'FIX (CAR X)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (LIST 'PLUS (CAR X) (CADR X)) A)))). This again simplifies, rewriting with NUMBERP-EVAL$-PLUS-TREE, EQUAL-PLUS-0, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and opening up PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, and FIX, to the following two new goals: Case 2.3.2. (IMPLIES (AND (LISTP X) (EQUAL 0 (EVAL$ T (PLUS-TREE Y) A)) (EQUAL 0 (EVAL$ T (PLUS-TREE (CDR X)) A)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NOT (LISTP (APPEND (CDR X) Y))) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL 0 (PLUS 0 (EVAL$ T (CAR X) A) (EVAL$ T (CADR X) A)))). However this again simplifies, expanding PLUS and EQUAL, to: (IMPLIES (AND (LISTP X) (EQUAL 0 (EVAL$ T (PLUS-TREE Y) A)) (EQUAL 0 (EVAL$ T (PLUS-TREE (CDR X)) A)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NOT (LISTP (APPEND (CDR X) Y))) (NOT (NUMBERP (EVAL$ T (CAR X) A))) (NUMBERP (EVAL$ T (CADR X) A))) (EQUAL 0 (EVAL$ T (CADR X) A))). However this further simplifies, appealing to the lemmas REWRITE-EVAL$ and CAR-CONS, and expanding the functions PLUS-TREE and FIX, to: T. Case 2.3.1. (IMPLIES (AND (LISTP X) (EQUAL 0 (EVAL$ T (PLUS-TREE Y) A)) (EQUAL 0 (EVAL$ T (PLUS-TREE (CDR X)) A)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NOT (LISTP (APPEND (CDR X) Y))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (CAR X) A) (PLUS 0 (EVAL$ T (CAR X) A) (EVAL$ T (CADR X) A)))), which again simplifies, unfolding EQUAL and PLUS, to: (IMPLIES (AND (LISTP X) (EQUAL 0 (EVAL$ T (PLUS-TREE Y) A)) (EQUAL 0 (EVAL$ T (PLUS-TREE (CDR X)) A)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NOT (LISTP (APPEND (CDR X) Y))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (CAR X) A) (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (CADR X) A)))). However this further simplifies, applying REWRITE-EVAL$, CAR-CONS, and PLUS-ZERO-ARG2, and unfolding the functions PLUS-TREE, FIX, and ZEROP, to: T. Case 2.2. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (LISTP (APPEND (CDR X) Y)) (LISTP (CDR (APPEND (CDR X) Y)))) (EQUAL (EVAL$ T (LIST 'PLUS (CAR X) (PLUS-TREE (APPEND (CDR X) Y))) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (LIST 'PLUS (CAR X) (CADR X)) A)))). But this again simplifies, applying the lemmas REWRITE-EVAL$, CAR-CONS, CDR-CONS, COMMUTATIVITY2-OF-PLUS, and PLUS-CANCELLATION, to: (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (LISTP (APPEND (CDR X) Y)) (LISTP (CDR (APPEND (CDR X) Y)))) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CADR X) A)))). This further simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, NUMBERP-EVAL$-PLUS-TREE, and PLUS-ZERO-ARG2, and expanding PLUS-TREE, FIX, and ZEROP, to: T. Case 2.1. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (PLUS-TREE (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y))))) (EQUAL (EVAL$ T (LIST 'PLUS (CAR X) (CAR (APPEND (CDR X) Y))) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (LIST 'PLUS (CAR X) (CADR X)) A)))). But this again simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, CDR-CONS, PLUS-ZERO-ARG2, COMMUTATIVITY2-OF-PLUS, and PLUS-CANCELLATION, and expanding PLUS-TREE, FIX, and ZEROP, to three new formulas: Case 2.1.3. (IMPLIES (AND (LISTP X) (NOT (NUMBERP (EVAL$ T (CAR (APPEND (CDR X) Y)) A))) (EQUAL 0 (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL 0 (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CADR X) A)))), which again simplifies, applying NUMBERP-EVAL$-PLUS-TREE and EQUAL-PLUS-0, and unfolding the functions EQUAL and PLUS, to: (IMPLIES (AND (LISTP X) (NOT (NUMBERP (EVAL$ T (CAR (APPEND (CDR X) Y)) A))) (EQUAL 0 (EVAL$ T (PLUS-TREE Y) A)) (EQUAL 0 (EVAL$ T (PLUS-TREE (CDR X)) A)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NOT (NUMBERP (EVAL$ T (CAR X) A))) (NUMBERP (EVAL$ T (CADR X) A))) (EQUAL 0 (EVAL$ T (CADR X) A))), which further simplifies, applying the lemmas REWRITE-EVAL$ and CAR-CONS, and opening up the definitions of PLUS-TREE and FIX, to: T. Case 2.1.2. (IMPLIES (AND (LISTP X) (NOT (NUMBERP (EVAL$ T (CAR (APPEND (CDR X) Y)) A))) (EQUAL 0 (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (CAR X) A) (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CADR X) A)))), which again simplifies, applying the lemmas NUMBERP-EVAL$-PLUS-TREE and EQUAL-PLUS-0, and expanding EQUAL and PLUS, to two new conjectures: Case 2.1.2.2. (IMPLIES (AND (LISTP X) (NOT (NUMBERP (EVAL$ T (CAR (APPEND (CDR X) Y)) A))) (EQUAL 0 (EVAL$ T (PLUS-TREE Y) A)) (EQUAL 0 (EVAL$ T (PLUS-TREE (CDR X)) A)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NUMBERP (EVAL$ T (CAR X) A)) (NOT (NUMBERP (EVAL$ T (CADR X) A)))) (EQUAL (EVAL$ T (CAR X) A) (PLUS (EVAL$ T (CAR X) A) 0))), which again simplifies, using linear arithmetic, to: T. Case 2.1.2.1. (IMPLIES (AND (LISTP X) (NOT (NUMBERP (EVAL$ T (CAR (APPEND (CDR X) Y)) A))) (EQUAL 0 (EVAL$ T (PLUS-TREE Y) A)) (EQUAL 0 (EVAL$ T (PLUS-TREE (CDR X)) A)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NUMBERP (EVAL$ T (CAR X) A)) (NUMBERP (EVAL$ T (CADR X) A))) (EQUAL (EVAL$ T (CAR X) A) (PLUS (EVAL$ T (CAR X) A) (EVAL$ T (CADR X) A)))), which further simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-CONS, and PLUS-ZERO-ARG2, and expanding PLUS-TREE, FIX, NUMBERP, and ZEROP, to: T. Case 2.1.1. (IMPLIES (AND (LISTP X) (NUMBERP (EVAL$ T (CAR (APPEND (CDR X) Y)) A)) (EQUAL (EVAL$ T (CAR (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y))))) (EQUAL (EVAL$ T (CAR (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CADR X) A)))), which again simplifies, clearly, to: (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (CAR (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (PLUS-TREE (CDR X)) A))) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y))))) (EQUAL (EVAL$ T (CAR (APPEND (CDR X) Y)) A) (PLUS (EVAL$ T (PLUS-TREE Y) A) (EVAL$ T (CADR X) A)))), which further simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-CONS, NUMBERP-EVAL$-PLUS-TREE, and PLUS-ZERO-ARG2, and unfolding the definitions of PLUS-TREE, FIX, and ZEROP, to: T. Case 1. (IMPLIES (NOT (LISTP X)) (EQUAL (EVAL$ T (PLUS-TREE (APPEND X Y)) A) (PLUS (EVAL$ T (PLUS-TREE X) A) (EVAL$ T (PLUS-TREE Y) A)))), which simplifies, rewriting with NUMBERP-EVAL$-PLUS-TREE, and unfolding the functions APPEND, PLUS-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, and PLUS, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.3 0.1 ] EVAL$-PLUS-TREE-APPEND (DISABLE EVAL$-PLUS-TREE-APPEND) [ 0.0 0.0 0.0 ] EVAL$-PLUS-TREE-APPEND-OFF (PROVE-LEMMA PLUS-TREE-PLUS-FRINGE (REWRITE) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE X)) A) (FIX (EVAL$ T X A))) ((ENABLE PLUS-ZERO-ARG2 COMMUTATIVITY-OF-PLUS PLUS-FRINGE PLUS-TREE NUMBERP-EVAL$-PLUS NUMBERP-EVAL$-BRIDGE EVAL$-PLUS-TREE-APPEND) (INDUCT (PLUS-FRINGE X)))) This formula can be simplified, using the abbreviations NOT, OR, and AND, to the following two new conjectures: Case 2. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'PLUS) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADDR X))) A) (FIX (EVAL$ T (CADDR X) A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADR X))) A) (FIX (EVAL$ T (CADR X) A)))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE X)) A) (FIX (EVAL$ T X A)))). This simplifies, rewriting with EVAL$-PLUS-TREE-APPEND, NUMBERP-EVAL$-PLUS, and PLUS-ZERO-ARG2, and unfolding the definitions of FIX, EQUAL, PLUS-FRINGE, PLUS, and ZEROP, to four new goals: Case 2.4. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'PLUS) (NOT (NUMBERP (EVAL$ T (CADDR X) A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADDR X))) A) 0) (NOT (NUMBERP (EVAL$ T (CADR X) A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADR X))) A) 0)) (EQUAL 0 (EVAL$ T X A))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS D W) to eliminate (CDR V) and (CAR V), and W by (CONS V C) to eliminate (CAR W) and (CDR W). This produces the following three new goals: Case 2.4.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'PLUS) (NOT (NUMBERP (EVAL$ T (CADR V) A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADR V))) A) 0) (NOT (NUMBERP (EVAL$ T (CAR V) A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CAR V))) A) 0)) (EQUAL 0 (EVAL$ T (CONS Z V) A))). However this further simplifies, rewriting with the lemma CDR-NLISTP, and opening up CAR, LISTP, LITATOM, EQUAL, EVAL$, and NUMBERP, to: T. Case 2.4.2. (IMPLIES (AND (NOT (LISTP W)) (EQUAL Z 'PLUS) (NOT (NUMBERP (EVAL$ T (CAR W) A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CAR W))) A) 0) (NOT (NUMBERP (EVAL$ T D A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE D)) A) 0)) (EQUAL 0 (EVAL$ T (CONS Z (CONS D W)) A))), which further simplifies, applying CAR-NLISTP, and expanding the definitions of LISTP, LITATOM, EQUAL, EVAL$, and NUMBERP, to: T. Case 2.4.1. (IMPLIES (AND (EQUAL Z 'PLUS) (NOT (NUMBERP (EVAL$ T V A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE V)) A) 0) (NOT (NUMBERP (EVAL$ T D A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE D)) A) 0)) (EQUAL 0 (EVAL$ T (CONS Z (CONS D (CONS V C))) A))). This further simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-CONS, CDR-CONS, and PLUS-ZERO-ARG2, and expanding the definitions of ZEROP and EQUAL, to: T. Case 2.3. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'PLUS) (NOT (NUMBERP (EVAL$ T (CADDR X) A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADDR X))) A) 0) (NUMBERP (EVAL$ T (CADR X) A)) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADR X))) A) (EVAL$ T (CADR X) A))) (EQUAL (EVAL$ T (CADR X) A) (EVAL$ T X A))), which again simplifies, appealing to the lemma NUMBERP-EVAL$-BRIDGE, to: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'PLUS) (NOT (NUMBERP (EVAL$ T (CADDR X) A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADDR X))) A) 0) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADR X))) A) (EVAL$ T (CADR X) A))) (EQUAL (EVAL$ T (CADR X) A) (EVAL$ T X A))). Appealing to the lemma CAR-CDR-ELIM, we now replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS D W) to eliminate (CDR V) and (CAR V), and W by (CONS V C) to eliminate (CAR W) and (CDR W). This generates three new formulas: Case 2.3.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'PLUS) (NOT (NUMBERP (EVAL$ T (CADR V) A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADR V))) A) 0) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CAR V))) A) (EVAL$ T (CAR V) A))) (EQUAL (EVAL$ T (CAR V) A) (EVAL$ T (CONS Z V) A))), which further simplifies, rewriting with the lemma CDR-NLISTP, and unfolding CAR, LISTP, LITATOM, EQUAL, EVAL$, and NUMBERP, to: T. Case 2.3.2. (IMPLIES (AND (NOT (LISTP W)) (EQUAL Z 'PLUS) (NOT (NUMBERP (EVAL$ T (CAR W) A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CAR W))) A) 0) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE D)) A) (EVAL$ T D A))) (EQUAL (EVAL$ T D A) (EVAL$ T (CONS Z (CONS D W)) A))), which further simplifies, rewriting with the lemma CAR-NLISTP, and opening up the functions LISTP, LITATOM, EQUAL, EVAL$, and NUMBERP, to: T. Case 2.3.1. (IMPLIES (AND (EQUAL Z 'PLUS) (NOT (NUMBERP (EVAL$ T V A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE V)) A) 0) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE D)) A) (EVAL$ T D A))) (EQUAL (EVAL$ T D A) (EVAL$ T (CONS Z (CONS D (CONS V C))) A))), which further simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, CDR-CONS, NUMBERP-EVAL$-BRIDGE, and PLUS-ZERO-ARG2, and opening up ZEROP, to: T. Case 2.2. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'PLUS) (NUMBERP (EVAL$ T (CADDR X) A)) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADDR X))) A) (EVAL$ T (CADDR X) A)) (NOT (NUMBERP (EVAL$ T (CADR X) A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADR X))) A) 0)) (EQUAL (EVAL$ T (CADDR X) A) (EVAL$ T X A))), which again simplifies, rewriting with NUMBERP-EVAL$-BRIDGE, to: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'PLUS) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADDR X))) A) (EVAL$ T (CADDR X) A)) (NOT (NUMBERP (EVAL$ T (CADR X) A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADR X))) A) 0)) (EQUAL (EVAL$ T (CADDR X) A) (EVAL$ T X A))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS D W) to eliminate (CDR V) and (CAR V), and W by (CONS V C) to eliminate (CAR W) and (CDR W). This produces the following three new formulas: Case 2.2.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'PLUS) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADR V))) A) (EVAL$ T (CADR V) A)) (NOT (NUMBERP (EVAL$ T (CAR V) A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CAR V))) A) 0)) (EQUAL (EVAL$ T (CADR V) A) (EVAL$ T (CONS Z V) A))). However this further simplifies, rewriting with CDR-NLISTP, REWRITE-EVAL$, and CAR-NLISTP, and opening up the definitions of CAR, PLUS-FRINGE, PLUS-TREE, LISTP, LITATOM, EQUAL, EVAL$, FIX, and NUMBERP, to: T. Case 2.2.2. (IMPLIES (AND (NOT (LISTP W)) (EQUAL Z 'PLUS) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CAR W))) A) (EVAL$ T (CAR W) A)) (NOT (NUMBERP (EVAL$ T D A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE D)) A) 0)) (EQUAL (EVAL$ T (CAR W) A) (EVAL$ T (CONS Z (CONS D W)) A))). This further simplifies, appealing to the lemmas CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, CDR-CONS, and PLUS-ZERO-ARG2, and opening up the definitions of PLUS-FRINGE, PLUS-TREE, CAR, LISTP, LITATOM, EQUAL, EVAL$, FIX, and ZEROP, to: T. Case 2.2.1. (IMPLIES (AND (EQUAL Z 'PLUS) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE V)) A) (EVAL$ T V A)) (NOT (NUMBERP (EVAL$ T D A))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE D)) A) 0)) (EQUAL (EVAL$ T V A) (EVAL$ T (CONS Z (CONS D (CONS V C))) A))), which further simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, CDR-CONS, and NUMBERP-EVAL$-BRIDGE, and opening up the function PLUS, to: T. Case 2.1. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'PLUS) (NUMBERP (EVAL$ T (CADDR X) A)) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADDR X))) A) (EVAL$ T (CADDR X) A)) (NUMBERP (EVAL$ T (CADR X) A)) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADR X))) A) (EVAL$ T (CADR X) A))) (EQUAL (PLUS (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)) (EVAL$ T X A))). However this again simplifies, applying NUMBERP-EVAL$-BRIDGE, to the new formula: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'PLUS) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADDR X))) A) (EVAL$ T (CADDR X) A)) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADR X))) A) (EVAL$ T (CADR X) A))) (EQUAL (PLUS (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)) (EVAL$ T X A))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS D W) to eliminate (CDR V) and (CAR V), and W by (CONS V C) to eliminate (CAR W) and (CDR W). We thus obtain the following three new conjectures: Case 2.1.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'PLUS) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CADR V))) A) (EVAL$ T (CADR V) A)) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CAR V))) A) (EVAL$ T (CAR V) A))) (EQUAL (PLUS (EVAL$ T (CAR V) A) (EVAL$ T (CADR V) A)) (EVAL$ T (CONS Z V) A))). However this further simplifies, rewriting with CDR-NLISTP, REWRITE-EVAL$, and CAR-NLISTP, and expanding CAR, PLUS-FRINGE, PLUS-TREE, LISTP, LITATOM, EQUAL, EVAL$, FIX, and PLUS, to: T. Case 2.1.2. (IMPLIES (AND (NOT (LISTP W)) (EQUAL Z 'PLUS) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE (CAR W))) A) (EVAL$ T (CAR W) A)) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE D)) A) (EVAL$ T D A))) (EQUAL (PLUS (EVAL$ T D A) (EVAL$ T (CAR W) A)) (EVAL$ T (CONS Z (CONS D W)) A))). This further simplifies, rewriting with CAR-NLISTP, REWRITE-EVAL$, NUMBERP-EVAL$-BRIDGE, PLUS-ZERO-ARG2, CAR-CONS, and CDR-CONS, and expanding the functions PLUS-FRINGE, PLUS-TREE, CAR, LISTP, LITATOM, EQUAL, EVAL$, FIX, and ZEROP, to: T. Case 2.1.1. (IMPLIES (AND (EQUAL Z 'PLUS) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE V)) A) (EVAL$ T V A)) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE D)) A) (EVAL$ T D A))) (EQUAL (PLUS (EVAL$ T D A) (EVAL$ T V A)) (EVAL$ T (CONS Z (CONS D (CONS V C))) A))). This further simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Case 1. (IMPLIES (NOT (AND (LISTP X) (EQUAL (CAR X) 'PLUS))) (EQUAL (EVAL$ T (PLUS-TREE (PLUS-FRINGE X)) A) (FIX (EVAL$ T X A)))). This simplifies, applying the lemmas CAR-CONS, CDR-CONS, and REWRITE-EVAL$, and expanding the definitions of AND, PLUS-FRINGE, LISTP, PLUS-TREE, EQUAL, EVAL$, and FIX, to: T. Q.E.D. [ 0.0 0.1 0.1 ] PLUS-TREE-PLUS-FRINGE (DISABLE PLUS-TREE-PLUS-FRINGE) [ 0.0 0.0 0.0 ] PLUS-TREE-PLUS-FRINGE-OFF (PROVE-LEMMA MEMBER-IMPLIES-NUMBERP (REWRITE) (IMPLIES (AND (MEMBER C (PLUS-FRINGE X)) (NUMBERP (EVAL$ T C A))) (NUMBERP (EVAL$ T X A))) ((ENABLE PLUS-FRINGE NUMBERP-EVAL$-PLUS) (INDUCT (PLUS-FRINGE X)))) WARNING: Note that MEMBER-IMPLIES-NUMBERP contains the free variable C which will be chosen by instantiating the hypothesis (MEMBER C (PLUS-FRINGE X)). This formula can be simplified, using the abbreviations IMPLIES, NOT, OR, and AND, to the following two new formulas: Case 2. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'PLUS) (IMPLIES (AND (MEMBER C (PLUS-FRINGE (CADDR X))) (NUMBERP (EVAL$ T C A))) (NUMBERP (EVAL$ T (CADDR X) A))) (IMPLIES (AND (MEMBER C (PLUS-FRINGE (CADR X))) (NUMBERP (EVAL$ T C A))) (NUMBERP (EVAL$ T (CADR X) A))) (MEMBER C (PLUS-FRINGE X)) (NUMBERP (EVAL$ T C A))) (NUMBERP (EVAL$ T X A))). This simplifies, applying NUMBERP-EVAL$-PLUS, and unfolding the definitions of AND, IMPLIES, EQUAL, and PLUS-FRINGE, to: T. Case 1. (IMPLIES (AND (NOT (AND (LISTP X) (EQUAL (CAR X) 'PLUS))) (MEMBER C (PLUS-FRINGE X)) (NUMBERP (EVAL$ T C A))) (NUMBERP (EVAL$ T X A))), which simplifies, rewriting with MEMBER-NON-LIST, CDR-CONS, and CAR-CONS, and opening up the definitions of AND, PLUS-FRINGE, MEMBER, EQUAL, and EVAL$, to: T. Q.E.D. [ 0.0 0.0 0.0 ] MEMBER-IMPLIES-NUMBERP (DISABLE MEMBER-IMPLIES-NUMBERP) [ 0.0 0.0 0.0 ] MEMBER-IMPLIES-NUMBERP-OFF (PROVE-LEMMA CADR-EVAL$-LIST (REWRITE) (AND (EQUAL (CAR (EVAL$ 'LIST X A)) (EVAL$ T (CAR X) A)) (EQUAL (CDR (EVAL$ 'LIST X A)) (IF (LISTP X) (EVAL$ 'LIST (CDR X) A) 0)))) WARNING: Note that the proposed lemma CADR-EVAL$-LIST is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This formula can be simplified, using the abbreviation AND, to the following two new conjectures: Case 2. (EQUAL (CAR (EVAL$ 'LIST X A)) (EVAL$ T (CAR X) A)). Appealing to the lemma CAR-CDR-ELIM, we now replace X by (CONS Z V) to eliminate (CAR X) and (CDR X). We must thus prove two new goals: Case 2.2. (IMPLIES (NOT (LISTP X)) (EQUAL (CAR (EVAL$ 'LIST X A)) (EVAL$ T (CAR X) A))), which simplifies, rewriting with CAR-NLISTP, and unfolding the functions EQUAL, EVAL$, CAR, LISTP, and LITATOM, to: T. Case 2.1. (EQUAL (CAR (EVAL$ 'LIST (CONS Z V) A)) (EVAL$ T Z A)). However this simplifies, applying CDR-CONS and CAR-CONS, and unfolding the definitions of EQUAL and EVAL$, to: T. Case 1. (EQUAL (CDR (EVAL$ 'LIST X A)) (IF (LISTP X) (EVAL$ 'LIST (CDR X) A) 0)). This simplifies, trivially, to the following two new conjectures: Case 1.2. (IMPLIES (NOT (LISTP X)) (EQUAL (CDR (EVAL$ 'LIST X A)) 0)). However this again simplifies, unfolding the functions EQUAL, EVAL$, and CDR, to: T. Case 1.1. (IMPLIES (LISTP X) (EQUAL (CDR (EVAL$ 'LIST X A)) (EVAL$ 'LIST (CDR X) A))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS V Z) to eliminate (CDR X) and (CAR X). We would thus like to prove: (EQUAL (CDR (EVAL$ 'LIST (CONS V Z) A)) (EVAL$ 'LIST Z A)), which further simplifies, appealing to the lemmas CDR-CONS and CAR-CONS, and expanding EQUAL and EVAL$, to: T. Q.E.D. [ 0.0 0.0 0.0 ] CADR-EVAL$-LIST (DISABLE CADR-EVAL$-LIST) [ 0.0 0.0 0.0 ] CADR-EVAL$-LIST-OFF (PROVE-LEMMA EVAL$-QUOTE (REWRITE) (EQUAL (EVAL$ T (CONS 'QUOTE ARGS) A) (CAR ARGS))) This conjecture simplifies, rewriting with CDR-CONS and CAR-CONS, and unfolding EQUAL and EVAL$, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EVAL$-QUOTE (DISABLE EVAL$-QUOTE) [ 0.0 0.0 0.0 ] EVAL$-QUOTE-OFF (PROVE-LEMMA LISTP-EVAL$ (REWRITE) (EQUAL (LISTP (EVAL$ 'LIST X A)) (LISTP X))) Name the conjecture *1. We will appeal to induction. There is only one plausible induction. We will induct according to the following scheme: (AND (IMPLIES (AND (EQUAL 'LIST 'LIST) (NLISTP X)) (p X A)) (IMPLIES (AND (EQUAL 'LIST 'LIST) (NOT (NLISTP X)) (p (CDR X) A) (p (CAR X) A)) (p X A)) (IMPLIES (AND (NOT (EQUAL 'LIST 'LIST)) (LITATOM X)) (p X A)) (IMPLIES (AND (NOT (EQUAL 'LIST 'LIST)) (NOT (LITATOM X)) (NLISTP X)) (p X A)) (IMPLIES (AND (NOT (EQUAL 'LIST 'LIST)) (NOT (LITATOM X)) (NOT (NLISTP X)) (EQUAL (CAR X) 'QUOTE)) (p X A)) (IMPLIES (AND (NOT (EQUAL 'LIST 'LIST)) (NOT (LITATOM X)) (NOT (NLISTP X)) (NOT (EQUAL (CAR X) 'QUOTE)) (p (CDR X) A)) (p X A))). Linear arithmetic, the lemmas CDR-LESSEQP, CDR-LESSP, CAR-LESSEQP, and CAR-LESSP, and the definition of NLISTP inform us that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme produces the following six new formulas: Case 6. (IMPLIES (AND (EQUAL 'LIST 'LIST) (NLISTP X)) (EQUAL (LISTP (EVAL$ 'LIST X A)) (LISTP X))). This simplifies, expanding the definitions of EQUAL, NLISTP, EVAL$, and LISTP, to: T. Case 5. (IMPLIES (AND (EQUAL 'LIST 'LIST) (NOT (NLISTP X)) (EQUAL (LISTP (EVAL$ 'LIST (CDR X) A)) (LISTP (CDR X))) (EQUAL (LISTP (EVAL$ 'LIST (CAR X) A)) (LISTP (CAR X)))) (EQUAL (LISTP (EVAL$ 'LIST X A)) (LISTP X))). This simplifies, expanding the definitions of EQUAL, NLISTP, and EVAL$, to: T. Case 4. (IMPLIES (AND (NOT (EQUAL 'LIST 'LIST)) (LITATOM X)) (EQUAL (LISTP (EVAL$ 'LIST X A)) (LISTP X))). This simplifies, trivially, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL 'LIST 'LIST)) (NOT (LITATOM X)) (NLISTP X)) (EQUAL (LISTP (EVAL$ 'LIST X A)) (LISTP X))). This simplifies, trivially, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL 'LIST 'LIST)) (NOT (LITATOM X)) (NOT (NLISTP X)) (EQUAL (CAR X) 'QUOTE)) (EQUAL (LISTP (EVAL$ 'LIST X A)) (LISTP X))). This simplifies, obviously, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL 'LIST 'LIST)) (NOT (LITATOM X)) (NOT (NLISTP X)) (NOT (EQUAL (CAR X) 'QUOTE)) (EQUAL (LISTP (EVAL$ 'LIST (CDR X) A)) (LISTP (CDR X)))) (EQUAL (LISTP (EVAL$ 'LIST X A)) (LISTP X))). This simplifies, obviously, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LISTP-EVAL$ (DISABLE LISTP-EVAL$) [ 0.0 0.0 0.0 ] LISTP-EVAL$-OFF (DEFN CANCEL-EQUAL-PLUS (X) (IF (AND (LISTP X) (EQUAL (CAR X) 'EQUAL)) (IF (AND (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS)) (LIST 'EQUAL (PLUS-TREE (BAGDIFF (PLUS-FRINGE (CADR X)) (BAGINT (PLUS-FRINGE (CADR X)) (PLUS-FRINGE (CADDR X))))) (PLUS-TREE (BAGDIFF (PLUS-FRINGE (CADDR X)) (BAGINT (PLUS-FRINGE (CADR X)) (PLUS-FRINGE (CADDR X)))))) (IF (AND (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X)))) (LIST 'IF (LIST 'NUMBERP (CADDR X)) (LIST 'EQUAL (PLUS-TREE (DELETE (CADDR X) (PLUS-FRINGE (CADR X)))) ''0) (LIST 'QUOTE F)) (IF (AND (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X)))) (LIST 'IF (LIST 'NUMBERP (CADR X)) (LIST 'EQUAL ''0 (PLUS-TREE (DELETE (CADR X) (PLUS-FRINGE (CADDR X))))) (LIST 'QUOTE F)) X))) X)) From the definition we can conclude that: (OR (LISTP (CANCEL-EQUAL-PLUS X)) (EQUAL (CANCEL-EQUAL-PLUS X) X)) is a theorem. [ 0.0 0.0 0.0 ] CANCEL-EQUAL-PLUS (PROVE-LEMMA CORRECTNESS-OF-CANCEL-EQUAL-PLUS ((META EQUAL)) (EQUAL (EVAL$ T X A) (EVAL$ T (CANCEL-EQUAL-PLUS X) A)) ((ENABLE BRIDGE-TO-SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP CANCEL-EQUAL-PLUS DIFFERENCE-CANCELLATION EQUAL-DIFFERENCE-0 EVAL$-QUOTE MEMBER-IMPLIES-NUMBERP MEMBER-IMPLIES-PLUS-TREE-GREATEREQP NUMBERP-EVAL$-PLUS PLUS-TREE-BAGDIFF PLUS-TREE-DELETE PLUS-TREE-PLUS-FRINGE SUBBAGP-BAGINT1 SUBBAGP-BAGINT2) (DISABLE EVAL$))) This formula simplifies, opening up the function CANCEL-EQUAL-PLUS, to the following five new goals: Case 5. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (NOT (EQUAL (CAADR X) 'PLUS)) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X)))) (EQUAL (EVAL$ T X A) (EVAL$ T (LIST 'IF (LIST 'NUMBERP (CADR X)) (LIST 'EQUAL ''0 (PLUS-TREE (DELETE (CADR X) (PLUS-FRINGE (CADDR X))))) (LIST 'QUOTE F)) A))). However this again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, CDR-CONS, EVAL$-QUOTE, MEMBER-IMPLIES-NUMBERP, PLUS-TREE-PLUS-FRINGE, PLUS-TREE-DELETE, and EQUAL-DIFFERENCE-0, and opening up CAR, to the following three new formulas: Case 5.3. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (NOT (EQUAL (CAADR X) 'PLUS)) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X))) (LESSP (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A))) (EQUAL (EVAL$ T X A) F)). This again simplifies, clearly, to the new goal: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (NOT (EQUAL (CAADR X) 'PLUS)) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X))) (LESSP (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A))) (NOT (EVAL$ T X A))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), W by (CONS V C) to eliminate (CAR W) and (CDR W), D by (CONS W X1) to eliminate (CAR D) and (CDR D), W by (CONS D Z1) to eliminate (CAR W) and (CDR W), D by (CONS V C) to eliminate (CAR D) and (CDR D), and V by (CONS D X1) to eliminate (CAR V) and (CDR V). We would thus like to prove the following five new goals: Case 5.3.5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'EQUAL) (NOT (EQUAL (CAAR V) 'PLUS)) (LISTP (CADR V)) (EQUAL (CAADR V) 'PLUS) (MEMBER (CAR V) (PLUS-FRINGE (CADR V))) (LESSP (EVAL$ T (CAR V) A) (EVAL$ T (CADR V) A))) (NOT (EVAL$ T (CONS Z V) A))). This further simplifies, rewriting with CAR-NLISTP and CDR-NLISTP, and opening up the functions CAR, EQUAL, and LISTP, to: T. Case 5.3.4. (IMPLIES (AND (NOT (LISTP D)) (NOT (LISTP W)) (EQUAL Z 'EQUAL) (NOT (EQUAL (CAR W) 'PLUS)) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (MEMBER W (PLUS-FRINGE (CAR D))) (LESSP (EVAL$ T W A) (EVAL$ T (CAR D) A))) (NOT (EVAL$ T (CONS Z (CONS W D)) A))). But this further simplifies, appealing to the lemma CAR-NLISTP, and opening up the functions EQUAL and LISTP, to: T. Case 5.3.3. (IMPLIES (AND (NOT (LISTP W)) (EQUAL Z 'EQUAL) (NOT (EQUAL (CAR W) 'PLUS)) (EQUAL D 'PLUS) (MEMBER W (PLUS-FRINGE (CONS D X1))) (LESSP (EVAL$ T W A) (EVAL$ T (CONS D X1) A))) (NOT (EVAL$ T (CONS Z (CONS W (CONS (CONS D X1) C))) A))), which further simplifies, appealing to the lemmas CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and expanding EQUAL, to the goal: (IMPLIES (AND (NOT (LISTP W)) (MEMBER W (PLUS-FRINGE (CONS 'PLUS X1))) (LESSP (EVAL$ T W A) (PLUS (EVAL$ T (CAR X1) A) (EVAL$ T (CADR X1) A)))) (NOT (EQUAL (EVAL$ T W A) (PLUS (EVAL$ T (CAR X1) A) (EVAL$ T (CADR X1) A))))). However this finally simplifies, using linear arithmetic, to: T. Case 5.3.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'EQUAL) (NOT (EQUAL V 'PLUS)) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (MEMBER (CONS V C) (PLUS-FRINGE (CAR D))) (LESSP (EVAL$ T (CONS V C) A) (EVAL$ T (CAR D) A))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) D)) A))), which further simplifies, applying CAR-NLISTP, and opening up the definition of LISTP, to: T. Case 5.3.1. (IMPLIES (AND (EQUAL Z 'EQUAL) (NOT (EQUAL V 'PLUS)) (EQUAL D 'PLUS) (MEMBER (CONS V C) (PLUS-FRINGE (CONS D Z1))) (LESSP (EVAL$ T (CONS V C) A) (EVAL$ T (CONS D Z1) A))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) (CONS (CONS D Z1) X1))) A))). However this further simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: (IMPLIES (AND (NOT (EQUAL V 'PLUS)) (MEMBER (CONS V C) (PLUS-FRINGE (CONS 'PLUS Z1))) (LESSP (EVAL$ T (CONS V C) A) (PLUS (EVAL$ T (CAR Z1) A) (EVAL$ T (CADR Z1) A)))) (NOT (EQUAL (EVAL$ T (CONS V C) A) (PLUS (EVAL$ T (CAR Z1) A) (EVAL$ T (CADR Z1) A))))), which finally simplifies, using linear arithmetic, to: T. Case 5.2. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (NOT (EQUAL (CAADR X) 'PLUS)) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X))) (NOT (NUMBERP (EVAL$ T (CADR X) A)))) (EQUAL (EVAL$ T X A) F)), which again simplifies, trivially, to: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (NOT (EQUAL (CAADR X) 'PLUS)) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X))) (NOT (NUMBERP (EVAL$ T (CADR X) A)))) (NOT (EVAL$ T X A))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), W by (CONS V C) to eliminate (CAR W) and (CDR W), D by (CONS W X1) to eliminate (CAR D) and (CDR D), W by (CONS D Z1) to eliminate (CAR W) and (CDR W), D by (CONS V C) to eliminate (CAR D) and (CDR D), and V by (CONS D X1) to eliminate (CAR V) and (CDR V). We thus obtain the following five new conjectures: Case 5.2.5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'EQUAL) (NOT (EQUAL (CAAR V) 'PLUS)) (LISTP (CADR V)) (EQUAL (CAADR V) 'PLUS) (MEMBER (CAR V) (PLUS-FRINGE (CADR V))) (NOT (NUMBERP (EVAL$ T (CAR V) A)))) (NOT (EVAL$ T (CONS Z V) A))). But this further simplifies, rewriting with CAR-NLISTP and CDR-NLISTP, and unfolding the definitions of CAR, EQUAL, and LISTP, to: T. Case 5.2.4. (IMPLIES (AND (NOT (LISTP D)) (NOT (LISTP W)) (EQUAL Z 'EQUAL) (NOT (EQUAL (CAR W) 'PLUS)) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (MEMBER W (PLUS-FRINGE (CAR D))) (NOT (NUMBERP (EVAL$ T W A)))) (NOT (EVAL$ T (CONS Z (CONS W D)) A))). This further simplifies, applying CAR-NLISTP, and unfolding EQUAL and LISTP, to: T. Case 5.2.3. (IMPLIES (AND (NOT (LISTP W)) (EQUAL Z 'EQUAL) (NOT (EQUAL (CAR W) 'PLUS)) (EQUAL D 'PLUS) (MEMBER W (PLUS-FRINGE (CONS D X1))) (NOT (NUMBERP (EVAL$ T W A)))) (NOT (EVAL$ T (CONS Z (CONS W (CONS (CONS D X1) C))) A))). However this further simplifies, rewriting with the lemmas CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and expanding the function EQUAL, to: T. Case 5.2.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'EQUAL) (NOT (EQUAL V 'PLUS)) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (MEMBER (CONS V C) (PLUS-FRINGE (CAR D))) (NOT (NUMBERP (EVAL$ T (CONS V C) A)))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) D)) A))), which further simplifies, applying CAR-NLISTP, and expanding the function LISTP, to: T. Case 5.2.1. (IMPLIES (AND (EQUAL Z 'EQUAL) (NOT (EQUAL V 'PLUS)) (EQUAL D 'PLUS) (MEMBER (CONS V C) (PLUS-FRINGE (CONS D Z1))) (NOT (NUMBERP (EVAL$ T (CONS V C) A)))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) (CONS (CONS D Z1) X1))) A))). However this further simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Case 5.1. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (NOT (EQUAL (CAADR X) 'PLUS)) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X))) (NUMBERP (EVAL$ T (CADR X) A)) (NOT (LESSP (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)))) (EQUAL (EVAL$ T X A) T)). Appealing to the lemma CAR-CDR-ELIM, we now replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), W by (CONS V C) to eliminate (CAR W) and (CDR W), D by (CONS W X1) to eliminate (CAR D) and (CDR D), W by (CONS D Z1) to eliminate (CAR W) and (CDR W), D by (CONS V C) to eliminate (CAR D) and (CDR D), and V by (CONS D X1) to eliminate (CAR V) and (CDR V). We must thus prove five new conjectures: Case 5.1.5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'EQUAL) (NOT (EQUAL (CAAR V) 'PLUS)) (LISTP (CADR V)) (EQUAL (CAADR V) 'PLUS) (MEMBER (CAR V) (PLUS-FRINGE (CADR V))) (NUMBERP (EVAL$ T (CAR V) A)) (NOT (LESSP (EVAL$ T (CAR V) A) (EVAL$ T (CADR V) A)))) (EQUAL (EVAL$ T (CONS Z V) A) T)), which further simplifies, applying CAR-NLISTP and CDR-NLISTP, and unfolding CAR, EQUAL, and LISTP, to: T. Case 5.1.4. (IMPLIES (AND (NOT (LISTP D)) (NOT (LISTP W)) (EQUAL Z 'EQUAL) (NOT (EQUAL (CAR W) 'PLUS)) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (MEMBER W (PLUS-FRINGE (CAR D))) (NUMBERP (EVAL$ T W A)) (NOT (LESSP (EVAL$ T W A) (EVAL$ T (CAR D) A)))) (EQUAL (EVAL$ T (CONS Z (CONS W D)) A) T)). But this further simplifies, rewriting with CAR-NLISTP, and opening up EQUAL and LISTP, to: T. Case 5.1.3. (IMPLIES (AND (NOT (LISTP W)) (EQUAL Z 'EQUAL) (NOT (EQUAL (CAR W) 'PLUS)) (EQUAL D 'PLUS) (MEMBER W (PLUS-FRINGE (CONS D X1))) (NUMBERP (EVAL$ T W A)) (NOT (LESSP (EVAL$ T W A) (EVAL$ T (CONS D X1) A)))) (EQUAL (EVAL$ T (CONS Z (CONS W (CONS (CONS D X1) C))) A) T)). This further simplifies, rewriting with the lemmas CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and opening up EQUAL, to: (IMPLIES (AND (NOT (LISTP W)) (MEMBER W (PLUS-FRINGE (CONS 'PLUS X1))) (NUMBERP (EVAL$ T W A)) (NOT (LESSP (EVAL$ T W A) (PLUS (EVAL$ T (CAR X1) A) (EVAL$ T (CADR X1) A))))) (EQUAL (EVAL$ T W A) (PLUS (EVAL$ T (CAR X1) A) (EVAL$ T (CADR X1) A)))). But this again simplifies, using linear arithmetic and applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, PLUS-TREE-PLUS-FRINGE, and REWRITE-EVAL$, to: T. Case 5.1.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'EQUAL) (NOT (EQUAL V 'PLUS)) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (MEMBER (CONS V C) (PLUS-FRINGE (CAR D))) (NUMBERP (EVAL$ T (CONS V C) A)) (NOT (LESSP (EVAL$ T (CONS V C) A) (EVAL$ T (CAR D) A)))) (EQUAL (EVAL$ T (CONS Z (CONS (CONS V C) D)) A) T)). However this further simplifies, using linear arithmetic and rewriting with MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, PLUS-TREE-PLUS-FRINGE, and MEMBER-IMPLIES-NUMBERP, to the following two new goals: Case 5.1.2.2. (IMPLIES (AND (NOT (NUMBERP (EVAL$ T (CAR D) A))) (NOT (LISTP D)) (NOT (EQUAL V 'PLUS)) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (MEMBER (CONS V C) (PLUS-FRINGE (CAR D))) (NUMBERP (EVAL$ T (CONS V C) A)) (NOT (LESSP (EVAL$ T (CONS V C) A) (EVAL$ T (CAR D) A)))) (EQUAL (EVAL$ T (CONS 'EQUAL (CONS (CONS V C) D)) A) T)). This again simplifies, applying CAR-NLISTP, and opening up LISTP, to: T. Case 5.1.2.1. (IMPLIES (AND (NUMBERP (EVAL$ T (CAR D) A)) (EQUAL (EVAL$ T (CONS V C) A) (EVAL$ T (CAR D) A)) (NOT (LISTP D)) (NOT (EQUAL V 'PLUS)) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (MEMBER (CONS V C) (PLUS-FRINGE (CAR D))) (NOT (LESSP (EVAL$ T (CAR D) A) (EVAL$ T (CAR D) A)))) (EQUAL (EVAL$ T (CONS 'EQUAL (CONS (CONS V C) D)) A) T)). But this again simplifies, rewriting with CAR-NLISTP, and unfolding the function LISTP, to: T. Case 5.1.1. (IMPLIES (AND (EQUAL Z 'EQUAL) (NOT (EQUAL V 'PLUS)) (EQUAL D 'PLUS) (MEMBER (CONS V C) (PLUS-FRINGE (CONS D Z1))) (NUMBERP (EVAL$ T (CONS V C) A)) (NOT (LESSP (EVAL$ T (CONS V C) A) (EVAL$ T (CONS D Z1) A)))) (EQUAL (EVAL$ T (CONS Z (CONS (CONS V C) (CONS (CONS D Z1) X1))) A) T)). This further simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: (IMPLIES (AND (NOT (EQUAL V 'PLUS)) (MEMBER (CONS V C) (PLUS-FRINGE (CONS 'PLUS Z1))) (NUMBERP (EVAL$ T (CONS V C) A)) (NOT (LESSP (EVAL$ T (CONS V C) A) (PLUS (EVAL$ T (CAR Z1) A) (EVAL$ T (CADR Z1) A))))) (EQUAL (EVAL$ T (CONS V C) A) (PLUS (EVAL$ T (CAR Z1) A) (EVAL$ T (CADR Z1) A)))). However this again simplifies, using linear arithmetic and applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, PLUS-TREE-PLUS-FRINGE, and REWRITE-EVAL$, to: T. Case 4. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (NOT (LISTP (CADR X))) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X)))) (EQUAL (EVAL$ T X A) (EVAL$ T (LIST 'IF (LIST 'NUMBERP (CADR X)) (LIST 'EQUAL ''0 (PLUS-TREE (DELETE (CADR X) (PLUS-FRINGE (CADDR X))))) (LIST 'QUOTE F)) A))). But this again simplifies, applying REWRITE-EVAL$, CAR-CONS, CDR-CONS, EVAL$-QUOTE, MEMBER-IMPLIES-NUMBERP, PLUS-TREE-PLUS-FRINGE, PLUS-TREE-DELETE, and EQUAL-DIFFERENCE-0, and unfolding CAR, to the following three new goals: Case 4.3. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (NOT (LISTP (CADR X))) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X))) (LESSP (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A))) (EQUAL (EVAL$ T X A) F)). This again simplifies, obviously, to: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (NOT (LISTP (CADR X))) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X))) (LESSP (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A))) (NOT (EVAL$ T X A))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), D by (CONS V C) to eliminate (CAR D) and (CDR D), and V by (CONS D X1) to eliminate (CAR V) and (CDR V). We would thus like to prove the following three new conjectures: Case 4.3.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'EQUAL) (NOT (LISTP (CAR V))) (LISTP (CADR V)) (EQUAL (CAADR V) 'PLUS) (MEMBER (CAR V) (PLUS-FRINGE (CADR V))) (LESSP (EVAL$ T (CAR V) A) (EVAL$ T (CADR V) A))) (NOT (EVAL$ T (CONS Z V) A))). This further simplifies, applying CAR-NLISTP and CDR-NLISTP, and expanding the functions LISTP and CAR, to: T. Case 4.3.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'EQUAL) (NOT (LISTP W)) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (MEMBER W (PLUS-FRINGE (CAR D))) (LESSP (EVAL$ T W A) (EVAL$ T (CAR D) A))) (NOT (EVAL$ T (CONS Z (CONS W D)) A))). This further simplifies, rewriting with CAR-NLISTP, and expanding the definition of LISTP, to: T. Case 4.3.1. (IMPLIES (AND (EQUAL Z 'EQUAL) (NOT (LISTP W)) (EQUAL D 'PLUS) (MEMBER W (PLUS-FRINGE (CONS D X1))) (LESSP (EVAL$ T W A) (EVAL$ T (CONS D X1) A))) (NOT (EVAL$ T (CONS Z (CONS W (CONS (CONS D X1) C))) A))). This further simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: (IMPLIES (AND (NOT (LISTP W)) (MEMBER W (PLUS-FRINGE (CONS 'PLUS X1))) (LESSP (EVAL$ T W A) (PLUS (EVAL$ T (CAR X1) A) (EVAL$ T (CADR X1) A)))) (NOT (EQUAL (EVAL$ T W A) (PLUS (EVAL$ T (CAR X1) A) (EVAL$ T (CADR X1) A))))), which finally simplifies, using linear arithmetic, to: T. Case 4.2. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (NOT (LISTP (CADR X))) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X))) (NOT (NUMBERP (EVAL$ T (CADR X) A)))) (EQUAL (EVAL$ T X A) F)), which again simplifies, clearly, to: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (NOT (LISTP (CADR X))) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X))) (NOT (NUMBERP (EVAL$ T (CADR X) A)))) (NOT (EVAL$ T X A))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), D by (CONS V C) to eliminate (CAR D) and (CDR D), and V by (CONS D X1) to eliminate (CAR V) and (CDR V). We thus obtain the following three new formulas: Case 4.2.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'EQUAL) (NOT (LISTP (CAR V))) (LISTP (CADR V)) (EQUAL (CAADR V) 'PLUS) (MEMBER (CAR V) (PLUS-FRINGE (CADR V))) (NOT (NUMBERP (EVAL$ T (CAR V) A)))) (NOT (EVAL$ T (CONS Z V) A))). However this further simplifies, applying CAR-NLISTP and CDR-NLISTP, and unfolding the functions LISTP and CAR, to: T. Case 4.2.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'EQUAL) (NOT (LISTP W)) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (MEMBER W (PLUS-FRINGE (CAR D))) (NOT (NUMBERP (EVAL$ T W A)))) (NOT (EVAL$ T (CONS Z (CONS W D)) A))). But this further simplifies, rewriting with CAR-NLISTP, and opening up the function LISTP, to: T. Case 4.2.1. (IMPLIES (AND (EQUAL Z 'EQUAL) (NOT (LISTP W)) (EQUAL D 'PLUS) (MEMBER W (PLUS-FRINGE (CONS D X1))) (NOT (NUMBERP (EVAL$ T W A)))) (NOT (EVAL$ T (CONS Z (CONS W (CONS (CONS D X1) C))) A))). This further simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Case 4.1. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (NOT (LISTP (CADR X))) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X))) (NUMBERP (EVAL$ T (CADR X) A)) (NOT (LESSP (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)))) (EQUAL (EVAL$ T X A) T)). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), D by (CONS V C) to eliminate (CAR D) and (CDR D), and V by (CONS D X1) to eliminate (CAR V) and (CDR V). This produces the following three new formulas: Case 4.1.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'EQUAL) (NOT (LISTP (CAR V))) (LISTP (CADR V)) (EQUAL (CAADR V) 'PLUS) (MEMBER (CAR V) (PLUS-FRINGE (CADR V))) (NUMBERP (EVAL$ T (CAR V) A)) (NOT (LESSP (EVAL$ T (CAR V) A) (EVAL$ T (CADR V) A)))) (EQUAL (EVAL$ T (CONS Z V) A) T)). This further simplifies, applying CAR-NLISTP and CDR-NLISTP, and opening up the functions LISTP and CAR, to: T. Case 4.1.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'EQUAL) (NOT (LISTP W)) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (MEMBER W (PLUS-FRINGE (CAR D))) (NUMBERP (EVAL$ T W A)) (NOT (LESSP (EVAL$ T W A) (EVAL$ T (CAR D) A)))) (EQUAL (EVAL$ T (CONS Z (CONS W D)) A) T)). This further simplifies, rewriting with CAR-NLISTP, and expanding the function LISTP, to: T. Case 4.1.1. (IMPLIES (AND (EQUAL Z 'EQUAL) (NOT (LISTP W)) (EQUAL D 'PLUS) (MEMBER W (PLUS-FRINGE (CONS D X1))) (NUMBERP (EVAL$ T W A)) (NOT (LESSP (EVAL$ T W A) (EVAL$ T (CONS D X1) A)))) (EQUAL (EVAL$ T (CONS Z (CONS W (CONS (CONS D X1) C))) A) T)). However this further simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: (IMPLIES (AND (NOT (LISTP W)) (MEMBER W (PLUS-FRINGE (CONS 'PLUS X1))) (NUMBERP (EVAL$ T W A)) (NOT (LESSP (EVAL$ T W A) (PLUS (EVAL$ T (CAR X1) A) (EVAL$ T (CADR X1) A))))) (EQUAL (EVAL$ T W A) (PLUS (EVAL$ T (CAR X1) A) (EVAL$ T (CADR X1) A)))), which again simplifies, using linear arithmetic and applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, PLUS-TREE-PLUS-FRINGE, and REWRITE-EVAL$, to: T. Case 3. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (EQUAL (CAADDR X) 'PLUS)) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X)))) (EQUAL (EVAL$ T X A) (EVAL$ T (LIST 'IF (LIST 'NUMBERP (CADDR X)) (CONS 'EQUAL (CONS (PLUS-TREE (DELETE (CADDR X) (PLUS-FRINGE (CADR X)))) '('0))) (LIST 'QUOTE F)) A))). However this again simplifies, applying REWRITE-EVAL$, CAR-CONS, CDR-CONS, MEMBER-IMPLIES-NUMBERP, PLUS-TREE-PLUS-FRINGE, PLUS-TREE-DELETE, EVAL$-QUOTE, and EQUAL-DIFFERENCE-0, and expanding CAR, to the following three new conjectures: Case 3.3. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (EQUAL (CAADDR X) 'PLUS)) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X))) (LESSP (EVAL$ T (CADDR X) A) (EVAL$ T (CADR X) A))) (EQUAL (EVAL$ T X A) F)). This again simplifies, obviously, to: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (EQUAL (CAADDR X) 'PLUS)) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X))) (LESSP (EVAL$ T (CADDR X) A) (EVAL$ T (CADR X) A))) (NOT (EVAL$ T X A))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), W by (CONS V C) to eliminate (CAR W) and (CDR W), D by (CONS W X1) to eliminate (CAR D) and (CDR D), and W by (CONS D Z1) to eliminate (CAR W) and (CDR W). This produces the following four new goals: Case 3.3.4. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'EQUAL) (LISTP (CAR V)) (EQUAL (CAAR V) 'PLUS) (NOT (EQUAL (CAADR V) 'PLUS)) (MEMBER (CADR V) (PLUS-FRINGE (CAR V))) (LESSP (EVAL$ T (CADR V) A) (EVAL$ T (CAR V) A))) (NOT (EVAL$ T (CONS Z V) A))). However this further simplifies, applying the lemma CAR-NLISTP, and unfolding the function LISTP, to: T. Case 3.3.3. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'EQUAL) (EQUAL V 'PLUS) (NOT (EQUAL (CAAR D) 'PLUS)) (MEMBER (CAR D) (PLUS-FRINGE (CONS V C))) (LESSP (EVAL$ T (CAR D) A) (EVAL$ T (CONS V C) A))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) D)) A))), which further simplifies, applying the lemmas CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and unfolding the definitions of CAR and EQUAL, to the goal: (IMPLIES (AND (NOT (LISTP D)) (MEMBER 0 (PLUS-FRINGE (CONS 'PLUS C))) (LESSP (EVAL$ T 0 A) (PLUS (EVAL$ T (CAR C) A) (EVAL$ T (CADR C) A)))) (NOT (EQUAL (PLUS (EVAL$ T (CAR C) A) (EVAL$ T (CADR C) A)) (EVAL$ T 0 A)))). But this finally simplifies, using linear arithmetic, to: T. Case 3.3.2. (IMPLIES (AND (NOT (LISTP W)) (EQUAL Z 'EQUAL) (EQUAL V 'PLUS) (NOT (EQUAL (CAR W) 'PLUS)) (MEMBER W (PLUS-FRINGE (CONS V C))) (LESSP (EVAL$ T W A) (EVAL$ T (CONS V C) A))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) (CONS W X1))) A))), which further simplifies, applying CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and unfolding the function EQUAL, to the new formula: (IMPLIES (AND (NOT (LISTP W)) (MEMBER W (PLUS-FRINGE (CONS 'PLUS C))) (LESSP (EVAL$ T W A) (PLUS (EVAL$ T (CAR C) A) (EVAL$ T (CADR C) A)))) (NOT (EQUAL (PLUS (EVAL$ T (CAR C) A) (EVAL$ T (CADR C) A)) (EVAL$ T W A)))), which finally simplifies, using linear arithmetic, to: T. Case 3.3.1. (IMPLIES (AND (EQUAL Z 'EQUAL) (EQUAL V 'PLUS) (NOT (EQUAL D 'PLUS)) (MEMBER (CONS D Z1) (PLUS-FRINGE (CONS V C))) (LESSP (EVAL$ T (CONS D Z1) A) (EVAL$ T (CONS V C) A))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) (CONS (CONS D Z1) X1))) A))), which further simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to the new conjecture: (IMPLIES (AND (NOT (EQUAL D 'PLUS)) (MEMBER (CONS D Z1) (PLUS-FRINGE (CONS 'PLUS C))) (LESSP (EVAL$ T (CONS D Z1) A) (PLUS (EVAL$ T (CAR C) A) (EVAL$ T (CADR C) A)))) (NOT (EQUAL (PLUS (EVAL$ T (CAR C) A) (EVAL$ T (CADR C) A)) (EVAL$ T (CONS D Z1) A)))), which finally simplifies, using linear arithmetic, to: T. Case 3.2. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (EQUAL (CAADDR X) 'PLUS)) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X))) (NOT (NUMBERP (EVAL$ T (CADDR X) A)))) (EQUAL (EVAL$ T X A) F)), which again simplifies, clearly, to: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (EQUAL (CAADDR X) 'PLUS)) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X))) (NOT (NUMBERP (EVAL$ T (CADDR X) A)))) (NOT (EVAL$ T X A))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), W by (CONS V C) to eliminate (CAR W) and (CDR W), D by (CONS W X1) to eliminate (CAR D) and (CDR D), and W by (CONS D Z1) to eliminate (CAR W) and (CDR W). We thus obtain the following four new goals: Case 3.2.4. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'EQUAL) (LISTP (CAR V)) (EQUAL (CAAR V) 'PLUS) (NOT (EQUAL (CAADR V) 'PLUS)) (MEMBER (CADR V) (PLUS-FRINGE (CAR V))) (NOT (NUMBERP (EVAL$ T (CADR V) A)))) (NOT (EVAL$ T (CONS Z V) A))). However this further simplifies, applying the lemma CAR-NLISTP, and opening up LISTP, to: T. Case 3.2.3. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'EQUAL) (EQUAL V 'PLUS) (NOT (EQUAL (CAAR D) 'PLUS)) (MEMBER (CAR D) (PLUS-FRINGE (CONS V C))) (NOT (NUMBERP (EVAL$ T (CAR D) A)))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) D)) A))), which further simplifies, applying the lemmas CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and opening up CAR and EQUAL, to: T. Case 3.2.2. (IMPLIES (AND (NOT (LISTP W)) (EQUAL Z 'EQUAL) (EQUAL V 'PLUS) (NOT (EQUAL (CAR W) 'PLUS)) (MEMBER W (PLUS-FRINGE (CONS V C))) (NOT (NUMBERP (EVAL$ T W A)))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) (CONS W X1))) A))), which further simplifies, rewriting with the lemmas CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and expanding the definition of EQUAL, to: T. Case 3.2.1. (IMPLIES (AND (EQUAL Z 'EQUAL) (EQUAL V 'PLUS) (NOT (EQUAL D 'PLUS)) (MEMBER (CONS D Z1) (PLUS-FRINGE (CONS V C))) (NOT (NUMBERP (EVAL$ T (CONS D Z1) A)))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) (CONS (CONS D Z1) X1))) A))), which further simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Case 3.1. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (EQUAL (CAADDR X) 'PLUS)) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X))) (NUMBERP (EVAL$ T (CADDR X) A)) (NOT (LESSP (EVAL$ T (CADDR X) A) (EVAL$ T (CADR X) A)))) (EQUAL (EVAL$ T X A) T)). However this again simplifies, using linear arithmetic and rewriting with MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, PLUS-TREE-PLUS-FRINGE, and MEMBER-IMPLIES-NUMBERP, to the following two new conjectures: Case 3.1.2. (IMPLIES (AND (NOT (NUMBERP (EVAL$ T (CADR X) A))) (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (EQUAL (CAADDR X) 'PLUS)) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X))) (NUMBERP (EVAL$ T (CADDR X) A)) (NOT (LESSP (EVAL$ T (CADDR X) A) (EVAL$ T (CADR X) A)))) (EQUAL (EVAL$ T X A) T)). However this again simplifies, rewriting with MEMBER-IMPLIES-NUMBERP, to: T. Case 3.1.1. (IMPLIES (AND (NUMBERP (EVAL$ T (CADR X) A)) (EQUAL (EVAL$ T (CADDR X) A) (EVAL$ T (CADR X) A)) (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (EQUAL (CAADDR X) 'PLUS)) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X))) (NOT (LESSP (EVAL$ T (CADR X) A) (EVAL$ T (CADR X) A)))) (EQUAL (EVAL$ T X A) T)). But this again simplifies, applying the lemmas NUMBERP-EVAL$-PLUS and MEMBER-IMPLIES-NUMBERP, to: (IMPLIES (AND (EQUAL (EVAL$ T (CADDR X) A) (EVAL$ T (CADR X) A)) (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (EQUAL (CAADDR X) 'PLUS)) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X))) (NOT (LESSP (EVAL$ T (CADR X) A) (EVAL$ T (CADR X) A)))) (EQUAL (EVAL$ T X A) T)). Appealing to the lemma CAR-CDR-ELIM, we now replace X by (CONS V Z) to eliminate (CDR X) and (CAR X), Z by (CONS D W) to eliminate (CDR Z) and (CAR Z), W by (CONS Z C) to eliminate (CAR W) and (CDR W), Z by (CONS W X1) to eliminate (CAR Z) and (CDR Z), D by (CONS Z Z1) to eliminate (CAR D) and (CDR D), D by (CONS W X1) to eliminate (CAR D) and (CDR D), and D by (CONS Z C) to eliminate (CAR D) and (CDR D). We must thus prove four new conjectures: Case 3.1.1.4. (IMPLIES (AND (NOT (LISTP Z)) (EQUAL (EVAL$ T (CADR Z) A) (EVAL$ T (CAR Z) A)) (EQUAL V 'EQUAL) (LISTP (CAR Z)) (EQUAL (CAAR Z) 'PLUS) (NOT (EQUAL (CAADR Z) 'PLUS)) (MEMBER (CADR Z) (PLUS-FRINGE (CAR Z))) (NOT (LESSP (EVAL$ T (CAR Z) A) (EVAL$ T (CAR Z) A)))) (EQUAL (EVAL$ T (CONS V Z) A) T)), which finally simplifies, applying the lemmas CDR-NLISTP and CAR-NLISTP, and expanding the definitions of CAR and LISTP, to: T. Case 3.1.1.3. (IMPLIES (AND (NOT (LISTP W)) (EQUAL (EVAL$ T (CAR W) A) (EVAL$ T (CONS Z C) A)) (EQUAL V 'EQUAL) (EQUAL Z 'PLUS) (NOT (EQUAL (CAAR W) 'PLUS)) (MEMBER (CAR W) (PLUS-FRINGE (CONS Z C))) (NOT (LESSP (EVAL$ T (CONS Z C) A) (EVAL$ T (CONS Z C) A)))) (EQUAL (EVAL$ T (CONS V (CONS (CONS Z C) W)) A) T)), which finally simplifies, rewriting with CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and opening up the definitions of CAR and EQUAL, to: T. Case 3.1.1.2. (IMPLIES (AND (NOT (LISTP Z)) (EQUAL (EVAL$ T Z A) (EVAL$ T (CONS W X1) A)) (EQUAL V 'EQUAL) (EQUAL W 'PLUS) (NOT (EQUAL (CAR Z) 'PLUS)) (MEMBER Z (PLUS-FRINGE (CONS W X1))) (NOT (LESSP (EVAL$ T (CONS W X1) A) (EVAL$ T (CONS W X1) A)))) (EQUAL (EVAL$ T (CONS V (CONS (CONS W X1) (CONS Z C))) A) T)). But this finally simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-NLISTP, CAR-CONS, and CDR-CONS, and opening up the definition of EQUAL, to: T. Case 3.1.1.1. (IMPLIES (AND (EQUAL (EVAL$ T (CONS W X1) A) (EVAL$ T (CONS Z Z1) A)) (EQUAL V 'EQUAL) (EQUAL Z 'PLUS) (NOT (EQUAL W 'PLUS)) (MEMBER (CONS W X1) (PLUS-FRINGE (CONS Z Z1))) (NOT (LESSP (EVAL$ T (CONS Z Z1) A) (EVAL$ T (CONS Z Z1) A)))) (EQUAL (EVAL$ T (CONS V (CONS (CONS Z Z1) (CONS (CONS W X1) C))) A) T)), which finally simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and unfolding EQUAL, to: T. Case 2. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (LISTP (CADDR X))) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X)))) (EQUAL (EVAL$ T X A) (EVAL$ T (LIST 'IF (LIST 'NUMBERP (CADDR X)) (CONS 'EQUAL (CONS (PLUS-TREE (DELETE (CADDR X) (PLUS-FRINGE (CADR X)))) '('0))) (LIST 'QUOTE F)) A))). However this again simplifies, applying REWRITE-EVAL$, CAR-CONS, CDR-CONS, MEMBER-IMPLIES-NUMBERP, PLUS-TREE-PLUS-FRINGE, PLUS-TREE-DELETE, EVAL$-QUOTE, and EQUAL-DIFFERENCE-0, and unfolding the definition of CAR, to the following three new conjectures: Case 2.3. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (LISTP (CADDR X))) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X))) (LESSP (EVAL$ T (CADDR X) A) (EVAL$ T (CADR X) A))) (EQUAL (EVAL$ T X A) F)). This again simplifies, trivially, to the new conjecture: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (LISTP (CADDR X))) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X))) (LESSP (EVAL$ T (CADDR X) A) (EVAL$ T (CADR X) A))) (NOT (EVAL$ T X A))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), W by (CONS V C) to eliminate (CAR W) and (CDR W), and D by (CONS W X1) to eliminate (CAR D) and (CDR D). We thus obtain the following three new formulas: Case 2.3.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'EQUAL) (LISTP (CAR V)) (EQUAL (CAAR V) 'PLUS) (NOT (LISTP (CADR V))) (MEMBER (CADR V) (PLUS-FRINGE (CAR V))) (LESSP (EVAL$ T (CADR V) A) (EVAL$ T (CAR V) A))) (NOT (EVAL$ T (CONS Z V) A))). However this further simplifies, applying CAR-NLISTP, and unfolding the definition of LISTP, to: T. Case 2.3.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'EQUAL) (EQUAL V 'PLUS) (NOT (LISTP (CAR D))) (MEMBER (CAR D) (PLUS-FRINGE (CONS V C))) (LESSP (EVAL$ T (CAR D) A) (EVAL$ T (CONS V C) A))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) D)) A))). This further simplifies, appealing to the lemmas CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and expanding LISTP, to: (IMPLIES (AND (NOT (LISTP D)) (MEMBER 0 (PLUS-FRINGE (CONS 'PLUS C))) (LESSP (EVAL$ T 0 A) (PLUS (EVAL$ T (CAR C) A) (EVAL$ T (CADR C) A)))) (NOT (EQUAL (PLUS (EVAL$ T (CAR C) A) (EVAL$ T (CADR C) A)) (EVAL$ T 0 A)))). But this finally simplifies, using linear arithmetic, to: T. Case 2.3.1. (IMPLIES (AND (EQUAL Z 'EQUAL) (EQUAL V 'PLUS) (NOT (LISTP W)) (MEMBER W (PLUS-FRINGE (CONS V C))) (LESSP (EVAL$ T W A) (EVAL$ T (CONS V C) A))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) (CONS W X1))) A))), which further simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: (IMPLIES (AND (NOT (LISTP W)) (MEMBER W (PLUS-FRINGE (CONS 'PLUS C))) (LESSP (EVAL$ T W A) (PLUS (EVAL$ T (CAR C) A) (EVAL$ T (CADR C) A)))) (NOT (EQUAL (PLUS (EVAL$ T (CAR C) A) (EVAL$ T (CADR C) A)) (EVAL$ T W A)))), which finally simplifies, using linear arithmetic, to: T. Case 2.2. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (LISTP (CADDR X))) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X))) (NOT (NUMBERP (EVAL$ T (CADDR X) A)))) (EQUAL (EVAL$ T X A) F)), which again simplifies, obviously, to the new formula: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (LISTP (CADDR X))) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X))) (NOT (NUMBERP (EVAL$ T (CADDR X) A)))) (NOT (EVAL$ T X A))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), W by (CONS V C) to eliminate (CAR W) and (CDR W), and D by (CONS W X1) to eliminate (CAR D) and (CDR D). This produces the following three new goals: Case 2.2.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'EQUAL) (LISTP (CAR V)) (EQUAL (CAAR V) 'PLUS) (NOT (LISTP (CADR V))) (MEMBER (CADR V) (PLUS-FRINGE (CAR V))) (NOT (NUMBERP (EVAL$ T (CADR V) A)))) (NOT (EVAL$ T (CONS Z V) A))). However this further simplifies, appealing to the lemma CAR-NLISTP, and unfolding LISTP, to: T. Case 2.2.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'EQUAL) (EQUAL V 'PLUS) (NOT (LISTP (CAR D))) (MEMBER (CAR D) (PLUS-FRINGE (CONS V C))) (NOT (NUMBERP (EVAL$ T (CAR D) A)))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) D)) A))), which further simplifies, rewriting with CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and unfolding the definition of LISTP, to: T. Case 2.2.1. (IMPLIES (AND (EQUAL Z 'EQUAL) (EQUAL V 'PLUS) (NOT (LISTP W)) (MEMBER W (PLUS-FRINGE (CONS V C))) (NOT (NUMBERP (EVAL$ T W A)))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) (CONS W X1))) A))). However this further simplifies, applying the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Case 2.1. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (LISTP (CADDR X))) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X))) (NUMBERP (EVAL$ T (CADDR X) A)) (NOT (LESSP (EVAL$ T (CADDR X) A) (EVAL$ T (CADR X) A)))) (EQUAL (EVAL$ T X A) T)), which again simplifies, using linear arithmetic and applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, PLUS-TREE-PLUS-FRINGE, and MEMBER-IMPLIES-NUMBERP, to the following two new goals: Case 2.1.2. (IMPLIES (AND (NOT (NUMBERP (EVAL$ T (CADR X) A))) (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (LISTP (CADDR X))) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X))) (NUMBERP (EVAL$ T (CADDR X) A)) (NOT (LESSP (EVAL$ T (CADDR X) A) (EVAL$ T (CADR X) A)))) (EQUAL (EVAL$ T X A) T)). But this again simplifies, applying MEMBER-IMPLIES-NUMBERP, to: T. Case 2.1.1. (IMPLIES (AND (NUMBERP (EVAL$ T (CADR X) A)) (EQUAL (EVAL$ T (CADDR X) A) (EVAL$ T (CADR X) A)) (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (LISTP (CADDR X))) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X))) (NOT (LESSP (EVAL$ T (CADR X) A) (EVAL$ T (CADR X) A)))) (EQUAL (EVAL$ T X A) T)). However this again simplifies, applying the lemmas NUMBERP-EVAL$-PLUS and MEMBER-IMPLIES-NUMBERP, to: (IMPLIES (AND (EQUAL (EVAL$ T (CADDR X) A) (EVAL$ T (CADR X) A)) (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (LISTP (CADDR X))) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X))) (NOT (LESSP (EVAL$ T (CADR X) A) (EVAL$ T (CADR X) A)))) (EQUAL (EVAL$ T X A) T)). Appealing to the lemma CAR-CDR-ELIM, we now replace X by (CONS V Z) to eliminate (CDR X) and (CAR X), Z by (CONS D W) to eliminate (CDR Z) and (CAR Z), W by (CONS Z C) to eliminate (CAR W) and (CDR W), D by (CONS W X1) to eliminate (CAR D) and (CDR D), and D by (CONS Z C) to eliminate (CAR D) and (CDR D). We must thus prove three new formulas: Case 2.1.1.3. (IMPLIES (AND (NOT (LISTP Z)) (EQUAL (EVAL$ T (CADR Z) A) (EVAL$ T (CAR Z) A)) (EQUAL V 'EQUAL) (LISTP (CAR Z)) (EQUAL (CAAR Z) 'PLUS) (NOT (LISTP (CADR Z))) (MEMBER (CADR Z) (PLUS-FRINGE (CAR Z))) (NOT (LESSP (EVAL$ T (CAR Z) A) (EVAL$ T (CAR Z) A)))) (EQUAL (EVAL$ T (CONS V Z) A) T)), which finally simplifies, rewriting with CDR-NLISTP and CAR-NLISTP, and unfolding the definitions of CAR and LISTP, to: T. Case 2.1.1.2. (IMPLIES (AND (NOT (LISTP W)) (EQUAL (EVAL$ T (CAR W) A) (EVAL$ T (CONS Z C) A)) (EQUAL V 'EQUAL) (EQUAL Z 'PLUS) (NOT (LISTP (CAR W))) (MEMBER (CAR W) (PLUS-FRINGE (CONS Z C))) (NOT (LESSP (EVAL$ T (CONS Z C) A) (EVAL$ T (CONS Z C) A)))) (EQUAL (EVAL$ T (CONS V (CONS (CONS Z C) W)) A) T)). This finally simplifies, applying CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and opening up the functions LISTP and EQUAL, to: T. Case 2.1.1.1. (IMPLIES (AND (EQUAL (EVAL$ T Z A) (EVAL$ T (CONS W X1) A)) (EQUAL V 'EQUAL) (EQUAL W 'PLUS) (NOT (LISTP Z)) (MEMBER Z (PLUS-FRINGE (CONS W X1))) (NOT (LESSP (EVAL$ T (CONS W X1) A) (EVAL$ T (CONS W X1) A)))) (EQUAL (EVAL$ T (CONS V (CONS (CONS W X1) (CONS Z C))) A) T)). However this finally simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and unfolding EQUAL, to: T. Case 1. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS)) (EQUAL (EVAL$ T X A) (EVAL$ T (LIST 'EQUAL (PLUS-TREE (BAGDIFF (PLUS-FRINGE (CADR X)) (BAGINT (PLUS-FRINGE (CADR X)) (PLUS-FRINGE (CADDR X))))) (PLUS-TREE (BAGDIFF (PLUS-FRINGE (CADDR X)) (BAGINT (PLUS-FRINGE (CADR X)) (PLUS-FRINGE (CADDR X)))))) A))). This again simplifies, applying REWRITE-EVAL$, CAR-CONS, SUBBAGP-BAGINT1, NUMBERP-EVAL$-PLUS, PLUS-TREE-PLUS-FRINGE, PLUS-TREE-BAGDIFF, CDR-CONS, SUBBAGP-BAGINT2, BRIDGE-TO-SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP, and DIFFERENCE-CANCELLATION, to the following two new goals: Case 1.2. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (NOT (EQUAL (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)))) (NOT (EVAL$ T X A))). Appealing to the lemma CAR-CDR-ELIM, we now replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), W by (CONS V C) to eliminate (CAR W) and (CDR W), D by (CONS W X1) to eliminate (CAR D) and (CDR D), and W by (CONS D Z1) to eliminate (CAR W) and (CDR W). The result is three new formulas: Case 1.2.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'EQUAL) (LISTP (CAR V)) (EQUAL (CAAR V) 'PLUS) (LISTP (CADR V)) (EQUAL (CAADR V) 'PLUS) (NOT (EQUAL (EVAL$ T (CAR V) A) (EVAL$ T (CADR V) A)))) (NOT (EVAL$ T (CONS Z V) A))), which further simplifies, applying CAR-NLISTP, and expanding LISTP, to: T. Case 1.2.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'EQUAL) (EQUAL V 'PLUS) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (NOT (EQUAL (EVAL$ T (CONS V C) A) (EVAL$ T (CAR D) A)))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) D)) A))). This further simplifies, rewriting with CAR-NLISTP, and expanding the function LISTP, to: T. Case 1.2.1. (IMPLIES (AND (EQUAL Z 'EQUAL) (EQUAL V 'PLUS) (EQUAL D 'PLUS) (NOT (EQUAL (EVAL$ T (CONS V C) A) (EVAL$ T (CONS D Z1) A)))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) (CONS (CONS D Z1) X1))) A))). But this further simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Case 1.1. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'EQUAL) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (EQUAL (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A))) (EQUAL (EVAL$ T X A) T)). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), W by (CONS V C) to eliminate (CAR W) and (CDR W), D by (CONS W X1) to eliminate (CAR D) and (CDR D), and W by (CONS D Z1) to eliminate (CAR W) and (CDR W). We would thus like to prove the following three new formulas: Case 1.1.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'EQUAL) (LISTP (CAR V)) (EQUAL (CAAR V) 'PLUS) (LISTP (CADR V)) (EQUAL (CAADR V) 'PLUS) (EQUAL (EVAL$ T (CAR V) A) (EVAL$ T (CADR V) A))) (EQUAL (EVAL$ T (CONS Z V) A) T)). This further simplifies, applying CAR-NLISTP, and unfolding the definition of LISTP, to: T. Case 1.1.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'EQUAL) (EQUAL V 'PLUS) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (EQUAL (EVAL$ T (CONS V C) A) (EVAL$ T (CAR D) A))) (EQUAL (EVAL$ T (CONS Z (CONS (CONS V C) D)) A) T)). This further simplifies, applying CAR-NLISTP, and unfolding the definition of LISTP, to: T. Case 1.1.1. (IMPLIES (AND (EQUAL Z 'EQUAL) (EQUAL V 'PLUS) (EQUAL D 'PLUS) (EQUAL (EVAL$ T (CONS V C) A) (EVAL$ T (CONS D Z1) A))) (EQUAL (EVAL$ T (CONS Z (CONS (CONS V C) (CONS (CONS D Z1) X1))) A) T)). But this further simplifies, applying the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and opening up the definition of EQUAL, to: T. Q.E.D. [ 0.0 0.5 0.4 ] CORRECTNESS-OF-CANCEL-EQUAL-PLUS (DEFN CANCEL-DIFFERENCE-PLUS (X) (IF (AND (LISTP X) (EQUAL (CAR X) 'DIFFERENCE)) (IF (AND (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS)) (LIST 'DIFFERENCE (PLUS-TREE (BAGDIFF (PLUS-FRINGE (CADR X)) (BAGINT (PLUS-FRINGE (CADR X)) (PLUS-FRINGE (CADDR X))))) (PLUS-TREE (BAGDIFF (PLUS-FRINGE (CADDR X)) (BAGINT (PLUS-FRINGE (CADR X)) (PLUS-FRINGE (CADDR X)))))) (IF (AND (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X)))) (PLUS-TREE (DELETE (CADDR X) (PLUS-FRINGE (CADR X)))) (IF (AND (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X)))) ''0 X))) X)) Observe that: (OR (LISTP (CANCEL-DIFFERENCE-PLUS X)) (EQUAL (CANCEL-DIFFERENCE-PLUS X) X)) is a theorem. [ 0.0 0.0 0.0 ] CANCEL-DIFFERENCE-PLUS (PROVE-LEMMA CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS ((META DIFFERENCE)) (EQUAL (EVAL$ T X A) (EVAL$ T (CANCEL-DIFFERENCE-PLUS X) A)) ((ENABLE CANCEL-DIFFERENCE-PLUS ASSOCIATIVITY-OF-PLUS BRIDGE-TO-SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP COMMUTATIVITY-OF-PLUS DIFF-DIFF-DIFF DIFFERENCE-LESSP-ARG1 DIFFERENCE-PLUS-PLUS-CANCELLATION-HACK EQUAL-DIFFERENCE-0 EVAL$-QUOTE MEMBER-IMPLIES-PLUS-TREE-GREATEREQP NUMBERP-EVAL$-PLUS PLUS-TREE-BAGDIFF PLUS-TREE-DELETE PLUS-TREE-PLUS-FRINGE SUBBAGP-BAGINT1 SUBBAGP-BAGINT2) (DISABLE EVAL$))) This formula simplifies, opening up the function CANCEL-DIFFERENCE-PLUS, to the following five new goals: Case 5. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'DIFFERENCE) (NOT (EQUAL (CAADR X) 'PLUS)) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X)))) (EQUAL (EVAL$ T X A) (EVAL$ T ''0 A))). However this again simplifies, rewriting with EVAL$-QUOTE, and opening up CAR, to: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'DIFFERENCE) (NOT (EQUAL (CAADR X) 'PLUS)) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X)))) (EQUAL (EVAL$ T X A) 0)). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), W by (CONS V C) to eliminate (CAR W) and (CDR W), D by (CONS W X1) to eliminate (CAR D) and (CDR D), W by (CONS D Z1) to eliminate (CAR W) and (CDR W), D by (CONS V C) to eliminate (CAR D) and (CDR D), and V by (CONS D X1) to eliminate (CAR V) and (CDR V). We would thus like to prove the following five new conjectures: Case 5.5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'DIFFERENCE) (NOT (EQUAL (CAAR V) 'PLUS)) (LISTP (CADR V)) (EQUAL (CAADR V) 'PLUS) (MEMBER (CAR V) (PLUS-FRINGE (CADR V)))) (EQUAL (EVAL$ T (CONS Z V) A) 0)). This further simplifies, rewriting with CAR-NLISTP and CDR-NLISTP, and opening up the definitions of CAR, EQUAL, and LISTP, to: T. Case 5.4. (IMPLIES (AND (NOT (LISTP D)) (NOT (LISTP W)) (EQUAL Z 'DIFFERENCE) (NOT (EQUAL (CAR W) 'PLUS)) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (MEMBER W (PLUS-FRINGE (CAR D)))) (EQUAL (EVAL$ T (CONS Z (CONS W D)) A) 0)). But this further simplifies, applying CAR-NLISTP, and opening up EQUAL and LISTP, to: T. Case 5.3. (IMPLIES (AND (NOT (LISTP W)) (EQUAL Z 'DIFFERENCE) (NOT (EQUAL (CAR W) 'PLUS)) (EQUAL D 'PLUS) (MEMBER W (PLUS-FRINGE (CONS D X1)))) (EQUAL (EVAL$ T (CONS Z (CONS W (CONS (CONS D X1) C))) A) 0)). But this further simplifies, rewriting with the lemmas CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, CDR-CONS, and EQUAL-DIFFERENCE-0, and opening up the function EQUAL, to the goal: (IMPLIES (AND (NOT (LISTP W)) (MEMBER W (PLUS-FRINGE (CONS 'PLUS X1)))) (NOT (LESSP (PLUS (EVAL$ T (CAR X1) A) (EVAL$ T (CADR X1) A)) (EVAL$ T W A)))). But this again simplifies, using linear arithmetic and applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, PLUS-TREE-PLUS-FRINGE, and REWRITE-EVAL$, to: T. Case 5.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'DIFFERENCE) (NOT (EQUAL V 'PLUS)) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (MEMBER (CONS V C) (PLUS-FRINGE (CAR D)))) (EQUAL (EVAL$ T (CONS Z (CONS (CONS V C) D)) A) 0)). But this further simplifies, applying the lemma CAR-NLISTP, and unfolding the definition of LISTP, to: T. Case 5.1. (IMPLIES (AND (EQUAL Z 'DIFFERENCE) (NOT (EQUAL V 'PLUS)) (EQUAL D 'PLUS) (MEMBER (CONS V C) (PLUS-FRINGE (CONS D Z1)))) (EQUAL (EVAL$ T (CONS Z (CONS (CONS V C) (CONS (CONS D Z1) X1))) A) 0)), which further simplifies, applying REWRITE-EVAL$, CAR-CONS, CDR-CONS, and EQUAL-DIFFERENCE-0, to the new formula: (IMPLIES (AND (NOT (EQUAL V 'PLUS)) (MEMBER (CONS V C) (PLUS-FRINGE (CONS 'PLUS Z1)))) (NOT (LESSP (PLUS (EVAL$ T (CAR Z1) A) (EVAL$ T (CADR Z1) A)) (EVAL$ T (CONS V C) A)))), which again simplifies, using linear arithmetic and applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, PLUS-TREE-PLUS-FRINGE, and REWRITE-EVAL$, to: T. Case 4. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'DIFFERENCE) (NOT (LISTP (CADR X))) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X)))) (EQUAL (EVAL$ T X A) (EVAL$ T ''0 A))). However this again simplifies, applying the lemma EVAL$-QUOTE, and opening up the definition of CAR, to: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'DIFFERENCE) (NOT (LISTP (CADR X))) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X)))) (EQUAL (EVAL$ T X A) 0)). Appealing to the lemma CAR-CDR-ELIM, we now replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), D by (CONS V C) to eliminate (CAR D) and (CDR D), and V by (CONS D X1) to eliminate (CAR V) and (CDR V). The result is three new goals: Case 4.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'DIFFERENCE) (NOT (LISTP (CAR V))) (LISTP (CADR V)) (EQUAL (CAADR V) 'PLUS) (MEMBER (CAR V) (PLUS-FRINGE (CADR V)))) (EQUAL (EVAL$ T (CONS Z V) A) 0)), which further simplifies, rewriting with CAR-NLISTP and CDR-NLISTP, and unfolding the definitions of LISTP and CAR, to: T. Case 4.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'DIFFERENCE) (NOT (LISTP W)) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (MEMBER W (PLUS-FRINGE (CAR D)))) (EQUAL (EVAL$ T (CONS Z (CONS W D)) A) 0)). This further simplifies, applying CAR-NLISTP, and unfolding LISTP, to: T. Case 4.1. (IMPLIES (AND (EQUAL Z 'DIFFERENCE) (NOT (LISTP W)) (EQUAL D 'PLUS) (MEMBER W (PLUS-FRINGE (CONS D X1)))) (EQUAL (EVAL$ T (CONS Z (CONS W (CONS (CONS D X1) C))) A) 0)). However this further simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, CDR-CONS, and EQUAL-DIFFERENCE-0, to: (IMPLIES (AND (NOT (LISTP W)) (MEMBER W (PLUS-FRINGE (CONS 'PLUS X1)))) (NOT (LESSP (PLUS (EVAL$ T (CAR X1) A) (EVAL$ T (CADR X1) A)) (EVAL$ T W A)))). This again simplifies, using linear arithmetic and applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, PLUS-TREE-PLUS-FRINGE, and REWRITE-EVAL$, to: T. Case 3. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'DIFFERENCE) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (EQUAL (CAADDR X) 'PLUS)) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X)))) (EQUAL (EVAL$ T X A) (EVAL$ T (PLUS-TREE (DELETE (CADDR X) (PLUS-FRINGE (CADR X)))) A))). But this again simplifies, rewriting with NUMBERP-EVAL$-PLUS, PLUS-TREE-PLUS-FRINGE, and PLUS-TREE-DELETE, to: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'DIFFERENCE) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (EQUAL (CAADDR X) 'PLUS)) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X)))) (EQUAL (EVAL$ T X A) (DIFFERENCE (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), W by (CONS V C) to eliminate (CAR W) and (CDR W), D by (CONS W X1) to eliminate (CAR D) and (CDR D), and W by (CONS D Z1) to eliminate (CAR W) and (CDR W). We thus obtain the following four new formulas: Case 3.4. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'DIFFERENCE) (LISTP (CAR V)) (EQUAL (CAAR V) 'PLUS) (NOT (EQUAL (CAADR V) 'PLUS)) (MEMBER (CADR V) (PLUS-FRINGE (CAR V)))) (EQUAL (EVAL$ T (CONS Z V) A) (DIFFERENCE (EVAL$ T (CAR V) A) (EVAL$ T (CADR V) A)))). But this further simplifies, applying CAR-NLISTP, and unfolding LISTP, to: T. Case 3.3. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'DIFFERENCE) (EQUAL V 'PLUS) (NOT (EQUAL (CAAR D) 'PLUS)) (MEMBER (CAR D) (PLUS-FRINGE (CONS V C)))) (EQUAL (EVAL$ T (CONS Z (CONS (CONS V C) D)) A) (DIFFERENCE (EVAL$ T (CONS V C) A) (EVAL$ T (CAR D) A)))). But this further simplifies, rewriting with CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and opening up CAR and EQUAL, to: T. Case 3.2. (IMPLIES (AND (NOT (LISTP W)) (EQUAL Z 'DIFFERENCE) (EQUAL V 'PLUS) (NOT (EQUAL (CAR W) 'PLUS)) (MEMBER W (PLUS-FRINGE (CONS V C)))) (EQUAL (EVAL$ T (CONS Z (CONS (CONS V C) (CONS W X1))) A) (DIFFERENCE (EVAL$ T (CONS V C) A) (EVAL$ T W A)))). This further simplifies, rewriting with the lemmas CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and opening up EQUAL, to: T. Case 3.1. (IMPLIES (AND (EQUAL Z 'DIFFERENCE) (EQUAL V 'PLUS) (NOT (EQUAL D 'PLUS)) (MEMBER (CONS D Z1) (PLUS-FRINGE (CONS V C)))) (EQUAL (EVAL$ T (CONS Z (CONS (CONS V C) (CONS (CONS D Z1) X1))) A) (DIFFERENCE (EVAL$ T (CONS V C) A) (EVAL$ T (CONS D Z1) A)))), which further simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Case 2. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'DIFFERENCE) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (LISTP (CADDR X))) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X)))) (EQUAL (EVAL$ T X A) (EVAL$ T (PLUS-TREE (DELETE (CADDR X) (PLUS-FRINGE (CADR X)))) A))), which again simplifies, rewriting with NUMBERP-EVAL$-PLUS, PLUS-TREE-PLUS-FRINGE, and PLUS-TREE-DELETE, to the new formula: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'DIFFERENCE) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (LISTP (CADDR X))) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X)))) (EQUAL (EVAL$ T X A) (DIFFERENCE (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), W by (CONS V C) to eliminate (CAR W) and (CDR W), and D by (CONS W X1) to eliminate (CAR D) and (CDR D). We would thus like to prove the following three new conjectures: Case 2.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'DIFFERENCE) (LISTP (CAR V)) (EQUAL (CAAR V) 'PLUS) (NOT (LISTP (CADR V))) (MEMBER (CADR V) (PLUS-FRINGE (CAR V)))) (EQUAL (EVAL$ T (CONS Z V) A) (DIFFERENCE (EVAL$ T (CAR V) A) (EVAL$ T (CADR V) A)))). However this further simplifies, applying the lemma CAR-NLISTP, and unfolding LISTP, to: T. Case 2.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'DIFFERENCE) (EQUAL V 'PLUS) (NOT (LISTP (CAR D))) (MEMBER (CAR D) (PLUS-FRINGE (CONS V C)))) (EQUAL (EVAL$ T (CONS Z (CONS (CONS V C) D)) A) (DIFFERENCE (EVAL$ T (CONS V C) A) (EVAL$ T (CAR D) A)))), which further simplifies, applying CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and expanding the function LISTP, to: T. Case 2.1. (IMPLIES (AND (EQUAL Z 'DIFFERENCE) (EQUAL V 'PLUS) (NOT (LISTP W)) (MEMBER W (PLUS-FRINGE (CONS V C)))) (EQUAL (EVAL$ T (CONS Z (CONS (CONS V C) (CONS W X1))) A) (DIFFERENCE (EVAL$ T (CONS V C) A) (EVAL$ T W A)))). However this further simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Case 1. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'DIFFERENCE) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS)) (EQUAL (EVAL$ T X A) (EVAL$ T (LIST 'DIFFERENCE (PLUS-TREE (BAGDIFF (PLUS-FRINGE (CADR X)) (BAGINT (PLUS-FRINGE (CADR X)) (PLUS-FRINGE (CADDR X))))) (PLUS-TREE (BAGDIFF (PLUS-FRINGE (CADDR X)) (BAGINT (PLUS-FRINGE (CADR X)) (PLUS-FRINGE (CADDR X)))))) A))). This again simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, SUBBAGP-BAGINT1, NUMBERP-EVAL$-PLUS, PLUS-TREE-PLUS-FRINGE, PLUS-TREE-BAGDIFF, CDR-CONS, SUBBAGP-BAGINT2, BRIDGE-TO-SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP, COMMUTATIVITY-OF-PLUS, and DIFF-DIFF-DIFF, to: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'DIFFERENCE) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS)) (EQUAL (EVAL$ T X A) (DIFFERENCE (PLUS (EVAL$ T (CADR X) A) (EVAL$ T (PLUS-TREE (BAGINT (PLUS-FRINGE (CADR X)) (PLUS-FRINGE (CADDR X)))) A)) (PLUS (EVAL$ T (CADDR X) A) (EVAL$ T (PLUS-TREE (BAGINT (PLUS-FRINGE (CADR X)) (PLUS-FRINGE (CADDR X)))) A))))). Appealing to the lemma CAR-CDR-ELIM, we now replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), W by (CONS V C) to eliminate (CAR W) and (CDR W), D by (CONS W X1) to eliminate (CAR D) and (CDR D), and W by (CONS D Z1) to eliminate (CAR W) and (CDR W). We must thus prove three new conjectures: Case 1.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'DIFFERENCE) (LISTP (CAR V)) (EQUAL (CAAR V) 'PLUS) (LISTP (CADR V)) (EQUAL (CAADR V) 'PLUS)) (EQUAL (EVAL$ T (CONS Z V) A) (DIFFERENCE (PLUS (EVAL$ T (CAR V) A) (EVAL$ T (PLUS-TREE (BAGINT (PLUS-FRINGE (CAR V)) (PLUS-FRINGE (CADR V)))) A)) (PLUS (EVAL$ T (CADR V) A) (EVAL$ T (PLUS-TREE (BAGINT (PLUS-FRINGE (CAR V)) (PLUS-FRINGE (CADR V)))) A))))), which further simplifies, rewriting with CAR-NLISTP, and expanding the definition of LISTP, to: T. Case 1.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'DIFFERENCE) (EQUAL V 'PLUS) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS)) (EQUAL (EVAL$ T (CONS Z (CONS (CONS V C) D)) A) (DIFFERENCE (PLUS (EVAL$ T (CONS V C) A) (EVAL$ T (PLUS-TREE (BAGINT (PLUS-FRINGE (CONS V C)) (PLUS-FRINGE (CAR D)))) A)) (PLUS (EVAL$ T (CAR D) A) (EVAL$ T (PLUS-TREE (BAGINT (PLUS-FRINGE (CONS V C)) (PLUS-FRINGE (CAR D)))) A))))). This further simplifies, applying CAR-NLISTP, and opening up the definition of LISTP, to: T. Case 1.1. (IMPLIES (AND (EQUAL Z 'DIFFERENCE) (EQUAL V 'PLUS) (EQUAL D 'PLUS)) (EQUAL (EVAL$ T (CONS Z (CONS (CONS V C) (CONS (CONS D Z1) X1))) A) (DIFFERENCE (PLUS (EVAL$ T (CONS V C) A) (EVAL$ T (PLUS-TREE (BAGINT (PLUS-FRINGE (CONS V C)) (PLUS-FRINGE (CONS D Z1)))) A)) (PLUS (EVAL$ T (CONS D Z1) A) (EVAL$ T (PLUS-TREE (BAGINT (PLUS-FRINGE (CONS V C)) (PLUS-FRINGE (CONS D Z1)))) A))))). This further simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, CDR-CONS, ASSOCIATIVITY-OF-PLUS, and DIFFERENCE-PLUS-PLUS-CANCELLATION-HACK, to: T. Q.E.D. [ 0.0 0.5 0.1 ] CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS (PROVE-LEMMA DIFFERENCE-ELIM (ELIM) (IMPLIES (AND (NUMBERP Y) (NOT (LESSP Y X))) (EQUAL (PLUS X (DIFFERENCE Y X)) Y))) This conjecture simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-ELIM (PROVE-LEMMA DIFFERENCE-LEQ-ARG1 (REWRITE) (IMPLIES (LEQ A B) (EQUAL (DIFFERENCE A B) 0))) This conjecture can be simplified, using the abbreviations EQUAL-DIFFERENCE-0 and IMPLIES, to: T. This simplifies, trivially, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-LEQ-ARG1 (PROVE-LEMMA DIFFERENCE-ADD1-ARG2 (REWRITE) (EQUAL (DIFFERENCE A (ADD1 B)) (IF (LESSP B A) (SUB1 (DIFFERENCE A B)) 0)) ((ENABLE DIFFERENCE-LEQ-ARG1) (INDUCT (DIFFERENCE A B)))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to three new formulas: Case 3. (IMPLIES (ZEROP A) (EQUAL (DIFFERENCE A (ADD1 B)) (IF (LESSP B A) (SUB1 (DIFFERENCE A B)) 0))), which simplifies, using linear arithmetic, applying DIFFERENCE-LEQ-ARG1, and opening up the definitions of ZEROP, EQUAL, and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (ZEROP B)) (EQUAL (DIFFERENCE A (ADD1 B)) (IF (LESSP B A) (SUB1 (DIFFERENCE A B)) 0))). This simplifies, applying SUB1-TYPE-RESTRICTION, and unfolding the definitions of ZEROP, ADD1, EQUAL, LESSP, and DIFFERENCE, to two new formulas: Case 2.2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL B 0)) (EQUAL (DIFFERENCE A 1) (SUB1 A))), which again simplifies, using linear arithmetic, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP B))) (EQUAL (DIFFERENCE A 1) (SUB1 A))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (DIFFERENCE (SUB1 A) (ADD1 (SUB1 B))) (IF (LESSP (SUB1 B) (SUB1 A)) (SUB1 (DIFFERENCE (SUB1 A) (SUB1 B))) 0))) (EQUAL (DIFFERENCE A (ADD1 B)) (IF (LESSP B A) (SUB1 (DIFFERENCE A B)) 0))), which simplifies, applying ADD1-SUB1 and SUB1-ADD1, and unfolding DIFFERENCE, LESSP, and EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-ADD1-ARG2 (PROVE-LEMMA DIFFERENCE-SUB1-ARG2 (REWRITE) (EQUAL (DIFFERENCE A (SUB1 B)) (IF (ZEROP B) (FIX A) (IF (LESSP A B) 0 (ADD1 (DIFFERENCE A B))))) ((ENABLE DIFF-SUB1-ARG2))) This conjecture simplifies, rewriting with the lemma DIFF-SUB1-ARG2, and unfolding the functions ZEROP and FIX, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-SUB1-ARG2 (PROVE-LEMMA DIFFERENCE-DIFFERENCE-ARG1 (REWRITE) (EQUAL (DIFFERENCE (DIFFERENCE X Y) Z) (DIFFERENCE X (PLUS Y Z))) ((ENABLE DIFF-DIFF-ARG1))) WARNING: the previously added lemma, DIFF-DIFF-ARG1, could be applied whenever the newly proposed DIFFERENCE-DIFFERENCE-ARG1 could! This formula can be simplified, using the abbreviation DIFF-DIFF-ARG1, to: (EQUAL (DIFFERENCE X (PLUS Y Z)) (DIFFERENCE X (PLUS Y Z))), which simplifies, trivially, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-DIFFERENCE-ARG1 (PROVE-LEMMA DIFFERENCE-DIFFERENCE-ARG2 (REWRITE) (EQUAL (DIFFERENCE A (DIFFERENCE B C)) (IF (LESSP B C) (FIX A) (DIFFERENCE (PLUS A C) B))) ((ENABLE DIFF-DIFF-ARG2))) WARNING: the previously added lemma, DIFF-DIFF-ARG2, could be applied whenever the newly proposed DIFFERENCE-DIFFERENCE-ARG2 could! This simplifies, appealing to the lemma DIFF-DIFF-ARG2, and opening up the function FIX, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-DIFFERENCE-ARG2 (PROVE-LEMMA DIFFERENCE-X-X (REWRITE) (EQUAL (DIFFERENCE X X) 0)) This conjecture can be simplified, using the abbreviations NOT and EQUAL-DIFFERENCE-0, to: (NOT (LESSP X X)). This simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-X-X (PROVE-LEMMA LESSP-DIFFERENCE-CANCELLATION (REWRITE) (EQUAL (LESSP (DIFFERENCE A C) (DIFFERENCE B C)) (IF (LEQ C A) (LESSP A B) (LESSP C B))) ((ENABLE EQUAL-DIFFERENCE-0))) This conjecture simplifies, clearly, to two new conjectures: Case 2. (IMPLIES (NOT (LESSP A C)) (EQUAL (LESSP (DIFFERENCE A C) (DIFFERENCE B C)) (LESSP A B))). Applying the lemma DIFFERENCE-ELIM, replace A by (PLUS C X) to eliminate (DIFFERENCE A C). We rely upon the type restriction lemma noted when DIFFERENCE was introduced to restrict the new variable. This produces the following two new conjectures: Case 2.2. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (LESSP A C))) (EQUAL (LESSP (DIFFERENCE A C) (DIFFERENCE B C)) (LESSP A B))). But this further simplifies, using linear arithmetic, applying DIFFERENCE-LEQ-ARG1, and expanding the functions LESSP, EQUAL, and DIFFERENCE, to the following four new conjectures: Case 2.2.4. (IMPLIES (AND (NOT (NUMBERP A)) (EQUAL C 0) (NOT (EQUAL B 0)) (NOT (NUMBERP B))) (EQUAL F (NUMBERP B))). This again simplifies, clearly, to: T. Case 2.2.3. (IMPLIES (AND (NOT (NUMBERP A)) (EQUAL C 0) (NOT (EQUAL B 0)) (NUMBERP B)) (EQUAL T (NUMBERP B))). This again simplifies, trivially, to: T. Case 2.2.2. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (NUMBERP C)) (NOT (EQUAL B 0)) (NOT (NUMBERP B))) (EQUAL F (NUMBERP B))). This again simplifies, clearly, to: T. Case 2.2.1. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (NUMBERP C)) (NOT (EQUAL B 0)) (NUMBERP B)) (EQUAL T (NUMBERP B))). This again simplifies, clearly, to: T. Case 2.1. (IMPLIES (AND (NUMBERP X) (NOT (LESSP (PLUS C X) C))) (EQUAL (LESSP X (DIFFERENCE B C)) (LESSP (PLUS C X) B))). Appealing to the lemma DIFFERENCE-ELIM, we now replace B by (PLUS C Z) to eliminate (DIFFERENCE B C). We use the type restriction lemma noted when DIFFERENCE was introduced to constrain the new variable. We must thus prove three new conjectures: Case 2.1.3. (IMPLIES (AND (LESSP B C) (NUMBERP X) (NOT (LESSP (PLUS C X) C))) (EQUAL (LESSP X (DIFFERENCE B C)) (LESSP (PLUS C X) B))), which further simplifies, using linear arithmetic, rewriting with DIFFERENCE-LEQ-ARG1, and unfolding EQUAL and LESSP, to: (IMPLIES (AND (LESSP B C) (NUMBERP X) (NOT (LESSP (PLUS C X) C))) (NOT (LESSP (PLUS C X) B))), which again simplifies, using linear arithmetic, to: T. Case 2.1.2. (IMPLIES (AND (NOT (NUMBERP B)) (NUMBERP X) (NOT (LESSP (PLUS C X) C))) (EQUAL (LESSP X (DIFFERENCE B C)) (LESSP (PLUS C X) B))), which further simplifies, using linear arithmetic, rewriting with DIFFERENCE-LEQ-ARG1, and expanding EQUAL and LESSP, to: T. Case 2.1.1. (IMPLIES (AND (NUMBERP Z) (NOT (LESSP (PLUS C Z) C)) (NUMBERP X) (NOT (LESSP (PLUS C X) C))) (EQUAL (LESSP X Z) (LESSP (PLUS C X) (PLUS C Z)))), which we would usually push and work on later by induction. But if we must use induction to prove the input conjecture, we prefer to induct on the original formulation of the problem. Thus we will disregard all that we have previously done, give the name *1 to the original input, and work on it. So now let us consider: (EQUAL (LESSP (DIFFERENCE A C) (DIFFERENCE B C)) (IF (IF (LESSP A C) F T) (LESSP A B) (LESSP C B))). We gave this the name *1 above. Perhaps we can prove it by induction. The recursive terms in the conjecture suggest ten inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP A) (p A C B)) (IMPLIES (AND (NOT (ZEROP A)) (ZEROP C)) (p A C B)) (IMPLIES (AND (NOT (ZEROP A)) (NOT (ZEROP C)) (p (SUB1 A) (SUB1 C) (SUB1 B))) (p A C B))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP can be used to prove that the measure (COUNT A) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instances chosen for B and C. The above induction scheme leads to three new goals: Case 3. (IMPLIES (ZEROP A) (EQUAL (LESSP (DIFFERENCE A C) (DIFFERENCE B C)) (IF (IF (LESSP A C) F T) (LESSP A B) (LESSP C B)))), which simplifies, using linear arithmetic, applying DIFFERENCE-LEQ-ARG1, and opening up the functions ZEROP, DIFFERENCE, EQUAL, and LESSP, to the following 12 new goals: Case 3.12. (IMPLIES (AND (EQUAL A 0) (NOT (NUMBERP C)) (NOT (EQUAL B 0)) (NOT (NUMBERP B))) (EQUAL F (NUMBERP B))). This again simplifies, obviously, to: T. Case 3.11. (IMPLIES (AND (EQUAL A 0) (EQUAL C 0) (NOT (EQUAL B 0)) (NOT (NUMBERP B))) (EQUAL F (NUMBERP B))). This again simplifies, obviously, to: T. Case 3.10. (IMPLIES (AND (EQUAL A 0) (NOT (NUMBERP C)) (NOT (EQUAL B 0)) (NUMBERP B)) (EQUAL T (NUMBERP B))). This again simplifies, obviously, to: T. Case 3.9. (IMPLIES (AND (EQUAL A 0) (EQUAL C 0) (NOT (EQUAL B 0)) (NUMBERP B)) (EQUAL T (NUMBERP B))). This again simplifies, obviously, to: T. Case 3.8. (IMPLIES (AND (EQUAL A 0) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL (DIFFERENCE (SUB1 B) (SUB1 C)) 0))) (EQUAL T (LESSP (SUB1 C) (SUB1 B)))). But this again simplifies, rewriting with EQUAL-DIFFERENCE-0, to: T. Case 3.7. (IMPLIES (AND (EQUAL A 0) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (DIFFERENCE (SUB1 B) (SUB1 C)) 0)) (EQUAL F (LESSP (SUB1 C) (SUB1 B)))). However this again simplifies, rewriting with EQUAL-DIFFERENCE-0, to: T. Case 3.6. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (NUMBERP C)) (NOT (EQUAL B 0)) (NOT (NUMBERP B))) (EQUAL F (NUMBERP B))). This again simplifies, trivially, to: T. Case 3.5. (IMPLIES (AND (NOT (NUMBERP A)) (EQUAL C 0) (NOT (EQUAL B 0)) (NOT (NUMBERP B))) (EQUAL F (NUMBERP B))). This again simplifies, obviously, to: T. Case 3.4. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (NUMBERP C)) (NOT (EQUAL B 0)) (NUMBERP B)) (EQUAL T (NUMBERP B))). This again simplifies, clearly, to: T. Case 3.3. (IMPLIES (AND (NOT (NUMBERP A)) (EQUAL C 0) (NOT (EQUAL B 0)) (NUMBERP B)) (EQUAL T (NUMBERP B))). This again simplifies, obviously, to: T. Case 3.2. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL (DIFFERENCE (SUB1 B) (SUB1 C)) 0))) (EQUAL T (LESSP (SUB1 C) (SUB1 B)))). But this again simplifies, rewriting with EQUAL-DIFFERENCE-0, to: T. Case 3.1. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (DIFFERENCE (SUB1 B) (SUB1 C)) 0)) (EQUAL F (LESSP (SUB1 C) (SUB1 B)))). This again simplifies, rewriting with EQUAL-DIFFERENCE-0, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP A)) (ZEROP C)) (EQUAL (LESSP (DIFFERENCE A C) (DIFFERENCE B C)) (IF (IF (LESSP A C) F T) (LESSP A B) (LESSP C B)))). This simplifies, expanding the functions ZEROP, EQUAL, DIFFERENCE, and LESSP, to the following six new conjectures: Case 2.6. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL C 0) (NOT (EQUAL B 0)) (NUMBERP B)) (EQUAL (LESSP A B) (LESSP (SUB1 A) (SUB1 B)))). But this again simplifies, unfolding LESSP, to: T. Case 2.5. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL C 0) (EQUAL B 0)) (EQUAL (LESSP A 0) F)), which again simplifies, unfolding the definitions of EQUAL and LESSP, to: T. Case 2.4. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL C 0) (NOT (NUMBERP B))) (EQUAL (LESSP A 0) F)), which again simplifies, opening up the functions EQUAL and LESSP, to: T. Case 2.3. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP C)) (NOT (EQUAL B 0)) (NUMBERP B)) (EQUAL (LESSP A B) (LESSP (SUB1 A) (SUB1 B)))), which again simplifies, opening up the definition of LESSP, to: T. Case 2.2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP C)) (EQUAL B 0)) (EQUAL (LESSP A 0) F)), which again simplifies, expanding EQUAL and LESSP, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP C)) (NOT (NUMBERP B))) (EQUAL (LESSP A 0) F)), which again simplifies, unfolding the definitions of EQUAL and LESSP, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP A)) (NOT (ZEROP C)) (EQUAL (LESSP (DIFFERENCE (SUB1 A) (SUB1 C)) (DIFFERENCE (SUB1 B) (SUB1 C))) (IF (IF (LESSP (SUB1 A) (SUB1 C)) F T) (LESSP (SUB1 A) (SUB1 B)) (LESSP (SUB1 C) (SUB1 B))))) (EQUAL (LESSP (DIFFERENCE A C) (DIFFERENCE B C)) (IF (IF (LESSP A C) F T) (LESSP A B) (LESSP C B)))), which simplifies, opening up ZEROP, DIFFERENCE, and LESSP, to four new formulas: Case 1.4. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP (SUB1 A) (SUB1 C))) (EQUAL (LESSP (DIFFERENCE (SUB1 A) (SUB1 C)) (DIFFERENCE (SUB1 B) (SUB1 C))) (LESSP (SUB1 A) (SUB1 B))) (NOT (NUMBERP B))) (EQUAL (LESSP (DIFFERENCE (SUB1 A) (SUB1 C)) 0) F)), which again simplifies, expanding EQUAL and LESSP, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP (SUB1 A) (SUB1 C))) (EQUAL (LESSP (DIFFERENCE (SUB1 A) (SUB1 C)) (DIFFERENCE (SUB1 B) (SUB1 C))) (LESSP (SUB1 A) (SUB1 B))) (EQUAL B 0)) (EQUAL (LESSP (DIFFERENCE (SUB1 A) (SUB1 C)) 0) F)), which again simplifies, applying the lemma DIFFERENCE-SUB1-ARG2, and unfolding the definitions of SUB1, EQUAL, and LESSP, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL C 0)) (NUMBERP C) (LESSP (SUB1 A) (SUB1 C)) (EQUAL (LESSP (DIFFERENCE (SUB1 A) (SUB1 C)) (DIFFERENCE (SUB1 B) (SUB1 C))) (LESSP (SUB1 C) (SUB1 B))) (NOT (NUMBERP B))) (EQUAL (LESSP (DIFFERENCE (SUB1 A) (SUB1 C)) 0) F)), which again simplifies, opening up the definitions of EQUAL and LESSP, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL C 0)) (NUMBERP C) (LESSP (SUB1 A) (SUB1 C)) (EQUAL (LESSP (DIFFERENCE (SUB1 A) (SUB1 C)) (DIFFERENCE (SUB1 B) (SUB1 C))) (LESSP (SUB1 C) (SUB1 B))) (EQUAL B 0)) (EQUAL (LESSP (DIFFERENCE (SUB1 A) (SUB1 C)) 0) F)), which again simplifies, applying the lemma DIFFERENCE-SUB1-ARG2, and expanding SUB1, EQUAL, and LESSP, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] LESSP-DIFFERENCE-CANCELLATION (DISABLE LESSP-DIFFERENCE-CANCELLATION) [ 0.0 0.0 0.0 ] LESSP-DIFFERENCE-CANCELLATION-OFF (DEFN CANCEL-LESSP-PLUS (X) (IF (AND (LISTP X) (EQUAL (CAR X) 'LESSP)) (IF (AND (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS)) (LIST 'LESSP (PLUS-TREE (BAGDIFF (PLUS-FRINGE (CADR X)) (BAGINT (PLUS-FRINGE (CADR X)) (PLUS-FRINGE (CADDR X))))) (PLUS-TREE (BAGDIFF (PLUS-FRINGE (CADDR X)) (BAGINT (PLUS-FRINGE (CADR X)) (PLUS-FRINGE (CADDR X)))))) (IF (AND (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X)))) (LIST 'QUOTE F) (IF (AND (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X)))) (LIST 'NOT (LIST 'ZEROP (PLUS-TREE (DELETE (CADR X) (PLUS-FRINGE (CADDR X)))))) X))) X)) Note that: (OR (LISTP (CANCEL-LESSP-PLUS X)) (EQUAL (CANCEL-LESSP-PLUS X) X)) is a theorem. [ 0.0 0.0 0.0 ] CANCEL-LESSP-PLUS (PROVE-LEMMA CORRECTNESS-OF-CANCEL-LESSP-PLUS ((META LESSP)) (EQUAL (EVAL$ T X A) (EVAL$ T (CANCEL-LESSP-PLUS X) A)) ((ENABLE CANCEL-LESSP-PLUS BRIDGE-TO-SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP EQUAL-DIFFERENCE-0 EVAL$-QUOTE LESSP-DIFFERENCE-CANCELLATION MEMBER-IMPLIES-PLUS-TREE-GREATEREQP NUMBERP-EVAL$-PLUS PLUS-TREE-BAGDIFF PLUS-TREE-DELETE PLUS-TREE-PLUS-FRINGE SUBBAGP-BAGINT1 SUBBAGP-BAGINT2) (DISABLE EVAL$))) This formula simplifies, opening up the function CANCEL-LESSP-PLUS, to the following five new goals: Case 5. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'LESSP) (NOT (EQUAL (CAADR X) 'PLUS)) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X)))) (EQUAL (EVAL$ T X A) (EVAL$ T (LIST 'NOT (LIST 'ZEROP (PLUS-TREE (DELETE (CADR X) (PLUS-FRINGE (CADDR X)))))) A))). However this again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, NUMBERP-EVAL$-PLUS, PLUS-TREE-PLUS-FRINGE, PLUS-TREE-DELETE, and EQUAL-DIFFERENCE-0, and opening up ZEROP and NOT, to: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'LESSP) (NOT (EQUAL (CAADR X) 'PLUS)) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X)))) (EQUAL (EVAL$ T X A) (LESSP (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), W by (CONS V C) to eliminate (CAR W) and (CDR W), D by (CONS W X1) to eliminate (CAR D) and (CDR D), W by (CONS D Z1) to eliminate (CAR W) and (CDR W), D by (CONS V C) to eliminate (CAR D) and (CDR D), and V by (CONS D X1) to eliminate (CAR V) and (CDR V). We would thus like to prove the following five new conjectures: Case 5.5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'LESSP) (NOT (EQUAL (CAAR V) 'PLUS)) (LISTP (CADR V)) (EQUAL (CAADR V) 'PLUS) (MEMBER (CAR V) (PLUS-FRINGE (CADR V)))) (EQUAL (EVAL$ T (CONS Z V) A) (LESSP (EVAL$ T (CAR V) A) (EVAL$ T (CADR V) A)))). This further simplifies, rewriting with CAR-NLISTP and CDR-NLISTP, and opening up the definitions of CAR, EQUAL, and LISTP, to: T. Case 5.4. (IMPLIES (AND (NOT (LISTP D)) (NOT (LISTP W)) (EQUAL Z 'LESSP) (NOT (EQUAL (CAR W) 'PLUS)) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (MEMBER W (PLUS-FRINGE (CAR D)))) (EQUAL (EVAL$ T (CONS Z (CONS W D)) A) (LESSP (EVAL$ T W A) (EVAL$ T (CAR D) A)))). But this further simplifies, applying CAR-NLISTP, and opening up EQUAL and LISTP, to: T. Case 5.3. (IMPLIES (AND (NOT (LISTP W)) (EQUAL Z 'LESSP) (NOT (EQUAL (CAR W) 'PLUS)) (EQUAL D 'PLUS) (MEMBER W (PLUS-FRINGE (CONS D X1)))) (EQUAL (EVAL$ T (CONS Z (CONS W (CONS (CONS D X1) C))) A) (LESSP (EVAL$ T W A) (EVAL$ T (CONS D X1) A)))). But this further simplifies, rewriting with the lemmas CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and opening up the function EQUAL, to: T. Case 5.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'LESSP) (NOT (EQUAL V 'PLUS)) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (MEMBER (CONS V C) (PLUS-FRINGE (CAR D)))) (EQUAL (EVAL$ T (CONS Z (CONS (CONS V C) D)) A) (LESSP (EVAL$ T (CONS V C) A) (EVAL$ T (CAR D) A)))), which further simplifies, rewriting with the lemma CAR-NLISTP, and opening up the function LISTP, to: T. Case 5.1. (IMPLIES (AND (EQUAL Z 'LESSP) (NOT (EQUAL V 'PLUS)) (EQUAL D 'PLUS) (MEMBER (CONS V C) (PLUS-FRINGE (CONS D Z1)))) (EQUAL (EVAL$ T (CONS Z (CONS (CONS V C) (CONS (CONS D Z1) X1))) A) (LESSP (EVAL$ T (CONS V C) A) (EVAL$ T (CONS D Z1) A)))), which further simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Case 4. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'LESSP) (NOT (LISTP (CADR X))) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X)))) (EQUAL (EVAL$ T X A) (EVAL$ T (LIST 'NOT (LIST 'ZEROP (PLUS-TREE (DELETE (CADR X) (PLUS-FRINGE (CADDR X)))))) A))), which again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, NUMBERP-EVAL$-PLUS, PLUS-TREE-PLUS-FRINGE, PLUS-TREE-DELETE, and EQUAL-DIFFERENCE-0, and expanding the functions ZEROP and NOT, to: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'LESSP) (NOT (LISTP (CADR X))) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS) (MEMBER (CADR X) (PLUS-FRINGE (CADDR X)))) (EQUAL (EVAL$ T X A) (LESSP (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), D by (CONS V C) to eliminate (CAR D) and (CDR D), and V by (CONS D X1) to eliminate (CAR V) and (CDR V). We would thus like to prove the following three new formulas: Case 4.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'LESSP) (NOT (LISTP (CAR V))) (LISTP (CADR V)) (EQUAL (CAADR V) 'PLUS) (MEMBER (CAR V) (PLUS-FRINGE (CADR V)))) (EQUAL (EVAL$ T (CONS Z V) A) (LESSP (EVAL$ T (CAR V) A) (EVAL$ T (CADR V) A)))). This further simplifies, rewriting with CAR-NLISTP and CDR-NLISTP, and expanding the functions LISTP and CAR, to: T. Case 4.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'LESSP) (NOT (LISTP W)) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS) (MEMBER W (PLUS-FRINGE (CAR D)))) (EQUAL (EVAL$ T (CONS Z (CONS W D)) A) (LESSP (EVAL$ T W A) (EVAL$ T (CAR D) A)))). But this further simplifies, applying CAR-NLISTP, and opening up the function LISTP, to: T. Case 4.1. (IMPLIES (AND (EQUAL Z 'LESSP) (NOT (LISTP W)) (EQUAL D 'PLUS) (MEMBER W (PLUS-FRINGE (CONS D X1)))) (EQUAL (EVAL$ T (CONS Z (CONS W (CONS (CONS D X1) C))) A) (LESSP (EVAL$ T W A) (EVAL$ T (CONS D X1) A)))). This further simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Case 3. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'LESSP) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (EQUAL (CAADDR X) 'PLUS)) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X)))) (EQUAL (EVAL$ T X A) (EVAL$ T (LIST 'QUOTE F) A))), which again simplifies, applying EVAL$-QUOTE, and expanding the definition of CAR, to: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'LESSP) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (EQUAL (CAADDR X) 'PLUS)) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X)))) (NOT (EVAL$ T X A))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), W by (CONS V C) to eliminate (CAR W) and (CDR W), D by (CONS W X1) to eliminate (CAR D) and (CDR D), and W by (CONS D Z1) to eliminate (CAR W) and (CDR W). This produces the following four new formulas: Case 3.4. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'LESSP) (LISTP (CAR V)) (EQUAL (CAAR V) 'PLUS) (NOT (EQUAL (CAADR V) 'PLUS)) (MEMBER (CADR V) (PLUS-FRINGE (CAR V)))) (NOT (EVAL$ T (CONS Z V) A))). But this further simplifies, applying CAR-NLISTP, and opening up the definition of LISTP, to: T. Case 3.3. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'LESSP) (EQUAL V 'PLUS) (NOT (EQUAL (CAAR D) 'PLUS)) (MEMBER (CAR D) (PLUS-FRINGE (CONS V C)))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) D)) A))). This further simplifies, applying the lemmas CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and unfolding the definitions of CAR and EQUAL, to: (IMPLIES (AND (NOT (LISTP D)) (MEMBER 0 (PLUS-FRINGE (CONS 'PLUS C)))) (NOT (LESSP (PLUS (EVAL$ T (CAR C) A) (EVAL$ T (CADR C) A)) (EVAL$ T 0 A)))). But this again simplifies, using linear arithmetic and rewriting with MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, PLUS-TREE-PLUS-FRINGE, and REWRITE-EVAL$, to: T. Case 3.2. (IMPLIES (AND (NOT (LISTP W)) (EQUAL Z 'LESSP) (EQUAL V 'PLUS) (NOT (EQUAL (CAR W) 'PLUS)) (MEMBER W (PLUS-FRINGE (CONS V C)))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) (CONS W X1))) A))). But this further simplifies, applying CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and unfolding EQUAL, to: (IMPLIES (AND (NOT (LISTP W)) (MEMBER W (PLUS-FRINGE (CONS 'PLUS C)))) (NOT (LESSP (PLUS (EVAL$ T (CAR C) A) (EVAL$ T (CADR C) A)) (EVAL$ T W A)))), which again simplifies, using linear arithmetic and rewriting with MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, PLUS-TREE-PLUS-FRINGE, and REWRITE-EVAL$, to: T. Case 3.1. (IMPLIES (AND (EQUAL Z 'LESSP) (EQUAL V 'PLUS) (NOT (EQUAL D 'PLUS)) (MEMBER (CONS D Z1) (PLUS-FRINGE (CONS V C)))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) (CONS (CONS D Z1) X1))) A))). However this further simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: (IMPLIES (AND (NOT (EQUAL D 'PLUS)) (MEMBER (CONS D Z1) (PLUS-FRINGE (CONS 'PLUS C)))) (NOT (LESSP (PLUS (EVAL$ T (CAR C) A) (EVAL$ T (CADR C) A)) (EVAL$ T (CONS D Z1) A)))), which again simplifies, using linear arithmetic and rewriting with the lemmas MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, PLUS-TREE-PLUS-FRINGE, and REWRITE-EVAL$, to: T. Case 2. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'LESSP) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (LISTP (CADDR X))) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X)))) (EQUAL (EVAL$ T X A) (EVAL$ T (LIST 'QUOTE F) A))), which again simplifies, rewriting with the lemma EVAL$-QUOTE, and expanding CAR, to: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'LESSP) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (NOT (LISTP (CADDR X))) (MEMBER (CADDR X) (PLUS-FRINGE (CADR X)))) (NOT (EVAL$ T X A))). Appealing to the lemma CAR-CDR-ELIM, we now replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), W by (CONS V C) to eliminate (CAR W) and (CDR W), and D by (CONS W X1) to eliminate (CAR D) and (CDR D). We must thus prove three new goals: Case 2.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'LESSP) (LISTP (CAR V)) (EQUAL (CAAR V) 'PLUS) (NOT (LISTP (CADR V))) (MEMBER (CADR V) (PLUS-FRINGE (CAR V)))) (NOT (EVAL$ T (CONS Z V) A))), which further simplifies, applying CAR-NLISTP, and opening up LISTP, to: T. Case 2.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'LESSP) (EQUAL V 'PLUS) (NOT (LISTP (CAR D))) (MEMBER (CAR D) (PLUS-FRINGE (CONS V C)))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) D)) A))). But this further simplifies, rewriting with CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and unfolding the function LISTP, to: (IMPLIES (AND (NOT (LISTP D)) (MEMBER 0 (PLUS-FRINGE (CONS 'PLUS C)))) (NOT (LESSP (PLUS (EVAL$ T (CAR C) A) (EVAL$ T (CADR C) A)) (EVAL$ T 0 A)))), which again simplifies, using linear arithmetic and rewriting with the lemmas MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, PLUS-TREE-PLUS-FRINGE, and REWRITE-EVAL$, to: T. Case 2.1. (IMPLIES (AND (EQUAL Z 'LESSP) (EQUAL V 'PLUS) (NOT (LISTP W)) (MEMBER W (PLUS-FRINGE (CONS V C)))) (NOT (EVAL$ T (CONS Z (CONS (CONS V C) (CONS W X1))) A))), which further simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to the new conjecture: (IMPLIES (AND (NOT (LISTP W)) (MEMBER W (PLUS-FRINGE (CONS 'PLUS C)))) (NOT (LESSP (PLUS (EVAL$ T (CAR C) A) (EVAL$ T (CADR C) A)) (EVAL$ T W A)))), which again simplifies, using linear arithmetic and applying MEMBER-IMPLIES-PLUS-TREE-GREATEREQP, PLUS-TREE-PLUS-FRINGE, and REWRITE-EVAL$, to: T. Case 1. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'LESSP) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS)) (EQUAL (EVAL$ T X A) (EVAL$ T (LIST 'LESSP (PLUS-TREE (BAGDIFF (PLUS-FRINGE (CADR X)) (BAGINT (PLUS-FRINGE (CADR X)) (PLUS-FRINGE (CADDR X))))) (PLUS-TREE (BAGDIFF (PLUS-FRINGE (CADDR X)) (BAGINT (PLUS-FRINGE (CADR X)) (PLUS-FRINGE (CADDR X)))))) A))). However this again simplifies, applying the lemmas REWRITE-EVAL$, CAR-CONS, SUBBAGP-BAGINT1, NUMBERP-EVAL$-PLUS, PLUS-TREE-PLUS-FRINGE, PLUS-TREE-BAGDIFF, CDR-CONS, SUBBAGP-BAGINT2, BRIDGE-TO-SUBBAGP-IMPLIES-PLUS-TREE-GREATEREQP, and LESSP-DIFFERENCE-CANCELLATION, to the formula: (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'LESSP) (LISTP (CADR X)) (EQUAL (CAADR X) 'PLUS) (LISTP (CADDR X)) (EQUAL (CAADDR X) 'PLUS)) (EQUAL (EVAL$ T X A) (LESSP (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)))). Appealing to the lemma CAR-CDR-ELIM, we now replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), W by (CONS V C) to eliminate (CAR W) and (CDR W), D by (CONS W X1) to eliminate (CAR D) and (CDR D), and W by (CONS D Z1) to eliminate (CAR W) and (CDR W). This generates three new goals: Case 1.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'LESSP) (LISTP (CAR V)) (EQUAL (CAAR V) 'PLUS) (LISTP (CADR V)) (EQUAL (CAADR V) 'PLUS)) (EQUAL (EVAL$ T (CONS Z V) A) (LESSP (EVAL$ T (CAR V) A) (EVAL$ T (CADR V) A)))), which further simplifies, applying CAR-NLISTP, and expanding the definition of LISTP, to: T. Case 1.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'LESSP) (EQUAL V 'PLUS) (LISTP (CAR D)) (EQUAL (CAAR D) 'PLUS)) (EQUAL (EVAL$ T (CONS Z (CONS (CONS V C) D)) A) (LESSP (EVAL$ T (CONS V C) A) (EVAL$ T (CAR D) A)))). But this further simplifies, applying CAR-NLISTP, and unfolding LISTP, to: T. Case 1.1. (IMPLIES (AND (EQUAL Z 'LESSP) (EQUAL V 'PLUS) (EQUAL D 'PLUS)) (EQUAL (EVAL$ T (CONS Z (CONS (CONS V C) (CONS (CONS D Z1) X1))) A) (LESSP (EVAL$ T (CONS V C) A) (EVAL$ T (CONS D Z1) A)))). This further simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Q.E.D. [ 0.0 0.5 0.0 ] CORRECTNESS-OF-CANCEL-LESSP-PLUS (PROVE-LEMMA EQUAL-TIMES-0 (REWRITE) (EQUAL (EQUAL (TIMES X Y) 0) (OR (ZEROP X) (ZEROP Y))) ((ENABLE EQUAL-PLUS-0) (INDUCT (TIMES X Y)))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to two new goals: Case 2. (IMPLIES (ZEROP X) (EQUAL (EQUAL (TIMES X Y) 0) (OR (ZEROP X) (ZEROP Y)))), which simplifies, opening up the definitions of ZEROP, EQUAL, TIMES, and OR, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL (EQUAL (TIMES (SUB1 X) Y) 0) (OR (ZEROP (SUB1 X)) (ZEROP Y)))) (EQUAL (EQUAL (TIMES X Y) 0) (OR (ZEROP X) (ZEROP Y)))), which simplifies, rewriting with EQUAL-PLUS-0 and PLUS-ZERO-ARG2, and expanding the functions ZEROP, OR, TIMES, EQUAL, and PLUS, to the new formula: (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL (TIMES (SUB1 X) Y) 0) (EQUAL Y 0)) (EQUAL (TIMES (SUB1 X) 0) 0)), which again simplifies, trivially, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EQUAL-TIMES-0 (PROVE-LEMMA EQUAL-TIMES-1 (REWRITE) (EQUAL (EQUAL (TIMES A B) 1) (AND (EQUAL A 1) (EQUAL B 1))) ((ENABLE EQUAL-PLUS-0) (INDUCT (TIMES A B)))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to two new conjectures: Case 2. (IMPLIES (ZEROP A) (EQUAL (EQUAL (TIMES A B) 1) (AND (EQUAL A 1) (EQUAL B 1)))), which simplifies, expanding the definitions of ZEROP, EQUAL, TIMES, and AND, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL (EQUAL (TIMES (SUB1 A) B) 1) (AND (EQUAL (SUB1 A) 1) (EQUAL B 1)))) (EQUAL (EQUAL (TIMES A B) 1) (AND (EQUAL A 1) (EQUAL B 1)))), which simplifies, applying PLUS-ZERO-ARG2 and EQUAL-TIMES-0, and unfolding the definitions of AND, TIMES, ZEROP, SUB1, NUMBERP, and EQUAL, to the following eight new goals: Case 1.8. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL (TIMES (SUB1 A) B) 1)) (NOT (EQUAL (SUB1 A) 1)) (EQUAL (PLUS B (TIMES (SUB1 A) B)) 1)) (EQUAL (EQUAL B 1) T)). This again simplifies, obviously, to the new conjecture: (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL (TIMES (SUB1 A) B) 1)) (NOT (EQUAL (SUB1 A) 1)) (EQUAL (PLUS B (TIMES (SUB1 A) B)) 1)) (EQUAL B 1)), which again simplifies, using linear arithmetic, to the goal: (IMPLIES (AND (NOT (NUMBERP B)) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL (TIMES (SUB1 A) B) 1)) (NOT (EQUAL (SUB1 A) 1)) (EQUAL (PLUS B (TIMES (SUB1 A) B)) 1)) (EQUAL B 1)). However this again simplifies, rewriting with PLUS-ZERO-ARG2 and EQUAL-TIMES-0, and unfolding the definitions of ZEROP, TIMES, and EQUAL, to: T. Case 1.7. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL (TIMES (SUB1 A) B) 1)) (NOT (EQUAL (SUB1 A) 1)) (NOT (EQUAL (PLUS B (TIMES (SUB1 A) B)) 1)) (EQUAL A 1)) (NOT (EQUAL B 1))). However this again simplifies, expanding the functions EQUAL, NUMBERP, SUB1, TIMES, and PLUS, to: T. Case 1.6. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL (TIMES (SUB1 A) B) 1)) (NOT (EQUAL (SUB1 A) 1)) (EQUAL (PLUS B (TIMES (SUB1 A) B)) 1)) (EQUAL A 1)). Applying the lemma SUB1-ELIM, replace A by (ADD1 X) to eliminate (SUB1 A). We employ the type restriction lemma noted when SUB1 was introduced to restrict the new variable. We thus obtain the new formula: (IMPLIES (AND (NUMBERP X) (NOT (EQUAL (ADD1 X) 0)) (NOT (EQUAL (TIMES X B) 1)) (NOT (EQUAL X 1)) (EQUAL (PLUS B (TIMES X B)) 1)) (EQUAL (ADD1 X) 1)), which further simplifies, applying ADD1-EQUAL, and opening up NUMBERP, to: (IMPLIES (AND (NUMBERP X) (NOT (EQUAL (TIMES X B) 1)) (NOT (EQUAL X 1)) (EQUAL (PLUS B (TIMES X B)) 1)) (EQUAL X 0)), which we will name *1. Case 1.5. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL (TIMES (SUB1 A) B) 1)) (NOT (EQUAL B 1))) (NOT (EQUAL (PLUS B (TIMES (SUB1 A) B)) 1))). But this again simplifies, using linear arithmetic, to the conjecture: (IMPLIES (AND (NOT (NUMBERP B)) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL (TIMES (SUB1 A) B) 1)) (NOT (EQUAL B 1))) (NOT (EQUAL (PLUS B (TIMES (SUB1 A) B)) 1))). However this again simplifies, applying the lemmas PLUS-ZERO-ARG2 and EQUAL-TIMES-0, and expanding ZEROP, TIMES, and EQUAL, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL (TIMES (SUB1 A) B) 1) (EQUAL (SUB1 A) 1) (EQUAL (EQUAL B 1) T) (NOT (EQUAL A 1)) (NUMBERP B)) (NOT (EQUAL (PLUS B B) 1))), which again simplifies, using linear arithmetic, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL (TIMES (SUB1 A) B) 1) (EQUAL (SUB1 A) 1) (EQUAL (EQUAL B 1) T) (NOT (EQUAL A 1)) (NOT (NUMBERP B))) (NOT (EQUAL (PLUS B 0) 1))), which again simplifies, rewriting with PLUS-ZERO-ARG2 and EQUAL-TIMES-0, and opening up the definitions of ZEROP, SUB1, NUMBERP, EQUAL, and TIMES, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL (TIMES (SUB1 A) B) 1) (EQUAL (SUB1 A) 1) (EQUAL (EQUAL B 1) T) (EQUAL A 1) (NUMBERP B)) (EQUAL (EQUAL (PLUS B B) 1) T)). However this again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL (TIMES (SUB1 A) B) 1) (EQUAL (SUB1 A) 1) (EQUAL (EQUAL B 1) T) (EQUAL A 1) (NOT (NUMBERP B))) (EQUAL (EQUAL (PLUS B 0) 1) T)), which again simplifies, using linear arithmetic, to: T. So we now return to: (IMPLIES (AND (NUMBERP X) (NOT (EQUAL (TIMES X B) 1)) (NOT (EQUAL X 1)) (EQUAL (PLUS B (TIMES X B)) 1)) (EQUAL X 0)), which is formula *1 above. We will try to prove it by induction. The recursive terms in the conjecture suggest three inductions. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (ZEROP X) (p X B)) (IMPLIES (AND (NOT (ZEROP X)) (p (SUB1 X) B)) (p X B))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP can be used to prove that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme leads to the following five new conjectures: Case 5. (IMPLIES (AND (ZEROP X) (NUMBERP X) (NOT (EQUAL (TIMES X B) 1)) (NOT (EQUAL X 1)) (EQUAL (PLUS B (TIMES X B)) 1)) (EQUAL X 0)). This simplifies, expanding the definition of ZEROP, to: T. Case 4. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (TIMES (SUB1 X) B) 1) (NUMBERP X) (NOT (EQUAL (TIMES X B) 1)) (NOT (EQUAL X 1)) (EQUAL (PLUS B (TIMES X B)) 1)) (EQUAL X 0)). This simplifies, applying PLUS-ZERO-ARG2, PLUS-ADD1-ARG2, ADD1-EQUAL, and EQUAL-PLUS-0, and expanding ZEROP, TIMES, and NUMBERP, to: T. Case 3. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (SUB1 X) 1) (NUMBERP X) (NOT (EQUAL (TIMES X B) 1)) (NOT (EQUAL X 1)) (EQUAL (PLUS B (TIMES X B)) 1)) (EQUAL X 0)), which simplifies, unfolding ZEROP and TIMES, to the conjecture: (IMPLIES (AND (EQUAL (SUB1 X) 1) (NUMBERP X) (NOT (EQUAL (PLUS B (TIMES (SUB1 X) B)) 1)) (NOT (EQUAL X 1)) (EQUAL (PLUS B B (TIMES (SUB1 X) B)) 1)) (EQUAL X 0)). However this again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP X)) (NOT (EQUAL (PLUS B (TIMES (SUB1 X) B)) 1)) (NUMBERP X) (NOT (EQUAL (TIMES X B) 1)) (NOT (EQUAL X 1)) (EQUAL (PLUS B (TIMES X B)) 1)) (EQUAL X 0)), which simplifies, opening up ZEROP and TIMES, to: (IMPLIES (AND (NOT (EQUAL (PLUS B (TIMES (SUB1 X) B)) 1)) (NUMBERP X) (NOT (EQUAL X 1)) (EQUAL (PLUS B B (TIMES (SUB1 X) B)) 1)) (EQUAL X 0)). However this again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (SUB1 X) 0) (NUMBERP X) (NOT (EQUAL (TIMES X B) 1)) (NOT (EQUAL X 1)) (EQUAL (PLUS B (TIMES X B)) 1)) (EQUAL X 0)), which simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] EQUAL-TIMES-1 (PROVE-LEMMA EQUAL-SUB1-0 (REWRITE) (EQUAL (EQUAL (SUB1 X) 0) (OR (ZEROP X) (EQUAL X 1)))) This formula simplifies, expanding ZEROP and OR, to four new conjectures: Case 4. (IMPLIES (NOT (EQUAL (SUB1 X) 0)) (NOT (EQUAL X 0))), which again simplifies, expanding the definitions of SUB1 and EQUAL, to: T. Case 3. (IMPLIES (NOT (EQUAL (SUB1 X) 0)) (NUMBERP X)), which again simplifies, applying the lemma SUB1-NNUMBERP, and opening up EQUAL, to: T. Case 2. (IMPLIES (NOT (EQUAL (SUB1 X) 0)) (NOT (EQUAL X 1))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (EQUAL (SUB1 X) 0) (NOT (EQUAL X 0)) (NUMBERP X)) (EQUAL (EQUAL X 1) T)), which again simplifies, obviously, to the new goal: (IMPLIES (AND (EQUAL (SUB1 X) 0) (NOT (EQUAL X 0)) (NUMBERP X)) (EQUAL X 1)), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EQUAL-SUB1-0 (PROVE-LEMMA TIMES-ZERO (REWRITE) (IMPLIES (ZEROP Y) (EQUAL (TIMES X Y) 0)) ((ENABLE PLUS-ZERO-ARG2 COMMUTATIVITY-OF-PLUS))) This formula can be simplified, using the abbreviations EQUAL-TIMES-0 and IMPLIES, to: (IMPLIES (AND (ZEROP Y) (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0))) (NOT (NUMBERP Y))), which simplifies, opening up the function ZEROP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] TIMES-ZERO (PROVE-LEMMA TIMES-ADD1 (REWRITE) (EQUAL (TIMES X (ADD1 Y)) (IF (NUMBERP Y) (PLUS X (TIMES X Y)) (FIX X))) ((ENABLE PLUS-ZERO-ARG2 COMMUTATIVITY-OF-PLUS))) This conjecture simplifies, unfolding the definition of FIX, to three new conjectures: Case 3. (IMPLIES (AND (NOT (NUMBERP Y)) (NUMBERP X)) (EQUAL (TIMES X (ADD1 Y)) X)), which again simplifies, rewriting with SUB1-TYPE-RESTRICTION, to the new formula: (IMPLIES (AND (NOT (NUMBERP Y)) (NUMBERP X)) (EQUAL (TIMES X 1) X)), which we will name *1. Case 2. (IMPLIES (AND (NOT (NUMBERP Y)) (NOT (NUMBERP X))) (EQUAL (TIMES X (ADD1 Y)) 0)). However this again simplifies, applying SUB1-TYPE-RESTRICTION, and opening up the definitions of TIMES and EQUAL, to: T. Case 1. (IMPLIES (NUMBERP Y) (EQUAL (TIMES X (ADD1 Y)) (PLUS X (TIMES X Y)))), which we would usually push and work on later by induction. But if we must use induction to prove the input conjecture, we prefer to induct on the original formulation of the problem. Thus we will disregard all that we have previously done, give the name *1 to the original input, and work on it. So now let us consider: (EQUAL (TIMES X (ADD1 Y)) (IF (NUMBERP Y) (PLUS X (TIMES X Y)) (FIX X))), which we named *1 above. We will appeal to induction. The recursive terms in the conjecture suggest three inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP X) (p X Y)) (IMPLIES (AND (NOT (ZEROP X)) (p (SUB1 X) Y)) (p X Y))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme leads to the following two new formulas: Case 2. (IMPLIES (ZEROP X) (EQUAL (TIMES X (ADD1 Y)) (IF (NUMBERP Y) (PLUS X (TIMES X Y)) (FIX X)))). This simplifies, rewriting with PLUS-ZERO-ARG2, and expanding the definitions of ZEROP, EQUAL, TIMES, PLUS, and FIX, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (TIMES (SUB1 X) (ADD1 Y)) (IF (NUMBERP Y) (PLUS (SUB1 X) (TIMES (SUB1 X) Y)) (FIX (SUB1 X))))) (EQUAL (TIMES X (ADD1 Y)) (IF (NUMBERP Y) (PLUS X (TIMES X Y)) (FIX X)))), which simplifies, applying SUB1-TYPE-RESTRICTION and PLUS-ADD1-ARG1, and unfolding the functions ZEROP, FIX, and TIMES, to the following two new formulas: Case 1.2. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (NUMBERP Y)) (EQUAL (TIMES (SUB1 X) (ADD1 Y)) (SUB1 X))) (EQUAL (TIMES X 1) X)). But this further simplifies, rewriting with SUB1-TYPE-RESTRICTION, PLUS-ADD1-ARG1, and ADD1-SUB1, and unfolding PLUS, EQUAL, and TIMES, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NUMBERP Y) (EQUAL (TIMES (SUB1 X) (ADD1 Y)) (PLUS (SUB1 X) (TIMES (SUB1 X) Y)))) (EQUAL (ADD1 (PLUS Y (TIMES (SUB1 X) (ADD1 Y)))) (PLUS X Y (TIMES (SUB1 X) Y)))). However this again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] TIMES-ADD1 (PROVE-LEMMA COMMUTATIVITY-OF-TIMES (REWRITE) (EQUAL (TIMES Y X) (TIMES X Y)) ((ENABLE TIMES-ZERO TIMES-ADD1))) WARNING: the newly proposed lemma, COMMUTATIVITY-OF-TIMES, could be applied whenever the previously added lemma TIMES-ADD1 could. WARNING: the newly proposed lemma, COMMUTATIVITY-OF-TIMES, could be applied whenever the previously added lemma TIMES-ZERO could. Give the conjecture the name *1. We will appeal to induction. Two inductions are suggested by terms in the conjecture, both of which are flawed. We limit our consideration to the two suggested by the largest number of nonprimitive recursive functions in the conjecture. Since both of these are equally likely, we will choose arbitrarily. We will induct according to the following scheme: (AND (IMPLIES (ZEROP Y) (p Y X)) (IMPLIES (AND (NOT (ZEROP Y)) (p (SUB1 Y) X)) (p Y X))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP inform us that the measure (COUNT Y) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme produces the following two new conjectures: Case 2. (IMPLIES (ZEROP Y) (EQUAL (TIMES Y X) (TIMES X Y))). This simplifies, applying TIMES-ZERO, and opening up the functions ZEROP, EQUAL, and TIMES, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP Y)) (EQUAL (TIMES (SUB1 Y) X) (TIMES X (SUB1 Y)))) (EQUAL (TIMES Y X) (TIMES X Y))), which simplifies, unfolding the functions ZEROP and TIMES, to: (IMPLIES (AND (NOT (EQUAL Y 0)) (NUMBERP Y) (EQUAL (TIMES (SUB1 Y) X) (TIMES X (SUB1 Y)))) (EQUAL (PLUS X (TIMES X (SUB1 Y))) (TIMES X Y))). Appealing to the lemma SUB1-ELIM, we now replace Y by (ADD1 Z) to eliminate (SUB1 Y). We employ the type restriction lemma noted when SUB1 was introduced to constrain the new variable. We must thus prove: (IMPLIES (AND (NUMBERP Z) (NOT (EQUAL (ADD1 Z) 0)) (EQUAL (TIMES Z X) (TIMES X Z))) (EQUAL (PLUS X (TIMES X Z)) (TIMES X (ADD1 Z)))). However this further simplifies, applying the lemma TIMES-ADD1, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] COMMUTATIVITY-OF-TIMES (PROVE-LEMMA TIMES-DISTRIBUTES-OVER-PLUS-PROOF NIL (EQUAL (TIMES X (PLUS Y Z)) (PLUS (TIMES X Y) (TIMES X Z))) ((ENABLE COMMUTATIVITY2-OF-PLUS ASSOCIATIVITY-OF-PLUS))) Call the conjecture *1. We will try to prove it by induction. There are four plausible inductions. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (ZEROP X) (p X Y Z)) (IMPLIES (AND (NOT (ZEROP X)) (p (SUB1 X) Y Z)) (p X Y Z))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP inform us that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates two new goals: Case 2. (IMPLIES (ZEROP X) (EQUAL (TIMES X (PLUS Y Z)) (PLUS (TIMES X Y) (TIMES X Z)))), which simplifies, opening up the functions ZEROP, EQUAL, TIMES, and PLUS, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (TIMES (SUB1 X) (PLUS Y Z)) (PLUS (TIMES (SUB1 X) Y) (TIMES (SUB1 X) Z)))) (EQUAL (TIMES X (PLUS Y Z)) (PLUS (TIMES X Y) (TIMES X Z)))), which simplifies, applying ASSOCIATIVITY-OF-PLUS and COMMUTATIVITY2-OF-PLUS, and unfolding the functions ZEROP and TIMES, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] TIMES-DISTRIBUTES-OVER-PLUS-PROOF (PROVE-LEMMA TIMES-DISTRIBUTES-OVER-PLUS (REWRITE) (AND (EQUAL (TIMES X (PLUS Y Z)) (PLUS (TIMES X Y) (TIMES X Z))) (EQUAL (TIMES (PLUS X Y) Z) (PLUS (TIMES X Z) (TIMES Y Z)))) ((USE (TIMES-DISTRIBUTES-OVER-PLUS-PROOF (X X) (Y Y) (Z Z)) (TIMES-DISTRIBUTES-OVER-PLUS-PROOF (X Z) (Y X) (Z Y))) (ENABLE COMMUTATIVITY-OF-TIMES))) WARNING: the previously added lemma, COMMUTATIVITY-OF-TIMES, could be applied whenever the newly proposed TIMES-DISTRIBUTES-OVER-PLUS could! WARNING: the previously added lemma, COMMUTATIVITY-OF-TIMES, could be applied whenever the newly proposed TIMES-DISTRIBUTES-OVER-PLUS could! WARNING: Note that the proposed lemma TIMES-DISTRIBUTES-OVER-PLUS is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This formula simplifies, applying COMMUTATIVITY-OF-TIMES, and opening up the definition of AND, to: T. Q.E.D. [ 0.0 0.1 0.0 ] TIMES-DISTRIBUTES-OVER-PLUS (PROVE-LEMMA COMMUTATIVITY2-OF-TIMES (REWRITE) (EQUAL (TIMES X Y Z) (TIMES Y X Z)) ((ENABLE COMMUTATIVITY-OF-TIMES TIMES-DISTRIBUTES-OVER-PLUS))) WARNING: the previously added lemma, COMMUTATIVITY-OF-TIMES, could be applied whenever the newly proposed COMMUTATIVITY2-OF-TIMES could! Call the conjecture *1. Perhaps we can prove it by induction. Four inductions are suggested by terms in the conjecture. They merge into two likely candidate inductions, both of which are unflawed. Since both of these are equally likely, we will choose arbitrarily. We will induct according to the following scheme: (AND (IMPLIES (ZEROP Y) (p X Y Z)) (IMPLIES (AND (NOT (ZEROP Y)) (p X (SUB1 Y) Z)) (p X Y Z))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP can be used to prove that the measure (COUNT Y) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme leads to two new goals: Case 2. (IMPLIES (ZEROP Y) (EQUAL (TIMES X Y Z) (TIMES Y X Z))), which simplifies, applying the lemma COMMUTATIVITY-OF-TIMES, and opening up the definitions of ZEROP, EQUAL, and TIMES, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP Y)) (EQUAL (TIMES X (SUB1 Y) Z) (TIMES (SUB1 Y) X Z))) (EQUAL (TIMES X Y Z) (TIMES Y X Z))), which simplifies, rewriting with TIMES-DISTRIBUTES-OVER-PLUS, and opening up the functions ZEROP and TIMES, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] COMMUTATIVITY2-OF-TIMES (PROVE-LEMMA ASSOCIATIVITY-OF-TIMES (REWRITE) (EQUAL (TIMES (TIMES X Y) Z) (TIMES X Y Z)) ((ENABLE COMMUTATIVITY-OF-TIMES COMMUTATIVITY2-OF-TIMES))) WARNING: the previously added lemma, COMMUTATIVITY-OF-TIMES, could be applied whenever the newly proposed ASSOCIATIVITY-OF-TIMES could! This simplifies, rewriting with COMMUTATIVITY-OF-TIMES and COMMUTATIVITY2-OF-TIMES, to: T. Q.E.D. [ 0.0 0.0 0.0 ] ASSOCIATIVITY-OF-TIMES (PROVE-LEMMA TIMES-DISTRIBUTES-OVER-DIFFERENCE-PROOF NIL (EQUAL (TIMES (DIFFERENCE A B) C) (DIFFERENCE (TIMES A C) (TIMES B C))) ((ENABLE COMMUTATIVITY-OF-TIMES))) This simplifies, appealing to the lemma COMMUTATIVITY-OF-TIMES, to the conjecture: (EQUAL (TIMES C (DIFFERENCE A B)) (DIFFERENCE (TIMES A C) (TIMES B C))). Appealing to the lemma DIFFERENCE-ELIM, we now replace A by (PLUS B X) to eliminate (DIFFERENCE A B). We employ the type restriction lemma noted when DIFFERENCE was introduced to constrain the new variable. This generates three new formulas: Case 3. (IMPLIES (LESSP A B) (EQUAL (TIMES C (DIFFERENCE A B)) (DIFFERENCE (TIMES A C) (TIMES B C)))), which further simplifies, using linear arithmetic, rewriting with the lemmas DIFFERENCE-LEQ-ARG1, COMMUTATIVITY-OF-TIMES, and EQUAL-DIFFERENCE-0, and expanding the functions EQUAL and TIMES, to the goal: (IMPLIES (LESSP A B) (NOT (LESSP (TIMES B C) (TIMES A C)))), which we would usually push and work on later by induction. But if we must use induction to prove the input conjecture, we prefer to induct on the original formulation of the problem. Thus we will disregard all that we have previously done, give the name *1 to the original input, and work on it. So now let us consider: (EQUAL (TIMES (DIFFERENCE A B) C) (DIFFERENCE (TIMES A C) (TIMES B C))), which we named *1 above. We will appeal to induction. The recursive terms in the conjecture suggest four inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP A) (p A B C)) (IMPLIES (AND (NOT (ZEROP A)) (ZEROP B)) (p A B C)) (IMPLIES (AND (NOT (ZEROP A)) (NOT (ZEROP B)) (p (SUB1 A) (SUB1 B) C)) (p A B C))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP inform us that the measure (COUNT A) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for B. The above induction scheme produces the following three new goals: Case 3. (IMPLIES (ZEROP A) (EQUAL (TIMES (DIFFERENCE A B) C) (DIFFERENCE (TIMES A C) (TIMES B C)))). This simplifies, using linear arithmetic, appealing to the lemma DIFFERENCE-LEQ-ARG1, and expanding the functions ZEROP, EQUAL, and TIMES, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP A)) (ZEROP B)) (EQUAL (TIMES (DIFFERENCE A B) C) (DIFFERENCE (TIMES A C) (TIMES B C)))). This simplifies, appealing to the lemmas EQUAL-PLUS-0, EQUAL-TIMES-0, and EQUAL-SUB1-0, and expanding the functions ZEROP, EQUAL, DIFFERENCE, and TIMES, to the following four new conjectures: Case 2.4. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL B 0) (NOT (NUMBERP C))) (EQUAL (PLUS C (TIMES (SUB1 A) C)) 0)). But this again simplifies, applying EQUAL-SUB1-0, EQUAL-TIMES-0, and PLUS-ZERO-ARG2, and expanding the definitions of ZEROP and EQUAL, to: T. Case 2.3. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL B 0) (EQUAL C 0)) (EQUAL (PLUS C (TIMES (SUB1 A) C)) 0)). This again simplifies, rewriting with COMMUTATIVITY-OF-TIMES, and expanding EQUAL, TIMES, and PLUS, to: T. Case 2.2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP B)) (NOT (NUMBERP C))) (EQUAL (PLUS C (TIMES (SUB1 A) C)) 0)). This again simplifies, rewriting with EQUAL-SUB1-0, EQUAL-TIMES-0, and PLUS-ZERO-ARG2, and unfolding ZEROP and EQUAL, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP B)) (EQUAL C 0)) (EQUAL (PLUS C (TIMES (SUB1 A) C)) 0)). But this again simplifies, applying the lemma COMMUTATIVITY-OF-TIMES, and unfolding the functions EQUAL, TIMES, and PLUS, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP A)) (NOT (ZEROP B)) (EQUAL (TIMES (DIFFERENCE (SUB1 A) (SUB1 B)) C) (DIFFERENCE (TIMES (SUB1 A) C) (TIMES (SUB1 B) C)))) (EQUAL (TIMES (DIFFERENCE A B) C) (DIFFERENCE (TIMES A C) (TIMES B C)))), which simplifies, rewriting with COMMUTATIVITY-OF-TIMES and CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS, and expanding the functions ZEROP, DIFFERENCE, TIMES, and FIX, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] TIMES-DISTRIBUTES-OVER-DIFFERENCE-PROOF (PROVE-LEMMA TIMES-DISTRIBUTES-OVER-DIFFERENCE (REWRITE) (AND (EQUAL (TIMES (DIFFERENCE A B) C) (DIFFERENCE (TIMES A C) (TIMES B C))) (EQUAL (TIMES A (DIFFERENCE B C)) (DIFFERENCE (TIMES A B) (TIMES A C)))) ((USE (TIMES-DISTRIBUTES-OVER-DIFFERENCE-PROOF (A A) (B B) (C C)) (TIMES-DISTRIBUTES-OVER-DIFFERENCE-PROOF (A B) (B C) (C A))) (ENABLE COMMUTATIVITY-OF-TIMES))) WARNING: the previously added lemma, COMMUTATIVITY-OF-TIMES, could be applied whenever the newly proposed TIMES-DISTRIBUTES-OVER-DIFFERENCE could! WARNING: the previously added lemma, COMMUTATIVITY-OF-TIMES, could be applied whenever the newly proposed TIMES-DISTRIBUTES-OVER-DIFFERENCE could! WARNING: Note that the proposed lemma TIMES-DISTRIBUTES-OVER-DIFFERENCE is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This formula simplifies, applying COMMUTATIVITY-OF-TIMES, and opening up the definition of AND, to: T. Q.E.D. [ 0.0 0.4 0.0 ] TIMES-DISTRIBUTES-OVER-DIFFERENCE (PROVE-LEMMA TIMES-QUOTIENT-PROOF NIL (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (REMAINDER Y X) 0)) (EQUAL (TIMES (QUOTIENT Y X) X) (FIX Y))) ((ENABLE TIMES-ZERO TIMES-ADD1) (INDUCT (REMAINDER Y X)))) This formula can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to the following three new formulas: Case 3. (IMPLIES (AND (ZEROP X) (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL (REMAINDER Y X) 0)) (EQUAL (TIMES (QUOTIENT Y X) X) (FIX Y))). This simplifies, opening up the function ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (LESSP Y X) (EQUAL (REMAINDER Y X) 0)) (EQUAL (TIMES (QUOTIENT Y X) X) (FIX Y))). This simplifies, expanding REMAINDER, LESSP, EQUAL, QUOTIENT, TIMES, and FIX, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (LESSP Y X)) (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (REMAINDER (DIFFERENCE Y X) X) 0)) (EQUAL (TIMES (QUOTIENT (DIFFERENCE Y X) X) X) (FIX (DIFFERENCE Y X)))) (EQUAL (REMAINDER Y X) 0)) (EQUAL (TIMES (QUOTIENT Y X) X) (FIX Y))). This simplifies, appealing to the lemmas COMMUTATIVITY-OF-TIMES, CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS, PLUS-ZERO-ARG2, PLUS-DIFFERENCE-ARG2, and TIMES-ADD1, and unfolding the functions ZEROP, NOT, AND, FIX, IMPLIES, REMAINDER, and QUOTIENT, to the following two new conjectures: Case 1.2. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (LESSP Y X)) (EQUAL (TIMES X (QUOTIENT (DIFFERENCE Y X) X)) (DIFFERENCE Y X)) (EQUAL (REMAINDER (DIFFERENCE Y X) X) 0) (NOT (LESSP X Y))) (EQUAL X Y)). However this again simplifies, using linear arithmetic, to the formula: (IMPLIES (AND (NOT (NUMBERP Y)) (NOT (EQUAL X 0)) (NUMBERP X) (NOT (LESSP Y X)) (EQUAL (TIMES X (QUOTIENT (DIFFERENCE Y X) X)) (DIFFERENCE Y X)) (EQUAL (REMAINDER (DIFFERENCE Y X) X) 0) (NOT (LESSP X Y))) (EQUAL X Y)). This again simplifies, expanding the definition of LESSP, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (LESSP Y X)) (EQUAL (TIMES X (QUOTIENT (DIFFERENCE Y X) X)) (DIFFERENCE Y X)) (EQUAL (REMAINDER (DIFFERENCE Y X) X) 0) (NOT (NUMBERP Y))) (LESSP X Y)), which again simplifies, opening up the definition of LESSP, to: T. Q.E.D. [ 0.0 0.1 0.0 ] TIMES-QUOTIENT-PROOF (PROVE-LEMMA TIMES-QUOTIENT (REWRITE) (IMPLIES (AND (NOT (ZEROP Y)) (EQUAL (REMAINDER X Y) 0)) (AND (EQUAL (TIMES (QUOTIENT X Y) Y) (FIX X)) (EQUAL (TIMES Y (QUOTIENT X Y)) (FIX X)))) ((USE (TIMES-QUOTIENT-PROOF (X Y) (Y X))) (ENABLE COMMUTATIVITY-OF-TIMES))) WARNING: the previously added lemma, COMMUTATIVITY-OF-TIMES, could be applied whenever the newly proposed TIMES-QUOTIENT could! WARNING: the previously added lemma, COMMUTATIVITY-OF-TIMES, could be applied whenever the newly proposed TIMES-QUOTIENT could! WARNING: Note that the proposed lemma TIMES-QUOTIENT is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This conjecture can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (IMPLIES (AND (NOT (ZEROP Y)) (EQUAL (REMAINDER X Y) 0)) (EQUAL (TIMES (QUOTIENT X Y) Y) (FIX X))) (NOT (EQUAL Y 0)) (NUMBERP Y) (EQUAL (REMAINDER X Y) 0)) (AND (EQUAL (TIMES (QUOTIENT X Y) Y) (FIX X)) (EQUAL (TIMES Y (QUOTIENT X Y)) (FIX X)))). This simplifies, rewriting with COMMUTATIVITY-OF-TIMES, and opening up the definitions of ZEROP, NOT, EQUAL, AND, FIX, IMPLIES, LESSP, REMAINDER, QUOTIENT, and TIMES, to: T. Q.E.D. [ 0.0 0.0 0.0 ] TIMES-QUOTIENT (PROVE-LEMMA TIMES-1-ARG1 (REWRITE) (EQUAL (TIMES 1 X) (FIX X)) ((ENABLE TIMES-ZERO))) WARNING: the previously added lemma, COMMUTATIVITY-OF-TIMES, could be applied whenever the newly proposed TIMES-1-ARG1 could! This simplifies, rewriting with PLUS-ZERO-ARG2 and EQUAL-TIMES-0, and unfolding ZEROP, SUB1, NUMBERP, EQUAL, TIMES, and FIX, to: T. Q.E.D. [ 0.0 0.0 0.0 ] TIMES-1-ARG1 (PROVE-LEMMA LESSP-TIMES1-PROOF NIL (IMPLIES (AND (LESSP A B) (NOT (ZEROP C))) (EQUAL (LESSP A (TIMES B C)) T))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to the goal: (IMPLIES (AND (LESSP A B) (NOT (EQUAL C 0)) (NUMBERP C)) (EQUAL (LESSP A (TIMES B C)) T)). This simplifies, obviously, to: (IMPLIES (AND (LESSP A B) (NOT (EQUAL C 0)) (NUMBERP C)) (LESSP A (TIMES B C))), which we will name *1. Perhaps we can prove it by induction. There are four plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (OR (EQUAL B 0) (NOT (NUMBERP B))) (p A B C)) (IMPLIES (AND (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (OR (EQUAL A 0) (NOT (NUMBERP A)))) (p A B C)) (IMPLIES (AND (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (p (SUB1 A) (SUB1 B) C)) (p A B C))). Linear arithmetic, the lemmas SUB1-LESSEQP and SUB1-LESSP, and the definitions of OR and NOT can be used to show that the measure (COUNT A) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for B. The above induction scheme generates four new formulas: Case 4. (IMPLIES (AND (OR (EQUAL B 0) (NOT (NUMBERP B))) (LESSP A B) (NOT (EQUAL C 0)) (NUMBERP C)) (LESSP A (TIMES B C))), which simplifies, opening up NOT, OR, EQUAL, and LESSP, to: T. Case 3. (IMPLIES (AND (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (OR (EQUAL A 0) (NOT (NUMBERP A))) (LESSP A B) (NOT (EQUAL C 0)) (NUMBERP C)) (LESSP A (TIMES B C))), which simplifies, applying EQUAL-PLUS-0, and unfolding NOT, OR, EQUAL, LESSP, and TIMES, to: T. Case 2. (IMPLIES (AND (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (NOT (LESSP (SUB1 A) (SUB1 B))) (LESSP A B) (NOT (EQUAL C 0)) (NUMBERP C)) (LESSP A (TIMES B C))). This simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP A 1) (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (NOT (LESSP (SUB1 A) (SUB1 B))) (LESSP A B) (NOT (EQUAL C 0)) (NUMBERP C)) (LESSP A (TIMES B C))), which again simplifies, opening up the definitions of SUB1, NUMBERP, EQUAL, LESSP, NOT, and OR, to: T. Case 1. (IMPLIES (AND (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (LESSP (SUB1 A) (TIMES (SUB1 B) C)) (LESSP A B) (NOT (EQUAL C 0)) (NUMBERP C)) (LESSP A (TIMES B C))), which simplifies, opening up NOT, OR, LESSP, and TIMES, to: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP (SUB1 A) (TIMES (SUB1 B) C)) (LESSP (SUB1 A) (SUB1 B)) (NOT (EQUAL C 0)) (NUMBERP C)) (LESSP A (PLUS C (TIMES (SUB1 B) C)))). But this again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-TIMES1-PROOF (PROVE-LEMMA LESSP-TIMES1 (REWRITE) (IMPLIES (AND (LESSP A B) (NOT (ZEROP C))) (AND (EQUAL (LESSP A (TIMES B C)) T) (EQUAL (LESSP A (TIMES C B)) T))) ((ENABLE COMMUTATIVITY-OF-TIMES) (USE (LESSP-TIMES1-PROOF (A A) (B B) (C C))) (DO-NOT-INDUCT T))) WARNING: Note that the proposed lemma LESSP-TIMES1 is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This conjecture can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (IMPLIES (AND (LESSP A B) (NOT (ZEROP C))) (EQUAL (LESSP A (TIMES B C)) T)) (LESSP A B) (NOT (EQUAL C 0)) (NUMBERP C)) (AND (EQUAL (LESSP A (TIMES B C)) T) (EQUAL (LESSP A (TIMES C B)) T))). This simplifies, appealing to the lemma COMMUTATIVITY-OF-TIMES, and expanding ZEROP, NOT, AND, IMPLIES, and EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-TIMES1 (PROVE-LEMMA LESSP-TIMES2-PROOF NIL (IMPLIES (AND (LEQ A B) (NOT (ZEROP C))) (EQUAL (LESSP (TIMES B C) A) F))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (NOT (LESSP B A)) (NOT (EQUAL C 0)) (NUMBERP C)) (EQUAL (LESSP (TIMES B C) A) F)). This simplifies, clearly, to the new formula: (IMPLIES (AND (NOT (LESSP B A)) (NOT (EQUAL C 0)) (NUMBERP C)) (NOT (LESSP (TIMES B C) A))), which we will name *1. Perhaps we can prove it by induction. Four inductions are suggested by terms in the conjecture. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (OR (EQUAL A 0) (NOT (NUMBERP A))) (p B C A)) (IMPLIES (AND (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (OR (EQUAL B 0) (NOT (NUMBERP B)))) (p B C A)) (IMPLIES (AND (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (p (SUB1 B) C (SUB1 A))) (p B C A))). Linear arithmetic, the lemmas SUB1-LESSEQP and SUB1-LESSP, and the definitions of OR and NOT inform us that the measure (COUNT B) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for A. The above induction scheme generates the following four new conjectures: Case 4. (IMPLIES (AND (OR (EQUAL A 0) (NOT (NUMBERP A))) (NOT (LESSP B A)) (NOT (EQUAL C 0)) (NUMBERP C)) (NOT (LESSP (TIMES B C) A))). This simplifies, unfolding the definitions of NOT, OR, EQUAL, LESSP, and TIMES, to: T. Case 3. (IMPLIES (AND (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (OR (EQUAL B 0) (NOT (NUMBERP B))) (NOT (LESSP B A)) (NOT (EQUAL C 0)) (NUMBERP C)) (NOT (LESSP (TIMES B C) A))). This simplifies, expanding the functions NOT, OR, EQUAL, and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (LESSP (SUB1 B) (SUB1 A)) (NOT (LESSP B A)) (NOT (EQUAL C 0)) (NUMBERP C)) (NOT (LESSP (TIMES B C) A))). This simplifies, using linear arithmetic, to the new goal: (IMPLIES (AND (LESSP A 1) (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (LESSP (SUB1 B) (SUB1 A)) (NOT (LESSP B A)) (NOT (EQUAL C 0)) (NUMBERP C)) (NOT (LESSP (TIMES B C) A))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (NOT (LESSP (TIMES (SUB1 B) C) (SUB1 A))) (NOT (LESSP B A)) (NOT (EQUAL C 0)) (NUMBERP C)) (NOT (LESSP (TIMES B C) A))), which simplifies, unfolding the definitions of NOT, OR, LESSP, and TIMES, to: (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (TIMES (SUB1 B) C) (SUB1 A))) (NOT (LESSP (SUB1 B) (SUB1 A))) (NOT (EQUAL C 0)) (NUMBERP C)) (NOT (LESSP (PLUS C (TIMES (SUB1 B) C)) A))). However this again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-TIMES2-PROOF (PROVE-LEMMA LESSP-TIMES2 (REWRITE) (IMPLIES (AND (LEQ A B) (NOT (ZEROP C))) (AND (EQUAL (LESSP (TIMES B C) A) F) (EQUAL (LESSP (TIMES C B) A) F))) ((ENABLE COMMUTATIVITY-OF-TIMES) (USE (LESSP-TIMES2-PROOF (A A) (B B) (C C))) (DO-NOT-INDUCT T))) WARNING: Note that the proposed lemma LESSP-TIMES2 is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This conjecture can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (IMPLIES (AND (IF (LESSP B A) F T) (NOT (ZEROP C))) (EQUAL (LESSP (TIMES B C) A) F)) (NOT (LESSP B A)) (NOT (EQUAL C 0)) (NUMBERP C)) (AND (EQUAL (LESSP (TIMES B C) A) F) (EQUAL (LESSP (TIMES C B) A) F))). This simplifies, rewriting with COMMUTATIVITY-OF-TIMES, and expanding the functions ZEROP, NOT, AND, IMPLIES, and EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-TIMES2 (PROVE-LEMMA LESSP-TIMES3-PROOF1 NIL (IMPLIES (AND (NOT (ZEROP A)) (LESSP 1 B)) (LESSP A (TIMES A B))) ((ENABLE TIMES-ZERO))) This formula can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (LESSP 1 B)) (LESSP A (TIMES A B))), which we will name *1. Perhaps we can prove it by induction. The recursive terms in the conjecture suggest three inductions. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (OR (EQUAL (TIMES A B) 0) (NOT (NUMBERP (TIMES A B)))) (p A B)) (IMPLIES (AND (NOT (OR (EQUAL (TIMES A B) 0) (NOT (NUMBERP (TIMES A B))))) (OR (EQUAL A 0) (NOT (NUMBERP A)))) (p A B)) (IMPLIES (AND (NOT (OR (EQUAL (TIMES A B) 0) (NOT (NUMBERP (TIMES A B))))) (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (p (SUB1 A) B)) (p A B))). Linear arithmetic, the lemmas SUB1-LESSEQP and SUB1-LESSP, and the definitions of OR and NOT establish that the measure (COUNT A) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme produces the following four new goals: Case 4. (IMPLIES (AND (OR (EQUAL (TIMES A B) 0) (NOT (NUMBERP (TIMES A B)))) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP 1 B)) (LESSP A (TIMES A B))). This simplifies, applying EQUAL-SUB1-0, EQUAL-TIMES-0, and EQUAL-PLUS-0, and opening up the definitions of TIMES, EQUAL, NOT, OR, and LESSP, to: T. Case 3. (IMPLIES (AND (NOT (OR (EQUAL (TIMES A B) 0) (NOT (NUMBERP (TIMES A B))))) (OR (EQUAL A 0) (NOT (NUMBERP A))) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP 1 B)) (LESSP A (TIMES A B))), which simplifies, rewriting with EQUAL-SUB1-0, EQUAL-TIMES-0, and EQUAL-PLUS-0, and expanding the functions TIMES, EQUAL, NOT, and OR, to: T. Case 2. (IMPLIES (AND (NOT (OR (EQUAL (TIMES A B) 0) (NOT (NUMBERP (TIMES A B))))) (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (EQUAL (SUB1 A) 0) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP 1 B)) (LESSP A (TIMES A B))). This simplifies, applying EQUAL-TIMES-0, PLUS-ZERO-ARG2, EQUAL-SUB1-0, and TIMES-1-ARG1, and unfolding the definitions of TIMES, ZEROP, EQUAL, NOT, OR, and NUMBERP, to: T. Case 1. (IMPLIES (AND (NOT (OR (EQUAL (TIMES A B) 0) (NOT (NUMBERP (TIMES A B))))) (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (LESSP (SUB1 A) (TIMES (SUB1 A) B)) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP 1 B)) (LESSP A (TIMES A B))), which simplifies, rewriting with the lemmas EQUAL-SUB1-0, EQUAL-TIMES-0, and EQUAL-PLUS-0, and opening up the functions TIMES, EQUAL, NOT, and OR, to the goal: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (LESSP (SUB1 A) (TIMES (SUB1 A) B)) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP 1 B)) (LESSP A (PLUS B (TIMES (SUB1 A) B)))). But this again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-TIMES3-PROOF1 (PROVE-LEMMA LESSP-TIMES3-PROOF2 NIL (IMPLIES (LESSP A (TIMES A B)) (AND (NOT (ZEROP A)) (LESSP 1 B)))) This simplifies, unfolding the functions ZEROP, NOT, and AND, to the following three new formulas: Case 3. (IMPLIES (LESSP A (TIMES A B)) (NOT (EQUAL A 0))). But this again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (LESSP A (TIMES A B)) (NUMBERP A)), which again simplifies, expanding the definitions of TIMES, EQUAL, and LESSP, to: T. Case 1. (IMPLIES (LESSP A (TIMES A B)) (LESSP 1 B)), which we will name *1. We will appeal to induction. There are three plausible inductions. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (OR (EQUAL (TIMES A B) 0) (NOT (NUMBERP (TIMES A B)))) (p B A)) (IMPLIES (AND (NOT (OR (EQUAL (TIMES A B) 0) (NOT (NUMBERP (TIMES A B))))) (OR (EQUAL A 0) (NOT (NUMBERP A)))) (p B A)) (IMPLIES (AND (NOT (OR (EQUAL (TIMES A B) 0) (NOT (NUMBERP (TIMES A B))))) (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (p B (SUB1 A))) (p B A))). Linear arithmetic, the lemmas SUB1-LESSEQP and SUB1-LESSP, and the definitions of OR and NOT establish that the measure (COUNT A) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme leads to the following three new goals: Case 3. (IMPLIES (AND (OR (EQUAL (TIMES A B) 0) (NOT (NUMBERP (TIMES A B)))) (LESSP A (TIMES A B))) (LESSP 1 B)). This simplifies, expanding TIMES, NOT, OR, EQUAL, and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (OR (EQUAL (TIMES A B) 0) (NOT (NUMBERP (TIMES A B))))) (OR (EQUAL A 0) (NOT (NUMBERP A))) (LESSP A (TIMES A B))) (LESSP 1 B)). This simplifies, expanding the functions TIMES, NOT, and OR, to: T. Case 1. (IMPLIES (AND (NOT (OR (EQUAL (TIMES A B) 0) (NOT (NUMBERP (TIMES A B))))) (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (NOT (LESSP (SUB1 A) (TIMES (SUB1 A) B))) (LESSP A (TIMES A B))) (LESSP 1 B)). This simplifies, opening up the functions TIMES, NOT, and OR, to: (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL (PLUS B (TIMES (SUB1 A) B)) 0)) (NOT (LESSP (SUB1 A) (TIMES (SUB1 A) B))) (LESSP A (PLUS B (TIMES (SUB1 A) B)))) (LESSP 1 B)), which again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-TIMES3-PROOF2 (PROVE-LEMMA LESSP-TIMES3 (REWRITE) (AND (EQUAL (LESSP A (TIMES A B)) (AND (NOT (ZEROP A)) (LESSP 1 B))) (EQUAL (LESSP A (TIMES B A)) (AND (NOT (ZEROP A)) (LESSP 1 B)))) ((ENABLE COMMUTATIVITY-OF-TIMES) (USE (LESSP-TIMES3-PROOF1 (A A) (B B)) (LESSP-TIMES3-PROOF2 (A A) (B B))) (DO-NOT-INDUCT T))) WARNING: Note that the proposed lemma LESSP-TIMES3 is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This simplifies, applying COMMUTATIVITY-OF-TIMES, and expanding the functions ZEROP, NOT, AND, IMPLIES, EQUAL, TIMES, and LESSP, to: T. Q.E.D. [ 0.0 0.1 0.0 ] LESSP-TIMES3 (PROVE-LEMMA LESSP-TIMES-CANCELLATION-PROOF NIL (EQUAL (LESSP (TIMES X Z) (TIMES Y Z)) (AND (NOT (ZEROP Z)) (LESSP X Y))) ((ENABLE COMMUTATIVITY-OF-TIMES CORRECTNESS-OF-CANCEL-LESSP-PLUS TIMES-ZERO))) This conjecture simplifies, unfolding the definitions of ZEROP, NOT, and AND, to three new conjectures: Case 3. (IMPLIES (NOT (NUMBERP Z)) (EQUAL (LESSP (TIMES X Z) (TIMES Y Z)) F)), which again simplifies, rewriting with TIMES-ZERO, and opening up the functions ZEROP, LESSP, and EQUAL, to: T. Case 2. (IMPLIES (EQUAL Z 0) (EQUAL (LESSP (TIMES X Z) (TIMES Y Z)) F)). However this again simplifies, rewriting with COMMUTATIVITY-OF-TIMES, and unfolding the definitions of EQUAL, TIMES, and LESSP, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z)) (EQUAL (LESSP (TIMES X Z) (TIMES Y Z)) (LESSP X Y))). Name the above subgoal *1. We will appeal to induction. Four inductions are suggested by terms in the conjecture. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP X) (p X Z Y)) (IMPLIES (AND (NOT (ZEROP X)) (p (SUB1 X) Z (SUB1 Y))) (p X Z Y))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP inform us that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for Y. The above induction scheme generates the following two new formulas: Case 2. (IMPLIES (AND (ZEROP X) (NOT (EQUAL Z 0)) (NUMBERP Z)) (EQUAL (LESSP (TIMES X Z) (TIMES Y Z)) (LESSP X Y))). This simplifies, expanding ZEROP, EQUAL, TIMES, and LESSP, to the following six new goals: Case 2.6. (IMPLIES (AND (EQUAL X 0) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (EQUAL Y 0)) (EQUAL (PLUS Z (TIMES (SUB1 Y) Z)) 0)) (EQUAL F (NUMBERP Y))). This again simplifies, using linear arithmetic, to: T. Case 2.5. (IMPLIES (AND (EQUAL X 0) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (EQUAL Y 0)) (NOT (NUMBERP Y))) (EQUAL F (NUMBERP Y))), which again simplifies, clearly, to: T. Case 2.4. (IMPLIES (AND (EQUAL X 0) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL (PLUS Z (TIMES (SUB1 Y) Z)) 0))) (EQUAL T (NUMBERP Y))). This again simplifies, obviously, to: T. Case 2.3. (IMPLIES (AND (NOT (NUMBERP X)) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (EQUAL Y 0)) (EQUAL (PLUS Z (TIMES (SUB1 Y) Z)) 0)) (EQUAL F (NUMBERP Y))). But this again simplifies, using linear arithmetic, to: T. Case 2.2. (IMPLIES (AND (NOT (NUMBERP X)) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (EQUAL Y 0)) (NOT (NUMBERP Y))) (EQUAL F (NUMBERP Y))), which again simplifies, obviously, to: T. Case 2.1. (IMPLIES (AND (NOT (NUMBERP X)) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL (PLUS Z (TIMES (SUB1 Y) Z)) 0))) (EQUAL T (NUMBERP Y))). This again simplifies, obviously, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (LESSP (TIMES (SUB1 X) Z) (TIMES (SUB1 Y) Z)) (LESSP (SUB1 X) (SUB1 Y))) (NOT (EQUAL Z 0)) (NUMBERP Z)) (EQUAL (LESSP (TIMES X Z) (TIMES Y Z)) (LESSP X Y))). This simplifies, opening up ZEROP, TIMES, and LESSP, to the following three new goals: Case 1.3. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL (LESSP (TIMES (SUB1 X) Z) (TIMES (SUB1 Y) Z)) (LESSP (SUB1 X) (SUB1 Y))) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (EQUAL Y 0)) (NUMBERP Y)) (EQUAL (LESSP (PLUS Z (TIMES (SUB1 X) Z)) (PLUS Z (TIMES (SUB1 Y) Z))) (LESSP (SUB1 X) (SUB1 Y)))). This again simplifies, applying CORRECTNESS-OF-CANCEL-LESSP-PLUS, and expanding FIX, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL (LESSP (TIMES (SUB1 X) Z) (TIMES (SUB1 Y) Z)) (LESSP (SUB1 X) (SUB1 Y))) (NOT (EQUAL Z 0)) (NUMBERP Z) (EQUAL Y 0)) (EQUAL (LESSP (PLUS Z (TIMES (SUB1 X) Z)) 0) F)). This again simplifies, using linear arithmetic, applying the lemma LESSP-TIMES2, and expanding the definitions of SUB1, EQUAL, TIMES, and LESSP, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL (LESSP (TIMES (SUB1 X) Z) (TIMES (SUB1 Y) Z)) (LESSP (SUB1 X) (SUB1 Y))) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (NUMBERP Y))) (EQUAL (LESSP (PLUS Z (TIMES (SUB1 X) Z)) 0) F)), which again simplifies, rewriting with EQUAL-SUB1-0, EQUAL-TIMES-0, and LESSP-TIMES2, and expanding LESSP and EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] LESSP-TIMES-CANCELLATION-PROOF (PROVE-LEMMA LESSP-TIMES-CANCELLATION1 (REWRITE) (AND (EQUAL (LESSP (TIMES X Z) (TIMES Y Z)) (AND (NOT (ZEROP Z)) (LESSP X Y))) (EQUAL (LESSP (TIMES Z X) (TIMES Y Z)) (AND (NOT (ZEROP Z)) (LESSP X Y))) (EQUAL (LESSP (TIMES X Z) (TIMES Z Y)) (AND (NOT (ZEROP Z)) (LESSP X Y))) (EQUAL (LESSP (TIMES Z X) (TIMES Z Y)) (AND (NOT (ZEROP Z)) (LESSP X Y)))) ((USE (LESSP-TIMES-CANCELLATION-PROOF (X X) (Y Y) (Z Z))) (ENABLE COMMUTATIVITY-OF-TIMES) (DO-NOT-INDUCT T))) WARNING: Note that the proposed lemma LESSP-TIMES-CANCELLATION1 is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and four replacement rules. This conjecture simplifies, rewriting with TIMES-ZERO and COMMUTATIVITY-OF-TIMES, and opening up the definitions of ZEROP, NOT, AND, LESSP, EQUAL, and TIMES, to: T. Q.E.D. [ 0.0 0.1 0.0 ] LESSP-TIMES-CANCELLATION1 (DISABLE LESSP-TIMES-CANCELLATION1) [ 0.0 0.0 0.0 ] LESSP-TIMES-CANCELLATION1-OFF (PROVE-LEMMA LESSP-PLUS-TIMES-PROOF NIL (IMPLIES (LESSP X A) (EQUAL (LESSP (PLUS X (TIMES A B)) (TIMES A C)) (LESSP B C))) ((ENABLE COMMUTATIVITY-OF-TIMES LESSP-TIMES-CANCELLATION1 LESSP-TIMES1 LESSP-TIMES2 LESSP-TIMES3 TIMES-ADD1 TIMES-ZERO) (INDUCT (LESSP B C)))) This conjecture can be simplified, using the abbreviations IMPLIES, NOT, OR, and AND, to three new formulas: Case 3. (IMPLIES (AND (OR (EQUAL C 0) (NOT (NUMBERP C))) (LESSP X A)) (EQUAL (LESSP (PLUS X (TIMES A B)) (TIMES A C)) (LESSP B C))), which simplifies, rewriting with COMMUTATIVITY-OF-TIMES and TIMES-ZERO, and unfolding the definitions of NOT, OR, EQUAL, TIMES, LESSP, and ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (OR (EQUAL B 0) (NOT (NUMBERP B))) (LESSP X A)) (EQUAL (LESSP (PLUS X (TIMES A B)) (TIMES A C)) (LESSP B C))). This simplifies, rewriting with COMMUTATIVITY-OF-TIMES, PLUS-ZERO-ARG2, and TIMES-ZERO, and opening up NOT, OR, EQUAL, TIMES, ZEROP, and LESSP, to four new conjectures: Case 2.4. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (EQUAL B 0) (LESSP X A) (NOT (NUMBERP X))) (LESSP 0 (TIMES A C))), which again simplifies, using linear arithmetic, applying LESSP-TIMES1, and expanding LESSP, to: T. Case 2.3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (EQUAL B 0) (LESSP X A) (NUMBERP X)) (LESSP X (TIMES A C))). But this again simplifies, rewriting with the lemma LESSP-TIMES1, to: T. Case 2.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (NUMBERP B)) (LESSP X A) (NOT (NUMBERP X))) (LESSP 0 (TIMES A C))), which again simplifies, using linear arithmetic, rewriting with LESSP-TIMES1, and opening up the definition of LESSP, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (NUMBERP B)) (LESSP X A) (NUMBERP X)) (LESSP X (TIMES A C))). But this again simplifies, applying LESSP-TIMES1, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (EQUAL B 0)) (NUMBERP B) (IMPLIES (LESSP X A) (EQUAL (LESSP (PLUS X (TIMES A (SUB1 B))) (TIMES A (SUB1 C))) (LESSP (SUB1 B) (SUB1 C)))) (LESSP X A)) (EQUAL (LESSP (PLUS X (TIMES A B)) (TIMES A C)) (LESSP B C))). This simplifies, opening up IMPLIES and LESSP, to: (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (LESSP (PLUS X (TIMES A (SUB1 B))) (TIMES A (SUB1 C))) (LESSP (SUB1 B) (SUB1 C))) (LESSP X A)) (EQUAL (LESSP (PLUS X (TIMES A B)) (TIMES A C)) (LESSP (SUB1 B) (SUB1 C)))). Applying the lemma SUB1-ELIM, replace B by (ADD1 Z) to eliminate (SUB1 B). We use the type restriction lemma noted when SUB1 was introduced to restrict the new variable. This produces: (IMPLIES (AND (NUMBERP Z) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (EQUAL (ADD1 Z) 0)) (EQUAL (LESSP (PLUS X (TIMES A Z)) (TIMES A (SUB1 C))) (LESSP Z (SUB1 C))) (LESSP X A)) (EQUAL (LESSP (PLUS X (TIMES A (ADD1 Z))) (TIMES A C)) (LESSP Z (SUB1 C)))), which further simplifies, rewriting with the lemmas TIMES-ADD1 and COMMUTATIVITY2-OF-PLUS, to the conjecture: (IMPLIES (AND (NUMBERP Z) (NOT (EQUAL C 0)) (NUMBERP C) (EQUAL (LESSP (PLUS X (TIMES A Z)) (TIMES A (SUB1 C))) (LESSP Z (SUB1 C))) (LESSP X A)) (EQUAL (LESSP (PLUS A X (TIMES A Z)) (TIMES A C)) (LESSP Z (SUB1 C)))). Appealing to the lemma SUB1-ELIM, we now replace C by (ADD1 V) to eliminate (SUB1 C). We use the type restriction lemma noted when SUB1 was introduced to constrain the new variable. The result is: (IMPLIES (AND (NUMBERP V) (NUMBERP Z) (NOT (EQUAL (ADD1 V) 0)) (EQUAL (LESSP (PLUS X (TIMES A Z)) (TIMES A V)) (LESSP Z V)) (LESSP X A)) (EQUAL (LESSP (PLUS A X (TIMES A Z)) (TIMES A (ADD1 V))) (LESSP Z V))). However this further simplifies, applying TIMES-ADD1 and CORRECTNESS-OF-CANCEL-LESSP-PLUS, and expanding the definition of FIX, to: T. Q.E.D. [ 0.0 0.2 0.3 ] LESSP-PLUS-TIMES-PROOF (PROVE-LEMMA LESSP-PLUS-TIMES1 (REWRITE) (AND (EQUAL (LESSP (PLUS A (TIMES B C)) B) (AND (LESSP A B) (ZEROP C))) (EQUAL (LESSP (PLUS A (TIMES C B)) B) (AND (LESSP A B) (ZEROP C))) (EQUAL (LESSP (PLUS (TIMES C B) A) B) (AND (LESSP A B) (ZEROP C))) (EQUAL (LESSP (PLUS (TIMES B C) A) B) (AND (LESSP A B) (ZEROP C)))) ((USE (LESSP-PLUS-TIMES-PROOF (A B) (B C) (C 1) (X A))) (ENABLE COMMUTATIVITY-OF-PLUS COMMUTATIVITY-OF-TIMES TIMES-1-ARG1) (DO-NOT-INDUCT T))) WARNING: Note that the proposed lemma LESSP-PLUS-TIMES1 is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and four replacement rules. This formula simplifies, applying TIMES-1-ARG1, COMMUTATIVITY-OF-TIMES, COMMUTATIVITY-OF-PLUS, and PLUS-ZERO-ARG2, and unfolding IMPLIES, ZEROP, AND, TIMES, LESSP, EQUAL, and PLUS, to five new goals: Case 5. (IMPLIES (NOT (LESSP A B)) (NOT (LESSP (PLUS A (TIMES B C)) B))), which again simplifies, using linear arithmetic, to: T. Case 4. (IMPLIES (AND (NUMBERP B) (EQUAL (LESSP (PLUS A (TIMES B C)) B) (LESSP C 1)) (NOT (EQUAL C 0)) (NUMBERP C)) (EQUAL (LESSP C 1) F)), which again simplifies, obviously, to: (IMPLIES (AND (NUMBERP B) (LESSP (PLUS A (TIMES B C)) B) (NOT (EQUAL C 0)) (NUMBERP C)) (NOT (LESSP C 1))), which again simplifies, using linear arithmetic, to: T. Case 3. (IMPLIES (AND (NUMBERP B) (EQUAL (LESSP (PLUS A (TIMES B C)) B) (LESSP C 1)) (NOT (LESSP A B))) (EQUAL (LESSP C 1) F)), which again simplifies, trivially, to the new conjecture: (IMPLIES (AND (NUMBERP B) (LESSP (PLUS A (TIMES B C)) B) (NOT (LESSP A B))) (NOT (LESSP C 1))), which again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (NUMBERP B) (EQUAL (LESSP (PLUS A (TIMES B C)) B) (LESSP C 1)) (LESSP A B) (NOT (NUMBERP C))) (EQUAL (LESSP C 1) T)), which again simplifies, rewriting with TIMES-ZERO and PLUS-ZERO-ARG2, and opening up the functions ZEROP, NUMBERP, EQUAL, and LESSP, to: T. Case 1. (IMPLIES (AND (NUMBERP B) (EQUAL (LESSP (PLUS A (TIMES B C)) B) (LESSP C 1)) (LESSP A B) (EQUAL C 0)) (EQUAL (LESSP C 1) T)). This again simplifies, rewriting with the lemmas COMMUTATIVITY-OF-TIMES and PLUS-ZERO-ARG2, and opening up the functions EQUAL, TIMES, ZEROP, and LESSP, to: T. Q.E.D. [ 0.0 0.1 0.0 ] LESSP-PLUS-TIMES1 (PROVE-LEMMA LESSP-PLUS-TIMES2 (REWRITE) (IMPLIES (AND (NOT (ZEROP A)) (LESSP X A)) (AND (EQUAL (LESSP (PLUS X (TIMES A B)) (TIMES A C)) (LESSP B C)) (EQUAL (LESSP (PLUS X (TIMES B A)) (TIMES A C)) (LESSP B C)) (EQUAL (LESSP (PLUS X (TIMES A B)) (TIMES C A)) (LESSP B C)) (EQUAL (LESSP (PLUS X (TIMES B A)) (TIMES C A)) (LESSP B C)) (EQUAL (LESSP (PLUS (TIMES A B) X) (TIMES A C)) (LESSP B C)) (EQUAL (LESSP (PLUS (TIMES B A) X) (TIMES A C)) (LESSP B C)) (EQUAL (LESSP (PLUS (TIMES A B) X) (TIMES C A)) (LESSP B C)) (EQUAL (LESSP (PLUS (TIMES B A) X) (TIMES C A)) (LESSP B C)))) ((ENABLE COMMUTATIVITY-OF-PLUS COMMUTATIVITY-OF-TIMES) (USE (LESSP-PLUS-TIMES-PROOF (A A) (B B) (C C) (X X))) (DO-NOT-INDUCT T))) WARNING: Note that the proposed lemma LESSP-PLUS-TIMES2 is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and eight replacement rules. This conjecture can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (IMPLIES (LESSP X A) (EQUAL (LESSP (PLUS X (TIMES A B)) (TIMES A C)) (LESSP B C))) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP X A)) (AND (EQUAL (LESSP (PLUS X (TIMES A B)) (TIMES A C)) (LESSP B C)) (EQUAL (LESSP (PLUS X (TIMES B A)) (TIMES A C)) (LESSP B C)) (EQUAL (LESSP (PLUS X (TIMES A B)) (TIMES C A)) (LESSP B C)) (EQUAL (LESSP (PLUS X (TIMES B A)) (TIMES C A)) (LESSP B C)) (EQUAL (LESSP (PLUS (TIMES A B) X) (TIMES A C)) (LESSP B C)) (EQUAL (LESSP (PLUS (TIMES B A) X) (TIMES A C)) (LESSP B C)) (EQUAL (LESSP (PLUS (TIMES A B) X) (TIMES C A)) (LESSP B C)) (EQUAL (LESSP (PLUS (TIMES B A) X) (TIMES C A)) (LESSP B C)))). This simplifies, applying COMMUTATIVITY-OF-TIMES and COMMUTATIVITY-OF-PLUS, and expanding IMPLIES and AND, to: T. Q.E.D. [ 0.0 0.1 0.0 ] LESSP-PLUS-TIMES2 (PROVE-LEMMA LESSP-1-TIMES (REWRITE) (EQUAL (LESSP 1 (TIMES A B)) (NOT (OR (ZEROP A) (ZEROP B) (AND (EQUAL A 1) (EQUAL B 1)))))) This conjecture simplifies, opening up ZEROP, AND, OR, and NOT, to seven new goals: Case 7. (IMPLIES (EQUAL B 0) (EQUAL (LESSP 1 (TIMES A B)) F)), which again simplifies, appealing to the lemma COMMUTATIVITY-OF-TIMES, and unfolding the definitions of EQUAL, TIMES, and LESSP, to: T. Case 6. (IMPLIES (NOT (NUMBERP B)) (EQUAL (LESSP 1 (TIMES A B)) F)), which again simplifies, rewriting with TIMES-ZERO, and opening up ZEROP, LESSP, and EQUAL, to: T. Case 5. (IMPLIES (AND (EQUAL A 1) (EQUAL B 1)) (EQUAL (LESSP 1 (TIMES A B)) F)). But this again simplifies, unfolding the functions TIMES, LESSP, and EQUAL, to: T. Case 4. (IMPLIES (NOT (NUMBERP A)) (EQUAL (LESSP 1 (TIMES A B)) F)), which again simplifies, unfolding the definitions of TIMES, LESSP, and EQUAL, to: T. Case 3. (IMPLIES (EQUAL A 0) (EQUAL (LESSP 1 (TIMES A B)) F)), which again simplifies, expanding the functions EQUAL, TIMES, and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL A 1))) (EQUAL (LESSP 1 (TIMES A B)) T)), which again simplifies, using linear arithmetic, applying LESSP-TIMES1, and opening up the definition of EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL B 1))) (EQUAL (LESSP 1 (TIMES A B)) T)). But this again simplifies, using linear arithmetic, rewriting with LESSP-TIMES1, and unfolding the definition of EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-1-TIMES (DEFN TIMES-TREE (X) (IF (NLISTP X) ''1 (IF (NLISTP (CDR X)) (LIST 'FIX (CAR X)) (IF (NLISTP (CDDR X)) (LIST 'TIMES (CAR X) (CADR X)) (LIST 'TIMES (CAR X) (TIMES-TREE (CDR X))))))) Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP inform us that the measure (COUNT X) decreases according to the well-founded relation LESSP in each recursive call. Hence, TIMES-TREE is accepted under the principle of definition. Note that (LISTP (TIMES-TREE X)) is a theorem. [ 0.0 0.0 0.0 ] TIMES-TREE (DEFN TIMES-FRINGE (X) (IF (AND (LISTP X) (EQUAL (CAR X) 'TIMES)) (APPEND (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))) (CONS X NIL))) Linear arithmetic, the lemmas CAR-LESSEQP, CDR-LESSEQP, and CDR-LESSP, and the definition of AND establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each recursive call. Hence, TIMES-FRINGE is accepted under the principle of definition. Note that (LISTP (TIMES-FRINGE X)) is a theorem. [ 0.0 0.0 0.0 ] TIMES-FRINGE (DEFN OR-ZEROP-TREE (X) (IF (NLISTP X) '(FALSE) (IF (NLISTP (CDR X)) (LIST 'ZEROP (CAR X)) (IF (NLISTP (CDDR X)) (LIST 'OR (LIST 'ZEROP (CAR X)) (LIST 'ZEROP (CADR X))) (LIST 'OR (LIST 'ZEROP (CAR X)) (OR-ZEROP-TREE (CDR X))))))) Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP can be used to establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each recursive call. Hence, OR-ZEROP-TREE is accepted under the principle of definition. From the definition we can conclude that (LISTP (OR-ZEROP-TREE X)) is a theorem. [ 0.0 0.0 0.0 ] OR-ZEROP-TREE (DEFN AND-NOT-ZEROP-TREE (X) (IF (NLISTP X) '(TRUE) (IF (NLISTP (CDR X)) (LIST 'NOT (LIST 'ZEROP (CAR X))) (LIST 'AND (LIST 'NOT (LIST 'ZEROP (CAR X))) (AND-NOT-ZEROP-TREE (CDR X)))))) Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP inform us that the measure (COUNT X) decreases according to the well-founded relation LESSP in each recursive call. Hence, AND-NOT-ZEROP-TREE is accepted under the principle of definition. Note that: (LISTP (AND-NOT-ZEROP-TREE X)) is a theorem. [ 0.0 0.0 0.0 ] AND-NOT-ZEROP-TREE (PROVE-LEMMA NUMBERP-EVAL$-TIMES (REWRITE) (IMPLIES (EQUAL (CAR X) 'TIMES) (NUMBERP (EVAL$ T X A)))) . Appealing to the lemma CAR-CDR-ELIM, we now replace X by (CONS Z V) to eliminate (CAR X) and (CDR X). This generates two new conjectures: Case 2. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CAR X) 'TIMES)) (NUMBERP (EVAL$ T X A))), which simplifies, applying CAR-NLISTP, and unfolding the function EQUAL, to: T. Case 1. (IMPLIES (EQUAL Z 'TIMES) (NUMBERP (EVAL$ T (CONS Z V) A))). However this simplifies, applying REWRITE-EVAL$, to: T. Q.E.D. [ 0.0 0.0 0.0 ] NUMBERP-EVAL$-TIMES (DISABLE NUMBERP-EVAL$-TIMES) [ 0.0 0.0 0.0 ] NUMBERP-EVAL$-TIMES-OFF (PROVE-LEMMA EVAL$-TIMES (REWRITE) (IMPLIES (EQUAL (CAR X) 'TIMES) (EQUAL (EVAL$ T X A) (TIMES (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A))))) . Appealing to the lemma CAR-CDR-ELIM, we now replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), and D by (CONS V C) to eliminate (CAR D) and (CDR D). This generates four new formulas: Case 4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CAR X) 'TIMES)) (EQUAL (EVAL$ T X A) (TIMES (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)))), which simplifies, rewriting with CAR-NLISTP, and opening up the definition of EQUAL, to: T. Case 3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'TIMES)) (EQUAL (EVAL$ T (CONS Z V) A) (TIMES (EVAL$ T (CAR V) A) (EVAL$ T (CADR V) A)))). However this simplifies, applying REWRITE-EVAL$, CAR-NLISTP, and CDR-NLISTP, and expanding the definitions of LISTP, LITATOM, EQUAL, EVAL$, CAR, and TIMES, to: T. Case 2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'TIMES)) (EQUAL (EVAL$ T (CONS Z (CONS W D)) A) (TIMES (EVAL$ T W A) (EVAL$ T (CAR D) A)))). This simplifies, applying REWRITE-EVAL$, CAR-CONS, CDR-CONS, CAR-NLISTP, and COMMUTATIVITY-OF-TIMES, and expanding the definitions of LISTP, LITATOM, EQUAL, EVAL$, and TIMES, to: T. Case 1. (IMPLIES (EQUAL Z 'TIMES) (EQUAL (EVAL$ T (CONS Z (CONS W (CONS V C))) A) (TIMES (EVAL$ T W A) (EVAL$ T V A)))). This simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-CONS, CDR-CONS, and COMMUTATIVITY-OF-TIMES, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EVAL$-TIMES (DISABLE EVAL$-TIMES) [ 0.0 0.0 0.0 ] EVAL$-TIMES-OFF (PROVE-LEMMA EVAL$-OR (REWRITE) (IMPLIES (EQUAL (CAR X) 'OR) (EQUAL (EVAL$ T X A) (OR (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A))))) This conjecture simplifies, opening up the function OR, to three new formulas: Case 3. (IMPLIES (AND (EQUAL (CAR X) 'OR) (EVAL$ T (CADR X) A)) (EQUAL (EVAL$ T X A) T)). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X) and V by (CONS W D) to eliminate (CAR V) and (CDR V). This produces the following three new conjectures: Case 3.3. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CAR X) 'OR) (EVAL$ T (CADR X) A)) (EQUAL (EVAL$ T X A) T)). However this further simplifies, applying CAR-NLISTP, and expanding the definition of EQUAL, to: T. Case 3.2. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'OR) (EVAL$ T (CAR V) A)) (EQUAL (EVAL$ T (CONS Z V) A) T)). This further simplifies, applying CAR-NLISTP, REWRITE-EVAL$, and CDR-NLISTP, and expanding the definitions of LISTP, LITATOM, EQUAL, EVAL$, CAR, and OR, to: T. Case 3.1. (IMPLIES (AND (EQUAL Z 'OR) (EVAL$ T W A)) (EQUAL (EVAL$ T (CONS Z (CONS W D)) A) T)). This further simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and opening up the definitions of OR and EQUAL, to: T. Case 2. (IMPLIES (AND (EQUAL (CAR X) 'OR) (EVAL$ T (CADDR X) A)) (EQUAL (EVAL$ T X A) T)). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS D W) to eliminate (CDR V) and (CAR V), and W by (CONS V C) to eliminate (CAR W) and (CDR W). We would thus like to prove the following four new goals: Case 2.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CAR X) 'OR) (EVAL$ T (CADDR X) A)) (EQUAL (EVAL$ T X A) T)). However this further simplifies, appealing to the lemma CAR-NLISTP, and expanding the definition of EQUAL, to: T. Case 2.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'OR) (EVAL$ T (CADR V) A)) (EQUAL (EVAL$ T (CONS Z V) A) T)), which further simplifies, rewriting with CDR-NLISTP, REWRITE-EVAL$, and CAR-NLISTP, and unfolding CAR, LISTP, LITATOM, EQUAL, EVAL$, and OR, to: T. Case 2.2. (IMPLIES (AND (NOT (LISTP W)) (EQUAL Z 'OR) (EVAL$ T (CAR W) A)) (EQUAL (EVAL$ T (CONS Z (CONS D W)) A) T)). However this further simplifies, rewriting with CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and unfolding the definitions of LISTP, LITATOM, EQUAL, EVAL$, and OR, to: T. Case 2.1. (IMPLIES (AND (EQUAL Z 'OR) (EVAL$ T V A)) (EQUAL (EVAL$ T (CONS Z (CONS D (CONS V C))) A) T)). But this further simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and unfolding the definitions of OR and EQUAL, to: T. Case 1. (IMPLIES (AND (EQUAL (CAR X) 'OR) (NOT (EVAL$ T (CADR X) A)) (NOT (EVAL$ T (CADDR X) A))) (EQUAL (EVAL$ T X A) F)). This again simplifies, obviously, to: (IMPLIES (AND (EQUAL (CAR X) 'OR) (NOT (EVAL$ T (CADR X) A)) (NOT (EVAL$ T (CADDR X) A))) (NOT (EVAL$ T X A))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), and D by (CONS V C) to eliminate (CAR D) and (CDR D). This produces the following four new conjectures: Case 1.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CAR X) 'OR) (NOT (EVAL$ T (CADR X) A)) (NOT (EVAL$ T (CADDR X) A))) (NOT (EVAL$ T X A))). But this further simplifies, applying CAR-NLISTP, and expanding EQUAL, to: T. Case 1.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'OR) (NOT (EVAL$ T (CAR V) A)) (NOT (EVAL$ T (CADR V) A))) (NOT (EVAL$ T (CONS Z V) A))). This further simplifies, appealing to the lemma CAR-NLISTP, and unfolding the definitions of LISTP, LITATOM, EQUAL, and EVAL$, to: T. Case 1.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'OR) (NOT (EVAL$ T W A)) (NOT (EVAL$ T (CAR D) A))) (NOT (EVAL$ T (CONS Z (CONS W D)) A))), which further simplifies, rewriting with CAR-NLISTP, and expanding the definitions of LISTP, LITATOM, EQUAL, and EVAL$, to: T. Case 1.1. (IMPLIES (AND (EQUAL Z 'OR) (NOT (EVAL$ T W A)) (NOT (EVAL$ T V A))) (NOT (EVAL$ T (CONS Z (CONS W (CONS V C))) A))). But this further simplifies, applying the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and unfolding OR, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EVAL$-OR (DISABLE EVAL$-OR) [ 0.0 0.0 0.0 ] EVAL$-OR-OFF (PROVE-LEMMA EVAL$-EQUAL (REWRITE) (IMPLIES (EQUAL (CAR X) 'EQUAL) (EQUAL (EVAL$ T X A) (EQUAL (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A))))) This conjecture simplifies, trivially, to the following two new goals: Case 2. (IMPLIES (AND (EQUAL (CAR X) 'EQUAL) (NOT (EQUAL (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)))) (NOT (EVAL$ T X A))). Appealing to the lemma CAR-CDR-ELIM, we now replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), and D by (CONS V C) to eliminate (CAR D) and (CDR D). We must thus prove four new goals: Case 2.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CAR X) 'EQUAL) (NOT (EQUAL (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)))) (NOT (EVAL$ T X A))), which further simplifies, rewriting with CAR-NLISTP, and opening up the definition of EQUAL, to: T. Case 2.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'EQUAL) (NOT (EQUAL (EVAL$ T (CAR V) A) (EVAL$ T (CADR V) A)))) (NOT (EVAL$ T (CONS Z V) A))). This further simplifies, applying CAR-NLISTP and CDR-NLISTP, and expanding the definitions of LISTP, LITATOM, EQUAL, EVAL$, and CAR, to: T. Case 2.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'EQUAL) (NOT (EQUAL (EVAL$ T W A) (EVAL$ T (CAR D) A)))) (NOT (EVAL$ T (CONS Z (CONS W D)) A))). This further simplifies, applying CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and opening up the functions LISTP, LITATOM, EQUAL, and EVAL$, to: T. Case 2.1. (IMPLIES (AND (EQUAL Z 'EQUAL) (NOT (EQUAL (EVAL$ T W A) (EVAL$ T V A)))) (NOT (EVAL$ T (CONS Z (CONS W (CONS V C))) A))). But this further simplifies, applying the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Case 1. (IMPLIES (AND (EQUAL (CAR X) 'EQUAL) (EQUAL (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A))) (EQUAL (EVAL$ T X A) T)). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), and D by (CONS V C) to eliminate (CAR D) and (CDR D). We thus obtain the following four new formulas: Case 1.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CAR X) 'EQUAL) (EQUAL (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A))) (EQUAL (EVAL$ T X A) T)). But this further simplifies, applying CAR-NLISTP, and expanding EQUAL, to: T. Case 1.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'EQUAL) (EQUAL (EVAL$ T (CAR V) A) (EVAL$ T (CADR V) A))) (EQUAL (EVAL$ T (CONS Z V) A) T)). However this further simplifies, rewriting with CAR-NLISTP, CDR-NLISTP, and REWRITE-EVAL$, and expanding LISTP, LITATOM, EQUAL, EVAL$, and CAR, to: T. Case 1.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'EQUAL) (EQUAL (EVAL$ T W A) (EVAL$ T (CAR D) A))) (EQUAL (EVAL$ T (CONS Z (CONS W D)) A) T)). However this further simplifies, applying CAR-NLISTP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and expanding the functions LISTP, LITATOM, EQUAL, and EVAL$, to: T. Case 1.1. (IMPLIES (AND (EQUAL Z 'EQUAL) (EQUAL (EVAL$ T W A) (EVAL$ T V A))) (EQUAL (EVAL$ T (CONS Z (CONS W (CONS V C))) A) T)). However this further simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and unfolding the definition of EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EVAL$-EQUAL (DISABLE EVAL$-EQUAL) [ 0.0 0.0 0.0 ] EVAL$-EQUAL-OFF (PROVE-LEMMA EVAL$-LESSP (REWRITE) (IMPLIES (EQUAL (CAR X) 'LESSP) (EQUAL (EVAL$ T X A) (LESSP (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A))))) . Appealing to the lemma CAR-CDR-ELIM, we now replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), and D by (CONS V C) to eliminate (CAR D) and (CDR D). This generates four new formulas: Case 4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CAR X) 'LESSP)) (EQUAL (EVAL$ T X A) (LESSP (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)))), which simplifies, rewriting with CAR-NLISTP, and opening up the definition of EQUAL, to: T. Case 3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'LESSP)) (EQUAL (EVAL$ T (CONS Z V) A) (LESSP (EVAL$ T (CAR V) A) (EVAL$ T (CADR V) A)))). However this simplifies, applying REWRITE-EVAL$, CAR-NLISTP, and CDR-NLISTP, and expanding the definitions of LISTP, LITATOM, EQUAL, EVAL$, CAR, and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'LESSP)) (EQUAL (EVAL$ T (CONS Z (CONS W D)) A) (LESSP (EVAL$ T W A) (EVAL$ T (CAR D) A)))). This simplifies, applying REWRITE-EVAL$, CAR-CONS, CDR-CONS, and CAR-NLISTP, and expanding the definitions of LISTP, LITATOM, EQUAL, EVAL$, and LESSP, to: T. Case 1. (IMPLIES (EQUAL Z 'LESSP) (EQUAL (EVAL$ T (CONS Z (CONS W (CONS V C))) A) (LESSP (EVAL$ T W A) (EVAL$ T V A)))). This simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EVAL$-LESSP (DISABLE EVAL$-LESSP) [ 0.0 0.0 0.0 ] EVAL$-LESSP-OFF (PROVE-LEMMA EVAL$-QUOTIENT (REWRITE) (IMPLIES (EQUAL (CAR X) 'QUOTIENT) (EQUAL (EVAL$ T X A) (QUOTIENT (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A))))) . Appealing to the lemma CAR-CDR-ELIM, we now replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), and D by (CONS V C) to eliminate (CAR D) and (CDR D). This generates four new formulas: Case 4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CAR X) 'QUOTIENT)) (EQUAL (EVAL$ T X A) (QUOTIENT (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)))), which simplifies, rewriting with CAR-NLISTP, and opening up the definition of EQUAL, to: T. Case 3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'QUOTIENT)) (EQUAL (EVAL$ T (CONS Z V) A) (QUOTIENT (EVAL$ T (CAR V) A) (EVAL$ T (CADR V) A)))). However this simplifies, applying REWRITE-EVAL$, CAR-NLISTP, and CDR-NLISTP, and expanding the definitions of LISTP, LITATOM, EQUAL, EVAL$, CAR, and QUOTIENT, to: T. Case 2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'QUOTIENT)) (EQUAL (EVAL$ T (CONS Z (CONS W D)) A) (QUOTIENT (EVAL$ T W A) (EVAL$ T (CAR D) A)))). This simplifies, applying REWRITE-EVAL$, CAR-CONS, CDR-CONS, and CAR-NLISTP, and expanding the definitions of LISTP, LITATOM, EQUAL, EVAL$, and QUOTIENT, to: T. Case 1. (IMPLIES (EQUAL Z 'QUOTIENT) (EQUAL (EVAL$ T (CONS Z (CONS W (CONS V C))) A) (QUOTIENT (EVAL$ T W A) (EVAL$ T V A)))). This simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EVAL$-QUOTIENT (DISABLE EVAL$-QUOTIENT) [ 0.0 0.0 0.0 ] EVAL$-QUOTIENT-OFF (PROVE-LEMMA EVAL$-IF (REWRITE) (IMPLIES (EQUAL (CAR X) 'IF) (EQUAL (EVAL$ T X A) (IF (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A) (EVAL$ T (CADDDR X) A))))) This formula simplifies, clearly, to two new conjectures: Case 2. (IMPLIES (AND (EQUAL (CAR X) 'IF) (NOT (EVAL$ T (CADR X) A))) (EQUAL (EVAL$ T X A) (EVAL$ T (CADDDR X) A))). Applying the lemma CAR-CDR-ELIM, replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), D by (CONS C V) to eliminate (CDR D) and (CAR D), and V by (CONS D X1) to eliminate (CAR V) and (CDR V). We thus obtain the following five new goals: Case 2.5. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CAR X) 'IF) (NOT (EVAL$ T (CADR X) A))) (EQUAL (EVAL$ T X A) (EVAL$ T (CADDDR X) A))). But this further simplifies, applying CAR-NLISTP, and unfolding the definition of EQUAL, to: T. Case 2.4. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'IF) (NOT (EVAL$ T (CAR V) A))) (EQUAL (EVAL$ T (CONS Z V) A) (EVAL$ T (CADDR V) A))). However this further simplifies, rewriting with CAR-NLISTP, and unfolding LISTP, LITATOM, EQUAL, and EVAL$, to: T. Case 2.3. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'IF) (NOT (EVAL$ T W A))) (EQUAL (EVAL$ T (CONS Z (CONS W D)) A) (EVAL$ T (CADR D) A))). However this further simplifies, applying the lemmas REWRITE-EVAL$, CAR-CONS, CDR-CONS, and CDR-NLISTP, and expanding CAR, LISTP, LITATOM, EQUAL, and EVAL$, to: T. Case 2.2. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'IF) (NOT (EVAL$ T W A))) (EQUAL (EVAL$ T (CONS Z (CONS W (CONS C V))) A) (EVAL$ T (CAR V) A))), which further simplifies, applying REWRITE-EVAL$, CAR-CONS, CDR-CONS, and CAR-NLISTP, and expanding the functions LISTP, LITATOM, EQUAL, and EVAL$, to: T. Case 2.1. (IMPLIES (AND (EQUAL Z 'IF) (NOT (EVAL$ T W A))) (EQUAL (EVAL$ T (CONS Z (CONS W (CONS C (CONS D X1)))) A) (EVAL$ T D A))). This further simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Case 1. (IMPLIES (AND (EQUAL (CAR X) 'IF) (EVAL$ T (CADR X) A)) (EQUAL (EVAL$ T X A) (EVAL$ T (CADDR X) A))). Appealing to the lemma CAR-CDR-ELIM, we now replace X by (CONS Z V) to eliminate (CAR X) and (CDR X), V by (CONS W D) to eliminate (CAR V) and (CDR V), and D by (CONS V C) to eliminate (CAR D) and (CDR D). We must thus prove four new goals: Case 1.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CAR X) 'IF) (EVAL$ T (CADR X) A)) (EQUAL (EVAL$ T X A) (EVAL$ T (CADDR X) A))), which further simplifies, rewriting with CAR-NLISTP, and expanding the definition of EQUAL, to: T. Case 1.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL Z 'IF) (EVAL$ T (CAR V) A)) (EQUAL (EVAL$ T (CONS Z V) A) (EVAL$ T (CADR V) A))). This further simplifies, applying the lemmas CAR-NLISTP, REWRITE-EVAL$, and CDR-NLISTP, and expanding the functions LISTP, LITATOM, EQUAL, EVAL$, and CAR, to: T. Case 1.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL Z 'IF) (EVAL$ T W A)) (EQUAL (EVAL$ T (CONS Z (CONS W D)) A) (EVAL$ T (CAR D) A))), which further simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, CDR-CONS, and CAR-NLISTP, and unfolding the functions LISTP, LITATOM, EQUAL, and EVAL$, to: T. Case 1.1. (IMPLIES (AND (EQUAL Z 'IF) (EVAL$ T W A)) (EQUAL (EVAL$ T (CONS Z (CONS W (CONS V C))) A) (EVAL$ T V A))). This further simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EVAL$-IF (DISABLE EVAL$-IF) [ 0.0 0.0 0.0 ] EVAL$-IF-OFF (PROVE-LEMMA NUMBERP-EVAL$-TIMES-TREE (REWRITE) (NUMBERP (EVAL$ T (TIMES-TREE X) A)) ((ENABLE TIMES-TREE))) Call the conjecture *1. We will try to prove it by induction. There is only one suggested induction. We will induct according to the following scheme: (AND (IMPLIES (NLISTP X) (p X A)) (IMPLIES (AND (NOT (NLISTP X)) (NLISTP (CDR X))) (p X A)) (IMPLIES (AND (NOT (NLISTP X)) (NOT (NLISTP (CDR X))) (NLISTP (CDDR X))) (p X A)) (IMPLIES (AND (NOT (NLISTP X)) (NOT (NLISTP (CDR X))) (NOT (NLISTP (CDDR X))) (p (CDR X) A)) (p X A))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP can be used to establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates the following four new formulas: Case 4. (IMPLIES (NLISTP X) (NUMBERP (EVAL$ T (TIMES-TREE X) A))). This simplifies, expanding the definitions of NLISTP, TIMES-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, and NUMBERP, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP X)) (NLISTP (CDR X))) (NUMBERP (EVAL$ T (TIMES-TREE X) A))). This simplifies, appealing to the lemmas REWRITE-EVAL$ and CAR-CONS, and opening up NLISTP, TIMES-TREE, and FIX, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP X)) (NOT (NLISTP (CDR X))) (NLISTP (CDDR X))) (NUMBERP (EVAL$ T (TIMES-TREE X) A))). This simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and unfolding the definitions of NLISTP and TIMES-TREE, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP X)) (NOT (NLISTP (CDR X))) (NOT (NLISTP (CDDR X))) (NUMBERP (EVAL$ T (TIMES-TREE (CDR X)) A))) (NUMBERP (EVAL$ T (TIMES-TREE X) A))), which simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and expanding the functions NLISTP and TIMES-TREE, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] NUMBERP-EVAL$-TIMES-TREE (DISABLE NUMBERP-EVAL$-TIMES-TREE) [ 0.0 0.0 0.0 ] NUMBERP-EVAL$-TIMES-TREE-OFF (PROVE-LEMMA LESSP-TIMES-ARG1 NIL (IMPLIES (NOT (ZEROP A)) (EQUAL (NOT (LESSP (TIMES A X) (TIMES A Y))) (NOT (LESSP X Y)))) ((INDUCT (PLUS A X)) (ENABLE TIMES CORRECTNESS-OF-CANCEL-LESSP-PLUS))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to two new goals: Case 2. (IMPLIES (AND (ZEROP A) (NOT (EQUAL A 0)) (NUMBERP A)) (EQUAL (NOT (LESSP (TIMES A X) (TIMES A Y))) (NOT (LESSP X Y)))), which simplifies, unfolding ZEROP, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (IMPLIES (NOT (ZEROP (SUB1 A))) (EQUAL (NOT (LESSP (TIMES (SUB1 A) X) (TIMES (SUB1 A) Y))) (NOT (LESSP X Y))))) (EQUAL (NOT (LESSP (TIMES A X) (TIMES A Y))) (NOT (LESSP X Y)))), which simplifies, applying the lemmas EQUAL-SUB1-0, COMMUTATIVITY-OF-TIMES, and TIMES-1-ARG1, and opening up the definitions of ZEROP, NOT, IMPLIES, and TIMES, to eight new formulas: Case 1.8. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (LESSP X Y) (LESSP (TIMES X (SUB1 A)) (TIMES Y (SUB1 A)))) (LESSP (PLUS X (TIMES X (SUB1 A))) (PLUS Y (TIMES Y (SUB1 A))))), which again simplifies, using linear arithmetic, to: T. Case 1.7. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (LESSP X Y)) (NOT (LESSP (TIMES X (SUB1 A)) (TIMES Y (SUB1 A))))) (NOT (LESSP (PLUS X (TIMES X (SUB1 A))) (PLUS Y (TIMES Y (SUB1 A)))))), which again simplifies, using linear arithmetic, to: T. Case 1.6. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL A 1) (NOT (LESSP X Y)) (NUMBERP Y) (NOT (NUMBERP X))) (NOT (LESSP 0 Y))), which again simplifies, expanding EQUAL, NUMBERP, and LESSP, to: T. Case 1.5. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL A 1) (NOT (LESSP X Y)) (NOT (NUMBERP Y)) (NUMBERP X)) (NOT (LESSP X 0))), which again simplifies, using linear arithmetic, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL A 1) (NOT (LESSP X Y)) (NOT (NUMBERP Y)) (NOT (NUMBERP X))) (NOT (LESSP 0 0))), which again simplifies, using linear arithmetic, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL A 1) (LESSP X Y) (NUMBERP Y) (NOT (NUMBERP X))) (LESSP 0 Y)), which again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL A 1) (LESSP X Y) (NOT (NUMBERP Y)) (NUMBERP X)) (LESSP X 0)), which again simplifies, expanding the functions EQUAL, NUMBERP, and LESSP, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL A 1) (LESSP X Y) (NOT (NUMBERP Y)) (NOT (NUMBERP X))) (LESSP 0 0)), which again simplifies, opening up the functions EQUAL, NUMBERP, and LESSP, to: T. Q.E.D. [ 0.0 0.1 0.0 ] LESSP-TIMES-ARG1 (PROVE-LEMMA INFER-EQUALITY-FROM-NOT-LESSP NIL (IMPLIES (AND (NUMBERP A) (NUMBERP B)) (EQUAL (AND (NOT (LESSP A B)) (NOT (LESSP B A))) (EQUAL A B)))) This simplifies, unfolding the definitions of NOT and AND, to the following three new formulas: Case 3. (IMPLIES (AND (NUMBERP A) (NUMBERP B) (EQUAL A B)) (NOT (LESSP B A))). This again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (NUMBERP A) (NUMBERP B) (EQUAL A B)) (NOT (LESSP A B))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NUMBERP A) (NUMBERP B) (NOT (EQUAL A B)) (NOT (LESSP A B))) (LESSP B A)), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] INFER-EQUALITY-FROM-NOT-LESSP (PROVE-LEMMA EQUAL-TIMES-ARG1 (REWRITE) (IMPLIES (NOT (ZEROP A)) (EQUAL (EQUAL (TIMES A X) (TIMES A Y)) (EQUAL (FIX X) (FIX Y)))) ((USE (LESSP-TIMES-ARG1 (A A) (X X) (Y Y)) (LESSP-TIMES-ARG1 (A A) (X Y) (Y X)) (INFER-EQUALITY-FROM-NOT-LESSP (A (TIMES A X)) (B (TIMES A Y)))) (DO-NOT-INDUCT T))) This formula can be simplified, using the abbreviations ZEROP, NOT, IMPLIES, and AND, to: (IMPLIES (AND (IMPLIES (NOT (ZEROP A)) (EQUAL (NOT (LESSP (TIMES A X) (TIMES A Y))) (NOT (LESSP X Y)))) (IMPLIES (NOT (ZEROP A)) (EQUAL (NOT (LESSP (TIMES A Y) (TIMES A X))) (NOT (LESSP Y X)))) (IMPLIES (AND (NUMBERP (TIMES A X)) (NUMBERP (TIMES A Y))) (EQUAL (AND (NOT (LESSP (TIMES A X) (TIMES A Y))) (NOT (LESSP (TIMES A Y) (TIMES A X)))) (EQUAL (TIMES A X) (TIMES A Y)))) (NOT (EQUAL A 0)) (NUMBERP A)) (EQUAL (EQUAL (TIMES A X) (TIMES A Y)) (EQUAL (FIX X) (FIX Y)))), which simplifies, expanding the functions ZEROP, NOT, IMPLIES, AND, and FIX, to 15 new formulas: Case 15.(IMPLIES (AND (NOT (LESSP X Y)) (NOT (LESSP (TIMES A X) (TIMES A Y))) (NOT (LESSP Y X)) (NOT (LESSP (TIMES A Y) (TIMES A X))) (EQUAL (TIMES A X) (TIMES A Y)) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP Y)) (NUMBERP X)) (EQUAL X 0)), which again simplifies, using linear arithmetic, applying TIMES-ZERO and LESSP-TIMES2, and expanding LESSP and ZEROP, to: T. Case 14.(IMPLIES (AND (NOT (LESSP X Y)) (NOT (LESSP (TIMES A X) (TIMES A Y))) (NOT (LESSP Y X)) (NOT (LESSP (TIMES A Y) (TIMES A X))) (EQUAL (TIMES A X) (TIMES A Y)) (NOT (EQUAL A 0)) (NUMBERP A) (NUMBERP Y) (NOT (NUMBERP X))) (EQUAL 0 Y)). But this again simplifies, unfolding the function LESSP, to: T. Case 13.(IMPLIES (AND (NOT (LESSP X Y)) (NOT (LESSP (TIMES A X) (TIMES A Y))) (NOT (LESSP Y X)) (NOT (LESSP (TIMES A Y) (TIMES A X))) (EQUAL (TIMES A X) (TIMES A Y)) (NOT (EQUAL A 0)) (NUMBERP A) (NUMBERP Y) (NUMBERP X)) (EQUAL X Y)), which again simplifies, using linear arithmetic, to: T. Case 12.(IMPLIES (AND (NOT (LESSP X Y)) (NOT (LESSP (TIMES A X) (TIMES A Y))) (LESSP Y X) (LESSP (TIMES A Y) (TIMES A X)) (NOT (EQUAL (TIMES A X) (TIMES A Y))) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP Y))) (NOT (EQUAL X 0))), which again simplifies, using linear arithmetic, to: T. Case 11.(IMPLIES (AND (NOT (LESSP X Y)) (NOT (LESSP (TIMES A X) (TIMES A Y))) (LESSP Y X) (LESSP (TIMES A Y) (TIMES A X)) (NOT (EQUAL (TIMES A X) (TIMES A Y))) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP X))) (NOT (EQUAL 0 Y))), which again simplifies, applying the lemmas TIMES-ZERO and COMMUTATIVITY-OF-TIMES, and expanding EQUAL, LESSP, ZEROP, and TIMES, to: T. Case 10.(IMPLIES (AND (NOT (LESSP X Y)) (NOT (LESSP (TIMES A X) (TIMES A Y))) (LESSP Y X) (LESSP (TIMES A Y) (TIMES A X)) (NOT (EQUAL (TIMES A X) (TIMES A Y))) (NOT (EQUAL A 0)) (NUMBERP A) (NUMBERP Y) (NUMBERP X)) (NOT (EQUAL X Y))), which again simplifies, obviously, to: T. Case 9. (IMPLIES (AND (NOT (LESSP X Y)) (NOT (LESSP (TIMES A X) (TIMES A Y))) (LESSP Y X) (LESSP (TIMES A Y) (TIMES A X)) (NOT (EQUAL (TIMES A X) (TIMES A Y))) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP Y))) (NUMBERP X)). But this again simplifies, applying TIMES-ZERO, and unfolding LESSP and ZEROP, to: T. Case 8. (IMPLIES (AND (LESSP X Y) (LESSP (TIMES A X) (TIMES A Y)) (NOT (LESSP Y X)) (NOT (LESSP (TIMES A Y) (TIMES A X))) (NOT (EQUAL (TIMES A X) (TIMES A Y))) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP Y))) (NOT (EQUAL X 0))). But this again simplifies, expanding LESSP, to: T. Case 7. (IMPLIES (AND (LESSP X Y) (LESSP (TIMES A X) (TIMES A Y)) (NOT (LESSP Y X)) (NOT (LESSP (TIMES A Y) (TIMES A X))) (NOT (EQUAL (TIMES A X) (TIMES A Y))) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP X))) (NOT (EQUAL 0 Y))), which again simplifies, using linear arithmetic, to: T. Case 6. (IMPLIES (AND (LESSP X Y) (LESSP (TIMES A X) (TIMES A Y)) (NOT (LESSP Y X)) (NOT (LESSP (TIMES A Y) (TIMES A X))) (NOT (EQUAL (TIMES A X) (TIMES A Y))) (NOT (EQUAL A 0)) (NUMBERP A) (NUMBERP Y) (NUMBERP X)) (NOT (EQUAL X Y))), which again simplifies, clearly, to: T. Case 5. (IMPLIES (AND (LESSP X Y) (LESSP (TIMES A X) (TIMES A Y)) (NOT (LESSP Y X)) (NOT (LESSP (TIMES A Y) (TIMES A X))) (NOT (EQUAL (TIMES A X) (TIMES A Y))) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP Y))) (NUMBERP X)). This again simplifies, unfolding the function LESSP, to: T. Case 4. (IMPLIES (AND (LESSP X Y) (LESSP (TIMES A X) (TIMES A Y)) (LESSP Y X) (LESSP (TIMES A Y) (TIMES A X)) (NOT (EQUAL (TIMES A X) (TIMES A Y))) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP Y))) (NOT (EQUAL X 0))), which again simplifies, using linear arithmetic, to: T. Case 3. (IMPLIES (AND (LESSP X Y) (LESSP (TIMES A X) (TIMES A Y)) (LESSP Y X) (LESSP (TIMES A Y) (TIMES A X)) (NOT (EQUAL (TIMES A X) (TIMES A Y))) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP X))) (NOT (EQUAL 0 Y))), which again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (LESSP X Y) (LESSP (TIMES A X) (TIMES A Y)) (LESSP Y X) (LESSP (TIMES A Y) (TIMES A X)) (NOT (EQUAL (TIMES A X) (TIMES A Y))) (NOT (EQUAL A 0)) (NUMBERP A) (NUMBERP Y) (NUMBERP X)) (NOT (EQUAL X Y))), which again simplifies, trivially, to: T. Case 1. (IMPLIES (AND (LESSP X Y) (LESSP (TIMES A X) (TIMES A Y)) (LESSP Y X) (LESSP (TIMES A Y) (TIMES A X)) (NOT (EQUAL (TIMES A X) (TIMES A Y))) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP Y))) (NUMBERP X)). However this again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.4 0.0 ] EQUAL-TIMES-ARG1 (DISABLE EQUAL-TIMES-ARG1) [ 0.0 0.0 0.0 ] EQUAL-TIMES-ARG1-OFF (PROVE-LEMMA EQUAL-TIMES-BRIDGE (REWRITE) (EQUAL (EQUAL (TIMES A B) (TIMES C (TIMES A D))) (OR (ZEROP A) (EQUAL (FIX B) (TIMES C D)))) ((ENABLE COMMUTATIVITY-OF-TIMES COMMUTATIVITY2-OF-TIMES EQUAL-TIMES-0 EQUAL-TIMES-ARG1 TIMES-ZERO))) This formula simplifies, rewriting with COMMUTATIVITY2-OF-TIMES, and opening up the definitions of ZEROP, FIX, and OR, to the following six new formulas: Case 6. (IMPLIES (NOT (EQUAL (TIMES A B) (TIMES A C D))) (NOT (EQUAL A 0))). But this again simplifies, using linear arithmetic, to: T. Case 5. (IMPLIES (NOT (EQUAL (TIMES A B) (TIMES A C D))) (NUMBERP A)), which again simplifies, unfolding the functions TIMES and EQUAL, to: T. Case 4. (IMPLIES (AND (NOT (EQUAL (TIMES A B) (TIMES A C D))) (NUMBERP B)) (NOT (EQUAL B (TIMES C D)))), which again simplifies, trivially, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL (TIMES A B) (TIMES A C D))) (NOT (NUMBERP B))) (NOT (EQUAL 0 (TIMES C D)))). However this again simplifies, applying the lemmas TIMES-ZERO and COMMUTATIVITY-OF-TIMES, and unfolding the functions ZEROP, EQUAL, and TIMES, to: T. Case 2. (IMPLIES (AND (EQUAL (TIMES A B) (TIMES A C D)) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP B))) (EQUAL (EQUAL 0 (TIMES C D)) T)), which again simplifies, applying the lemmas TIMES-ZERO, EQUAL-TIMES-0, and COMMUTATIVITY-OF-TIMES, and unfolding the functions ZEROP, EQUAL, and TIMES, to: T. Case 1. (IMPLIES (AND (EQUAL (TIMES A B) (TIMES A C D)) (NOT (EQUAL A 0)) (NUMBERP A) (NUMBERP B)) (EQUAL (EQUAL B (TIMES C D)) T)), which again simplifies, rewriting with EQUAL-TIMES-ARG1, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EQUAL-TIMES-BRIDGE (DISABLE EQUAL-TIMES-BRIDGE) [ 0.0 0.0 0.0 ] EQUAL-TIMES-BRIDGE-OFF (PROVE-LEMMA EVAL$-TIMES-MEMBER (REWRITE) (IMPLIES (MEMBER E X) (EQUAL (EVAL$ T (TIMES-TREE X) A) (TIMES (EVAL$ T E A) (EVAL$ T (TIMES-TREE (DELETE E X)) A)))) ((ENABLE DELETE TIMES-TREE COMMUTATIVITY-OF-TIMES DELETE-NON-MEMBER EQUAL-TIMES-0 EQUAL-TIMES-BRIDGE LISTP-DELETE MEMBER-NON-LIST TIMES-1-ARG1 TIMES-ZERO))) WARNING: Note that EVAL$-TIMES-MEMBER contains the free variable E which will be chosen by instantiating the hypothesis (MEMBER E X). Give the conjecture the name *1. We will appeal to induction. There are four plausible inductions. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (NLISTP X) (p X A E)) (IMPLIES (AND (NOT (NLISTP X)) (EQUAL E (CAR X))) (p X A E)) (IMPLIES (AND (NOT (NLISTP X)) (NOT (EQUAL E (CAR X))) (p (CDR X) A E)) (p X A E))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates the following four new formulas: Case 4. (IMPLIES (AND (NLISTP X) (MEMBER E X)) (EQUAL (EVAL$ T (TIMES-TREE X) A) (TIMES (EVAL$ T E A) (EVAL$ T (TIMES-TREE (DELETE E X)) A)))). This simplifies, rewriting with MEMBER-NON-LIST, and unfolding the definition of NLISTP, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP X)) (EQUAL E (CAR X)) (MEMBER E X)) (EQUAL (EVAL$ T (TIMES-TREE X) A) (TIMES (EVAL$ T E A) (EVAL$ T (TIMES-TREE (DELETE E X)) A)))), which simplifies, expanding NLISTP, MEMBER, TIMES-TREE, and DELETE, to three new goals: Case 3.3. (IMPLIES (AND (LISTP X) (NOT (LISTP (CDR X)))) (EQUAL (EVAL$ T (LIST 'FIX (CAR X)) A) (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE (CDR X)) A)))), which again simplifies, applying REWRITE-EVAL$ and CAR-CONS, and opening up FIX, to the following two new formulas: Case 3.3.2. (IMPLIES (AND (LISTP X) (NOT (LISTP (CDR X))) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL 0 (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE (CDR X)) A)))). However this again simplifies, expanding the functions TIMES and EQUAL, to: T. Case 3.3.1. (IMPLIES (AND (LISTP X) (NOT (LISTP (CDR X))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (CAR X) A) (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE (CDR X)) A)))), which further simplifies, applying the lemmas TIMES-1-ARG1 and COMMUTATIVITY-OF-TIMES, and expanding the functions TIMES-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, and EVAL$, to: T. Case 3.2. (IMPLIES (AND (LISTP X) (LISTP (CDR X)) (LISTP (CDDR X))) (EQUAL (EVAL$ T (LIST 'TIMES (CAR X) (TIMES-TREE (CDR X))) A) (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE (CDR X)) A)))), which again simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to: T. Case 3.1. (IMPLIES (AND (LISTP X) (LISTP (CDR X)) (NOT (LISTP (CDDR X)))) (EQUAL (EVAL$ T (LIST 'TIMES (CAR X) (CADR X)) A) (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE (CDR X)) A)))), which again simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, to the new conjecture: (IMPLIES (AND (LISTP X) (LISTP (CDR X)) (NOT (LISTP (CDDR X)))) (EQUAL (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (CADR X) A)) (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE (CDR X)) A)))), which further simplifies, rewriting with REWRITE-EVAL$ and CAR-CONS, and opening up TIMES-TREE and FIX, to: (IMPLIES (AND (LISTP X) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NOT (NUMBERP (EVAL$ T (CADR X) A)))) (EQUAL (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (CADR X) A)) (TIMES (EVAL$ T (CAR X) A) 0))), which again simplifies, rewriting with TIMES-ZERO and COMMUTATIVITY-OF-TIMES, and expanding the definitions of ZEROP, EQUAL, and TIMES, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP X)) (NOT (EQUAL E (CAR X))) (NOT (MEMBER E (CDR X))) (MEMBER E X)) (EQUAL (EVAL$ T (TIMES-TREE X) A) (TIMES (EVAL$ T E A) (EVAL$ T (TIMES-TREE (DELETE E X)) A)))). This simplifies, expanding the definitions of NLISTP and MEMBER, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP X)) (NOT (EQUAL E (CAR X))) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) (TIMES (EVAL$ T E A) (EVAL$ T (TIMES-TREE (DELETE E (CDR X))) A))) (MEMBER E X)) (EQUAL (EVAL$ T (TIMES-TREE X) A) (TIMES (EVAL$ T E A) (EVAL$ T (TIMES-TREE (DELETE E X)) A)))). This simplifies, appealing to the lemmas CAR-CONS, LISTP-DELETE, and CDR-CONS, and unfolding NLISTP, MEMBER, TIMES-TREE, and DELETE, to the following six new formulas: Case 1.6. (IMPLIES (AND (LISTP X) (NOT (EQUAL E (CAR X))) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) (TIMES (EVAL$ T E A) (EVAL$ T (TIMES-TREE (DELETE E (CDR X))) A))) (MEMBER E (CDR X)) (LISTP (CDR X)) (LISTP (CDDR X)) (LISTP (CDR (DELETE E (CDR X))))) (EQUAL (EVAL$ T (LIST 'TIMES (CAR X) (TIMES-TREE (CDR X))) A) (TIMES (EVAL$ T E A) (EVAL$ T (LIST 'TIMES (CAR X) (TIMES-TREE (DELETE E (CDR X)))) A)))). This again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, CDR-CONS, and EQUAL-TIMES-BRIDGE, to: T. Case 1.5. (IMPLIES (AND (LISTP X) (NOT (EQUAL E (CAR X))) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) (TIMES (EVAL$ T E A) (EVAL$ T (TIMES-TREE (DELETE E (CDR X))) A))) (MEMBER E (CDR X)) (LISTP (CDR X)) (NOT (EQUAL E (CADR X))) (LISTP (CDR (DELETE E (CDR X)))) (NOT (LISTP (CDDR X)))) (EQUAL (EVAL$ T (LIST 'TIMES (CAR X) (CADR X)) A) (TIMES (EVAL$ T E A) (EVAL$ T (LIST 'TIMES (CAR X) (TIMES-TREE (DELETE E (CDR X)))) A)))). However this again simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, CDR-CONS, and EQUAL-TIMES-BRIDGE, to two new conjectures: Case 1.5.2. (IMPLIES (AND (LISTP X) (NOT (EQUAL E (CAR X))) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) (TIMES (EVAL$ T E A) (EVAL$ T (TIMES-TREE (DELETE E (CDR X))) A))) (MEMBER E (CDR X)) (LISTP (CDR X)) (NOT (EQUAL E (CADR X))) (LISTP (CDR (DELETE E (CDR X)))) (NOT (LISTP (CDDR X))) (NOT (EQUAL (EVAL$ T (CAR X) A) 0)) (NUMBERP (EVAL$ T (CAR X) A)) (NOT (NUMBERP (EVAL$ T (CADR X) A)))) (EQUAL 0 (EVAL$ T (TIMES-TREE (CDR X)) A))), which further simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, CONS-CAR-CDR, DELETE-NON-MEMBER, MEMBER-NON-LIST, and COMMUTATIVITY-OF-TIMES, and expanding TIMES-TREE, FIX, DELETE, EQUAL, TIMES, and MEMBER, to: T. Case 1.5.1. (IMPLIES (AND (LISTP X) (NOT (EQUAL E (CAR X))) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) (TIMES (EVAL$ T E A) (EVAL$ T (TIMES-TREE (DELETE E (CDR X))) A))) (MEMBER E (CDR X)) (LISTP (CDR X)) (NOT (EQUAL E (CADR X))) (LISTP (CDR (DELETE E (CDR X)))) (NOT (LISTP (CDDR X))) (NOT (EQUAL (EVAL$ T (CAR X) A) 0)) (NUMBERP (EVAL$ T (CAR X) A)) (NUMBERP (EVAL$ T (CADR X) A))) (EQUAL (EVAL$ T (CADR X) A) (EVAL$ T (TIMES-TREE (CDR X)) A))). However this further simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, CONS-CAR-CDR, DELETE-NON-MEMBER, and MEMBER-NON-LIST, and opening up the definitions of TIMES-TREE, FIX, DELETE, and MEMBER, to: T. Case 1.4. (IMPLIES (AND (LISTP X) (NOT (EQUAL E (CAR X))) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) (TIMES (EVAL$ T E A) (EVAL$ T (TIMES-TREE (DELETE E (CDR X))) A))) (MEMBER E (CDR X)) (LISTP (CDR X)) (LISTP (CDDR X)) (NOT (LISTP (CDR (DELETE E (CDR X)))))) (EQUAL (EVAL$ T (LIST 'TIMES (CAR X) (TIMES-TREE (CDR X))) A) (TIMES (EVAL$ T E A) (EVAL$ T (LIST 'TIMES (CAR X) (CAR (DELETE E (CDR X)))) A)))), which again simplifies, appealing to the lemmas LISTP-DELETE, REWRITE-EVAL$, CAR-CONS, CDR-CONS, TIMES-ZERO, COMMUTATIVITY-OF-TIMES, EQUAL-TIMES-0, and EQUAL-TIMES-BRIDGE, and opening up the functions TIMES-TREE, FIX, ZEROP, EQUAL, and TIMES, to the formula: (IMPLIES (AND (LISTP X) (NOT (EQUAL E (CAR X))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE E (CDR X))) A))) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) (TIMES (EVAL$ T E A) 0)) (MEMBER E (CDR X)) (LISTP (CDR X)) (LISTP (CDDR X)) (NOT (LISTP (CDR (DELETE E (CDR X))))) (NOT (EQUAL (EVAL$ T (CAR X) A) 0)) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) 0)). But this again simplifies, rewriting with the lemma COMMUTATIVITY-OF-TIMES, and expanding the definitions of EQUAL and TIMES, to: T. Case 1.3. (IMPLIES (AND (LISTP X) (NOT (EQUAL E (CAR X))) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) (TIMES (EVAL$ T E A) (EVAL$ T (TIMES-TREE (DELETE E (CDR X))) A))) (MEMBER E (CDR X)) (LISTP (CDR X)) (NOT (EQUAL E (CADR X))) (NOT (LISTP (CDR (DELETE E (CDR X))))) (NOT (LISTP (CDDR X)))) (EQUAL (EVAL$ T (LIST 'TIMES (CAR X) (CADR X)) A) (TIMES (EVAL$ T E A) (EVAL$ T (LIST 'TIMES (CAR X) (CAR (DELETE E (CDR X)))) A)))), which again simplifies, applying LISTP-DELETE, REWRITE-EVAL$, CAR-CONS, CDR-CONS, TIMES-ZERO, COMMUTATIVITY-OF-TIMES, EQUAL-TIMES-0, and EQUAL-TIMES-BRIDGE, and unfolding the functions TIMES-TREE, FIX, ZEROP, EQUAL, and TIMES, to the following three new conjectures: Case 1.3.3. (IMPLIES (AND (LISTP X) (NOT (EQUAL E (CAR X))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE E (CDR X))) A))) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) (TIMES (EVAL$ T E A) 0)) (MEMBER E (CDR X)) (LISTP (CDR X)) (NOT (EQUAL E (CADR X))) (NOT (LISTP (CDR (DELETE E (CDR X))))) (NOT (LISTP (CDDR X))) (NOT (EQUAL (EVAL$ T (CAR X) A) 0)) (NUMBERP (EVAL$ T (CAR X) A)) (NOT (EQUAL (EVAL$ T (CADR X) A) 0))) (NOT (NUMBERP (EVAL$ T (CADR X) A)))). This again simplifies, rewriting with COMMUTATIVITY-OF-TIMES, and unfolding the functions EQUAL and TIMES, to: (IMPLIES (AND (LISTP X) (NOT (EQUAL E (CAR X))) (NOT (NUMBERP (EVAL$ T (CAR (DELETE E (CDR X))) A))) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) 0) (MEMBER E (CDR X)) (LISTP (CDR X)) (NOT (EQUAL E (CADR X))) (NOT (LISTP (CDR (DELETE E (CDR X))))) (NOT (LISTP (CDDR X))) (NOT (EQUAL (EVAL$ T (CAR X) A) 0)) (NUMBERP (EVAL$ T (CAR X) A)) (NOT (EQUAL (EVAL$ T (CADR X) A) 0))) (NOT (NUMBERP (EVAL$ T (CADR X) A)))), which further simplifies, applying the lemmas CONS-CAR-CDR, DELETE-NON-MEMBER, and MEMBER-NON-LIST, and expanding DELETE, to: T. Case 1.3.2. (IMPLIES (AND (LISTP X) (NOT (EQUAL E (CAR X))) (NUMBERP (EVAL$ T (CAR (DELETE E (CDR X))) A)) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) (TIMES (EVAL$ T E A) (EVAL$ T (CAR (DELETE E (CDR X))) A))) (MEMBER E (CDR X)) (LISTP (CDR X)) (NOT (EQUAL E (CADR X))) (NOT (LISTP (CDR (DELETE E (CDR X))))) (NOT (LISTP (CDDR X))) (NOT (EQUAL (EVAL$ T (CAR X) A) 0)) (NUMBERP (EVAL$ T (CAR X) A)) (NOT (NUMBERP (EVAL$ T (CADR X) A)))) (EQUAL 0 (EVAL$ T (TIMES-TREE (CDR X)) A))), which further simplifies, applying CONS-CAR-CDR, DELETE-NON-MEMBER, and MEMBER-NON-LIST, and expanding the function DELETE, to: T. Case 1.3.1. (IMPLIES (AND (LISTP X) (NOT (EQUAL E (CAR X))) (NUMBERP (EVAL$ T (CAR (DELETE E (CDR X))) A)) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) (TIMES (EVAL$ T E A) (EVAL$ T (CAR (DELETE E (CDR X))) A))) (MEMBER E (CDR X)) (LISTP (CDR X)) (NOT (EQUAL E (CADR X))) (NOT (LISTP (CDR (DELETE E (CDR X))))) (NOT (LISTP (CDDR X))) (NOT (EQUAL (EVAL$ T (CAR X) A) 0)) (NUMBERP (EVAL$ T (CAR X) A)) (NUMBERP (EVAL$ T (CADR X) A))) (EQUAL (EVAL$ T (CADR X) A) (EVAL$ T (TIMES-TREE (CDR X)) A))). This further simplifies, applying CONS-CAR-CDR, DELETE-NON-MEMBER, MEMBER-NON-LIST, REWRITE-EVAL$, and CAR-CONS, and expanding the functions DELETE, TIMES-TREE, FIX, and MEMBER, to: T. Case 1.2. (IMPLIES (AND (LISTP X) (NOT (EQUAL E (CAR X))) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) (TIMES (EVAL$ T E A) (EVAL$ T (TIMES-TREE (DELETE E (CDR X))) A))) (MEMBER E (CDR X)) (LISTP (CDR X)) (EQUAL E (CADR X)) (NOT (LISTP (CDDR X)))) (EQUAL (EVAL$ T (LIST 'TIMES (CAR X) (CADR X)) A) (TIMES (EVAL$ T E A) (EVAL$ T (LIST 'FIX (CAR X)) A)))). But this again simplifies, applying TIMES-1-ARG1, COMMUTATIVITY-OF-TIMES, REWRITE-EVAL$, CAR-CONS, CDR-CONS, and TIMES-ZERO, and opening up the definitions of DELETE, TIMES-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, MEMBER, ZEROP, FIX, and TIMES, to the following two new conjectures: Case 1.2.2. (IMPLIES (AND (LISTP X) (NOT (EQUAL (CADR X) (CAR X))) (NUMBERP (EVAL$ T (CADR X) A)) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) (EVAL$ T (CADR X) A)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (CADR X) A)) (TIMES (EVAL$ T (CADR X) A) 0))). But this again simplifies, rewriting with COMMUTATIVITY-OF-TIMES, and expanding TIMES and EQUAL, to: T. Case 1.2.1. (IMPLIES (AND (LISTP X) (NOT (EQUAL (CADR X) (CAR X))) (NUMBERP (EVAL$ T (CADR X) A)) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) (EVAL$ T (CADR X) A)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (CADR X) A)) (TIMES (EVAL$ T (CADR X) A) (EVAL$ T (CAR X) A)))). This again simplifies, appealing to the lemma COMMUTATIVITY-OF-TIMES, to: T. Case 1.1. (IMPLIES (AND (LISTP X) (NOT (EQUAL E (CAR X))) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) (TIMES (EVAL$ T E A) (EVAL$ T (TIMES-TREE (DELETE E (CDR X))) A))) (MEMBER E (CDR X)) (NOT (LISTP (CDR X)))) (EQUAL (EVAL$ T (LIST 'FIX (CAR X)) A) (TIMES (EVAL$ T E A) (EVAL$ T (LIST 'FIX (CAR X)) A)))), which again simplifies, appealing to the lemmas LISTP-DELETE, TIMES-1-ARG1, COMMUTATIVITY-OF-TIMES, REWRITE-EVAL$, and CAR-CONS, and unfolding TIMES-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, FIX, and TIMES, to three new formulas: Case 1.1.3. (IMPLIES (AND (LISTP X) (NOT (EQUAL E (CAR X))) (NOT (NUMBERP (EVAL$ T E A))) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) 0) (MEMBER E (CDR X)) (NOT (LISTP (CDR X))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (CAR X) A) 0)), which further simplifies, expanding TIMES-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, and EVAL$, to: T. Case 1.1.2. (IMPLIES (AND (LISTP X) (NOT (EQUAL E (CAR X))) (NUMBERP (EVAL$ T E A)) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) (EVAL$ T E A)) (MEMBER E (CDR X)) (NOT (LISTP (CDR X))) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL 0 (TIMES (EVAL$ T E A) 0))), which again simplifies, applying COMMUTATIVITY-OF-TIMES, and expanding the functions EQUAL and TIMES, to: T. Case 1.1.1. (IMPLIES (AND (LISTP X) (NOT (EQUAL E (CAR X))) (NUMBERP (EVAL$ T E A)) (EQUAL (EVAL$ T (TIMES-TREE (CDR X)) A) (EVAL$ T E A)) (MEMBER E (CDR X)) (NOT (LISTP (CDR X))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (CAR X) A) (TIMES (EVAL$ T E A) (EVAL$ T (CAR X) A)))). But this further simplifies, applying the lemma MEMBER-NON-LIST, and unfolding TIMES-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, and EVAL$, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.6 0.0 ] EVAL$-TIMES-MEMBER (DISABLE EVAL$-TIMES-MEMBER) [ 0.0 0.0 0.0 ] EVAL$-TIMES-MEMBER-OFF (PROVE-LEMMA ZEROP-MAKES-TIMES-TREE-ZERO (REWRITE) (IMPLIES (AND (NOT (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (SUBBAGP X Y)) (EQUAL (EVAL$ T (TIMES-TREE Y) A) 0)) ((ENABLE AND-NOT-ZEROP-TREE COMMUTATIVITY-OF-TIMES EVAL$-TIMES-MEMBER SUBBAGP TIMES-TREE TIMES-ZERO))) WARNING: Note that ZEROP-MAKES-TIMES-TREE-ZERO contains the free variable X which will be chosen by instantiating the hypothesis: (NOT (EVAL$ T (AND-NOT-ZEROP-TREE X) A)). Call the conjecture *1. Let us appeal to the induction principle. Three inductions are suggested by terms in the conjecture. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (NLISTP X) (p Y A X)) (IMPLIES (AND (NOT (NLISTP X)) (NLISTP (CDR X))) (p Y A X)) (IMPLIES (AND (NOT (NLISTP X)) (NOT (NLISTP (CDR X))) (p (DELETE (CAR X) Y) A (CDR X))) (p Y A X))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for Y. The above induction scheme produces five new goals: Case 5. (IMPLIES (AND (NLISTP X) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (SUBBAGP X Y)) (EQUAL (EVAL$ T (TIMES-TREE Y) A) 0)), which simplifies, rewriting with REWRITE-EVAL$, and opening up the definitions of NLISTP and AND-NOT-ZEROP-TREE, to: T. Case 4. (IMPLIES (AND (NOT (NLISTP X)) (NLISTP (CDR X)) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (SUBBAGP X Y)) (EQUAL (EVAL$ T (TIMES-TREE Y) A) 0)). This simplifies, applying the lemmas REWRITE-EVAL$, CAR-CONS, and EVAL$-TIMES-MEMBER, and unfolding the functions NLISTP, AND-NOT-ZEROP-TREE, ZEROP, NOT, SUBBAGP, EQUAL, and TIMES, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP X)) (NOT (NLISTP (CDR X))) (EVAL$ T (AND-NOT-ZEROP-TREE (CDR X)) A) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (SUBBAGP X Y)) (EQUAL (EVAL$ T (TIMES-TREE Y) A) 0)). This simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-CONS, CDR-CONS, and EVAL$-TIMES-MEMBER, and expanding the functions NLISTP, AND-NOT-ZEROP-TREE, ZEROP, NOT, AND, SUBBAGP, EQUAL, and TIMES, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP X)) (NOT (NLISTP (CDR X))) (NOT (SUBBAGP (CDR X) (DELETE (CAR X) Y))) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (SUBBAGP X Y)) (EQUAL (EVAL$ T (TIMES-TREE Y) A) 0)). This simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and opening up the functions NLISTP, AND-NOT-ZEROP-TREE, ZEROP, NOT, AND, and SUBBAGP, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP X)) (NOT (NLISTP (CDR X))) (EQUAL (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) 0) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (SUBBAGP X Y)) (EQUAL (EVAL$ T (TIMES-TREE Y) A) 0)). This simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, CDR-CONS, EVAL$-TIMES-MEMBER, TIMES-ZERO, and COMMUTATIVITY-OF-TIMES, and unfolding the definitions of NLISTP, AND-NOT-ZEROP-TREE, ZEROP, NOT, AND, SUBBAGP, TIMES, and EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] ZEROP-MAKES-TIMES-TREE-ZERO (DISABLE ZEROP-MAKES-TIMES-TREE-ZERO) [ 0.0 0.0 0.0 ] ZEROP-MAKES-TIMES-TREE-ZERO-OFF (PROVE-LEMMA OR-ZEROP-TREE-IS-NOT-ZEROP-TREE (REWRITE) (EQUAL (EVAL$ T (OR-ZEROP-TREE X) A) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE X) A))) ((ENABLE AND-NOT-ZEROP-TREE OR-ZEROP-TREE))) This simplifies, unfolding the function NOT, to the following two new formulas: Case 2. (IMPLIES (NOT (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (EQUAL (EVAL$ T (OR-ZEROP-TREE X) A) T)). Give the above formula the name *1. Case 1. (IMPLIES (EVAL$ T (AND-NOT-ZEROP-TREE X) A) (EQUAL (EVAL$ T (OR-ZEROP-TREE X) A) F)). This again simplifies, clearly, to: (IMPLIES (EVAL$ T (AND-NOT-ZEROP-TREE X) A) (NOT (EVAL$ T (OR-ZEROP-TREE X) A))), which we would normally push and work on later by induction. But if we must use induction to prove the input conjecture, we prefer to induct on the original formulation of the problem. Thus we will disregard all that we have previously done, give the name *1 to the original input, and work on it. So now let us return to: (EQUAL (EVAL$ T (OR-ZEROP-TREE X) A) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE X) A))). We named this *1. We will try to prove it by induction. Two inductions are suggested by terms in the conjecture. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (NLISTP X) (p X A)) (IMPLIES (AND (NOT (NLISTP X)) (NLISTP (CDR X))) (p X A)) (IMPLIES (AND (NOT (NLISTP X)) (NOT (NLISTP (CDR X))) (NLISTP (CDDR X))) (p X A)) (IMPLIES (AND (NOT (NLISTP X)) (NOT (NLISTP (CDR X))) (NOT (NLISTP (CDDR X))) (p (CDR X) A)) (p X A))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP inform us that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates four new conjectures: Case 4. (IMPLIES (NLISTP X) (EQUAL (EVAL$ T (OR-ZEROP-TREE X) A) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE X) A)))), which simplifies, applying REWRITE-EVAL$, and expanding the functions NLISTP, OR-ZEROP-TREE, AND-NOT-ZEROP-TREE, NOT, and EQUAL, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP X)) (NLISTP (CDR X))) (EQUAL (EVAL$ T (OR-ZEROP-TREE X) A) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE X) A)))). This simplifies, appealing to the lemmas REWRITE-EVAL$ and CAR-CONS, and expanding the functions NLISTP, OR-ZEROP-TREE, ZEROP, AND-NOT-ZEROP-TREE, and NOT, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP X)) (NOT (NLISTP (CDR X))) (NLISTP (CDDR X))) (EQUAL (EVAL$ T (OR-ZEROP-TREE X) A) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE X) A)))). This simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and expanding NLISTP, OR-ZEROP-TREE, ZEROP, OR, AND-NOT-ZEROP-TREE, NOT, and AND, to three new goals: Case 2.3. (IMPLIES (AND (LISTP X) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NOT (EQUAL (EVAL$ T (CAR X) A) 0)) (NUMBERP (EVAL$ T (CAR X) A)) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE (CDR X)) A)) (NOT (EQUAL (EVAL$ T (CADR X) A) 0))) (NOT (NUMBERP (EVAL$ T (CADR X) A)))), which further simplifies, applying REWRITE-EVAL$ and CAR-CONS, and unfolding the functions AND-NOT-ZEROP-TREE, ZEROP, and NOT, to: T. Case 2.2. (IMPLIES (AND (LISTP X) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NOT (EQUAL (EVAL$ T (CAR X) A) 0)) (NUMBERP (EVAL$ T (CAR X) A)) (EVAL$ T (AND-NOT-ZEROP-TREE (CDR X)) A)) (NOT (EQUAL (EVAL$ T (CADR X) A) 0))). This further simplifies, rewriting with REWRITE-EVAL$ and CAR-CONS, and unfolding the definitions of AND-NOT-ZEROP-TREE, ZEROP, and NOT, to: T. Case 2.1. (IMPLIES (AND (LISTP X) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NOT (EQUAL (EVAL$ T (CAR X) A) 0)) (NUMBERP (EVAL$ T (CAR X) A)) (EVAL$ T (AND-NOT-ZEROP-TREE (CDR X)) A)) (NUMBERP (EVAL$ T (CADR X) A))). However this further simplifies, applying REWRITE-EVAL$ and CAR-CONS, and expanding AND-NOT-ZEROP-TREE, ZEROP, and NOT, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP X)) (NOT (NLISTP (CDR X))) (NOT (NLISTP (CDDR X))) (EQUAL (EVAL$ T (OR-ZEROP-TREE (CDR X)) A) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE (CDR X)) A)))) (EQUAL (EVAL$ T (OR-ZEROP-TREE X) A) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE X) A)))). This simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and expanding the definitions of NLISTP, NOT, OR-ZEROP-TREE, ZEROP, OR, AND-NOT-ZEROP-TREE, AND, and EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] OR-ZEROP-TREE-IS-NOT-ZEROP-TREE (DISABLE OR-ZEROP-TREE-IS-NOT-ZEROP-TREE) [ 0.0 0.0 0.0 ] OR-ZEROP-TREE-IS-NOT-ZEROP-TREE-OFF (PROVE-LEMMA ZEROP-MAKES-TIMES-TREE-ZERO2 (REWRITE) (IMPLIES (AND (EVAL$ T (OR-ZEROP-TREE X) A) (SUBBAGP X Y)) (EQUAL (EVAL$ T (TIMES-TREE Y) A) 0)) ((USE (ZEROP-MAKES-TIMES-TREE-ZERO) (OR-ZEROP-TREE-IS-NOT-ZEROP-TREE)) (ENABLE OR-ZEROP-TREE SUBBAGP TIMES-TREE))) WARNING: Note that ZEROP-MAKES-TIMES-TREE-ZERO2 contains the free variable X which will be chosen by instantiating the hypothesis: (EVAL$ T (OR-ZEROP-TREE X) A). This formula simplifies, unfolding the definitions of NOT, AND, and IMPLIES, to: T. Q.E.D. [ 0.0 0.0 0.0 ] ZEROP-MAKES-TIMES-TREE-ZERO2 (DISABLE ZEROP-MAKES-TIMES-TREE-ZERO2) [ 0.0 0.0 0.0 ] ZEROP-MAKES-TIMES-TREE-ZERO2-OFF (PROVE-LEMMA TIMES-TREE-APPEND (REWRITE) (EQUAL (EVAL$ T (TIMES-TREE (APPEND X Y)) A) (TIMES (EVAL$ T (TIMES-TREE X) A) (EVAL$ T (TIMES-TREE Y) A))) ((ENABLE APPEND ASSOCIATIVITY-OF-TIMES COMMUTATIVITY-OF-TIMES COMMUTATIVITY2-OF-TIMES EQUAL-TIMES-0 EQUAL-TIMES-ARG1 EQUAL-TIMES-BRIDGE NUMBERP-EVAL$-TIMES-TREE TIMES-1-ARG1 TIMES-TREE TIMES-ZERO))) Name the conjecture *1. We will appeal to induction. The recursive terms in the conjecture suggest three inductions. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP X) (p (CDR X) Y A)) (p X Y A)) (IMPLIES (NOT (LISTP X)) (p X Y A))). Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates the following two new conjectures: Case 2. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE (CDR X)) A) (EVAL$ T (TIMES-TREE Y) A)))) (EQUAL (EVAL$ T (TIMES-TREE (APPEND X Y)) A) (TIMES (EVAL$ T (TIMES-TREE X) A) (EVAL$ T (TIMES-TREE Y) A)))). This simplifies, rewriting with COMMUTATIVITY-OF-TIMES, CAR-CONS, and CDR-CONS, and expanding APPEND and TIMES-TREE, to nine new formulas: Case 2.9. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (NOT (LISTP (APPEND (CDR X) Y)))) (EQUAL (EVAL$ T (LIST 'FIX (CAR X)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (LIST 'FIX (CAR X)) A)))), which again simplifies, appealing to the lemmas EQUAL-TIMES-1, REWRITE-EVAL$, CAR-CONS, and TIMES-1-ARG1, and expanding the definitions of TIMES-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, and FIX, to: T. Case 2.8. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (LISTP (CDR (APPEND (CDR X) Y)))) (EQUAL (EVAL$ T (LIST 'TIMES (CAR X) (TIMES-TREE (APPEND (CDR X) Y))) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (LIST 'FIX (CAR X)) A)))), which again simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and expanding the definition of FIX, to the following two new goals: Case 2.8.2. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (LISTP (CDR (APPEND (CDR X) Y))) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A)) (TIMES (EVAL$ T (TIMES-TREE Y) A) 0))). This again simplifies, applying COMMUTATIVITY-OF-TIMES, and opening up TIMES and EQUAL, to: T. Case 2.8.1. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (LISTP (CDR (APPEND (CDR X) Y))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A)) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (CAR X) A)))). This again simplifies, appealing to the lemma COMMUTATIVITY-OF-TIMES, to: (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (LISTP (CDR (APPEND (CDR X) Y))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A)) (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE Y) A)))). This further simplifies, applying NUMBERP-EVAL$-TIMES-TREE, TIMES-1-ARG1, and COMMUTATIVITY-OF-TIMES, and opening up APPEND, TIMES-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, and EVAL$, to: T. Case 2.7. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y))))) (EQUAL (EVAL$ T (LIST 'TIMES (CAR X) (CAR (APPEND (CDR X) Y))) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (LIST 'FIX (CAR X)) A)))). However this again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, CDR-CONS, TIMES-ZERO, NUMBERP-EVAL$-TIMES-TREE, and EQUAL-TIMES-0, and unfolding TIMES-TREE, FIX, and ZEROP, to the following three new formulas: Case 2.7.3. (IMPLIES (AND (LISTP X) (NOT (NUMBERP (EVAL$ T (CAR (APPEND (CDR X) Y)) A))) (EQUAL 0 (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NOT (EQUAL 0 (EVAL$ T (TIMES-TREE Y) A))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL 0 (EVAL$ T (CAR X) A))). However this again simplifies, applying NUMBERP-EVAL$-TIMES-TREE and EQUAL-TIMES-0, to the new conjecture: (IMPLIES (AND (LISTP X) (NOT (NUMBERP (EVAL$ T (CAR (APPEND (CDR X) Y)) A))) (EQUAL 0 (EVAL$ T (TIMES-TREE (CDR X)) A)) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NOT (EQUAL 0 (EVAL$ T (TIMES-TREE Y) A))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL 0 (EVAL$ T (CAR X) A))), which further simplifies, opening up APPEND, TIMES-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, and EVAL$, to: T. Case 2.7.2. (IMPLIES (AND (LISTP X) (NUMBERP (EVAL$ T (CAR (APPEND (CDR X) Y)) A)) (EQUAL (EVAL$ T (CAR (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (CAR (APPEND (CDR X) Y)) A)) (TIMES (EVAL$ T (TIMES-TREE Y) A) 0))), which again simplifies, appealing to the lemma COMMUTATIVITY-OF-TIMES, and expanding the functions TIMES and EQUAL, to: T. Case 2.7.1. (IMPLIES (AND (LISTP X) (NUMBERP (EVAL$ T (CAR (APPEND (CDR X) Y)) A)) (EQUAL (EVAL$ T (CAR (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (CAR (APPEND (CDR X) Y)) A)) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (CAR X) A)))), which again simplifies, rewriting with the lemma COMMUTATIVITY-OF-TIMES, to: (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (CAR (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (NOT (LISTP (CDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (CAR (APPEND (CDR X) Y)) A)) (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE Y) A)))). However this further simplifies, rewriting with NUMBERP-EVAL$-TIMES-TREE, TIMES-1-ARG1, COMMUTATIVITY-OF-TIMES, REWRITE-EVAL$, and CAR-CONS, and unfolding APPEND, TIMES-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, and FIX, to: (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (CAR Y) A) (EVAL$ T (TIMES-TREE Y) A)) (NOT (LISTP (CDR X))) (LISTP Y) (NOT (LISTP (CDR Y))) (NUMBERP (EVAL$ T (CAR X) A)) (NOT (NUMBERP (EVAL$ T (CAR Y) A)))) (EQUAL (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (CAR Y) A)) (TIMES (EVAL$ T (CAR X) A) 0))), which again simplifies, rewriting with REWRITE-EVAL$ and CAR-CONS, and unfolding the functions TIMES-TREE and FIX, to: T. Case 2.6. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (LISTP (CDR X)) (LISTP (CDDR X)) (NOT (LISTP (APPEND (CDR X) Y)))) (EQUAL (EVAL$ T (LIST 'FIX (CAR X)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (LIST 'TIMES (CAR X) (TIMES-TREE (CDR X))) A)))). However this again simplifies, applying the lemmas EQUAL-TIMES-1, REWRITE-EVAL$, CAR-CONS, CDR-CONS, TIMES-1-ARG1, and COMMUTATIVITY-OF-TIMES, and unfolding the definitions of TIMES-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, and FIX, to: T. Case 2.5. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (LISTP (CDR X)) (LISTP (CDDR X)) (LISTP (APPEND (CDR X) Y)) (LISTP (CDR (APPEND (CDR X) Y)))) (EQUAL (EVAL$ T (LIST 'TIMES (CAR X) (TIMES-TREE (APPEND (CDR X) Y))) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (LIST 'TIMES (CAR X) (TIMES-TREE (CDR X))) A)))), which again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, CDR-CONS, and COMMUTATIVITY2-OF-TIMES, to: T. Case 2.4. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (LISTP (CDR X)) (LISTP (CDDR X)) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y))))) (EQUAL (EVAL$ T (LIST 'TIMES (CAR X) (CAR (APPEND (CDR X) Y))) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (LIST 'TIMES (CAR X) (TIMES-TREE (CDR X))) A)))). However this again simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, CDR-CONS, TIMES-ZERO, COMMUTATIVITY-OF-TIMES, and COMMUTATIVITY2-OF-TIMES, and opening up the definitions of TIMES-TREE, FIX, ZEROP, EQUAL, and TIMES, to: T. Case 2.3. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NOT (LISTP (APPEND (CDR X) Y)))) (EQUAL (EVAL$ T (LIST 'FIX (CAR X)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (LIST 'TIMES (CAR X) (CADR X)) A)))), which again simplifies, applying EQUAL-TIMES-1, REWRITE-EVAL$, CAR-CONS, CDR-CONS, and TIMES-1-ARG1, and expanding the definitions of TIMES-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, EVAL$, and FIX, to the following two new formulas: Case 2.3.2. (IMPLIES (AND (LISTP X) (EQUAL 1 (EVAL$ T (TIMES-TREE Y) A)) (EQUAL 1 (EVAL$ T (TIMES-TREE (CDR X)) A)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NOT (LISTP (APPEND (CDR X) Y))) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL 0 (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (CADR X) A)))). However this again simplifies, opening up TIMES and EQUAL, to: T. Case 2.3.1. (IMPLIES (AND (LISTP X) (EQUAL 1 (EVAL$ T (TIMES-TREE Y) A)) (EQUAL 1 (EVAL$ T (TIMES-TREE (CDR X)) A)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NOT (LISTP (APPEND (CDR X) Y))) (NUMBERP (EVAL$ T (CAR X) A))) (EQUAL (EVAL$ T (CAR X) A) (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (CADR X) A)))), which further simplifies, applying REWRITE-EVAL$, CAR-CONS, TIMES-1-ARG1, and COMMUTATIVITY-OF-TIMES, and unfolding TIMES-TREE and FIX, to: T. Case 2.2. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (LISTP (APPEND (CDR X) Y)) (LISTP (CDR (APPEND (CDR X) Y)))) (EQUAL (EVAL$ T (LIST 'TIMES (CAR X) (TIMES-TREE (APPEND (CDR X) Y))) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (LIST 'TIMES (CAR X) (CADR X)) A)))). However this again simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-CONS, CDR-CONS, and COMMUTATIVITY2-OF-TIMES, to: (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (LISTP (APPEND (CDR X) Y)) (LISTP (CDR (APPEND (CDR X) Y)))) (EQUAL (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A)) (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (CADR X) A)))). But this further simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, COMMUTATIVITY-OF-TIMES, and TIMES-ZERO, and unfolding TIMES-TREE, FIX, EQUAL, TIMES, and ZEROP, to: T. Case 2.1. (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y))))) (EQUAL (EVAL$ T (LIST 'TIMES (CAR X) (CAR (APPEND (CDR X) Y))) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (LIST 'TIMES (CAR X) (CADR X)) A)))). However this again simplifies, applying REWRITE-EVAL$, CAR-CONS, CDR-CONS, TIMES-ZERO, COMMUTATIVITY2-OF-TIMES, NUMBERP-EVAL$-TIMES-TREE, and EQUAL-TIMES-0, and unfolding the functions TIMES-TREE, FIX, and ZEROP, to the following two new goals: Case 2.1.2. (IMPLIES (AND (LISTP X) (NOT (NUMBERP (EVAL$ T (CAR (APPEND (CDR X) Y)) A))) (EQUAL 0 (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NOT (EQUAL 0 (EVAL$ T (CAR X) A))) (NUMBERP (EVAL$ T (CAR X) A)) (NOT (EQUAL 0 (EVAL$ T (TIMES-TREE Y) A))) (NOT (EQUAL 0 (EVAL$ T (CADR X) A)))) (NOT (NUMBERP (EVAL$ T (CADR X) A)))). But this again simplifies, rewriting with NUMBERP-EVAL$-TIMES-TREE and EQUAL-TIMES-0, to the new formula: (IMPLIES (AND (LISTP X) (NOT (NUMBERP (EVAL$ T (CAR (APPEND (CDR X) Y)) A))) (EQUAL 0 (EVAL$ T (TIMES-TREE (CDR X)) A)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y)))) (NOT (EQUAL 0 (EVAL$ T (CAR X) A))) (NUMBERP (EVAL$ T (CAR X) A)) (NOT (EQUAL 0 (EVAL$ T (TIMES-TREE Y) A))) (NOT (EQUAL 0 (EVAL$ T (CADR X) A)))) (NOT (NUMBERP (EVAL$ T (CADR X) A)))), which further simplifies, rewriting with REWRITE-EVAL$ and CAR-CONS, and expanding the functions TIMES-TREE and FIX, to: T. Case 2.1.1. (IMPLIES (AND (LISTP X) (NUMBERP (EVAL$ T (CAR (APPEND (CDR X) Y)) A)) (EQUAL (EVAL$ T (CAR (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y))))) (EQUAL (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (CAR (APPEND (CDR X) Y)) A)) (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (CADR X) A)))). This again simplifies, clearly, to: (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (CAR (APPEND (CDR X) Y)) A) (TIMES (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE (CDR X)) A))) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (LISTP (APPEND (CDR X) Y)) (NOT (LISTP (CDR (APPEND (CDR X) Y))))) (EQUAL (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (CAR (APPEND (CDR X) Y)) A)) (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (CADR X) A)))), which further simplifies, applying REWRITE-EVAL$, CAR-CONS, COMMUTATIVITY-OF-TIMES, and TIMES-ZERO, and unfolding the definitions of TIMES-TREE, FIX, EQUAL, TIMES, and ZEROP, to: T. Case 1. (IMPLIES (NOT (LISTP X)) (EQUAL (EVAL$ T (TIMES-TREE (APPEND X Y)) A) (TIMES (EVAL$ T (TIMES-TREE X) A) (EVAL$ T (TIMES-TREE Y) A)))). This simplifies, applying NUMBERP-EVAL$-TIMES-TREE and TIMES-1-ARG1, and unfolding the definitions of APPEND, TIMES-TREE, CDR, CAR, LISTP, LITATOM, EQUAL, and EVAL$, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.8 0.1 ] TIMES-TREE-APPEND (DISABLE TIMES-TREE-APPEND) [ 0.0 0.0 0.0 ] TIMES-TREE-APPEND-OFF (PROVE-LEMMA TIMES-TREE-OF-TIMES-FRINGE (REWRITE) (EQUAL (EVAL$ T (TIMES-TREE (TIMES-FRINGE X)) A) (FIX (EVAL$ T X A))) ((ENABLE COMMUTATIVITY-OF-TIMES EVAL$-TIMES TIMES-FRINGE TIMES-TREE TIMES-TREE-APPEND TIMES-ZERO) (INDUCT (TIMES-FRINGE X)))) This formula can be simplified, using the abbreviations NOT, OR, and AND, to the following two new conjectures: Case 2. (IMPLIES (AND (LISTP X) (EQUAL (CAR X) 'TIMES) (EQUAL (EVAL$ T (TIMES-TREE (TIMES-FRINGE (CADDR X))) A) (FIX (EVAL$ T (CADDR X) A))) (EQUAL (EVAL$ T (TIMES-TREE (TIMES-FRINGE (CADR X))) A) (FIX (EVAL$ T (CADR X) A)))) (EQUAL (EVAL$ T (TIMES-TREE (TIMES-FRINGE X)) A) (FIX (EVAL$ T X A)))). This simplifies, rewriting with TIMES-TREE-APPEND, TIMES-ZERO, EVAL$-TIMES, and COMMUTATIVITY-OF-TIMES, and unfolding the definitions of FIX, EQUAL, TIMES-FRINGE, TIMES, and ZEROP, to: T. Case 1. (IMPLIES (NOT (AND (LISTP X) (EQUAL (CAR X) 'TIMES))) (EQUAL (EVAL$ T (TIMES-TREE (TIMES-FRINGE X)) A) (FIX (EVAL$ T X A)))), which simplifies, applying CAR-CONS, CDR-CONS, and REWRITE-EVAL$, and expanding AND, TIMES-FRINGE, LISTP, TIMES-TREE, EQUAL, EVAL$, and FIX, to: T. Q.E.D. [ 0.0 0.1 0.0 ] TIMES-TREE-OF-TIMES-FRINGE (DISABLE TIMES-TREE-OF-TIMES-FRINGE) [ 0.0 0.0 0.0 ] TIMES-TREE-OF-TIMES-FRINGE-OFF (DEFN CANCEL-LESSP-TIMES (X) (IF (AND (EQUAL (CAR X) 'LESSP) (EQUAL (CAADR X) 'TIMES) (EQUAL (CAADDR X) 'TIMES)) (IF (LISTP (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) (LIST 'AND (AND-NOT-ZEROP-TREE (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) (LIST 'LESSP (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))) (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADDR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))))) X) X)) Note that: (OR (LISTP (CANCEL-LESSP-TIMES X)) (EQUAL (CANCEL-LESSP-TIMES X) X)) is a theorem. [ 0.0 0.0 0.0 ] CANCEL-LESSP-TIMES (PROVE-LEMMA EVAL$-LESSP-TIMES-TREE-BAGDIFF (REWRITE) (IMPLIES (AND (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (EQUAL (LESSP (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (LESSP (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))) ((ENABLE AND-NOT-ZEROP-TREE BAGDIFF EVAL$-TIMES-MEMBER LESSP-TIMES-CANCELLATION1 SUBBAGP SUBBAGP-CDR1 SUBBAGP-CDR2 TIMES-TREE ZEROP-MAKES-TIMES-TREE-ZERO))) Give the conjecture the name *1. We will try to prove it by induction. The recursive terms in the conjecture suggest seven inductions. They merge into three likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (p (DELETE (CAR X) Y) (CDR X) A (DELETE (CAR X) Z))) (p Y X A Z)) (IMPLIES (AND (LISTP X) (NOT (MEMBER (CAR X) Y))) (p Y X A Z)) (IMPLIES (NOT (LISTP X)) (p Y X A Z))). Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instances chosen for Z and Y. The above induction scheme produces six new goals: Case 6. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (SUBBAGP (CDR X) (DELETE (CAR X) Y))) (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (EQUAL (LESSP (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (LESSP (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))), which simplifies, opening up SUBBAGP, to: T. Case 5. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (SUBBAGP (CDR X) (DELETE (CAR X) Z))) (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (EQUAL (LESSP (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (LESSP (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))), which simplifies, unfolding the definition of SUBBAGP, to: T. Case 4. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE (CDR X)) A)) (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (EQUAL (LESSP (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (LESSP (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))), which simplifies, rewriting with ZEROP-MAKES-TIMES-TREE-ZERO and SUBBAGP-CDR1, and unfolding SUBBAGP, AND-NOT-ZEROP-TREE, BAGDIFF, LESSP, and EQUAL, to: (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE (CDR X)) A)) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (MEMBER (CAR X) Z) (SUBBAGP (CDR X) (DELETE (CAR X) Z)) (LISTP (CDR X)) (EVAL$ T (LIST 'AND (LIST 'NOT (LIST 'ZEROP (CAR X))) (AND-NOT-ZEROP-TREE (CDR X))) A)) (NOT (LESSP (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A)))), which again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and opening up the definitions of ZEROP, NOT, and AND, to: T. Case 3. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (LESSP (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A)) (LESSP (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A))) (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (EQUAL (LESSP (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (LESSP (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))). This simplifies, applying EVAL$-TIMES-MEMBER and LESSP-TIMES-CANCELLATION1, and opening up the functions SUBBAGP, AND-NOT-ZEROP-TREE, and BAGDIFF, to four new conjectures: Case 3.4. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (LESSP (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A)) (LESSP (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (MEMBER (CAR X) Z) (SUBBAGP (CDR X) (DELETE (CAR X) Z)) (NOT (LISTP (CDR X))) (EVAL$ T (LIST 'NOT (LIST 'ZEROP (CAR X))) A) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL (LESSP (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A)) F)), which again simplifies, rewriting with REWRITE-EVAL$ and CAR-CONS, and opening up the functions ZEROP and NOT, to: T. Case 3.3. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (LESSP (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A)) (LESSP (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (MEMBER (CAR X) Z) (SUBBAGP (CDR X) (DELETE (CAR X) Z)) (NOT (LISTP (CDR X))) (EVAL$ T (LIST 'NOT (LIST 'ZEROP (CAR X))) A) (EQUAL (EVAL$ T (CAR X) A) 0)) (EQUAL (LESSP (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A)) F)). However this again simplifies, applying REWRITE-EVAL$ and CAR-CONS, and opening up the definitions of ZEROP and NOT, to: T. Case 3.2. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (LESSP (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A)) (LESSP (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (MEMBER (CAR X) Z) (SUBBAGP (CDR X) (DELETE (CAR X) Z)) (LISTP (CDR X)) (EVAL$ T (LIST 'AND (LIST 'NOT (LIST 'ZEROP (CAR X))) (AND-NOT-ZEROP-TREE (CDR X))) A) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL (LESSP (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A)) F)). This again simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and expanding the functions ZEROP, NOT, and AND, to: T. Case 3.1. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (LESSP (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A)) (LESSP (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (MEMBER (CAR X) Z) (SUBBAGP (CDR X) (DELETE (CAR X) Z)) (LISTP (CDR X)) (EVAL$ T (LIST 'AND (LIST 'NOT (LIST 'ZEROP (CAR X))) (AND-NOT-ZEROP-TREE (CDR X))) A) (EQUAL (EVAL$ T (CAR X) A) 0)) (EQUAL (LESSP (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A)) F)), which again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and expanding ZEROP, NOT, and AND, to: T. Case 2. (IMPLIES (AND (LISTP X) (NOT (MEMBER (CAR X) Y)) (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (EQUAL (LESSP (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (LESSP (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))). This simplifies, opening up SUBBAGP, to: T. Case 1. (IMPLIES (AND (NOT (LISTP X)) (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (EQUAL (LESSP (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (LESSP (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))). This simplifies, applying SUBBAGP-CDR2 and REWRITE-EVAL$, and expanding the functions SUBBAGP, AND-NOT-ZEROP-TREE, and BAGDIFF, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.2 0.0 ] EVAL$-LESSP-TIMES-TREE-BAGDIFF (DISABLE EVAL$-LESSP-TIMES-TREE-BAGDIFF) [ 0.0 0.0 0.0 ] EVAL$-LESSP-TIMES-TREE-BAGDIFF-OFF (PROVE-LEMMA ZEROP-MAKES-LESSP-FALSE-BRIDGE (REWRITE) (IMPLIES (AND (EQUAL (CAR X) 'TIMES) (EQUAL (CAR Y) 'TIMES) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE (BAGINT (TIMES-FRINGE X) (TIMES-FRINGE Y))) A))) (EQUAL (LESSP (TIMES (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)) (TIMES (EVAL$ T (CADR Y) A) (EVAL$ T (CADDR Y) A))) F)) ((ENABLE AND-NOT-ZEROP-TREE BAGINT COMMUTATIVITY-OF-TIMES DELETE EQUAL-TIMES-0 EVAL$-TIMES SUBBAGP-BAGINT1 SUBBAGP-BAGINT2 TIMES-FRINGE TIMES-TREE TIMES-TREE-APPEND TIMES-TREE-OF-TIMES-FRINGE TIMES-ZERO) (USE (ZEROP-MAKES-TIMES-TREE-ZERO (X (BAGINT (TIMES-FRINGE X) (TIMES-FRINGE Y))) (Y (TIMES-FRINGE X))) (ZEROP-MAKES-TIMES-TREE-ZERO (X (BAGINT (TIMES-FRINGE X) (TIMES-FRINGE Y))) (Y (TIMES-FRINGE Y)))))) This simplifies, applying SUBBAGP-BAGINT1, CDR-CONS, MEMBER-NON-LIST, CAR-CONS, REWRITE-EVAL$, CDR-NLISTP, EVAL$-TIMES, CAR-NLISTP, SUBBAGP-BAGINT2, TIMES-TREE-OF-TIMES-FRINGE, TIMES-TREE-APPEND, and EQUAL-TIMES-0, and unfolding the definitions of EQUAL, TIMES-FRINGE, NOT, AND, IMPLIES, BAGINT, DELETE, MEMBER, LISTP, TIMES-TREE, CAR, LITATOM, EVAL$, CDR, TIMES, and FIX, to: (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) A) 0) (LISTP Y) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (TIMES-FRINGE (CADR Y)) (TIMES-FRINGE (CADDR Y)))) A) 0) (EQUAL (CAR X) 'TIMES) (EQUAL (CAR Y) 'TIMES) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE (BAGINT (APPEND (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))) (APPEND (TIMES-FRINGE (CADR Y)) (TIMES-FRINGE (CADDR Y))))) A))) (NOT (LESSP (TIMES (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)) (TIMES (EVAL$ T (CADR Y) A) (EVAL$ T (CADDR Y) A))))). This again simplifies, applying TIMES-TREE-OF-TIMES-FRINGE, TIMES-TREE-APPEND, EQUAL-TIMES-0, COMMUTATIVITY-OF-TIMES, and TIMES-ZERO, and unfolding the functions EQUAL, TIMES, LESSP, and ZEROP, to: T. Q.E.D. [ 0.0 0.6 0.0 ] ZEROP-MAKES-LESSP-FALSE-BRIDGE (DISABLE ZEROP-MAKES-LESSP-FALSE-BRIDGE) [ 0.0 0.0 0.0 ] ZEROP-MAKES-LESSP-FALSE-BRIDGE-OFF (PROVE-LEMMA CORRECTNESS-OF-CANCEL-LESSP-TIMES ((META LESSP)) (EQUAL (EVAL$ T X A) (EVAL$ T (CANCEL-LESSP-TIMES X) A)) ((ENABLE CANCEL-LESSP-TIMES EVAL$-LESSP-TIMES-TREE-BAGDIFF EVAL$-LESSP EVAL$-TIMES SUBBAGP-BAGINT1 SUBBAGP-BAGINT2 TIMES-TREE-OF-TIMES-FRINGE ZEROP-MAKES-LESSP-FALSE-BRIDGE))) This formula simplifies, opening up the function CANCEL-LESSP-TIMES, to: (IMPLIES (AND (EQUAL (CAR X) 'LESSP) (EQUAL (CAADR X) 'TIMES) (EQUAL (CAADDR X) 'TIMES) (LISTP (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))) (EQUAL (EVAL$ T X A) (EVAL$ T (LIST 'AND (AND-NOT-ZEROP-TREE (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) (LIST 'LESSP (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))) (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADDR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))))) A))), which again simplifies, rewriting with EVAL$-TIMES, EVAL$-LESSP, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and opening up AND, to the following two new formulas: Case 2. (IMPLIES (AND (EQUAL (CAR X) 'LESSP) (EQUAL (CAADR X) 'TIMES) (EQUAL (CAADDR X) 'TIMES) (LISTP (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) A))) (EQUAL (LESSP (TIMES (EVAL$ T (CADADR X) A) (EVAL$ T (CADDADR X) A)) (TIMES (EVAL$ T (CADADDR X) A) (EVAL$ T (CADDADDR X) A))) F)). However this again simplifies, applying ZEROP-MAKES-LESSP-FALSE-BRIDGE, and unfolding the definition of EQUAL, to: T. Case 1. (IMPLIES (AND (EQUAL (CAR X) 'LESSP) (EQUAL (CAADR X) 'TIMES) (EQUAL (CAADDR X) 'TIMES) (LISTP (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) (EVAL$ T (AND-NOT-ZEROP-TREE (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) A)) (EQUAL (LESSP (TIMES (EVAL$ T (CADADR X) A) (EVAL$ T (CADDADR X) A)) (TIMES (EVAL$ T (CADADDR X) A) (EVAL$ T (CADDADDR X) A))) (LESSP (EVAL$ T (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADDR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))) A)))). This again simplifies, rewriting with SUBBAGP-BAGINT2, SUBBAGP-BAGINT1, EVAL$-TIMES, TIMES-TREE-OF-TIMES-FRINGE, and EVAL$-LESSP-TIMES-TREE-BAGDIFF, to: T. Q.E.D. [ 0.0 0.2 0.0 ] CORRECTNESS-OF-CANCEL-LESSP-TIMES (DEFN CANCEL-EQUAL-TIMES (X) (IF (AND (EQUAL (CAR X) 'EQUAL) (EQUAL (CAADR X) 'TIMES) (EQUAL (CAADDR X) 'TIMES)) (IF (LISTP (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) (LIST 'OR (OR-ZEROP-TREE (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) (LIST 'EQUAL (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))) (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADDR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))))) X) X)) Note that: (OR (LISTP (CANCEL-EQUAL-TIMES X)) (EQUAL (CANCEL-EQUAL-TIMES X) X)) is a theorem. [ 0.0 0.0 0.0 ] CANCEL-EQUAL-TIMES (PROVE-LEMMA ZEROP-MAKES-EQUAL-TRUE-BRIDGE (REWRITE) (IMPLIES (AND (EQUAL (CAR X) 'TIMES) (EQUAL (CAR Y) 'TIMES) (EVAL$ T (OR-ZEROP-TREE (BAGINT (TIMES-FRINGE X) (TIMES-FRINGE Y))) A)) (EQUAL (EQUAL (TIMES (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)) (TIMES (EVAL$ T (CADR Y) A) (EVAL$ T (CADDR Y) A))) T)) ((ENABLE BAGINT COMMUTATIVITY-OF-TIMES DELETE EQUAL-TIMES-0 EVAL$-TIMES OR-ZEROP-TREE SUBBAGP-BAGINT1 SUBBAGP-BAGINT2 TIMES-FRINGE TIMES-TREE TIMES-TREE-APPEND TIMES-TREE-OF-TIMES-FRINGE TIMES-ZERO) (USE (ZEROP-MAKES-TIMES-TREE-ZERO2 (X (BAGINT (TIMES-FRINGE X) (TIMES-FRINGE Y))) (Y (TIMES-FRINGE X))) (ZEROP-MAKES-TIMES-TREE-ZERO2 (X (BAGINT (TIMES-FRINGE X) (TIMES-FRINGE Y))) (Y (TIMES-FRINGE Y)))))) This formula simplifies, rewriting with SUBBAGP-BAGINT1, CDR-CONS, MEMBER-NON-LIST, CAR-CONS, REWRITE-EVAL$, CDR-NLISTP, EVAL$-TIMES, CAR-NLISTP, SUBBAGP-BAGINT2, TIMES-TREE-OF-TIMES-FRINGE, TIMES-TREE-APPEND, and EQUAL-TIMES-0, and opening up EQUAL, TIMES-FRINGE, AND, IMPLIES, BAGINT, DELETE, MEMBER, LISTP, TIMES-TREE, CAR, LITATOM, EVAL$, CDR, TIMES, and FIX, to the formula: (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) A) 0) (LISTP Y) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (TIMES-FRINGE (CADR Y)) (TIMES-FRINGE (CADDR Y)))) A) 0) (EQUAL (CAR X) 'TIMES) (EQUAL (CAR Y) 'TIMES) (EVAL$ T (OR-ZEROP-TREE (BAGINT (APPEND (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))) (APPEND (TIMES-FRINGE (CADR Y)) (TIMES-FRINGE (CADDR Y))))) A)) (EQUAL (TIMES (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)) (TIMES (EVAL$ T (CADR Y) A) (EVAL$ T (CADDR Y) A)))). This again simplifies, applying the lemmas TIMES-TREE-OF-TIMES-FRINGE, TIMES-TREE-APPEND, EQUAL-TIMES-0, COMMUTATIVITY-OF-TIMES, and TIMES-ZERO, and expanding the definitions of EQUAL, TIMES, and ZEROP, to: T. Q.E.D. [ 0.0 0.8 0.0 ] ZEROP-MAKES-EQUAL-TRUE-BRIDGE (DISABLE ZEROP-MAKES-EQUAL-TRUE-BRIDGE) [ 0.0 0.0 0.0 ] ZEROP-MAKES-EQUAL-TRUE-BRIDGE-OFF (PROVE-LEMMA EVAL$-EQUAL-TIMES-TREE-BAGDIFF (REWRITE) (IMPLIES (AND (SUBBAGP X Y) (SUBBAGP X Z) (NOT (EVAL$ T (OR-ZEROP-TREE X) A))) (EQUAL (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (EQUAL (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))) ((ENABLE AND-NOT-ZEROP-TREE BAGDIFF EQUAL-TIMES-ARG1 EVAL$-TIMES-MEMBER NUMBERP-EVAL$-TIMES-TREE OR-ZEROP-TREE OR-ZEROP-TREE-IS-NOT-ZEROP-TREE SUBBAGP SUBBAGP-CDR1 SUBBAGP-CDR2 TIMES-TREE ZEROP-MAKES-TIMES-TREE-ZERO))) This conjecture can be simplified, using the abbreviations OR-ZEROP-TREE-IS-NOT-ZEROP-TREE, NOT, AND, and IMPLIES, to: (IMPLIES (AND (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (EQUAL (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (EQUAL (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))). This simplifies, obviously, to the following two new conjectures: Case 2. (IMPLIES (AND (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A) (NOT (EQUAL (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))) (NOT (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)))). Call the above conjecture *1. Case 1. (IMPLIES (AND (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A) (EQUAL (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A))) (EQUAL (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) T)). This again simplifies, clearly, to the new conjecture: (IMPLIES (AND (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A) (EQUAL (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A))) (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A))), which we would normally push and work on later by induction. But if we must use induction to prove the input conjecture, we prefer to induct on the original formulation of the problem. Thus we will disregard all that we have previously done, give the name *1 to the original input, and work on it. So now let us return to: (IMPLIES (AND (SUBBAGP X Y) (SUBBAGP X Z) (NOT (EVAL$ T (OR-ZEROP-TREE X) A))) (EQUAL (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (EQUAL (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))), named *1. Let us appeal to the induction principle. There are seven plausible inductions. They merge into three likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (p (DELETE (CAR X) Y) (CDR X) A (DELETE (CAR X) Z))) (p Y X A Z)) (IMPLIES (AND (LISTP X) (NOT (MEMBER (CAR X) Y))) (p Y X A Z)) (IMPLIES (NOT (LISTP X)) (p Y X A Z))). Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instances chosen for Z and Y. The above induction scheme produces six new formulas: Case 6. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (SUBBAGP (CDR X) (DELETE (CAR X) Y))) (SUBBAGP X Y) (SUBBAGP X Z) (NOT (EVAL$ T (OR-ZEROP-TREE X) A))) (EQUAL (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (EQUAL (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))), which simplifies, opening up the function SUBBAGP, to: T. Case 5. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (SUBBAGP (CDR X) (DELETE (CAR X) Z))) (SUBBAGP X Y) (SUBBAGP X Z) (NOT (EVAL$ T (OR-ZEROP-TREE X) A))) (EQUAL (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (EQUAL (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))), which simplifies, expanding SUBBAGP, to: T. Case 4. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EVAL$ T (OR-ZEROP-TREE (CDR X)) A) (SUBBAGP X Y) (SUBBAGP X Z) (NOT (EVAL$ T (OR-ZEROP-TREE X) A))) (EQUAL (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (EQUAL (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))), which simplifies, applying OR-ZEROP-TREE-IS-NOT-ZEROP-TREE, ZEROP-MAKES-TIMES-TREE-ZERO, and SUBBAGP-CDR1, and unfolding the functions SUBBAGP, OR-ZEROP-TREE, BAGDIFF, and EQUAL, to the following two new formulas: Case 4.2. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE (CDR X)) A)) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (MEMBER (CAR X) Z) (SUBBAGP (CDR X) (DELETE (CAR X) Z)) (LISTP (CDR X)) (LISTP (CDDR X)) (NOT (EVAL$ T (LIST 'OR (LIST 'ZEROP (CAR X)) (OR-ZEROP-TREE (CDR X))) A))) (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A))). However this again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, CDR-CONS, and OR-ZEROP-TREE-IS-NOT-ZEROP-TREE, and expanding the functions ZEROP and OR, to: T. Case 4.1. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE (CDR X)) A)) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (MEMBER (CAR X) Z) (SUBBAGP (CDR X) (DELETE (CAR X) Z)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NOT (EVAL$ T (LIST 'OR (LIST 'ZEROP (CAR X)) (LIST 'ZEROP (CADR X))) A))) (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A))). But this again simplifies, applying REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and unfolding the definitions of AND-NOT-ZEROP-TREE, ZEROP, NOT, and OR, to: T. Case 3. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A)) (EQUAL (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A))) (SUBBAGP X Y) (SUBBAGP X Z) (NOT (EVAL$ T (OR-ZEROP-TREE X) A))) (EQUAL (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (EQUAL (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))). This simplifies, rewriting with the lemma EVAL$-TIMES-MEMBER, and unfolding the functions SUBBAGP, OR-ZEROP-TREE, BAGDIFF, and EQUAL, to the following three new conjectures: Case 3.3. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (EQUAL (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A))) (NOT (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (MEMBER (CAR X) Z) (SUBBAGP (CDR X) (DELETE (CAR X) Z)) (NOT (LISTP (CDR X))) (NOT (EVAL$ T (LIST 'ZEROP (CAR X)) A))) (NOT (EQUAL (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A)) (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A))))). But this again simplifies, appealing to the lemmas REWRITE-EVAL$, CAR-CONS, NUMBERP-EVAL$-TIMES-TREE, and EQUAL-TIMES-ARG1, and unfolding ZEROP, to: T. Case 3.2. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (EQUAL (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A))) (NOT (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (MEMBER (CAR X) Z) (SUBBAGP (CDR X) (DELETE (CAR X) Z)) (LISTP (CDR X)) (LISTP (CDDR X)) (NOT (EVAL$ T (LIST 'OR (LIST 'ZEROP (CAR X)) (OR-ZEROP-TREE (CDR X))) A))) (NOT (EQUAL (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A)) (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A))))), which again simplifies, applying REWRITE-EVAL$, CAR-CONS, CDR-CONS, OR-ZEROP-TREE-IS-NOT-ZEROP-TREE, NUMBERP-EVAL$-TIMES-TREE, and EQUAL-TIMES-ARG1, and expanding ZEROP and OR, to: T. Case 3.1. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (EQUAL (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A))) (NOT (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (MEMBER (CAR X) Z) (SUBBAGP (CDR X) (DELETE (CAR X) Z)) (LISTP (CDR X)) (NOT (LISTP (CDDR X))) (NOT (EVAL$ T (LIST 'OR (LIST 'ZEROP (CAR X)) (LIST 'ZEROP (CADR X))) A))) (NOT (EQUAL (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A)) (TIMES (EVAL$ T (CAR X) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A))))). However this again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, CDR-CONS, NUMBERP-EVAL$-TIMES-TREE, and EQUAL-TIMES-ARG1, and expanding the functions ZEROP and OR, to: T. Case 2. (IMPLIES (AND (LISTP X) (NOT (MEMBER (CAR X) Y)) (SUBBAGP X Y) (SUBBAGP X Z) (NOT (EVAL$ T (OR-ZEROP-TREE X) A))) (EQUAL (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (EQUAL (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))). This simplifies, expanding the definition of SUBBAGP, to: T. Case 1. (IMPLIES (AND (NOT (LISTP X)) (SUBBAGP X Y) (SUBBAGP X Z) (NOT (EVAL$ T (OR-ZEROP-TREE X) A))) (EQUAL (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (EQUAL (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))). This simplifies, rewriting with SUBBAGP-CDR2 and REWRITE-EVAL$, and unfolding the functions SUBBAGP, OR-ZEROP-TREE, and BAGDIFF, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.3 0.1 ] EVAL$-EQUAL-TIMES-TREE-BAGDIFF (DISABLE EVAL$-EQUAL-TIMES-TREE-BAGDIFF) [ 0.0 0.0 0.0 ] EVAL$-EQUAL-TIMES-TREE-BAGDIFF-OFF (PROVE-LEMMA CANCEL-EQUAL-TIMES-PRESERVES-INEQUALITY (REWRITE) (IMPLIES (AND (SUBBAGP Z X) (SUBBAGP Z Y) (NOT (EQUAL (EVAL$ T (TIMES-TREE X) A) (EVAL$ T (TIMES-TREE Y) A)))) (NOT (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF X Z)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Y Z)) A)))) ((ENABLE BAGDIFF EVAL$-TIMES-MEMBER SUBBAGP SUBBAGP-CDR2 TIMES-TREE))) Call the conjecture *1. Perhaps we can prove it by induction. The recursive terms in the conjecture suggest six inductions. They merge into three likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP Z) (MEMBER (CAR Z) X) (p (DELETE (CAR Z) X) (CDR Z) A (DELETE (CAR Z) Y))) (p X Z A Y)) (IMPLIES (AND (LISTP Z) (NOT (MEMBER (CAR Z) X))) (p X Z A Y)) (IMPLIES (NOT (LISTP Z)) (p X Z A Y))). Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT Z) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instances chosen for Y and X. The above induction scheme leads to the following six new goals: Case 6. (IMPLIES (AND (LISTP Z) (MEMBER (CAR Z) X) (NOT (SUBBAGP (CDR Z) (DELETE (CAR Z) X))) (SUBBAGP Z X) (SUBBAGP Z Y) (NOT (EQUAL (EVAL$ T (TIMES-TREE X) A) (EVAL$ T (TIMES-TREE Y) A)))) (NOT (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF X Z)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Y Z)) A)))). This simplifies, opening up the definition of SUBBAGP, to: T. Case 5. (IMPLIES (AND (LISTP Z) (MEMBER (CAR Z) X) (NOT (SUBBAGP (CDR Z) (DELETE (CAR Z) Y))) (SUBBAGP Z X) (SUBBAGP Z Y) (NOT (EQUAL (EVAL$ T (TIMES-TREE X) A) (EVAL$ T (TIMES-TREE Y) A)))) (NOT (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF X Z)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Y Z)) A)))). This simplifies, expanding the function SUBBAGP, to: T. Case 4. (IMPLIES (AND (LISTP Z) (MEMBER (CAR Z) X) (EQUAL (EVAL$ T (TIMES-TREE (DELETE (CAR Z) X)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR Z) Y)) A)) (SUBBAGP Z X) (SUBBAGP Z Y) (NOT (EQUAL (EVAL$ T (TIMES-TREE X) A) (EVAL$ T (TIMES-TREE Y) A)))) (NOT (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF X Z)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Y Z)) A)))). This simplifies, applying EVAL$-TIMES-MEMBER, and expanding the function SUBBAGP, to: T. Case 3. (IMPLIES (AND (LISTP Z) (MEMBER (CAR Z) X) (NOT (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR Z) X) (CDR Z))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR Z) Y) (CDR Z))) A))) (SUBBAGP Z X) (SUBBAGP Z Y) (NOT (EQUAL (EVAL$ T (TIMES-TREE X) A) (EVAL$ T (TIMES-TREE Y) A)))) (NOT (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF X Z)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Y Z)) A)))), which simplifies, applying the lemma EVAL$-TIMES-MEMBER, and expanding the functions SUBBAGP and BAGDIFF, to: T. Case 2. (IMPLIES (AND (LISTP Z) (NOT (MEMBER (CAR Z) X)) (SUBBAGP Z X) (SUBBAGP Z Y) (NOT (EQUAL (EVAL$ T (TIMES-TREE X) A) (EVAL$ T (TIMES-TREE Y) A)))) (NOT (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF X Z)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Y Z)) A)))), which simplifies, unfolding the function SUBBAGP, to: T. Case 1. (IMPLIES (AND (NOT (LISTP Z)) (SUBBAGP Z X) (SUBBAGP Z Y) (NOT (EQUAL (EVAL$ T (TIMES-TREE X) A) (EVAL$ T (TIMES-TREE Y) A)))) (NOT (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF X Z)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Y Z)) A)))), which simplifies, rewriting with the lemma SUBBAGP-CDR2, and opening up SUBBAGP and BAGDIFF, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] CANCEL-EQUAL-TIMES-PRESERVES-INEQUALITY (DISABLE CANCEL-EQUAL-TIMES-PRESERVES-INEQUALITY) [ 0.0 0.0 0.0 ] CANCEL-EQUAL-TIMES-PRESERVES-INEQUALITY-OFF (PROVE-LEMMA CANCEL-EQUAL-TIMES-PRESERVES-INEQUALITY-BRIDGE (REWRITE) (IMPLIES (AND (EQUAL (CAR X) 'TIMES) (EQUAL (CAR Y) 'TIMES) (NOT (EQUAL (TIMES (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)) (TIMES (EVAL$ T (CADR Y) A) (EVAL$ T (CADDR Y) A))))) (NOT (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF (TIMES-FRINGE X) (BAGINT (TIMES-FRINGE X) (TIMES-FRINGE Y)))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (TIMES-FRINGE Y) (BAGINT (TIMES-FRINGE X) (TIMES-FRINGE Y)))) A)))) ((ENABLE BAGDIFF BAGINT COMMUTATIVITY-OF-TIMES SUBBAGP-BAGINT1 SUBBAGP-BAGINT2 TIMES-FRINGE TIMES-TREE TIMES-TREE-APPEND TIMES-TREE-OF-TIMES-FRINGE TIMES-ZERO) (USE (CANCEL-EQUAL-TIMES-PRESERVES-INEQUALITY (Z (BAGINT (TIMES-FRINGE X) (TIMES-FRINGE Y))) (X (TIMES-FRINGE X)) (Y (TIMES-FRINGE Y)))))) This simplifies, applying SUBBAGP-BAGINT1, SUBBAGP-BAGINT2, and CAR-NLISTP, and opening up EQUAL, TIMES-FRINGE, NOT, AND, and IMPLIES, to: (IMPLIES (AND (LISTP Y) (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) A) (EVAL$ T (TIMES-TREE (APPEND (TIMES-FRINGE (CADR Y)) (TIMES-FRINGE (CADDR Y)))) A)) (EQUAL (CAR X) 'TIMES) (EQUAL (CAR Y) 'TIMES) (NOT (EQUAL (TIMES (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)) (TIMES (EVAL$ T (CADR Y) A) (EVAL$ T (CADDR Y) A))))) (NOT (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF (APPEND (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))) (BAGINT (APPEND (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))) (APPEND (TIMES-FRINGE (CADR Y)) (TIMES-FRINGE (CADDR Y)))))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (APPEND (TIMES-FRINGE (CADR Y)) (TIMES-FRINGE (CADDR Y))) (BAGINT (APPEND (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))) (APPEND (TIMES-FRINGE (CADR Y)) (TIMES-FRINGE (CADDR Y)))))) A)))), which again simplifies, rewriting with TIMES-TREE-OF-TIMES-FRINGE, TIMES-TREE-APPEND, TIMES-ZERO, and COMMUTATIVITY-OF-TIMES, and expanding the functions TIMES, EQUAL, and ZEROP, to: T. Q.E.D. [ 0.0 0.3 0.0 ] CANCEL-EQUAL-TIMES-PRESERVES-INEQUALITY-BRIDGE (DISABLE CANCEL-EQUAL-TIMES-PRESERVES-INEQUALITY-BRIDGE) [ 0.0 0.0 0.0 ] CANCEL-EQUAL-TIMES-PRESERVES-INEQUALITY-BRIDGE-OFF (PROVE-LEMMA CORRECTNESS-OF-CANCEL-EQUAL-TIMES ((META EQUAL)) (EQUAL (EVAL$ T X A) (EVAL$ T (CANCEL-EQUAL-TIMES X) A)) ((ENABLE CANCEL-EQUAL-TIMES CANCEL-EQUAL-TIMES-PRESERVES-INEQUALITY-BRIDGE EVAL$-EQUAL EVAL$-EQUAL-TIMES-TREE-BAGDIFF EVAL$-TIMES SUBBAGP-BAGINT1 SUBBAGP-BAGINT2 TIMES-TREE-OF-TIMES-FRINGE ZEROP-MAKES-EQUAL-TRUE-BRIDGE))) This formula simplifies, opening up the function CANCEL-EQUAL-TIMES, to: (IMPLIES (AND (EQUAL (CAR X) 'EQUAL) (EQUAL (CAADR X) 'TIMES) (EQUAL (CAADDR X) 'TIMES) (LISTP (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))) (EQUAL (EVAL$ T X A) (EVAL$ T (LIST 'OR (OR-ZEROP-TREE (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) (LIST 'EQUAL (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))) (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADDR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))))) A))), which again simplifies, rewriting with EVAL$-TIMES, EVAL$-EQUAL, REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and opening up OR, to the following three new formulas: Case 3. (IMPLIES (AND (EQUAL (CAR X) 'EQUAL) (EQUAL (CAADR X) 'TIMES) (EQUAL (CAADDR X) 'TIMES) (LISTP (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) (NOT (EQUAL (TIMES (EVAL$ T (CADADR X) A) (EVAL$ T (CADDADR X) A)) (TIMES (EVAL$ T (CADADDR X) A) (EVAL$ T (CADDADDR X) A))))) (NOT (EVAL$ T (OR-ZEROP-TREE (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) A))). However this again simplifies, applying ZEROP-MAKES-EQUAL-TRUE-BRIDGE, to: T. Case 2. (IMPLIES (AND (EQUAL (CAR X) 'EQUAL) (EQUAL (CAADR X) 'TIMES) (EQUAL (CAADDR X) 'TIMES) (LISTP (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) (NOT (EQUAL (TIMES (EVAL$ T (CADADR X) A) (EVAL$ T (CADDADR X) A)) (TIMES (EVAL$ T (CADADDR X) A) (EVAL$ T (CADDADDR X) A))))) (NOT (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADDR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))) A)))). This again simplifies, applying CANCEL-EQUAL-TIMES-PRESERVES-INEQUALITY-BRIDGE, to: T. Case 1. (IMPLIES (AND (EQUAL (CAR X) 'EQUAL) (EQUAL (CAADR X) 'TIMES) (EQUAL (CAADDR X) 'TIMES) (LISTP (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) (EQUAL (TIMES (EVAL$ T (CADADR X) A) (EVAL$ T (CADDADR X) A)) (TIMES (EVAL$ T (CADADDR X) A) (EVAL$ T (CADDADDR X) A))) (NOT (EVAL$ T (OR-ZEROP-TREE (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) A))) (EQUAL (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADDR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))) A)) T)). However this again simplifies, applying SUBBAGP-BAGINT2, SUBBAGP-BAGINT1, EVAL$-TIMES, TIMES-TREE-OF-TIMES-FRINGE, and EVAL$-EQUAL-TIMES-TREE-BAGDIFF, and unfolding the function EQUAL, to: T. Q.E.D. [ 0.0 0.3 0.0 ] CORRECTNESS-OF-CANCEL-EQUAL-TIMES (PROVE-LEMMA LESSP-REMAINDER (REWRITE GENERALIZE) (EQUAL (LESSP (REMAINDER X Y) Y) (NOT (ZEROP Y)))) This conjecture simplifies, expanding ZEROP and NOT, to the following three new goals: Case 3. (IMPLIES (NOT (NUMBERP Y)) (EQUAL (LESSP (REMAINDER X Y) Y) F)). However this again simplifies, expanding the definitions of REMAINDER, LESSP, and EQUAL, to: T. Case 2. (IMPLIES (EQUAL Y 0) (EQUAL (LESSP (REMAINDER X Y) Y) F)), which again simplifies, expanding the definitions of EQUAL, REMAINDER, and LESSP, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL Y 0)) (NUMBERP Y)) (EQUAL (LESSP (REMAINDER X Y) Y) T)), which again simplifies, trivially, to the new formula: (IMPLIES (AND (NOT (EQUAL Y 0)) (NUMBERP Y)) (LESSP (REMAINDER X Y) Y)), which we will name *1. We will appeal to induction. There are two plausible inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (ZEROP Y) (p X Y)) (IMPLIES (AND (NOT (ZEROP Y)) (LESSP X Y)) (p X Y)) (IMPLIES (AND (NOT (ZEROP Y)) (NOT (LESSP X Y)) (p (DIFFERENCE X Y) Y)) (p X Y))). Linear arithmetic, the lemmas COUNT-NUMBERP and COUNT-NOT-LESSP, and the definition of ZEROP establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme produces the following three new formulas: Case 3. (IMPLIES (AND (ZEROP Y) (NOT (EQUAL Y 0)) (NUMBERP Y)) (LESSP (REMAINDER X Y) Y)). This simplifies, opening up ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP Y)) (LESSP X Y) (NOT (EQUAL Y 0)) (NUMBERP Y)) (LESSP (REMAINDER X Y) Y)). This simplifies, opening up the definitions of ZEROP and REMAINDER, to: (IMPLIES (AND (LESSP X Y) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (NUMBERP X))) (LESSP 0 Y)), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP Y)) (NOT (LESSP X Y)) (LESSP (REMAINDER (DIFFERENCE X Y) Y) Y) (NOT (EQUAL Y 0)) (NUMBERP Y)) (LESSP (REMAINDER X Y) Y)), which simplifies, unfolding the functions ZEROP and REMAINDER, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-REMAINDER (PROVE-LEMMA REMAINDER-NOOP (REWRITE) (IMPLIES (LESSP A B) (EQUAL (REMAINDER A B) (FIX A)))) This formula simplifies, expanding the functions REMAINDER and FIX, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-NOOP (PROVE-LEMMA REMAINDER-OF-NON-NUMBER (REWRITE) (IMPLIES (NOT (NUMBERP A)) (EQUAL (REMAINDER A N) (REMAINDER 0 N)))) This simplifies, opening up the functions LESSP, REMAINDER, EQUAL, and NUMBERP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-OF-NON-NUMBER (PROVE-LEMMA REMAINDER-ZERO (REWRITE) (IMPLIES (ZEROP X) (EQUAL (REMAINDER Y X) (FIX Y)))) This conjecture simplifies, expanding ZEROP, EQUAL, REMAINDER, and FIX, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-ZERO (PROVE-LEMMA PLUS-REMAINDER-TIMES-QUOTIENT (REWRITE) (EQUAL (PLUS (REMAINDER X Y) (TIMES Y (QUOTIENT X Y))) (FIX X)) ((ENABLE COMMUTATIVITY2-OF-PLUS COMMUTATIVITY-OF-PLUS TIMES-ZERO TIMES-ADD1 COMMUTATIVITY-OF-TIMES))) WARNING: the previously added lemma, COMMUTATIVITY-OF-PLUS, could be applied whenever the newly proposed PLUS-REMAINDER-TIMES-QUOTIENT could! This formula simplifies, opening up the function FIX, to the following two new goals: Case 2. (IMPLIES (NOT (NUMBERP X)) (EQUAL (PLUS (REMAINDER X Y) (TIMES Y (QUOTIENT X Y))) 0)). However this again simplifies, rewriting with REMAINDER-OF-NON-NUMBER and COMMUTATIVITY-OF-TIMES, and opening up LESSP, EQUAL, NUMBERP, REMAINDER, QUOTIENT, TIMES, and PLUS, to: T. Case 1. (IMPLIES (NUMBERP X) (EQUAL (PLUS (REMAINDER X Y) (TIMES Y (QUOTIENT X Y))) X)). Call the above conjecture *1. We will appeal to induction. Three inductions are suggested by terms in the conjecture. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (ZEROP Y) (p X Y)) (IMPLIES (AND (NOT (ZEROP Y)) (LESSP X Y)) (p X Y)) (IMPLIES (AND (NOT (ZEROP Y)) (NOT (LESSP X Y)) (p (DIFFERENCE X Y) Y)) (p X Y))). Linear arithmetic, the lemmas COUNT-NUMBERP and COUNT-NOT-LESSP, and the definition of ZEROP can be used to show that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme produces three new goals: Case 3. (IMPLIES (AND (ZEROP Y) (NUMBERP X)) (EQUAL (PLUS (REMAINDER X Y) (TIMES Y (QUOTIENT X Y))) X)), which simplifies, applying REMAINDER-ZERO, PLUS-ZERO-ARG2, TIMES-ZERO, and COMMUTATIVITY-OF-TIMES, and unfolding the functions ZEROP, EQUAL, QUOTIENT, and TIMES, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP Y)) (LESSP X Y) (NUMBERP X)) (EQUAL (PLUS (REMAINDER X Y) (TIMES Y (QUOTIENT X Y))) X)). This simplifies, rewriting with the lemmas REMAINDER-NOOP, COMMUTATIVITY-OF-TIMES, and PLUS-ZERO-ARG2, and opening up the functions ZEROP, QUOTIENT, EQUAL, and TIMES, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP Y)) (NOT (LESSP X Y)) (EQUAL (PLUS (REMAINDER (DIFFERENCE X Y) Y) (TIMES Y (QUOTIENT (DIFFERENCE X Y) Y))) (DIFFERENCE X Y)) (NUMBERP X)) (EQUAL (PLUS (REMAINDER X Y) (TIMES Y (QUOTIENT X Y))) X)). This simplifies, rewriting with TIMES-ADD1, COMMUTATIVITY-OF-PLUS, CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS, PLUS-ZERO-ARG2, PLUS-DIFFERENCE-ARG2, and COMMUTATIVITY2-OF-PLUS, and opening up the functions ZEROP, REMAINDER, QUOTIENT, and FIX, to the goal: (IMPLIES (AND (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (LESSP X Y)) (EQUAL (PLUS (REMAINDER (DIFFERENCE X Y) Y) (TIMES Y (QUOTIENT (DIFFERENCE X Y) Y))) (DIFFERENCE X Y)) (NUMBERP X) (NOT (LESSP Y X))) (EQUAL Y X)). But this again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] PLUS-REMAINDER-TIMES-QUOTIENT (DISABLE PLUS-REMAINDER-TIMES-QUOTIENT) [ 0.0 0.0 0.0 ] PLUS-REMAINDER-TIMES-QUOTIENT-OFF (PROVE-LEMMA REMAINDER-QUOTIENT-ELIM (ELIM) (IMPLIES (AND (NOT (ZEROP Y)) (NUMBERP X)) (EQUAL (PLUS (REMAINDER X Y) (TIMES Y (QUOTIENT X Y))) X)) ((ENABLE PLUS-REMAINDER-TIMES-QUOTIENT))) This formula can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL Y 0)) (NUMBERP Y) (NUMBERP X)) (EQUAL (PLUS (REMAINDER X Y) (TIMES Y (QUOTIENT X Y))) X)), which simplifies, rewriting with PLUS-REMAINDER-TIMES-QUOTIENT, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-QUOTIENT-ELIM (PROVE-LEMMA REMAINDER-ADD1 (REWRITE) (IMPLIES (EQUAL (REMAINDER A B) 0) (EQUAL (REMAINDER (ADD1 A) B) (REMAINDER 1 B))) ((ENABLE REMAINDER-NOOP) (INDUCT (REMAINDER A B)))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to three new goals: Case 3. (IMPLIES (AND (ZEROP B) (EQUAL (REMAINDER A B) 0)) (EQUAL (REMAINDER (ADD1 A) B) (REMAINDER 1 B))), which simplifies, applying the lemmas REMAINDER-ZERO and SUB1-TYPE-RESTRICTION, and unfolding the functions ZEROP, ADD1, REMAINDER, EQUAL, and NUMBERP, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (LESSP A B) (EQUAL (REMAINDER A B) 0)) (EQUAL (REMAINDER (ADD1 A) B) (REMAINDER 1 B))), which simplifies, using linear arithmetic, rewriting with REMAINDER-NOOP, DIFFERENCE-LEQ-ARG1, and SUB1-TYPE-RESTRICTION, and expanding the functions ADD1, NUMBERP, and REMAINDER, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B)) (IMPLIES (EQUAL (REMAINDER (DIFFERENCE A B) B) 0) (EQUAL (REMAINDER (ADD1 (DIFFERENCE A B)) B) (REMAINDER 1 B))) (EQUAL (REMAINDER A B) 0)) (EQUAL (REMAINDER (ADD1 A) B) (REMAINDER 1 B))). This simplifies, using linear arithmetic, appealing to the lemmas REMAINDER-NOOP and DIFFERENCE-LEQ-ARG1, and opening up the definitions of NUMBERP, REMAINDER, and IMPLIES, to the following two new conjectures: Case 1.2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B)) (NOT (LESSP 1 B)) (EQUAL (REMAINDER (ADD1 (DIFFERENCE A B)) B) 0) (EQUAL (REMAINDER (DIFFERENCE A B) B) 0)) (EQUAL (REMAINDER (ADD1 A) B) 0)). But this again simplifies, using linear arithmetic, to: (IMPLIES (AND (NOT (EQUAL 1 0)) (NUMBERP 1) (NOT (LESSP A 1)) (NOT (LESSP 1 1)) (EQUAL (REMAINDER (ADD1 (DIFFERENCE A 1)) 1) 0) (EQUAL (REMAINDER (DIFFERENCE A 1) 1) 0)) (EQUAL (REMAINDER (ADD1 A) 1) 0)). This again simplifies, rewriting with DIFFERENCE-ADD1-ARG2, SUB1-ADD1, and SUB1-TYPE-RESTRICTION, and expanding EQUAL, NUMBERP, LESSP, DIFFERENCE, SUB1, REMAINDER, and ADD1, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B)) (LESSP 1 B) (EQUAL (REMAINDER (ADD1 (DIFFERENCE A B)) B) 1) (EQUAL (REMAINDER (DIFFERENCE A B) B) 0)) (EQUAL (REMAINDER (ADD1 A) B) 1)). Appealing to the lemmas DIFFERENCE-ELIM and REMAINDER-QUOTIENT-ELIM, we now replace A by (PLUS B X) to eliminate (DIFFERENCE A B) and X by (PLUS Z (TIMES B V)) to eliminate (REMAINDER X B) and (QUOTIENT X B). We rely upon the type restriction lemma noted when DIFFERENCE was introduced, LESSP-REMAINDER, the type restriction lemma noted when REMAINDER was introduced, and the type restriction lemma noted when QUOTIENT was introduced to constrain the new variables. This generates two new conjectures: Case 1.1.2. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B)) (LESSP 1 B) (EQUAL (REMAINDER (ADD1 (DIFFERENCE A B)) B) 1) (EQUAL (REMAINDER (DIFFERENCE A B) B) 0)) (EQUAL (REMAINDER (ADD1 A) B) 1)), which further simplifies, expanding LESSP, to: T. Case 1.1.1. (IMPLIES (AND (NUMBERP Z) (EQUAL (LESSP Z B) (NOT (ZEROP B))) (NUMBERP V) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (PLUS B Z (TIMES B V)) B)) (LESSP 1 B) (EQUAL (REMAINDER (ADD1 (PLUS Z (TIMES B V))) B) 1) (EQUAL Z 0)) (EQUAL (REMAINDER (ADD1 (PLUS B Z (TIMES B V))) B) 1)), which further simplifies, applying LESSP-PLUS-TIMES1, DIFFERENCE-SUB1-ARG2, CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS, and SUB1-ADD1, and opening up NUMBERP, EQUAL, LESSP, ZEROP, NOT, PLUS, FIX, DIFFERENCE, and REMAINDER, to the following two new conjectures: Case 1.1.1.2. (IMPLIES (AND (NUMBERP V) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP B B)) (LESSP 1 B) (EQUAL (REMAINDER (ADD1 (TIMES B V)) B) 1) (LESSP (PLUS B (TIMES B V)) (SUB1 B))) (EQUAL (ADD1 (PLUS B (TIMES B V))) 1)). However this again simplifies, using linear arithmetic, to: T. Case 1.1.1.1. (IMPLIES (AND (NUMBERP V) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL V 0)) (LESSP 1 B) (EQUAL (REMAINDER (ADD1 (TIMES B V)) B) 1) (LESSP (PLUS B (TIMES B V)) (SUB1 B))) (EQUAL (ADD1 (PLUS B (TIMES B V))) 1)), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.6 0.0 ] REMAINDER-ADD1 (PROVE-LEMMA REMAINDER-PLUS-PROOF NIL (IMPLIES (EQUAL (REMAINDER B C) 0) (EQUAL (REMAINDER (PLUS A B) C) (REMAINDER A C))) ((ENABLE REMAINDER-NOOP) (INDUCT (REMAINDER B C)))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to three new formulas: Case 3. (IMPLIES (AND (ZEROP C) (EQUAL (REMAINDER B C) 0)) (EQUAL (REMAINDER (PLUS A B) C) (REMAINDER A C))), which simplifies, applying REMAINDER-ZERO and PLUS-ZERO-ARG2, and opening up the definition of ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (EQUAL (REMAINDER B C) 0)) (EQUAL (REMAINDER (PLUS A B) C) (REMAINDER A C))). This simplifies, applying REMAINDER-NOOP and PLUS-ZERO-ARG2, and unfolding the definition of ZEROP, to two new formulas: Case 2.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (EQUAL B 0) (NOT (NUMBERP A))) (EQUAL (REMAINDER 0 C) (REMAINDER A C))), which again simplifies, rewriting with REMAINDER-NOOP and REMAINDER-OF-NON-NUMBER, and expanding the functions EQUAL, LESSP, and NUMBERP, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (NOT (NUMBERP B)) (NOT (NUMBERP A))) (EQUAL (REMAINDER 0 C) (REMAINDER A C))). This again simplifies, using linear arithmetic, rewriting with REMAINDER-NOOP and REMAINDER-OF-NON-NUMBER, and unfolding the functions LESSP, NUMBERP, and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (IMPLIES (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (EQUAL (REMAINDER (PLUS A (DIFFERENCE B C)) C) (REMAINDER A C))) (EQUAL (REMAINDER B C) 0)) (EQUAL (REMAINDER (PLUS A B) C) (REMAINDER A C))). This simplifies, using linear arithmetic, rewriting with the lemmas PLUS-ZERO-ARG2, PLUS-DIFFERENCE-ARG2, REMAINDER-NOOP, and DIFFERENCE-LEQ-ARG1, and opening up the definitions of ZEROP, IMPLIES, REMAINDER, NUMBERP, and EQUAL, to the following three new goals: Case 1.3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (LESSP C B) (EQUAL (REMAINDER (DIFFERENCE (PLUS A B) C) C) (REMAINDER A C)) (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (LESSP (PLUS A B) C)) (EQUAL (PLUS A B) (REMAINDER A C))). But this again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (EQUAL (REMAINDER 0 C) (REMAINDER A C))) (EQUAL (REMAINDER (PLUS A B) C) 0)), which again simplifies, using linear arithmetic, to two new formulas: Case 1.2.2. (IMPLIES (AND (NOT (NUMBERP B)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (EQUAL (REMAINDER 0 C) (REMAINDER A C))) (EQUAL (REMAINDER (PLUS A B) C) 0)), which again simplifies, unfolding the function LESSP, to: T. Case 1.2.1. (IMPLIES (AND (NUMBERP B) (NOT (EQUAL B 0)) (NOT (LESSP B B)) (NOT (LESSP B B)) (EQUAL (REMAINDER 0 B) (REMAINDER A B))) (EQUAL (REMAINDER (PLUS A B) B) 0)), which again simplifies, using linear arithmetic, appealing to the lemmas REMAINDER-NOOP, CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS, and CORRECTNESS-OF-CANCEL-LESSP-PLUS, and expanding the functions NUMBERP, FIX, and REMAINDER, to: (IMPLIES (AND (NUMBERP B) (NOT (EQUAL B 0)) (NOT (LESSP B B)) (EQUAL 0 (REMAINDER A B)) (NOT (NUMBERP A))) (EQUAL (REMAINDER 0 B) 0)). However this again simplifies, using linear arithmetic, applying the lemmas REMAINDER-NOOP and REMAINDER-OF-NON-NUMBER, and unfolding NUMBERP and EQUAL, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NUMBERP A)) (EQUAL (REMAINDER (PLUS A B) C) (REMAINDER A C))), which again simplifies, using linear arithmetic, to two new conjectures: Case 1.1.2. (IMPLIES (AND (NOT (NUMBERP B)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NUMBERP A)) (EQUAL (REMAINDER (PLUS A B) C) (REMAINDER A C))), which again simplifies, unfolding LESSP, to: T. Case 1.1.1. (IMPLIES (AND (NUMBERP B) (NOT (EQUAL B 0)) (NOT (LESSP B B)) (NOT (LESSP B B)) (NUMBERP A)) (EQUAL (REMAINDER (PLUS A B) B) (REMAINDER A B))), which again simplifies, applying CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS and CORRECTNESS-OF-CANCEL-LESSP-PLUS, and expanding the functions FIX and REMAINDER, to: T. Q.E.D. [ 0.0 0.2 0.0 ] REMAINDER-PLUS-PROOF (PROVE-LEMMA REMAINDER-PLUS (REWRITE) (IMPLIES (EQUAL (REMAINDER A C) 0) (AND (EQUAL (REMAINDER (PLUS A B) C) (REMAINDER B C)) (EQUAL (REMAINDER (PLUS B A) C) (REMAINDER B C)) (EQUAL (REMAINDER (PLUS X Y A) C) (REMAINDER (PLUS X Y) C)))) ((USE (REMAINDER-PLUS-PROOF (A B) (B A) (C C)) (REMAINDER-PLUS-PROOF (A A) (B B) (C C)) (REMAINDER-PLUS-PROOF (B A) (A (PLUS X Y)) (C C))) (ENABLE COMMUTATIVITY-OF-PLUS COMMUTATIVITY2-OF-PLUS ASSOCIATIVITY-OF-PLUS))) WARNING: Note that the proposed lemma REMAINDER-PLUS is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and three replacement rules. This conjecture can be simplified, using the abbreviations IMPLIES, AND, and ASSOCIATIVITY-OF-PLUS, to the conjecture: (IMPLIES (AND (IMPLIES (EQUAL (REMAINDER A C) 0) (EQUAL (REMAINDER (PLUS B A) C) (REMAINDER B C))) (IMPLIES (EQUAL (REMAINDER B C) 0) (EQUAL (REMAINDER (PLUS A B) C) (REMAINDER A C))) (IMPLIES (EQUAL (REMAINDER A C) 0) (EQUAL (REMAINDER (PLUS X Y A) C) (REMAINDER (PLUS X Y) C))) (EQUAL (REMAINDER A C) 0)) (AND (EQUAL (REMAINDER (PLUS A B) C) (REMAINDER B C)) (EQUAL (REMAINDER (PLUS B A) C) (REMAINDER B C)) (EQUAL (REMAINDER (PLUS X Y A) C) (REMAINDER (PLUS X Y) C)))). This simplifies, appealing to the lemmas COMMUTATIVITY-OF-PLUS and COMMUTATIVITY2-OF-PLUS, and unfolding the functions EQUAL, IMPLIES, and AND, to: T. Q.E.D. [ 0.0 0.4 0.0 ] REMAINDER-PLUS (PROVE-LEMMA EQUAL-REMAINDER-PLUS-0-PROOF NIL (IMPLIES (EQUAL (REMAINDER A C) 0) (EQUAL (EQUAL (REMAINDER (PLUS A B) C) 0) (EQUAL (REMAINDER B C) 0))) ((ENABLE REMAINDER-PLUS))) This conjecture simplifies, applying REMAINDER-PLUS, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EQUAL-REMAINDER-PLUS-0-PROOF (PROVE-LEMMA EQUAL-REMAINDER-PLUS-0 (REWRITE) (IMPLIES (EQUAL (REMAINDER A C) 0) (AND (EQUAL (EQUAL (REMAINDER (PLUS A B) C) 0) (EQUAL (REMAINDER B C) 0)) (EQUAL (EQUAL (REMAINDER (PLUS B A) C) 0) (EQUAL (REMAINDER B C) 0)) (EQUAL (EQUAL (REMAINDER (PLUS X Y A) C) 0) (EQUAL (REMAINDER (PLUS X Y) C) 0)))) ((USE (EQUAL-REMAINDER-PLUS-0-PROOF (A A) (B B) (C C)) (EQUAL-REMAINDER-PLUS-0-PROOF (A B) (B A) (C C)) (EQUAL-REMAINDER-PLUS-0-PROOF (A A) (B (PLUS X Y)) (C C))) (ENABLE ASSOCIATIVITY-OF-PLUS COMMUTATIVITY-OF-PLUS COMMUTATIVITY2-OF-PLUS) (DO-NOT-INDUCT T))) WARNING: Note that the proposed lemma EQUAL-REMAINDER-PLUS-0 is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and three replacement rules. This formula simplifies, applying REMAINDER-PLUS, COMMUTATIVITY-OF-PLUS, and COMMUTATIVITY2-OF-PLUS, and expanding EQUAL, IMPLIES, and AND, to: T. Q.E.D. [ 0.0 0.3 0.0 ] EQUAL-REMAINDER-PLUS-0 (PROVE-LEMMA EQUAL-REMAINDER-PLUS-REMAINDER-PROOF NIL (IMPLIES (LESSP A C) (EQUAL (EQUAL (REMAINDER (PLUS A B) C) (REMAINDER B C)) (ZEROP A))) ((ENABLE REMAINDER-NOOP) (INDUCT (REMAINDER B C)))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to three new formulas: Case 3. (IMPLIES (AND (ZEROP C) (LESSP A C)) (EQUAL (EQUAL (REMAINDER (PLUS A B) C) (REMAINDER B C)) (ZEROP A))), which simplifies, expanding the functions ZEROP, EQUAL, and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (LESSP A C)) (EQUAL (EQUAL (REMAINDER (PLUS A B) C) (REMAINDER B C)) (ZEROP A))), which simplifies, using linear arithmetic, applying the lemma REMAINDER-NOOP, and unfolding the definitions of REMAINDER and ZEROP, to 12 new formulas: Case 2.12. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (LESSP A C) (NUMBERP B) (LESSP (PLUS A B) C) (NOT (EQUAL (PLUS A B) B))) (NUMBERP A)), which again simplifies, unfolding the definitions of LESSP and PLUS, to: T. Case 2.11. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (LESSP A C) (NUMBERP B) (LESSP (PLUS A B) C) (NOT (EQUAL (PLUS A B) B))) (NOT (EQUAL A 0))), which again simplifies, using linear arithmetic, to: T. Case 2.10. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (LESSP A C) (NUMBERP B) (LESSP (PLUS A B) C) (EQUAL (PLUS A B) B) (NOT (EQUAL A 0))) (NOT (NUMBERP A))), which again simplifies, using linear arithmetic, to: T. Case 2.9. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (LESSP A C) (NUMBERP B) (NOT (LESSP (PLUS A B) C)) (NOT (EQUAL (DIFFERENCE (PLUS A B) C) B))) (NUMBERP A)), which again simplifies, opening up the functions LESSP and PLUS, to: T. Case 2.8. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (LESSP A C) (NUMBERP B) (NOT (LESSP (PLUS A B) C)) (NOT (EQUAL (DIFFERENCE (PLUS A B) C) B))) (NOT (EQUAL A 0))), which again simplifies, using linear arithmetic, to: T. Case 2.7. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (LESSP A C) (NUMBERP B) (NOT (LESSP (PLUS A B) C)) (EQUAL (DIFFERENCE (PLUS A B) C) B) (NOT (EQUAL A 0))) (NOT (NUMBERP A))), which again simplifies, using linear arithmetic, to: T. Case 2.6. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (LESSP A C) (NOT (NUMBERP B)) (LESSP (PLUS A B) C) (NOT (EQUAL (PLUS A B) 0))) (NUMBERP A)), which again simplifies, rewriting with the lemma PLUS-ZERO-ARG2, and opening up LESSP, ZEROP, and EQUAL, to: T. Case 2.5. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (LESSP A C) (NOT (NUMBERP B)) (LESSP (PLUS A B) C) (NOT (EQUAL (PLUS A B) 0))) (NOT (EQUAL A 0))), which again simplifies, rewriting with the lemma PLUS-ZERO-ARG2, and expanding LESSP, EQUAL, ZEROP, and NUMBERP, to: T. Case 2.4. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (LESSP A C) (NOT (NUMBERP B)) (LESSP (PLUS A B) C) (EQUAL (PLUS A B) 0) (NOT (EQUAL A 0))) (NOT (NUMBERP A))), which again simplifies, using linear arithmetic, to: T. Case 2.3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (LESSP A C) (NOT (NUMBERP B)) (NOT (LESSP (PLUS A B) C)) (NOT (EQUAL (DIFFERENCE (PLUS A B) C) 0))) (NUMBERP A)), which again simplifies, appealing to the lemma PLUS-ZERO-ARG2, and expanding the functions LESSP, ZEROP, and EQUAL, to: T. Case 2.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (LESSP A C) (NOT (NUMBERP B)) (NOT (LESSP (PLUS A B) C)) (NOT (EQUAL (DIFFERENCE (PLUS A B) C) 0))) (NOT (EQUAL A 0))), which again simplifies, using linear arithmetic, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (LESSP A C) (NOT (NUMBERP B)) (NOT (LESSP (PLUS A B) C)) (EQUAL (DIFFERENCE (PLUS A B) C) 0) (NOT (EQUAL A 0))) (NOT (NUMBERP A))), which again simplifies, applying the lemma PLUS-ZERO-ARG2, and unfolding LESSP and ZEROP, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (IMPLIES (LESSP A C) (EQUAL (EQUAL (REMAINDER (PLUS A (DIFFERENCE B C)) C) (REMAINDER (DIFFERENCE B C) C)) (ZEROP A))) (LESSP A C)) (EQUAL (EQUAL (REMAINDER (PLUS A B) C) (REMAINDER B C)) (ZEROP A))), which simplifies, using linear arithmetic, applying PLUS-ZERO-ARG2, PLUS-DIFFERENCE-ARG2, DIFFERENCE-LEQ-ARG1, REMAINDER-NOOP, and REMAINDER-PLUS, and expanding the functions ZEROP, IMPLIES, REMAINDER, EQUAL, LESSP, PLUS, and NUMBERP, to the following nine new formulas: Case 1.9. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (LESSP C B) (NOT (EQUAL (REMAINDER (DIFFERENCE (PLUS A B) C) C) (REMAINDER (DIFFERENCE B C) C))) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP A C)) (NOT (EQUAL (REMAINDER (PLUS A B) C) (REMAINDER (DIFFERENCE B C) C)))). However this again simplifies, expanding the definition of REMAINDER, to the conjecture: (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (LESSP C B) (NOT (EQUAL (REMAINDER (DIFFERENCE (PLUS A B) C) C) (REMAINDER (DIFFERENCE B C) C))) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP A C) (LESSP (PLUS A B) C)) (NOT (EQUAL (PLUS A B) (REMAINDER (DIFFERENCE B C) C)))). However this again simplifies, using linear arithmetic, to: T. Case 1.8. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (LESSP C B) (EQUAL (REMAINDER (DIFFERENCE (PLUS A B) C) C) (REMAINDER (DIFFERENCE B C) C)) (EQUAL A 0) (NOT (NUMBERP B))) (EQUAL (REMAINDER 0 C) (REMAINDER (DIFFERENCE B C) C))), which again simplifies, opening up the definition of LESSP, to: T. Case 1.7. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (LESSP C B) (EQUAL (REMAINDER (DIFFERENCE (PLUS A B) C) C) (REMAINDER (DIFFERENCE B C) C)) (EQUAL A 0) (NUMBERP B)) (EQUAL (REMAINDER B C) (REMAINDER (DIFFERENCE B C) C))), which again simplifies, expanding the functions EQUAL, PLUS, and REMAINDER, to: T. Case 1.6. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (LESSP C B) (EQUAL (REMAINDER (DIFFERENCE (PLUS A B) C) C) (REMAINDER (DIFFERENCE B C) C)) (NOT (NUMBERP A)) (NOT (NUMBERP B))) (EQUAL (REMAINDER 0 C) (REMAINDER (DIFFERENCE B C) C))), which again simplifies, expanding the function LESSP, to: T. Case 1.5. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (LESSP C B) (EQUAL (REMAINDER (DIFFERENCE (PLUS A B) C) C) (REMAINDER (DIFFERENCE B C) C)) (NOT (NUMBERP A)) (NUMBERP B)) (EQUAL (REMAINDER B C) (REMAINDER (DIFFERENCE B C) C))), which again simplifies, expanding the definitions of PLUS and REMAINDER, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NUMBERP A) (EQUAL (REMAINDER A C) (REMAINDER (DIFFERENCE B C) C)) (EQUAL A 0) (NOT (NUMBERP B))) (EQUAL (REMAINDER 0 C) 0)), which again simplifies, expanding LESSP, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NUMBERP A) (EQUAL (REMAINDER A C) (REMAINDER (DIFFERENCE B C) C)) (EQUAL A 0) (NUMBERP B)) (EQUAL (REMAINDER B C) 0)), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP B B)) (NOT (LESSP B B)) (NUMBERP 0) (EQUAL (REMAINDER 0 B) (REMAINDER (DIFFERENCE B B) B)) (NUMBERP B)) (EQUAL (REMAINDER B B) 0)). This again simplifies, rewriting with REMAINDER-NOOP and DIFFERENCE-X-X, and unfolding the definitions of NUMBERP, LESSP, EQUAL, and REMAINDER, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NOT (NUMBERP A)) (EQUAL (REMAINDER 0 C) (REMAINDER (DIFFERENCE B C) C)) (NOT (NUMBERP B))) (EQUAL (REMAINDER 0 C) 0)). However this again simplifies, expanding the definition of LESSP, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NOT (NUMBERP A)) (EQUAL (REMAINDER 0 C) (REMAINDER (DIFFERENCE B C) C)) (NUMBERP B)) (EQUAL (REMAINDER B C) 0)), which again simplifies, using linear arithmetic, to the formula: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP B B)) (NOT (LESSP B B)) (NOT (NUMBERP A)) (EQUAL (REMAINDER 0 B) (REMAINDER (DIFFERENCE B B) B)) (NUMBERP B)) (EQUAL (REMAINDER B B) 0)). However this again simplifies, applying REMAINDER-NOOP and DIFFERENCE-X-X, and unfolding the functions LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Q.E.D. [ 0.0 0.6 0.0 ] EQUAL-REMAINDER-PLUS-REMAINDER-PROOF (PROVE-LEMMA EQUAL-REMAINDER-PLUS-REMAINDER (REWRITE) (IMPLIES (LESSP A C) (AND (EQUAL (EQUAL (REMAINDER (PLUS A B) C) (REMAINDER B C)) (ZEROP A)) (EQUAL (EQUAL (REMAINDER (PLUS B A) C) (REMAINDER B C)) (ZEROP A)))) ((USE (EQUAL-REMAINDER-PLUS-REMAINDER-PROOF (A A) (B B) (C C))) (ENABLE COMMUTATIVITY-OF-PLUS) (DO-NOT-INDUCT T))) WARNING: Note that the proposed lemma EQUAL-REMAINDER-PLUS-REMAINDER is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This conjecture simplifies, applying PLUS-ZERO-ARG2 and COMMUTATIVITY-OF-PLUS, and expanding ZEROP, IMPLIES, LESSP, PLUS, AND, and EQUAL, to the following two new formulas: Case 2. (IMPLIES (AND (EQUAL (REMAINDER (PLUS A B) C) (REMAINDER B C)) (NOT (NUMBERP A)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (NUMBERP B))) (EQUAL (REMAINDER 0 C) (REMAINDER B C))). This again simplifies, using linear arithmetic, rewriting with PLUS-ZERO-ARG2, REMAINDER-NOOP, and REMAINDER-OF-NON-NUMBER, and expanding the functions ZEROP, NUMBERP, and EQUAL, to: T. Case 1. (IMPLIES (AND (EQUAL (REMAINDER (PLUS A B) C) (REMAINDER B C)) (EQUAL A 0) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (NUMBERP B))) (EQUAL (REMAINDER 0 C) (REMAINDER B C))). This again simplifies, using linear arithmetic, applying PLUS-ZERO-ARG2, REMAINDER-NOOP, and REMAINDER-OF-NON-NUMBER, and expanding ZEROP, NUMBERP, and EQUAL, to: T. Q.E.D. [ 0.0 0.1 0.0 ] EQUAL-REMAINDER-PLUS-REMAINDER (DISABLE EQUAL-REMAINDER-PLUS-REMAINDER) [ 0.0 0.0 0.0 ] EQUAL-REMAINDER-PLUS-REMAINDER-OFF (PROVE-LEMMA REMAINDER-TIMES1-PROOF NIL (IMPLIES (EQUAL (REMAINDER B C) 0) (EQUAL (REMAINDER (TIMES A B) C) 0)) ((ENABLE REMAINDER-PLUS REMAINDER-NOOP REMAINDER-ZERO))) . Appealing to the lemma REMAINDER-QUOTIENT-ELIM, we now replace B by (PLUS X (TIMES C Z)) to eliminate (REMAINDER B C) and (QUOTIENT B C). We rely upon LESSP-REMAINDER, the type restriction lemma noted when REMAINDER was introduced, and the type restriction lemma noted when QUOTIENT was introduced to constrain the new variables. The result is four new conjectures: Case 4. (IMPLIES (AND (NOT (NUMBERP B)) (EQUAL (REMAINDER B C) 0)) (EQUAL (REMAINDER (TIMES A B) C) 0)), which simplifies, rewriting with the lemmas REMAINDER-OF-NON-NUMBER and TIMES-ZERO, and unfolding the functions LESSP, EQUAL, NUMBERP, REMAINDER, and ZEROP, to: T. Case 3. (IMPLIES (AND (EQUAL C 0) (EQUAL (REMAINDER B C) 0)) (EQUAL (REMAINDER (TIMES A B) C) 0)), which simplifies, applying REMAINDER-ZERO, COMMUTATIVITY-OF-TIMES, and TIMES-ZERO, and opening up the definitions of ZEROP, EQUAL, TIMES, and REMAINDER, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP C)) (EQUAL (REMAINDER B C) 0)) (EQUAL (REMAINDER (TIMES A B) C) 0)). This simplifies, applying REMAINDER-ZERO, COMMUTATIVITY-OF-TIMES, and TIMES-ZERO, and unfolding ZEROP, EQUAL, TIMES, and NUMBERP, to: T. Case 1. (IMPLIES (AND (NUMBERP X) (EQUAL (LESSP X C) (NOT (ZEROP C))) (NUMBERP Z) (NUMBERP C) (NOT (EQUAL C 0)) (EQUAL X 0)) (EQUAL (REMAINDER (TIMES A (PLUS X (TIMES C Z))) C) 0)). However this simplifies, unfolding the definitions of NUMBERP, EQUAL, LESSP, ZEROP, NOT, and PLUS, to the conjecture: (IMPLIES (AND (NUMBERP Z) (NUMBERP C) (NOT (EQUAL C 0))) (EQUAL (REMAINDER (TIMES A C Z) C) 0)), which we would usually push and work on later by induction. But if we must use induction to prove the input conjecture, we prefer to induct on the original formulation of the problem. Thus we will disregard all that we have previously done, give the name *1 to the original input, and work on it. So now let us consider: (IMPLIES (EQUAL (REMAINDER B C) 0) (EQUAL (REMAINDER (TIMES A B) C) 0)). We gave this the name *1 above. Perhaps we can prove it by induction. There are two plausible inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (ZEROP A) (p A B C)) (IMPLIES (AND (NOT (ZEROP A)) (p (SUB1 A) B C)) (p A B C))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT A) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme leads to the following two new goals: Case 2. (IMPLIES (AND (ZEROP A) (EQUAL (REMAINDER B C) 0)) (EQUAL (REMAINDER (TIMES A B) C) 0)). This simplifies, unfolding ZEROP, EQUAL, TIMES, LESSP, NUMBERP, and REMAINDER, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP A)) (EQUAL (REMAINDER (TIMES (SUB1 A) B) C) 0) (EQUAL (REMAINDER B C) 0)) (EQUAL (REMAINDER (TIMES A B) C) 0)). This simplifies, rewriting with REMAINDER-PLUS, and unfolding the definitions of ZEROP, TIMES, and EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] REMAINDER-TIMES1-PROOF (PROVE-LEMMA REMAINDER-TIMES1 (REWRITE) (IMPLIES (EQUAL (REMAINDER B C) 0) (AND (EQUAL (REMAINDER (TIMES A B) C) 0) (EQUAL (REMAINDER (TIMES B A) C) 0))) ((USE (REMAINDER-TIMES1-PROOF (A A) (B B) (C C)) (REMAINDER-TIMES1-PROOF (A B) (B A) (C C))) (ENABLE COMMUTATIVITY-OF-TIMES))) WARNING: Note that the proposed lemma REMAINDER-TIMES1 is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This conjecture simplifies, applying the lemma COMMUTATIVITY-OF-TIMES, and expanding the functions EQUAL, IMPLIES, and AND, to: T. Q.E.D. [ 0.0 0.1 0.0 ] REMAINDER-TIMES1 (PROVE-LEMMA REMAINDER-TIMES1-INSTANCE-PROOF NIL (EQUAL (REMAINDER (TIMES X Y) Y) 0) ((ENABLE COMMUTATIVITY-OF-TIMES DIFFERENCE-PLUS-CANCELLATION REMAINDER-ZERO) (INDUCT (TIMES X Y)))) This formula can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to the following two new conjectures: Case 2. (IMPLIES (ZEROP X) (EQUAL (REMAINDER (TIMES X Y) Y) 0)). This simplifies, opening up ZEROP, EQUAL, TIMES, LESSP, NUMBERP, and REMAINDER, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL (REMAINDER (TIMES (SUB1 X) Y) Y) 0)) (EQUAL (REMAINDER (TIMES X Y) Y) 0)). This simplifies, applying COMMUTATIVITY-OF-TIMES, REMAINDER-NOOP, DIFFERENCE-X-X, and REMAINDER-PLUS, and unfolding TIMES, EQUAL, LESSP, NUMBERP, and REMAINDER, to the conjecture: (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL (REMAINDER (TIMES Y (SUB1 X)) Y) 0) (NOT (EQUAL Y 0)) (NUMBERP Y)) (NOT (LESSP Y Y))). This again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.1 0.0 ] REMAINDER-TIMES1-INSTANCE-PROOF (PROVE-LEMMA REMAINDER-TIMES1-INSTANCE (REWRITE) (AND (EQUAL (REMAINDER (TIMES X Y) Y) 0) (EQUAL (REMAINDER (TIMES X Y) X) 0)) ((USE (REMAINDER-TIMES1-INSTANCE-PROOF (X X) (Y Y)) (REMAINDER-TIMES1-INSTANCE-PROOF (X Y) (Y X))) (ENABLE COMMUTATIVITY-OF-TIMES))) WARNING: Note that the proposed lemma REMAINDER-TIMES1-INSTANCE is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This formula simplifies, rewriting with the lemma COMMUTATIVITY-OF-TIMES, and unfolding the definitions of EQUAL and AND, to: T. Q.E.D. [ 0.0 0.1 0.0 ] REMAINDER-TIMES1-INSTANCE (PROVE-LEMMA REMAINDER-TIMES-TIMES-PROOF NIL (EQUAL (REMAINDER (TIMES X Y) (TIMES X Z)) (TIMES X (REMAINDER Y Z))) ((ENABLE REMAINDER-ZERO) (INDUCT (REMAINDER Y Z)))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to three new formulas: Case 3. (IMPLIES (ZEROP Z) (EQUAL (REMAINDER (TIMES X Y) (TIMES X Z)) (TIMES X (REMAINDER Y Z)))), which simplifies, applying COMMUTATIVITY-OF-TIMES, REMAINDER-ZERO, CORRECTNESS-OF-CANCEL-EQUAL-TIMES, and TIMES-ZERO, and expanding ZEROP, EQUAL, TIMES, FIX, and OR, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z) (LESSP Y Z)) (EQUAL (REMAINDER (TIMES X Y) (TIMES X Z)) (TIMES X (REMAINDER Y Z)))). This simplifies, rewriting with REMAINDER-NOOP, to two new formulas: Case 2.2. (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z) (LESSP Y Z) (NOT (NUMBERP Y))) (EQUAL (REMAINDER (TIMES X Y) (TIMES X Z)) (TIMES X 0))), which again simplifies, rewriting with the lemmas TIMES-ZERO, EQUAL-TIMES-0, and COMMUTATIVITY-OF-TIMES, and opening up the functions LESSP, ZEROP, EQUAL, NUMBERP, REMAINDER, and TIMES, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z) (LESSP Y Z) (NUMBERP Y)) (EQUAL (REMAINDER (TIMES X Y) (TIMES X Z)) (TIMES X Y))), which again simplifies, applying CORRECTNESS-OF-CANCEL-LESSP-TIMES and EQUAL-TIMES-0, and expanding the definitions of AND, FIX, NOT, ZEROP, and REMAINDER, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (LESSP Y Z)) (EQUAL (REMAINDER (TIMES X (DIFFERENCE Y Z)) (TIMES X Z)) (TIMES X (REMAINDER (DIFFERENCE Y Z) Z)))) (EQUAL (REMAINDER (TIMES X Y) (TIMES X Z)) (TIMES X (REMAINDER Y Z)))). This simplifies, rewriting with TIMES-DISTRIBUTES-OVER-DIFFERENCE, CORRECTNESS-OF-CANCEL-LESSP-TIMES, and EQUAL-TIMES-0, and unfolding the definitions of AND, FIX, NOT, ZEROP, and REMAINDER, to three new conjectures: Case 1.3. (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (LESSP Y Z)) (EQUAL (REMAINDER (DIFFERENCE (TIMES X Y) (TIMES X Z)) (TIMES X Z)) (TIMES X (REMAINDER (DIFFERENCE Y Z) Z))) (EQUAL X 0)) (EQUAL (TIMES X Y) (TIMES X (REMAINDER (DIFFERENCE Y Z) Z)))), which again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (LESSP Y Z)) (EQUAL (REMAINDER (DIFFERENCE (TIMES X Y) (TIMES X Z)) (TIMES X Z)) (TIMES X (REMAINDER (DIFFERENCE Y Z) Z))) (NOT (NUMBERP X))) (EQUAL (TIMES X Y) (TIMES X (REMAINDER (DIFFERENCE Y Z) Z)))), which again simplifies, expanding the functions TIMES, DIFFERENCE, REMAINDER, and EQUAL, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (LESSP Y Z)) (EQUAL (REMAINDER (DIFFERENCE (TIMES X Y) (TIMES X Z)) (TIMES X Z)) (TIMES X (REMAINDER (DIFFERENCE Y Z) Z))) (NOT (NUMBERP Y)) (LESSP 0 Z)) (EQUAL (TIMES X Y) (TIMES X (REMAINDER (DIFFERENCE Y Z) Z)))), which again simplifies, unfolding the function LESSP, to: T. Q.E.D. [ 0.0 0.5 0.0 ] REMAINDER-TIMES-TIMES-PROOF (PROVE-LEMMA REMAINDER-TIMES-TIMES (REWRITE) (AND (EQUAL (REMAINDER (TIMES X Y) (TIMES X Z)) (TIMES X (REMAINDER Y Z))) (EQUAL (REMAINDER (TIMES X Z) (TIMES Y Z)) (TIMES (REMAINDER X Y) Z))) ((USE (REMAINDER-TIMES-TIMES-PROOF (X X) (Y Y) (Z Z)) (REMAINDER-TIMES-TIMES-PROOF (X Z) (Y X) (Z Y))) (ENABLE COMMUTATIVITY-OF-TIMES))) WARNING: Note that the proposed lemma REMAINDER-TIMES-TIMES is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This formula simplifies, applying COMMUTATIVITY-OF-TIMES, and opening up the definition of AND, to: T. Q.E.D. [ 0.0 0.3 0.0 ] REMAINDER-TIMES-TIMES (DISABLE REMAINDER-TIMES-TIMES) [ 0.0 0.0 0.0 ] REMAINDER-TIMES-TIMES-OFF (PROVE-LEMMA REMAINDER-TIMES2-PROOF NIL (IMPLIES (EQUAL (REMAINDER A Z) 0) (EQUAL (REMAINDER A (TIMES Z Y)) (TIMES Z (REMAINDER (QUOTIENT A Z) Y)))) ((ENABLE LESSP-REMAINDER REMAINDER-NOOP REMAINDER-PLUS REMAINDER-QUOTIENT-ELIM REMAINDER-TIMES-TIMES REMAINDER-TIMES1-INSTANCE REMAINDER-ZERO) (DO-NOT-INDUCT T))) This simplifies, rewriting with COMMUTATIVITY-OF-TIMES, to: (IMPLIES (EQUAL (REMAINDER A Z) 0) (EQUAL (REMAINDER A (TIMES Y Z)) (TIMES Z (REMAINDER (QUOTIENT A Z) Y)))). Appealing to the lemma REMAINDER-QUOTIENT-ELIM, we now replace A by (PLUS V (TIMES Z X)) to eliminate (QUOTIENT A Z) and (REMAINDER A Z) and X by (PLUS W (TIMES Y D)) to eliminate (REMAINDER X Y) and (QUOTIENT X Y). We rely upon LESSP-REMAINDER, the type restriction lemma noted when REMAINDER was introduced, and the type restriction lemma noted when QUOTIENT was introduced to constrain the new variables. The result is six new formulas: Case 6. (IMPLIES (AND (NOT (NUMBERP A)) (EQUAL (REMAINDER A Z) 0)) (EQUAL (REMAINDER A (TIMES Y Z)) (TIMES Z (REMAINDER (QUOTIENT A Z) Y)))), which further simplifies, rewriting with REMAINDER-OF-NON-NUMBER, EQUAL-TIMES-0, and COMMUTATIVITY-OF-TIMES, and expanding LESSP, EQUAL, NUMBERP, REMAINDER, QUOTIENT, and TIMES, to: T. Case 5. (IMPLIES (AND (EQUAL Z 0) (EQUAL (REMAINDER A Z) 0)) (EQUAL (REMAINDER A (TIMES Y Z)) (TIMES Z (REMAINDER (QUOTIENT A Z) Y)))). This further simplifies, appealing to the lemmas REMAINDER-ZERO and COMMUTATIVITY-OF-TIMES, and opening up ZEROP, EQUAL, TIMES, REMAINDER, QUOTIENT, LESSP, and NUMBERP, to: T. Case 4. (IMPLIES (AND (NOT (NUMBERP Z)) (EQUAL (REMAINDER A Z) 0)) (EQUAL (REMAINDER A (TIMES Y Z)) (TIMES Z (REMAINDER (QUOTIENT A Z) Y)))), which further simplifies, applying the lemmas REMAINDER-ZERO, TIMES-ZERO, and COMMUTATIVITY-OF-TIMES, and expanding the definitions of ZEROP, REMAINDER, QUOTIENT, LESSP, EQUAL, and NUMBERP, to: T. Case 3. (IMPLIES (AND (EQUAL Y 0) (NUMBERP X) (NUMBERP V) (EQUAL (LESSP V Z) (NOT (ZEROP Z))) (NUMBERP Z) (NOT (EQUAL Z 0)) (EQUAL V 0)) (EQUAL (REMAINDER (PLUS V (TIMES Z X)) (TIMES Y Z)) (TIMES Z (REMAINDER X Y)))), which further simplifies, applying COMMUTATIVITY-OF-TIMES and REMAINDER-ZERO, and expanding NUMBERP, EQUAL, LESSP, ZEROP, NOT, PLUS, and TIMES, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP Y)) (NUMBERP X) (NUMBERP V) (EQUAL (LESSP V Z) (NOT (ZEROP Z))) (NUMBERP Z) (NOT (EQUAL Z 0)) (EQUAL V 0)) (EQUAL (REMAINDER (PLUS V (TIMES Z X)) (TIMES Y Z)) (TIMES Z (REMAINDER X Y)))). However this further simplifies, applying COMMUTATIVITY-OF-TIMES and REMAINDER-ZERO, and expanding the definitions of NUMBERP, EQUAL, LESSP, ZEROP, NOT, PLUS, and TIMES, to: T. Case 1. (IMPLIES (AND (NUMBERP W) (EQUAL (LESSP W Y) (NOT (ZEROP Y))) (NUMBERP D) (NUMBERP Y) (NOT (EQUAL Y 0)) (NUMBERP V) (EQUAL (LESSP V Z) (NOT (ZEROP Z))) (NUMBERP Z) (NOT (EQUAL Z 0)) (EQUAL V 0)) (EQUAL (REMAINDER (PLUS V (TIMES Z (PLUS W (TIMES Y D)))) (TIMES Y Z)) (TIMES Z W))). But this further simplifies, applying COMMUTATIVITY-OF-TIMES, COMMUTATIVITY2-OF-TIMES, TIMES-DISTRIBUTES-OVER-PLUS, REMAINDER-TIMES1-INSTANCE, REMAINDER-NOOP, REMAINDER-TIMES-TIMES, and REMAINDER-PLUS, and expanding ZEROP, NOT, NUMBERP, EQUAL, LESSP, and PLUS, to: T. Q.E.D. [ 0.0 0.1 0.0 ] REMAINDER-TIMES2-PROOF (PROVE-LEMMA REMAINDER-TIMES2 (REWRITE) (IMPLIES (EQUAL (REMAINDER A Z) 0) (AND (EQUAL (REMAINDER A (TIMES Y Z)) (TIMES Z (REMAINDER (QUOTIENT A Z) Y))) (EQUAL (REMAINDER A (TIMES Z Y)) (TIMES Z (REMAINDER (QUOTIENT A Z) Y))))) ((USE (REMAINDER-TIMES2-PROOF (A A) (Y Y) (Z Z))) (ENABLE COMMUTATIVITY-OF-TIMES))) WARNING: Note that the proposed lemma REMAINDER-TIMES2 is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This simplifies, applying COMMUTATIVITY-OF-TIMES, and expanding the functions EQUAL, IMPLIES, and AND, to: T. Q.E.D. [ 0.0 0.4 0.0 ] REMAINDER-TIMES2 (PROVE-LEMMA REMAINDER-TIMES2-INSTANCE (REWRITE) (AND (EQUAL (REMAINDER (TIMES X Y) (TIMES X Z)) (TIMES X (REMAINDER Y Z))) (EQUAL (REMAINDER (TIMES X Z) (TIMES Y Z)) (TIMES (REMAINDER X Y) Z))) ((ENABLE REMAINDER-TIMES-TIMES))) WARNING: Note that the proposed lemma REMAINDER-TIMES2-INSTANCE is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This formula can be simplified, using the abbreviations AND and REMAINDER-TIMES-TIMES, to the following two new conjectures: Case 2. (EQUAL (TIMES X (REMAINDER Y Z)) (TIMES X (REMAINDER Y Z))). This simplifies, trivially, to: T. Case 1. (EQUAL (TIMES (REMAINDER X Y) Z) (TIMES (REMAINDER X Y) Z)). This simplifies, clearly, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-TIMES2-INSTANCE (PROVE-LEMMA REMAINDER-DIFFERENCE1 (REWRITE) (IMPLIES (EQUAL (REMAINDER A C) (REMAINDER B C)) (EQUAL (REMAINDER (DIFFERENCE A B) C) (DIFFERENCE (REMAINDER A C) (REMAINDER B C)))) ((ENABLE LESSP-REMAINDER EQUAL-REMAINDER-PLUS-REMAINDER REMAINDER-PLUS REMAINDER-QUOTIENT-ELIM REMAINDER-TIMES1-INSTANCE) (DO-NOT-INDUCT T))) This conjecture simplifies, rewriting with the lemma DIFFERENCE-X-X, to: (IMPLIES (EQUAL (REMAINDER A C) (REMAINDER B C)) (EQUAL (REMAINDER (DIFFERENCE A B) C) 0)). Appealing to the lemmas DIFFERENCE-ELIM and REMAINDER-QUOTIENT-ELIM, we now replace A by (PLUS B X) to eliminate (DIFFERENCE A B) and X by (PLUS Z (TIMES C V)) to eliminate (REMAINDER X C) and (QUOTIENT X C). We employ the type restriction lemma noted when DIFFERENCE was introduced, LESSP-REMAINDER, the type restriction lemma noted when REMAINDER was introduced, and the type restriction lemma noted when QUOTIENT was introduced to constrain the new variables. This generates five new conjectures: Case 5. (IMPLIES (AND (LESSP A B) (EQUAL (REMAINDER A C) (REMAINDER B C))) (EQUAL (REMAINDER (DIFFERENCE A B) C) 0)), which further simplifies, using linear arithmetic, rewriting with DIFFERENCE-LEQ-ARG1, and opening up the functions LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 4. (IMPLIES (AND (NOT (NUMBERP A)) (EQUAL (REMAINDER A C) (REMAINDER B C))) (EQUAL (REMAINDER (DIFFERENCE A B) C) 0)). However this further simplifies, using linear arithmetic, rewriting with REMAINDER-OF-NON-NUMBER and DIFFERENCE-LEQ-ARG1, and expanding LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 3. (IMPLIES (AND (EQUAL C 0) (NUMBERP X) (NOT (LESSP (PLUS B X) B)) (EQUAL (REMAINDER (PLUS B X) C) (REMAINDER B C))) (EQUAL (REMAINDER X C) 0)). This further simplifies, rewriting with CORRECTNESS-OF-CANCEL-LESSP-PLUS and REMAINDER-ZERO, and unfolding the function ZEROP, to the following two new goals: Case 3.2. (IMPLIES (AND (NUMBERP X) (NOT (NUMBERP B)) (EQUAL (PLUS B X) 0)) (EQUAL X 0)). This again simplifies, using linear arithmetic, to: T. Case 3.1. (IMPLIES (AND (NUMBERP X) (NUMBERP B) (EQUAL (PLUS B X) B)) (EQUAL X 0)), which again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP C)) (NUMBERP X) (NOT (LESSP (PLUS B X) B)) (EQUAL (REMAINDER (PLUS B X) C) (REMAINDER B C))) (EQUAL (REMAINDER X C) 0)), which further simplifies, applying CORRECTNESS-OF-CANCEL-LESSP-PLUS and REMAINDER-ZERO, and opening up ZEROP, to the following two new goals: Case 2.2. (IMPLIES (AND (NOT (NUMBERP C)) (NUMBERP X) (NOT (NUMBERP B)) (EQUAL (PLUS B X) 0)) (EQUAL X 0)). This again simplifies, using linear arithmetic, to: T. Case 2.1. (IMPLIES (AND (NOT (NUMBERP C)) (NUMBERP X) (NUMBERP B) (EQUAL (PLUS B X) B)) (EQUAL X 0)), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NUMBERP Z) (EQUAL (LESSP Z C) (NOT (ZEROP C))) (NUMBERP V) (NUMBERP C) (NOT (EQUAL C 0)) (NOT (LESSP (PLUS B Z (TIMES C V)) B)) (EQUAL (REMAINDER (PLUS B Z (TIMES C V)) C) (REMAINDER B C))) (EQUAL Z 0)), which further simplifies, applying CORRECTNESS-OF-CANCEL-LESSP-PLUS, REMAINDER-TIMES1-INSTANCE, REMAINDER-PLUS, and EQUAL-REMAINDER-PLUS-REMAINDER, and unfolding ZEROP, NOT, and EQUAL, to: T. Q.E.D. [ 0.0 0.1 0.0 ] REMAINDER-DIFFERENCE1 (DEFN DOUBLE-REMAINDER-INDUCTION (A B C) (IF (ZEROP C) 0 (IF (LESSP A C) 0 (IF (LESSP B C) 0 (DOUBLE-REMAINDER-INDUCTION (DIFFERENCE A C) (DIFFERENCE B C) C))))) Linear arithmetic, the lemmas COUNT-NUMBERP and COUNT-NOT-LESSP, and the definition of ZEROP establish that the measure (COUNT A) decreases according to the well-founded relation LESSP in each recursive call. Hence, DOUBLE-REMAINDER-INDUCTION is accepted under the principle of definition. The definition of: DOUBLE-REMAINDER-INDUCTION can be justified in another way. Linear arithmetic, the lemmas COUNT-NUMBERP and COUNT-NOT-LESSP, and the definition of ZEROP inform us that the measure (COUNT B) decreases according to the well-founded relation LESSP in each recursive call. Note that (NUMBERP (DOUBLE-REMAINDER-INDUCTION A B C)) is a theorem. [ 0.0 0.0 0.0 ] DOUBLE-REMAINDER-INDUCTION (PROVE-LEMMA REMAINDER-DIFFERENCE2 (REWRITE) (IMPLIES (AND (EQUAL (REMAINDER A C) 0) (NOT (EQUAL (REMAINDER B C) 0))) (EQUAL (REMAINDER (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE C (REMAINDER B C)) 0))) ((ENABLE EQUAL-REMAINDER-PLUS-0 LESSP-REMAINDER REMAINDER-NOOP REMAINDER-OF-NON-NUMBER REMAINDER-QUOTIENT-ELIM REMAINDER-TIMES1-INSTANCE REMAINDER-ZERO) (DISABLE TIMES-DISTRIBUTES-OVER-PLUS) (INDUCT (DOUBLE-REMAINDER-INDUCTION A B C)))) This formula can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, AND, and DIFFERENCE-DIFFERENCE-ARG1, to the following four new formulas: Case 4. (IMPLIES (AND (ZEROP C) (EQUAL (REMAINDER A C) 0) (NOT (EQUAL (REMAINDER B C) 0))) (EQUAL (REMAINDER (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE C (REMAINDER B C)) 0))). This simplifies, using linear arithmetic, appealing to the lemmas REMAINDER-ZERO and DIFFERENCE-LEQ-ARG1, and unfolding the functions ZEROP, REMAINDER, EQUAL, LESSP, and NUMBERP, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP A C) (EQUAL (REMAINDER A C) 0) (NOT (EQUAL (REMAINDER B C) 0))) (EQUAL (REMAINDER (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE C (REMAINDER B C)) 0))). This simplifies, using linear arithmetic, rewriting with REMAINDER-NOOP and DIFFERENCE-LEQ-ARG1, and unfolding the definitions of NUMBERP, EQUAL, and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (EQUAL (REMAINDER A C) 0) (NOT (EQUAL (REMAINDER B C) 0))) (EQUAL (REMAINDER (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE C (REMAINDER B C)) 0))), which simplifies, applying REMAINDER-NOOP, to the following two new conjectures: Case 2.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (EQUAL (REMAINDER A C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (NOT (LESSP B A))) (EQUAL (REMAINDER (DIFFERENCE A B) C) 0)). However this again simplifies, using linear arithmetic, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (EQUAL (REMAINDER A C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (LESSP B A)) (EQUAL (REMAINDER (DIFFERENCE A B) C) (DIFFERENCE C B))). Applying the lemmas DIFFERENCE-ELIM and REMAINDER-QUOTIENT-ELIM, replace A by (PLUS B X) to eliminate (DIFFERENCE A B) and X by (PLUS Z (TIMES C V)) to eliminate (REMAINDER X C) and (QUOTIENT X C). We rely upon the type restriction lemma noted when DIFFERENCE was introduced, LESSP-REMAINDER, the type restriction lemma noted when REMAINDER was introduced, and the type restriction lemma noted when QUOTIENT was introduced to restrict the new variables. This produces the following three new goals: Case 2.1.3. (IMPLIES (AND (LESSP A B) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (EQUAL (REMAINDER A C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (LESSP B A)) (EQUAL (REMAINDER (DIFFERENCE A B) C) (DIFFERENCE C B))). This further simplifies, using linear arithmetic, to: T. Case 2.1.2. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (EQUAL (REMAINDER A C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (LESSP B A)) (EQUAL (REMAINDER (DIFFERENCE A B) C) (DIFFERENCE C B))), which further simplifies, opening up the function LESSP, to: T. Case 2.1.1. (IMPLIES (AND (NUMBERP Z) (EQUAL (LESSP Z C) (NOT (ZEROP C))) (NUMBERP V) (NOT (LESSP (PLUS B Z (TIMES C V)) B)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP (PLUS B Z (TIMES C V)) C)) (LESSP B C) (EQUAL (REMAINDER (PLUS B Z (TIMES C V)) C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (LESSP B (PLUS B Z (TIMES C V)))) (EQUAL Z (DIFFERENCE C B))), which further simplifies, applying CORRECTNESS-OF-CANCEL-LESSP-PLUS, REMAINDER-TIMES1-INSTANCE, REMAINDER-PLUS, EQUAL-PLUS-0, and EQUAL-TIMES-0, and opening up ZEROP, NOT, and EQUAL, to the following two new formulas: Case 2.1.1.2. (IMPLIES (AND (NUMBERP Z) (LESSP Z C) (NUMBERP V) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP (PLUS B Z (TIMES C V)) C)) (LESSP B C) (EQUAL (REMAINDER (PLUS B Z) C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (NOT (EQUAL Z 0))) (EQUAL Z (DIFFERENCE C B))). This again simplifies, using linear arithmetic, rewriting with REMAINDER-NOOP, and expanding the definition of REMAINDER, to the following two new goals: Case 2.1.1.2.2. (IMPLIES (AND (NUMBERP Z) (LESSP Z C) (NUMBERP V) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP (PLUS B Z (TIMES C V)) C)) (LESSP B C) (NOT (LESSP (PLUS B Z) C)) (EQUAL (DIFFERENCE (PLUS B Z) C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (NOT (EQUAL Z 0))) (EQUAL Z (DIFFERENCE C B))). However this again simplifies, using linear arithmetic, to the formula: (IMPLIES (AND (LESSP C B) (NUMBERP Z) (LESSP Z C) (NUMBERP V) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP (PLUS B Z (TIMES C V)) C)) (LESSP B C) (NOT (LESSP (PLUS B Z) C)) (EQUAL (DIFFERENCE (PLUS B Z) C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (NOT (EQUAL Z 0))) (EQUAL Z (DIFFERENCE C B))). However this finally simplifies, using linear arithmetic, to: T. Case 2.1.1.2.1. (IMPLIES (AND (NUMBERP Z) (LESSP Z C) (NUMBERP V) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP (PLUS B Z (TIMES C V)) C)) (LESSP B C) (LESSP (PLUS B Z) C) (EQUAL (PLUS B Z) 0) (NUMBERP B) (NOT (EQUAL B 0)) (NOT (EQUAL Z 0))) (EQUAL Z (DIFFERENCE C B))), which again simplifies, using linear arithmetic, to: T. Case 2.1.1.1. (IMPLIES (AND (NUMBERP Z) (LESSP Z C) (NUMBERP V) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP (PLUS B Z (TIMES C V)) C)) (LESSP B C) (EQUAL (REMAINDER (PLUS B Z) C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (NOT (EQUAL V 0))) (EQUAL Z (DIFFERENCE C B))), which again simplifies, using linear arithmetic, applying REMAINDER-NOOP, and opening up the definition of REMAINDER, to the following two new formulas: Case 2.1.1.1.2. (IMPLIES (AND (NUMBERP Z) (LESSP Z C) (NUMBERP V) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP (PLUS B Z (TIMES C V)) C)) (LESSP B C) (NOT (LESSP (PLUS B Z) C)) (EQUAL (DIFFERENCE (PLUS B Z) C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (NOT (EQUAL V 0))) (EQUAL Z (DIFFERENCE C B))). However this again simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP C B) (NUMBERP Z) (LESSP Z C) (NUMBERP V) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP (PLUS B Z (TIMES C V)) C)) (LESSP B C) (NOT (LESSP (PLUS B Z) C)) (EQUAL (DIFFERENCE (PLUS B Z) C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (NOT (EQUAL V 0))) (EQUAL Z (DIFFERENCE C B))). But this finally simplifies, using linear arithmetic, to: T. Case 2.1.1.1.1. (IMPLIES (AND (NUMBERP Z) (LESSP Z C) (NUMBERP V) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP (PLUS B Z (TIMES C V)) C)) (LESSP B C) (LESSP (PLUS B Z) C) (EQUAL (PLUS B Z) 0) (NUMBERP B) (NOT (EQUAL B 0)) (NOT (EQUAL V 0))) (EQUAL Z (DIFFERENCE C B))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (IMPLIES (AND (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0))) (EQUAL (REMAINDER (DIFFERENCE A (PLUS C (DIFFERENCE B C))) C) (IF (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (DIFFERENCE C (REMAINDER (DIFFERENCE B C) C)) 0))) (EQUAL (REMAINDER A C) 0) (NOT (EQUAL (REMAINDER B C) 0))) (EQUAL (REMAINDER (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE C (REMAINDER B C)) 0))), which simplifies, using linear arithmetic, applying COMMUTATIVITY-OF-PLUS, CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS, PLUS-ZERO-ARG2, PLUS-DIFFERENCE-ARG2, REMAINDER-NOOP, REMAINDER-OF-NON-NUMBER, and DIFFERENCE-LEQ-ARG1, and unfolding the functions NOT, AND, FIX, ZEROP, IMPLIES, REMAINDER, NUMBERP, and EQUAL, to the following two new formulas: Case 1.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP C B) (NUMBERP B) (EQUAL (REMAINDER (DIFFERENCE A B) C) (DIFFERENCE C (REMAINDER (DIFFERENCE B C) C))) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0)) (NOT (LESSP B A))) (EQUAL (REMAINDER (DIFFERENCE A B) C) 0)). But this again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (NOT (LESSP (DIFFERENCE B C) (DIFFERENCE A C))) (NUMBERP B) (EQUAL (REMAINDER (DIFFERENCE A B) C) 0) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0)) (LESSP B A)) (EQUAL 0 (DIFFERENCE C (REMAINDER (DIFFERENCE B C) C)))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 1.2 0.0 ] REMAINDER-DIFFERENCE2 (PROVE-LEMMA REMAINDER-DIFFERENCE3 (REWRITE) (IMPLIES (AND (EQUAL (REMAINDER B C) 0) (NOT (EQUAL (REMAINDER A C) 0))) (EQUAL (REMAINDER (DIFFERENCE A B) C) (IF (LESSP B A) (REMAINDER A C) 0))) ((ENABLE REMAINDER-NOOP REMAINDER-OF-NON-NUMBER REMAINDER-ZERO) (INDUCT (DOUBLE-REMAINDER-INDUCTION A B C)))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, AND, and DIFFERENCE-DIFFERENCE-ARG1, to four new conjectures: Case 4. (IMPLIES (AND (ZEROP C) (EQUAL (REMAINDER B C) 0) (NOT (EQUAL (REMAINDER A C) 0))) (EQUAL (REMAINDER (DIFFERENCE A B) C) (IF (LESSP B A) (REMAINDER A C) 0))), which simplifies, applying REMAINDER-ZERO, and unfolding the definitions of ZEROP, EQUAL, DIFFERENCE, and LESSP, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP A C) (EQUAL (REMAINDER B C) 0) (NOT (EQUAL (REMAINDER A C) 0))) (EQUAL (REMAINDER (DIFFERENCE A B) C) (IF (LESSP B A) (REMAINDER A C) 0))). This simplifies, using linear arithmetic and appealing to the lemma REMAINDER-NOOP, to the following three new goals: Case 3.3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP A C) (EQUAL (REMAINDER B C) 0) (NUMBERP A) (NOT (EQUAL A 0)) (LESSP A B)) (EQUAL (REMAINDER (DIFFERENCE A B) C) (IF (LESSP B A) (REMAINDER A C) 0))). This again simplifies, using linear arithmetic, appealing to the lemmas DIFFERENCE-LEQ-ARG1 and REMAINDER-NOOP, and unfolding the function NUMBERP, to the conjecture: (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP A C) (EQUAL (REMAINDER B C) 0) (NUMBERP A) (NOT (EQUAL A 0)) (LESSP A B)) (NOT (LESSP B A))). However this again simplifies, using linear arithmetic, to: T. Case 3.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP A C) (EQUAL (REMAINDER B C) 0) (NUMBERP A) (NOT (EQUAL A 0)) (NOT (LESSP A B)) (NOT (LESSP B A))) (EQUAL (DIFFERENCE A B) 0)), which again simplifies, using linear arithmetic, to: T. Case 3.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP A C) (EQUAL (REMAINDER B C) 0) (NUMBERP A) (NOT (EQUAL A 0)) (NOT (LESSP A B)) (LESSP B A)) (EQUAL (DIFFERENCE A B) A)), which again simplifies, using linear arithmetic, rewriting with REMAINDER-NOOP, and opening up EQUAL, LESSP, and DIFFERENCE, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (EQUAL (REMAINDER B C) 0) (NOT (EQUAL (REMAINDER A C) 0))) (EQUAL (REMAINDER (DIFFERENCE A B) C) (IF (LESSP B A) (REMAINDER A C) 0))). This simplifies, applying REMAINDER-NOOP, and opening up EQUAL, DIFFERENCE, and LESSP, to four new formulas: Case 2.4. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (EQUAL B 0) (NOT (EQUAL (REMAINDER A C) 0)) (NOT (NUMBERP A))) (EQUAL (REMAINDER 0 C) 0)), which again simplifies, expanding LESSP, to: T. Case 2.3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (EQUAL B 0) (NOT (EQUAL (REMAINDER A C) 0)) (EQUAL A 0)) (EQUAL (REMAINDER 0 C) 0)), which again simplifies, trivially, to: T. Case 2.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (NOT (NUMBERP B)) (NOT (EQUAL (REMAINDER A C) 0)) (NOT (NUMBERP A))) (EQUAL (REMAINDER 0 C) 0)). However this again simplifies, expanding LESSP, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (NOT (NUMBERP B)) (NOT (EQUAL (REMAINDER A C) 0)) (EQUAL A 0)) (EQUAL (REMAINDER 0 C) 0)), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (IMPLIES (AND (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0))) (EQUAL (REMAINDER (DIFFERENCE A (PLUS C (DIFFERENCE B C))) C) (IF (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (REMAINDER (DIFFERENCE A C) C) 0))) (EQUAL (REMAINDER B C) 0) (NOT (EQUAL (REMAINDER A C) 0))) (EQUAL (REMAINDER (DIFFERENCE A B) C) (IF (LESSP B A) (REMAINDER A C) 0))), which simplifies, using linear arithmetic, rewriting with COMMUTATIVITY-OF-PLUS, CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS, PLUS-ZERO-ARG2, PLUS-DIFFERENCE-ARG2, REMAINDER-NOOP, REMAINDER-OF-NON-NUMBER, and DIFFERENCE-LEQ-ARG1, and expanding the definitions of NOT, AND, FIX, ZEROP, IMPLIES, NUMBERP, EQUAL, DIFFERENCE, LESSP, and REMAINDER, to the following nine new goals: Case 1.9. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (NOT (NUMBERP B)) (EQUAL (REMAINDER (DIFFERENCE A 0) C) (REMAINDER (DIFFERENCE A C) C)) (NOT (EQUAL (REMAINDER A C) 0)) (NOT (NUMBERP A))) (EQUAL (REMAINDER 0 C) 0)). However this again simplifies, opening up the definition of LESSP, to: T. Case 1.8. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (NOT (NUMBERP B)) (EQUAL (REMAINDER (DIFFERENCE A 0) C) (REMAINDER (DIFFERENCE A C) C)) (NOT (EQUAL (REMAINDER A C) 0)) (EQUAL A 0)) (EQUAL (REMAINDER 0 C) 0)), which again simplifies, using linear arithmetic, to: T. Case 1.7. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (NUMBERP B) (EQUAL (REMAINDER (DIFFERENCE A B) C) (REMAINDER (DIFFERENCE A C) C)) (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A B) C) 0))) (LESSP B A)), which again simplifies, using linear arithmetic, to: T. Case 1.6. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (NOT (LESSP (DIFFERENCE B C) (DIFFERENCE A C))) (LESSP C B) (NOT (NUMBERP B)) (EQUAL (REMAINDER (DIFFERENCE A 0) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (NOT (NUMBERP A))) (EQUAL (REMAINDER 0 C) 0)), which again simplifies, opening up the definition of LESSP, to: T. Case 1.5. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (NOT (LESSP (DIFFERENCE B C) (DIFFERENCE A C))) (LESSP C B) (NOT (NUMBERP B)) (EQUAL (REMAINDER (DIFFERENCE A 0) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (EQUAL A 0)) (EQUAL (REMAINDER 0 C) 0)), which again simplifies, using linear arithmetic, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (NOT (LESSP (DIFFERENCE B C) (DIFFERENCE A C))) (LESSP C B) (NOT (NUMBERP B)) (EQUAL (REMAINDER (DIFFERENCE A 0) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (NOT (EQUAL A 0)) (NUMBERP A)) (EQUAL (REMAINDER A C) (REMAINDER (DIFFERENCE A C) C))), which again simplifies, expanding the function LESSP, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (NOT (LESSP (DIFFERENCE B C) (DIFFERENCE A C))) (LESSP C B) (NUMBERP B) (EQUAL (REMAINDER (DIFFERENCE A B) C) 0) (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0))) (NOT (LESSP B A))), which again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (NOT (LESSP C B)) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (NOT (LESSP B A))) (EQUAL (REMAINDER (DIFFERENCE A B) C) 0)), which again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (NOT (LESSP C B)) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (LESSP B A)) (EQUAL (REMAINDER (DIFFERENCE A B) C) (REMAINDER (DIFFERENCE A C) C))), which again simplifies, using linear arithmetic, to two new conjectures: Case 1.1.2. (IMPLIES (AND (NOT (NUMBERP B)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (NOT (LESSP C B)) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (LESSP B A)) (EQUAL (REMAINDER (DIFFERENCE A B) C) (REMAINDER (DIFFERENCE A C) C))), which again simplifies, expanding the definition of LESSP, to: T. Case 1.1.1. (IMPLIES (AND (NUMBERP B) (NOT (EQUAL B 0)) (NOT (LESSP A B)) (NOT (LESSP B B)) (LESSP (DIFFERENCE B B) (DIFFERENCE A B)) (NOT (LESSP B B)) (NOT (EQUAL (REMAINDER (DIFFERENCE A B) B) 0)) (LESSP B A)) (EQUAL (REMAINDER (DIFFERENCE A B) B) (REMAINDER (DIFFERENCE A B) B))), which again simplifies, obviously, to: T. Q.E.D. [ 0.3 2.0 0.0 ] REMAINDER-DIFFERENCE3 (DISABLE REMAINDER-DIFFERENCE3) [ 0.0 0.0 0.0 ] REMAINDER-DIFFERENCE3-OFF (PROVE-LEMMA EQUAL-REMAINDER-DIFFERENCE-0 (REWRITE) (EQUAL (EQUAL (REMAINDER (DIFFERENCE A B) C) 0) (IF (LEQ B A) (EQUAL (REMAINDER A C) (REMAINDER B C)) T)) ((ENABLE LESSP-REMAINDER REMAINDER-DIFFERENCE1 REMAINDER-OF-NON-NUMBER REMAINDER-PLUS REMAINDER-QUOTIENT-ELIM REMAINDER-TIMES1-INSTANCE REMAINDER-ZERO) (DO-NOT-INDUCT T))) This simplifies, clearly, to the following three new goals: Case 3. (IMPLIES (NOT (EQUAL (REMAINDER (DIFFERENCE A B) C) 0)) (NOT (LESSP A B))). This again simplifies, using linear arithmetic, applying DIFFERENCE-LEQ-ARG1, and unfolding LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 2. (IMPLIES (NOT (EQUAL (REMAINDER (DIFFERENCE A B) C) 0)) (NOT (EQUAL (REMAINDER A C) (REMAINDER B C)))). But this again simplifies, rewriting with the lemmas DIFFERENCE-X-X and REMAINDER-DIFFERENCE1, and opening up the definition of EQUAL, to: T. Case 1. (IMPLIES (AND (EQUAL (REMAINDER (DIFFERENCE A B) C) 0) (NOT (LESSP A B))) (EQUAL (EQUAL (REMAINDER A C) (REMAINDER B C)) T)), which again simplifies, trivially, to: (IMPLIES (AND (EQUAL (REMAINDER (DIFFERENCE A B) C) 0) (NOT (LESSP A B))) (EQUAL (REMAINDER A C) (REMAINDER B C))). Applying the lemmas DIFFERENCE-ELIM and REMAINDER-QUOTIENT-ELIM, replace A by (PLUS B X) to eliminate (DIFFERENCE A B) and X by (PLUS Z (TIMES C V)) to eliminate (REMAINDER X C) and (QUOTIENT X C). We use the type restriction lemma noted when DIFFERENCE was introduced, LESSP-REMAINDER, the type restriction lemma noted when REMAINDER was introduced, and the type restriction lemma noted when QUOTIENT was introduced to restrict the new variables. We would thus like to prove the following four new conjectures: Case 1.4. (IMPLIES (AND (NOT (NUMBERP A)) (EQUAL (REMAINDER (DIFFERENCE A B) C) 0) (NOT (LESSP A B))) (EQUAL (REMAINDER A C) (REMAINDER B C))). But this further simplifies, using linear arithmetic, appealing to the lemmas DIFFERENCE-LEQ-ARG1 and REMAINDER-OF-NON-NUMBER, and expanding the functions LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 1.3. (IMPLIES (AND (EQUAL C 0) (NUMBERP X) (EQUAL (REMAINDER X C) 0) (NOT (LESSP (PLUS B X) B))) (EQUAL (REMAINDER (PLUS B X) C) (REMAINDER B C))), which further simplifies, applying REMAINDER-ZERO and PLUS-ZERO-ARG2, and expanding the functions ZEROP, REMAINDER, and EQUAL, to: T. Case 1.2. (IMPLIES (AND (NOT (NUMBERP C)) (NUMBERP X) (EQUAL (REMAINDER X C) 0) (NOT (LESSP (PLUS B X) B))) (EQUAL (REMAINDER (PLUS B X) C) (REMAINDER B C))). However this further simplifies, rewriting with REMAINDER-ZERO and PLUS-ZERO-ARG2, and opening up the definitions of ZEROP, NUMBERP, and EQUAL, to: T. Case 1.1. (IMPLIES (AND (NUMBERP Z) (EQUAL (LESSP Z C) (NOT (ZEROP C))) (NUMBERP V) (NUMBERP C) (NOT (EQUAL C 0)) (EQUAL Z 0) (NOT (LESSP (PLUS B Z (TIMES C V)) B))) (EQUAL (REMAINDER (PLUS B Z (TIMES C V)) C) (REMAINDER B C))). But this further simplifies, applying CORRECTNESS-OF-CANCEL-LESSP-PLUS, REMAINDER-TIMES1-INSTANCE, and REMAINDER-PLUS, and unfolding the functions NUMBERP, EQUAL, LESSP, ZEROP, NOT, and PLUS, to: T. Q.E.D. [ 0.0 0.1 0.0 ] EQUAL-REMAINDER-DIFFERENCE-0 (DISABLE EQUAL-REMAINDER-DIFFERENCE-0) [ 0.0 0.0 0.0 ] EQUAL-REMAINDER-DIFFERENCE-0-OFF (PROVE-LEMMA LESSP-PLUS-FACT (REWRITE) (IMPLIES (AND (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP B C) (LESSP A X)) (EQUAL (LESSP (PLUS A B) C) T)) ((INDUCT (DOUBLE-REMAINDER-INDUCTION B C X)))) WARNING: Note that LESSP-PLUS-FACT contains the free variable X which will be chosen by instantiating the hypothesis (EQUAL (REMAINDER B X) 0). This formula can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to the following four new conjectures: Case 4. (IMPLIES (AND (ZEROP X) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP B C) (LESSP A X)) (EQUAL (LESSP (PLUS A B) C) T)). This simplifies, rewriting with REMAINDER-ZERO, and unfolding the functions ZEROP, LESSP, and EQUAL, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (LESSP B X) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP B C) (LESSP A X)) (EQUAL (LESSP (PLUS A B) C) T)), which simplifies, applying the lemmas REMAINDER-NOOP and PLUS-ZERO-ARG2, and unfolding the functions EQUAL, LESSP, and ZEROP, to four new goals: Case 3.4. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (LESSP B X) (EQUAL B 0) (EQUAL (REMAINDER C X) 0) (NOT (EQUAL C 0)) (NUMBERP C) (LESSP A X) (NOT (NUMBERP A))) (LESSP 0 C)), which again simplifies, using linear arithmetic, to: T. Case 3.3. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (LESSP B X) (EQUAL B 0) (EQUAL (REMAINDER C X) 0) (NOT (EQUAL C 0)) (NUMBERP C) (LESSP A X) (NUMBERP A)) (LESSP A C)), which again simplifies, using linear arithmetic, appealing to the lemma REMAINDER-NOOP, and unfolding the definitions of EQUAL and LESSP, to: T. Case 3.2. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (LESSP B X) (NOT (NUMBERP B)) (EQUAL (REMAINDER C X) 0) (NOT (EQUAL C 0)) (NUMBERP C) (LESSP A X) (NOT (NUMBERP A))) (LESSP 0 C)), which again simplifies, using linear arithmetic, to: T. Case 3.1. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (LESSP B X) (NOT (NUMBERP B)) (EQUAL (REMAINDER C X) 0) (NOT (EQUAL C 0)) (NUMBERP C) (LESSP A X) (NUMBERP A)) (LESSP A C)), which again simplifies, using linear arithmetic, rewriting with the lemma REMAINDER-NOOP, and unfolding the function LESSP, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (LESSP B X)) (LESSP C X) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP B C) (LESSP A X)) (EQUAL (LESSP (PLUS A B) C) T)), which simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (LESSP B X)) (NOT (LESSP C X)) (IMPLIES (AND (EQUAL (REMAINDER (DIFFERENCE B X) X) 0) (EQUAL (REMAINDER (DIFFERENCE C X) X) 0) (LESSP (DIFFERENCE B X) (DIFFERENCE C X)) (LESSP A X)) (EQUAL (LESSP (PLUS A (DIFFERENCE B X)) (DIFFERENCE C X)) T)) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP B C) (LESSP A X)) (EQUAL (LESSP (PLUS A B) C) T)), which simplifies, using linear arithmetic, applying the lemmas PLUS-ZERO-ARG2, PLUS-DIFFERENCE-ARG2, REMAINDER-NOOP, and DIFFERENCE-LEQ-ARG1, and expanding AND, ZEROP, IMPLIES, REMAINDER, NUMBERP, EQUAL, LESSP, and PLUS, to four new conjectures: Case 1.4. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (LESSP B X)) (NOT (LESSP C X)) (NOT (LESSP (DIFFERENCE B X) (DIFFERENCE C X))) (EQUAL (REMAINDER (DIFFERENCE B X) X) 0) (EQUAL (REMAINDER (DIFFERENCE C X) X) 0) (LESSP B C) (LESSP A X)) (LESSP (PLUS A B) C)), which again simplifies, using linear arithmetic, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (LESSP B X)) (NOT (LESSP C X)) (NOT (LESSP X B)) (NUMBERP A) (LESSP A (DIFFERENCE C X)) (EQUAL (REMAINDER (DIFFERENCE C X) X) 0) (LESSP B C) (LESSP A X)) (LESSP (PLUS A B) C)), which again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (LESSP B X)) (NOT (LESSP C X)) (NOT (LESSP X B)) (NOT (NUMBERP A)) (LESSP 0 (DIFFERENCE C X)) (EQUAL (REMAINDER (DIFFERENCE C X) X) 0) (LESSP B C) (NOT (NUMBERP B))) (LESSP 0 C)), which again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (LESSP B X)) (NOT (LESSP C X)) (LESSP X B) (LESSP (DIFFERENCE (PLUS A B) X) (DIFFERENCE C X)) (EQUAL (REMAINDER (DIFFERENCE B X) X) 0) (EQUAL (REMAINDER (DIFFERENCE C X) X) 0) (LESSP B C) (LESSP A X)) (LESSP (PLUS A B) C)), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 1.1 0.0 ] LESSP-PLUS-FACT (DISABLE LESSP-PLUS-FACT) [ 0.0 0.0 0.0 ] LESSP-PLUS-FACT-OFF (PROVE-LEMMA REMAINDER-PLUS-FACT NIL (IMPLIES (AND (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP A X)) (EQUAL (REMAINDER (PLUS A B) C) (PLUS A (REMAINDER B C)))) ((ENABLE LESSP-PLUS-FACT REMAINDER-NOOP REMAINDER-DIFFERENCE1) (INDUCT (REMAINDER B C)))) This formula can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to the following three new conjectures: Case 3. (IMPLIES (AND (ZEROP C) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP A X)) (EQUAL (REMAINDER (PLUS A B) C) (PLUS A (REMAINDER B C)))). This simplifies, using linear arithmetic, appealing to the lemmas REMAINDER-NOOP, REMAINDER-ZERO, CORRECTNESS-OF-CANCEL-EQUAL-PLUS, and REMAINDER-OF-NON-NUMBER, and opening up the definitions of ZEROP, NUMBERP, EQUAL, and FIX, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP A X)) (EQUAL (REMAINDER (PLUS A B) C) (PLUS A (REMAINDER B C)))). This simplifies, applying LESSP-PLUS-FACT, REMAINDER-NOOP, and CORRECTNESS-OF-CANCEL-EQUAL-PLUS, and unfolding the function FIX, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (IMPLIES (AND (EQUAL (REMAINDER (DIFFERENCE B C) X) 0) (EQUAL (REMAINDER C X) 0) (LESSP A X)) (EQUAL (REMAINDER (PLUS A (DIFFERENCE B C)) C) (PLUS A (REMAINDER (DIFFERENCE B C) C)))) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP A X)) (EQUAL (REMAINDER (PLUS A B) C) (PLUS A (REMAINDER B C)))), which simplifies, using linear arithmetic, applying REMAINDER-DIFFERENCE1, PLUS-ZERO-ARG2, PLUS-DIFFERENCE-ARG2, DIFFERENCE-LEQ-ARG1, REMAINDER-NOOP, and REMAINDER-PLUS, and unfolding EQUAL, DIFFERENCE, AND, ZEROP, IMPLIES, REMAINDER, NUMBERP, LESSP, and PLUS, to the following four new formulas: Case 1.4. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NUMBERP A) (EQUAL (REMAINDER A C) (PLUS A (REMAINDER (DIFFERENCE B C) C))) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP A X)) (EQUAL (REMAINDER A C) A)). However this again simplifies, using linear arithmetic, to two new conjectures: Case 1.4.2. (IMPLIES (AND (NOT (NUMBERP B)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NUMBERP A) (EQUAL (REMAINDER A C) (PLUS A (REMAINDER (DIFFERENCE B C) C))) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP A X)) (EQUAL (REMAINDER A C) A)), which again simplifies, opening up the function LESSP, to: T. Case 1.4.1. (IMPLIES (AND (NUMBERP B) (NOT (EQUAL B 0)) (NOT (LESSP B B)) (NOT (LESSP B B)) (NUMBERP A) (EQUAL (REMAINDER A B) (PLUS A (REMAINDER (DIFFERENCE B B) B))) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER B X) 0) (LESSP A X)) (EQUAL (REMAINDER A B) A)), which again simplifies, using linear arithmetic, rewriting with DIFFERENCE-X-X, REMAINDER-NOOP, and PLUS-ZERO-ARG2, and unfolding the functions NUMBERP and ZEROP, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NOT (NUMBERP A)) (EQUAL (REMAINDER 0 C) (PLUS A (REMAINDER (DIFFERENCE B C) C))) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (NOT (EQUAL X 0)) (NUMBERP X) (NOT (NUMBERP B))) (EQUAL (REMAINDER 0 C) 0)). But this again simplifies, unfolding LESSP, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NOT (NUMBERP A)) (EQUAL (REMAINDER 0 C) (PLUS A (REMAINDER (DIFFERENCE B C) C))) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (NOT (EQUAL X 0)) (NUMBERP X) (NUMBERP B)) (EQUAL (REMAINDER B C) 0)), which again simplifies, using linear arithmetic, to the formula: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP B B)) (NOT (LESSP B B)) (NOT (NUMBERP A)) (EQUAL (REMAINDER 0 B) (PLUS A (REMAINDER (DIFFERENCE B B) B))) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER B X) 0) (NOT (EQUAL X 0)) (NUMBERP X) (NUMBERP B)) (EQUAL (REMAINDER B B) 0)). But this again simplifies, applying REMAINDER-NOOP, DIFFERENCE-X-X, and PLUS-ZERO-ARG2, and opening up the definitions of LESSP, EQUAL, NUMBERP, ZEROP, and REMAINDER, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (LESSP C B) (EQUAL (REMAINDER (DIFFERENCE (PLUS A B) C) C) (PLUS A (REMAINDER (DIFFERENCE B C) C))) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP A X) (LESSP (PLUS A B) C)) (EQUAL (PLUS A B) (PLUS A (REMAINDER (DIFFERENCE B C) C)))). However this again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.7 0.0 ] REMAINDER-PLUS-FACT (PROVE-LEMMA REMAINDER-PLUS-TIMES-TIMES-PROOF NIL (IMPLIES (LESSP A B) (EQUAL (REMAINDER (PLUS A (TIMES B C)) (TIMES B D)) (PLUS A (REMAINDER (TIMES B C) (TIMES B D))))) ((USE (REMAINDER-PLUS-FACT (A A) (X B) (B (TIMES B C)) (C (TIMES B D)))) (ENABLE REMAINDER-TIMES1-INSTANCE REMAINDER-TIMES2-INSTANCE) (DO-NOT-INDUCT T))) This conjecture can be simplified, using the abbreviations IMPLIES, REMAINDER-TIMES2-INSTANCE, and REMAINDER-TIMES1-INSTANCE, to: (IMPLIES (AND (IMPLIES (AND (EQUAL 0 0) (EQUAL 0 0) (LESSP A B)) (EQUAL (REMAINDER (PLUS A (TIMES B C)) (TIMES B D)) (PLUS A (TIMES B (REMAINDER C D))))) (LESSP A B)) (EQUAL (REMAINDER (PLUS A (TIMES B C)) (TIMES B D)) (PLUS A (TIMES B (REMAINDER C D))))). This simplifies, opening up the functions EQUAL, AND, and IMPLIES, to: T. Q.E.D. [ 0.0 0.2 0.0 ] REMAINDER-PLUS-TIMES-TIMES-PROOF (PROVE-LEMMA REMAINDER-PLUS-TIMES-TIMES (REWRITE) (IMPLIES (LESSP A B) (AND (EQUAL (REMAINDER (PLUS A (TIMES B C)) (TIMES B D)) (PLUS A (REMAINDER (TIMES B C) (TIMES B D)))) (EQUAL (REMAINDER (PLUS A (TIMES C B)) (TIMES D B)) (PLUS A (REMAINDER (TIMES C B) (TIMES D B)))))) ((USE (REMAINDER-PLUS-TIMES-TIMES-PROOF (A A) (B B) (C C) (D D))) (ENABLE COMMUTATIVITY-OF-TIMES) (DO-NOT-INDUCT T))) WARNING: Note that the proposed lemma REMAINDER-PLUS-TIMES-TIMES is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This conjecture can be simplified, using the abbreviations IMPLIES and REMAINDER-TIMES2-INSTANCE, to the goal: (IMPLIES (AND (IMPLIES (LESSP A B) (EQUAL (REMAINDER (PLUS A (TIMES B C)) (TIMES B D)) (PLUS A (TIMES B (REMAINDER C D))))) (LESSP A B)) (AND (EQUAL (REMAINDER (PLUS A (TIMES B C)) (TIMES B D)) (PLUS A (TIMES B (REMAINDER C D)))) (EQUAL (REMAINDER (PLUS A (TIMES C B)) (TIMES D B)) (PLUS A (TIMES (REMAINDER C D) B))))). This simplifies, applying COMMUTATIVITY-OF-TIMES, and opening up the definitions of IMPLIES and AND, to: T. Q.E.D. [ 0.0 0.8 0.0 ] REMAINDER-PLUS-TIMES-TIMES (PROVE-LEMMA REMAINDER-PLUS-TIMES-TIMES-INSTANCE (REWRITE) (IMPLIES (LESSP A B) (AND (EQUAL (REMAINDER (PLUS A (TIMES B C) (TIMES B D)) (TIMES B E)) (PLUS A (TIMES B (REMAINDER (PLUS C D) E)))) (EQUAL (REMAINDER (PLUS A (TIMES C B) (TIMES D B)) (TIMES E B)) (PLUS A (TIMES B (REMAINDER (PLUS C D) E)))))) ((ENABLE COMMUTATIVITY-OF-TIMES REMAINDER-TIMES-TIMES REMAINDER-PLUS-TIMES-TIMES) (DISABLE TIMES-DISTRIBUTES-OVER-PLUS) (USE (TIMES-DISTRIBUTES-OVER-PLUS (X B) (Y C) (Z D))) (DO-NOT-INDUCT T))) WARNING: Note that the proposed lemma REMAINDER-PLUS-TIMES-TIMES-INSTANCE is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This formula simplifies, rewriting with the lemmas COMMUTATIVITY-OF-TIMES, REMAINDER-TIMES2-INSTANCE, and REMAINDER-PLUS-TIMES-TIMES, and expanding AND, to: T. Q.E.D. [ 0.0 0.8 0.0 ] REMAINDER-PLUS-TIMES-TIMES-INSTANCE (PROVE-LEMMA REMAINDER-REMAINDER (REWRITE) (IMPLIES (EQUAL (REMAINDER B A) 0) (EQUAL (REMAINDER (REMAINDER N B) A) (REMAINDER N A))) ((INDUCT (REMAINDER N B)) (ENABLE REMAINDER-PLUS REMAINDER-QUOTIENT-ELIM REMAINDER-ZERO))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to three new formulas: Case 3. (IMPLIES (AND (ZEROP B) (EQUAL (REMAINDER B A) 0)) (EQUAL (REMAINDER (REMAINDER N B) A) (REMAINDER N A))), which simplifies, applying REMAINDER-ZERO and REMAINDER-OF-NON-NUMBER, and opening up the definitions of ZEROP, LESSP, EQUAL, NUMBERP, and REMAINDER, to the following two new goals: Case 3.2. (IMPLIES (AND (EQUAL B 0) (NOT (NUMBERP N))) (EQUAL (REMAINDER 0 A) (REMAINDER N A))). However this again simplifies, rewriting with REMAINDER-OF-NON-NUMBER, and unfolding the functions LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 3.1. (IMPLIES (AND (NOT (NUMBERP B)) (NOT (NUMBERP N))) (EQUAL (REMAINDER 0 A) (REMAINDER N A))). However this again simplifies, appealing to the lemma REMAINDER-OF-NON-NUMBER, and expanding LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (LESSP N B) (EQUAL (REMAINDER B A) 0)) (EQUAL (REMAINDER (REMAINDER N B) A) (REMAINDER N A))), which simplifies, appealing to the lemma REMAINDER-NOOP, to: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (LESSP N B) (EQUAL (REMAINDER B A) 0) (NOT (NUMBERP N))) (EQUAL (REMAINDER 0 A) (REMAINDER N A))). However this again simplifies, applying REMAINDER-OF-NON-NUMBER, and unfolding the functions LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP N B)) (IMPLIES (EQUAL (REMAINDER B A) 0) (EQUAL (REMAINDER (REMAINDER (DIFFERENCE N B) B) A) (REMAINDER (DIFFERENCE N B) A))) (EQUAL (REMAINDER B A) 0)) (EQUAL (REMAINDER (REMAINDER N B) A) (REMAINDER N A))). This simplifies, unfolding the definitions of EQUAL, IMPLIES, and REMAINDER, to: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP N B)) (EQUAL (REMAINDER (REMAINDER (DIFFERENCE N B) B) A) (REMAINDER (DIFFERENCE N B) A)) (EQUAL (REMAINDER B A) 0)) (EQUAL (REMAINDER (DIFFERENCE N B) A) (REMAINDER N A))). Applying the lemmas DIFFERENCE-ELIM and REMAINDER-QUOTIENT-ELIM, replace N by (PLUS B X) to eliminate (DIFFERENCE N B), X by (PLUS Z (TIMES B V)) to eliminate (REMAINDER X B) and (QUOTIENT X B), and Z by (PLUS X (TIMES A W)) to eliminate (REMAINDER Z A) and (QUOTIENT Z A). We rely upon the type restriction lemma noted when DIFFERENCE was introduced, LESSP-REMAINDER, the type restriction lemma noted when REMAINDER was introduced, and the type restriction lemma noted when QUOTIENT was introduced to restrict the new variables. This produces the following four new formulas: Case 1.4. (IMPLIES (AND (NOT (NUMBERP N)) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP N B)) (EQUAL (REMAINDER (REMAINDER (DIFFERENCE N B) B) A) (REMAINDER (DIFFERENCE N B) A)) (EQUAL (REMAINDER B A) 0)) (EQUAL (REMAINDER (DIFFERENCE N B) A) (REMAINDER N A))). But this further simplifies, expanding the function LESSP, to: T. Case 1.3. (IMPLIES (AND (EQUAL A 0) (NUMBERP Z) (EQUAL (LESSP Z B) (NOT (ZEROP B))) (NUMBERP V) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (PLUS B Z (TIMES B V)) B)) (EQUAL (REMAINDER Z A) (REMAINDER (PLUS Z (TIMES B V)) A)) (EQUAL (REMAINDER B A) 0)) (EQUAL (REMAINDER (PLUS Z (TIMES B V)) A) (REMAINDER (PLUS B Z (TIMES B V)) A))), which further simplifies, rewriting with CORRECTNESS-OF-CANCEL-LESSP-PLUS, REMAINDER-ZERO, REMAINDER-TIMES1, and REMAINDER-PLUS, and opening up the functions ZEROP, NOT, and EQUAL, to: T. Case 1.2. (IMPLIES (AND (NOT (NUMBERP A)) (NUMBERP Z) (EQUAL (LESSP Z B) (NOT (ZEROP B))) (NUMBERP V) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (PLUS B Z (TIMES B V)) B)) (EQUAL (REMAINDER Z A) (REMAINDER (PLUS Z (TIMES B V)) A)) (EQUAL (REMAINDER B A) 0)) (EQUAL (REMAINDER (PLUS Z (TIMES B V)) A) (REMAINDER (PLUS B Z (TIMES B V)) A))). However this further simplifies, applying the lemmas CORRECTNESS-OF-CANCEL-LESSP-PLUS, REMAINDER-ZERO, REMAINDER-TIMES1, and REMAINDER-PLUS, and expanding the definitions of ZEROP, NOT, and EQUAL, to: T. Case 1.1. (IMPLIES (AND (NUMBERP X) (EQUAL (LESSP X A) (NOT (ZEROP A))) (NUMBERP W) (NUMBERP A) (NOT (EQUAL A 0)) (EQUAL (LESSP (PLUS X (TIMES A W)) B) (NOT (ZEROP B))) (NUMBERP V) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (PLUS B (PLUS X (TIMES A W)) (TIMES B V)) B)) (EQUAL X (REMAINDER (PLUS (PLUS X (TIMES A W)) (TIMES B V)) A)) (EQUAL (REMAINDER B A) 0)) (EQUAL (REMAINDER (PLUS (PLUS X (TIMES A W)) (TIMES B V)) A) (REMAINDER (PLUS B (PLUS X (TIMES A W)) (TIMES B V)) A))), which further simplifies, rewriting with ASSOCIATIVITY-OF-PLUS, CORRECTNESS-OF-CANCEL-LESSP-PLUS, REMAINDER-TIMES1, REMAINDER-TIMES1-INSTANCE, REMAINDER-NOOP, and REMAINDER-PLUS, and unfolding ZEROP, NOT, EQUAL, and PLUS, to: T. Q.E.D. [ 0.0 0.8 0.0 ] REMAINDER-REMAINDER (PROVE-LEMMA REMAINDER-1-ARG1 (REWRITE) (EQUAL (REMAINDER 1 X) (IF (EQUAL X 1) 0 1)) ((DISABLE REMAINDER-ADD1))) This simplifies, rewriting with REMAINDER-NOOP and DIFFERENCE-LEQ-ARG1, and opening up DIFFERENCE, EQUAL, SUB1, LESSP, NUMBERP, and REMAINDER, to four new conjectures: Case 4. (IMPLIES (AND (NOT (EQUAL X 1)) (NOT (EQUAL X 0)) (NUMBERP X)) (LESSP 1 X)), which again simplifies, using linear arithmetic, to: T. Case 3. (IMPLIES (EQUAL X 1) (NOT (LESSP 1 X))), which again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (EQUAL X 1) (NUMBERP X)), which again simplifies, trivially, to: T. Case 1. (IMPLIES (EQUAL X 1) (NOT (EQUAL X 0))). But this again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-1-ARG1 (PROVE-LEMMA REMAINDER-1-ARG2 (REWRITE) (EQUAL (REMAINDER Y 1) 0)) . Appealing to the lemma REMAINDER-QUOTIENT-ELIM, we now replace Y by (PLUS X (TIMES 1 Z)) to eliminate (REMAINDER Y 1) and (QUOTIENT Y 1). We employ LESSP-REMAINDER, the type restriction lemma noted when REMAINDER was introduced, and the type restriction lemma noted when QUOTIENT was introduced to constrain the new variables. We must thus prove four new formulas: Case 4. (IMPLIES (NOT (NUMBERP Y)) (EQUAL (REMAINDER Y 1) 0)), which simplifies, applying REMAINDER-OF-NON-NUMBER, and expanding the definitions of REMAINDER and EQUAL, to: T. Case 3. (IMPLIES (EQUAL 1 0) (EQUAL (REMAINDER Y 1) 0)). This simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (NOT (NUMBERP 1)) (EQUAL (REMAINDER Y 1) 0)), which simplifies, obviously, to: T. Case 1. (IMPLIES (AND (NUMBERP X) (EQUAL (LESSP X 1) (NOT (ZEROP 1))) (NUMBERP Z) (NOT (EQUAL 1 0))) (EQUAL X 0)). This simplifies, unfolding the definitions of ZEROP, NOT, and EQUAL, to: (IMPLIES (AND (NUMBERP X) (LESSP X 1) (NUMBERP Z)) (EQUAL X 0)). This again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-1-ARG2 (PROVE-LEMMA REMAINDER-X-X (REWRITE) (EQUAL (REMAINDER X X) 0) ((ENABLE EQUAL-DIFFERENCE-0))) This conjecture simplifies, rewriting with REMAINDER-NOOP and DIFFERENCE-X-X, and expanding the functions EQUAL, LESSP, NUMBERP, and REMAINDER, to: (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X)) (NOT (LESSP X X))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-X-X (PROVE-LEMMA TRANSITIVITY-OF-DIVIDES NIL (IMPLIES (AND (EQUAL (REMAINDER A B) 0) (EQUAL (REMAINDER B C) 0)) (EQUAL (REMAINDER A C) 0)) ((ENABLE REMAINDER REMAINDER-NOOP REMAINDER-PLUS))) . Appealing to the lemma REMAINDER-QUOTIENT-ELIM, we now replace A by (PLUS X (TIMES B Z)) to eliminate (REMAINDER A B) and (QUOTIENT A B). We employ LESSP-REMAINDER, the type restriction lemma noted when REMAINDER was introduced, and the type restriction lemma noted when QUOTIENT was introduced to constrain the new variables. This generates four new formulas: Case 4. (IMPLIES (AND (NOT (NUMBERP A)) (EQUAL (REMAINDER A B) 0) (EQUAL (REMAINDER B C) 0)) (EQUAL (REMAINDER A C) 0)), which simplifies, rewriting with REMAINDER-OF-NON-NUMBER, and expanding the functions LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 3. (IMPLIES (AND (EQUAL B 0) (EQUAL (REMAINDER A B) 0) (EQUAL (REMAINDER B C) 0)) (EQUAL (REMAINDER A C) 0)). However this simplifies, appealing to the lemmas REMAINDER-ZERO and REMAINDER-OF-NON-NUMBER, and unfolding ZEROP, LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP B)) (EQUAL (REMAINDER A B) 0) (EQUAL (REMAINDER B C) 0)) (EQUAL (REMAINDER A C) 0)), which simplifies, rewriting with REMAINDER-ZERO and REMAINDER-OF-NON-NUMBER, and unfolding the definitions of ZEROP, LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 1. (IMPLIES (AND (NUMBERP X) (EQUAL (LESSP X B) (NOT (ZEROP B))) (NUMBERP Z) (NUMBERP B) (NOT (EQUAL B 0)) (EQUAL X 0) (EQUAL (REMAINDER B C) 0)) (EQUAL (REMAINDER (PLUS X (TIMES B Z)) C) 0)). However this simplifies, applying the lemma REMAINDER-TIMES1, and opening up NUMBERP, EQUAL, LESSP, ZEROP, NOT, and PLUS, to: T. Q.E.D. [ 0.0 0.1 0.0 ] TRANSITIVITY-OF-DIVIDES (PROVE-LEMMA QUOTIENT-NOOP (REWRITE) (IMPLIES (EQUAL B 1) (EQUAL (QUOTIENT A B) (FIX A)))) This conjecture simplifies, unfolding FIX, to two new conjectures: Case 2. (IMPLIES (NOT (NUMBERP A)) (EQUAL (QUOTIENT A 1) 0)), which again simplifies, opening up LESSP, NUMBERP, EQUAL, and QUOTIENT, to: T. Case 1. (IMPLIES (NUMBERP A) (EQUAL (QUOTIENT A 1) A)). Applying the lemma REMAINDER-QUOTIENT-ELIM, replace A by (PLUS Z (TIMES 1 X)) to eliminate (QUOTIENT A 1) and (REMAINDER A 1). We rely upon LESSP-REMAINDER, the type restriction lemma noted when QUOTIENT was introduced, and the type restriction lemma noted when REMAINDER was introduced to restrict the new variables. This produces the following three new formulas: Case 1.3. (IMPLIES (AND (EQUAL 1 0) (NUMBERP A)) (EQUAL (QUOTIENT A 1) A)). But this further simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (NUMBERP 1)) (NUMBERP A)) (EQUAL (QUOTIENT A 1) A)), which further simplifies, trivially, to: T. Case 1.1. (IMPLIES (AND (NUMBERP X) (NUMBERP Z) (EQUAL (LESSP Z 1) (NOT (ZEROP 1))) (NOT (EQUAL 1 0))) (EQUAL X (PLUS Z (TIMES 1 X)))). This further simplifies, rewriting with TIMES-1-ARG1, COMMUTATIVITY-OF-PLUS, and CORRECTNESS-OF-CANCEL-EQUAL-PLUS, and expanding the definitions of ZEROP, NOT, EQUAL, and FIX, to: (IMPLIES (AND (NUMBERP X) (NUMBERP Z) (LESSP Z 1)) (EQUAL 0 Z)), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-NOOP (PROVE-LEMMA QUOTIENT-OF-NON-NUMBER (REWRITE) (IMPLIES (NOT (NUMBERP A)) (EQUAL (QUOTIENT A N) (QUOTIENT 0 N)))) This simplifies, opening up the functions LESSP, QUOTIENT, and EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-OF-NON-NUMBER (PROVE-LEMMA QUOTIENT-ZERO (REWRITE) (IMPLIES (ZEROP X) (EQUAL (QUOTIENT Y X) 0))) This conjecture simplifies, expanding ZEROP, EQUAL, and QUOTIENT, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-ZERO (PROVE-LEMMA QUOTIENT-ADD1 (REWRITE) (IMPLIES (EQUAL (REMAINDER A B) 0) (EQUAL (QUOTIENT (ADD1 A) B) (IF (EQUAL B 1) (ADD1 (QUOTIENT A B)) (QUOTIENT A B)))) ((ENABLE QUOTIENT-NOOP) (INDUCT (REMAINDER A B)))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to three new goals: Case 3. (IMPLIES (AND (ZEROP B) (EQUAL (REMAINDER A B) 0)) (EQUAL (QUOTIENT (ADD1 A) B) (IF (EQUAL B 1) (ADD1 (QUOTIENT A B)) (QUOTIENT A B)))), which simplifies, rewriting with the lemmas REMAINDER-ZERO, SUB1-TYPE-RESTRICTION, and QUOTIENT-ZERO, and unfolding ZEROP, ADD1, QUOTIENT, and EQUAL, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (LESSP A B) (EQUAL (REMAINDER A B) 0)) (EQUAL (QUOTIENT (ADD1 A) B) (IF (EQUAL B 1) (ADD1 (QUOTIENT A B)) (QUOTIENT A B)))), which simplifies, using linear arithmetic, rewriting with REMAINDER-NOOP, DIFFERENCE-LEQ-ARG1, SUB1-TYPE-RESTRICTION, and QUOTIENT-OF-NON-NUMBER, and opening up the functions ADD1, QUOTIENT, LESSP, and EQUAL, to the following four new formulas: Case 2.4. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (LESSP A B) (EQUAL A 0) (NOT (EQUAL B 1))) (LESSP 1 B)). However this again simplifies, using linear arithmetic, to: T. Case 2.3. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (LESSP A B) (EQUAL A 0) (EQUAL B 1)) (NOT (LESSP 1 B))), which again simplifies, using linear arithmetic, to: T. Case 2.2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (LESSP A B) (NOT (NUMBERP A)) (NOT (EQUAL B 1))) (LESSP 1 B)), which again simplifies, using linear arithmetic, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (LESSP A B) (NOT (NUMBERP A)) (EQUAL B 1)) (NOT (LESSP 1 B))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B)) (IMPLIES (EQUAL (REMAINDER (DIFFERENCE A B) B) 0) (EQUAL (QUOTIENT (ADD1 (DIFFERENCE A B)) B) (IF (EQUAL B 1) (ADD1 (QUOTIENT (DIFFERENCE A B) B)) (QUOTIENT (DIFFERENCE A B) B)))) (EQUAL (REMAINDER A B) 0)) (EQUAL (QUOTIENT (ADD1 A) B) (IF (EQUAL B 1) (ADD1 (QUOTIENT A B)) (QUOTIENT A B)))), which simplifies, applying DIFFERENCE-ADD1-ARG2, QUOTIENT-NOOP, REMAINDER-1-ARG2, SUB1-TYPE-RESTRICTION, and QUOTIENT-OF-NON-NUMBER, and opening up the definitions of EQUAL, LESSP, DIFFERENCE, IMPLIES, REMAINDER, QUOTIENT, and ADD1, to: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B)) (NOT (EQUAL B 1)) (EQUAL (QUOTIENT (ADD1 (DIFFERENCE A B)) B) (QUOTIENT (DIFFERENCE A B) B)) (EQUAL (REMAINDER (DIFFERENCE A B) B) 0)) (EQUAL (QUOTIENT (ADD1 A) B) (ADD1 (QUOTIENT (DIFFERENCE A B) B)))). Applying the lemmas DIFFERENCE-ELIM and REMAINDER-QUOTIENT-ELIM, replace A by (PLUS B X) to eliminate (DIFFERENCE A B) and X by (PLUS V (TIMES B Z)) to eliminate (QUOTIENT X B) and (REMAINDER X B). We rely upon the type restriction lemma noted when DIFFERENCE was introduced, LESSP-REMAINDER, the type restriction lemma noted when QUOTIENT was introduced, and the type restriction lemma noted when REMAINDER was introduced to restrict the new variables. This produces the following two new conjectures: Case 1.2. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B)) (NOT (EQUAL B 1)) (EQUAL (QUOTIENT (ADD1 (DIFFERENCE A B)) B) (QUOTIENT (DIFFERENCE A B) B)) (EQUAL (REMAINDER (DIFFERENCE A B) B) 0)) (EQUAL (QUOTIENT (ADD1 A) B) (ADD1 (QUOTIENT (DIFFERENCE A B) B)))). This further simplifies, opening up the definition of LESSP, to: T. Case 1.1. (IMPLIES (AND (NUMBERP Z) (NUMBERP V) (EQUAL (LESSP V B) (NOT (ZEROP B))) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (PLUS B V (TIMES B Z)) B)) (NOT (EQUAL B 1)) (EQUAL (QUOTIENT (ADD1 (PLUS V (TIMES B Z))) B) Z) (EQUAL V 0)) (EQUAL (QUOTIENT (ADD1 (PLUS B V (TIMES B Z))) B) (ADD1 Z))), which further simplifies, rewriting with LESSP-PLUS-TIMES1, DIFFERENCE-SUB1-ARG2, CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS, and SUB1-ADD1, and opening up NUMBERP, EQUAL, LESSP, ZEROP, NOT, PLUS, FIX, DIFFERENCE, and QUOTIENT, to the following two new conjectures: Case 1.1.2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP B B)) (NOT (EQUAL B 1)) (EQUAL (QUOTIENT (ADD1 (TIMES B Z)) B) Z) (LESSP (PLUS B (TIMES B Z)) (SUB1 B))) (EQUAL 0 (ADD1 Z))). However this again simplifies, using linear arithmetic, to: T. Case 1.1.1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL Z 0)) (NOT (EQUAL B 1)) (EQUAL (QUOTIENT (ADD1 (TIMES B Z)) B) Z) (LESSP (PLUS B (TIMES B Z)) (SUB1 B))) (EQUAL 0 (ADD1 Z))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.7 0.0 ] QUOTIENT-ADD1 (PROVE-LEMMA EQUAL-QUOTIENT-0 (REWRITE) (EQUAL (EQUAL (QUOTIENT A B) 0) (OR (ZEROP B) (LESSP A B))) ((INDUCT (QUOTIENT A B)))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to three new goals: Case 3. (IMPLIES (ZEROP B) (EQUAL (EQUAL (QUOTIENT A B) 0) (OR (ZEROP B) (LESSP A B)))), which simplifies, rewriting with the lemma QUOTIENT-ZERO, and opening up the definitions of ZEROP, EQUAL, LESSP, and OR, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (LESSP A B)) (EQUAL (EQUAL (QUOTIENT A B) 0) (OR (ZEROP B) (LESSP A B)))), which simplifies, unfolding the functions QUOTIENT, EQUAL, ZEROP, and OR, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B)) (EQUAL (EQUAL (QUOTIENT (DIFFERENCE A B) B) 0) (OR (ZEROP B) (LESSP (DIFFERENCE A B) B)))) (EQUAL (EQUAL (QUOTIENT A B) 0) (OR (ZEROP B) (LESSP A B)))), which simplifies, expanding the definitions of ZEROP, OR, QUOTIENT, EQUAL, and ADD1, to: T. Q.E.D. [ 0.0 0.1 0.0 ] EQUAL-QUOTIENT-0 (PROVE-LEMMA QUOTIENT-SUB1 (REWRITE) (IMPLIES (AND (NOT (ZEROP A)) (NOT (ZEROP B))) (EQUAL (QUOTIENT (SUB1 A) B) (IF (EQUAL (REMAINDER A B) 0) (SUB1 (QUOTIENT A B)) (QUOTIENT A B)))) ((DISABLE EQUAL-DIFFERENCE-0 REMAINDER-QUOTIENT-ELIM) (ENABLE QUOTIENT-NOOP EQUAL-QUOTIENT-0) (INDUCT (REMAINDER A B)))) This formula can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to the following three new goals: Case 3. (IMPLIES (AND (ZEROP B) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B)) (EQUAL (QUOTIENT (SUB1 A) B) (IF (EQUAL (REMAINDER A B) 0) (SUB1 (QUOTIENT A B)) (QUOTIENT A B)))). This simplifies, unfolding ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (LESSP A B) (NOT (EQUAL A 0)) (NUMBERP A)) (EQUAL (QUOTIENT (SUB1 A) B) (IF (EQUAL (REMAINDER A B) 0) (SUB1 (QUOTIENT A B)) (QUOTIENT A B)))). This simplifies, using linear arithmetic, appealing to the lemmas DIFFERENCE-LEQ-ARG1 and REMAINDER-NOOP, and unfolding the definitions of QUOTIENT, LESSP, EQUAL, and ADD1, to: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (LESSP A B) (NOT (EQUAL A 0)) (NUMBERP A)) (LESSP (SUB1 A) B)), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B)) (IMPLIES (AND (NOT (ZEROP (DIFFERENCE A B))) (NOT (ZEROP B))) (EQUAL (QUOTIENT (SUB1 (DIFFERENCE A B)) B) (IF (EQUAL (REMAINDER (DIFFERENCE A B) B) 0) (SUB1 (QUOTIENT (DIFFERENCE A B) B)) (QUOTIENT (DIFFERENCE A B) B)))) (NOT (EQUAL A 0)) (NUMBERP A)) (EQUAL (QUOTIENT (SUB1 A) B) (IF (EQUAL (REMAINDER A B) 0) (SUB1 (QUOTIENT A B)) (QUOTIENT A B)))), which simplifies, using linear arithmetic, rewriting with REMAINDER-NOOP, EQUAL-QUOTIENT-0, and SUB1-ADD1, and opening up the definitions of ZEROP, NOT, AND, IMPLIES, NUMBERP, REMAINDER, EQUAL, QUOTIENT, LESSP, ADD1, and SUB1, to the following three new conjectures: Case 1.3. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B)) (EQUAL (DIFFERENCE A B) 0) (NOT (EQUAL A 0)) (NUMBERP A)) (LESSP (SUB1 A) B)). However this again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B)) (NOT (EQUAL (REMAINDER (DIFFERENCE A B) B) 0)) (EQUAL (QUOTIENT (SUB1 (DIFFERENCE A B)) B) (QUOTIENT (DIFFERENCE A B) B)) (NOT (EQUAL A 0)) (NUMBERP A)) (EQUAL (QUOTIENT (SUB1 A) B) (ADD1 (QUOTIENT (DIFFERENCE A B) B)))). Applying the lemmas DIFFERENCE-ELIM and SUB1-ELIM, replace A by (PLUS B X) to eliminate (DIFFERENCE A B) and X by (ADD1 Z) to eliminate (SUB1 X). We employ the type restriction lemma noted when DIFFERENCE was introduced and the type restriction lemma noted when SUB1 was introduced to restrict the new variables. We thus obtain the following two new formulas: Case 1.2.2. (IMPLIES (AND (EQUAL X 0) (NUMBERP X) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (PLUS B X) B)) (NOT (EQUAL (REMAINDER X B) 0)) (EQUAL (QUOTIENT (SUB1 X) B) (QUOTIENT X B)) (NOT (EQUAL (PLUS B X) 0))) (EQUAL (QUOTIENT (SUB1 (PLUS B X)) B) (ADD1 (QUOTIENT X B)))). However this further simplifies, using linear arithmetic, rewriting with PLUS-ZERO-ARG2 and REMAINDER-NOOP, and unfolding the definitions of NUMBERP, ZEROP, and EQUAL, to: T. Case 1.2.1. (IMPLIES (AND (NUMBERP Z) (NOT (EQUAL (ADD1 Z) 0)) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (PLUS B (ADD1 Z)) B)) (NOT (EQUAL (REMAINDER (ADD1 Z) B) 0)) (EQUAL (QUOTIENT Z B) (QUOTIENT (ADD1 Z) B)) (NOT (EQUAL (PLUS B (ADD1 Z)) 0))) (EQUAL (QUOTIENT (SUB1 (PLUS B (ADD1 Z))) B) (ADD1 (QUOTIENT (ADD1 Z) B)))). However this further simplifies, applying the lemmas PLUS-ADD1-ARG2, SUB1-ADD1, CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS, and CORRECTNESS-OF-CANCEL-LESSP-PLUS, and opening up LESSP, FIX, and QUOTIENT, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B)) (EQUAL (REMAINDER (DIFFERENCE A B) B) 0) (EQUAL (QUOTIENT (SUB1 (DIFFERENCE A B)) B) (SUB1 (QUOTIENT (DIFFERENCE A B) B))) (NOT (EQUAL A 0)) (NUMBERP A)) (EQUAL (QUOTIENT (SUB1 A) B) (QUOTIENT (DIFFERENCE A B) B))). Applying the lemmas DIFFERENCE-ELIM and SUB1-ELIM, replace A by (PLUS B X) to eliminate (DIFFERENCE A B) and X by (ADD1 Z) to eliminate (SUB1 X). We use the type restriction lemma noted when DIFFERENCE was introduced and the type restriction lemma noted when SUB1 was introduced to restrict the new variables. We thus obtain the following two new conjectures: Case 1.1.2. (IMPLIES (AND (EQUAL X 0) (NUMBERP X) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (PLUS B X) B)) (EQUAL (REMAINDER X B) 0) (EQUAL (QUOTIENT (SUB1 X) B) (SUB1 (QUOTIENT X B))) (NOT (EQUAL (PLUS B X) 0))) (EQUAL (QUOTIENT (SUB1 (PLUS B X)) B) (QUOTIENT X B))). However this further simplifies, using linear arithmetic, applying the lemmas PLUS-ZERO-ARG2, REMAINDER-NOOP, and DIFFERENCE-LEQ-ARG1, and expanding NUMBERP, ZEROP, EQUAL, SUB1, LESSP, QUOTIENT, and ADD1, to: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP B B))) (LESSP (SUB1 B) B)). However this again simplifies, using linear arithmetic, to: T. Case 1.1.1. (IMPLIES (AND (NUMBERP Z) (NOT (EQUAL (ADD1 Z) 0)) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (PLUS B (ADD1 Z)) B)) (EQUAL (REMAINDER (ADD1 Z) B) 0) (EQUAL (QUOTIENT Z B) (SUB1 (QUOTIENT (ADD1 Z) B))) (NOT (EQUAL (PLUS B (ADD1 Z)) 0))) (EQUAL (QUOTIENT (SUB1 (PLUS B (ADD1 Z))) B) (QUOTIENT (ADD1 Z) B))), which further simplifies, rewriting with PLUS-ADD1-ARG2, SUB1-ADD1, CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS, and CORRECTNESS-OF-CANCEL-LESSP-PLUS, and unfolding the definitions of LESSP, FIX, and QUOTIENT, to: (IMPLIES (AND (NUMBERP Z) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (PLUS B Z) (SUB1 B))) (EQUAL (REMAINDER (ADD1 Z) B) 0) (EQUAL (QUOTIENT Z B) (SUB1 (QUOTIENT (ADD1 Z) B)))) (EQUAL (ADD1 (QUOTIENT Z B)) (QUOTIENT (ADD1 Z) B))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (EQUAL (QUOTIENT (ADD1 Z) B) 0) (NUMBERP Z) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (PLUS B Z) (SUB1 B))) (EQUAL (REMAINDER (ADD1 Z) B) 0) (EQUAL (QUOTIENT Z B) (SUB1 (QUOTIENT (ADD1 Z) B)))) (EQUAL (ADD1 (QUOTIENT Z B)) (QUOTIENT (ADD1 Z) B))). But this again simplifies, rewriting with SUB1-ADD1, EQUAL-QUOTIENT-0, and REMAINDER-NOOP, and opening up the definition of LESSP, to: T. Q.E.D. [ 0.0 0.8 0.1 ] QUOTIENT-SUB1 (PROVE-LEMMA QUOTIENT-PLUS-PROOF NIL (IMPLIES (EQUAL (REMAINDER B C) 0) (EQUAL (QUOTIENT (PLUS A B) C) (PLUS (QUOTIENT A C) (QUOTIENT B C)))) ((ENABLE REMAINDER-NOOP) (INDUCT (REMAINDER B C)))) This formula can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to the following three new formulas: Case 3. (IMPLIES (AND (ZEROP C) (EQUAL (REMAINDER B C) 0)) (EQUAL (QUOTIENT (PLUS A B) C) (PLUS (QUOTIENT A C) (QUOTIENT B C)))). This simplifies, appealing to the lemmas REMAINDER-ZERO, PLUS-ZERO-ARG2, and QUOTIENT-ZERO, and unfolding ZEROP, QUOTIENT, PLUS, and EQUAL, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (EQUAL (REMAINDER B C) 0)) (EQUAL (QUOTIENT (PLUS A B) C) (PLUS (QUOTIENT A C) (QUOTIENT B C)))). This simplifies, applying the lemmas REMAINDER-NOOP, PLUS-ZERO-ARG2, and QUOTIENT-OF-NON-NUMBER, and opening up the functions ZEROP, LESSP, EQUAL, and QUOTIENT, to the following two new goals: Case 2.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (EQUAL B 0) (NOT (NUMBERP A))) (EQUAL (QUOTIENT 0 C) (QUOTIENT A C))). This again simplifies, rewriting with QUOTIENT-OF-NON-NUMBER, and unfolding the functions EQUAL, LESSP, and QUOTIENT, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (NOT (NUMBERP B)) (NOT (NUMBERP A))) (EQUAL (QUOTIENT 0 C) (QUOTIENT A C))). However this again simplifies, applying QUOTIENT-OF-NON-NUMBER, and unfolding the definitions of LESSP, EQUAL, and QUOTIENT, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (IMPLIES (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (EQUAL (QUOTIENT (PLUS A (DIFFERENCE B C)) C) (PLUS (QUOTIENT A C) (QUOTIENT (DIFFERENCE B C) C)))) (EQUAL (REMAINDER B C) 0)) (EQUAL (QUOTIENT (PLUS A B) C) (PLUS (QUOTIENT A C) (QUOTIENT B C)))). This simplifies, using linear arithmetic, rewriting with PLUS-ZERO-ARG2, PLUS-DIFFERENCE-ARG2, REMAINDER-NOOP, DIFFERENCE-LEQ-ARG1, PLUS-ADD1-ARG2, and QUOTIENT-OF-NON-NUMBER, and opening up the definitions of ZEROP, IMPLIES, REMAINDER, NUMBERP, EQUAL, QUOTIENT, LESSP, ADD1, and PLUS, to four new formulas: Case 1.4. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NUMBERP A) (EQUAL (QUOTIENT A C) (PLUS (QUOTIENT A C) (QUOTIENT (DIFFERENCE B C) C)))) (EQUAL (QUOTIENT (PLUS A B) C) (ADD1 (QUOTIENT A C)))), which again simplifies, using linear arithmetic, to two new goals: Case 1.4.2. (IMPLIES (AND (NOT (NUMBERP B)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NUMBERP A) (EQUAL (QUOTIENT A C) (PLUS (QUOTIENT A C) (QUOTIENT (DIFFERENCE B C) C)))) (EQUAL (QUOTIENT (PLUS A B) C) (ADD1 (QUOTIENT A C)))), which again simplifies, expanding LESSP, to: T. Case 1.4.1. (IMPLIES (AND (NUMBERP B) (NOT (EQUAL B 0)) (NOT (LESSP B B)) (NOT (LESSP B B)) (NUMBERP A) (EQUAL (QUOTIENT A B) (PLUS (QUOTIENT A B) (QUOTIENT (DIFFERENCE B B) B)))) (EQUAL (QUOTIENT (PLUS A B) B) (ADD1 (QUOTIENT A B)))), which again simplifies, appealing to the lemmas DIFFERENCE-X-X, PLUS-ZERO-ARG2, CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS, and CORRECTNESS-OF-CANCEL-LESSP-PLUS, and expanding LESSP, EQUAL, QUOTIENT, ZEROP, and FIX, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NOT (NUMBERP A)) (EQUAL (QUOTIENT 0 C) (PLUS (QUOTIENT A C) (QUOTIENT (DIFFERENCE B C) C))) (NOT (NUMBERP B))) (EQUAL (QUOTIENT 0 C) 1)), which again simplifies, opening up LESSP, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NOT (NUMBERP A)) (EQUAL (QUOTIENT 0 C) (PLUS (QUOTIENT A C) (QUOTIENT (DIFFERENCE B C) C))) (NUMBERP B)) (EQUAL (QUOTIENT B C) 1)), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP B B)) (NOT (LESSP B B)) (NOT (NUMBERP A)) (EQUAL (QUOTIENT 0 B) (PLUS (QUOTIENT A B) (QUOTIENT (DIFFERENCE B B) B))) (NUMBERP B)) (EQUAL (QUOTIENT B B) 1)). However this again simplifies, rewriting with the lemmas QUOTIENT-OF-NON-NUMBER and DIFFERENCE-X-X, and opening up LESSP, EQUAL, QUOTIENT, PLUS, and ADD1, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (LESSP C B) (EQUAL (QUOTIENT (DIFFERENCE (PLUS A B) C) C) (PLUS (QUOTIENT A C) (QUOTIENT (DIFFERENCE B C) C))) (EQUAL (REMAINDER (DIFFERENCE B C) C) 0)) (EQUAL (QUOTIENT (PLUS A B) C) (ADD1 (QUOTIENT (DIFFERENCE (PLUS A B) C) C)))), which again simplifies, opening up the definition of QUOTIENT, to: (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (LESSP C B) (EQUAL (QUOTIENT (DIFFERENCE (PLUS A B) C) C) (PLUS (QUOTIENT A C) (QUOTIENT (DIFFERENCE B C) C))) (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (LESSP (PLUS A B) C)) (EQUAL 0 (ADD1 (QUOTIENT (DIFFERENCE (PLUS A B) C) C)))). This again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.7 0.0 ] QUOTIENT-PLUS-PROOF (PROVE-LEMMA QUOTIENT-PLUS (REWRITE) (IMPLIES (EQUAL (REMAINDER A C) 0) (AND (EQUAL (QUOTIENT (PLUS A B) C) (PLUS (QUOTIENT A C) (QUOTIENT B C))) (EQUAL (QUOTIENT (PLUS B A) C) (PLUS (QUOTIENT A C) (QUOTIENT B C))) (EQUAL (QUOTIENT (PLUS X Y A) C) (PLUS (QUOTIENT (PLUS X Y) C) (QUOTIENT A C))))) ((USE (QUOTIENT-PLUS-PROOF (A B) (B A) (C C)) (QUOTIENT-PLUS-PROOF (A A) (B B) (C C)) (QUOTIENT-PLUS-PROOF (A (PLUS X Y)) (B A) (C C))) (ENABLE COMMUTATIVITY-OF-PLUS COMMUTATIVITY2-OF-PLUS ASSOCIATIVITY-OF-PLUS) (DO-NOT-INDUCT T))) WARNING: Note that the proposed lemma QUOTIENT-PLUS is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and three replacement rules. This conjecture can be simplified, using the abbreviations IMPLIES, AND, and ASSOCIATIVITY-OF-PLUS, to: (IMPLIES (AND (IMPLIES (EQUAL (REMAINDER A C) 0) (EQUAL (QUOTIENT (PLUS B A) C) (PLUS (QUOTIENT B C) (QUOTIENT A C)))) (IMPLIES (EQUAL (REMAINDER B C) 0) (EQUAL (QUOTIENT (PLUS A B) C) (PLUS (QUOTIENT A C) (QUOTIENT B C)))) (IMPLIES (EQUAL (REMAINDER A C) 0) (EQUAL (QUOTIENT (PLUS X Y A) C) (PLUS (QUOTIENT (PLUS X Y) C) (QUOTIENT A C)))) (EQUAL (REMAINDER A C) 0)) (AND (EQUAL (QUOTIENT (PLUS A B) C) (PLUS (QUOTIENT A C) (QUOTIENT B C))) (EQUAL (QUOTIENT (PLUS B A) C) (PLUS (QUOTIENT A C) (QUOTIENT B C))) (EQUAL (QUOTIENT (PLUS X Y A) C) (PLUS (QUOTIENT (PLUS X Y) C) (QUOTIENT A C))))). This simplifies, rewriting with the lemmas COMMUTATIVITY-OF-PLUS and COMMUTATIVITY2-OF-PLUS, and expanding the definitions of EQUAL, IMPLIES, and AND, to: T. Q.E.D. [ 0.0 0.2 0.0 ] QUOTIENT-PLUS (PROVE-LEMMA QUOTIENT-TIMES-INSTANCE-TEMP-PROOF NIL (EQUAL (QUOTIENT (TIMES Y X) Y) (IF (ZEROP Y) 0 (FIX X))) ((ENABLE TIMES-ZERO COMMUTATIVITY-OF-TIMES DIFFERENCE-PLUS-CANCELLATION))) This conjecture simplifies, applying COMMUTATIVITY-OF-TIMES, and expanding the functions ZEROP and FIX, to four new conjectures: Case 4. (IMPLIES (EQUAL Y 0) (EQUAL (QUOTIENT (TIMES X Y) Y) 0)), which again simplifies, applying COMMUTATIVITY-OF-TIMES, and opening up EQUAL, TIMES, and QUOTIENT, to: T. Case 3. (IMPLIES (NOT (NUMBERP Y)) (EQUAL (QUOTIENT (TIMES X Y) Y) 0)). This again simplifies, applying TIMES-ZERO and QUOTIENT-ZERO, and opening up the functions ZEROP and EQUAL, to: T. Case 2. (IMPLIES (NOT (NUMBERP X)) (EQUAL (QUOTIENT (TIMES X Y) Y) 0)). However this again simplifies, unfolding the definitions of TIMES, LESSP, EQUAL, and QUOTIENT, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL Y 0)) (NUMBERP Y) (NUMBERP X)) (EQUAL (QUOTIENT (TIMES X Y) Y) X)), which we will name *1. We will appeal to induction. There is only one plausible induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP X) (p X Y)) (IMPLIES (AND (NOT (ZEROP X)) (p (SUB1 X) Y)) (p X Y))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP can be used to establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates two new goals: Case 2. (IMPLIES (AND (ZEROP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (NUMBERP X)) (EQUAL (QUOTIENT (TIMES X Y) Y) X)), which simplifies, opening up ZEROP, NUMBERP, EQUAL, TIMES, LESSP, and QUOTIENT, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (QUOTIENT (TIMES (SUB1 X) Y) Y) (SUB1 X)) (NOT (EQUAL Y 0)) (NUMBERP Y) (NUMBERP X)) (EQUAL (QUOTIENT (TIMES X Y) Y) X)), which simplifies, rewriting with REMAINDER-TIMES1-INSTANCE, DIFFERENCE-X-X, and QUOTIENT-PLUS, and expanding the functions ZEROP, TIMES, EQUAL, QUOTIENT, LESSP, and ADD1, to the following two new conjectures: Case 1.2. (IMPLIES (AND (NOT (EQUAL X 0)) (EQUAL (QUOTIENT (TIMES (SUB1 X) Y) Y) (SUB1 X)) (NOT (EQUAL Y 0)) (NUMBERP Y) (NUMBERP X) (NOT (LESSP Y Y))) (EQUAL (PLUS (SUB1 X) 1) X)). This again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL X 0)) (EQUAL (QUOTIENT (TIMES (SUB1 X) Y) Y) (SUB1 X)) (NOT (EQUAL Y 0)) (NUMBERP Y) (NUMBERP X) (LESSP Y Y)) (EQUAL (PLUS (SUB1 X) 0) X)), which again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-TIMES-INSTANCE-TEMP-PROOF (PROVE-LEMMA QUOTIENT-TIMES-INSTANCE-TEMP (REWRITE) (AND (EQUAL (QUOTIENT (TIMES Y X) Y) (IF (ZEROP Y) 0 (FIX X))) (EQUAL (QUOTIENT (TIMES X Y) Y) (IF (ZEROP Y) 0 (FIX X)))) ((USE (QUOTIENT-TIMES-INSTANCE-TEMP-PROOF (X X) (Y Y)) (QUOTIENT-TIMES-INSTANCE-TEMP-PROOF (X Y) (Y X))) (ENABLE COMMUTATIVITY-OF-TIMES))) WARNING: Note that the proposed lemma QUOTIENT-TIMES-INSTANCE-TEMP is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This simplifies, appealing to the lemmas COMMUTATIVITY-OF-TIMES, TIMES-ZERO, and QUOTIENT-ZERO, and unfolding the definitions of ZEROP, FIX, EQUAL, TIMES, LESSP, QUOTIENT, and AND, to: T. Q.E.D. [ 0.0 0.1 0.0 ] QUOTIENT-TIMES-INSTANCE-TEMP (DISABLE QUOTIENT-TIMES-INSTANCE-TEMP) [ 0.0 0.0 0.0 ] QUOTIENT-TIMES-INSTANCE-TEMP-OFF (PROVE-LEMMA QUOTIENT-TIMES-PROOF NIL (IMPLIES (EQUAL (REMAINDER A C) 0) (EQUAL (QUOTIENT (TIMES A B) C) (TIMES B (QUOTIENT A C)))) ((ENABLE QUOTIENT-PLUS QUOTIENT-NOOP EQUAL-QUOTIENT-0 QUOTIENT-TIMES-INSTANCE-TEMP) (INDUCT (REMAINDER A C)))) This formula can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to the following three new goals: Case 3. (IMPLIES (AND (ZEROP C) (EQUAL (REMAINDER A C) 0)) (EQUAL (QUOTIENT (TIMES A B) C) (TIMES B (QUOTIENT A C)))). This simplifies, applying the lemmas REMAINDER-ZERO, COMMUTATIVITY-OF-TIMES, and QUOTIENT-ZERO, and unfolding the definitions of ZEROP, EQUAL, TIMES, and QUOTIENT, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP A C) (EQUAL (REMAINDER A C) 0)) (EQUAL (QUOTIENT (TIMES A B) C) (TIMES B (QUOTIENT A C)))). This simplifies, rewriting with REMAINDER-NOOP, COMMUTATIVITY-OF-TIMES, and QUOTIENT-OF-NON-NUMBER, and unfolding the functions EQUAL, TIMES, LESSP, and QUOTIENT, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (IMPLIES (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (EQUAL (QUOTIENT (TIMES (DIFFERENCE A C) B) C) (TIMES B (QUOTIENT (DIFFERENCE A C) C)))) (EQUAL (REMAINDER A C) 0)) (EQUAL (QUOTIENT (TIMES A B) C) (TIMES B (QUOTIENT A C)))), which simplifies, rewriting with the lemmas COMMUTATIVITY-OF-TIMES, TIMES-DISTRIBUTES-OVER-DIFFERENCE, and TIMES-ADD1, and opening up the definitions of IMPLIES, REMAINDER, and QUOTIENT, to: (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (EQUAL (QUOTIENT (DIFFERENCE (TIMES A B) (TIMES B C)) C) (TIMES B (QUOTIENT (DIFFERENCE A C) C))) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (EQUAL (QUOTIENT (TIMES A B) C) (PLUS B (TIMES B (QUOTIENT (DIFFERENCE A C) C))))). Appealing to the lemmas DIFFERENCE-ELIM and REMAINDER-QUOTIENT-ELIM, we now replace A by (PLUS C X) to eliminate (DIFFERENCE A C) and X by (PLUS V (TIMES C Z)) to eliminate (QUOTIENT X C) and (REMAINDER X C). We use the type restriction lemma noted when DIFFERENCE was introduced, LESSP-REMAINDER, the type restriction lemma noted when QUOTIENT was introduced, and the type restriction lemma noted when REMAINDER was introduced to constrain the new variables. We must thus prove two new conjectures: Case 1.2. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (EQUAL (QUOTIENT (DIFFERENCE (TIMES A B) (TIMES B C)) C) (TIMES B (QUOTIENT (DIFFERENCE A C) C))) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (EQUAL (QUOTIENT (TIMES A B) C) (PLUS B (TIMES B (QUOTIENT (DIFFERENCE A C) C))))), which further simplifies, opening up the definition of LESSP, to: T. Case 1.1. (IMPLIES (AND (NUMBERP Z) (NUMBERP V) (EQUAL (LESSP V C) (NOT (ZEROP C))) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP (PLUS C V (TIMES C Z)) C)) (EQUAL (QUOTIENT (DIFFERENCE (TIMES (PLUS C V (TIMES C Z)) B) (TIMES B C)) C) (TIMES B Z)) (EQUAL V 0)) (EQUAL (QUOTIENT (TIMES (PLUS C V (TIMES C Z)) B) C) (PLUS B (TIMES B Z)))), which further simplifies, rewriting with the lemmas LESSP-PLUS-TIMES1, COMMUTATIVITY-OF-TIMES, COMMUTATIVITY2-OF-TIMES, ASSOCIATIVITY-OF-TIMES, TIMES-DISTRIBUTES-OVER-PLUS, CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS, REMAINDER-TIMES1, REMAINDER-TIMES1-INSTANCE, QUOTIENT-TIMES-INSTANCE-TEMP, QUOTIENT-PLUS, and CORRECTNESS-OF-CANCEL-EQUAL-PLUS, and expanding the definitions of NUMBERP, EQUAL, LESSP, ZEROP, NOT, PLUS, and FIX, to: T. Q.E.D. [ 0.0 0.9 0.0 ] QUOTIENT-TIMES-PROOF (PROVE-LEMMA QUOTIENT-TIMES (REWRITE) (IMPLIES (EQUAL (REMAINDER A C) 0) (AND (EQUAL (QUOTIENT (TIMES A B) C) (TIMES B (QUOTIENT A C))) (EQUAL (QUOTIENT (TIMES B A) C) (TIMES B (QUOTIENT A C))))) ((ENABLE COMMUTATIVITY-OF-TIMES) (USE (QUOTIENT-TIMES-PROOF (A A) (B B) (C C))) (DO-NOT-INDUCT T))) WARNING: Note that the proposed lemma QUOTIENT-TIMES is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This formula simplifies, rewriting with the lemma COMMUTATIVITY-OF-TIMES, and opening up EQUAL, IMPLIES, and AND, to: T. Q.E.D. [ 0.0 0.1 0.0 ] QUOTIENT-TIMES (PROVE-LEMMA QUOTIENT-TIMES-INSTANCE (REWRITE) (AND (EQUAL (QUOTIENT (TIMES Y X) Y) (IF (ZEROP Y) 0 (FIX X))) (EQUAL (QUOTIENT (TIMES X Y) Y) (IF (ZEROP Y) 0 (FIX X)))) ((ENABLE QUOTIENT-TIMES-INSTANCE-TEMP))) WARNING: Note that the proposed lemma QUOTIENT-TIMES-INSTANCE is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This formula can be simplified, using the abbreviation AND, to the following two new goals: Case 2. (EQUAL (QUOTIENT (TIMES Y X) Y) (IF (ZEROP Y) 0 (FIX X))). This simplifies, applying COMMUTATIVITY-OF-TIMES, REMAINDER-X-X, DIFFERENCE-X-X, and QUOTIENT-TIMES, and unfolding the definitions of EQUAL, QUOTIENT, LESSP, ADD1, ZEROP, and FIX, to six new formulas: Case 2.6. (IMPLIES (EQUAL Y 0) (EQUAL (TIMES X 0) 0)), which again simplifies, rewriting with COMMUTATIVITY-OF-TIMES, and expanding the functions EQUAL and TIMES, to: T. Case 2.5. (IMPLIES (NOT (NUMBERP Y)) (EQUAL (TIMES X 0) 0)). However this again simplifies, applying COMMUTATIVITY-OF-TIMES, and opening up the functions EQUAL and TIMES, to: T. Case 2.4. (IMPLIES (AND (NOT (NUMBERP X)) (LESSP Y Y)) (EQUAL (TIMES X 0) 0)). But this again simplifies, using linear arithmetic, to: T. Case 2.3. (IMPLIES (AND (NOT (EQUAL Y 0)) (NUMBERP Y) (NUMBERP X) (NOT (LESSP Y Y))) (EQUAL (TIMES X 1) X)), which again simplifies, applying TIMES-1-ARG1 and COMMUTATIVITY-OF-TIMES, to: T. Case 2.2. (IMPLIES (AND (NOT (EQUAL Y 0)) (NUMBERP Y) (NUMBERP X) (LESSP Y Y)) (EQUAL (TIMES X 0) X)). This again simplifies, using linear arithmetic, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (NUMBERP X)) (NOT (LESSP Y Y))) (EQUAL (TIMES X 1) 0)), which again simplifies, appealing to the lemmas TIMES-1-ARG1 and COMMUTATIVITY-OF-TIMES, and opening up the definition of EQUAL, to: T. Case 1. (EQUAL (QUOTIENT (TIMES X Y) Y) (IF (ZEROP Y) 0 (FIX X))), which simplifies, rewriting with REMAINDER-X-X, DIFFERENCE-X-X, and QUOTIENT-TIMES, and unfolding the definitions of EQUAL, QUOTIENT, LESSP, ADD1, ZEROP, and FIX, to the following six new conjectures: Case 1.6. (IMPLIES (EQUAL Y 0) (EQUAL (TIMES X 0) 0)). However this again simplifies, applying COMMUTATIVITY-OF-TIMES, and unfolding EQUAL and TIMES, to: T. Case 1.5. (IMPLIES (NOT (NUMBERP Y)) (EQUAL (TIMES X 0) 0)). But this again simplifies, applying COMMUTATIVITY-OF-TIMES, and opening up EQUAL and TIMES, to: T. Case 1.4. (IMPLIES (AND (NOT (NUMBERP X)) (LESSP Y Y)) (EQUAL (TIMES X 0) 0)). This again simplifies, using linear arithmetic, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL Y 0)) (NUMBERP Y) (NUMBERP X) (NOT (LESSP Y Y))) (EQUAL (TIMES X 1) X)), which again simplifies, appealing to the lemmas TIMES-1-ARG1 and COMMUTATIVITY-OF-TIMES, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL Y 0)) (NUMBERP Y) (NUMBERP X) (LESSP Y Y)) (EQUAL (TIMES X 0) X)), which again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (NUMBERP X)) (NOT (LESSP Y Y))) (EQUAL (TIMES X 1) 0)), which again simplifies, rewriting with the lemmas TIMES-1-ARG1 and COMMUTATIVITY-OF-TIMES, and unfolding EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-TIMES-INSTANCE (PROVE-LEMMA QUOTIENT-TIMES-TIMES-PROOF NIL (EQUAL (QUOTIENT (TIMES X Y) (TIMES X Z)) (IF (ZEROP X) 0 (QUOTIENT Y Z))) ((ENABLE LESSP-TIMES-CANCELLATION1 EQUAL-TIMES-0 TIMES-ZERO COMMUTATIVITY-OF-TIMES TIMES-DISTRIBUTES-OVER-DIFFERENCE) (INDUCT (QUOTIENT Y Z)))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to three new formulas: Case 3. (IMPLIES (ZEROP Z) (EQUAL (QUOTIENT (TIMES X Y) (TIMES X Z)) (IF (ZEROP X) 0 (QUOTIENT Y Z)))), which simplifies, applying COMMUTATIVITY-OF-TIMES, QUOTIENT-ZERO, and TIMES-ZERO, and opening up the definitions of ZEROP, EQUAL, and TIMES, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z) (LESSP Y Z)) (EQUAL (QUOTIENT (TIMES X Y) (TIMES X Z)) (IF (ZEROP X) 0 (QUOTIENT Y Z)))). This simplifies, applying EQUAL-TIMES-0, CORRECTNESS-OF-CANCEL-LESSP-TIMES, and EQUAL-QUOTIENT-0, and unfolding the definitions of ZEROP, QUOTIENT, NOT, FIX, and AND, to: (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z) (LESSP Y Z) (NOT (EQUAL X 0)) (NUMBERP X) (NOT (NUMBERP Y))) (LESSP 0 Z)). But this again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (LESSP Y Z)) (EQUAL (QUOTIENT (TIMES X (DIFFERENCE Y Z)) (TIMES X Z)) (IF (ZEROP X) 0 (QUOTIENT (DIFFERENCE Y Z) Z)))) (EQUAL (QUOTIENT (TIMES X Y) (TIMES X Z)) (IF (ZEROP X) 0 (QUOTIENT Y Z)))), which simplifies, appealing to the lemmas TIMES-DISTRIBUTES-OVER-DIFFERENCE, CORRECTNESS-OF-CANCEL-LESSP-TIMES, and EQUAL-TIMES-0, and expanding ZEROP, TIMES, QUOTIENT, EQUAL, AND, FIX, and NOT, to: (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (LESSP Y Z)) (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL (QUOTIENT (DIFFERENCE (TIMES X Y) (TIMES X Z)) (TIMES X Z)) (QUOTIENT (DIFFERENCE Y Z) Z)) (NOT (NUMBERP Y)) (LESSP 0 Z)) (EQUAL 0 (ADD1 (QUOTIENT (DIFFERENCE Y Z) Z)))). But this again simplifies, unfolding the function LESSP, to: T. Q.E.D. [ 0.0 0.5 0.0 ] QUOTIENT-TIMES-TIMES-PROOF (PROVE-LEMMA QUOTIENT-TIMES-TIMES (REWRITE) (AND (EQUAL (QUOTIENT (TIMES X Y) (TIMES X Z)) (IF (ZEROP X) 0 (QUOTIENT Y Z))) (EQUAL (QUOTIENT (TIMES X Z) (TIMES Y Z)) (IF (ZEROP Z) 0 (QUOTIENT X Y)))) ((USE (QUOTIENT-TIMES-TIMES-PROOF (X X) (Y Y) (Z Z)) (QUOTIENT-TIMES-TIMES-PROOF (X Z) (Y X) (Z Y))) (ENABLE COMMUTATIVITY-OF-TIMES))) WARNING: Note that the proposed lemma QUOTIENT-TIMES-TIMES is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This simplifies, applying COMMUTATIVITY-OF-TIMES, EQUAL-TIMES-0, QUOTIENT-OF-NON-NUMBER, TIMES-ZERO, and QUOTIENT-ZERO, and opening up the definitions of ZEROP, TIMES, LESSP, EQUAL, QUOTIENT, and AND, to: T. Q.E.D. [ 0.0 0.3 0.0 ] QUOTIENT-TIMES-TIMES (DISABLE QUOTIENT-TIMES-TIMES) [ 0.0 0.0 0.0 ] QUOTIENT-TIMES-TIMES-OFF (PROVE-LEMMA QUOTIENT-DIFFERENCE1 (REWRITE) (IMPLIES (EQUAL (REMAINDER A C) (REMAINDER B C)) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (DIFFERENCE (QUOTIENT A C) (QUOTIENT B C)))) ((ENABLE QUOTIENT-PLUS QUOTIENT-TIMES-INSTANCE EQUAL-REMAINDER-PLUS-REMAINDER) (DO-NOT-INDUCT T))) . Appealing to the lemmas DIFFERENCE-ELIM and REMAINDER-QUOTIENT-ELIM, we now replace A by (PLUS B X) to eliminate (DIFFERENCE A B) and X by (PLUS V (TIMES C Z)) to eliminate (QUOTIENT X C) and (REMAINDER X C). We employ the type restriction lemma noted when DIFFERENCE was introduced, LESSP-REMAINDER, the type restriction lemma noted when QUOTIENT was introduced, and the type restriction lemma noted when REMAINDER was introduced to constrain the new variables. This generates five new formulas: Case 5. (IMPLIES (AND (LESSP A B) (EQUAL (REMAINDER A C) (REMAINDER B C))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (DIFFERENCE (QUOTIENT A C) (QUOTIENT B C)))), which simplifies, using linear arithmetic, rewriting with DIFFERENCE-LEQ-ARG1 and EQUAL-DIFFERENCE-0, and expanding the functions LESSP, EQUAL, and QUOTIENT, to: (IMPLIES (AND (LESSP A B) (EQUAL (REMAINDER A C) (REMAINDER B C))) (NOT (LESSP (QUOTIENT B C) (QUOTIENT A C)))). Applying the lemma REMAINDER-QUOTIENT-ELIM, replace A by (PLUS X (TIMES C Z)) to eliminate (REMAINDER A C) and (QUOTIENT A C). We use LESSP-REMAINDER, the type restriction lemma noted when REMAINDER was introduced, and the type restriction lemma noted when QUOTIENT was introduced to restrict the new variables. This produces the following four new formulas: Case 5.4. (IMPLIES (AND (NOT (NUMBERP A)) (LESSP A B) (EQUAL (REMAINDER A C) (REMAINDER B C))) (NOT (LESSP (QUOTIENT B C) (QUOTIENT A C)))). However this further simplifies, applying REMAINDER-OF-NON-NUMBER and QUOTIENT-OF-NON-NUMBER, and opening up LESSP, EQUAL, NUMBERP, REMAINDER, and QUOTIENT, to: T. Case 5.3. (IMPLIES (AND (EQUAL C 0) (LESSP A B) (EQUAL (REMAINDER A C) (REMAINDER B C))) (NOT (LESSP (QUOTIENT B C) (QUOTIENT A C)))). But this further simplifies, rewriting with the lemmas REMAINDER-ZERO and QUOTIENT-ZERO, and expanding ZEROP, LESSP, and QUOTIENT, to: T. Case 5.2. (IMPLIES (AND (NOT (NUMBERP C)) (LESSP A B) (EQUAL (REMAINDER A C) (REMAINDER B C))) (NOT (LESSP (QUOTIENT B C) (QUOTIENT A C)))), which further simplifies, rewriting with the lemmas REMAINDER-ZERO and QUOTIENT-ZERO, and expanding the functions ZEROP and LESSP, to: T. Case 5.1. (IMPLIES (AND (NUMBERP X) (EQUAL (LESSP X C) (NOT (ZEROP C))) (NUMBERP Z) (NUMBERP C) (NOT (EQUAL C 0)) (LESSP (PLUS X (TIMES C Z)) B) (EQUAL X (REMAINDER B C))) (NOT (LESSP (QUOTIENT B C) Z))), which further simplifies, applying the lemma LESSP-REMAINDER, and expanding ZEROP, NOT, and EQUAL, to: (IMPLIES (AND (NUMBERP Z) (NUMBERP C) (NOT (EQUAL C 0)) (LESSP (PLUS (REMAINDER B C) (TIMES C Z)) B)) (NOT (LESSP (QUOTIENT B C) Z))). Appealing to the lemma REMAINDER-QUOTIENT-ELIM, we now replace B by (PLUS X (TIMES C V)) to eliminate (REMAINDER B C) and (QUOTIENT B C). We employ LESSP-REMAINDER, the type restriction lemma noted when REMAINDER was introduced, and the type restriction lemma noted when QUOTIENT was introduced to constrain the new variables. We must thus prove two new formulas: Case 5.1.2. (IMPLIES (AND (NOT (NUMBERP B)) (NUMBERP Z) (NUMBERP C) (NOT (EQUAL C 0)) (LESSP (PLUS (REMAINDER B C) (TIMES C Z)) B)) (NOT (LESSP (QUOTIENT B C) Z))), which finally simplifies, using linear arithmetic, applying REMAINDER-NOOP, REMAINDER-OF-NON-NUMBER, and LESSP-TIMES2, and opening up the definitions of NUMBERP, EQUAL, and PLUS, to: T. Case 5.1.1. (IMPLIES (AND (NUMBERP X) (EQUAL (LESSP X C) (NOT (ZEROP C))) (NUMBERP V) (NUMBERP Z) (NUMBERP C) (NOT (EQUAL C 0)) (LESSP (PLUS X (TIMES C Z)) (PLUS X (TIMES C V)))) (NOT (LESSP V Z))). But this further simplifies, rewriting with CORRECTNESS-OF-CANCEL-LESSP-PLUS and CORRECTNESS-OF-CANCEL-LESSP-TIMES, and opening up the definitions of ZEROP, NOT, FIX, and AND, to: (IMPLIES (AND (NUMBERP X) (LESSP X C) (NUMBERP V) (NUMBERP Z) (NUMBERP C) (NOT (EQUAL C 0)) (LESSP Z V)) (NOT (LESSP V Z))), which finally simplifies, using linear arithmetic, to: T. Case 4. (IMPLIES (AND (NOT (NUMBERP A)) (EQUAL (REMAINDER A C) (REMAINDER B C))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (DIFFERENCE (QUOTIENT A C) (QUOTIENT B C)))), which simplifies, using linear arithmetic, applying REMAINDER-OF-NON-NUMBER, DIFFERENCE-LEQ-ARG1, and QUOTIENT-OF-NON-NUMBER, and expanding the functions LESSP, EQUAL, NUMBERP, REMAINDER, and QUOTIENT, to: T. Case 3. (IMPLIES (AND (EQUAL C 0) (NUMBERP X) (NOT (LESSP (PLUS B X) B)) (EQUAL (REMAINDER (PLUS B X) C) (REMAINDER B C))) (EQUAL (QUOTIENT X C) (DIFFERENCE (QUOTIENT (PLUS B X) C) (QUOTIENT B C)))). But this simplifies, rewriting with the lemmas CORRECTNESS-OF-CANCEL-LESSP-PLUS, REMAINDER-ZERO, and QUOTIENT-ZERO, and opening up the definitions of ZEROP, PLUS, DIFFERENCE, and EQUAL, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP C)) (NUMBERP X) (NOT (LESSP (PLUS B X) B)) (EQUAL (REMAINDER (PLUS B X) C) (REMAINDER B C))) (EQUAL (QUOTIENT X C) (DIFFERENCE (QUOTIENT (PLUS B X) C) (QUOTIENT B C)))), which simplifies, rewriting with CORRECTNESS-OF-CANCEL-LESSP-PLUS, REMAINDER-ZERO, and QUOTIENT-ZERO, and opening up the definitions of ZEROP, PLUS, DIFFERENCE, and EQUAL, to: T. Case 1. (IMPLIES (AND (NUMBERP Z) (NUMBERP V) (EQUAL (LESSP V C) (NOT (ZEROP C))) (NUMBERP C) (NOT (EQUAL C 0)) (NOT (LESSP (PLUS B V (TIMES C Z)) B)) (EQUAL (REMAINDER (PLUS B V (TIMES C Z)) C) (REMAINDER B C))) (EQUAL Z (DIFFERENCE (QUOTIENT (PLUS B V (TIMES C Z)) C) (QUOTIENT B C)))). However this simplifies, appealing to the lemmas CORRECTNESS-OF-CANCEL-LESSP-PLUS, REMAINDER-TIMES1-INSTANCE, REMAINDER-PLUS, EQUAL-REMAINDER-PLUS-REMAINDER, QUOTIENT-TIMES-INSTANCE, QUOTIENT-PLUS, and CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS, and opening up ZEROP, NOT, EQUAL, PLUS, and FIX, to: T. Q.E.D. [ 0.0 0.5 0.0 ] QUOTIENT-DIFFERENCE1 (PROVE-LEMMA QUOTIENT-LESSP-ARG1 (REWRITE) (IMPLIES (LESSP A B) (EQUAL (QUOTIENT A B) 0))) This conjecture can be simplified, using the abbreviations EQUAL-QUOTIENT-0 and IMPLIES, to: T. This simplifies, obviously, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-LESSP-ARG1 (PROVE-LEMMA QUOTIENT-DIFFERENCE2 (REWRITE) (IMPLIES (AND (EQUAL (REMAINDER A C) 0) (NOT (EQUAL (REMAINDER B C) 0))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE (QUOTIENT A C) (ADD1 (QUOTIENT B C))) 0))) ((DISABLE TIMES-DISTRIBUTES-OVER-PLUS QUOTIENT-DIFFERENCE1 DIFFERENCE-LEQ-ARG1 REMAINDER-DIFFERENCE2 EQUAL-REMAINDER-DIFFERENCE-0 REMAINDER-DIFFERENCE3) (INDUCT (DOUBLE-REMAINDER-INDUCTION A B C)))) This formula can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, AND, and DIFFERENCE-DIFFERENCE-ARG1, to the following four new goals: Case 4. (IMPLIES (AND (ZEROP C) (EQUAL (REMAINDER A C) 0) (NOT (EQUAL (REMAINDER B C) 0))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE (QUOTIENT A C) (ADD1 (QUOTIENT B C))) 0))). This simplifies, rewriting with REMAINDER-ZERO and QUOTIENT-ZERO, and opening up the definitions of ZEROP, EQUAL, DIFFERENCE, QUOTIENT, and LESSP, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP A C) (EQUAL (REMAINDER A C) 0) (NOT (EQUAL (REMAINDER B C) 0))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE (QUOTIENT A C) (ADD1 (QUOTIENT B C))) 0))), which simplifies, using linear arithmetic, applying REMAINDER-NOOP and QUOTIENT-LESSP-ARG1, and opening up EQUAL, DIFFERENCE, and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (EQUAL (REMAINDER A C) 0) (NOT (EQUAL (REMAINDER B C) 0))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE (QUOTIENT A C) (ADD1 (QUOTIENT B C))) 0))). This simplifies, rewriting with REMAINDER-NOOP, QUOTIENT-LESSP-ARG1, EQUAL-QUOTIENT-0, and DIFFERENCE-ADD1-ARG2, and opening up the functions ADD1, EQUAL, LESSP, and DIFFERENCE, to two new goals: Case 2.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (EQUAL (REMAINDER A C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (NOT (LESSP B A))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) 0)), which again simplifies, using linear arithmetic, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (EQUAL (REMAINDER A C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (LESSP B A)) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (QUOTIENT A C)))). Applying the lemmas DIFFERENCE-ELIM and REMAINDER-QUOTIENT-ELIM, replace A by (PLUS B X) to eliminate (DIFFERENCE A B) and X by (PLUS V (TIMES C Z)) to eliminate (QUOTIENT X C) and (REMAINDER X C). We rely upon the type restriction lemma noted when DIFFERENCE was introduced, LESSP-REMAINDER, the type restriction lemma noted when QUOTIENT was introduced, and the type restriction lemma noted when REMAINDER was introduced to restrict the new variables. We would thus like to prove the following three new formulas: Case 2.1.3. (IMPLIES (AND (LESSP A B) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (EQUAL (REMAINDER A C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (LESSP B A)) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (QUOTIENT A C)))). But this further simplifies, using linear arithmetic, to: T. Case 2.1.2. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (EQUAL (REMAINDER A C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (LESSP B A)) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (QUOTIENT A C)))), which further simplifies, unfolding the definition of LESSP, to: T. Case 2.1.1. (IMPLIES (AND (NUMBERP Z) (NUMBERP V) (EQUAL (LESSP V C) (NOT (ZEROP C))) (NOT (LESSP (PLUS B V (TIMES C Z)) B)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP (PLUS B V (TIMES C Z)) C)) (LESSP B C) (EQUAL (REMAINDER (PLUS B V (TIMES C Z)) C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (LESSP B (PLUS B V (TIMES C Z)))) (EQUAL Z (SUB1 (QUOTIENT (PLUS B V (TIMES C Z)) C)))), which further simplifies, applying the lemmas CORRECTNESS-OF-CANCEL-LESSP-PLUS, REMAINDER-TIMES1-INSTANCE, REMAINDER-PLUS, EQUAL-PLUS-0, EQUAL-TIMES-0, QUOTIENT-TIMES-INSTANCE, COMMUTATIVITY-OF-PLUS, and QUOTIENT-PLUS, and expanding the functions ZEROP, NOT, and EQUAL, to two new goals: Case 2.1.1.2. (IMPLIES (AND (NUMBERP Z) (NUMBERP V) (LESSP V C) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP (PLUS B V (TIMES C Z)) C)) (LESSP B C) (EQUAL (REMAINDER (PLUS B V) C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (NOT (EQUAL V 0))) (EQUAL Z (SUB1 (PLUS Z (QUOTIENT (PLUS B V) C))))), which again simplifies, using linear arithmetic, rewriting with REMAINDER-NOOP, QUOTIENT-LESSP-ARG1, PLUS-ZERO-ARG2, PLUS-ADD1-ARG2, and SUB1-ADD1, and opening up the definitions of REMAINDER, ADD1, QUOTIENT, NUMBERP, and ZEROP, to: (IMPLIES (AND (NUMBERP Z) (NUMBERP V) (LESSP V C) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP (PLUS B V (TIMES C Z)) C)) (LESSP B C) (LESSP (PLUS B V) C) (EQUAL (PLUS B V) 0) (NUMBERP B) (NOT (EQUAL B 0)) (NOT (EQUAL V 0))) (EQUAL Z (SUB1 Z))), which again simplifies, using linear arithmetic, to: T. Case 2.1.1.1. (IMPLIES (AND (NUMBERP Z) (NUMBERP V) (LESSP V C) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP (PLUS B V (TIMES C Z)) C)) (LESSP B C) (EQUAL (REMAINDER (PLUS B V) C) 0) (NUMBERP B) (NOT (EQUAL B 0)) (NOT (EQUAL Z 0))) (EQUAL Z (SUB1 (PLUS Z (QUOTIENT (PLUS B V) C))))), which again simplifies, using linear arithmetic, rewriting with REMAINDER-NOOP, QUOTIENT-LESSP-ARG1, PLUS-ZERO-ARG2, PLUS-ADD1-ARG2, and SUB1-ADD1, and expanding the functions REMAINDER, ADD1, QUOTIENT, NUMBERP, and ZEROP, to the new goal: (IMPLIES (AND (NUMBERP Z) (NUMBERP V) (LESSP V C) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP (PLUS B V (TIMES C Z)) C)) (LESSP B C) (LESSP (PLUS B V) C) (EQUAL (PLUS B V) 0) (NUMBERP B) (NOT (EQUAL B 0)) (NOT (EQUAL Z 0))) (EQUAL Z (SUB1 Z))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (IMPLIES (AND (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0))) (EQUAL (QUOTIENT (DIFFERENCE A (PLUS C (DIFFERENCE B C))) C) (IF (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (ADD1 (QUOTIENT (DIFFERENCE B C) C))) 0))) (EQUAL (REMAINDER A C) 0) (NOT (EQUAL (REMAINDER B C) 0))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE (QUOTIENT A C) (ADD1 (QUOTIENT B C))) 0))), which simplifies, using linear arithmetic, appealing to the lemmas COMMUTATIVITY-OF-PLUS, CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS, PLUS-ZERO-ARG2, PLUS-DIFFERENCE-ARG2, DIFFERENCE-ADD1-ARG2, REMAINDER-NOOP, EQUAL-DIFFERENCE-0, SUB1-ADD1, EQUAL-QUOTIENT-0, DIFFERENCE-SUB1-ARG2, and REMAINDER-OF-NON-NUMBER, and expanding the functions NOT, AND, FIX, ZEROP, IMPLIES, REMAINDER, EQUAL, LESSP, QUOTIENT, DIFFERENCE, and NUMBERP, to nine new formulas: Case 1.9. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (NOT (LESSP (DIFFERENCE B C) (DIFFERENCE A C))) (LESSP C B) (NUMBERP B) (EQUAL (QUOTIENT (DIFFERENCE A B) C) 0) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0)) (LESSP B A) (LESSP (QUOTIENT (DIFFERENCE B C) C) (QUOTIENT (DIFFERENCE A C) C)) (LESSP (DIFFERENCE B C) C)) (EQUAL 0 (SUB1 (SUB1 (ADD1 (QUOTIENT (DIFFERENCE A C) C)))))), which again simplifies, using linear arithmetic, to: T. Case 1.8. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (NOT (LESSP (DIFFERENCE B C) (DIFFERENCE A C))) (LESSP C B) (NUMBERP B) (EQUAL (QUOTIENT (DIFFERENCE A B) C) 0) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0)) (LESSP B A) (LESSP (QUOTIENT (DIFFERENCE B C) C) (QUOTIENT (DIFFERENCE A C) C)) (NOT (LESSP (DIFFERENCE B C) C)) (NOT (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)))) (EQUAL 0 (SUB1 0))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (EQUAL (QUOTIENT (DIFFERENCE B C) C) 0) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (NOT (LESSP (DIFFERENCE B C) (DIFFERENCE A C))) (LESSP C B) (NUMBERP B) (EQUAL (QUOTIENT (DIFFERENCE A B) C) 0) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0)) (LESSP B A) (LESSP (QUOTIENT (DIFFERENCE B C) C) (QUOTIENT (DIFFERENCE A C) C)) (NOT (LESSP (DIFFERENCE B C) C)) (NOT (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)))) (EQUAL 0 (SUB1 0))). This again simplifies, using linear arithmetic, to: T. Case 1.7. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (NOT (LESSP (DIFFERENCE B C) (DIFFERENCE A C))) (LESSP C B) (NUMBERP B) (EQUAL (QUOTIENT (DIFFERENCE A B) C) 0) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0)) (LESSP B A) (LESSP (QUOTIENT (DIFFERENCE B C) C) (QUOTIENT (DIFFERENCE A C) C)) (NOT (LESSP (DIFFERENCE B C) C)) (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)) (NOT (LESSP (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)))) (EQUAL 0 (SUB1 (SUB1 (ADD1 (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C))))))), which again simplifies, using linear arithmetic, to: T. Case 1.6. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (NOT (LESSP (DIFFERENCE B C) (DIFFERENCE A C))) (LESSP C B) (NUMBERP B) (EQUAL (QUOTIENT (DIFFERENCE A B) C) 0) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0)) (LESSP B A) (LESSP (QUOTIENT (DIFFERENCE B C) C) (QUOTIENT (DIFFERENCE A C) C)) (NOT (LESSP (DIFFERENCE B C) C)) (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)) (LESSP (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C))) (EQUAL 0 (SUB1 (SUB1 0)))), which again simplifies, using linear arithmetic, to: T. Case 1.5. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP (QUOTIENT (DIFFERENCE B C) C) (QUOTIENT (DIFFERENCE A C) C)) (LESSP C B) (NUMBERP B) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)))) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0)) (NOT (LESSP B A))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) 0)), which again simplifies, using linear arithmetic, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP (QUOTIENT (DIFFERENCE B C) C) (QUOTIENT (DIFFERENCE A C) C)) (LESSP C B) (NUMBERP B) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)))) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0)) (LESSP B A) (NOT (LESSP (DIFFERENCE B C) C)) (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)) (LESSP (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (SUB1 0)))), which again simplifies, using linear arithmetic, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP (QUOTIENT (DIFFERENCE B C) C) (QUOTIENT (DIFFERENCE A C) C)) (LESSP C B) (NUMBERP B) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)))) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0)) (LESSP B A) (NOT (LESSP (DIFFERENCE B C) C)) (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)) (NOT (LESSP (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (SUB1 (ADD1 (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C))))))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (EQUAL (SUB1 (ADD1 (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)))) 0) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP (QUOTIENT (DIFFERENCE B C) C) (QUOTIENT (DIFFERENCE A C) C)) (LESSP C B) (NUMBERP B) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)))) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0)) (LESSP B A) (NOT (LESSP (DIFFERENCE B C) C)) (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)) (NOT (LESSP (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (SUB1 (ADD1 (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C))))))). But this again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP (QUOTIENT (DIFFERENCE B C) C) (QUOTIENT (DIFFERENCE A C) C)) (LESSP C B) (NUMBERP B) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)))) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0)) (LESSP B A) (NOT (LESSP (DIFFERENCE B C) C)) (NOT (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 0))), which again simplifies, using linear arithmetic, to two new conjectures: Case 1.2.2. (IMPLIES (AND (EQUAL (QUOTIENT (DIFFERENCE B C) C) 0) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP (QUOTIENT (DIFFERENCE B C) C) (QUOTIENT (DIFFERENCE A C) C)) (LESSP C B) (NUMBERP B) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)))) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0)) (LESSP B A) (NOT (LESSP (DIFFERENCE B C) C)) (NOT (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 0))), which again simplifies, applying the lemma EQUAL-QUOTIENT-0, to: T. Case 1.2.1. (IMPLIES (AND (LESSP (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP (QUOTIENT (DIFFERENCE B C) C) (QUOTIENT (DIFFERENCE A C) C)) (LESSP C B) (NUMBERP B) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)))) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0)) (LESSP B A) (NOT (LESSP (DIFFERENCE B C) C)) (NOT (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 0))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (EQUAL (QUOTIENT (DIFFERENCE B C) C) 0) (LESSP (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP (QUOTIENT (DIFFERENCE B C) C) (QUOTIENT (DIFFERENCE A C) C)) (LESSP C B) (NUMBERP B) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)))) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0)) (LESSP B A) (NOT (LESSP (DIFFERENCE B C) C)) (NOT (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 0))). However this again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP (QUOTIENT (DIFFERENCE B C) C) (QUOTIENT (DIFFERENCE A C) C)) (LESSP C B) (NUMBERP B) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)))) (EQUAL (REMAINDER (DIFFERENCE A C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE B C) C) 0)) (LESSP B A) (LESSP (DIFFERENCE B C) C)) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (SUB1 (ADD1 (QUOTIENT (DIFFERENCE A C) C)))))), which again simplifies, applying QUOTIENT-LESSP-ARG1, EQUAL-QUOTIENT-0, REMAINDER-NOOP, EQUAL-DIFFERENCE-0, and SUB1-ADD1, and unfolding EQUAL, LESSP, and DIFFERENCE, to: T. Q.E.D. [ 0.0 1.1 0.0 ] QUOTIENT-DIFFERENCE2 (PROVE-LEMMA QUOTIENT-DIFFERENCE3 (REWRITE) (IMPLIES (AND (EQUAL (REMAINDER B C) 0) (NOT (EQUAL (REMAINDER A C) 0))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE (QUOTIENT A C) (QUOTIENT B C)) 0))) ((DISABLE TIMES-DISTRIBUTES-OVER-PLUS REMAINDER-DIFFERENCE1 DIFFERENCE-DIFFERENCE-ARG1 EQUAL-REMAINDER-DIFFERENCE-0 DIFF-DIFF-ARG1 REMAINDER-NOOP REMAINDER-QUOTIENT-ELIM REMAINDER-DIFFERENCE3 QUOTIENT-DIFFERENCE1) (INDUCT (DOUBLE-REMAINDER-INDUCTION A B C)))) This formula can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to the following four new goals: Case 4. (IMPLIES (AND (ZEROP C) (EQUAL (REMAINDER B C) 0) (NOT (EQUAL (REMAINDER A C) 0))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE (QUOTIENT A C) (QUOTIENT B C)) 0))). This simplifies, applying REMAINDER-ZERO and QUOTIENT-ZERO, and expanding the definitions of ZEROP, EQUAL, DIFFERENCE, LESSP, and QUOTIENT, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP A C) (EQUAL (REMAINDER B C) 0) (NOT (EQUAL (REMAINDER A C) 0))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE (QUOTIENT A C) (QUOTIENT B C)) 0))), which simplifies, using linear arithmetic, applying the lemmas QUOTIENT-LESSP-ARG1 and DIFFERENCE-LEQ-ARG1, and expanding REMAINDER and EQUAL, to the formula: (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP A C) (EQUAL (REMAINDER B C) 0) (NUMBERP A) (NOT (EQUAL A 0)) (LESSP A B)) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE (QUOTIENT A C) (QUOTIENT B C)) 0))). However this again simplifies, using linear arithmetic, applying DIFFERENCE-LEQ-ARG1 and QUOTIENT-LESSP-ARG1, and unfolding EQUAL, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (EQUAL (REMAINDER B C) 0) (NOT (EQUAL (REMAINDER A C) 0))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE (QUOTIENT A C) (QUOTIENT B C)) 0))). This simplifies, using linear arithmetic, rewriting with QUOTIENT-LESSP-ARG1 and EQUAL-QUOTIENT-0, and unfolding REMAINDER, EQUAL, DIFFERENCE, and LESSP, to four new formulas: Case 2.4. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (EQUAL B 0) (NOT (EQUAL (REMAINDER A C) 0)) (NOT (NUMBERP A))) (EQUAL (QUOTIENT 0 C) 0)), which again simplifies, unfolding LESSP, to: T. Case 2.3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (EQUAL B 0) (NOT (EQUAL (REMAINDER A C) 0)) (EQUAL A 0)) (EQUAL (QUOTIENT 0 C) 0)), which again simplifies, obviously, to: T. Case 2.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (NOT (NUMBERP B)) (NOT (EQUAL (REMAINDER A C) 0)) (NOT (NUMBERP A))) (EQUAL (QUOTIENT 0 C) 0)). This again simplifies, unfolding the definition of LESSP, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (NOT (NUMBERP B)) (NOT (EQUAL (REMAINDER A C) 0)) (EQUAL A 0)) (EQUAL (QUOTIENT 0 C) 0)), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (IMPLIES (AND (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0))) (EQUAL (QUOTIENT (DIFFERENCE (DIFFERENCE A C) (DIFFERENCE B C)) C) (IF (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)) 0))) (EQUAL (REMAINDER B C) 0) (NOT (EQUAL (REMAINDER A C) 0))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (IF (LESSP B A) (DIFFERENCE (QUOTIENT A C) (QUOTIENT B C)) 0))), which simplifies, rewriting with CORRECTNESS-OF-CANCEL-DIFFERENCE-PLUS, PLUS-DIFFERENCE-ARG1, DIFFERENCE-DIFFERENCE-ARG2, DIFFERENCE-LEQ-ARG1, SUB1-ADD1, EQUAL-QUOTIENT-0, DIFFERENCE-SUB1-ARG2, DIFFERENCE-ADD1-ARG2, and REMAINDER-OF-NON-NUMBER, and unfolding the functions NOT, AND, FIX, EQUAL, PLUS, IMPLIES, REMAINDER, NUMBERP, LESSP, QUOTIENT, and DIFFERENCE, to the following eight new conjectures: Case 1.8. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (NOT (LESSP (DIFFERENCE B C) (DIFFERENCE A C))) (LESSP C A) (NUMBERP A) (EQUAL (QUOTIENT (DIFFERENCE A B) C) 0) (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (LESSP B A) (NOT (LESSP (DIFFERENCE B C) C)) (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)) (LESSP (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C))) (EQUAL 0 (SUB1 0))). However this again simplifies, using linear arithmetic, to: T. Case 1.7. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (NOT (LESSP (DIFFERENCE B C) (DIFFERENCE A C))) (LESSP C A) (NUMBERP A) (EQUAL (QUOTIENT (DIFFERENCE A B) C) 0) (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (LESSP B A) (NOT (LESSP (DIFFERENCE B C) C)) (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)) (NOT (LESSP (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)))) (EQUAL 0 (SUB1 (ADD1 (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)))))), which again simplifies, using linear arithmetic, to: T. Case 1.6. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (NOT (LESSP (DIFFERENCE B C) (DIFFERENCE A C))) (LESSP C A) (NUMBERP A) (EQUAL (QUOTIENT (DIFFERENCE A B) C) 0) (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (LESSP B A) (LESSP (DIFFERENCE B C) C)) (EQUAL 0 (SUB1 (ADD1 (QUOTIENT (DIFFERENCE A C) C))))), which again simplifies, using linear arithmetic, to: T. Case 1.5. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP C A) (NUMBERP A) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C))) (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (NOT (LESSP (DIFFERENCE B C) C)) (NOT (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) 0)), which again simplifies, using linear arithmetic, to two new goals: Case 1.5.2. (IMPLIES (AND (EQUAL (QUOTIENT (DIFFERENCE B C) C) 0) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP C A) (NUMBERP A) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C))) (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (NOT (LESSP (DIFFERENCE B C) C)) (NOT (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) 0)), which again simplifies, applying EQUAL-QUOTIENT-0, to: T. Case 1.5.1. (IMPLIES (AND (LESSP (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP C A) (NUMBERP A) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C))) (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (NOT (LESSP (DIFFERENCE B C) C)) (NOT (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) 0)). This again simplifies, using linear arithmetic, rewriting with DIFFERENCE-LEQ-ARG1, EQUAL-QUOTIENT-0, and QUOTIENT-LESSP-ARG1, and opening up SUB1, EQUAL, and LESSP, to the new goal: (IMPLIES (AND (LESSP (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP C A) (NUMBERP A) (EQUAL (QUOTIENT (DIFFERENCE B C) C) 0) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C))) (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (NOT (LESSP (DIFFERENCE B C) C)) (LESSP (DIFFERENCE A C) C)) (LESSP (DIFFERENCE A B) C)), which again simplifies, using linear arithmetic, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP C A) (NUMBERP A) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C))) (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (NOT (LESSP B A))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) 0)), which again simplifies, using linear arithmetic, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP C A) (NUMBERP A) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C))) (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (LESSP B A) (NOT (LESSP (DIFFERENCE B C) C)) (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)) (LESSP (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 0))), which again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP C A) (NUMBERP A) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C))) (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (LESSP B A) (NOT (LESSP (DIFFERENCE B C) C)) (LESSP (SUB1 (QUOTIENT (DIFFERENCE B C) C)) (QUOTIENT (DIFFERENCE A C) C)) (NOT (LESSP (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C)))) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (ADD1 (QUOTIENT (DIFFERENCE A B) C))))), which again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (LESSP (DIFFERENCE B C) (DIFFERENCE A C)) (LESSP C A) (NUMBERP A) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (DIFFERENCE (QUOTIENT (DIFFERENCE A C) C) (QUOTIENT (DIFFERENCE B C) C))) (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE A C) C) 0)) (LESSP B A) (LESSP (DIFFERENCE B C) C)) (EQUAL (QUOTIENT (DIFFERENCE A B) C) (SUB1 (ADD1 (QUOTIENT (DIFFERENCE A C) C))))), which again simplifies, applying the lemmas QUOTIENT-LESSP-ARG1, EQUAL-QUOTIENT-0, EQUAL-DIFFERENCE-0, DIFFERENCE-LEQ-ARG1, and SUB1-ADD1, and opening up EQUAL, DIFFERENCE, REMAINDER, LESSP, ADD1, and SUB1, to: T. Q.E.D. [ 0.0 2.1 0.1 ] QUOTIENT-DIFFERENCE3 (PROVE-LEMMA REMAINDER-EQUALS-ITS-FIRST-ARGUMENT (REWRITE) (EQUAL (EQUAL A (REMAINDER A B)) (AND (NUMBERP A) (OR (ZEROP B) (LESSP A B)))) ((INDUCT (REMAINDER A B)) (ENABLE LESSP-REMAINDER REMAINDER-NOOP REMAINDER-ZERO))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to three new conjectures: Case 3. (IMPLIES (ZEROP B) (EQUAL (EQUAL A (REMAINDER A B)) (AND (NUMBERP A) (OR (ZEROP B) (LESSP A B))))), which simplifies, applying REMAINDER-ZERO, and unfolding ZEROP, EQUAL, LESSP, OR, and AND, to the following four new goals: Case 3.4. (IMPLIES (AND (EQUAL B 0) (EQUAL A 0)) (EQUAL (NUMBERP A) T)). This again simplifies, clearly, to: T. Case 3.3. (IMPLIES (AND (EQUAL B 0) (NUMBERP A)) (EQUAL (NUMBERP A) T)). This again simplifies, trivially, to: T. Case 3.2. (IMPLIES (AND (NOT (NUMBERP B)) (EQUAL A 0)) (EQUAL (NUMBERP A) T)). This again simplifies, clearly, to: T. Case 3.1. (IMPLIES (AND (NOT (NUMBERP B)) (NUMBERP A)) (EQUAL (NUMBERP A) T)). This again simplifies, obviously, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (LESSP A B)) (EQUAL (EQUAL A (REMAINDER A B)) (AND (NUMBERP A) (OR (ZEROP B) (LESSP A B))))). This simplifies, applying REMAINDER-NOOP, and unfolding the functions ZEROP, OR, and AND, to two new goals: Case 2.2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (LESSP A B) (EQUAL A 0)) (EQUAL (NUMBERP A) T)), which again simplifies, obviously, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (LESSP A B) (NUMBERP A)) (EQUAL (NUMBERP A) T)). This again simplifies, clearly, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B)) (EQUAL (EQUAL (DIFFERENCE A B) (REMAINDER (DIFFERENCE A B) B)) (AND (NUMBERP (DIFFERENCE A B)) (OR (ZEROP B) (LESSP (DIFFERENCE A B) B))))) (EQUAL (EQUAL A (REMAINDER A B)) (AND (NUMBERP A) (OR (ZEROP B) (LESSP A B))))). This simplifies, rewriting with REMAINDER-NOOP, and opening up the definitions of ZEROP, OR, AND, and REMAINDER, to two new formulas: Case 1.2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B)) (NOT (EQUAL (DIFFERENCE A B) (REMAINDER (DIFFERENCE A B) B))) (NOT (LESSP (DIFFERENCE A B) B))) (NOT (EQUAL A (REMAINDER (DIFFERENCE A B) B)))), which again simplifies, trivially, to: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B)) (NOT (EQUAL (DIFFERENCE A B) A)) (NOT (LESSP (DIFFERENCE A B) B))) (NOT (EQUAL A (REMAINDER (DIFFERENCE A B) B)))). Applying the lemmas DIFFERENCE-ELIM and REMAINDER-QUOTIENT-ELIM, replace A by (PLUS B X) to eliminate (DIFFERENCE A B) and X by (PLUS Z (TIMES B V)) to eliminate (REMAINDER X B) and (QUOTIENT X B). We rely upon the type restriction lemma noted when DIFFERENCE was introduced, LESSP-REMAINDER, the type restriction lemma noted when REMAINDER was introduced, and the type restriction lemma noted when QUOTIENT was introduced to restrict the new variables. This produces the following two new goals: Case 1.2.2. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B)) (NOT (EQUAL (DIFFERENCE A B) A)) (NOT (LESSP (DIFFERENCE A B) B))) (NOT (EQUAL A (REMAINDER (DIFFERENCE A B) B)))). This further simplifies, obviously, to: T. Case 1.2.1. (IMPLIES (AND (NUMBERP Z) (EQUAL (LESSP Z B) (NOT (ZEROP B))) (NUMBERP V) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (PLUS B Z (TIMES B V)) B)) (NOT (EQUAL (PLUS Z (TIMES B V)) (PLUS B Z (TIMES B V)))) (NOT (LESSP (PLUS Z (TIMES B V)) B))) (NOT (EQUAL (PLUS B Z (TIMES B V)) Z))). However this further simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B)) (EQUAL (DIFFERENCE A B) (REMAINDER (DIFFERENCE A B) B)) (EQUAL (LESSP (DIFFERENCE A B) B) T)) (NOT (EQUAL A (DIFFERENCE A B)))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.5 0.0 ] REMAINDER-EQUALS-ITS-FIRST-ARGUMENT (DISABLE REMAINDER-EQUALS-ITS-FIRST-ARGUMENT) [ 0.0 0.0 0.0 ] REMAINDER-EQUALS-ITS-FIRST-ARGUMENT-OFF (PROVE-LEMMA QUOTIENT-REMAINDER-TIMES (REWRITE) (EQUAL (QUOTIENT (REMAINDER X (TIMES A B)) A) (REMAINDER (QUOTIENT X A) B)) ((ENABLE REMAINDER-EQUALS-ITS-FIRST-ARGUMENT QUOTIENT-NOOP QUOTIENT-PLUS QUOTIENT-TIMES-INSTANCE QUOTIENT-ZERO) (DO-NOT-INDUCT T))) . Appealing to the lemma REMAINDER-QUOTIENT-ELIM, we now replace X by: (PLUS Z (TIMES (TIMES A B) V)) to eliminate (REMAINDER X (TIMES A B)) and (QUOTIENT X (TIMES A B)) and Z by (PLUS D (TIMES A W)) to eliminate (QUOTIENT Z A) and (REMAINDER Z A). We use LESSP-REMAINDER, the type restriction lemma noted when QUOTIENT was introduced, and the type restriction lemma noted when REMAINDER was introduced to constrain the new variables. The result is six new goals: Case 6. (IMPLIES (NOT (NUMBERP X)) (EQUAL (QUOTIENT (REMAINDER X (TIMES A B)) A) (REMAINDER (QUOTIENT X A) B))), which simplifies, appealing to the lemmas REMAINDER-OF-NON-NUMBER, QUOTIENT-OF-NON-NUMBER, COMMUTATIVITY-OF-TIMES, and REMAINDER-TIMES2, and unfolding REMAINDER, NUMBERP, EQUAL, LESSP, QUOTIENT, and TIMES, to: T. Case 5. (IMPLIES (EQUAL (TIMES A B) 0) (EQUAL (QUOTIENT (REMAINDER X (TIMES A B)) A) (REMAINDER (QUOTIENT X A) B))), which simplifies, rewriting with the lemmas EQUAL-TIMES-0, REMAINDER-ZERO, and QUOTIENT-ZERO, and expanding the functions ZEROP, LESSP, EQUAL, NUMBERP, and REMAINDER, to two new conjectures: Case 5.2. (IMPLIES (AND (EQUAL B 0) (NOT (NUMBERP X))) (EQUAL (QUOTIENT 0 A) (QUOTIENT X A))), which again simplifies, applying the lemma QUOTIENT-OF-NON-NUMBER, and expanding LESSP, EQUAL, and QUOTIENT, to: T. Case 5.1. (IMPLIES (AND (NOT (NUMBERP B)) (NOT (NUMBERP X))) (EQUAL (QUOTIENT 0 A) (QUOTIENT X A))), which again simplifies, applying the lemma QUOTIENT-OF-NON-NUMBER, and opening up the functions LESSP, EQUAL, and QUOTIENT, to: T. Case 4. (IMPLIES (NOT (NUMBERP (TIMES A B))) (EQUAL (QUOTIENT (REMAINDER X (TIMES A B)) A) (REMAINDER (QUOTIENT X A) B))), which simplifies, trivially, to: T. Case 3. (IMPLIES (AND (EQUAL A 0) (NUMBERP Z) (EQUAL (LESSP Z (TIMES A B)) (NOT (ZEROP (TIMES A B)))) (NUMBERP V) (NOT (EQUAL (TIMES A B) 0))) (EQUAL (QUOTIENT Z A) (REMAINDER (QUOTIENT (PLUS Z (TIMES (TIMES A B) V)) A) B))). But this simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP A)) (NUMBERP Z) (EQUAL (LESSP Z (TIMES A B)) (NOT (ZEROP (TIMES A B)))) (NUMBERP V) (NOT (EQUAL (TIMES A B) 0))) (EQUAL (QUOTIENT Z A) (REMAINDER (QUOTIENT (PLUS Z (TIMES (TIMES A B) V)) A) B))), which simplifies, opening up the definitions of TIMES, EQUAL, LESSP, ZEROP, and NOT, to: T. Case 1. (IMPLIES (AND (NUMBERP W) (NUMBERP D) (EQUAL (LESSP D A) (NOT (ZEROP A))) (NUMBERP A) (NOT (EQUAL A 0)) (EQUAL (LESSP (PLUS D (TIMES A W)) (TIMES A B)) (NOT (ZEROP (TIMES A B)))) (NUMBERP V) (NOT (EQUAL (TIMES A B) 0))) (EQUAL W (REMAINDER (QUOTIENT (PLUS (PLUS D (TIMES A W)) (TIMES (TIMES A B) V)) A) B))), which simplifies, applying LESSP-PLUS-TIMES2, EQUAL-TIMES-0, TIMES-ZERO, COMMUTATIVITY-OF-TIMES, ASSOCIATIVITY-OF-TIMES, ASSOCIATIVITY-OF-PLUS, REMAINDER-TIMES1-INSTANCE, QUOTIENT-TIMES-INSTANCE, QUOTIENT-LESSP-ARG1, PLUS-ZERO-ARG2, QUOTIENT-PLUS, REMAINDER-NOOP, and REMAINDER-PLUS, and expanding the functions ZEROP, NOT, EQUAL, and TIMES, to: T. Q.E.D. [ 0.0 0.2 0.0 ] QUOTIENT-REMAINDER-TIMES (PROVE-LEMMA QUOTIENT-REMAINDER (REWRITE) (IMPLIES (EQUAL (REMAINDER C A) 0) (EQUAL (QUOTIENT (REMAINDER B C) A) (REMAINDER (QUOTIENT B A) (QUOTIENT C A)))) ((ENABLE QUOTIENT-NOOP QUOTIENT-PLUS QUOTIENT-REMAINDER-TIMES QUOTIENT-TIMES-INSTANCE QUOTIENT-ZERO) (DO-NOT-INDUCT T))) . Applying the lemma REMAINDER-QUOTIENT-ELIM, replace B by (PLUS Z (TIMES A X)) to eliminate (QUOTIENT B A) and (REMAINDER B A) and X by: (PLUS V (TIMES (QUOTIENT C A) W)) to eliminate (REMAINDER X (QUOTIENT C A)) and (QUOTIENT X (QUOTIENT C A)). We rely upon LESSP-REMAINDER, the type restriction lemma noted when REMAINDER was introduced, and the type restriction lemma noted when QUOTIENT was introduced to restrict the new variables. This produces the following six new conjectures: Case 6. (IMPLIES (AND (NOT (NUMBERP B)) (EQUAL (REMAINDER C A) 0)) (EQUAL (QUOTIENT (REMAINDER B C) A) (REMAINDER (QUOTIENT B A) (QUOTIENT C A)))). But this simplifies, appealing to the lemmas REMAINDER-OF-NON-NUMBER, QUOTIENT-OF-NON-NUMBER, and EQUAL-QUOTIENT-0, and unfolding the definitions of LESSP, EQUAL, NUMBERP, REMAINDER, and QUOTIENT, to: T. Case 5. (IMPLIES (AND (EQUAL A 0) (EQUAL (REMAINDER C A) 0)) (EQUAL (QUOTIENT (REMAINDER B C) A) (REMAINDER (QUOTIENT B A) (QUOTIENT C A)))), which simplifies, applying REMAINDER-ZERO and QUOTIENT-ZERO, and unfolding the functions ZEROP, QUOTIENT, REMAINDER, and EQUAL, to: T. Case 4. (IMPLIES (AND (NOT (NUMBERP A)) (EQUAL (REMAINDER C A) 0)) (EQUAL (QUOTIENT (REMAINDER B C) A) (REMAINDER (QUOTIENT B A) (QUOTIENT C A)))). But this simplifies, rewriting with REMAINDER-ZERO and QUOTIENT-ZERO, and opening up the functions ZEROP, REMAINDER, and EQUAL, to: T. Case 3. (IMPLIES (AND (EQUAL (QUOTIENT C A) 0) (NUMBERP X) (NUMBERP Z) (EQUAL (LESSP Z A) (NOT (ZEROP A))) (NUMBERP A) (NOT (EQUAL A 0)) (EQUAL (REMAINDER C A) 0)) (EQUAL (QUOTIENT (REMAINDER (PLUS Z (TIMES A X)) C) A) (REMAINDER X (QUOTIENT C A)))). This simplifies, appealing to the lemmas EQUAL-QUOTIENT-0, REMAINDER-NOOP, REMAINDER-ZERO, REMAINDER-TIMES1-INSTANCE, QUOTIENT-TIMES-INSTANCE, QUOTIENT-LESSP-ARG1, PLUS-ZERO-ARG2, and QUOTIENT-PLUS, and expanding the definitions of ZEROP, NOT, and EQUAL, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP (QUOTIENT C A))) (NUMBERP X) (NUMBERP Z) (EQUAL (LESSP Z A) (NOT (ZEROP A))) (NUMBERP A) (NOT (EQUAL A 0)) (EQUAL (REMAINDER C A) 0)) (EQUAL (QUOTIENT (REMAINDER (PLUS Z (TIMES A X)) C) A) (REMAINDER X (QUOTIENT C A)))), which simplifies, obviously, to: T. Case 1. (IMPLIES (AND (NUMBERP V) (EQUAL (LESSP V (QUOTIENT C A)) (NOT (ZEROP (QUOTIENT C A)))) (NUMBERP W) (NOT (EQUAL (QUOTIENT C A) 0)) (NUMBERP Z) (EQUAL (LESSP Z A) (NOT (ZEROP A))) (NUMBERP A) (NOT (EQUAL A 0)) (EQUAL (REMAINDER C A) 0)) (EQUAL (QUOTIENT (REMAINDER (PLUS Z (TIMES A (PLUS V (TIMES (QUOTIENT C A) W)))) C) A) V)). This simplifies, applying EQUAL-QUOTIENT-0, COMMUTATIVITY-OF-TIMES, TIMES-DISTRIBUTES-OVER-PLUS, and QUOTIENT-LESSP-ARG1, and opening up the functions ZEROP, NOT, and EQUAL, to: (IMPLIES (AND (NUMBERP V) (NOT (LESSP C A)) (EQUAL (LESSP V (QUOTIENT C A)) T) (NUMBERP W) (NUMBERP Z) (LESSP Z A) (NUMBERP A) (NOT (EQUAL A 0)) (EQUAL (REMAINDER C A) 0)) (EQUAL (QUOTIENT (REMAINDER (PLUS Z (TIMES A V) (TIMES A W (QUOTIENT C A))) C) A) V)), which again simplifies, obviously, to: (IMPLIES (AND (NUMBERP V) (NOT (LESSP C A)) (LESSP V (QUOTIENT C A)) (NUMBERP W) (NUMBERP Z) (LESSP Z A) (NUMBERP A) (NOT (EQUAL A 0)) (EQUAL (REMAINDER C A) 0)) (EQUAL (QUOTIENT (REMAINDER (PLUS Z (TIMES A V) (TIMES A W (QUOTIENT C A))) C) A) V)). Applying the lemma REMAINDER-QUOTIENT-ELIM, replace C by (PLUS D (TIMES A X)) to eliminate (QUOTIENT C A) and (REMAINDER C A). We employ LESSP-REMAINDER, the type restriction lemma noted when QUOTIENT was introduced, and the type restriction lemma noted when REMAINDER was introduced to restrict the new variables. We would thus like to prove the following two new conjectures: Case 1.2. (IMPLIES (AND (NOT (NUMBERP C)) (NUMBERP V) (NOT (LESSP C A)) (LESSP V (QUOTIENT C A)) (NUMBERP W) (NUMBERP Z) (LESSP Z A) (NUMBERP A) (NOT (EQUAL A 0)) (EQUAL (REMAINDER C A) 0)) (EQUAL (QUOTIENT (REMAINDER (PLUS Z (TIMES A V) (TIMES A W (QUOTIENT C A))) C) A) V)). This further simplifies, unfolding the definition of LESSP, to: T. Case 1.1. (IMPLIES (AND (NUMBERP X) (NUMBERP D) (EQUAL (LESSP D A) (NOT (ZEROP A))) (NUMBERP V) (NOT (LESSP (PLUS D (TIMES A X)) A)) (LESSP V X) (NUMBERP W) (NUMBERP Z) (LESSP Z A) (NUMBERP A) (NOT (EQUAL A 0)) (EQUAL D 0)) (EQUAL (QUOTIENT (REMAINDER (PLUS Z (TIMES A V) (TIMES A W X)) (PLUS D (TIMES A X))) A) V)), which further simplifies, using linear arithmetic, rewriting with LESSP-TIMES2, REMAINDER-TIMES1-INSTANCE, REMAINDER-NOOP, REMAINDER-PLUS, REMAINDER-PLUS-TIMES-TIMES-INSTANCE, QUOTIENT-TIMES-INSTANCE, QUOTIENT-LESSP-ARG1, PLUS-ZERO-ARG2, and QUOTIENT-PLUS, and unfolding the definitions of NUMBERP, EQUAL, LESSP, ZEROP, NOT, and PLUS, to: T. Q.E.D. [ 0.0 3.7 0.0 ] QUOTIENT-REMAINDER (PROVE-LEMMA QUOTIENT-REMAINDER-INSTANCE (REWRITE) (EQUAL (QUOTIENT (REMAINDER X (TIMES A B)) A) (REMAINDER (QUOTIENT X A) B)) ((ENABLE QUOTIENT-REMAINDER QUOTIENT-TIMES-INSTANCE REMAINDER-TIMES1-INSTANCE) (DO-NOT-INDUCT T))) WARNING: the previously added lemma, QUOTIENT-REMAINDER-TIMES, could be applied whenever the newly proposed QUOTIENT-REMAINDER-INSTANCE could! This conjecture can be simplified, using the abbreviation QUOTIENT-REMAINDER-TIMES, to the goal: (EQUAL (REMAINDER (QUOTIENT X A) B) (REMAINDER (QUOTIENT X A) B)). This simplifies, clearly, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-REMAINDER-INSTANCE (PROVE-LEMMA QUOTIENT-PLUS-FACT NIL (IMPLIES (AND (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP A X)) (EQUAL (QUOTIENT (PLUS A B) C) (QUOTIENT B C))) ((ENABLE QUOTIENT-LESSP-ARG1 LESSP-PLUS-FACT) (INDUCT (QUOTIENT B C)))) This formula can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to the following three new goals: Case 3. (IMPLIES (AND (ZEROP C) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP A X)) (EQUAL (QUOTIENT (PLUS A B) C) (QUOTIENT B C))). This simplifies, using linear arithmetic, rewriting with the lemmas REMAINDER-NOOP, QUOTIENT-ZERO, and REMAINDER-OF-NON-NUMBER, and unfolding the functions ZEROP, NUMBERP, and EQUAL, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP B C) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP A X)) (EQUAL (QUOTIENT (PLUS A B) C) (QUOTIENT B C))). This simplifies, applying LESSP-PLUS-FACT and QUOTIENT-LESSP-ARG1, and unfolding EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (IMPLIES (AND (EQUAL (REMAINDER (DIFFERENCE B C) X) 0) (EQUAL (REMAINDER C X) 0) (LESSP A X)) (EQUAL (QUOTIENT (PLUS A (DIFFERENCE B C)) C) (QUOTIENT (DIFFERENCE B C) C))) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP A X)) (EQUAL (QUOTIENT (PLUS A B) C) (QUOTIENT B C))), which simplifies, using linear arithmetic, appealing to the lemmas REMAINDER-DIFFERENCE1, PLUS-ZERO-ARG2, PLUS-DIFFERENCE-ARG2, DIFFERENCE-LEQ-ARG1, REMAINDER-NOOP, QUOTIENT-LESSP-ARG1, PLUS-ADD1-ARG1, QUOTIENT-PLUS, EQUAL-QUOTIENT-0, and ADD1-EQUAL, and opening up the definitions of EQUAL, DIFFERENCE, AND, ZEROP, IMPLIES, REMAINDER, NUMBERP, ADD1, QUOTIENT, PLUS, and LESSP, to four new formulas: Case 1.4. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NUMBERP A) (EQUAL (QUOTIENT A C) (QUOTIENT (DIFFERENCE B C) C)) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP A X)) (LESSP A C)), which again simplifies, using linear arithmetic, to two new goals: Case 1.4.2. (IMPLIES (AND (NOT (NUMBERP B)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NUMBERP A) (EQUAL (QUOTIENT A C) (QUOTIENT (DIFFERENCE B C) C)) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP A X)) (LESSP A C)), which again simplifies, unfolding the definition of LESSP, to: T. Case 1.4.1. (IMPLIES (AND (NUMBERP B) (NOT (EQUAL B 0)) (NOT (LESSP B B)) (NOT (LESSP B B)) (NUMBERP A) (EQUAL (QUOTIENT A B) (QUOTIENT (DIFFERENCE B B) B)) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER B X) 0) (LESSP A X)) (LESSP A B)), which again simplifies, using linear arithmetic and applying the lemmas DIFFERENCE-X-X, QUOTIENT-LESSP-ARG1, and EQUAL-QUOTIENT-0, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NOT (NUMBERP A)) (EQUAL (QUOTIENT 0 C) (QUOTIENT (DIFFERENCE B C) C)) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (NOT (EQUAL X 0)) (NUMBERP X) (NOT (NUMBERP B))) (EQUAL (QUOTIENT 0 C) 1)), which again simplifies, expanding the function LESSP, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (NOT (LESSP C B)) (NOT (NUMBERP A)) (EQUAL (QUOTIENT 0 C) (QUOTIENT (DIFFERENCE B C) C)) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (NOT (EQUAL X 0)) (NUMBERP X) (NUMBERP B)) (EQUAL (QUOTIENT B C) 1)), which again simplifies, using linear arithmetic, to the conjecture: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP B B)) (NOT (LESSP B B)) (NOT (NUMBERP A)) (EQUAL (QUOTIENT 0 B) (QUOTIENT (DIFFERENCE B B) B)) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER B X) 0) (NOT (EQUAL X 0)) (NUMBERP X) (NUMBERP B)) (EQUAL (QUOTIENT B B) 1)). However this again simplifies, rewriting with QUOTIENT-LESSP-ARG1 and DIFFERENCE-X-X, and unfolding the definitions of LESSP, EQUAL, ADD1, and QUOTIENT, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP B C)) (LESSP C B) (EQUAL (QUOTIENT (DIFFERENCE (PLUS A B) C) C) (QUOTIENT (DIFFERENCE B C) C)) (EQUAL (REMAINDER B X) 0) (EQUAL (REMAINDER C X) 0) (LESSP A X) (LESSP (PLUS A B) C)) (EQUAL 0 (ADD1 (QUOTIENT (DIFFERENCE B C) C)))). But this again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.7 0.0 ] QUOTIENT-PLUS-FACT (PROVE-LEMMA QUOTIENT-PLUS-TIMES-TIMES-PROOF NIL (IMPLIES (LESSP A B) (EQUAL (QUOTIENT (PLUS A (TIMES B C)) (TIMES B D)) (QUOTIENT (TIMES B C) (TIMES B D)))) ((USE (QUOTIENT-PLUS-FACT (A A) (X B) (B (TIMES B C)) (C (TIMES B D)))) (ENABLE REMAINDER-TIMES1-INSTANCE) (DO-NOT-INDUCT T))) This conjecture can be simplified, using the abbreviations IMPLIES and REMAINDER-TIMES1-INSTANCE, to the conjecture: (IMPLIES (AND (IMPLIES (AND (EQUAL 0 0) (EQUAL 0 0) (LESSP A B)) (EQUAL (QUOTIENT (PLUS A (TIMES B C)) (TIMES B D)) (QUOTIENT (TIMES B C) (TIMES B D)))) (LESSP A B)) (EQUAL (QUOTIENT (PLUS A (TIMES B C)) (TIMES B D)) (QUOTIENT (TIMES B C) (TIMES B D)))). This simplifies, opening up the definitions of EQUAL, AND, and IMPLIES, to: T. Q.E.D. [ 0.0 0.1 0.0 ] QUOTIENT-PLUS-TIMES-TIMES-PROOF (PROVE-LEMMA QUOTIENT-PLUS-TIMES-TIMES (REWRITE) (IMPLIES (LESSP A B) (AND (EQUAL (QUOTIENT (PLUS A (TIMES B C)) (TIMES B D)) (QUOTIENT (TIMES B C) (TIMES B D))) (EQUAL (QUOTIENT (PLUS A (TIMES B C)) (TIMES B D)) (QUOTIENT (TIMES B C) (TIMES B D))))) ((USE (QUOTIENT-PLUS-TIMES-TIMES-PROOF (A A) (B B) (C C) (D D))) (ENABLE COMMUTATIVITY-OF-TIMES) (DO-NOT-INDUCT T))) WARNING: Note that the proposed lemma QUOTIENT-PLUS-TIMES-TIMES is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This simplifies, unfolding IMPLIES and AND, to: T. Q.E.D. [ 0.0 0.8 0.0 ] QUOTIENT-PLUS-TIMES-TIMES (PROVE-LEMMA QUOTIENT-PLUS-TIMES-TIMES-INSTANCE (REWRITE) (IMPLIES (LESSP A B) (AND (EQUAL (QUOTIENT (PLUS A (TIMES B C) (TIMES B D)) (TIMES B E)) (IF (ZEROP B) 0 (QUOTIENT (PLUS C D) E))) (EQUAL (QUOTIENT (PLUS A (TIMES C B) (TIMES D B)) (TIMES E B)) (IF (ZEROP B) 0 (QUOTIENT (PLUS D C) E))))) ((DISABLE TIMES-DISTRIBUTES-OVER-PLUS) (ENABLE QUOTIENT-TIMES-TIMES) (USE (TIMES-DISTRIBUTES-OVER-PLUS (X B) (Y C) (Z D))) (DO-NOT-INDUCT T))) WARNING: Note that the proposed lemma QUOTIENT-PLUS-TIMES-TIMES-INSTANCE is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This simplifies, rewriting with COMMUTATIVITY-OF-TIMES, QUOTIENT-TIMES-TIMES, QUOTIENT-PLUS-TIMES-TIMES, and COMMUTATIVITY-OF-PLUS, and opening up ZEROP and AND, to: T. Q.E.D. [ 0.0 0.2 0.0 ] QUOTIENT-PLUS-TIMES-TIMES-INSTANCE (PROVE-LEMMA QUOTIENT-QUOTIENT (REWRITE) (EQUAL (QUOTIENT (QUOTIENT B A) C) (QUOTIENT B (TIMES A C))) ((DISABLE TIMES-DISTRIBUTES-OVER-PLUS) (ENABLE QUOTIENT-LESSP-ARG1 QUOTIENT-PLUS QUOTIENT-PLUS-TIMES-TIMES QUOTIENT-TIMES-INSTANCE QUOTIENT-TIMES-TIMES QUOTIENT-NOOP QUOTIENT-ZERO) (DO-NOT-INDUCT T))) . Applying the lemma REMAINDER-QUOTIENT-ELIM, replace B by (PLUS Z (TIMES A X)) to eliminate (QUOTIENT B A) and (REMAINDER B A) and X by (PLUS W (TIMES C V)) to eliminate (QUOTIENT X C) and (REMAINDER X C). We rely upon LESSP-REMAINDER, the type restriction lemma noted when QUOTIENT was introduced, and the type restriction lemma noted when REMAINDER was introduced to restrict the new variables. We thus obtain the following six new conjectures: Case 6. (IMPLIES (NOT (NUMBERP B)) (EQUAL (QUOTIENT (QUOTIENT B A) C) (QUOTIENT B (TIMES A C)))). But this simplifies, applying the lemmas QUOTIENT-OF-NON-NUMBER and EQUAL-TIMES-0, and opening up the definitions of LESSP, EQUAL, and QUOTIENT, to: T. Case 5. (IMPLIES (EQUAL A 0) (EQUAL (QUOTIENT (QUOTIENT B A) C) (QUOTIENT B (TIMES A C)))), which simplifies, rewriting with QUOTIENT-ZERO, and opening up the functions ZEROP, LESSP, EQUAL, QUOTIENT, and TIMES, to: T. Case 4. (IMPLIES (NOT (NUMBERP A)) (EQUAL (QUOTIENT (QUOTIENT B A) C) (QUOTIENT B (TIMES A C)))). But this simplifies, rewriting with QUOTIENT-ZERO, and opening up the functions ZEROP, LESSP, EQUAL, QUOTIENT, and TIMES, to: T. Case 3. (IMPLIES (AND (EQUAL C 0) (NUMBERP X) (NUMBERP Z) (EQUAL (LESSP Z A) (NOT (ZEROP A))) (NUMBERP A) (NOT (EQUAL A 0))) (EQUAL (QUOTIENT X C) (QUOTIENT (PLUS Z (TIMES A X)) (TIMES A C)))). But this simplifies, applying QUOTIENT-ZERO and COMMUTATIVITY-OF-TIMES, and opening up the functions ZEROP, NOT, EQUAL, and TIMES, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP C)) (NUMBERP X) (NUMBERP Z) (EQUAL (LESSP Z A) (NOT (ZEROP A))) (NUMBERP A) (NOT (EQUAL A 0))) (EQUAL (QUOTIENT X C) (QUOTIENT (PLUS Z (TIMES A X)) (TIMES A C)))). But this simplifies, applying QUOTIENT-ZERO and TIMES-ZERO, and expanding the functions ZEROP, NOT, and EQUAL, to: T. Case 1. (IMPLIES (AND (NUMBERP V) (NUMBERP W) (EQUAL (LESSP W C) (NOT (ZEROP C))) (NUMBERP C) (NOT (EQUAL C 0)) (NUMBERP Z) (EQUAL (LESSP Z A) (NOT (ZEROP A))) (NUMBERP A) (NOT (EQUAL A 0))) (EQUAL V (QUOTIENT (PLUS Z (TIMES A (PLUS W (TIMES C V)))) (TIMES A C)))). This simplifies, applying REMAINDER-TIMES1-INSTANCE, QUOTIENT-TIMES-INSTANCE, QUOTIENT-LESSP-ARG1, PLUS-ZERO-ARG2, QUOTIENT-PLUS, QUOTIENT-TIMES-TIMES, and QUOTIENT-PLUS-TIMES-TIMES, and unfolding the definitions of ZEROP, NOT, and EQUAL, to: T. Q.E.D. [ 0.0 0.1 0.0 ] QUOTIENT-QUOTIENT (PROVE-LEMMA LEQ-QUOTIENT NIL (IMPLIES (LESSP A B) (LEQ (QUOTIENT A C) (QUOTIENT B C))) ((INDUCT (DOUBLE-REMAINDER-INDUCTION A B C)) (ENABLE QUOTIENT-LESSP-ARG1 QUOTIENT-ZERO))) This formula can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to the following four new formulas: Case 4. (IMPLIES (AND (ZEROP C) (LESSP A B)) (NOT (LESSP (QUOTIENT B C) (QUOTIENT A C)))). This simplifies, applying QUOTIENT-ZERO, and expanding ZEROP and LESSP, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (LESSP A C) (LESSP A B)) (NOT (LESSP (QUOTIENT B C) (QUOTIENT A C)))), which simplifies, rewriting with QUOTIENT-LESSP-ARG1, and unfolding the definitions of EQUAL and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (LESSP B C) (LESSP A B)) (NOT (LESSP (QUOTIENT B C) (QUOTIENT A C)))). This simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (IMPLIES (LESSP (DIFFERENCE A C) (DIFFERENCE B C)) (IF (LESSP (QUOTIENT (DIFFERENCE B C) C) (QUOTIENT (DIFFERENCE A C) C)) F T)) (LESSP A B)) (NOT (LESSP (QUOTIENT B C) (QUOTIENT A C)))). This simplifies, applying SUB1-ADD1, and expanding the functions IMPLIES, QUOTIENT, and LESSP, to: (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP B C)) (NOT (LESSP (DIFFERENCE A C) (DIFFERENCE B C))) (LESSP A B)) (NOT (LESSP (QUOTIENT (DIFFERENCE B C) C) (QUOTIENT (DIFFERENCE A C) C)))). But this again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.9 0.0 ] LEQ-QUOTIENT (PROVE-LEMMA QUOTIENT-1-ARG2 (REWRITE) (EQUAL (QUOTIENT N 1) (FIX N))) This simplifies, rewriting with QUOTIENT-NOOP, and unfolding EQUAL and FIX, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-1-ARG2 (PROVE-LEMMA QUOTIENT-1-ARG1-CASESPLIT NIL (OR (ZEROP N) (EQUAL N 1) (LESSP 1 N))) This conjecture can be simplified, using the abbreviations ZEROP and OR, to the goal: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (EQUAL N 1))) (LESSP 1 N)). This simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-1-ARG1-CASESPLIT (PROVE-LEMMA QUOTIENT-1-ARG1 (REWRITE) (EQUAL (QUOTIENT 1 N) (IF (EQUAL N 1) 1 0)) ((ENABLE QUOTIENT-LESSP-ARG1) (USE (QUOTIENT-1-ARG1-CASESPLIT)))) This formula simplifies, applying REMAINDER-ZERO, QUOTIENT-ZERO, QUOTIENT-ADD1, and QUOTIENT-LESSP-ARG1, and expanding the functions ZEROP, OR, QUOTIENT, EQUAL, and NUMBERP, to the formula: (IMPLIES (LESSP 1 N) (NOT (EQUAL N 1))). But this again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-1-ARG1 (PROVE-LEMMA QUOTIENT-X-X (REWRITE) (IMPLIES (NOT (ZEROP X)) (EQUAL (QUOTIENT X X) 1)) ((ENABLE DIFFERENCE-X-X))) This formula can be simplified, using the abbreviations ZEROP, NOT, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X)) (EQUAL (QUOTIENT X X) 1)), which simplifies, using linear arithmetic, rewriting with the lemmas QUOTIENT-LESSP-ARG1 and DIFFERENCE-X-X, and expanding the functions ADD1 and QUOTIENT, to the goal: (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X)) (NOT (LESSP X X))). But this again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-X-X (PROVE-LEMMA LESSP-QUOTIENT (REWRITE) (EQUAL (LESSP (QUOTIENT I J) I) (AND (NOT (ZEROP I)) (NOT (EQUAL J 1))))) This formula simplifies, opening up ZEROP, NOT, and AND, to the following four new formulas: Case 4. (IMPLIES (EQUAL I 0) (EQUAL (LESSP (QUOTIENT I J) I) F)). This again simplifies, opening up the functions LESSP, EQUAL, and QUOTIENT, to: T. Case 3. (IMPLIES (NOT (NUMBERP I)) (EQUAL (LESSP (QUOTIENT I J) I) F)), which again simplifies, rewriting with QUOTIENT-OF-NON-NUMBER, and opening up the functions LESSP, EQUAL, and QUOTIENT, to: T. Case 2. (IMPLIES (EQUAL J 1) (EQUAL (LESSP (QUOTIENT I J) I) F)). This again simplifies, appealing to the lemma QUOTIENT-1-ARG2, to two new conjectures: Case 2.2. (IMPLIES (NOT (NUMBERP I)) (NOT (LESSP 0 I))), which again simplifies, unfolding the definition of LESSP, to: T. Case 2.1. (IMPLIES (NUMBERP I) (NOT (LESSP I I))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL J 1))) (EQUAL (LESSP (QUOTIENT I J) I) T)), which again simplifies, trivially, to: (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL J 1))) (LESSP (QUOTIENT I J) I)). Applying the lemma REMAINDER-QUOTIENT-ELIM, replace I by (PLUS Z (TIMES J X)) to eliminate (QUOTIENT I J) and (REMAINDER I J). We employ LESSP-REMAINDER, the type restriction lemma noted when QUOTIENT was introduced, and the type restriction lemma noted when REMAINDER was introduced to restrict the new variables. We thus obtain the following three new formulas: Case 1.3. (IMPLIES (AND (EQUAL J 0) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL J 1))) (LESSP (QUOTIENT I J) I)). This further simplifies, applying QUOTIENT-ZERO, and opening up the definitions of EQUAL, ZEROP, and LESSP, to: T. Case 1.2. (IMPLIES (AND (NOT (NUMBERP J)) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL J 1))) (LESSP (QUOTIENT I J) I)). However this further simplifies, applying QUOTIENT-ZERO, and expanding ZEROP, EQUAL, and LESSP, to: T. Case 1.1. (IMPLIES (AND (NUMBERP X) (NUMBERP Z) (EQUAL (LESSP Z J) (NOT (ZEROP J))) (NUMBERP J) (NOT (EQUAL J 0)) (NOT (EQUAL (PLUS Z (TIMES J X)) 0)) (NOT (EQUAL J 1))) (LESSP X (PLUS Z (TIMES J X)))). This further simplifies, applying EQUAL-TIMES-0 and EQUAL-PLUS-0, and opening up ZEROP and NOT, to the following two new conjectures: Case 1.1.2. (IMPLIES (AND (NUMBERP X) (NUMBERP Z) (LESSP Z J) (NUMBERP J) (NOT (EQUAL J 0)) (NOT (EQUAL Z 0)) (NOT (EQUAL J 1))) (LESSP X (PLUS Z (TIMES J X)))), which we would usually push and work on later by induction. But if we must use induction to prove the input conjecture, we prefer to induct on the original formulation of the problem. Thus we will disregard all that we have previously done, give the name *1 to the original input, and work on it. So now let us consider: (EQUAL (LESSP (QUOTIENT I J) I) (AND (NOT (ZEROP I)) (NOT (EQUAL J 1)))), which we named *1 above. We will appeal to induction. The recursive terms in the conjecture suggest two inductions, both of which are unflawed. So we will choose the one suggested by the largest number of nonprimitive recursive functions. We will induct according to the following scheme: (AND (IMPLIES (ZEROP J) (p I J)) (IMPLIES (AND (NOT (ZEROP J)) (LESSP I J)) (p I J)) (IMPLIES (AND (NOT (ZEROP J)) (NOT (LESSP I J)) (p (DIFFERENCE I J) J)) (p I J))). Linear arithmetic, the lemmas COUNT-NUMBERP and COUNT-NOT-LESSP, and the definition of ZEROP can be used to prove that the measure (COUNT I) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates three new goals: Case 3. (IMPLIES (ZEROP J) (EQUAL (LESSP (QUOTIENT I J) I) (AND (NOT (ZEROP I)) (NOT (EQUAL J 1))))), which simplifies, applying the lemma QUOTIENT-ZERO, and unfolding the definitions of ZEROP, EQUAL, LESSP, NOT, and AND, to four new formulas: Case 3.4. (IMPLIES (AND (EQUAL J 0) (NOT (EQUAL I 0)) (NOT (NUMBERP I))) (EQUAL (NUMBERP I) F)), which again simplifies, trivially, to: T. Case 3.3. (IMPLIES (AND (EQUAL J 0) (NOT (EQUAL I 0)) (NUMBERP I)) (EQUAL (NUMBERP I) T)). This again simplifies, clearly, to: T. Case 3.2. (IMPLIES (AND (NOT (NUMBERP J)) (NOT (EQUAL I 0)) (NOT (NUMBERP I))) (EQUAL (NUMBERP I) F)). This again simplifies, obviously, to: T. Case 3.1. (IMPLIES (AND (NOT (NUMBERP J)) (NOT (EQUAL I 0)) (NUMBERP I)) (EQUAL (NUMBERP I) T)). This again simplifies, trivially, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP J)) (LESSP I J)) (EQUAL (LESSP (QUOTIENT I J) I) (AND (NOT (ZEROP I)) (NOT (EQUAL J 1))))). This simplifies, appealing to the lemma QUOTIENT-LESSP-ARG1, and expanding the functions ZEROP, EQUAL, LESSP, NOT, and AND, to the following three new goals: Case 2.3. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (LESSP I J) (NOT (EQUAL I 0)) (EQUAL J 1)) (EQUAL (NUMBERP I) F)). This again simplifies, using linear arithmetic, to: (IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL 1 0)) (NUMBERP 1) (LESSP I 1) (NOT (EQUAL I 0))) (EQUAL (NUMBERP I) F)). This again simplifies, trivially, to: T. Case 2.2. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (LESSP I J) (NOT (EQUAL I 0)) (NOT (NUMBERP I))) (EQUAL (NUMBERP I) F)). This again simplifies, trivially, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (LESSP I J) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL J 1))) (EQUAL (NUMBERP I) T)). This again simplifies, clearly, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP J)) (NOT (LESSP I J)) (EQUAL (LESSP (QUOTIENT (DIFFERENCE I J) J) (DIFFERENCE I J)) (AND (NOT (ZEROP (DIFFERENCE I J))) (NOT (EQUAL J 1))))) (EQUAL (LESSP (QUOTIENT I J) I) (AND (NOT (ZEROP I)) (NOT (EQUAL J 1))))). This simplifies, applying EQUAL-DIFFERENCE-0, QUOTIENT-1-ARG2, and SUB1-ADD1, and opening up ZEROP, NOT, AND, EQUAL, QUOTIENT, and LESSP, to five new conjectures: Case 1.5. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (NOT (LESSP I J)) (EQUAL J 1) (EQUAL (LESSP (QUOTIENT (DIFFERENCE I J) J) (DIFFERENCE I J)) F) (NOT (NUMBERP I))) (NOT (LESSP 0 I))), which again simplifies, expanding the definitions of EQUAL, NUMBERP, and LESSP, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (NOT (LESSP I J)) (EQUAL J 1) (EQUAL (LESSP (QUOTIENT (DIFFERENCE I J) J) (DIFFERENCE I J)) F) (NUMBERP I)) (NOT (LESSP I I))), which again simplifies, using linear arithmetic, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (NOT (LESSP I J)) (NOT (LESSP J I)) (EQUAL (LESSP (QUOTIENT (DIFFERENCE I J) J) (DIFFERENCE I J)) F) (NOT (EQUAL I 0)) (NUMBERP I) (EQUAL J 1)) (EQUAL (LESSP (QUOTIENT (DIFFERENCE I J) J) (SUB1 I)) F)), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (NOT (EQUAL 1 0)) (NUMBERP 1) (NOT (LESSP 1 1)) (NOT (LESSP 1 1)) (EQUAL (LESSP (QUOTIENT (DIFFERENCE 1 1) 1) (DIFFERENCE 1 1)) F) (NOT (EQUAL 1 0)) (NUMBERP 1)) (EQUAL (LESSP (QUOTIENT (DIFFERENCE 1 1) 1) (SUB1 1)) F)). However this again simplifies, expanding EQUAL, NUMBERP, LESSP, DIFFERENCE, QUOTIENT, and SUB1, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (NOT (LESSP I J)) (NOT (LESSP J I)) (EQUAL (LESSP (QUOTIENT (DIFFERENCE I J) J) (DIFFERENCE I J)) F) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL J 1))) (EQUAL (LESSP (QUOTIENT (DIFFERENCE I J) J) (SUB1 I)) T)), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I) (NOT (LESSP I I)) (NOT (LESSP I I)) (EQUAL (LESSP (QUOTIENT (DIFFERENCE I I) I) (DIFFERENCE I I)) F) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL I 1))) (EQUAL (LESSP (QUOTIENT (DIFFERENCE I I) I) (SUB1 I)) T)). But this again simplifies, applying the lemmas DIFFERENCE-X-X, QUOTIENT-LESSP-ARG1, and EQUAL-SUB1-0, and unfolding the functions LESSP and EQUAL, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (NOT (LESSP I J)) (LESSP J I) (NOT (EQUAL J 1)) (EQUAL (LESSP (QUOTIENT (DIFFERENCE I J) J) (DIFFERENCE I J)) T) (NOT (EQUAL I 0)) (NUMBERP I)) (EQUAL (LESSP (QUOTIENT (DIFFERENCE I J) J) (SUB1 I)) T)), which again simplifies, obviously, to: (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (NOT (LESSP I J)) (LESSP J I) (NOT (EQUAL J 1)) (LESSP (QUOTIENT (DIFFERENCE I J) J) (DIFFERENCE I J)) (NOT (EQUAL I 0)) (NUMBERP I)) (LESSP (QUOTIENT (DIFFERENCE I J) J) (SUB1 I))), which again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] LESSP-QUOTIENT (DEFN CANCEL-QUOTIENT-TIMES (X) (IF (AND (EQUAL (CAR X) 'QUOTIENT) (EQUAL (CAADR X) 'TIMES) (EQUAL (CAADDR X) 'TIMES)) (IF (LISTP (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) (LIST 'IF (AND-NOT-ZEROP-TREE (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) (LIST 'QUOTIENT (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))) (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADDR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))))) '(ZERO)) X) X)) Observe that: (OR (LISTP (CANCEL-QUOTIENT-TIMES X)) (EQUAL (CANCEL-QUOTIENT-TIMES X) X)) is a theorem. [ 0.0 0.0 0.0 ] CANCEL-QUOTIENT-TIMES (PROVE-LEMMA ZEROP-MAKES-QUOTIENT-ZERO-BRIDGE (REWRITE) (IMPLIES (AND (EQUAL (CAR X) 'TIMES) (EQUAL (CAR Y) 'TIMES) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE (BAGINT (TIMES-FRINGE X) (TIMES-FRINGE Y))) A))) (EQUAL (QUOTIENT (TIMES (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)) (TIMES (EVAL$ T (CADR Y) A) (EVAL$ T (CADDR Y) A))) 0)) ((USE (ZEROP-MAKES-TIMES-TREE-ZERO (X (BAGINT (TIMES-FRINGE X) (TIMES-FRINGE Y))) (Y (TIMES-FRINGE X))) (ZEROP-MAKES-TIMES-TREE-ZERO (X (BAGINT (TIMES-FRINGE X) (TIMES-FRINGE Y))) (Y (TIMES-FRINGE Y)))) (ENABLE AND-NOT-ZEROP-TREE BAGINT DELETE EQUAL-QUOTIENT-0 EQUAL-TIMES-0 EVAL$-TIMES SUBBAGP-BAGINT1 SUBBAGP-BAGINT2 TIMES-FRINGE TIMES-TREE TIMES-TREE-APPEND TIMES-TREE-OF-TIMES-FRINGE ZEROP-MAKES-LESSP-FALSE-BRIDGE))) This formula can be simplified, using the abbreviations EQUAL-TIMES-0, EQUAL-QUOTIENT-0, NOT, IMPLIES, and AND, to: (IMPLIES (AND (IMPLIES (AND (NOT (EVAL$ T (AND-NOT-ZEROP-TREE (BAGINT (TIMES-FRINGE X) (TIMES-FRINGE Y))) A)) (SUBBAGP (BAGINT (TIMES-FRINGE X) (TIMES-FRINGE Y)) (TIMES-FRINGE X))) (EQUAL (EVAL$ T (TIMES-TREE (TIMES-FRINGE X)) A) 0)) (IMPLIES (AND (NOT (EVAL$ T (AND-NOT-ZEROP-TREE (BAGINT (TIMES-FRINGE X) (TIMES-FRINGE Y))) A)) (SUBBAGP (BAGINT (TIMES-FRINGE X) (TIMES-FRINGE Y)) (TIMES-FRINGE Y))) (EQUAL (EVAL$ T (TIMES-TREE (TIMES-FRINGE Y)) A) 0)) (EQUAL (CAR X) 'TIMES) (EQUAL (CAR Y) 'TIMES) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE (BAGINT (TIMES-FRINGE X) (TIMES-FRINGE Y))) A)) (NOT (EQUAL (EVAL$ T (CADR Y) A) 0)) (NUMBERP (EVAL$ T (CADR Y) A)) (NOT (EQUAL (EVAL$ T (CADDR Y) A) 0)) (NUMBERP (EVAL$ T (CADDR Y) A)) (NUMBERP (TIMES (EVAL$ T (CADR Y) A) (EVAL$ T (CADDR Y) A)))) (LESSP (TIMES (EVAL$ T (CADR X) A) (EVAL$ T (CADDR X) A)) (TIMES (EVAL$ T (CADR Y) A) (EVAL$ T (CADDR Y) A)))), which simplifies, rewriting with SUBBAGP-BAGINT1, CDR-CONS, MEMBER-NON-LIST, CAR-CONS, REWRITE-EVAL$, CDR-NLISTP, EVAL$-TIMES, CAR-NLISTP, SUBBAGP-BAGINT2, TIMES-TREE-OF-TIMES-FRINGE, TIMES-TREE-APPEND, EQUAL-TIMES-0, and ZEROP-MAKES-LESSP-FALSE-BRIDGE, and expanding the definitions of EQUAL, TIMES-FRINGE, NOT, AND, IMPLIES, BAGINT, DELETE, MEMBER, LISTP, TIMES-TREE, CAR, LITATOM, EVAL$, CDR, TIMES, and FIX, to: (IMPLIES (AND (LISTP X) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) A) 0) (LISTP Y) (EQUAL (EVAL$ T (TIMES-TREE (APPEND (TIMES-FRINGE (CADR Y)) (TIMES-FRINGE (CADDR Y)))) A) 0) (EQUAL (CAR X) 'TIMES) (EQUAL (CAR Y) 'TIMES) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE (BAGINT (APPEND (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))) (APPEND (TIMES-FRINGE (CADR Y)) (TIMES-FRINGE (CADDR Y))))) A)) (NOT (EQUAL (EVAL$ T (CADR Y) A) 0)) (NUMBERP (EVAL$ T (CADR Y) A)) (NOT (EQUAL (EVAL$ T (CADDR Y) A) 0))) (NOT (NUMBERP (EVAL$ T (CADDR Y) A)))), which again simplifies, applying the lemmas TIMES-TREE-OF-TIMES-FRINGE, TIMES-TREE-APPEND, and EQUAL-TIMES-0, to: T. Q.E.D. [ 0.0 0.7 0.0 ] ZEROP-MAKES-QUOTIENT-ZERO-BRIDGE (DISABLE ZEROP-MAKES-QUOTIENT-ZERO-BRIDGE) [ 0.0 0.0 0.0 ] ZEROP-MAKES-QUOTIENT-ZERO-BRIDGE-OFF (PROVE-LEMMA EVAL$-QUOTIENT-TIMES-TREE-BAGDIFF (REWRITE) (IMPLIES (AND (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (EQUAL (QUOTIENT (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (QUOTIENT (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))) ((ENABLE AND-NOT-ZEROP-TREE BAGDIFF EQUAL-QUOTIENT-0 EVAL$-TIMES-MEMBER NUMBERP-EVAL$-TIMES-TREE QUOTIENT-TIMES-TIMES SUBBAGP SUBBAGP-CDR1 SUBBAGP-CDR2 TIMES-TREE ZEROP-MAKES-TIMES-TREE-ZERO))) Give the conjecture the name *1. We will try to prove it by induction. The recursive terms in the conjecture suggest seven inductions. They merge into three likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (p (DELETE (CAR X) Y) (CDR X) A (DELETE (CAR X) Z))) (p Y X A Z)) (IMPLIES (AND (LISTP X) (NOT (MEMBER (CAR X) Y))) (p Y X A Z)) (IMPLIES (NOT (LISTP X)) (p Y X A Z))). Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instances chosen for Z and Y. The above induction scheme produces six new goals: Case 6. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (SUBBAGP (CDR X) (DELETE (CAR X) Y))) (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (EQUAL (QUOTIENT (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (QUOTIENT (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))), which simplifies, opening up SUBBAGP, to: T. Case 5. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (SUBBAGP (CDR X) (DELETE (CAR X) Z))) (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (EQUAL (QUOTIENT (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (QUOTIENT (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))), which simplifies, unfolding the definition of SUBBAGP, to: T. Case 4. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE (CDR X)) A)) (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (EQUAL (QUOTIENT (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (QUOTIENT (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))), which simplifies, rewriting with ZEROP-MAKES-TIMES-TREE-ZERO, SUBBAGP-CDR1, NUMBERP-EVAL$-TIMES-TREE, and EQUAL-QUOTIENT-0, and unfolding SUBBAGP, AND-NOT-ZEROP-TREE, BAGDIFF, QUOTIENT, and EQUAL, to: (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE (CDR X)) A)) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (MEMBER (CAR X) Z) (SUBBAGP (CDR X) (DELETE (CAR X) Z)) (LISTP (CDR X)) (EVAL$ T (LIST 'AND (LIST 'NOT (LIST 'ZEROP (CAR X))) (AND-NOT-ZEROP-TREE (CDR X))) A) (NOT (EQUAL (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A) 0))) (LESSP (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A))), which again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and opening up the definitions of ZEROP, NOT, and AND, to: T. Case 3. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (QUOTIENT (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A)) (QUOTIENT (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A))) (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (EQUAL (QUOTIENT (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (QUOTIENT (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))). This simplifies, applying EVAL$-TIMES-MEMBER and QUOTIENT-TIMES-TIMES, and opening up the functions SUBBAGP, AND-NOT-ZEROP-TREE, and BAGDIFF, to four new conjectures: Case 3.4. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (QUOTIENT (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A)) (QUOTIENT (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (MEMBER (CAR X) Z) (SUBBAGP (CDR X) (DELETE (CAR X) Z)) (NOT (LISTP (CDR X))) (EVAL$ T (LIST 'NOT (LIST 'ZEROP (CAR X))) A) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL (QUOTIENT (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A)) 0)), which again simplifies, rewriting with REWRITE-EVAL$ and CAR-CONS, and opening up the functions ZEROP and NOT, to: T. Case 3.3. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (QUOTIENT (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A)) (QUOTIENT (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (MEMBER (CAR X) Z) (SUBBAGP (CDR X) (DELETE (CAR X) Z)) (NOT (LISTP (CDR X))) (EVAL$ T (LIST 'NOT (LIST 'ZEROP (CAR X))) A) (EQUAL (EVAL$ T (CAR X) A) 0)) (EQUAL (QUOTIENT (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A)) 0)). However this again simplifies, applying REWRITE-EVAL$ and CAR-CONS, and opening up the definitions of ZEROP and NOT, to: T. Case 3.2. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (QUOTIENT (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A)) (QUOTIENT (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (MEMBER (CAR X) Z) (SUBBAGP (CDR X) (DELETE (CAR X) Z)) (LISTP (CDR X)) (EVAL$ T (LIST 'AND (LIST 'NOT (LIST 'ZEROP (CAR X))) (AND-NOT-ZEROP-TREE (CDR X))) A) (NOT (NUMBERP (EVAL$ T (CAR X) A)))) (EQUAL (QUOTIENT (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A)) 0)). This again simplifies, rewriting with the lemmas REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and expanding the functions ZEROP, NOT, and AND, to: T. Case 3.1. (IMPLIES (AND (LISTP X) (MEMBER (CAR X) Y) (EQUAL (QUOTIENT (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Y) (CDR X))) A) (EVAL$ T (TIMES-TREE (BAGDIFF (DELETE (CAR X) Z) (CDR X))) A)) (QUOTIENT (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A))) (SUBBAGP (CDR X) (DELETE (CAR X) Y)) (MEMBER (CAR X) Z) (SUBBAGP (CDR X) (DELETE (CAR X) Z)) (LISTP (CDR X)) (EVAL$ T (LIST 'AND (LIST 'NOT (LIST 'ZEROP (CAR X))) (AND-NOT-ZEROP-TREE (CDR X))) A) (EQUAL (EVAL$ T (CAR X) A) 0)) (EQUAL (QUOTIENT (EVAL$ T (TIMES-TREE (DELETE (CAR X) Y)) A) (EVAL$ T (TIMES-TREE (DELETE (CAR X) Z)) A)) 0)), which again simplifies, rewriting with REWRITE-EVAL$, CAR-CONS, and CDR-CONS, and expanding ZEROP, NOT, and AND, to: T. Case 2. (IMPLIES (AND (LISTP X) (NOT (MEMBER (CAR X) Y)) (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (EQUAL (QUOTIENT (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (QUOTIENT (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))). This simplifies, opening up SUBBAGP, to: T. Case 1. (IMPLIES (AND (NOT (LISTP X)) (SUBBAGP X Y) (SUBBAGP X Z) (EVAL$ T (AND-NOT-ZEROP-TREE X) A)) (EQUAL (QUOTIENT (EVAL$ T (TIMES-TREE (BAGDIFF Y X)) A) (EVAL$ T (TIMES-TREE (BAGDIFF Z X)) A)) (QUOTIENT (EVAL$ T (TIMES-TREE Y) A) (EVAL$ T (TIMES-TREE Z) A)))). This simplifies, applying SUBBAGP-CDR2 and REWRITE-EVAL$, and expanding the functions SUBBAGP, AND-NOT-ZEROP-TREE, and BAGDIFF, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.4 0.0 ] EVAL$-QUOTIENT-TIMES-TREE-BAGDIFF (DISABLE EVAL$-QUOTIENT-TIMES-TREE-BAGDIFF) [ 0.0 0.0 0.0 ] EVAL$-QUOTIENT-TIMES-TREE-BAGDIFF-OFF (PROVE-LEMMA CORRECTNESS-OF-CANCEL-QUOTIENT-TIMES ((META QUOTIENT)) (EQUAL (EVAL$ T X A) (EVAL$ T (CANCEL-QUOTIENT-TIMES X) A)) ((ENABLE CANCEL-QUOTIENT-TIMES EVAL$-QUOTIENT-TIMES-TREE-BAGDIFF EVAL$-QUOTIENT EVAL$-TIMES SUBBAGP-BAGINT1 SUBBAGP-BAGINT2 TIMES-TREE-OF-TIMES-FRINGE ZEROP-MAKES-QUOTIENT-ZERO-BRIDGE))) This formula simplifies, opening up the function CANCEL-QUOTIENT-TIMES, to: (IMPLIES (AND (EQUAL (CAR X) 'QUOTIENT) (EQUAL (CAADR X) 'TIMES) (EQUAL (CAADDR X) 'TIMES) (LISTP (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))) (EQUAL (EVAL$ T X A) (EVAL$ T (CONS 'IF (CONS (AND-NOT-ZEROP-TREE (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) (CONS (LIST 'QUOTIENT (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X))))) (TIMES-TREE (BAGDIFF (TIMES-FRINGE (CADDR X)) (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))))) '((ZERO))))) A))), which again simplifies, rewriting with EVAL$-TIMES, EVAL$-QUOTIENT, REWRITE-EVAL$, CAR-CONS, CDR-CONS, SUBBAGP-BAGINT2, SUBBAGP-BAGINT1, TIMES-TREE-OF-TIMES-FRINGE, and EVAL$-QUOTIENT-TIMES-TREE-BAGDIFF, and opening up CAR, to the new formula: (IMPLIES (AND (EQUAL (CAR X) 'QUOTIENT) (EQUAL (CAADR X) 'TIMES) (EQUAL (CAADDR X) 'TIMES) (LISTP (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) (NOT (EVAL$ T (AND-NOT-ZEROP-TREE (BAGINT (TIMES-FRINGE (CADR X)) (TIMES-FRINGE (CADDR X)))) A))) (EQUAL (QUOTIENT (TIMES (EVAL$ T (CADADR X) A) (EVAL$ T (CADDADR X) A)) (TIMES (EVAL$ T (CADADDR X) A) (EVAL$ T (CADDADDR X) A))) 0)), which again simplifies, applying ZEROP-MAKES-QUOTIENT-ZERO-BRIDGE, and unfolding the definition of EQUAL, to: T. Q.E.D. [ 0.0 0.8 0.0 ] CORRECTNESS-OF-CANCEL-QUOTIENT-TIMES (DEFN EXP (I J) (IF (ZEROP J) 1 (TIMES I (EXP I (SUB1 J))))) Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP inform us that the measure (COUNT J) decreases according to the well-founded relation LESSP in each recursive call. Hence, EXP is accepted under the definitional principle. From the definition we can conclude that (NUMBERP (EXP I J)) is a theorem. [ 0.0 0.0 0.0 ] EXP (DEFN LOG (BASE N) (IF (LESSP BASE 2) 0 (IF (ZEROP N) 0 (ADD1 (LOG BASE (QUOTIENT N BASE)))))) Linear arithmetic, the lemmas LESSP-QUOTIENT and COUNT-NUMBERP, and the definition of ZEROP inform us that the measure (COUNT N) decreases according to the well-founded relation LESSP in each recursive call. Hence, LOG is accepted under the principle of definition. Note that (NUMBERP (LOG BASE N)) is a theorem. [ 0.0 0.0 0.0 ] LOG (DEFN GCD (X Y) (IF (ZEROP X) (FIX Y) (IF (ZEROP Y) X (IF (LESSP X Y) (GCD X (DIFFERENCE Y X)) (GCD (DIFFERENCE X Y) Y)))) ((ORD-LESSP (CONS (ADD1 X) (FIX Y))))) Linear arithmetic, the lemmas CAR-CONS, CDR-CONS, SUB1-ADD1, and ADD1-EQUAL, and the definitions of ORDINALP, FIX, LESSP, ORD-LESSP, and ZEROP establish that the measure (CONS (ADD1 X) (FIX Y)) decreases according to the well-founded relation ORD-LESSP in each recursive call. Hence, GCD is accepted under the principle of definition. From the definition we can conclude that (NUMBERP (GCD X Y)) is a theorem. [ 0.0 0.0 0.0 ] GCD (PROVE-LEMMA REMAINDER-EXP (REWRITE) (IMPLIES (NOT (ZEROP K)) (EQUAL (REMAINDER (EXP N K) N) 0)) ((ENABLE EXP REMAINDER-TIMES1-INSTANCE))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, and IMPLIES, to the goal: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K)) (EQUAL (REMAINDER (EXP N K) N) 0)). Name the above subgoal *1. We will appeal to induction. There is only one plausible induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP K) (p N K)) (IMPLIES (AND (NOT (ZEROP K)) (p N (SUB1 K))) (p N K))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP can be used to prove that the measure (COUNT K) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme produces three new formulas: Case 3. (IMPLIES (AND (ZEROP K) (NOT (EQUAL K 0)) (NUMBERP K)) (EQUAL (REMAINDER (EXP N K) N) 0)), which simplifies, opening up ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP K)) (EQUAL (SUB1 K) 0) (NOT (EQUAL K 0)) (NUMBERP K)) (EQUAL (REMAINDER (EXP N K) N) 0)), which simplifies, applying the lemmas EQUAL-SUB1-0, TIMES-1-ARG1, and COMMUTATIVITY-OF-TIMES, and opening up the definitions of ZEROP, EQUAL, NUMBERP, SUB1, and EXP, to two new conjectures: Case 2.2. (IMPLIES (AND (EQUAL K 1) (NOT (NUMBERP N))) (EQUAL (REMAINDER 0 N) 0)), which again simplifies, rewriting with REMAINDER-ZERO, and opening up the functions ZEROP, NUMBERP, and EQUAL, to: T. Case 2.1. (IMPLIES (AND (EQUAL K 1) (NUMBERP N)) (EQUAL (REMAINDER N N) 0)). But this again simplifies, rewriting with REMAINDER-X-X, and opening up the function EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP K)) (EQUAL (REMAINDER (EXP N (SUB1 K)) N) 0) (NOT (EQUAL K 0)) (NUMBERP K)) (EQUAL (REMAINDER (EXP N K) N) 0)). This simplifies, rewriting with REMAINDER-TIMES1-INSTANCE, and expanding the functions ZEROP, EXP, and EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-EXP (DEFN DOUBLE-NUMBER-INDUCTION (I J) (IF (ZEROP I) 0 (IF (ZEROP J) 0 (DOUBLE-NUMBER-INDUCTION (SUB1 I) (SUB1 J))))) Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT I) decreases according to the well-founded relation LESSP in each recursive call. Hence, DOUBLE-NUMBER-INDUCTION is accepted under the principle of definition. The definition of DOUBLE-NUMBER-INDUCTION can be justified in another way. Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP can be used to establish that the measure (COUNT J) decreases according to the well-founded relation LESSP in each recursive call. Note that: (NUMBERP (DOUBLE-NUMBER-INDUCTION I J)) is a theorem. [ 0.0 0.0 0.0 ] DOUBLE-NUMBER-INDUCTION (PROVE-LEMMA REMAINDER-EXP-EXP (REWRITE) (IMPLIES (LEQ I J) (EQUAL (REMAINDER (EXP A J) (EXP A I)) 0)) ((ENABLE EXP REMAINDER-1-ARG2 REMAINDER-TIMES2-INSTANCE) (INDUCT (DOUBLE-NUMBER-INDUCTION I J)))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to three new formulas: Case 3. (IMPLIES (AND (ZEROP I) (NOT (LESSP J I))) (EQUAL (REMAINDER (EXP A J) (EXP A I)) 0)), which simplifies, rewriting with REMAINDER-1-ARG2, and opening up the definitions of ZEROP, EQUAL, LESSP, and EXP, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I) (ZEROP J) (NOT (LESSP J I))) (EQUAL (REMAINDER (EXP A J) (EXP A I)) 0)). This simplifies, expanding ZEROP, EQUAL, and LESSP, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL J 0)) (NUMBERP J) (IMPLIES (IF (LESSP (SUB1 J) (SUB1 I)) F T) (EQUAL (REMAINDER (EXP A (SUB1 J)) (EXP A (SUB1 I))) 0)) (NOT (LESSP J I))) (EQUAL (REMAINDER (EXP A J) (EXP A I)) 0)). This simplifies, rewriting with COMMUTATIVITY-OF-TIMES and REMAINDER-TIMES2-INSTANCE, and opening up IMPLIES, LESSP, EXP, EQUAL, and TIMES, to: T. Q.E.D. [ 0.0 0.1 0.0 ] REMAINDER-EXP-EXP (PROVE-LEMMA QUOTIENT-EXP (REWRITE) (IMPLIES (NOT (ZEROP K)) (EQUAL (QUOTIENT (EXP N K) N) (IF (ZEROP N) 0 (EXP N (SUB1 K))))) ((ENABLE EXP QUOTIENT-TIMES-INSTANCE))) This formula can be simplified, using the abbreviations ZEROP, NOT, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K)) (EQUAL (QUOTIENT (EXP N K) N) (IF (ZEROP N) 0 (EXP N (SUB1 K))))), which simplifies, rewriting with QUOTIENT-TIMES-INSTANCE, and expanding the definitions of EXP and ZEROP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-EXP (PROVE-LEMMA EXP-ZERO (REWRITE) (IMPLIES (ZEROP K) (EQUAL (EXP N K) 1)) ((ENABLE EXP))) This conjecture simplifies, expanding ZEROP, EQUAL, and EXP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EXP-ZERO (PROVE-LEMMA EXP-ADD1 (REWRITE) (EQUAL (EXP N (ADD1 K)) (TIMES N (EXP N K))) ((ENABLE EXP))) This formula simplifies, applying SUB1-ADD1 and CORRECTNESS-OF-CANCEL-EQUAL-TIMES, and opening up the functions EXP, ZEROP, FIX, and OR, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (NUMBERP K))) (EQUAL (EXP N 0) (EXP N K))), which again simplifies, appealing to the lemma EXP-ZERO, and expanding ZEROP and EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EXP-ADD1 (PROVE-LEMMA EXP-PLUS (REWRITE) (EQUAL (EXP I (PLUS J K)) (TIMES (EXP I J) (EXP I K))) ((ENABLE EXP ASSOCIATIVITY-OF-TIMES COMMUTATIVITY-OF-TIMES))) Call the conjecture *1. We will try to prove it by induction. There are three plausible inductions. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (ZEROP J) (p I J K)) (IMPLIES (AND (NOT (ZEROP J)) (p I (SUB1 J) K)) (p I J K))). Linear arithmetic, the lemmas SUB1-LESSEQP and SUB1-LESSP, and the definition of ZEROP inform us that the measure (COUNT J) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates two new goals: Case 2. (IMPLIES (ZEROP J) (EQUAL (EXP I (PLUS J K)) (TIMES (EXP I J) (EXP I K)))), which simplifies, appealing to the lemmas EXP-ZERO and TIMES-1-ARG1, and unfolding ZEROP, EQUAL, and PLUS, to two new formulas: Case 2.2. (IMPLIES (AND (EQUAL J 0) (NOT (NUMBERP K))) (EQUAL (EXP I 0) (EXP I K))), which again simplifies, applying EXP-ZERO, and opening up the functions ZEROP and EQUAL, to: T. Case 2.1. (IMPLIES (AND (NOT (NUMBERP J)) (NOT (NUMBERP K))) (EQUAL (EXP I 0) (EXP I K))). But this again simplifies, applying the lemma EXP-ZERO, and expanding ZEROP and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP J)) (EQUAL (EXP I (PLUS (SUB1 J) K)) (TIMES (EXP I (SUB1 J)) (EXP I K)))) (EQUAL (EXP I (PLUS J K)) (TIMES (EXP I J) (EXP I K)))), which simplifies, applying the lemmas COMMUTATIVITY-OF-TIMES, EXP-ADD1, and ASSOCIATIVITY-OF-TIMES, and opening up the functions ZEROP, PLUS, and EXP, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] EXP-PLUS (PROVE-LEMMA EXP-0-ARG1 (REWRITE) (EQUAL (EXP 0 K) (IF (ZEROP K) 1 0)) ((ENABLE EXP))) This simplifies, opening up the functions TIMES, EQUAL, EXP, and ZEROP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EXP-0-ARG1 (PROVE-LEMMA EXP-1-ARG1 (REWRITE) (EQUAL (EXP 1 K) 1) ((ENABLE EXP))) Call the conjecture *1. We will try to prove it by induction. There is only one suggested induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP K) (p K)) (IMPLIES (AND (NOT (ZEROP K)) (p (SUB1 K))) (p K))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP can be used to establish that the measure (COUNT K) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates the following two new formulas: Case 2. (IMPLIES (ZEROP K) (EQUAL (EXP 1 K) 1)). This simplifies, applying EXP-ZERO, and expanding the functions ZEROP, EXP, and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP K)) (EQUAL (EXP 1 (SUB1 K)) 1)) (EQUAL (EXP 1 K) 1)), which simplifies, opening up the functions ZEROP, EXP, TIMES, and EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] EXP-1-ARG1 (PROVE-LEMMA EXP-0-ARG2 (REWRITE) (EQUAL (EXP N 0) 1) ((ENABLE EXP))) This simplifies, rewriting with EXP-ZERO, and unfolding ZEROP and EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EXP-0-ARG2 (PROVE-LEMMA EXP-TIMES (REWRITE) (EQUAL (EXP (TIMES I J) K) (TIMES (EXP I K) (EXP J K))) ((ENABLE EXP ASSOCIATIVITY-OF-TIMES COMMUTATIVITY2-OF-TIMES EXP-ZERO))) Call the conjecture *1. We will try to prove it by induction. There are four plausible inductions. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (ZEROP K) (p I J K)) (IMPLIES (AND (NOT (ZEROP K)) (p I J (SUB1 K))) (p I J K))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP inform us that the measure (COUNT K) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates two new goals: Case 2. (IMPLIES (ZEROP K) (EQUAL (EXP (TIMES I J) K) (TIMES (EXP I K) (EXP J K)))), which simplifies, appealing to the lemmas EXP-0-ARG2 and EXP-ZERO, and unfolding ZEROP, TIMES, and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP K)) (EQUAL (EXP (TIMES I J) (SUB1 K)) (TIMES (EXP I (SUB1 K)) (EXP J (SUB1 K))))) (EQUAL (EXP (TIMES I J) K) (TIMES (EXP I K) (EXP J K)))), which simplifies, rewriting with the lemmas ASSOCIATIVITY-OF-TIMES and COMMUTATIVITY2-OF-TIMES, and expanding the functions ZEROP and EXP, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] EXP-TIMES (PROVE-LEMMA EXP-EXP (REWRITE) (EQUAL (EXP (EXP I J) K) (EXP I (TIMES J K))) ((ENABLE EXP EXP-ZERO EXP-1-ARG1 EXP-PLUS EXP-TIMES))) Call the conjecture *1. Perhaps we can prove it by induction. Three inductions are suggested by terms in the conjecture. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (ZEROP J) (p I J K)) (IMPLIES (AND (NOT (ZEROP J)) (p I (SUB1 J) K)) (p I J K))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP can be used to prove that the measure (COUNT J) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme leads to two new goals: Case 2. (IMPLIES (ZEROP J) (EQUAL (EXP (EXP I J) K) (EXP I (TIMES J K)))), which simplifies, applying the lemmas EXP-0-ARG2, EXP-1-ARG1, and EXP-ZERO, and opening up the definitions of ZEROP, EQUAL, and TIMES, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP J)) (EQUAL (EXP (EXP I (SUB1 J)) K) (EXP I (TIMES (SUB1 J) K)))) (EQUAL (EXP (EXP I J) K) (EXP I (TIMES J K)))), which simplifies, rewriting with EXP-TIMES and EXP-PLUS, and opening up the functions ZEROP, EXP, and TIMES, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] EXP-EXP (PROVE-LEMMA EQUAL-EXP-0 (REWRITE) (EQUAL (EQUAL (EXP N K) 0) (AND (ZEROP N) (NOT (ZEROP K)))) ((ENABLE EXP EQUAL-TIMES-0) (INDUCT (EXP N K)))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to two new goals: Case 2. (IMPLIES (ZEROP K) (EQUAL (EQUAL (EXP N K) 0) (AND (ZEROP N) (NOT (ZEROP K))))), which simplifies, applying EXP-0-ARG2 and EXP-ZERO, and opening up the definitions of ZEROP, EQUAL, NOT, and AND, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (EQUAL (EXP N (SUB1 K)) 0) (AND (ZEROP N) (NOT (ZEROP (SUB1 K)))))) (EQUAL (EQUAL (EXP N K) 0) (AND (ZEROP N) (NOT (ZEROP K))))). This simplifies, applying EQUAL-SUB1-0, EXP-0-ARG1, COMMUTATIVITY-OF-TIMES, TIMES-ZERO, EQUAL-TIMES-0, EXP-0-ARG2, TIMES-1-ARG1, and EXP-ADD1, and expanding the functions ZEROP, NOT, AND, EQUAL, and EXP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EQUAL-EXP-0 (PROVE-LEMMA EQUAL-EXP-1 (REWRITE) (EQUAL (EQUAL (EXP N K) 1) (IF (ZEROP K) T (EQUAL N 1))) ((ENABLE EXP TIMES-ZERO TIMES-ADD1))) This simplifies, opening up the function ZEROP, to four new goals: Case 4. (IMPLIES (NOT (EQUAL (EXP N K) 1)) (NOT (EQUAL K 0))), which again simplifies, rewriting with EXP-0-ARG2, and unfolding the function EQUAL, to: T. Case 3. (IMPLIES (NOT (EQUAL (EXP N K) 1)) (NUMBERP K)). But this again simplifies, applying EXP-ZERO, and expanding the definitions of ZEROP and EQUAL, to: T. Case 2. (IMPLIES (NOT (EQUAL (EXP N K) 1)) (NOT (EQUAL N 1))). This again simplifies, rewriting with the lemma EXP-1-ARG1, and expanding the definition of EQUAL, to: T. Case 1. (IMPLIES (AND (EQUAL (EXP N K) 1) (NOT (EQUAL K 0)) (NUMBERP K)) (EQUAL (EQUAL N 1) T)), which again simplifies, obviously, to: (IMPLIES (AND (EQUAL (EXP N K) 1) (NOT (EQUAL K 0)) (NUMBERP K)) (EQUAL N 1)), which we will name *1. We will appeal to induction. There is only one plausible induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP K) (p N K)) (IMPLIES (AND (NOT (ZEROP K)) (p N (SUB1 K))) (p N K))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP can be used to prove that the measure (COUNT K) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates three new formulas: Case 3. (IMPLIES (AND (ZEROP K) (EQUAL (EXP N K) 1) (NOT (EQUAL K 0)) (NUMBERP K)) (EQUAL N 1)), which simplifies, expanding the definition of ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP K)) (NOT (EQUAL (EXP N (SUB1 K)) 1)) (EQUAL (EXP N K) 1) (NOT (EQUAL K 0)) (NUMBERP K)) (EQUAL N 1)), which simplifies, applying EQUAL-TIMES-1, and expanding the definitions of ZEROP and EXP, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP K)) (EQUAL (SUB1 K) 0) (EQUAL (EXP N K) 1) (NOT (EQUAL K 0)) (NUMBERP K)) (EQUAL N 1)). This simplifies, appealing to the lemmas EQUAL-SUB1-0, EXP-0-ARG2, TIMES-1-ARG1, COMMUTATIVITY-OF-TIMES, and EXP-ADD1, and opening up the definition of ZEROP, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] EQUAL-EXP-1 (PROVE-LEMMA EXP-DIFFERENCE (REWRITE) (IMPLIES (AND (LEQ C B) (NOT (ZEROP A))) (EQUAL (EXP A (DIFFERENCE B C)) (QUOTIENT (EXP A B) (EXP A C)))) ((ENABLE EXP))) This formula can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (NOT (LESSP B C)) (NOT (EQUAL A 0)) (NUMBERP A)) (EQUAL (EXP A (DIFFERENCE B C)) (QUOTIENT (EXP A B) (EXP A C)))). Applying the lemma DIFFERENCE-ELIM, replace B by (PLUS C X) to eliminate (DIFFERENCE B C). We rely upon the type restriction lemma noted when DIFFERENCE was introduced to restrict the new variable. We thus obtain the following two new formulas: Case 2. (IMPLIES (AND (NOT (NUMBERP B)) (NOT (LESSP B C)) (NOT (EQUAL A 0)) (NUMBERP A)) (EQUAL (EXP A (DIFFERENCE B C)) (QUOTIENT (EXP A B) (EXP A C)))). This simplifies, using linear arithmetic, rewriting with the lemmas DIFFERENCE-LEQ-ARG1, EXP-0-ARG2, and EXP-ZERO, and expanding the functions LESSP, ZEROP, QUOTIENT, and EQUAL, to: T. Case 1. (IMPLIES (AND (NUMBERP X) (NOT (LESSP (PLUS C X) C)) (NOT (EQUAL A 0)) (NUMBERP A)) (EQUAL (EXP A X) (QUOTIENT (EXP A (PLUS C X)) (EXP A C)))), which simplifies, applying the lemmas CORRECTNESS-OF-CANCEL-LESSP-PLUS, EXP-PLUS, EQUAL-EXP-0, and QUOTIENT-TIMES-INSTANCE, to: T. Q.E.D. [ 0.0 0.1 0.0 ] EXP-DIFFERENCE (PROVE-LEMMA EQUAL-LOG-0 (REWRITE) (EQUAL (EQUAL (LOG BASE N) 0) (OR (LESSP BASE 2) (ZEROP N))) ((ENABLE LOG) (INDUCT (LOG BASE N)))) This formula can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to the following three new conjectures: Case 3. (IMPLIES (LESSP BASE 2) (EQUAL (EQUAL (LOG BASE N) 0) (OR (LESSP BASE 2) (ZEROP N)))). This simplifies, expanding LOG, EQUAL, ZEROP, and OR, to: T. Case 2. (IMPLIES (AND (NOT (LESSP BASE 2)) (ZEROP N)) (EQUAL (EQUAL (LOG BASE N) 0) (OR (LESSP BASE 2) (ZEROP N)))). This simplifies, expanding the functions ZEROP, EQUAL, LOG, and OR, to: T. Case 1. (IMPLIES (AND (NOT (LESSP BASE 2)) (NOT (EQUAL N 0)) (NUMBERP N) (EQUAL (EQUAL (LOG BASE (QUOTIENT N BASE)) 0) (OR (LESSP BASE 2) (ZEROP (QUOTIENT N BASE))))) (EQUAL (EQUAL (LOG BASE N) 0) (OR (LESSP BASE 2) (ZEROP N)))). This simplifies, applying EQUAL-QUOTIENT-0 and QUOTIENT-LESSP-ARG1, and expanding the functions ZEROP, OR, LESSP, LOG, EQUAL, NUMBERP, and ADD1, to: T. Q.E.D. [ 0.0 0.3 0.0 ] EQUAL-LOG-0 (PROVE-LEMMA LOG-0 (REWRITE) (IMPLIES (ZEROP N) (EQUAL (LOG BASE N) 0)) ((ENABLE LOG))) This formula can be simplified, using the abbreviations EQUAL-LOG-0 and IMPLIES, to: (IMPLIES (AND (ZEROP N) (NOT (LESSP BASE 2)) (NOT (EQUAL N 0))) (NOT (NUMBERP N))), which simplifies, opening up the function ZEROP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LOG-0 (PROVE-LEMMA LOG-1 (REWRITE) (IMPLIES (LESSP 1 BASE) (EQUAL (LOG BASE 1) 1)) ((ENABLE LOG) (INDUCT (LOG BASE N)))) This conjecture can be simplified, using the abbreviations IMPLIES, NOT, OR, and AND, to two new goals: Case 2. (IMPLIES (AND (LESSP BASE 2) (LESSP 1 BASE)) (EQUAL (LOG BASE 1) 1)), which simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (LESSP BASE 2)) (ZEROP N) (LESSP 1 BASE)) (EQUAL (LOG BASE 1) 1)), which simplifies, expanding the definition of ZEROP, to two new formulas: Case 1.2. (IMPLIES (AND (NOT (LESSP BASE 2)) (EQUAL N 0) (LESSP 1 BASE)) (EQUAL (LOG BASE 1) 1)), which again simplifies, obviously, to: (IMPLIES (AND (NOT (LESSP BASE 2)) (LESSP 1 BASE)) (EQUAL (LOG BASE 1) 1)), which we will name *1. Case 1.1. (IMPLIES (AND (NOT (LESSP BASE 2)) (NOT (NUMBERP N)) (LESSP 1 BASE)) (EQUAL (LOG BASE 1) 1)). Name the above subgoal *2. This conjecture is subsumed by formula *1 above. So we now return to: (IMPLIES (AND (NOT (LESSP BASE 2)) (LESSP 1 BASE)) (EQUAL (LOG BASE 1) 1)), which we named *1 above. Perhaps we can prove it by induction. The recursive terms in the conjecture suggest two inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (OR (EQUAL 2 0) (NOT (NUMBERP 2))) (p BASE)) (IMPLIES (AND (NOT (OR (EQUAL 2 0) (NOT (NUMBERP 2)))) (OR (EQUAL BASE 0) (NOT (NUMBERP BASE)))) (p BASE)) (IMPLIES (AND (NOT (OR (EQUAL 2 0) (NOT (NUMBERP 2)))) (NOT (OR (EQUAL BASE 0) (NOT (NUMBERP BASE)))) (p (SUB1 BASE))) (p BASE))). Linear arithmetic, the lemmas SUB1-LESSEQP and SUB1-LESSP, and the definitions of OR and NOT establish that the measure (COUNT BASE) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates the following five new goals: Case 5. (IMPLIES (AND (OR (EQUAL 2 0) (NOT (NUMBERP 2))) (NOT (LESSP BASE 2)) (LESSP 1 BASE)) (EQUAL (LOG BASE 1) 1)). This simplifies, opening up EQUAL, NUMBERP, NOT, and OR, to: T. Case 4. (IMPLIES (AND (NOT (OR (EQUAL 2 0) (NOT (NUMBERP 2)))) (OR (EQUAL BASE 0) (NOT (NUMBERP BASE))) (NOT (LESSP BASE 2)) (LESSP 1 BASE)) (EQUAL (LOG BASE 1) 1)). This simplifies, opening up the definitions of EQUAL, NUMBERP, NOT, OR, and LESSP, to: T. Case 3. (IMPLIES (AND (NOT (OR (EQUAL 2 0) (NOT (NUMBERP 2)))) (NOT (OR (EQUAL BASE 0) (NOT (NUMBERP BASE)))) (LESSP (SUB1 BASE) 2) (NOT (LESSP BASE 2)) (LESSP 1 BASE)) (EQUAL (LOG BASE 1) 1)). This simplifies, using linear arithmetic, to the following two new goals: Case 3.2. (IMPLIES (AND (NOT (NUMBERP BASE)) (NOT (OR (EQUAL 2 0) (NOT (NUMBERP 2)))) (NOT (OR (EQUAL BASE 0) (NOT (NUMBERP BASE)))) (LESSP (SUB1 BASE) 2) (NOT (LESSP BASE 2)) (LESSP 1 BASE)) (EQUAL (LOG BASE 1) 1)). However this again simplifies, opening up the definitions of EQUAL, NUMBERP, NOT, and OR, to: T. Case 3.1. (IMPLIES (AND (NUMBERP BASE) (NOT (OR (EQUAL 2 0) (NOT (NUMBERP 2)))) (NOT (OR (EQUAL 2 0) (NOT (NUMBERP 2)))) (LESSP (SUB1 2) 2) (NOT (LESSP 2 2)) (LESSP 1 2)) (EQUAL (LOG 2 1) 1)), which again simplifies, opening up the functions EQUAL, NUMBERP, NOT, OR, SUB1, LESSP, and LOG, to: T. Case 2. (IMPLIES (AND (NOT (OR (EQUAL 2 0) (NOT (NUMBERP 2)))) (NOT (OR (EQUAL BASE 0) (NOT (NUMBERP BASE)))) (NOT (LESSP 1 (SUB1 BASE))) (NOT (LESSP BASE 2)) (LESSP 1 BASE)) (EQUAL (LOG BASE 1) 1)), which simplifies, using linear arithmetic, to two new goals: Case 2.2. (IMPLIES (AND (NOT (NUMBERP BASE)) (NOT (OR (EQUAL 2 0) (NOT (NUMBERP 2)))) (NOT (OR (EQUAL BASE 0) (NOT (NUMBERP BASE)))) (NOT (LESSP 1 (SUB1 BASE))) (NOT (LESSP BASE 2)) (LESSP 1 BASE)) (EQUAL (LOG BASE 1) 1)), which again simplifies, expanding the definitions of EQUAL, NUMBERP, NOT, and OR, to: T. Case 2.1. (IMPLIES (AND (NUMBERP BASE) (NOT (OR (EQUAL 2 0) (NOT (NUMBERP 2)))) (NOT (OR (EQUAL 2 0) (NOT (NUMBERP 2)))) (NOT (LESSP 1 (SUB1 2))) (NOT (LESSP 2 2)) (LESSP 1 2)) (EQUAL (LOG 2 1) 1)), which again simplifies, opening up the definitions of EQUAL, NUMBERP, NOT, OR, SUB1, LESSP, and LOG, to: T. Case 1. (IMPLIES (AND (NOT (OR (EQUAL 2 0) (NOT (NUMBERP 2)))) (NOT (OR (EQUAL BASE 0) (NOT (NUMBERP BASE)))) (EQUAL (LOG (SUB1 BASE) 1) 1) (NOT (LESSP BASE 2)) (LESSP 1 BASE)) (EQUAL (LOG BASE 1) 1)), which simplifies, rewriting with EQUAL-SUB1-0, LOG-0, and QUOTIENT-1-ARG1, and expanding the functions EQUAL, NUMBERP, NOT, OR, LESSP, SUB1, ADD1, ZEROP, and LOG, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LOG-1 (DEFN DOUBLE-LOG-INDUCTION (BASE A B) (IF (LESSP BASE 2) 0 (IF (ZEROP A) 0 (IF (ZEROP B) 0 (DOUBLE-LOG-INDUCTION BASE (QUOTIENT A BASE) (QUOTIENT B BASE)))))) Linear arithmetic, the lemmas LESSP-QUOTIENT and COUNT-NUMBERP, and the definition of ZEROP inform us that the measure (COUNT A) decreases according to the well-founded relation LESSP in each recursive call. Hence, DOUBLE-LOG-INDUCTION is accepted under the definitional principle. The definition of DOUBLE-LOG-INDUCTION can be justified in another way. Linear arithmetic, the lemmas LESSP-QUOTIENT and COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT B) decreases according to the well-founded relation LESSP in each recursive call. Note that: (NUMBERP (DOUBLE-LOG-INDUCTION BASE A B)) is a theorem. [ 0.0 0.0 0.0 ] DOUBLE-LOG-INDUCTION (PROVE-LEMMA LEQ-LOG-LOG NIL (IMPLIES (LEQ N M) (LEQ (LOG C N) (LOG C M))) ((ENABLE LOG) (INDUCT (DOUBLE-LOG-INDUCTION C N M)) (USE (LEQ-QUOTIENT (A N) (B M) (C C))))) This formula simplifies, unfolding the definitions of IMPLIES, NOT, LOG, OR, ZEROP, and AND, to the following 21 new goals: Case 21.(IMPLIES (AND (NOT (LESSP N M)) (EQUAL N 0) (NOT (LESSP M N)) (EQUAL M 0)) (NOT (LESSP 0 0))). This again simplifies, obviously, to: T. Case 20.(IMPLIES (AND (NOT (LESSP N M)) (EQUAL N 0) (NOT (LESSP M N)) (NOT (NUMBERP M))) (NOT (LESSP 0 0))). This again simplifies, using linear arithmetic, to: T. Case 19.(IMPLIES (AND (NOT (LESSP N M)) (NOT (NUMBERP N)) (NOT (LESSP M N)) (EQUAL M 0)) (NOT (LESSP 0 0))), which again simplifies, using linear arithmetic, to: T. Case 18.(IMPLIES (AND (NOT (LESSP N M)) (NOT (NUMBERP N)) (NOT (LESSP M N)) (NOT (NUMBERP M))) (NOT (LESSP 0 0))), which again simplifies, using linear arithmetic, to: T. Case 17.(IMPLIES (AND (NOT (LESSP N M)) (LESSP C 2) (NOT (LESSP M N))) (NOT (LESSP 0 0))), which again simplifies, using linear arithmetic, to: T. Case 16.(IMPLIES (AND (NOT (LESSP N M)) (NOT (LESSP C 2)) (EQUAL N 0) (NOT (LESSP M N)) (NOT (EQUAL M 0)) (NUMBERP M)) (NOT (LESSP (ADD1 (LOG C (QUOTIENT M C))) 0))), which again simplifies, using linear arithmetic, to: T. Case 15.(IMPLIES (AND (NOT (LESSP N M)) (NOT (LESSP C 2)) (NOT (NUMBERP N)) (NOT (LESSP M N)) (NOT (EQUAL M 0)) (NUMBERP M)) (NOT (LESSP (ADD1 (LOG C (QUOTIENT M C))) 0))), which again simplifies, using linear arithmetic, to: T. Case 14.(IMPLIES (AND (NOT (LESSP N M)) (NOT (LESSP C 2)) (NOT (EQUAL N 0)) (NUMBERP N) (NOT (NUMBERP M)) (NOT (LESSP M N))) (NOT (LESSP 0 (ADD1 (LOG C (QUOTIENT N C)))))), which again simplifies, expanding LESSP, to: T. Case 13.(IMPLIES (AND (NOT (LESSP N M)) (NOT (LESSP C 2)) (NOT (EQUAL N 0)) (NUMBERP N) (EQUAL M 0) (NOT (LESSP M N))) (NOT (LESSP 0 (ADD1 (LOG C (QUOTIENT N C)))))), which again simplifies, using linear arithmetic, to: T. Case 12.(IMPLIES (AND (NOT (LESSP N M)) (NOT (LESSP C 2)) (NOT (EQUAL N 0)) (NUMBERP N) (NOT (EQUAL M 0)) (NUMBERP M) (LESSP (QUOTIENT M C) (QUOTIENT N C)) (NOT (LESSP M N))) (NOT (LESSP (ADD1 (LOG C (QUOTIENT M C))) (ADD1 (LOG C (QUOTIENT N C)))))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (NOT (LESSP M M)) (NOT (LESSP C 2)) (NOT (EQUAL M 0)) (NUMBERP M) (NOT (EQUAL M 0)) (NUMBERP M) (LESSP (QUOTIENT M C) (QUOTIENT M C)) (NOT (LESSP M M))) (NOT (LESSP (ADD1 (LOG C (QUOTIENT M C))) (ADD1 (LOG C (QUOTIENT M C)))))). But this again simplifies, using linear arithmetic, to: T. Case 11.(IMPLIES (AND (NOT (LESSP N M)) (NOT (LESSP C 2)) (NOT (EQUAL N 0)) (NUMBERP N) (NOT (EQUAL M 0)) (NUMBERP M) (NOT (LESSP (LOG C (QUOTIENT M C)) (LOG C (QUOTIENT N C)))) (NOT (LESSP M N))) (NOT (LESSP (ADD1 (LOG C (QUOTIENT M C))) (ADD1 (LOG C (QUOTIENT N C)))))), which again simplifies, using linear arithmetic, to: T. Case 10.(IMPLIES (AND (NOT (LESSP (QUOTIENT M C) (QUOTIENT N C))) (EQUAL N 0) (NOT (LESSP M N)) (EQUAL M 0)) (NOT (LESSP 0 0))), which again simplifies, obviously, to: T. Case 9. (IMPLIES (AND (NOT (LESSP (QUOTIENT M C) (QUOTIENT N C))) (EQUAL N 0) (NOT (LESSP M N)) (NOT (NUMBERP M))) (NOT (LESSP 0 0))). But this again simplifies, using linear arithmetic, to: T. Case 8. (IMPLIES (AND (NOT (LESSP (QUOTIENT M C) (QUOTIENT N C))) (NOT (NUMBERP N)) (NOT (LESSP M N)) (EQUAL M 0)) (NOT (LESSP 0 0))), which again simplifies, using linear arithmetic, to: T. Case 7. (IMPLIES (AND (NOT (LESSP (QUOTIENT M C) (QUOTIENT N C))) (NOT (NUMBERP N)) (NOT (LESSP M N)) (NOT (NUMBERP M))) (NOT (LESSP 0 0))), which again simplifies, using linear arithmetic, to: T. Case 6. (IMPLIES (AND (NOT (LESSP (QUOTIENT M C) (QUOTIENT N C))) (LESSP C 2) (NOT (LESSP M N))) (NOT (LESSP 0 0))), which again simplifies, using linear arithmetic, to: T. Case 5. (IMPLIES (AND (NOT (LESSP (QUOTIENT M C) (QUOTIENT N C))) (NOT (LESSP C 2)) (EQUAL N 0) (NOT (LESSP M N)) (NOT (EQUAL M 0)) (NUMBERP M)) (NOT (LESSP (ADD1 (LOG C (QUOTIENT M C))) 0))), which again simplifies, using linear arithmetic, to: T. Case 4. (IMPLIES (AND (NOT (LESSP (QUOTIENT M C) (QUOTIENT N C))) (NOT (LESSP C 2)) (NOT (NUMBERP N)) (NOT (LESSP M N)) (NOT (EQUAL M 0)) (NUMBERP M)) (NOT (LESSP (ADD1 (LOG C (QUOTIENT M C))) 0))), which again simplifies, using linear arithmetic, to: T. Case 3. (IMPLIES (AND (NOT (LESSP (QUOTIENT M C) (QUOTIENT N C))) (NOT (LESSP C 2)) (NOT (EQUAL N 0)) (NUMBERP N) (NOT (NUMBERP M)) (NOT (LESSP M N))) (NOT (LESSP 0 (ADD1 (LOG C (QUOTIENT N C)))))), which again simplifies, using linear arithmetic, rewriting with QUOTIENT-LESSP-ARG1 and EQUAL-QUOTIENT-0, and opening up the functions EQUAL, LESSP, and NUMBERP, to: T. Case 2. (IMPLIES (AND (NOT (LESSP (QUOTIENT M C) (QUOTIENT N C))) (NOT (LESSP C 2)) (NOT (EQUAL N 0)) (NUMBERP N) (EQUAL M 0) (NOT (LESSP M N))) (NOT (LESSP 0 (ADD1 (LOG C (QUOTIENT N C)))))). But this again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (LESSP (QUOTIENT M C) (QUOTIENT N C))) (NOT (LESSP C 2)) (NOT (EQUAL N 0)) (NUMBERP N) (NOT (EQUAL M 0)) (NUMBERP M) (NOT (LESSP (LOG C (QUOTIENT M C)) (LOG C (QUOTIENT N C)))) (NOT (LESSP M N))) (NOT (LESSP (ADD1 (LOG C (QUOTIENT M C))) (ADD1 (LOG C (QUOTIENT N C)))))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 1.2 0.0 ] LEQ-LOG-LOG (PROVE-LEMMA LOG-QUOTIENT (REWRITE) (IMPLIES (LESSP 1 C) (EQUAL (LOG C (QUOTIENT N C)) (SUB1 (LOG C N)))) ((ENABLE LOG))) This conjecture simplifies, unfolding the definition of LOG, to four new conjectures: Case 4. (IMPLIES (AND (LESSP 1 C) (EQUAL N 0)) (EQUAL (LOG C (QUOTIENT N C)) (SUB1 0))), which again simplifies, using linear arithmetic, rewriting with QUOTIENT-LESSP-ARG1 and LOG-0, and opening up the functions ZEROP, SUB1, and EQUAL, to: T. Case 3. (IMPLIES (AND (LESSP 1 C) (NOT (NUMBERP N))) (EQUAL (LOG C (QUOTIENT N C)) (SUB1 0))). However this again simplifies, using linear arithmetic, rewriting with QUOTIENT-LESSP-ARG1 and LOG-0, and unfolding the definitions of ZEROP, SUB1, and EQUAL, to: T. Case 2. (IMPLIES (AND (LESSP 1 C) (LESSP C 2)) (EQUAL (LOG C (QUOTIENT N C)) (SUB1 0))). This again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (LESSP 1 C) (NOT (LESSP C 2)) (NOT (EQUAL N 0)) (NUMBERP N)) (EQUAL (LOG C (QUOTIENT N C)) (SUB1 (ADD1 (LOG C (QUOTIENT N C)))))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.1 0.0 ] LOG-QUOTIENT (PROVE-LEMMA LOG-QUOTIENT-TIMES-PROOF NIL (IMPLIES (LESSP 1 C) (EQUAL (LOG C (QUOTIENT N (TIMES C M))) (SUB1 (LOG C (QUOTIENT N M))))) ((ENABLE LOG))) This formula simplifies, rewriting with QUOTIENT-QUOTIENT, COMMUTATIVITY-OF-TIMES, and EQUAL-QUOTIENT-0, and opening up the definition of LOG, to the following five new formulas: Case 5. (IMPLIES (AND (LESSP 1 C) (LESSP C 2)) (EQUAL (LOG C (QUOTIENT N (TIMES C M))) (SUB1 0))). But this again simplifies, using linear arithmetic, to: T. Case 4. (IMPLIES (AND (LESSP 1 C) (EQUAL M 0)) (EQUAL (LOG C (QUOTIENT N (TIMES C M))) (SUB1 0))), which again simplifies, rewriting with COMMUTATIVITY-OF-TIMES, QUOTIENT-ZERO, and LOG-0, and opening up EQUAL, TIMES, ZEROP, and SUB1, to: T. Case 3. (IMPLIES (AND (LESSP 1 C) (NOT (NUMBERP M))) (EQUAL (LOG C (QUOTIENT N (TIMES C M))) (SUB1 0))). But this again simplifies, rewriting with TIMES-ZERO, QUOTIENT-ZERO, and LOG-0, and expanding the functions ZEROP, SUB1, and EQUAL, to: T. Case 2. (IMPLIES (AND (LESSP 1 C) (LESSP N M)) (EQUAL (LOG C (QUOTIENT N (TIMES C M))) (SUB1 0))). However this again simplifies, rewriting with EQUAL-TIMES-0, EQUAL-QUOTIENT-0, and EQUAL-LOG-0, and opening up the function SUB1, to: (IMPLIES (AND (LESSP 1 C) (LESSP N M) (NOT (LESSP C 2)) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (EQUAL M 0)) (NUMBERP M)) (LESSP N (TIMES C M))), which again simplifies, rewriting with the lemma LESSP-TIMES1, to: T. Case 1. (IMPLIES (AND (LESSP 1 C) (NOT (LESSP C 2)) (NOT (EQUAL M 0)) (NUMBERP M) (NOT (LESSP N M))) (EQUAL (LOG C (QUOTIENT N (TIMES C M))) (SUB1 (ADD1 (LOG C (QUOTIENT N (TIMES C M))))))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.5 0.0 ] LOG-QUOTIENT-TIMES-PROOF (PROVE-LEMMA LOG-QUOTIENT-TIMES (REWRITE) (IMPLIES (LESSP 1 C) (AND (EQUAL (LOG C (QUOTIENT N (TIMES C M))) (SUB1 (LOG C (QUOTIENT N M)))) (EQUAL (LOG C (QUOTIENT N (TIMES M C))) (SUB1 (LOG C (QUOTIENT N M)))))) ((USE (LOG-QUOTIENT-TIMES-PROOF (C C) (N N) (M M))) (ENABLE COMMUTATIVITY-OF-TIMES))) WARNING: Note that the proposed lemma LOG-QUOTIENT-TIMES is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This simplifies, applying QUOTIENT-QUOTIENT, COMMUTATIVITY-OF-TIMES, EQUAL-QUOTIENT-0, QUOTIENT-ZERO, LOG-0, TIMES-ZERO, QUOTIENT-LESSP-ARG1, EQUAL-SUB1-0, and SUB1-ADD1, and expanding the functions LOG, IMPLIES, SUB1, EQUAL, AND, TIMES, and ZEROP, to: T. Q.E.D. [ 0.0 1.0 0.0 ] LOG-QUOTIENT-TIMES (PROVE-LEMMA LOG-QUOTIENT-EXP (REWRITE) (IMPLIES (LESSP 1 C) (EQUAL (LOG C (QUOTIENT N (EXP C M))) (DIFFERENCE (LOG C N) M))) ((ENABLE EXP LOG LOG-QUOTIENT-TIMES))) . Appealing to the lemma REMAINDER-QUOTIENT-ELIM, we now replace N by: (PLUS Z (TIMES (EXP C M) X)) to eliminate (QUOTIENT N (EXP C M)) and (REMAINDER N (EXP C M)). We employ LESSP-REMAINDER, the type restriction lemma noted when QUOTIENT was introduced, and the type restriction lemma noted when REMAINDER was introduced to constrain the new variables. This generates four new conjectures: Case 4. (IMPLIES (AND (NOT (NUMBERP N)) (LESSP 1 C)) (EQUAL (LOG C (QUOTIENT N (EXP C M))) (DIFFERENCE (LOG C N) M))), which simplifies, using linear arithmetic, appealing to the lemmas EQUAL-EXP-0, QUOTIENT-OF-NON-NUMBER, LOG-0, and DIFFERENCE-LEQ-ARG1, and expanding the definitions of LESSP, EQUAL, QUOTIENT, and ZEROP, to: T. Case 3. (IMPLIES (AND (EQUAL (EXP C M) 0) (LESSP 1 C)) (EQUAL (LOG C (QUOTIENT N (EXP C M))) (DIFFERENCE (LOG C N) M))), which simplifies, rewriting with EQUAL-EXP-0, and expanding LESSP, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP (EXP C M))) (LESSP 1 C)) (EQUAL (LOG C (QUOTIENT N (EXP C M))) (DIFFERENCE (LOG C N) M))). This simplifies, obviously, to: T. Case 1. (IMPLIES (AND (NUMBERP X) (NUMBERP Z) (EQUAL (LESSP Z (EXP C M)) (NOT (ZEROP (EXP C M)))) (NOT (EQUAL (EXP C M) 0)) (LESSP 1 C)) (EQUAL (LOG C X) (DIFFERENCE (LOG C (PLUS Z (TIMES (EXP C M) X))) M))). But this simplifies, applying EQUAL-EXP-0, COMMUTATIVITY-OF-TIMES, EXP-ZERO, TIMES-1-ARG1, COMMUTATIVITY-OF-PLUS, EQUAL-LOG-0, EQUAL-PLUS-0, EXP-0-ARG2, and EXP-0-ARG1, and opening up the definitions of ZEROP, NOT, EQUAL, DIFFERENCE, TIMES, and EXP, to the following nine new goals: Case 1.9. (IMPLIES (AND (NUMBERP X) (NUMBERP Z) (NOT (EQUAL C 0)) (NUMBERP C) (EQUAL (LESSP Z (EXP C M)) T) (LESSP 1 C)) (EQUAL (LOG C X) (DIFFERENCE (LOG C (PLUS Z (TIMES X (EXP C M)))) M))). This again simplifies, trivially, to: (IMPLIES (AND (NUMBERP X) (NUMBERP Z) (NOT (EQUAL C 0)) (NUMBERP C) (LESSP Z (EXP C M)) (LESSP 1 C)) (EQUAL (LOG C X) (DIFFERENCE (LOG C (PLUS Z (TIMES X (EXP C M)))) M))), which we would normally push and work on later by induction. But if we must use induction to prove the input conjecture, we prefer to induct on the original formulation of the problem. Thus we will disregard all that we have previously done, give the name *1 to the original input, and work on it. So now let us return to: (IMPLIES (LESSP 1 C) (EQUAL (LOG C (QUOTIENT N (EXP C M))) (DIFFERENCE (LOG C N) M))), named *1. Let us appeal to the induction principle. Five inductions are suggested by terms in the conjecture. They merge into four likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (ZEROP M) (p C N M)) (IMPLIES (AND (NOT (ZEROP M)) (p C N (SUB1 M))) (p C N M))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP inform us that the measure (COUNT M) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates two new formulas: Case 2. (IMPLIES (AND (ZEROP M) (LESSP 1 C)) (EQUAL (LOG C (QUOTIENT N (EXP C M))) (DIFFERENCE (LOG C N) M))), which simplifies, applying EXP-0-ARG2, QUOTIENT-1-ARG2, EQUAL-LOG-0, and EXP-ZERO, and unfolding the functions ZEROP, EQUAL, and DIFFERENCE, to the following six new goals: Case 2.6. (IMPLIES (AND (EQUAL M 0) (LESSP 1 C) (NOT (NUMBERP N))) (EQUAL (LOG C 0) 0)). But this again simplifies, rewriting with LOG-0, and opening up the functions ZEROP and EQUAL, to: T. Case 2.5. (IMPLIES (AND (EQUAL M 0) (LESSP 1 C) (EQUAL N 0) (NUMBERP N)) (EQUAL (LOG C N) 0)). This again simplifies, rewriting with LOG-0, and expanding NUMBERP, ZEROP, and EQUAL, to: T. Case 2.4. (IMPLIES (AND (EQUAL M 0) (LESSP 1 C) (LESSP C 2) (NUMBERP N)) (EQUAL (LOG C N) 0)). But this again simplifies, using linear arithmetic, to: T. Case 2.3. (IMPLIES (AND (NOT (NUMBERP M)) (LESSP 1 C) (NOT (NUMBERP N))) (EQUAL (LOG C 0) 0)), which again simplifies, rewriting with LOG-0, and opening up the definitions of ZEROP and EQUAL, to: T. Case 2.2. (IMPLIES (AND (NOT (NUMBERP M)) (LESSP 1 C) (EQUAL N 0) (NUMBERP N)) (EQUAL (LOG C N) 0)). But this again simplifies, appealing to the lemma LOG-0, and expanding the definitions of NUMBERP, ZEROP, and EQUAL, to: T. Case 2.1. (IMPLIES (AND (NOT (NUMBERP M)) (LESSP 1 C) (LESSP C 2) (NUMBERP N)) (EQUAL (LOG C N) 0)), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP M)) (EQUAL (LOG C (QUOTIENT N (EXP C (SUB1 M)))) (DIFFERENCE (LOG C N) (SUB1 M))) (LESSP 1 C)) (EQUAL (LOG C (QUOTIENT N (EXP C M))) (DIFFERENCE (LOG C N) M))), which simplifies, rewriting with LOG-QUOTIENT-TIMES, EQUAL-LOG-0, and DIFFERENCE-SUB1-ARG2, and opening up the definitions of ZEROP, EXP, and DIFFERENCE, to the following five new conjectures: Case 1.5. (IMPLIES (AND (NOT (EQUAL M 0)) (NUMBERP M) (EQUAL (LOG C (QUOTIENT N (EXP C (SUB1 M)))) (DIFFERENCE (LOG C N) (SUB1 M))) (LESSP 1 C) (EQUAL N 0)) (EQUAL (SUB1 (DIFFERENCE (LOG C N) (SUB1 M))) 0)). This again simplifies, applying the lemmas EQUAL-EXP-0, EQUAL-SUB1-0, LOG-0, and DIFFERENCE-SUB1-ARG2, and expanding LESSP, EQUAL, QUOTIENT, ZEROP, and SUB1, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL M 0)) (NUMBERP M) (EQUAL (LOG C (QUOTIENT N (EXP C (SUB1 M)))) (DIFFERENCE (LOG C N) (SUB1 M))) (LESSP 1 C) (NOT (NUMBERP N))) (EQUAL (SUB1 (DIFFERENCE (LOG C N) (SUB1 M))) 0)), which again simplifies, rewriting with EQUAL-EXP-0, EQUAL-SUB1-0, QUOTIENT-OF-NON-NUMBER, LOG-0, EQUAL-LOG-0, and EQUAL-DIFFERENCE-0, and opening up the functions LESSP, EQUAL, QUOTIENT, and ZEROP, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL M 0)) (NUMBERP M) (EQUAL (LOG C (QUOTIENT N (EXP C (SUB1 M)))) (DIFFERENCE (LOG C N) (SUB1 M))) (LESSP 1 C) (LESSP (SUB1 (LOG C N)) M)) (EQUAL (SUB1 (DIFFERENCE (LOG C N) (SUB1 M))) 0)). This again simplifies, using linear arithmetic, to three new goals: Case 1.3.3. (IMPLIES (AND (LESSP (LOG C N) (SUB1 M)) (NOT (EQUAL M 0)) (NUMBERP M) (EQUAL (LOG C (QUOTIENT N (EXP C (SUB1 M)))) (DIFFERENCE (LOG C N) (SUB1 M))) (LESSP 1 C) (LESSP (SUB1 (LOG C N)) M)) (EQUAL (SUB1 (DIFFERENCE (LOG C N) (SUB1 M))) 0)), which again simplifies, applying EQUAL-DIFFERENCE-0 and EQUAL-SUB1-0, to: (IMPLIES (AND (LESSP (LOG C N) (SUB1 M)) (NOT (EQUAL M 0)) (NUMBERP M) (EQUAL (LOG C (QUOTIENT N (EXP C (SUB1 M)))) (DIFFERENCE (LOG C N) (SUB1 M))) (LESSP 1 C) (LESSP (SUB1 (LOG C N)) M) (LESSP (SUB1 M) (LOG C N))) (EQUAL (DIFFERENCE (LOG C N) (SUB1 M)) 1)), which again simplifies, using linear arithmetic, to: T. Case 1.3.2. (IMPLIES (AND (NOT (LESSP (SUB1 M) (LOG C N))) (NOT (EQUAL M 0)) (NUMBERP M) (EQUAL (LOG C (QUOTIENT N (EXP C (SUB1 M)))) (DIFFERENCE (LOG C N) (SUB1 M))) (LESSP 1 C) (LESSP (SUB1 (LOG C N)) M)) (EQUAL (SUB1 (DIFFERENCE (LOG C N) (SUB1 M))) 0)), which again simplifies, applying EQUAL-DIFFERENCE-0 and EQUAL-SUB1-0, to: T. Case 1.3.1. (IMPLIES (AND (LESSP (SUB1 M) (LOG C N)) (NOT (LESSP (LOG C N) (SUB1 M))) (NOT (EQUAL (PLUS 1 (LOG C N)) 0)) (NUMBERP (PLUS 1 (LOG C N))) (EQUAL (LOG C (QUOTIENT N (EXP C (SUB1 (PLUS 1 (LOG C N)))))) (DIFFERENCE (LOG C N) (SUB1 (PLUS 1 (LOG C N))))) (LESSP 1 C) (LESSP (SUB1 (LOG C N)) (PLUS 1 (LOG C N)))) (EQUAL (SUB1 (DIFFERENCE (LOG C N) (SUB1 (PLUS 1 (LOG C N))))) 0)). This again simplifies, rewriting with PLUS-ADD1-ARG1, SUB1-ADD1, DIFFERENCE-X-X, EQUAL-LOG-0, EQUAL-EXP-0, EQUAL-QUOTIENT-0, EQUAL-SUB1-0, and LOG-0, and opening up the functions EQUAL, PLUS, LESSP, NUMBERP, LOG, SUB1, DIFFERENCE, and ZEROP, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL M 0)) (NUMBERP M) (EQUAL (LOG C (QUOTIENT N (EXP C (SUB1 M)))) (DIFFERENCE (LOG C N) (SUB1 M))) (LESSP 1 C) (LESSP C 2)) (EQUAL (SUB1 (DIFFERENCE (LOG C N) (SUB1 M))) 0)). But this again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL M 0)) (NUMBERP M) (EQUAL (LOG C (QUOTIENT N (EXP C (SUB1 M)))) (DIFFERENCE (LOG C N) (SUB1 M))) (LESSP 1 C) (NOT (LESSP C 2)) (NOT (EQUAL N 0)) (NUMBERP N) (NOT (LESSP (SUB1 (LOG C N)) M))) (EQUAL (SUB1 (DIFFERENCE (LOG C N) (SUB1 M))) (ADD1 (DIFFERENCE (SUB1 (LOG C N)) M)))), which again simplifies, using linear arithmetic, to three new conjectures: Case 1.1.3. (IMPLIES (AND (NOT (LESSP (SUB1 M) (LOG C N))) (NOT (EQUAL M 0)) (NUMBERP M) (EQUAL (LOG C (QUOTIENT N (EXP C (SUB1 M)))) (DIFFERENCE (LOG C N) (SUB1 M))) (LESSP 1 C) (NOT (LESSP C 2)) (NOT (EQUAL N 0)) (NUMBERP N) (NOT (LESSP (SUB1 (LOG C N)) M))) (EQUAL (SUB1 (DIFFERENCE (LOG C N) (SUB1 M))) (ADD1 (DIFFERENCE (SUB1 (LOG C N)) M)))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (EQUAL (LOG C N) 0) (NOT (LESSP (SUB1 M) (LOG C N))) (NOT (EQUAL M 0)) (NUMBERP M) (EQUAL (LOG C (QUOTIENT N (EXP C (SUB1 M)))) (DIFFERENCE (LOG C N) (SUB1 M))) (LESSP 1 C) (NOT (LESSP C 2)) (NOT (EQUAL N 0)) (NUMBERP N) (NOT (LESSP (SUB1 (LOG C N)) M))) (EQUAL (SUB1 (DIFFERENCE (LOG C N) (SUB1 M))) (ADD1 (DIFFERENCE (SUB1 (LOG C N)) M)))). But this again simplifies, applying EQUAL-LOG-0, to: T. Case 1.1.2. (IMPLIES (AND (LESSP (LOG C N) (SUB1 M)) (NOT (EQUAL M 0)) (NUMBERP M) (EQUAL (LOG C (QUOTIENT N (EXP C (SUB1 M)))) (DIFFERENCE (LOG C N) (SUB1 M))) (LESSP 1 C) (NOT (LESSP C 2)) (NOT (EQUAL N 0)) (NUMBERP N) (NOT (LESSP (SUB1 (LOG C N)) M))) (EQUAL (SUB1 (DIFFERENCE (LOG C N) (SUB1 M))) (ADD1 (DIFFERENCE (SUB1 (LOG C N)) M)))). But this again simplifies, using linear arithmetic, to the formula: (IMPLIES (AND (EQUAL (LOG C N) 0) (LESSP (LOG C N) (SUB1 M)) (NOT (EQUAL M 0)) (NUMBERP M) (EQUAL (LOG C (QUOTIENT N (EXP C (SUB1 M)))) (DIFFERENCE (LOG C N) (SUB1 M))) (LESSP 1 C) (NOT (LESSP C 2)) (NOT (EQUAL N 0)) (NUMBERP N) (NOT (LESSP (SUB1 (LOG C N)) M))) (EQUAL (SUB1 (DIFFERENCE (LOG C N) (SUB1 M))) (ADD1 (DIFFERENCE (SUB1 (LOG C N)) M)))). However this again simplifies, rewriting with EQUAL-LOG-0, to: T. Case 1.1.1. (IMPLIES (AND (EQUAL (LOG C N) 0) (NOT (EQUAL M 0)) (NUMBERP M) (EQUAL (LOG C (QUOTIENT N (EXP C (SUB1 M)))) (DIFFERENCE (LOG C N) (SUB1 M))) (LESSP 1 C) (NOT (LESSP C 2)) (NOT (EQUAL N 0)) (NUMBERP N) (NOT (LESSP (SUB1 (LOG C N)) M))) (EQUAL (SUB1 (DIFFERENCE (LOG C N) (SUB1 M))) (ADD1 (DIFFERENCE (SUB1 (LOG C N)) M)))). However this again simplifies, applying the lemma EQUAL-LOG-0, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 1.3 0.1 ] LOG-QUOTIENT-EXP (PROVE-LEMMA LOG-TIMES-PROOF NIL (IMPLIES (AND (LESSP 1 C) (NOT (ZEROP N))) (EQUAL (LOG C (TIMES C N)) (ADD1 (LOG C N)))) ((ENABLE LOG))) This formula can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (LESSP 1 C) (NOT (EQUAL N 0)) (NUMBERP N)) (EQUAL (LOG C (TIMES C N)) (ADD1 (LOG C N)))), which simplifies, rewriting with QUOTIENT-TIMES-INSTANCE and EQUAL-TIMES-0, and expanding the definition of LOG, to the following three new goals: Case 3. (IMPLIES (AND (LESSP 1 C) (NOT (EQUAL N 0)) (NUMBERP N) (EQUAL C 0)) (EQUAL 0 (ADD1 (LOG C N)))). But this again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (LESSP 1 C) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP C 2)) (EQUAL 0 (ADD1 (LOG C N)))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (LESSP 1 C) (NOT (EQUAL N 0)) (NUMBERP N) (NOT (NUMBERP C))) (EQUAL 0 (ADD1 (LOG C N)))), which again simplifies, expanding LESSP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LOG-TIMES-PROOF (PROVE-LEMMA LOG-TIMES (REWRITE) (IMPLIES (AND (LESSP 1 C) (NOT (ZEROP N))) (AND (EQUAL (LOG C (TIMES C N)) (ADD1 (LOG C N))) (EQUAL (LOG C (TIMES N C)) (ADD1 (LOG C N))))) ((USE (LOG-TIMES-PROOF (C C) (N N))) (ENABLE COMMUTATIVITY-OF-TIMES))) WARNING: Note that the proposed lemma LOG-TIMES is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. This formula can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to the new goal: (IMPLIES (AND (IMPLIES (AND (LESSP 1 C) (NOT (ZEROP N))) (EQUAL (LOG C (TIMES C N)) (ADD1 (LOG C N)))) (LESSP 1 C) (NOT (EQUAL N 0)) (NUMBERP N)) (AND (EQUAL (LOG C (TIMES C N)) (ADD1 (LOG C N))) (EQUAL (LOG C (TIMES N C)) (ADD1 (LOG C N))))), which simplifies, appealing to the lemmas QUOTIENT-TIMES-INSTANCE, EQUAL-TIMES-0, and COMMUTATIVITY-OF-TIMES, and expanding ZEROP, NOT, AND, LOG, IMPLIES, LESSP, ADD1, and EQUAL, to: (IMPLIES (AND (LESSP C 2) (EQUAL 0 (ADD1 (LOG C N))) (LESSP 1 C) (NOT (EQUAL N 0))) (NOT (NUMBERP N))). However this again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.3 0.0 ] LOG-TIMES (PROVE-LEMMA LOG-TIMES-EXP-PROOF NIL (IMPLIES (AND (LESSP 1 C) (NOT (ZEROP N))) (EQUAL (LOG C (TIMES N (EXP C M))) (PLUS (LOG C N) M))) ((ENABLE LOG EXP))) This formula can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (LESSP 1 C) (NOT (EQUAL N 0)) (NUMBERP N)) (EQUAL (LOG C (TIMES N (EXP C M))) (PLUS (LOG C N) M))), which simplifies, applying COMMUTATIVITY-OF-PLUS, to the new formula: (IMPLIES (AND (LESSP 1 C) (NOT (EQUAL N 0)) (NUMBERP N)) (EQUAL (LOG C (TIMES N (EXP C M))) (PLUS M (LOG C N)))), which we will name *1. We will appeal to induction. Five inductions are suggested by terms in the conjecture. They merge into four likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (ZEROP M) (p C N M)) (IMPLIES (AND (