(BOOT-STRAP NQTHM) [ 0.1 0.1 0.0 ] GROUND-ZERO (PROVE-LEMMA PLUS-RIGHT-ID2 (REWRITE) (IMPLIES (NOT (NUMBERP Y)) (EQUAL (PLUS X Y) (FIX X))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, unfolding the definition of FIX, to the following two new goals: Case 2. (IMPLIES (AND (NOT (NUMBERP Y)) (NOT (NUMBERP X))) (EQUAL (PLUS X Y) 0)). This again simplifies, opening up the definitions of PLUS and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (NUMBERP Y)) (NUMBERP X)) (EQUAL (PLUS X 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 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 generates the following two new formulas: Case 2. (IMPLIES (AND (ZEROP X) (NOT (NUMBERP Y)) (NUMBERP X)) (EQUAL (PLUS X Y) X)). This simplifies, expanding the functions ZEROP, NUMBERP, EQUAL, and PLUS, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (PLUS (SUB1 X) Y) (SUB1 X)) (NOT (NUMBERP Y)) (NUMBERP X)) (EQUAL (PLUS X Y) X)). This simplifies, using linear arithmetic, to the new conjecture: (IMPLIES (AND (EQUAL X 0) (NOT (ZEROP X)) (EQUAL (PLUS (SUB1 X) Y) (SUB1 X)) (NOT (NUMBERP Y)) (NUMBERP X)) (EQUAL (PLUS X Y) X)), which again simplifies, expanding the function ZEROP, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PLUS-RIGHT-ID2 (DISABLE PLUS-RIGHT-ID2) [ 0.0 0.0 0.0 ] PLUS-RIGHT-ID2-OFF (PROVE-LEMMA PLUS-ADD1 (REWRITE) (EQUAL (PLUS X (ADD1 Y)) (IF (NUMBERP Y) (ADD1 (PLUS X Y)) (ADD1 X))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 lemma SUB1-TYPE-RESTRICTION, to the conjecture: (IMPLIES (NOT (NUMBERP Y)) (EQUAL (PLUS X 1) (ADD1 X))). But this again simplifies, using linear arithmetic, 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 (DISABLE PLUS-ADD1) [ 0.0 0.0 0.0 ] PLUS-ADD1-OFF (PROVE-LEMMA COMMUTATIVITY2-OF-PLUS (REWRITE) (EQUAL (PLUS X (PLUS Y Z)) (PLUS Y (PLUS X Z))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] COMMUTATIVITY2-OF-PLUS (DISABLE COMMUTATIVITY2-OF-PLUS) [ 0.0 0.0 0.0 ] COMMUTATIVITY2-OF-PLUS-OFF (PROVE-LEMMA COMMUTATIVITY-OF-PLUS (REWRITE) (EQUAL (PLUS X Y) (PLUS Y X)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] COMMUTATIVITY-OF-PLUS (DISABLE COMMUTATIVITY-OF-PLUS) [ 0.0 0.0 0.0 ] COMMUTATIVITY-OF-PLUS-OFF (PROVE-LEMMA ASSOCIATIVITY-OF-PLUS (REWRITE) (EQUAL (PLUS (PLUS X Y) Z) (PLUS X (PLUS Y Z))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] ASSOCIATIVITY-OF-PLUS (DISABLE ASSOCIATIVITY-OF-PLUS) [ 0.0 0.0 0.0 ] ASSOCIATIVITY-OF-PLUS-OFF (PROVE-LEMMA PLUS-EQUAL-0 (REWRITE) (EQUAL (EQUAL (PLUS A B) '0) (AND (ZEROP A) (ZEROP B))) ((ENABLE PLUS-RIGHT-ID2 COMMUTATIVITY-OF-PLUS) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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, applying PLUS-RIGHT-ID2 and COMMUTATIVITY-OF-PLUS, and unfolding the functions NUMBERP and EQUAL, to: T. Case 5. (IMPLIES (AND (NOT (EQUAL (PLUS A B) 0)) (NOT (NUMBERP A))) (NUMBERP B)). However this again simplifies, applying PLUS-RIGHT-ID2, and unfolding the function EQUAL, to: T. Case 4. (IMPLIES (AND (NOT (EQUAL (PLUS A B) 0)) (EQUAL A 0)) (NOT (EQUAL B 0))). This 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, applying the lemma PLUS-RIGHT-ID2, and opening up the definitions of NUMBERP and EQUAL, 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 ] PLUS-EQUAL-0 (DISABLE PLUS-EQUAL-0) [ 0.0 0.0 0.0 ] PLUS-EQUAL-0-OFF (PROVE-LEMMA DIFFERENCE-X-X (REWRITE) (EQUAL (DIFFERENCE X X) '0) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, using linear arithmetic, to: (IMPLIES (LESSP X X) (EQUAL (DIFFERENCE X X) 0)). But this again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-X-X (DISABLE DIFFERENCE-X-X) [ 0.0 0.0 0.0 ] DIFFERENCE-X-X-OFF (PROVE-LEMMA DIFFERENCE-PLUS (REWRITE) (AND (EQUAL (DIFFERENCE (PLUS X Y) X) (FIX Y)) (EQUAL (DIFFERENCE (PLUS Y X) X) (FIX Y))) ((ENABLE PLUS-RIGHT-ID2 COMMUTATIVITY-OF-PLUS) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) WARNING: Note that the proposed lemma DIFFERENCE-PLUS 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 (DIFFERENCE (PLUS X Y) X) (FIX Y)). This simplifies, unfolding the function FIX, to the following two new formulas: Case 2.2. (IMPLIES (NOT (NUMBERP Y)) (EQUAL (DIFFERENCE (PLUS X Y) X) 0)). However this again simplifies, applying PLUS-RIGHT-ID2, to the following two new goals: Case 2.2.2. (IMPLIES (AND (NOT (NUMBERP Y)) (NOT (NUMBERP X))) (EQUAL (DIFFERENCE 0 X) 0)). But this again simplifies, expanding EQUAL and DIFFERENCE, to: T. Case 2.2.1. (IMPLIES (AND (NOT (NUMBERP Y)) (NUMBERP X)) (EQUAL (DIFFERENCE X X) 0)), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP X X) (NOT (NUMBERP Y)) (NUMBERP X)) (EQUAL (DIFFERENCE X X) 0)). However this again simplifies, using linear arithmetic, to: T. Case 2.1. (IMPLIES (NUMBERP Y) (EQUAL (DIFFERENCE (PLUS X Y) X) Y)), which again simplifies, using linear arithmetic, to the conjecture: (IMPLIES (AND (LESSP (PLUS X Y) X) (NUMBERP Y)) (EQUAL (DIFFERENCE (PLUS X Y) X) Y)). This again simplifies, using linear arithmetic, to: T. Case 1. (EQUAL (DIFFERENCE (PLUS Y X) X) (FIX Y)), which simplifies, applying the lemma COMMUTATIVITY-OF-PLUS, and unfolding FIX, to two new conjectures: Case 1.2. (IMPLIES (NOT (NUMBERP Y)) (EQUAL (DIFFERENCE (PLUS X Y) X) 0)), which again simplifies, rewriting with the lemma PLUS-RIGHT-ID2, to two new formulas: Case 1.2.2. (IMPLIES (AND (NOT (NUMBERP Y)) (NOT (NUMBERP X))) (EQUAL (DIFFERENCE 0 X) 0)), which again simplifies, expanding the definitions of EQUAL and DIFFERENCE, to: T. Case 1.2.1. (IMPLIES (AND (NOT (NUMBERP Y)) (NUMBERP X)) (EQUAL (DIFFERENCE X X) 0)), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP X X) (NOT (NUMBERP Y)) (NUMBERP X)) (EQUAL (DIFFERENCE X X) 0)). However this again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (NUMBERP Y) (EQUAL (DIFFERENCE (PLUS X Y) X) Y)), which again simplifies, using linear arithmetic, to the formula: (IMPLIES (AND (LESSP (PLUS X Y) X) (NUMBERP Y)) (EQUAL (DIFFERENCE (PLUS X Y) X) Y)). This again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS (DISABLE DIFFERENCE-PLUS) [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS-OFF (PROVE-LEMMA PLUS-CANCELLATION (REWRITE) (EQUAL (EQUAL (PLUS A B) (PLUS A C)) (EQUAL (FIX B) (FIX C))) ((ENABLE PLUS-RIGHT-ID2 COMMUTATIVITY-OF-PLUS) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 again simplifies, rewriting with PLUS-RIGHT-ID2, to the following two new conjectures: Case 6.2. (IMPLIES (AND (NUMBERP C) (NOT (NUMBERP B)) (NOT (EQUAL 0 C)) (NOT (NUMBERP A))) (NOT (EQUAL 0 (PLUS A C)))). This again simplifies, using linear arithmetic, to: T. Case 6.1. (IMPLIES (AND (NUMBERP C) (NOT (NUMBERP B)) (NOT (EQUAL 0 C)) (NUMBERP A)) (NOT (EQUAL A (PLUS A C)))), which again simplifies, using linear arithmetic, to: T. Case 5. (IMPLIES (AND (NOT (NUMBERP C)) (NUMBERP B) (NOT (EQUAL B 0))) (NOT (EQUAL (PLUS A B) (PLUS A C)))), which again simplifies, rewriting with PLUS-RIGHT-ID2, to the following two new goals: Case 5.2. (IMPLIES (AND (NOT (NUMBERP C)) (NUMBERP B) (NOT (EQUAL B 0)) (NOT (NUMBERP A))) (NOT (EQUAL (PLUS A B) 0))). This again simplifies, using linear arithmetic, to: T. Case 5.1. (IMPLIES (AND (NOT (NUMBERP C)) (NUMBERP B) (NOT (EQUAL B 0)) (NUMBERP A)) (NOT (EQUAL (PLUS A B) A))), which again simplifies, using linear arithmetic, to: T. Case 4. (IMPLIES (AND (NOT (NUMBERP C)) (NOT (NUMBERP B))) (EQUAL (EQUAL (PLUS A B) (PLUS A C)) T)), which again simplifies, rewriting with the lemma PLUS-RIGHT-ID2, and opening up EQUAL, to: T. Case 3. (IMPLIES (AND (NOT (NUMBERP C)) (EQUAL B 0)) (EQUAL (EQUAL (PLUS A B) (PLUS A C)) T)), which again simplifies, rewriting with COMMUTATIVITY-OF-PLUS and PLUS-RIGHT-ID2, and expanding the functions EQUAL and PLUS, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP B)) (EQUAL 0 C)) (EQUAL (EQUAL (PLUS A B) (PLUS A C)) T)). This again simplifies, applying PLUS-RIGHT-ID2 and COMMUTATIVITY-OF-PLUS, and opening up EQUAL and PLUS, to: T. Case 1. (IMPLIES (AND (NUMBERP C) (NUMBERP B) (EQUAL B C)) (EQUAL (EQUAL (PLUS A B) (PLUS A C)) T)). But this again simplifies, expanding the function EQUAL, to: T. 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 DIFFERENCE-0 (REWRITE) (IMPLIES (NOT (LESSP Y X)) (EQUAL (DIFFERENCE X Y) '0)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. Let us appeal to the induction principle. 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 (OR (EQUAL X 0) (NOT (NUMBERP X))) (p X Y)) (IMPLIES (AND (NOT (OR (EQUAL X 0) (NOT (NUMBERP X)))) (OR (EQUAL Y 0) (NOT (NUMBERP Y)))) (p X Y)) (IMPLIES (AND (NOT (OR (EQUAL X 0) (NOT (NUMBERP X)))) (NOT (OR (EQUAL Y 0) (NOT (NUMBERP Y)))) (p (SUB1 X) (SUB1 Y))) (p X Y))). 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 Y) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for X. The above induction scheme leads to the following four new goals: Case 4. (IMPLIES (AND (OR (EQUAL X 0) (NOT (NUMBERP X))) (NOT (LESSP Y X))) (EQUAL (DIFFERENCE X Y) 0)). This simplifies, expanding the definitions of NOT, OR, EQUAL, LESSP, and DIFFERENCE, to: T. Case 3. (IMPLIES (AND (NOT (OR (EQUAL X 0) (NOT (NUMBERP X)))) (OR (EQUAL Y 0) (NOT (NUMBERP Y))) (NOT (LESSP Y X))) (EQUAL (DIFFERENCE X Y) 0)). This simplifies, unfolding NOT, OR, EQUAL, and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (OR (EQUAL X 0) (NOT (NUMBERP X)))) (NOT (OR (EQUAL Y 0) (NOT (NUMBERP Y)))) (LESSP (SUB1 Y) (SUB1 X)) (NOT (LESSP Y X))) (EQUAL (DIFFERENCE X Y) 0)). This simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP X 1) (NOT (OR (EQUAL X 0) (NOT (NUMBERP X)))) (NOT (OR (EQUAL Y 0) (NOT (NUMBERP Y)))) (LESSP (SUB1 Y) (SUB1 X)) (NOT (LESSP Y X))) (EQUAL (DIFFERENCE X Y) 0)), which again simplifies, opening up the definitions of SUB1, NUMBERP, EQUAL, LESSP, NOT, and OR, to: T. Case 1. (IMPLIES (AND (NOT (OR (EQUAL X 0) (NOT (NUMBERP X)))) (NOT (OR (EQUAL Y 0) (NOT (NUMBERP Y)))) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0) (NOT (LESSP Y X))) (EQUAL (DIFFERENCE X Y) 0)), which simplifies, using linear arithmetic, to three new conjectures: Case 1.3. (IMPLIES (AND (LESSP X Y) (NOT (OR (EQUAL X 0) (NOT (NUMBERP X)))) (NOT (OR (EQUAL Y 0) (NOT (NUMBERP Y)))) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0) (NOT (LESSP Y X))) (EQUAL (DIFFERENCE X Y) 0)), which again simplifies, using linear arithmetic, to two new conjectures: Case 1.3.2. (IMPLIES (AND (LESSP (SUB1 X) (SUB1 Y)) (LESSP X Y) (NOT (OR (EQUAL X 0) (NOT (NUMBERP X)))) (NOT (OR (EQUAL Y 0) (NOT (NUMBERP Y)))) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0) (NOT (LESSP Y X))) (EQUAL (DIFFERENCE X Y) 0)), which again simplifies, unfolding the functions LESSP, NOT, OR, DIFFERENCE, and EQUAL, to: T. Case 1.3.1. (IMPLIES (AND (LESSP X 1) (LESSP X Y) (NOT (OR (EQUAL X 0) (NOT (NUMBERP X)))) (NOT (OR (EQUAL Y 0) (NOT (NUMBERP Y)))) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0) (NOT (LESSP Y X))) (EQUAL (DIFFERENCE X Y) 0)), which again simplifies, unfolding SUB1, NUMBERP, EQUAL, LESSP, NOT, and OR, to: T. Case 1.2. (IMPLIES (AND (LESSP (SUB1 X) (SUB1 Y)) (NOT (OR (EQUAL X 0) (NOT (NUMBERP X)))) (NOT (OR (EQUAL Y 0) (NOT (NUMBERP Y)))) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0) (NOT (LESSP Y X))) (EQUAL (DIFFERENCE X Y) 0)), which again simplifies, expanding the definitions of NOT, OR, LESSP, DIFFERENCE, and EQUAL, to: T. Case 1.1. (IMPLIES (AND (LESSP X 1) (NOT (OR (EQUAL X 0) (NOT (NUMBERP X)))) (NOT (OR (EQUAL Y 0) (NOT (NUMBERP Y)))) (EQUAL (DIFFERENCE (SUB1 X) (SUB1 Y)) 0) (NOT (LESSP Y X))) (EQUAL (DIFFERENCE X Y) 0)), which again simplifies, opening up the definitions of SUB1, NUMBERP, EQUAL, LESSP, NOT, and OR, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-0 (DISABLE DIFFERENCE-0) [ 0.0 0.0 0.0 ] DIFFERENCE-0-OFF (PROVE-LEMMA EQUAL-DIFFERENCE-0 (REWRITE) (EQUAL (EQUAL '0 (DIFFERENCE X Y)) (NOT (LESSP Y X))) ((ENABLE DIFFERENCE-0) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, unfolding NOT, to two new conjectures: Case 2. (IMPLIES (NOT (EQUAL 0 (DIFFERENCE X Y))) (LESSP Y X)), which again simplifies, rewriting with the lemma DIFFERENCE-0, and opening up the definition of EQUAL, to: T. Case 1. (IMPLIES (EQUAL 0 (DIFFERENCE X Y)) (NOT (LESSP Y X))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EQUAL-DIFFERENCE-0 (DISABLE EQUAL-DIFFERENCE-0) [ 0.0 0.0 0.0 ] EQUAL-DIFFERENCE-0-OFF (PROVE-LEMMA DIFFERENCE-CANCELLATION-0 (REWRITE) (EQUAL (EQUAL X (DIFFERENCE X Y)) (AND (NUMBERP X) (OR (EQUAL X '0) (ZEROP Y)))) ((ENABLE DIFFERENCE-0) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, opening up the functions ZEROP, OR, and AND, to five new goals: Case 5. (IMPLIES (EQUAL X (DIFFERENCE X Y)) (NUMBERP X)), which again simplifies, obviously, to: T. Case 4. (IMPLIES (AND (EQUAL X (DIFFERENCE X Y)) (NOT (EQUAL X 0)) (NOT (EQUAL Y 0))) (NOT (NUMBERP Y))). But this again simplifies, using linear arithmetic, to the conjecture: (IMPLIES (AND (LESSP X Y) (EQUAL X (DIFFERENCE X Y)) (NOT (EQUAL X 0)) (NOT (EQUAL Y 0))) (NOT (NUMBERP Y))). This again simplifies, using linear arithmetic and applying DIFFERENCE-0, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL X (DIFFERENCE X Y))) (NUMBERP X)) (NUMBERP Y)). But this again simplifies, expanding the definition of DIFFERENCE, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL X (DIFFERENCE X Y))) (NUMBERP X)) (NOT (EQUAL Y 0))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP X 0) (NOT (EQUAL X (DIFFERENCE X 0)))) (NOT (NUMBERP X))). But this again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL X (DIFFERENCE X Y))) (NUMBERP X)) (NOT (EQUAL X 0))), which again simplifies, using linear arithmetic, applying the lemma DIFFERENCE-0, and expanding EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-CANCELLATION-0 (DISABLE DIFFERENCE-CANCELLATION-0) [ 0.0 0.0 0.0 ] DIFFERENCE-CANCELLATION-0-OFF (PROVE-LEMMA DIFFERENCE-CANCELLATION-1 (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 DIFFERENCE-0 EQUAL-DIFFERENCE-0) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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, using linear arithmetic, applying DIFFERENCE-0 and EQUAL-DIFFERENCE-0, and expanding 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, using linear arithmetic, rewriting with DIFFERENCE-0 and EQUAL-DIFFERENCE-0, and opening up the functions 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, using linear arithmetic, appealing to the lemma DIFFERENCE-0, and unfolding the function EQUAL, 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, using linear arithmetic, applying DIFFERENCE-0, and unfolding the function 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))). This again simplifies, clearly, to: T. Case 5. (IMPLIES (AND (NOT (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y))) (LESSP X Y)) (LESSP Y Z)). However this again simplifies, using linear arithmetic, applying DIFFERENCE-0, and expanding the function EQUAL, to: T. 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)). However this again simplifies, using linear arithmetic, applying DIFFERENCE-0, and unfolding the definition of 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)). But this again simplifies, using linear arithmetic, to three new goals: 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, appealing to the lemma DIFFERENCE-0, and expanding the definitions of 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, using linear arithmetic, applying DIFFERENCE-0, and unfolding the function 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)). However this again simplifies, using linear arithmetic, applying DIFFERENCE-0, and expanding the function EQUAL, to: T. Case 2. (IMPLIES (AND (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y)) (LESSP X Y)) (NOT (LESSP Y Z))). However this again simplifies, using linear arithmetic and rewriting with the lemmas DIFFERENCE-0 and EQUAL-DIFFERENCE-0, to: T. Case 1. (IMPLIES (AND (EQUAL (DIFFERENCE X Y) (DIFFERENCE Z Y)) (NOT (LESSP X Y)) (LESSP Z Y)) (NOT (LESSP Y X))), which again simplifies, using linear arithmetic and rewriting with DIFFERENCE-0 and EQUAL-DIFFERENCE-0, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-CANCELLATION-1 (DISABLE DIFFERENCE-CANCELLATION-1) [ 0.0 0.0 0.0 ] DIFFERENCE-CANCELLATION-1-OFF (PROVE-LEMMA TIMES-ZERO2 (REWRITE) (IMPLIES (NOT (NUMBERP Y)) (EQUAL (TIMES X Y) '0)) ((ENABLE PLUS-RIGHT-ID2 COMMUTATIVITY-OF-PLUS) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Call the conjecture *1. Perhaps we can prove it by 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 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 two new goals: Case 2. (IMPLIES (AND (ZEROP X) (NOT (NUMBERP Y))) (EQUAL (TIMES X Y) 0)), which simplifies, opening up the definitions of ZEROP, EQUAL, and TIMES, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (TIMES (SUB1 X) Y) 0) (NOT (NUMBERP Y))) (EQUAL (TIMES X Y) 0)), which simplifies, applying PLUS-RIGHT-ID2 and COMMUTATIVITY-OF-PLUS, and unfolding ZEROP, TIMES, NUMBERP, and EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] TIMES-ZERO2 (DISABLE TIMES-ZERO2) [ 0.0 0.0 0.0 ] TIMES-ZERO2-OFF (PROVE-LEMMA DISTRIBUTIVITY-OF-TIMES-OVER-PLUS (REWRITE) (EQUAL (TIMES X (PLUS Y Z)) (PLUS (TIMES X Y) (TIMES X Z))) ((ENABLE COMMUTATIVITY2-OF-PLUS ASSOCIATIVITY-OF-PLUS) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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.0 0.0 ] DISTRIBUTIVITY-OF-TIMES-OVER-PLUS (DISABLE DISTRIBUTIVITY-OF-TIMES-OVER-PLUS) [ 0.0 0.0 0.0 ] DISTRIBUTIVITY-OF-TIMES-OVER-PLUS-OFF (PROVE-LEMMA TIMES-ADD1 (REWRITE) (EQUAL (TIMES X (ADD1 Y)) (IF (NUMBERP Y) (PLUS X (TIMES X Y)) (FIX X))) ((ENABLE PLUS-RIGHT-ID2 COMMUTATIVITY-OF-PLUS) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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-RIGHT-ID2 and COMMUTATIVITY-OF-PLUS, and expanding the definitions of ZEROP, EQUAL, TIMES, PLUS, FIX, and NUMBERP, 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 SUB1-ADD1, and unfolding the functions ZEROP, FIX, TIMES, and PLUS, 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, and unfolding TIMES, to the new formula: (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (NUMBERP Y)) (EQUAL (TIMES (SUB1 X) 1) (SUB1 X))) (EQUAL (PLUS 1 (SUB1 X)) X)), which again simplifies, using linear arithmetic, 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)))), which again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] TIMES-ADD1 (DISABLE TIMES-ADD1) [ 0.0 0.0 0.0 ] TIMES-ADD1-OFF (PROVE-LEMMA COMMUTATIVITY-OF-TIMES (REWRITE) (EQUAL (TIMES X Y) (TIMES Y X)) ((ENABLE TIMES-ZERO2 TIMES-ADD1) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 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 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 two new conjectures: Case 2. (IMPLIES (ZEROP X) (EQUAL (TIMES X Y) (TIMES Y X))). This simplifies, applying TIMES-ZERO2, and opening up the functions ZEROP, EQUAL, and TIMES, to: (IMPLIES (EQUAL X 0) (EQUAL 0 (TIMES Y 0))). This again simplifies, obviously, to: (EQUAL 0 (TIMES Y 0)), which we will name *1.1. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (TIMES (SUB1 X) Y) (TIMES Y (SUB1 X)))) (EQUAL (TIMES X Y) (TIMES Y X))). This simplifies, unfolding the definitions of ZEROP and TIMES, to the new goal: (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL (TIMES (SUB1 X) Y) (TIMES Y (SUB1 X)))) (EQUAL (PLUS Y (TIMES Y (SUB1 X))) (TIMES Y X))). Applying the lemma SUB1-ELIM, replace X by (ADD1 Z) to eliminate (SUB1 X). We employ the type restriction lemma noted when SUB1 was introduced to restrict the new variable. This produces the new goal: (IMPLIES (AND (NUMBERP Z) (NOT (EQUAL (ADD1 Z) 0)) (EQUAL (TIMES Z Y) (TIMES Y Z))) (EQUAL (PLUS Y (TIMES Y Z)) (TIMES Y (ADD1 Z)))), which further simplifies, applying the lemma TIMES-ADD1, to: T. So we now return to: (EQUAL 0 (TIMES Y 0)), which is formula *1.1 above. 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 Y) (p Y)) (IMPLIES (AND (NOT (ZEROP Y)) (p (SUB1 Y))) (p Y))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP 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 produces two new conjectures: Case 2. (IMPLIES (ZEROP Y) (EQUAL 0 (TIMES Y 0))), which simplifies, unfolding ZEROP, TIMES, and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP Y)) (EQUAL 0 (TIMES (SUB1 Y) 0))) (EQUAL 0 (TIMES Y 0))), which simplifies, unfolding the definitions of ZEROP, TIMES, PLUS, and EQUAL, to: T. That finishes the proof of *1.1, which, in turn, finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] COMMUTATIVITY-OF-TIMES (DISABLE COMMUTATIVITY-OF-TIMES) [ 0.0 0.0 0.0 ] COMMUTATIVITY-OF-TIMES-OFF (PROVE-LEMMA COMMUTATIVITY2-OF-TIMES (REWRITE) (EQUAL (TIMES X (TIMES Y Z)) (TIMES Y (TIMES X Z))) ((ENABLE DISTRIBUTIVITY-OF-TIMES-OVER-PLUS COMMUTATIVITY-OF-TIMES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 DISTRIBUTIVITY-OF-TIMES-OVER-PLUS, and opening up the functions ZEROP and TIMES, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] COMMUTATIVITY2-OF-TIMES (DISABLE COMMUTATIVITY2-OF-TIMES) [ 0.0 0.0 0.0 ] COMMUTATIVITY2-OF-TIMES-OFF (PROVE-LEMMA ASSOCIATIVITY-OF-TIMES (REWRITE) (EQUAL (TIMES (TIMES X Y) Z) (TIMES X (TIMES Y Z))) ((ENABLE COMMUTATIVITY-OF-TIMES COMMUTATIVITY2-OF-TIMES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 (DISABLE ASSOCIATIVITY-OF-TIMES) [ 0.0 0.0 0.0 ] ASSOCIATIVITY-OF-TIMES-OFF (PROVE-LEMMA EQUAL-TIMES-0 (REWRITE) (EQUAL (EQUAL (TIMES X Y) '0) (OR (ZEROP X) (ZEROP Y))) ((ENABLE PLUS-EQUAL-0 TIMES-ZERO2 COMMUTATIVITY-OF-TIMES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, opening up the functions ZEROP and OR, to five new conjectures: Case 5. (IMPLIES (NOT (EQUAL (TIMES X Y) 0)) (NUMBERP Y)), which again simplifies, applying TIMES-ZERO2, and unfolding the function EQUAL, to: T. Case 4. (IMPLIES (NOT (EQUAL (TIMES X Y) 0)) (NOT (EQUAL Y 0))). However this again simplifies, applying COMMUTATIVITY-OF-TIMES, and unfolding the functions EQUAL and TIMES, to: T. Case 3. (IMPLIES (NOT (EQUAL (TIMES X Y) 0)) (NUMBERP X)). This again simplifies, opening up the definitions of TIMES and EQUAL, to: T. Case 2. (IMPLIES (NOT (EQUAL (TIMES X Y) 0)) (NOT (EQUAL X 0))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (EQUAL (TIMES X Y) 0) (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0))) (NOT (NUMBERP Y))), which we will name *1. Perhaps we can prove it by induction. There is only one plausible induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP X) (p Y X)) (IMPLIES (AND (NOT (ZEROP X)) (p Y (SUB1 X))) (p Y X))). 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 produces three new conjectures: Case 3. (IMPLIES (AND (ZEROP X) (EQUAL (TIMES X Y) 0) (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0))) (NOT (NUMBERP Y))), which simplifies, unfolding the function ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP X)) (NOT (EQUAL (TIMES (SUB1 X) Y) 0)) (EQUAL (TIMES X Y) 0) (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0))) (NOT (NUMBERP Y))), which simplifies, rewriting with the lemma PLUS-EQUAL-0, and expanding the functions ZEROP and TIMES, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (SUB1 X) 0) (EQUAL (TIMES X Y) 0) (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL Y 0))) (NOT (NUMBERP Y))), which simplifies, rewriting with the lemma PLUS-EQUAL-0, and expanding the definitions of ZEROP and TIMES, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] EQUAL-TIMES-0 (DISABLE EQUAL-TIMES-0) [ 0.0 0.0 0.0 ] EQUAL-TIMES-0-OFF (DEFN EXP (I J) (IF (ZEROP J) '1 (TIMES I (EXP I (SUB1 J)))) NIL) 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 (PROVE-LEMMA EXP-PLUS (REWRITE) (EQUAL (EXP I (PLUS J K)) (TIMES (EXP I J) (EXP I K))) ((ENABLE COMMUTATIVITY-OF-TIMES ASSOCIATIVITY-OF-TIMES EXP) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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, opening up the functions ZEROP, EQUAL, PLUS, and EXP, to four new formulas: Case 2.4. (IMPLIES (AND (EQUAL J 0) (NOT (NUMBERP K))) (EQUAL (EXP I 0) (TIMES 1 (EXP I K)))), which again simplifies, opening up EQUAL, EXP, and TIMES, to: T. Case 2.3. (IMPLIES (AND (EQUAL J 0) (NUMBERP K)) (EQUAL (EXP I K) (TIMES 1 (EXP I K)))), which again simplifies, using linear arithmetic, to: T. Case 2.2. (IMPLIES (AND (NOT (NUMBERP J)) (NOT (NUMBERP K))) (EQUAL (EXP I 0) (TIMES 1 (EXP I K)))), which again simplifies, opening up the definitions of EQUAL, EXP, and TIMES, to: T. Case 2.1. (IMPLIES (AND (NOT (NUMBERP J)) (NUMBERP K)) (EQUAL (EXP I K) (TIMES 1 (EXP I K)))), which again simplifies, using linear arithmetic, 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, rewriting with COMMUTATIVITY-OF-TIMES, SUB1-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.0 0.1 ] EXP-PLUS (DISABLE EXP-PLUS) [ 0.0 0.0 0.0 ] EXP-PLUS-OFF (PROVE-LEMMA EQUAL-LESSP (REWRITE) (EQUAL (EQUAL (LESSP X Y) Z) (IF (LESSP X Y) (EQUAL '*1*TRUE Z) (EQUAL '*1*FALSE Z))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, clearly, to the following four new formulas: Case 4. (IMPLIES (AND (EQUAL (LESSP X Y) Z) (NOT (LESSP X Y))) (NOT Z)). This again simplifies, trivially, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL (LESSP X Y) Z)) (NOT (LESSP X Y))) Z). This again simplifies, clearly, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL (LESSP X Y) Z)) (LESSP X Y)) (NOT (EQUAL T Z))). This again simplifies, obviously, to: T. Case 1. (IMPLIES (AND (EQUAL (LESSP X Y) Z) (LESSP X Y)) (EQUAL (EQUAL T Z) T)). This again simplifies, obviously, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EQUAL-LESSP (DISABLE EQUAL-LESSP) [ 0.0 0.0 0.0 ] EQUAL-LESSP-OFF (PROVE-LEMMA DIFFERENCE-ELIM (ELIM) (IMPLIES (AND (NUMBERP Y) (NOT (LESSP Y X))) (EQUAL (PLUS X (DIFFERENCE Y X)) Y)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-ELIM (PROVE-LEMMA REMAINDER-QUOTIENT (REWRITE) (EQUAL (PLUS (REMAINDER X Y) (TIMES Y (QUOTIENT X Y))) (FIX X)) ((ENABLE COMMUTATIVITY2-OF-PLUS COMMUTATIVITY-OF-PLUS TIMES-ZERO2 TIMES-ADD1 COMMUTATIVITY-OF-TIMES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 COMMUTATIVITY-OF-TIMES, and opening up LESSP, REMAINDER, QUOTIENT, EQUAL, 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 COMMUTATIVITY-OF-PLUS, TIMES-ZERO2, and COMMUTATIVITY-OF-TIMES, and unfolding the functions ZEROP, EQUAL, REMAINDER, QUOTIENT, TIMES, and PLUS, 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 COMMUTATIVITY-OF-TIMES and COMMUTATIVITY-OF-PLUS, and opening up the functions ZEROP, REMAINDER, QUOTIENT, EQUAL, TIMES, and PLUS, 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 and COMMUTATIVITY2-OF-PLUS, and opening up the functions ZEROP, REMAINDER, and QUOTIENT, 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)) (EQUAL (PLUS Y (DIFFERENCE X Y)) X)). But this again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-QUOTIENT (DISABLE REMAINDER-QUOTIENT) [ 0.0 0.0 0.0 ] REMAINDER-QUOTIENT-OFF (PROVE-LEMMA REMAINDER-WRT-1 (REWRITE) (EQUAL (REMAINDER Y '1) '0) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 1) (p Y)) (IMPLIES (AND (NOT (ZEROP 1)) (LESSP Y 1)) (p Y)) (IMPLIES (AND (NOT (ZEROP 1)) (NOT (LESSP Y 1)) (p (DIFFERENCE Y 1))) (p Y))). Linear arithmetic, the lemmas COUNT-NUMBERP and COUNT-NOT-LESSP, and the definition of ZEROP 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 generates the following three new formulas: Case 3. (IMPLIES (ZEROP 1) (EQUAL (REMAINDER Y 1) 0)). This simplifies, expanding the definition of ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP 1)) (LESSP Y 1)) (EQUAL (REMAINDER Y 1) 0)). This simplifies, opening up the functions ZEROP, REMAINDER, EQUAL, and NUMBERP, to the new goal: (IMPLIES (AND (LESSP Y 1) (NUMBERP Y)) (EQUAL Y 0)), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP 1)) (NOT (LESSP Y 1)) (EQUAL (REMAINDER (DIFFERENCE Y 1) 1) 0)) (EQUAL (REMAINDER Y 1) 0)), which simplifies, expanding ZEROP, REMAINDER, EQUAL, and NUMBERP, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-WRT-1 (DISABLE REMAINDER-WRT-1) [ 0.0 0.0 0.0 ] REMAINDER-WRT-1-OFF (PROVE-LEMMA REMAINDER-WRT-12 (REWRITE) (IMPLIES (NOT (NUMBERP X)) (EQUAL (REMAINDER Y X) (FIX Y))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, unfolding the definitions of REMAINDER and FIX, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-WRT-12 (DISABLE REMAINDER-WRT-12) [ 0.0 0.0 0.0 ] REMAINDER-WRT-12-OFF (PROVE-LEMMA LESSP-REMAINDER2 (REWRITE GENERALIZE) (EQUAL (LESSP (REMAINDER X Y) Y) (NOT (ZEROP Y))) ((ENABLE EQUAL-LESSP REMAINDER-WRT-12) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, applying EQUAL-LESSP, and unfolding the functions ZEROP and NOT, to three new goals: Case 3. (IMPLIES (AND (NOT (LESSP (REMAINDER X Y) Y)) (NOT (EQUAL Y 0))) (NOT (NUMBERP Y))), which we will name *1. Case 2. (IMPLIES (LESSP (REMAINDER X Y) Y) (NUMBERP Y)). This again simplifies, applying REMAINDER-WRT-12, and unfolding the definition of LESSP, to: T. Case 1. (IMPLIES (LESSP (REMAINDER X Y) Y) (NOT (EQUAL Y 0))). This again simplifies, using linear arithmetic, to: T. So next consider: (IMPLIES (AND (NOT (LESSP (REMAINDER X Y) Y)) (NOT (EQUAL Y 0))) (NOT (NUMBERP Y))), named *1 above. Let us appeal to the induction principle. The recursive terms in the conjecture suggest two inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (ZEROP Y) (p Y X)) (IMPLIES (AND (NOT (ZEROP Y)) (LESSP X Y)) (p Y X)) (IMPLIES (AND (NOT (ZEROP Y)) (NOT (LESSP X Y)) (p Y (DIFFERENCE X Y))) (p Y X))). Linear arithmetic, the lemmas COUNT-NUMBERP and COUNT-NOT-LESSP, 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 produces three new conjectures: Case 3. (IMPLIES (AND (ZEROP Y) (NOT (LESSP (REMAINDER X Y) Y)) (NOT (EQUAL Y 0))) (NOT (NUMBERP Y))), which simplifies, unfolding the function ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP Y)) (LESSP X Y) (NOT (LESSP (REMAINDER X Y) Y)) (NOT (EQUAL Y 0))) (NOT (NUMBERP Y))), which simplifies, unfolding ZEROP and REMAINDER, to: (IMPLIES (AND (LESSP X Y) (NOT (NUMBERP X)) (NOT (LESSP 0 Y)) (NOT (EQUAL Y 0))) (NOT (NUMBERP Y))). This 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 (LESSP (REMAINDER X Y) Y)) (NOT (EQUAL Y 0))) (NOT (NUMBERP Y))), which simplifies, expanding the functions ZEROP and REMAINDER, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-REMAINDER2 (DISABLE LESSP-REMAINDER2) [ 0.0 0.0 0.0 ] LESSP-REMAINDER2-OFF (PROVE-LEMMA REMAINDER-X-X (REWRITE) (EQUAL (REMAINDER X X) '0) ((ENABLE DIFFERENCE-0) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, rewriting with DIFFERENCE-0, and expanding the functions NUMBERP, REMAINDER, LESSP, and EQUAL, 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 (DISABLE REMAINDER-X-X) [ 0.0 0.0 0.0 ] REMAINDER-X-X-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 REMAINDER-QUOTIENT) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 REMAINDER-QUOTIENT, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-QUOTIENT-ELIM (PROVE-LEMMA LESSP-TIMES-1 (REWRITE) (IMPLIES (NOT (ZEROP I)) (NOT (LESSP (TIMES I J) J))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) WARNING: Note that the proposed lemma LESSP-TIMES-1 is to be stored as zero type prescription rules, zero compound recognizer rules, one linear rule, and zero replacement rules. This formula can be simplified, using the abbreviations ZEROP, NOT, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I)) (NOT (LESSP (TIMES I J) J))), 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 I) (p I J)) (IMPLIES (AND (NOT (ZEROP I)) (p (SUB1 I) J)) (p I J))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP can be used to show that the measure (COUNT I) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme produces three new conjectures: Case 3. (IMPLIES (AND (ZEROP I) (NOT (EQUAL I 0)) (NUMBERP I)) (NOT (LESSP (TIMES I J) J))), which simplifies, opening up the definition of ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP I)) (EQUAL (SUB1 I) 0) (NOT (EQUAL I 0)) (NUMBERP I)) (NOT (LESSP (TIMES I J) J))), which simplifies, unfolding the functions ZEROP and TIMES, to the goal: (IMPLIES (AND (EQUAL (SUB1 I) 0) (NOT (EQUAL I 0)) (NUMBERP I)) (NOT (LESSP (PLUS J (TIMES (SUB1 I) J)) J))). However this again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP I)) (NOT (LESSP (TIMES (SUB1 I) J) J)) (NOT (EQUAL I 0)) (NUMBERP I)) (NOT (LESSP (TIMES I J) J))), which simplifies, opening up ZEROP and TIMES, to: (IMPLIES (AND (NOT (LESSP (TIMES (SUB1 I) J) J)) (NOT (EQUAL I 0)) (NUMBERP I)) (NOT (LESSP (PLUS J (TIMES (SUB1 I) J)) J))). 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-TIMES-1 (DISABLE LESSP-TIMES-1) [ 0.0 0.0 0.0 ] LESSP-TIMES-1-OFF (PROVE-LEMMA LESSP-TIMES-2 (REWRITE) (IMPLIES (NOT (ZEROP I)) (NOT (LESSP (TIMES J I) J))) ((ENABLE COMMUTATIVITY-OF-TIMES LESSP-TIMES-1) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) WARNING: Note that the proposed lemma LESSP-TIMES-2 is to be stored as zero type prescription rules, zero compound recognizer rules, one linear rule, and zero replacement rules. This formula can be simplified, using the abbreviations ZEROP, NOT, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I)) (NOT (LESSP (TIMES J I) J))), which simplifies, rewriting with the lemma COMMUTATIVITY-OF-TIMES, to: (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I)) (NOT (LESSP (TIMES I J) J))). But this again simplifies, using linear arithmetic and applying the lemma LESSP-TIMES-1, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-TIMES-2 (DISABLE LESSP-TIMES-2) [ 0.0 0.0 0.0 ] LESSP-TIMES-2-OFF (PROVE-LEMMA LESSP-QUOTIENT1 (REWRITE) (EQUAL (LESSP (QUOTIENT I J) I) (AND (NOT (ZEROP I)) (OR (ZEROP J) (NOT (EQUAL J '1))))) ((ENABLE PLUS-EQUAL-0 DIFFERENCE-0 EQUAL-DIFFERENCE-0 EQUAL-TIMES-0 EQUAL-LESSP LESSP-REMAINDER2 REMAINDER-QUOTIENT-ELIM LESSP-TIMES-1) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, rewriting with EQUAL-LESSP, and opening up the definitions of ZEROP, NOT, OR, and AND, to the following six new formulas: Case 6. (IMPLIES (AND (NOT (LESSP (QUOTIENT I J) I)) (NOT (EQUAL I 0)) (NUMBERP I)) (NOT (EQUAL J 0))). But this again simplifies, opening up EQUAL, QUOTIENT, and LESSP, to: T. Case 5. (IMPLIES (AND (NOT (LESSP (QUOTIENT I J) I)) (NOT (EQUAL I 0)) (NUMBERP I)) (NUMBERP J)), which again simplifies, unfolding the definitions of QUOTIENT, EQUAL, and LESSP, to: T. Case 4. (IMPLIES (AND (NOT (LESSP (QUOTIENT I J) I)) (NOT (EQUAL I 0)) (NUMBERP I)) (EQUAL J 1)). 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-REMAINDER2, 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 4.3. (IMPLIES (AND (EQUAL J 0) (NOT (LESSP (QUOTIENT I J) I)) (NOT (EQUAL I 0)) (NUMBERP I)) (EQUAL J 1)). However this further simplifies, opening up the definitions of EQUAL, QUOTIENT, and LESSP, to: T. Case 4.2. (IMPLIES (AND (NOT (NUMBERP J)) (NOT (LESSP (QUOTIENT I J) I)) (NOT (EQUAL I 0)) (NUMBERP I)) (EQUAL J 1)), which further simplifies, opening up QUOTIENT, EQUAL, and LESSP, to: T. Case 4.1. (IMPLIES (AND (NUMBERP X) (NUMBERP Z) (EQUAL (LESSP Z J) (NOT (ZEROP J))) (NUMBERP J) (NOT (EQUAL J 0)) (NOT (LESSP X (PLUS Z (TIMES J X)))) (NOT (EQUAL (PLUS Z (TIMES J X)) 0))) (EQUAL J 1)), which further simplifies, rewriting with the lemmas EQUAL-TIMES-0 and PLUS-EQUAL-0, and expanding the functions ZEROP and NOT, to two new goals: Case 4.1.2. (IMPLIES (AND (NUMBERP X) (NUMBERP Z) (LESSP Z J) (NUMBERP J) (NOT (EQUAL J 0)) (NOT (LESSP X (PLUS Z (TIMES J X)))) (NOT (EQUAL Z 0))) (EQUAL J 1)), which again simplifies, using linear arithmetic and applying LESSP-TIMES-1, to: T. Case 4.1.1. (IMPLIES (AND (NUMBERP X) (NUMBERP Z) (LESSP Z J) (NUMBERP J) (NOT (EQUAL J 0)) (NOT (LESSP X (PLUS Z (TIMES J X)))) (NOT (EQUAL X 0))) (EQUAL J 1)), 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)) (OR (ZEROP J) (NOT (EQUAL J 1))))). We gave this the name *1 above. Perhaps we can prove it by induction. Two inductions are suggested by terms in the conjecture, 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 inform us that the measure (COUNT I) 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 formulas: Case 3. (IMPLIES (ZEROP J) (EQUAL (LESSP (QUOTIENT I J) I) (AND (NOT (ZEROP I)) (OR (ZEROP J) (NOT (EQUAL J 1)))))). This simplifies, expanding the definitions of ZEROP, EQUAL, QUOTIENT, LESSP, NOT, OR, and AND, to the following four new goals: Case 3.4. (IMPLIES (AND (EQUAL J 0) (NOT (EQUAL I 0)) (NOT (NUMBERP I))) (EQUAL (NUMBERP I) F)). This again simplifies, clearly, 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, clearly, 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)) (OR (ZEROP J) (NOT (EQUAL J 1)))))). This simplifies, expanding the definitions of ZEROP, QUOTIENT, EQUAL, LESSP, NOT, OR, 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, clearly, 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, obviously, 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, obviously, 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))) (OR (ZEROP J) (NOT (EQUAL J 1)))))) (EQUAL (LESSP (QUOTIENT I J) I) (AND (NOT (ZEROP I)) (OR (ZEROP J) (NOT (EQUAL J 1)))))). This simplifies, applying EQUAL-DIFFERENCE-0, EQUAL-LESSP, and SUB1-ADD1, and unfolding the functions ZEROP, NOT, OR, AND, EQUAL, QUOTIENT, and LESSP, to four new goals: Case 1.4. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (NOT (LESSP I J)) (NOT (LESSP (QUOTIENT (DIFFERENCE I J) J) (DIFFERENCE I J))) (EQUAL J 1)) (NOT (LESSP (QUOTIENT I 1) I))), which again simplifies, unfolding EQUAL and NUMBERP, to the goal: (IMPLIES (AND (NOT (LESSP I 1)) (NOT (LESSP (QUOTIENT (DIFFERENCE I 1) 1) (DIFFERENCE I 1)))) (NOT (LESSP (QUOTIENT I 1) I))). However this again simplifies, applying SUB1-ADD1, and opening up the functions NUMBERP, EQUAL, QUOTIENT, and LESSP, to the new formula: (IMPLIES (AND (NOT (LESSP I 1)) (NOT (LESSP (QUOTIENT (DIFFERENCE I 1) 1) (DIFFERENCE I 1))) (NOT (EQUAL I 0)) (NUMBERP I)) (NOT (LESSP (QUOTIENT (DIFFERENCE I 1) 1) (SUB1 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 (QUOTIENT (DIFFERENCE I J) J) (DIFFERENCE I J))) (NOT (LESSP J I)) (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 (QUOTIENT (DIFFERENCE 1 1) 1) (DIFFERENCE 1 1))) (NOT (LESSP 1 1)) (NOT (EQUAL 1 0)) (NUMBERP 1)) (EQUAL (LESSP (QUOTIENT (DIFFERENCE 1 1) 1) (SUB1 1)) F)). However this again simplifies, unfolding 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 (QUOTIENT (DIFFERENCE I J) J) (DIFFERENCE I J))) (NOT (LESSP J I)) (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 the conjecture: (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I) (NOT (LESSP I I)) (NOT (LESSP (QUOTIENT (DIFFERENCE I I) I) (DIFFERENCE I I))) (NOT (LESSP I I)) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL I 1))) (EQUAL (LESSP (QUOTIENT (DIFFERENCE I I) I) (SUB1 I)) T)). This again simplifies, applying DIFFERENCE-0, and expanding the definitions of LESSP, EQUAL, and QUOTIENT, to the new formula: (IMPLIES (AND (NOT (LESSP I I)) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL I 1))) (NOT (EQUAL (SUB1 I) 0))), which again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (NOT (LESSP I J)) (LESSP (QUOTIENT (DIFFERENCE I J) J) (DIFFERENCE I J)) (LESSP J I) (NOT (EQUAL J 1)) (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 (QUOTIENT (DIFFERENCE I J) J) (DIFFERENCE I J)) (LESSP J I) (NOT (EQUAL J 1)) (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.0 0.0 ] LESSP-QUOTIENT1 (DISABLE LESSP-QUOTIENT1) [ 0.0 0.0 0.0 ] LESSP-QUOTIENT1-OFF (PROVE-LEMMA LESSP-REMAINDER1 (REWRITE) (EQUAL (LESSP (REMAINDER X Y) X) (AND (NOT (ZEROP Y)) (AND (NOT (ZEROP X)) (NOT (LESSP X Y))))) ((ENABLE PLUS-EQUAL-0 COMMUTATIVITY-OF-TIMES EQUAL-TIMES-0 EQUAL-LESSP REMAINDER-WRT-12 LESSP-REMAINDER2 REMAINDER-QUOTIENT-ELIM) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, rewriting with EQUAL-LESSP, and opening up the definitions of ZEROP, NOT, and AND, to the following six new formulas: Case 6. (IMPLIES (AND (NOT (LESSP (REMAINDER X Y) X)) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL X 0)) (NUMBERP X)) (LESSP X Y)). Appealing to the lemma REMAINDER-QUOTIENT-ELIM, we now replace X by (PLUS Z (TIMES Y V)) to eliminate (REMAINDER X Y) and (QUOTIENT X Y). We rely upon LESSP-REMAINDER2, 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: (IMPLIES (AND (NUMBERP Z) (EQUAL (LESSP Z Y) (NOT (ZEROP Y))) (NUMBERP V) (NOT (LESSP Z (PLUS Z (TIMES Y V)))) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL (PLUS Z (TIMES Y V)) 0))) (LESSP (PLUS Z (TIMES Y V)) Y)). However this further simplifies, appealing to the lemmas COMMUTATIVITY-OF-TIMES, EQUAL-TIMES-0, and PLUS-EQUAL-0, and unfolding the definitions of ZEROP and NOT, to two new conjectures: Case 6.2. (IMPLIES (AND (NUMBERP Z) (LESSP Z Y) (NUMBERP V) (NOT (LESSP Z (PLUS Z (TIMES V Y)))) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL Z 0))) (LESSP (PLUS Z (TIMES V Y)) Y)), which again simplifies, using linear arithmetic, to: T. Case 6.1. (IMPLIES (AND (NUMBERP Z) (LESSP Z Y) (NUMBERP V) (NOT (LESSP Z (PLUS Z (TIMES V Y)))) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL V 0))) (LESSP (PLUS Z (TIMES V Y)) Y)), which again simplifies, using linear arithmetic, to: T. Case 5. (IMPLIES (LESSP (REMAINDER X Y) X) (NOT (LESSP X Y))), which again simplifies, unfolding the functions REMAINDER and LESSP, to two new formulas: Case 5.2. (IMPLIES (AND (NOT (NUMBERP X)) (LESSP 0 X) (NOT (EQUAL Y 0))) (NOT (NUMBERP Y))), which again simplifies, opening up LESSP, to: T. Case 5.1. (IMPLIES (AND (NUMBERP X) (LESSP X X)) (NOT (LESSP X Y))), which again simplifies, using linear arithmetic, to: T. Case 4. (IMPLIES (LESSP (REMAINDER X Y) X) (NUMBERP X)), which again simplifies, expanding the functions LESSP and REMAINDER, to: T. Case 3. (IMPLIES (LESSP (REMAINDER X Y) X) (NOT (EQUAL X 0))), which again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (LESSP (REMAINDER X Y) X) (NUMBERP Y)), which again simplifies, rewriting with REMAINDER-WRT-12, to the following two new conjectures: Case 2.2. (IMPLIES (AND (NOT (NUMBERP X)) (LESSP 0 X)) (NUMBERP Y)). However this again simplifies, unfolding the function LESSP, to: T. Case 2.1. (IMPLIES (AND (NUMBERP X) (LESSP X X)) (NUMBERP Y)), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (LESSP (REMAINDER X Y) X) (NOT (EQUAL Y 0))), which again simplifies, opening up the definitions of EQUAL and REMAINDER, to two new formulas: Case 1.2. (IMPLIES (NOT (NUMBERP X)) (NOT (LESSP 0 X))), which again simplifies, unfolding the function LESSP, to: T. Case 1.1. (IMPLIES (NUMBERP X) (NOT (LESSP X X))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-REMAINDER1 (DISABLE LESSP-REMAINDER1) [ 0.0 0.0 0.0 ] LESSP-REMAINDER1-OFF (PROVE-LEMMA DIFFERENCE-PLUS1 (REWRITE) (EQUAL (DIFFERENCE (PLUS X Y) X) (FIX Y)) ((ENABLE DIFFERENCE-PLUS) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, appealing to the lemma DIFFERENCE-PLUS, and expanding the function FIX, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS1 (DISABLE DIFFERENCE-PLUS1) [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS1-OFF (PROVE-LEMMA DIFFERENCE-PLUS2 (REWRITE) (EQUAL (DIFFERENCE (PLUS Y X) X) (FIX Y)) ((ENABLE COMMUTATIVITY-OF-PLUS DIFFERENCE-PLUS1) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, appealing to the lemmas COMMUTATIVITY-OF-PLUS and DIFFERENCE-PLUS1, and expanding the function FIX, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS2 (DISABLE DIFFERENCE-PLUS2) [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS2-OFF (PROVE-LEMMA DIFFERENCE-PLUS-CANCELATION (REWRITE) (EQUAL (DIFFERENCE (PLUS X Y) (PLUS X Z)) (DIFFERENCE Y Z)) ((ENABLE DIFFERENCE-0) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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))). But this again simplifies, using linear arithmetic, applying DIFFERENCE-0, and opening up the function EQUAL, to: T. Case 1. (IMPLIES (LESSP Y Z) (EQUAL (DIFFERENCE (PLUS X Y) (PLUS X Z)) (DIFFERENCE Y Z))). But this again simplifies, using linear arithmetic, applying the lemma DIFFERENCE-0, and expanding EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS-CANCELATION (DISABLE DIFFERENCE-PLUS-CANCELATION) [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS-CANCELATION-OFF (PROVE-LEMMA TIMES-DIFFERENCE (REWRITE) (EQUAL (TIMES X (DIFFERENCE C W)) (DIFFERENCE (TIMES C X) (TIMES W X))) ((ENABLE PLUS-EQUAL-0 DIFFERENCE-0 EQUAL-DIFFERENCE-0 COMMUTATIVITY-OF-TIMES EQUAL-TIMES-0 DIFFERENCE-ELIM DIFFERENCE-PLUS-CANCELATION) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) . Appealing to the lemma DIFFERENCE-ELIM, we now replace C by (PLUS W Z) to eliminate (DIFFERENCE C W). We use the type restriction lemma noted when DIFFERENCE was introduced to constrain the new variable. The result is three new goals: Case 3. (IMPLIES (LESSP C W) (EQUAL (TIMES X (DIFFERENCE C W)) (DIFFERENCE (TIMES C X) (TIMES W X)))), which simplifies, using linear arithmetic, appealing to the lemmas DIFFERENCE-0, COMMUTATIVITY-OF-TIMES, and EQUAL-DIFFERENCE-0, and unfolding EQUAL and TIMES, to: (IMPLIES (LESSP C W) (NOT (LESSP (TIMES W X) (TIMES C 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 (TIMES X (DIFFERENCE C W)) (DIFFERENCE (TIMES C X) (TIMES W X))), which we named *1 above. We will appeal to 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 C) (p X C W)) (IMPLIES (AND (NOT (ZEROP C)) (ZEROP W)) (p X C W)) (IMPLIES (AND (NOT (ZEROP C)) (NOT (ZEROP W)) (p X (SUB1 C) (SUB1 W))) (p X C W))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT C) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for W. The above induction scheme produces the following three new goals: Case 3. (IMPLIES (ZEROP C) (EQUAL (TIMES X (DIFFERENCE C W)) (DIFFERENCE (TIMES C X) (TIMES W X)))). This simplifies, using linear arithmetic, rewriting with DIFFERENCE-0 and COMMUTATIVITY-OF-TIMES, and unfolding the functions ZEROP, EQUAL, and TIMES, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP C)) (ZEROP W)) (EQUAL (TIMES X (DIFFERENCE C W)) (DIFFERENCE (TIMES C X) (TIMES W X)))), which simplifies, appealing to the lemmas COMMUTATIVITY-OF-TIMES, PLUS-EQUAL-0, and EQUAL-TIMES-0, and unfolding the functions ZEROP, EQUAL, DIFFERENCE, and TIMES, to four new conjectures: Case 2.4. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (EQUAL W 0) (NOT (NUMBERP X))) (EQUAL (PLUS X (TIMES (SUB1 C) X)) 0)), which again simplifies, applying EQUAL-TIMES-0, and opening up the function PLUS, to: T. Case 2.3. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (EQUAL W 0) (EQUAL X 0)) (EQUAL (PLUS X (TIMES (SUB1 C) X)) 0)). But this again simplifies, applying COMMUTATIVITY-OF-TIMES, and expanding the functions EQUAL, TIMES, and PLUS, to: T. Case 2.2. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (NUMBERP W)) (NOT (NUMBERP X))) (EQUAL (PLUS X (TIMES (SUB1 C) X)) 0)). This again simplifies, applying EQUAL-TIMES-0, and unfolding the definition of PLUS, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (NUMBERP W)) (EQUAL X 0)) (EQUAL (PLUS X (TIMES (SUB1 C) X)) 0)). However this again simplifies, rewriting with COMMUTATIVITY-OF-TIMES, and expanding the definitions of EQUAL, TIMES, and PLUS, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP C)) (NOT (ZEROP W)) (EQUAL (TIMES X (DIFFERENCE (SUB1 C) (SUB1 W))) (DIFFERENCE (TIMES (SUB1 C) X) (TIMES (SUB1 W) X)))) (EQUAL (TIMES X (DIFFERENCE C W)) (DIFFERENCE (TIMES C X) (TIMES W X)))). This simplifies, rewriting with DIFFERENCE-PLUS-CANCELATION, and unfolding the definitions of ZEROP, DIFFERENCE, and TIMES, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] TIMES-DIFFERENCE (DISABLE TIMES-DIFFERENCE) [ 0.0 0.0 0.0 ] TIMES-DIFFERENCE-OFF (DEFN DIVIDES (X Y) (ZEROP (REMAINDER Y X)) NIL) Note that (OR (FALSEP (DIVIDES X Y)) (TRUEP (DIVIDES X Y))) is a theorem. [ 0.0 0.0 0.0 ] DIVIDES (PROVE-LEMMA DIVIDES-TIMES (REWRITE) (EQUAL (REMAINDER (TIMES X Z) Z) '0) ((ENABLE COMMUTATIVITY-OF-TIMES EQUAL-TIMES-0 REMAINDER-WRT-12 DIFFERENCE-PLUS1) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. Perhaps we can prove it by induction. There is only one plausible induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP X) (p X Z)) (IMPLIES (AND (NOT (ZEROP X)) (p (SUB1 X) Z)) (p X 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. The above induction scheme produces the following two new goals: Case 2. (IMPLIES (ZEROP X) (EQUAL (REMAINDER (TIMES X Z) Z) 0)). This simplifies, expanding ZEROP, EQUAL, TIMES, LESSP, NUMBERP, and REMAINDER, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (REMAINDER (TIMES (SUB1 X) Z) Z) 0)) (EQUAL (REMAINDER (TIMES X Z) Z) 0)). This simplifies, rewriting with DIFFERENCE-PLUS1, and unfolding the definitions of ZEROP, TIMES, and REMAINDER, to three new goals: Case 1.3. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL (REMAINDER (TIMES (SUB1 X) Z) Z) 0) (NOT (NUMBERP Z))) (EQUAL (PLUS Z (TIMES (SUB1 X) Z)) 0)), which again simplifies, applying REMAINDER-WRT-12 and EQUAL-TIMES-0, and unfolding the function PLUS, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL (REMAINDER (TIMES (SUB1 X) Z) Z) 0) (EQUAL Z 0)) (EQUAL (PLUS Z (TIMES (SUB1 X) Z)) 0)). However this again simplifies, applying COMMUTATIVITY-OF-TIMES, and unfolding the functions EQUAL, TIMES, REMAINDER, and PLUS, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL (REMAINDER (TIMES (SUB1 X) Z) Z) 0) (LESSP (PLUS Z (TIMES (SUB1 X) Z)) Z)) (EQUAL (PLUS Z (TIMES (SUB1 X) Z)) 0)). However this again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] DIVIDES-TIMES (DISABLE DIVIDES-TIMES) [ 0.0 0.0 0.0 ] DIVIDES-TIMES-OFF (PROVE-LEMMA DIFFERENCE-PLUS3 (REWRITE) (EQUAL (DIFFERENCE (PLUS B (PLUS A C)) A) (PLUS B C)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, using linear arithmetic, to: (IMPLIES (LESSP (PLUS B A C) A) (EQUAL (DIFFERENCE (PLUS B A C) A) (PLUS B C))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS3 (DISABLE DIFFERENCE-PLUS3) [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS3-OFF (PROVE-LEMMA DIFFERENCE-ADD1-CANCELLATION (REWRITE) (EQUAL (DIFFERENCE (ADD1 (PLUS Y Z)) Z) (ADD1 Y)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, using linear arithmetic, to: (IMPLIES (LESSP (ADD1 (PLUS Y Z)) Z) (EQUAL (DIFFERENCE (ADD1 (PLUS Y Z)) Z) (ADD1 Y))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-ADD1-CANCELLATION (DISABLE DIFFERENCE-ADD1-CANCELLATION) [ 0.0 0.0 0.0 ] DIFFERENCE-ADD1-CANCELLATION-OFF (PROVE-LEMMA REMAINDER-ADD1 (REWRITE) (IMPLIES (AND (NOT (ZEROP Y)) (NOT (EQUAL Y '1))) (NOT (EQUAL (REMAINDER (ADD1 (TIMES X Y)) Y) '0))) ((ENABLE COMMUTATIVITY-OF-PLUS DIFFERENCE-0 COMMUTATIVITY-OF-TIMES DIFFERENCE-ADD1-CANCELLATION) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL Y 1))) (NOT (EQUAL (REMAINDER (ADD1 (TIMES X Y)) Y) 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 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 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 leads to the following two new formulas: Case 2. (IMPLIES (AND (ZEROP X) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL Y 1))) (NOT (EQUAL (REMAINDER (ADD1 (TIMES X Y)) Y) 0))). This simplifies, using linear arithmetic, applying the lemma DIFFERENCE-0, and opening up the definitions of ZEROP, EQUAL, TIMES, ADD1, NUMBERP, REMAINDER, and LESSP, to the following two new goals: Case 2.2. (IMPLIES (AND (EQUAL X 0) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL Y 1))) (LESSP 1 Y)). This again simplifies, using linear arithmetic, to: T. Case 2.1. (IMPLIES (AND (NOT (NUMBERP X)) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL Y 1))) (LESSP 1 Y)), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (NOT (EQUAL (REMAINDER (ADD1 (TIMES (SUB1 X) Y)) Y) 0)) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL Y 1))) (NOT (EQUAL (REMAINDER (ADD1 (TIMES X Y)) Y) 0))), which simplifies, expanding the functions ZEROP and TIMES, to: (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL (REMAINDER (ADD1 (TIMES (SUB1 X) Y)) Y) 0)) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL Y 1))) (NOT (EQUAL (REMAINDER (ADD1 (PLUS Y (TIMES (SUB1 X) Y))) Y) 0))). But this further simplifies, rewriting with the lemma COMMUTATIVITY-OF-TIMES, to: (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL (REMAINDER (ADD1 (TIMES Y (SUB1 X))) Y) 0)) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL Y 1))) (NOT (EQUAL (REMAINDER (ADD1 (PLUS Y (TIMES Y (SUB1 X)))) Y) 0))). Appealing to the lemma SUB1-ELIM, we now replace X by (ADD1 Z) to eliminate (SUB1 X). We employ the type restriction lemma noted when SUB1 was introduced to constrain the new variable. We must thus prove the conjecture: (IMPLIES (AND (NUMBERP Z) (NOT (EQUAL (ADD1 Z) 0)) (NOT (EQUAL (REMAINDER (ADD1 (TIMES Y Z)) Y) 0)) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL Y 1))) (NOT (EQUAL (REMAINDER (ADD1 (PLUS Y (TIMES Y Z))) Y) 0))). This further simplifies, trivially, to the new goal: (IMPLIES (AND (NUMBERP Z) (NOT (EQUAL (REMAINDER (ADD1 (TIMES Y Z)) Y) 0)) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL Y 1))) (NOT (EQUAL (REMAINDER (ADD1 (PLUS Y (TIMES Y Z))) Y) 0))), which we generalize by replacing (TIMES Y Z) by A. We restrict the new variable by recalling the type restriction lemma noted when TIMES was introduced. We would thus like to prove: (IMPLIES (AND (NUMBERP A) (NUMBERP Z) (NOT (EQUAL (REMAINDER (ADD1 A) Y) 0)) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL Y 1))) (NOT (EQUAL (REMAINDER (ADD1 (PLUS Y A)) Y) 0))), which further simplifies, appealing to the lemmas COMMUTATIVITY-OF-PLUS, DIFFERENCE-ADD1-CANCELLATION, and SUB1-ADD1, and unfolding LESSP and REMAINDER, to: (IMPLIES (AND (NUMBERP A) (NUMBERP Z) (NOT (EQUAL (REMAINDER (ADD1 A) Y) 0)) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL Y 1)) (LESSP (PLUS A Y) (SUB1 Y))) (NOT (EQUAL (ADD1 (PLUS A Y)) 0))). This finally simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] REMAINDER-ADD1 (DISABLE REMAINDER-ADD1) [ 0.0 0.0 0.0 ] REMAINDER-ADD1-OFF (PROVE-LEMMA DIVIDES-PLUS-REWRITE1 (REWRITE) (IMPLIES (AND (EQUAL (REMAINDER X Z) '0) (EQUAL (REMAINDER Y Z) '0)) (EQUAL (REMAINDER (PLUS X Y) Z) '0)) ((ENABLE PLUS-RIGHT-ID2 COMMUTATIVITY2-OF-PLUS COMMUTATIVITY-OF-PLUS ASSOCIATIVITY-OF-PLUS COMMUTATIVITY-OF-TIMES DIFFERENCE-ELIM REMAINDER-WRT-12 LESSP-REMAINDER2 REMAINDER-QUOTIENT-ELIM DIVIDES-TIMES DIFFERENCE-PLUS3) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) . Applying the lemma REMAINDER-QUOTIENT-ELIM, replace X by (PLUS V (TIMES Z W)) to eliminate (REMAINDER X Z) and (QUOTIENT X Z). We employ LESSP-REMAINDER2, 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 4. (IMPLIES (AND (NOT (NUMBERP X)) (EQUAL (REMAINDER X Z) 0) (EQUAL (REMAINDER Y Z) 0)) (EQUAL (REMAINDER (PLUS X Y) Z) 0)). However this simplifies, expanding LESSP, REMAINDER, EQUAL, and PLUS, to the conjecture: (IMPLIES (AND (NOT (NUMBERP X)) (EQUAL (REMAINDER Y Z) 0) (NOT (NUMBERP Y))) (EQUAL (REMAINDER 0 Z) 0)). But this again simplifies, expanding the definitions of LESSP, REMAINDER, EQUAL, and NUMBERP, to: T. Case 3. (IMPLIES (AND (EQUAL Z 0) (EQUAL (REMAINDER X Z) 0) (EQUAL (REMAINDER Y Z) 0)) (EQUAL (REMAINDER (PLUS X Y) Z) 0)), which simplifies, applying PLUS-RIGHT-ID2 and COMMUTATIVITY-OF-PLUS, and expanding the definitions of EQUAL, REMAINDER, PLUS, and NUMBERP, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP Z)) (EQUAL (REMAINDER X Z) 0) (EQUAL (REMAINDER Y Z) 0)) (EQUAL (REMAINDER (PLUS X Y) Z) 0)). But this simplifies, applying REMAINDER-WRT-12, PLUS-RIGHT-ID2, and COMMUTATIVITY-OF-PLUS, and opening up the definitions of PLUS, NUMBERP, and EQUAL, to: T. Case 1. (IMPLIES (AND (NUMBERP V) (EQUAL (LESSP V Z) (NOT (ZEROP Z))) (NUMBERP W) (NUMBERP Z) (NOT (EQUAL Z 0)) (EQUAL V 0) (EQUAL (REMAINDER Y Z) 0)) (EQUAL (REMAINDER (PLUS (PLUS V (TIMES Z W)) Y) Z) 0)). However this simplifies, applying COMMUTATIVITY-OF-TIMES and COMMUTATIVITY-OF-PLUS, and unfolding the functions NUMBERP, EQUAL, LESSP, ZEROP, NOT, and PLUS, to the new formula: (IMPLIES (AND (NUMBERP W) (NUMBERP Z) (NOT (EQUAL Z 0)) (EQUAL (REMAINDER Y Z) 0)) (EQUAL (REMAINDER (PLUS Y (TIMES W Z)) Z) 0)). Applying the lemma REMAINDER-QUOTIENT-ELIM, replace Y by (PLUS V (TIMES Z D)) to eliminate (REMAINDER Y Z) and (QUOTIENT Y Z). We rely upon LESSP-REMAINDER2, 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 formulas: Case 1.2. (IMPLIES (AND (NOT (NUMBERP Y)) (NUMBERP W) (NUMBERP Z) (NOT (EQUAL Z 0)) (EQUAL (REMAINDER Y Z) 0)) (EQUAL (REMAINDER (PLUS Y (TIMES W Z)) Z) 0)). However this further simplifies, rewriting with DIVIDES-TIMES, and opening up LESSP, REMAINDER, EQUAL, and PLUS, to: T. Case 1.1. (IMPLIES (AND (NUMBERP V) (EQUAL (LESSP V Z) (NOT (ZEROP Z))) (NUMBERP D) (NUMBERP W) (NUMBERP Z) (NOT (EQUAL Z 0)) (EQUAL V 0)) (EQUAL (REMAINDER (PLUS (PLUS V (TIMES Z D)) (TIMES W Z)) Z) 0)). However this further simplifies, applying COMMUTATIVITY-OF-TIMES, and opening up NUMBERP, EQUAL, LESSP, ZEROP, NOT, and PLUS, to: (IMPLIES (AND (NUMBERP D) (NUMBERP W) (NUMBERP Z) (NOT (EQUAL Z 0))) (EQUAL (REMAINDER (PLUS (TIMES D Z) (TIMES W Z)) Z) 0)), 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 (EQUAL (REMAINDER X Z) 0) (EQUAL (REMAINDER Y Z) 0)) (EQUAL (REMAINDER (PLUS X Y) Z) 0)). We named this *1. We will try to prove it by induction. There are three plausible inductions, two 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 Z) (p X Y Z)) (IMPLIES (AND (NOT (ZEROP Z)) (LESSP X Z)) (p X Y Z)) (IMPLIES (AND (NOT (ZEROP Z)) (NOT (LESSP X Z)) (p (DIFFERENCE X Z) Y Z)) (p X Y Z))). Linear arithmetic, the lemmas COUNT-NUMBERP and COUNT-NOT-LESSP, 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 produces four new goals: Case 4. (IMPLIES (AND (ZEROP Z) (EQUAL (REMAINDER X Z) 0) (EQUAL (REMAINDER Y Z) 0)) (EQUAL (REMAINDER (PLUS X Y) Z) 0)), which simplifies, rewriting with the lemmas PLUS-RIGHT-ID2, COMMUTATIVITY-OF-PLUS, and REMAINDER-WRT-12, and expanding ZEROP, EQUAL, REMAINDER, PLUS, and NUMBERP, to: T. Case 3. (IMPLIES (AND (NOT (ZEROP Z)) (LESSP X Z) (EQUAL (REMAINDER X Z) 0) (EQUAL (REMAINDER Y Z) 0)) (EQUAL (REMAINDER (PLUS X Y) Z) 0)), which simplifies, unfolding ZEROP, REMAINDER, EQUAL, and PLUS, to two new conjectures: Case 3.2. (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z) (LESSP X Z) (EQUAL X 0) (EQUAL (REMAINDER Y Z) 0) (NOT (NUMBERP Y))) (EQUAL (REMAINDER 0 Z) 0)), which again simplifies, unfolding EQUAL, LESSP, REMAINDER, and NUMBERP, to: T. Case 3.1. (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z) (LESSP X Z) (NOT (NUMBERP X)) (EQUAL (REMAINDER Y Z) 0) (NOT (NUMBERP Y))) (EQUAL (REMAINDER 0 Z) 0)), which again simplifies, unfolding the functions LESSP, REMAINDER, EQUAL, and NUMBERP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP Z)) (NOT (LESSP X Z)) (NOT (EQUAL (REMAINDER (DIFFERENCE X Z) Z) 0)) (EQUAL (REMAINDER X Z) 0) (EQUAL (REMAINDER Y Z) 0)) (EQUAL (REMAINDER (PLUS X Y) Z) 0)), which simplifies, unfolding the definitions of ZEROP and REMAINDER, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP Z)) (NOT (LESSP X Z)) (EQUAL (REMAINDER (PLUS (DIFFERENCE X Z) Y) Z) 0) (EQUAL (REMAINDER X Z) 0) (EQUAL (REMAINDER Y Z) 0)) (EQUAL (REMAINDER (PLUS X Y) Z) 0)), which simplifies, rewriting with COMMUTATIVITY-OF-PLUS, and opening up ZEROP and REMAINDER, to: (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (LESSP X Z)) (EQUAL (REMAINDER (PLUS Y (DIFFERENCE X Z)) Z) 0) (EQUAL (REMAINDER (DIFFERENCE X Z) Z) 0) (EQUAL (REMAINDER Y Z) 0)) (EQUAL (REMAINDER (PLUS X Y) Z) 0)). Applying the lemmas DIFFERENCE-ELIM and REMAINDER-QUOTIENT-ELIM, replace X by (PLUS Z V) to eliminate (DIFFERENCE X Z) and V by (PLUS W (TIMES Z D)) to eliminate (REMAINDER V Z) and (QUOTIENT V Z). We use the type restriction lemma noted when DIFFERENCE was introduced, LESSP-REMAINDER2, 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 conjectures: Case 1.2. (IMPLIES (AND (NOT (NUMBERP X)) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (LESSP X Z)) (EQUAL (REMAINDER (PLUS Y (DIFFERENCE X Z)) Z) 0) (EQUAL (REMAINDER (DIFFERENCE X Z) Z) 0) (EQUAL (REMAINDER Y Z) 0)) (EQUAL (REMAINDER (PLUS X Y) Z) 0)). This further simplifies, unfolding the function LESSP, to: T. Case 1.1. (IMPLIES (AND (NUMBERP W) (EQUAL (LESSP W Z) (NOT (ZEROP Z))) (NUMBERP D) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (LESSP (PLUS Z W (TIMES Z D)) Z)) (EQUAL (REMAINDER (PLUS Y W (TIMES Z D)) Z) 0) (EQUAL W 0) (EQUAL (REMAINDER Y Z) 0)) (EQUAL (REMAINDER (PLUS (PLUS Z W (TIMES Z D)) Y) Z) 0)), which further simplifies, rewriting with the lemmas COMMUTATIVITY-OF-TIMES, COMMUTATIVITY-OF-PLUS, COMMUTATIVITY2-OF-PLUS, ASSOCIATIVITY-OF-PLUS, and DIFFERENCE-PLUS3, and unfolding the functions NUMBERP, EQUAL, LESSP, ZEROP, NOT, PLUS, and REMAINDER, to: (IMPLIES (AND (NUMBERP D) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (LESSP (PLUS Z (TIMES D Z)) Z)) (EQUAL (REMAINDER (PLUS Y (TIMES D Z)) Z) 0) (EQUAL (REMAINDER Y Z) 0) (LESSP (PLUS Y Z (TIMES D Z)) Z)) (EQUAL (PLUS Y Z (TIMES D Z)) 0)). However this again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] DIVIDES-PLUS-REWRITE1 (DISABLE DIVIDES-PLUS-REWRITE1) [ 0.0 0.0 0.0 ] DIVIDES-PLUS-REWRITE1-OFF (PROVE-LEMMA DIVIDES-PLUS-REWRITE2 (REWRITE) (IMPLIES (AND (EQUAL (REMAINDER X Z) '0) (NOT (EQUAL (REMAINDER Y Z) '0))) (NOT (EQUAL (REMAINDER (PLUS X Y) Z) '0))) ((ENABLE COMMUTATIVITY2-OF-PLUS COMMUTATIVITY-OF-PLUS ASSOCIATIVITY-OF-PLUS COMMUTATIVITY-OF-TIMES DIFFERENCE-ELIM REMAINDER-WRT-12 LESSP-REMAINDER2 REMAINDER-QUOTIENT-ELIM DIFFERENCE-PLUS3) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) . Applying the lemma REMAINDER-QUOTIENT-ELIM, replace X by (PLUS V (TIMES Z W)) to eliminate (REMAINDER X Z) and (QUOTIENT X Z). We use LESSP-REMAINDER2, 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 formulas: Case 4. (IMPLIES (AND (NOT (NUMBERP X)) (EQUAL (REMAINDER X Z) 0) (NOT (EQUAL (REMAINDER Y Z) 0))) (NOT (EQUAL (REMAINDER (PLUS X Y) Z) 0))). But this simplifies, unfolding the definitions of LESSP, REMAINDER, EQUAL, and PLUS, to: (IMPLIES (AND (NOT (NUMBERP X)) (NOT (EQUAL (REMAINDER Y Z) 0)) (NOT (NUMBERP Y))) (NOT (EQUAL (REMAINDER 0 Z) 0))). This again simplifies, expanding the functions LESSP, REMAINDER, and EQUAL, to: T. Case 3. (IMPLIES (AND (EQUAL Z 0) (EQUAL (REMAINDER X Z) 0) (NOT (EQUAL (REMAINDER Y Z) 0))) (NOT (EQUAL (REMAINDER (PLUS X Y) Z) 0))), which simplifies, expanding the functions EQUAL, REMAINDER, and PLUS, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP Z)) (EQUAL (REMAINDER X Z) 0) (NOT (EQUAL (REMAINDER Y Z) 0))) (NOT (EQUAL (REMAINDER (PLUS X Y) Z) 0))), which simplifies, rewriting with REMAINDER-WRT-12, and expanding EQUAL and PLUS, to: T. Case 1. (IMPLIES (AND (NUMBERP V) (EQUAL (LESSP V Z) (NOT (ZEROP Z))) (NUMBERP W) (NUMBERP Z) (NOT (EQUAL Z 0)) (EQUAL V 0) (NOT (EQUAL (REMAINDER Y Z) 0))) (NOT (EQUAL (REMAINDER (PLUS (PLUS V (TIMES Z W)) Y) Z) 0))). This simplifies, rewriting with COMMUTATIVITY-OF-TIMES and COMMUTATIVITY-OF-PLUS, and expanding the functions NUMBERP, EQUAL, LESSP, ZEROP, NOT, and PLUS, to: (IMPLIES (AND (NUMBERP W) (NUMBERP Z) (NOT (EQUAL Z 0)) (NOT (EQUAL (REMAINDER Y Z) 0))) (NOT (EQUAL (REMAINDER (PLUS Y (TIMES W Z)) Z) 0))). Applying the lemma REMAINDER-QUOTIENT-ELIM, replace Y by (PLUS V (TIMES Z D)) to eliminate (REMAINDER Y Z) and (QUOTIENT Y Z). We rely upon LESSP-REMAINDER2, 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 thus obtain the following two new conjectures: Case 1.2. (IMPLIES (AND (NOT (NUMBERP Y)) (NUMBERP W) (NUMBERP Z) (NOT (EQUAL Z 0)) (NOT (EQUAL (REMAINDER Y Z) 0))) (NOT (EQUAL (REMAINDER (PLUS Y (TIMES W Z)) Z) 0))). This further simplifies, unfolding the definitions of LESSP, REMAINDER, and EQUAL, to: T. Case 1.1. (IMPLIES (AND (NUMBERP V) (EQUAL (LESSP V Z) (NOT (ZEROP Z))) (NUMBERP D) (NUMBERP W) (NUMBERP Z) (NOT (EQUAL Z 0)) (NOT (EQUAL V 0))) (NOT (EQUAL (REMAINDER (PLUS (PLUS V (TIMES Z D)) (TIMES W Z)) Z) 0))), which further simplifies, rewriting with COMMUTATIVITY-OF-TIMES and ASSOCIATIVITY-OF-PLUS, and opening up ZEROP and NOT, to: (IMPLIES (AND (NUMBERP V) (LESSP V Z) (NUMBERP D) (NUMBERP W) (NUMBERP Z) (NOT (EQUAL Z 0)) (NOT (EQUAL V 0))) (NOT (EQUAL (REMAINDER (PLUS V (TIMES D Z) (TIMES W Z)) Z) 0))), 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 (EQUAL (REMAINDER X Z) 0) (NOT (EQUAL (REMAINDER Y Z) 0))) (NOT (EQUAL (REMAINDER (PLUS X Y) Z) 0))). We named this *1. We will try to prove it by induction. Three inductions are suggested by terms in the conjecture, two 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 Z) (p X Y Z)) (IMPLIES (AND (NOT (ZEROP Z)) (LESSP X Z)) (p X Y Z)) (IMPLIES (AND (NOT (ZEROP Z)) (NOT (LESSP X Z)) (p (DIFFERENCE X Z) Y Z)) (p X Y Z))). Linear arithmetic, the lemmas COUNT-NUMBERP and COUNT-NOT-LESSP, 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 four new formulas: Case 4. (IMPLIES (AND (ZEROP Z) (EQUAL (REMAINDER X Z) 0) (NOT (EQUAL (REMAINDER Y Z) 0))) (NOT (EQUAL (REMAINDER (PLUS X Y) Z) 0))), which simplifies, rewriting with the lemma REMAINDER-WRT-12, and unfolding the definitions of ZEROP, EQUAL, REMAINDER, and PLUS, to: T. Case 3. (IMPLIES (AND (NOT (ZEROP Z)) (LESSP X Z) (EQUAL (REMAINDER X Z) 0) (NOT (EQUAL (REMAINDER Y Z) 0))) (NOT (EQUAL (REMAINDER (PLUS X Y) Z) 0))), which simplifies, expanding the functions ZEROP, REMAINDER, EQUAL, and PLUS, to two new goals: Case 3.2. (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z) (LESSP X Z) (EQUAL X 0) (NOT (EQUAL (REMAINDER Y Z) 0)) (NOT (NUMBERP Y))) (NOT (EQUAL (REMAINDER 0 Z) 0))), which again simplifies, opening up EQUAL, LESSP, and REMAINDER, to: T. Case 3.1. (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z) (LESSP X Z) (NOT (NUMBERP X)) (NOT (EQUAL (REMAINDER Y Z) 0)) (NOT (NUMBERP Y))) (NOT (EQUAL (REMAINDER 0 Z) 0))), which again simplifies, expanding the functions LESSP, REMAINDER, and EQUAL, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP Z)) (NOT (LESSP X Z)) (NOT (EQUAL (REMAINDER (DIFFERENCE X Z) Z) 0)) (EQUAL (REMAINDER X Z) 0) (NOT (EQUAL (REMAINDER Y Z) 0))) (NOT (EQUAL (REMAINDER (PLUS X Y) Z) 0))), which simplifies, unfolding the functions ZEROP and REMAINDER, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP Z)) (NOT (LESSP X Z)) (NOT (EQUAL (REMAINDER (PLUS (DIFFERENCE X Z) Y) Z) 0)) (EQUAL (REMAINDER X Z) 0) (NOT (EQUAL (REMAINDER Y Z) 0))) (NOT (EQUAL (REMAINDER (PLUS X Y) Z) 0))), which simplifies, rewriting with the lemma COMMUTATIVITY-OF-PLUS, and opening up the definitions of ZEROP and REMAINDER, to the goal: (IMPLIES (AND (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (LESSP X Z)) (NOT (EQUAL (REMAINDER (PLUS Y (DIFFERENCE X Z)) Z) 0)) (EQUAL (REMAINDER (DIFFERENCE X Z) Z) 0) (NOT (EQUAL (REMAINDER Y Z) 0))) (NOT (EQUAL (REMAINDER (PLUS X Y) Z) 0))). Appealing to the lemmas DIFFERENCE-ELIM and REMAINDER-QUOTIENT-ELIM, we now replace X by (PLUS Z V) to eliminate (DIFFERENCE X Z) and V by (PLUS W (TIMES Z D)) to eliminate (REMAINDER V Z) and (QUOTIENT V Z). We use the type restriction lemma noted when DIFFERENCE was introduced, LESSP-REMAINDER2, 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 1.2. (IMPLIES (AND (NOT (NUMBERP X)) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (LESSP X Z)) (NOT (EQUAL (REMAINDER (PLUS Y (DIFFERENCE X Z)) Z) 0)) (EQUAL (REMAINDER (DIFFERENCE X Z) Z) 0) (NOT (EQUAL (REMAINDER Y Z) 0))) (NOT (EQUAL (REMAINDER (PLUS X Y) Z) 0))), which further simplifies, opening up LESSP, to: T. Case 1.1. (IMPLIES (AND (NUMBERP W) (EQUAL (LESSP W Z) (NOT (ZEROP Z))) (NUMBERP D) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (LESSP (PLUS Z W (TIMES Z D)) Z)) (NOT (EQUAL (REMAINDER (PLUS Y W (TIMES Z D)) Z) 0)) (EQUAL W 0) (NOT (EQUAL (REMAINDER Y Z) 0))) (NOT (EQUAL (REMAINDER (PLUS (PLUS Z W (TIMES Z D)) Y) Z) 0))), which further simplifies, applying COMMUTATIVITY-OF-TIMES, COMMUTATIVITY-OF-PLUS, COMMUTATIVITY2-OF-PLUS, ASSOCIATIVITY-OF-PLUS, and DIFFERENCE-PLUS3, and unfolding the definitions of NUMBERP, EQUAL, LESSP, ZEROP, NOT, PLUS, and REMAINDER, to: (IMPLIES (AND (NUMBERP D) (NOT (EQUAL Z 0)) (NUMBERP Z) (NOT (LESSP (PLUS Z (TIMES D Z)) Z)) (NOT (EQUAL (REMAINDER (PLUS Y (TIMES D Z)) Z) 0)) (NOT (EQUAL (REMAINDER Y Z) 0)) (LESSP (PLUS Y Z (TIMES D Z)) Z)) (NOT (EQUAL (PLUS Y Z (TIMES D Z)) 0))), which again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] DIVIDES-PLUS-REWRITE2 (DISABLE DIVIDES-PLUS-REWRITE2) [ 0.0 0.0 0.0 ] DIVIDES-PLUS-REWRITE2-OFF (PROVE-LEMMA DIVIDES-PLUS-REWRITE (REWRITE) (IMPLIES (EQUAL (REMAINDER X Z) '0) (EQUAL (EQUAL (REMAINDER (PLUS X Y) Z) '0) (EQUAL (REMAINDER Y Z) '0))) ((ENABLE DIVIDES-PLUS-REWRITE1 DIVIDES-PLUS-REWRITE2) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, clearly, to two new conjectures: Case 2. (IMPLIES (AND (EQUAL (REMAINDER X Z) 0) (NOT (EQUAL (REMAINDER Y Z) 0))) (NOT (EQUAL (REMAINDER (PLUS X Y) Z) 0))), which again simplifies, applying DIVIDES-PLUS-REWRITE2, to: T. Case 1. (IMPLIES (AND (EQUAL (REMAINDER X Z) 0) (EQUAL (REMAINDER Y Z) 0)) (EQUAL (EQUAL (REMAINDER (PLUS X Y) Z) 0) T)). However this again simplifies, applying DIVIDES-PLUS-REWRITE1, and unfolding the function EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIVIDES-PLUS-REWRITE (DISABLE DIVIDES-PLUS-REWRITE) [ 0.0 0.0 0.0 ] DIVIDES-PLUS-REWRITE-OFF (PROVE-LEMMA LESSP-PLUS-CANCELATION (REWRITE) (EQUAL (LESSP (PLUS X Y) (PLUS X Z)) (LESSP Y Z)) ((ENABLE EQUAL-LESSP) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, rewriting with EQUAL-LESSP, to two new formulas: Case 2. (IMPLIES (NOT (LESSP (PLUS X Y) (PLUS X Z))) (NOT (LESSP Y Z))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (LESSP (PLUS X Y) (PLUS X Z)) (LESSP Y Z)), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-PLUS-CANCELATION (DISABLE LESSP-PLUS-CANCELATION) [ 0.0 0.0 0.0 ] LESSP-PLUS-CANCELATION-OFF (PROVE-LEMMA DIVIDES-PLUS-REWRITE-COMMUTED (REWRITE) (IMPLIES (EQUAL (REMAINDER X Z) '0) (EQUAL (EQUAL (REMAINDER (PLUS Y X) Z) '0) (EQUAL (REMAINDER Y Z) '0))) ((ENABLE COMMUTATIVITY-OF-PLUS DIVIDES-PLUS-REWRITE) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, applying COMMUTATIVITY-OF-PLUS and DIVIDES-PLUS-REWRITE, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIVIDES-PLUS-REWRITE-COMMUTED (DISABLE DIVIDES-PLUS-REWRITE-COMMUTED) [ 0.0 0.0 0.0 ] DIVIDES-PLUS-REWRITE-COMMUTED-OFF (PROVE-LEMMA EUCLID (REWRITE) (IMPLIES (EQUAL (REMAINDER X Z) '0) (EQUAL (EQUAL (REMAINDER (DIFFERENCE Y X) Z) '0) (IF (LESSP X Y) (EQUAL (REMAINDER Y Z) '0) '*1*TRUE))) ((ENABLE PLUS-RIGHT-ID2 COMMUTATIVITY2-OF-PLUS COMMUTATIVITY-OF-PLUS DIFFERENCE-0 COMMUTATIVITY-OF-TIMES DIFFERENCE-ELIM REMAINDER-WRT-12 LESSP-REMAINDER2 REMAINDER-QUOTIENT-ELIM DIVIDES-TIMES DIVIDES-PLUS-REWRITE1 DIVIDES-PLUS-REWRITE-COMMUTED) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, obviously, to the following three new conjectures: Case 3. (IMPLIES (AND (EQUAL (REMAINDER X Z) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE Y X) Z) 0))) (LESSP X Y)). This again simplifies, applying DIFFERENCE-0, and expanding LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 2. (IMPLIES (AND (EQUAL (REMAINDER X Z) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE Y X) Z) 0))) (NOT (EQUAL (REMAINDER Y Z) 0))). Appealing to the lemmas DIFFERENCE-ELIM and REMAINDER-QUOTIENT-ELIM, we now replace Y by (PLUS X V) to eliminate (DIFFERENCE Y X) and V by (PLUS W (TIMES Z D)) to eliminate (REMAINDER V Z) and (QUOTIENT V Z). We rely upon the type restriction lemma noted when DIFFERENCE was introduced, LESSP-REMAINDER2, 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 five new goals: Case 2.5. (IMPLIES (AND (LESSP Y X) (EQUAL (REMAINDER X Z) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE Y X) Z) 0))) (NOT (EQUAL (REMAINDER Y Z) 0))), which further simplifies, using linear arithmetic, rewriting with DIFFERENCE-0, and expanding the definitions of LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 2.4. (IMPLIES (AND (NOT (NUMBERP Y)) (EQUAL (REMAINDER X Z) 0) (NOT (EQUAL (REMAINDER (DIFFERENCE Y X) Z) 0))) (NOT (EQUAL (REMAINDER Y Z) 0))). However this further simplifies, using linear arithmetic, rewriting with the lemma DIFFERENCE-0, and unfolding LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 2.3. (IMPLIES (AND (EQUAL Z 0) (NUMBERP V) (NOT (LESSP (PLUS X V) X)) (EQUAL (REMAINDER X Z) 0) (NOT (EQUAL (REMAINDER V Z) 0))) (NOT (EQUAL (REMAINDER (PLUS X V) Z) 0))), which further simplifies, rewriting with COMMUTATIVITY-OF-PLUS and PLUS-RIGHT-ID2, and opening up the functions EQUAL, REMAINDER, and PLUS, to: T. Case 2.2. (IMPLIES (AND (NOT (NUMBERP Z)) (NUMBERP V) (NOT (LESSP (PLUS X V) X)) (EQUAL (REMAINDER X Z) 0) (NOT (EQUAL (REMAINDER V Z) 0))) (NOT (EQUAL (REMAINDER (PLUS X V) Z) 0))). But this further simplifies, rewriting with COMMUTATIVITY-OF-PLUS, REMAINDER-WRT-12, and PLUS-RIGHT-ID2, and expanding the functions EQUAL and PLUS, to: T. Case 2.1. (IMPLIES (AND (NUMBERP W) (EQUAL (LESSP W Z) (NOT (ZEROP Z))) (NUMBERP D) (NUMBERP Z) (NOT (EQUAL Z 0)) (NOT (LESSP (PLUS X W (TIMES Z D)) X)) (EQUAL (REMAINDER X Z) 0) (NOT (EQUAL W 0))) (NOT (EQUAL (REMAINDER (PLUS X W (TIMES Z D)) Z) 0))). But this further simplifies, applying the lemmas COMMUTATIVITY-OF-TIMES, COMMUTATIVITY2-OF-PLUS, DIVIDES-PLUS-REWRITE1, DIVIDES-TIMES, and DIVIDES-PLUS-REWRITE-COMMUTED, and expanding the functions ZEROP, NOT, EQUAL, and REMAINDER, to: T. Case 1. (IMPLIES (AND (EQUAL (REMAINDER X Z) 0) (EQUAL (REMAINDER (DIFFERENCE Y X) Z) 0) (LESSP X Y)) (EQUAL (EQUAL (REMAINDER Y Z) 0) T)), which again simplifies, trivially, to the new formula: (IMPLIES (AND (EQUAL (REMAINDER X Z) 0) (EQUAL (REMAINDER (DIFFERENCE Y X) Z) 0) (LESSP X Y)) (EQUAL (REMAINDER Y Z) 0)). Applying the lemmas DIFFERENCE-ELIM and REMAINDER-QUOTIENT-ELIM, replace Y by (PLUS X V) to eliminate (DIFFERENCE Y X) and V by (PLUS W (TIMES Z D)) to eliminate (REMAINDER V Z) and (QUOTIENT V Z). We use the type restriction lemma noted when DIFFERENCE was introduced, LESSP-REMAINDER2, 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 five new goals: Case 1.5. (IMPLIES (AND (LESSP Y X) (EQUAL (REMAINDER X Z) 0) (EQUAL (REMAINDER (DIFFERENCE Y X) Z) 0) (LESSP X Y)) (EQUAL (REMAINDER Y Z) 0)). But this further simplifies, using linear arithmetic, to: T. Case 1.4. (IMPLIES (AND (NOT (NUMBERP Y)) (EQUAL (REMAINDER X Z) 0) (EQUAL (REMAINDER (DIFFERENCE Y X) Z) 0) (LESSP X Y)) (EQUAL (REMAINDER Y Z) 0)), which further simplifies, expanding DIFFERENCE, LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 1.3. (IMPLIES (AND (EQUAL Z 0) (NUMBERP V) (NOT (LESSP (PLUS X V) X)) (EQUAL (REMAINDER X Z) 0) (EQUAL (REMAINDER V Z) 0) (LESSP X (PLUS X V))) (EQUAL (REMAINDER (PLUS X V) Z) 0)), which further simplifies, applying the lemmas COMMUTATIVITY-OF-PLUS and PLUS-RIGHT-ID2, and opening up the functions EQUAL, REMAINDER, PLUS, LESSP, and NUMBERP, to: T. Case 1.2. (IMPLIES (AND (NOT (NUMBERP Z)) (NUMBERP V) (NOT (LESSP (PLUS X V) X)) (EQUAL (REMAINDER X Z) 0) (EQUAL (REMAINDER V Z) 0) (LESSP X (PLUS X V))) (EQUAL (REMAINDER (PLUS X V) Z) 0)), which further simplifies, applying the lemmas COMMUTATIVITY-OF-PLUS, REMAINDER-WRT-12, and PLUS-RIGHT-ID2, and opening up PLUS, LESSP, NUMBERP, and EQUAL, to: T. Case 1.1. (IMPLIES (AND (NUMBERP W) (EQUAL (LESSP W Z) (NOT (ZEROP Z))) (NUMBERP D) (NUMBERP Z) (NOT (EQUAL Z 0)) (NOT (LESSP (PLUS X W (TIMES Z D)) X)) (EQUAL (REMAINDER X Z) 0) (EQUAL W 0) (LESSP X (PLUS X W (TIMES Z D)))) (EQUAL (REMAINDER (PLUS X W (TIMES Z D)) Z) 0)), which further simplifies, applying the lemmas COMMUTATIVITY-OF-TIMES, DIVIDES-TIMES, and DIVIDES-PLUS-REWRITE1, and opening up NUMBERP, EQUAL, LESSP, ZEROP, NOT, and PLUS, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EUCLID (DISABLE EUCLID) [ 0.0 0.0 0.0 ] EUCLID-OFF (PROVE-LEMMA LESSP-TIMES-CANCELLATION (REWRITE) (EQUAL (LESSP (TIMES X Z) (TIMES Y Z)) (AND (NOT (ZEROP Z)) (LESSP X Y))) ((ENABLE TIMES-ZERO2 COMMUTATIVITY-OF-TIMES EQUAL-TIMES-0 EQUAL-LESSP) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, rewriting with EQUAL-LESSP, and expanding the definitions of ZEROP, NOT, and AND, to the following four new goals: Case 4. (IMPLIES (AND (NOT (LESSP (TIMES X Z) (TIMES Y Z))) (NOT (EQUAL Z 0)) (NUMBERP Z)) (NOT (LESSP X Y))). Call the above conjecture *1. Case 3. (IMPLIES (LESSP (TIMES X Z) (TIMES Y Z)) (LESSP 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 (LESSP (TIMES X Z) (TIMES Y Z)) (AND (NOT (ZEROP Z)) (LESSP X Y))). We gave this the name *1 above. Perhaps we can prove it by 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 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 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. Note, however, the inductive instance chosen for Y. The above induction scheme produces two new conjectures: Case 2. (IMPLIES (ZEROP X) (EQUAL (LESSP (TIMES X Z) (TIMES Y Z)) (AND (NOT (ZEROP Z)) (LESSP X Y)))), which simplifies, expanding ZEROP, EQUAL, TIMES, LESSP, NOT, and AND, to ten new conjectures: Case 2.10. (IMPLIES (AND (EQUAL X 0) (EQUAL Z 0) (NOT (EQUAL Y 0)) (NUMBERP Y)) (EQUAL (PLUS Z (TIMES (SUB1 Y) Z)) 0)), which again simplifies, rewriting with COMMUTATIVITY-OF-TIMES, and expanding the functions EQUAL, TIMES, and PLUS, to: T. Case 2.9. (IMPLIES (AND (EQUAL X 0) (NOT (NUMBERP Z)) (NOT (EQUAL Y 0)) (NUMBERP Y)) (EQUAL (PLUS Z (TIMES (SUB1 Y) Z)) 0)). This again simplifies, applying EQUAL-TIMES-0, and opening up the definition of PLUS, to: T. Case 2.8. (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))). But this again simplifies, using linear arithmetic, to: T. Case 2.7. (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, trivially, to: T. Case 2.6. (IMPLIES (AND (EQUAL X 0) (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.5. (IMPLIES (AND (NOT (NUMBERP X)) (EQUAL Z 0) (NOT (EQUAL Y 0)) (NUMBERP Y)) (EQUAL (PLUS Z (TIMES (SUB1 Y) Z)) 0)). However this again simplifies, rewriting with COMMUTATIVITY-OF-TIMES, and expanding EQUAL, TIMES, and PLUS, to: T. Case 2.4. (IMPLIES (AND (NOT (NUMBERP X)) (NOT (NUMBERP Z)) (NOT (EQUAL Y 0)) (NUMBERP Y)) (EQUAL (PLUS Z (TIMES (SUB1 Y) Z)) 0)). However this again simplifies, applying the lemma EQUAL-TIMES-0, and expanding PLUS, 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))), which 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, clearly, to: T. Case 2.1. (IMPLIES (AND (NOT (NUMBERP X)) (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL (PLUS Z (TIMES (SUB1 Y) Z)) 0))) (EQUAL T (NUMBERP Y))). This again simplifies, clearly, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (LESSP (TIMES (SUB1 X) Z) (TIMES (SUB1 Y) Z)) (AND (NOT (ZEROP Z)) (LESSP (SUB1 X) (SUB1 Y))))) (EQUAL (LESSP (TIMES X Z) (TIMES Y Z)) (AND (NOT (ZEROP Z)) (LESSP X Y)))). This simplifies, applying EQUAL-LESSP, TIMES-ZERO2, and COMMUTATIVITY-OF-TIMES, and unfolding the definitions of ZEROP, NOT, AND, TIMES, LESSP, and EQUAL, to six new goals: Case 1.6. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (LESSP (TIMES (SUB1 X) Z) (TIMES (SUB1 Y) Z))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (NOT (EQUAL Y 0)) (NUMBERP Y)) (NOT (LESSP (PLUS Z (TIMES (SUB1 X) Z)) (PLUS Z (TIMES (SUB1 Y) Z))))), which again simplifies, using linear arithmetic, to: T. Case 1.5. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (LESSP (TIMES (SUB1 X) Z) (TIMES (SUB1 Y) Z))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (EQUAL Y 0)) (NOT (LESSP (PLUS Z (TIMES (SUB1 X) Z)) 0))), which again simplifies, using linear arithmetic, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (LESSP (TIMES (SUB1 X) Z) (TIMES (SUB1 Y) Z))) (NOT (LESSP (SUB1 X) (SUB1 Y))) (NOT (NUMBERP Y))) (NOT (LESSP (PLUS Z (TIMES (SUB1 X) Z)) 0))), which again simplifies, using linear arithmetic, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (LESSP (TIMES (SUB1 X) Z) (TIMES (SUB1 Y) Z)) (NOT (EQUAL Z 0)) (NUMBERP Z) (LESSP (SUB1 X) (SUB1 Y)) (NOT (NUMBERP Y))) (NOT (LESSP (PLUS Z (TIMES (SUB1 X) Z)) 0))), which again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (LESSP (TIMES (SUB1 X) Z) (TIMES (SUB1 Y) Z)) (NOT (EQUAL Z 0)) (NUMBERP Z) (LESSP (SUB1 X) (SUB1 Y)) (EQUAL Y 0)) (NOT (LESSP (PLUS Z (TIMES (SUB1 X) Z)) 0))), which again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (LESSP (TIMES (SUB1 X) Z) (TIMES (SUB1 Y) Z)) (NOT (EQUAL Z 0)) (NUMBERP Z) (LESSP (SUB1 X) (SUB1 Y)) (NOT (EQUAL Y 0)) (NUMBERP Y)) (LESSP (PLUS Z (TIMES (SUB1 X) Z)) (PLUS Z (TIMES (SUB1 Y) Z)))), which again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] LESSP-TIMES-CANCELLATION (DISABLE LESSP-TIMES-CANCELLATION) [ 0.0 0.0 0.0 ] LESSP-TIMES-CANCELLATION-OFF (PROVE-LEMMA LESSP-PLUS-CANCELLATION3 (REWRITE) (EQUAL (LESSP Y (PLUS X Y)) (NOT (ZEROP X))) ((ENABLE EQUAL-LESSP) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, applying EQUAL-LESSP, and unfolding the functions ZEROP and NOT, to three new goals: Case 3. (IMPLIES (AND (NOT (LESSP Y (PLUS X Y))) (NOT (EQUAL X 0))) (NOT (NUMBERP X))), which again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (LESSP Y (PLUS X Y)) (NUMBERP X)), which again simplifies, expanding PLUS, to two new conjectures: Case 2.2. (IMPLIES (AND (NOT (NUMBERP Y)) (LESSP Y 0)) (NUMBERP X)), which again simplifies, using linear arithmetic, to: T. Case 2.1. (IMPLIES (AND (NUMBERP Y) (LESSP Y Y)) (NUMBERP X)), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (LESSP Y (PLUS X Y)) (NOT (EQUAL X 0))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-PLUS-CANCELLATION3 (DISABLE LESSP-PLUS-CANCELLATION3) [ 0.0 0.0 0.0 ] LESSP-PLUS-CANCELLATION3-OFF (PROVE-LEMMA QUOTIENT-TIMES1 (REWRITE) (IMPLIES (AND (NUMBERP Y) (AND (NUMBERP X) (AND (NOT (EQUAL X '0)) (DIVIDES X Y)))) (EQUAL (TIMES X (QUOTIENT Y X)) Y)) ((ENABLE LESSP-REMAINDER2 REMAINDER-QUOTIENT-ELIM DIVIDES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations NOT, AND, IMPLIES, and DIVIDES, to: (IMPLIES (AND (NUMBERP Y) (NUMBERP X) (NOT (EQUAL X 0)) (EQUAL (REMAINDER Y X) 0)) (EQUAL (TIMES X (QUOTIENT Y X)) Y)). Applying the lemma REMAINDER-QUOTIENT-ELIM, replace Y by (PLUS Z (TIMES X V)) to eliminate (REMAINDER Y X) and (QUOTIENT Y X). We rely upon LESSP-REMAINDER2, 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 thus obtain: (IMPLIES (AND (NUMBERP Z) (EQUAL (LESSP Z X) (NOT (ZEROP X))) (NUMBERP V) (NUMBERP X) (NOT (EQUAL X 0)) (EQUAL Z 0)) (EQUAL (TIMES X V) (PLUS Z (TIMES X V)))), which simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-TIMES1 (DISABLE QUOTIENT-TIMES1) [ 0.0 0.0 0.0 ] QUOTIENT-TIMES1-OFF (PROVE-LEMMA QUOTIENT-LESSP (REWRITE) (IMPLIES (AND (NOT (ZEROP X)) (LESSP X Y)) (NOT (EQUAL (QUOTIENT Y X) '0))) ((ENABLE COMMUTATIVITY-OF-PLUS COMMUTATIVITY-OF-TIMES LESSP-REMAINDER2 REMAINDER-QUOTIENT-ELIM) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to the new conjecture: (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (LESSP X Y)) (NOT (EQUAL (QUOTIENT Y X) 0))). Applying the lemma REMAINDER-QUOTIENT-ELIM, replace Y by (PLUS V (TIMES X Z)) to eliminate (QUOTIENT Y X) and (REMAINDER Y X). We rely upon LESSP-REMAINDER2, 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 two new goals: Case 2. (IMPLIES (AND (NOT (NUMBERP Y)) (NOT (EQUAL X 0)) (NUMBERP X) (LESSP X Y)) (NOT (EQUAL (QUOTIENT Y X) 0))). However this simplifies, opening up the definition of LESSP, to: T. Case 1. (IMPLIES (AND (NUMBERP Z) (NUMBERP V) (EQUAL (LESSP V X) (NOT (ZEROP X))) (NOT (EQUAL X 0)) (NUMBERP X) (LESSP X (PLUS V (TIMES X Z)))) (NOT (EQUAL Z 0))), which simplifies, appealing to the lemmas COMMUTATIVITY-OF-TIMES and COMMUTATIVITY-OF-PLUS, and expanding the definitions of NUMBERP, ZEROP, NOT, EQUAL, TIMES, and PLUS, to: (IMPLIES (AND (NUMBERP V) (LESSP V X) (NOT (EQUAL X 0)) (NUMBERP X)) (NOT (LESSP X V))). However this again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-LESSP (DISABLE QUOTIENT-LESSP) [ 0.0 0.0 0.0 ] QUOTIENT-LESSP-OFF (PROVE-LEMMA TIMES-ID-IFF-1 (REWRITE) (EQUAL (EQUAL Z (TIMES W Z)) (AND (NUMBERP Z) (OR (EQUAL Z '0) (EQUAL W '1)))) ((ENABLE COMMUTATIVITY-OF-PLUS TIMES-ZERO2 COMMUTATIVITY-OF-TIMES LESSP-TIMES-2) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, expanding the functions OR and AND, to the following four new formulas: Case 4. (IMPLIES (AND (EQUAL Z (TIMES W Z)) (NOT (EQUAL Z 0))) (EQUAL (EQUAL W 1) T)). This again simplifies, clearly, to the new conjecture: (IMPLIES (AND (EQUAL Z (TIMES W Z)) (NOT (EQUAL Z 0))) (EQUAL W 1)). We use the above equality hypothesis by substituting (TIMES W Z) for Z and keeping the equality hypothesis. The result is: (IMPLIES (AND (EQUAL Z (TIMES W Z)) (NOT (EQUAL (TIMES W Z) 0))) (EQUAL W 1)). This further simplifies, obviously, to: (IMPLIES (AND (EQUAL Z (TIMES W Z)) (NOT (EQUAL Z 0))) (EQUAL W 1)), 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 Z (TIMES W Z)) (AND (NUMBERP Z) (OR (EQUAL Z 0) (EQUAL W 1)))), named *1. Let us appeal to the induction principle. There is only one suggested induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP W) (p Z W)) (IMPLIES (AND (NOT (ZEROP W)) (p Z (SUB1 W))) (p Z W))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP inform us that the measure (COUNT W) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme produces two new goals: Case 2. (IMPLIES (ZEROP W) (EQUAL (EQUAL Z (TIMES W Z)) (AND (NUMBERP Z) (OR (EQUAL Z 0) (EQUAL W 1))))), which simplifies, expanding the functions ZEROP, EQUAL, TIMES, OR, and AND, to four new formulas: Case 2.4. (IMPLIES (AND (EQUAL W 0) (EQUAL Z 0)) (EQUAL (EQUAL Z 0) T)), which again simplifies, unfolding EQUAL, to: T. Case 2.3. (IMPLIES (AND (EQUAL W 0) (EQUAL Z 0)) (NUMBERP Z)), which again simplifies, clearly, to: T. Case 2.2. (IMPLIES (AND (NOT (NUMBERP W)) (EQUAL Z 0)) (EQUAL (EQUAL Z 0) T)). This again simplifies, opening up EQUAL, to: T. Case 2.1. (IMPLIES (AND (NOT (NUMBERP W)) (EQUAL Z 0)) (NUMBERP Z)), which again simplifies, trivially, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP W)) (EQUAL (EQUAL Z (TIMES (SUB1 W) Z)) (AND (NUMBERP Z) (OR (EQUAL Z 0) (EQUAL (SUB1 W) 1))))) (EQUAL (EQUAL Z (TIMES W Z)) (AND (NUMBERP Z) (OR (EQUAL Z 0) (EQUAL W 1))))). This simplifies, applying TIMES-ZERO2 and COMMUTATIVITY-OF-TIMES, and expanding ZEROP, OR, AND, TIMES, EQUAL, and NUMBERP, to six new goals: Case 1.6. (IMPLIES (AND (NOT (EQUAL W 0)) (NUMBERP W) (EQUAL Z (TIMES (SUB1 W) Z)) (NUMBERP Z) (EQUAL (EQUAL (SUB1 W) 1) T) (NOT (EQUAL Z (PLUS Z Z)))) (NOT (EQUAL Z 0))), which again simplifies, using linear arithmetic, to: T. Case 1.5. (IMPLIES (AND (NOT (EQUAL W 0)) (NUMBERP W) (EQUAL Z (TIMES (SUB1 W) Z)) (NUMBERP Z) (EQUAL (EQUAL (SUB1 W) 1) T) (NOT (EQUAL Z (PLUS Z Z)))) (NOT (EQUAL W 1))), which again simplifies, opening up the definitions of EQUAL, NUMBERP, SUB1, and TIMES, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL W 0)) (NUMBERP W) (EQUAL Z (TIMES (SUB1 W) Z)) (NUMBERP Z) (EQUAL (EQUAL (SUB1 W) 1) T) (EQUAL Z (PLUS Z Z)) (NOT (EQUAL Z 0))) (EQUAL (EQUAL W 1) T)), which again simplifies, using linear arithmetic, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL W 0)) (NUMBERP W) (NOT (EQUAL Z (TIMES (SUB1 W) Z))) (NOT (EQUAL Z 0)) (NOT (EQUAL (SUB1 W) 1)) (EQUAL Z (PLUS Z (TIMES (SUB1 W) Z)))) (EQUAL (EQUAL W 1) T)), which again simplifies, obviously, to the new formula: (IMPLIES (AND (NOT (EQUAL W 0)) (NUMBERP W) (NOT (EQUAL Z (TIMES (SUB1 W) Z))) (NOT (EQUAL Z 0)) (NOT (EQUAL (SUB1 W) 1)) (EQUAL Z (PLUS Z (TIMES (SUB1 W) Z)))) (EQUAL W 1)), which again simplifies, using linear arithmetic and applying LESSP-TIMES-2, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL W 0)) (NUMBERP W) (NOT (EQUAL Z (TIMES (SUB1 W) Z))) (NOT (EQUAL Z 0)) (NOT (EQUAL (SUB1 W) 1)) (NOT (EQUAL Z (PLUS Z (TIMES (SUB1 W) Z)))) (NUMBERP Z)) (NOT (EQUAL W 1))). However this again simplifies, rewriting with the lemma COMMUTATIVITY-OF-PLUS, and unfolding EQUAL, NUMBERP, SUB1, TIMES, and PLUS, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL W 0)) (NUMBERP W) (NOT (EQUAL Z (TIMES (SUB1 W) Z))) (NOT (EQUAL Z 0)) (NOT (EQUAL (SUB1 W) 1)) (EQUAL Z (PLUS Z (TIMES (SUB1 W) Z)))) (NUMBERP Z)), which again simplifies, clearly, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] TIMES-ID-IFF-1 (DISABLE TIMES-ID-IFF-1) [ 0.0 0.0 0.0 ] TIMES-ID-IFF-1-OFF (PROVE-LEMMA DIVIDES-TIMES1 (REWRITE) (IMPLIES (EQUAL A (TIMES Z Y)) (EQUAL (REMAINDER A Z) '0)) ((ENABLE COMMUTATIVITY-OF-TIMES DIVIDES-TIMES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) WARNING: Note that DIVIDES-TIMES1 contains the free variable Y which will be chosen by instantiating the hypothesis (EQUAL A (TIMES Z Y)). This formula simplifies, appealing to the lemmas COMMUTATIVITY-OF-TIMES and DIVIDES-TIMES, and expanding the function EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIVIDES-TIMES1 (DISABLE DIVIDES-TIMES1) [ 0.0 0.0 0.0 ] DIVIDES-TIMES1-OFF (PROVE-LEMMA TIMES-IDENTITY1 (REWRITE) (IMPLIES (AND (NUMBERP Y) (AND (NOT (EQUAL Y '1)) (AND (NOT (EQUAL Y '0)) (NOT (EQUAL X '0))))) (NOT (EQUAL X (TIMES X Y)))) ((ENABLE LESSP-TIMES-2) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) . We now use the above equality hypothesis by substituting (TIMES X Y) for X and keeping the equality hypothesis. This generates: (IMPLIES (AND (NUMBERP Y) (NOT (EQUAL Y 1)) (NOT (EQUAL Y 0)) (NOT (EQUAL (TIMES X Y) 0))) (NOT (EQUAL X (TIMES X Y)))). This simplifies, clearly, to: (IMPLIES (AND (NUMBERP Y) (NOT (EQUAL Y 1)) (NOT (EQUAL Y 0)) (NOT (EQUAL X 0))) (NOT (EQUAL X (TIMES X Y)))), 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 (NUMBERP Y) (NOT (EQUAL Y 1)) (NOT (EQUAL Y 0)) (NOT (EQUAL X 0))) (NOT (EQUAL X (TIMES X Y)))), named *1. Let us appeal to the induction principle. There is only one suggested 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 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 three new conjectures: Case 3. (IMPLIES (AND (ZEROP X) (NUMBERP Y) (NOT (EQUAL Y 1)) (NOT (EQUAL Y 0)) (NOT (EQUAL X 0))) (NOT (EQUAL X (TIMES X Y)))), which simplifies, unfolding the definition of ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (SUB1 X) 0) (NUMBERP Y) (NOT (EQUAL Y 1)) (NOT (EQUAL Y 0)) (NOT (EQUAL X 0))) (NOT (EQUAL X (TIMES X Y)))), which simplifies, opening up ZEROP and TIMES, to: (IMPLIES (AND (EQUAL (SUB1 X) 0) (NUMBERP Y) (NOT (EQUAL Y 1)) (NOT (EQUAL Y 0)) (NOT (EQUAL X 0)) (NUMBERP X)) (NOT (EQUAL X (PLUS Y (TIMES (SUB1 X) Y))))). But this again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (NOT (EQUAL (SUB1 X) (TIMES (SUB1 X) Y))) (NUMBERP Y) (NOT (EQUAL Y 1)) (NOT (EQUAL Y 0)) (NOT (EQUAL X 0))) (NOT (EQUAL X (TIMES X Y)))), which simplifies, expanding the functions ZEROP and TIMES, to the formula: (IMPLIES (AND (NOT (EQUAL (SUB1 X) (TIMES (SUB1 X) Y))) (NUMBERP Y) (NOT (EQUAL Y 1)) (NOT (EQUAL Y 0)) (NOT (EQUAL X 0)) (NUMBERP X)) (NOT (EQUAL X (PLUS Y (TIMES (SUB1 X) Y))))). However this again simplifies, using linear arithmetic and rewriting with the lemma LESSP-TIMES-2, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] TIMES-IDENTITY1 (DISABLE TIMES-IDENTITY1) [ 0.0 0.0 0.0 ] TIMES-IDENTITY1-OFF (PROVE-LEMMA TIMES-IDENTITY (REWRITE) (EQUAL (EQUAL X (TIMES X Y)) (OR (EQUAL X '0) (AND (NUMBERP X) (EQUAL Y '1)))) ((ENABLE PLUS-RIGHT-ID2 COMMUTATIVITY-OF-PLUS COMMUTATIVITY-OF-TIMES LESSP-TIMES-2 TIMES-ID-IFF-1) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, expanding the functions AND and OR, to the following four new formulas: Case 4. (IMPLIES (AND (EQUAL X (TIMES X Y)) (NOT (EQUAL X 0))) (EQUAL (EQUAL Y 1) T)). This again simplifies, clearly, to the new conjecture: (IMPLIES (AND (EQUAL X (TIMES X Y)) (NOT (EQUAL X 0))) (EQUAL Y 1)). We use the above equality hypothesis by substituting (TIMES X Y) for X and keeping the equality hypothesis. The result is: (IMPLIES (AND (EQUAL X (TIMES X Y)) (NOT (EQUAL (TIMES X Y) 0))) (EQUAL Y 1)). This further simplifies, obviously, to: (IMPLIES (AND (EQUAL X (TIMES X Y)) (NOT (EQUAL X 0))) (EQUAL Y 1)), 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 X (TIMES X Y)) (OR (EQUAL X 0) (AND (NUMBERP X) (EQUAL Y 1)))), named *1. Let us appeal to the induction principle. There is only one suggested 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 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 two new goals: Case 2. (IMPLIES (ZEROP X) (EQUAL (EQUAL X (TIMES X Y)) (OR (EQUAL X 0) (AND (NUMBERP X) (EQUAL Y 1))))), which simplifies, expanding the functions ZEROP, EQUAL, TIMES, NUMBERP, AND, and OR, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (EQUAL (SUB1 X) (TIMES (SUB1 X) Y)) (OR (EQUAL (SUB1 X) 0) (AND (NUMBERP (SUB1 X)) (EQUAL Y 1))))) (EQUAL (EQUAL X (TIMES X Y)) (OR (EQUAL X 0) (AND (NUMBERP X) (EQUAL Y 1))))), which simplifies, unfolding ZEROP, AND, OR, and TIMES, to four new formulas: Case 1.4. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL (SUB1 X) (TIMES (SUB1 X) Y)) (EQUAL (EQUAL Y 1) T)) (EQUAL X (PLUS Y (SUB1 X)))), which again simplifies, applying ADD1-SUB1, and opening up the definitions of SUB1, NUMBERP, EQUAL, and PLUS, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (NOT (EQUAL (SUB1 X) (TIMES (SUB1 X) Y))) (NOT (EQUAL (SUB1 X) 0)) (NOT (EQUAL Y 1))) (NOT (EQUAL X (PLUS Y (TIMES (SUB1 X) Y))))). This again simplifies, clearly, to: (IMPLIES (AND (NOT (EQUAL X 0)) (NOT (EQUAL (SUB1 X) (TIMES (SUB1 X) Y))) (NOT (EQUAL (SUB1 X) 0)) (NOT (EQUAL Y 1))) (NOT (EQUAL X (PLUS Y (TIMES (SUB1 X) Y))))), which further simplifies, rewriting with COMMUTATIVITY-OF-TIMES and TIMES-ID-IFF-1, to: (IMPLIES (AND (NOT (EQUAL X 0)) (NOT (EQUAL (SUB1 X) 0)) (NOT (EQUAL Y 1))) (NOT (EQUAL X (PLUS Y (TIMES Y (SUB1 X)))))). Applying the lemma SUB1-ELIM, replace X by (ADD1 Z) to eliminate (SUB1 X). We employ the type restriction lemma noted when SUB1 was introduced to restrict the new variable. This produces the following two new conjectures: Case 1.3.2. (IMPLIES (AND (NOT (NUMBERP X)) (NOT (EQUAL X 0)) (NOT (EQUAL (SUB1 X) 0)) (NOT (EQUAL Y 1))) (NOT (EQUAL X (PLUS Y (TIMES Y (SUB1 X)))))). This further simplifies, clearly, to: T. Case 1.3.1. (IMPLIES (AND (NUMBERP Z) (NOT (EQUAL (ADD1 Z) 0)) (NOT (EQUAL Z 0)) (NOT (EQUAL Y 1))) (NOT (EQUAL (ADD1 Z) (PLUS Y (TIMES Y Z))))). This further simplifies, obviously, to the new formula: (IMPLIES (AND (NUMBERP Z) (NOT (EQUAL Z 0)) (NOT (EQUAL Y 1))) (NOT (EQUAL (ADD1 Z) (PLUS Y (TIMES Y Z))))), which we will finally name *1.1. Case 1.2. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL (SUB1 X) (TIMES (SUB1 X) Y)) (EQUAL (SUB1 X) 0) (NOT (EQUAL Y 1))) (NOT (EQUAL X (PLUS Y (SUB1 X))))). This again simplifies, using linear arithmetic, to: (IMPLIES (AND (NOT (NUMBERP Y)) (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL 0 (TIMES 0 Y)) (EQUAL (SUB1 X) 0) (NOT (EQUAL Y 1))) (NOT (EQUAL X (PLUS Y 0)))). But this again simplifies, rewriting with PLUS-RIGHT-ID2 and COMMUTATIVITY-OF-PLUS, and unfolding the definitions of NUMBERP and EQUAL, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL (SUB1 X) (TIMES (SUB1 X) Y)) (EQUAL (SUB1 X) 0) (EQUAL Y 1)) (EQUAL (EQUAL X (PLUS Y (SUB1 X))) T)). This again simplifies, unfolding the functions TIMES, EQUAL, and PLUS, to: (IMPLIES (AND (NOT (EQUAL X 0)) (NUMBERP X) (EQUAL (SUB1 X) 0)) (EQUAL X 1)). This again simplifies, using linear arithmetic, to: T. So let us turn our attention to: (IMPLIES (AND (NUMBERP Z) (NOT (EQUAL Z 0)) (NOT (EQUAL Y 1))) (NOT (EQUAL (ADD1 Z) (PLUS Y (TIMES Y Z))))), named *1.1 above. We will try to 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 (ZEROP Y) (p Z Y)) (IMPLIES (AND (NOT (ZEROP Y)) (p Z (SUB1 Y))) (p Z Y))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP 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 generates three new formulas: Case 3. (IMPLIES (AND (ZEROP Y) (NUMBERP Z) (NOT (EQUAL Z 0)) (NOT (EQUAL Y 1))) (NOT (EQUAL (ADD1 Z) (PLUS Y (TIMES Y Z))))), which simplifies, applying PLUS-RIGHT-ID2 and COMMUTATIVITY-OF-PLUS, and expanding the functions ZEROP, EQUAL, TIMES, PLUS, and NUMBERP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP Y)) (EQUAL (SUB1 Y) 1) (NUMBERP Z) (NOT (EQUAL Z 0)) (NOT (EQUAL Y 1))) (NOT (EQUAL (ADD1 Z) (PLUS Y (TIMES Y Z))))). This simplifies, unfolding the functions ZEROP and TIMES, to: (IMPLIES (AND (NOT (EQUAL Y 0)) (NUMBERP Y) (EQUAL (SUB1 Y) 1) (NUMBERP Z) (NOT (EQUAL Z 0)) (NOT (EQUAL Y 1))) (NOT (EQUAL (ADD1 Z) (PLUS Y Z (TIMES (SUB1 Y) Z))))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP Y)) (NOT (EQUAL (ADD1 Z) (PLUS (SUB1 Y) (TIMES (SUB1 Y) Z)))) (NUMBERP Z) (NOT (EQUAL Z 0)) (NOT (EQUAL Y 1))) (NOT (EQUAL (ADD1 Z) (PLUS Y (TIMES Y Z))))), which simplifies, expanding the definitions of ZEROP and TIMES, to: (IMPLIES (AND (NOT (EQUAL Y 0)) (NUMBERP Y) (NOT (EQUAL (ADD1 Z) (PLUS (SUB1 Y) (TIMES (SUB1 Y) Z)))) (NUMBERP Z) (NOT (EQUAL Z 0)) (NOT (EQUAL Y 1))) (NOT (EQUAL (ADD1 Z) (PLUS Y Z (TIMES (SUB1 Y) Z))))). This again simplifies, using linear arithmetic and rewriting with the lemma LESSP-TIMES-2, to: T. That finishes the proof of *1.1, which finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] TIMES-IDENTITY (DISABLE TIMES-IDENTITY) [ 0.0 0.0 0.0 ] TIMES-IDENTITY-OFF (PROVE-LEMMA QUOTIENT-DIVIDES (REWRITE) (IMPLIES (AND (NUMBERP Y) (NOT (EQUAL (TIMES X (QUOTIENT Y X)) Y))) (NOT (EQUAL (REMAINDER Y X) '0))) ((ENABLE TIMES-ZERO2 COMMUTATIVITY-OF-TIMES REMAINDER-WRT-12 LESSP-REMAINDER2 REMAINDER-QUOTIENT-ELIM) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) . Applying the lemma REMAINDER-QUOTIENT-ELIM, replace Y by (PLUS V (TIMES X Z)) to eliminate (QUOTIENT Y X) and (REMAINDER Y X). We rely upon LESSP-REMAINDER2, 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 conjectures: Case 3. (IMPLIES (AND (EQUAL X 0) (NUMBERP Y) (NOT (EQUAL (TIMES X (QUOTIENT Y X)) Y))) (NOT (EQUAL (REMAINDER Y X) 0))). But this simplifies, opening up the functions EQUAL, QUOTIENT, TIMES, and REMAINDER, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP X)) (NUMBERP Y) (NOT (EQUAL (TIMES X (QUOTIENT Y X)) Y))) (NOT (EQUAL (REMAINDER Y X) 0))), which simplifies, rewriting with TIMES-ZERO2, COMMUTATIVITY-OF-TIMES, and REMAINDER-WRT-12, and opening up the definition of QUOTIENT, to: T. Case 1. (IMPLIES (AND (NUMBERP Z) (NUMBERP V) (EQUAL (LESSP V X) (NOT (ZEROP X))) (NUMBERP X) (NOT (EQUAL X 0)) (NOT (EQUAL (TIMES X Z) (PLUS V (TIMES X Z))))) (NOT (EQUAL V 0))). But this simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-DIVIDES (DISABLE QUOTIENT-DIVIDES) [ 0.0 0.0 0.0 ] QUOTIENT-DIVIDES-OFF (PROVE-LEMMA REMAINDER-TIMES (REWRITE) (EQUAL (REMAINDER (TIMES Y X) Y) '0) ((ENABLE COMMUTATIVITY-OF-TIMES DIVIDES-TIMES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, appealing to the lemmas COMMUTATIVITY-OF-TIMES and DIVIDES-TIMES, and expanding the function EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-TIMES (DISABLE REMAINDER-TIMES) [ 0.0 0.0 0.0 ] REMAINDER-TIMES-OFF (PROVE-LEMMA QUOTIENT-TIMES (REWRITE) (EQUAL (QUOTIENT (TIMES Y X) Y) (IF (ZEROP Y) '0 (FIX X))) ((ENABLE TIMES-ZERO2 COMMUTATIVITY-OF-TIMES DIFFERENCE-PLUS1) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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-ZERO2, and opening up the functions QUOTIENT 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 ADD1-SUB1 and DIFFERENCE-PLUS1, and expanding the functions ZEROP, TIMES, and QUOTIENT, to the new formula: (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 (PLUS Y (TIMES (SUB1 X) Y)) Y))), 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 (DISABLE QUOTIENT-TIMES) [ 0.0 0.0 0.0 ] QUOTIENT-TIMES-OFF (PROVE-LEMMA DISTRIBUTIVITY-OF-DIVIDES (REWRITE) (IMPLIES (AND (NOT (ZEROP A)) (DIVIDES A W)) (EQUAL (TIMES C (QUOTIENT W A)) (QUOTIENT (TIMES C W) A))) ((ENABLE TIMES-ZERO2 COMMUTATIVITY-OF-TIMES COMMUTATIVITY2-OF-TIMES LESSP-REMAINDER2 REMAINDER-QUOTIENT-ELIM QUOTIENT-TIMES DIVIDES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, AND, IMPLIES, and DIVIDES, to: (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL (REMAINDER W A) 0)) (EQUAL (TIMES C (QUOTIENT W A)) (QUOTIENT (TIMES C W) A))). Appealing to the lemma REMAINDER-QUOTIENT-ELIM, we now replace W by (PLUS X (TIMES A Z)) to eliminate (REMAINDER W A) and (QUOTIENT W A). We use LESSP-REMAINDER2, 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 2. (IMPLIES (AND (NOT (NUMBERP W)) (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL (REMAINDER W A) 0)) (EQUAL (TIMES C (QUOTIENT W A)) (QUOTIENT (TIMES C W) A))), which simplifies, rewriting with COMMUTATIVITY-OF-TIMES and TIMES-ZERO2, and opening up LESSP, REMAINDER, EQUAL, QUOTIENT, and TIMES, to: T. Case 1. (IMPLIES (AND (NUMBERP X) (EQUAL (LESSP X A) (NOT (ZEROP A))) (NUMBERP Z) (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL X 0)) (EQUAL (TIMES C Z) (QUOTIENT (TIMES C (PLUS X (TIMES A Z))) A))). But this simplifies, rewriting with COMMUTATIVITY2-OF-TIMES and QUOTIENT-TIMES, and expanding the functions NUMBERP, EQUAL, LESSP, ZEROP, NOT, and PLUS, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DISTRIBUTIVITY-OF-DIVIDES (DISABLE DISTRIBUTIVITY-OF-DIVIDES) [ 0.0 0.0 0.0 ] DISTRIBUTIVITY-OF-DIVIDES-OFF (PROVE-LEMMA IF-TIMES-THEN-DIVIDES (REWRITE) (IMPLIES (AND (NOT (ZEROP C)) (NOT (DIVIDES C X))) (NOT (EQUAL (TIMES C Y) X))) ((ENABLE REMAINDER-TIMES DIVIDES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, NOT, AND, IMPLIES, and DIVIDES, to the new conjecture: (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (EQUAL (REMAINDER X C) 0))) (NOT (EQUAL (TIMES C Y) X))), which simplifies, applying REMAINDER-TIMES, and unfolding the function EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] IF-TIMES-THEN-DIVIDES (DISABLE IF-TIMES-THEN-DIVIDES) [ 0.0 0.0 0.0 ] IF-TIMES-THEN-DIVIDES-OFF (PROVE-LEMMA TIMES-EQUAL-1 (REWRITE) (EQUAL (EQUAL (TIMES A B) '1) (AND (NOT (EQUAL A '0)) (AND (NOT (EQUAL B '0)) (AND (NUMBERP A) (AND (NUMBERP B) (AND (EQUAL (SUB1 A) '0) (EQUAL (SUB1 B) '0))))))) ((ENABLE PLUS-RIGHT-ID2 COMMUTATIVITY-OF-PLUS COMMUTATIVITY-OF-TIMES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, applying COMMUTATIVITY-OF-TIMES, and opening up the definitions of TIMES, NOT, and AND, to the following five new formulas: Case 5. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (PLUS B (SUB1 A) (TIMES (SUB1 A) (SUB1 B))) 1)) (EQUAL (EQUAL (SUB1 B) 0) T)). But this again simplifies, using linear arithmetic, to the conjecture: (IMPLIES (AND (NOT (EQUAL 1 0)) (NUMBERP 1) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (PLUS B (SUB1 1) (TIMES (SUB1 1) (SUB1 B))) 1)) (EQUAL (EQUAL (SUB1 B) 0) T)). This again simplifies, applying the lemma COMMUTATIVITY-OF-PLUS, and opening up the functions EQUAL, NUMBERP, SUB1, TIMES, and PLUS, to: T. Case 4. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL (PLUS B (SUB1 A) (TIMES (SUB1 A) (SUB1 B))) 1)) (EQUAL (SUB1 A) 0)) (NOT (EQUAL (SUB1 B) 0))), which again simplifies, rewriting with the lemma COMMUTATIVITY-OF-PLUS, and expanding the functions TIMES, PLUS, and EQUAL, to the goal: (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL B 1)) (EQUAL (SUB1 A) 0)) (NOT (EQUAL (SUB1 B) 0))). But this again simplifies, using linear arithmetic, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL B 0)) (NOT (EQUAL (PLUS B 0) 1))), which again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP B))) (NOT (EQUAL (PLUS B 0) 1))), which again simplifies, applying PLUS-RIGHT-ID2 and COMMUTATIVITY-OF-PLUS, and expanding NUMBERP and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (PLUS B (SUB1 A) (TIMES (SUB1 A) (SUB1 B))) 1)) (EQUAL (SUB1 A) 0)). But this again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] TIMES-EQUAL-1 (DISABLE TIMES-EQUAL-1) [ 0.0 0.0 0.0 ] TIMES-EQUAL-1-OFF (PROVE-LEMMA DIVIDES-IMPLIES-TIMES (REWRITE) (IMPLIES (AND (NOT (ZEROP A)) (AND (NUMBERP C) (EQUAL (TIMES A C) B))) (EQUAL (EQUAL C (QUOTIENT B A)) '*1*TRUE)) ((ENABLE QUOTIENT-TIMES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NUMBERP C) (EQUAL (TIMES A C) B)) (EQUAL (EQUAL C (QUOTIENT B A)) T)). This simplifies, applying the lemma QUOTIENT-TIMES, and opening up EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIVIDES-IMPLIES-TIMES (DISABLE DIVIDES-IMPLIES-TIMES) [ 0.0 0.0 0.0 ] DIVIDES-IMPLIES-TIMES-OFF (PROVE-LEMMA DIFFERENCE-1 (REWRITE) (EQUAL (DIFFERENCE X '1) (SUB1 X)) ((ENABLE DIFFERENCE-0) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, using linear arithmetic, to: (IMPLIES (LESSP X 1) (EQUAL (DIFFERENCE X 1) (SUB1 X))). However this again simplifies, using linear arithmetic and applying DIFFERENCE-0, to: (IMPLIES (LESSP X 1) (EQUAL 0 (SUB1 X))). Applying the lemma SUB1-ELIM, replace X by (ADD1 Z) to eliminate (SUB1 X). We rely upon the type restriction lemma noted when SUB1 was introduced to restrict the new variable. We would thus like to prove the following three new conjectures: Case 3. (IMPLIES (AND (EQUAL X 0) (LESSP X 1)) (EQUAL 0 (SUB1 X))). But this further simplifies, unfolding the functions LESSP, SUB1, and EQUAL, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP X)) (LESSP X 1)) (EQUAL 0 (SUB1 X))), which further simplifies, rewriting with SUB1-NNUMBERP, and expanding the definitions of NUMBERP, EQUAL, and LESSP, to: T. Case 1. (IMPLIES (AND (NUMBERP Z) (NOT (EQUAL (ADD1 Z) 0)) (LESSP (ADD1 Z) 1)) (EQUAL 0 Z)). This further simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-1 (DISABLE DIFFERENCE-1) [ 0.0 0.0 0.0 ] DIFFERENCE-1-OFF (PROVE-LEMMA DIFFERENCE-2 (REWRITE) (EQUAL (DIFFERENCE (ADD1 (ADD1 X)) '2) (FIX X)) ((ENABLE DIFFERENCE-1) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, applying DIFFERENCE-1 and SUB1-ADD1, and opening up the functions SUB1, NUMBERP, EQUAL, DIFFERENCE, and FIX, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-2 (DISABLE DIFFERENCE-2) [ 0.0 0.0 0.0 ] DIFFERENCE-2-OFF (PROVE-LEMMA HALF-PLUS (REWRITE) (EQUAL (QUOTIENT (PLUS X (PLUS X Y)) '2) (PLUS X (QUOTIENT Y '2))) ((ENABLE PLUS-RIGHT-ID2 PLUS-ADD1 COMMUTATIVITY2-OF-PLUS COMMUTATIVITY-OF-PLUS LESSP-REMAINDER2 REMAINDER-QUOTIENT-ELIM DIVIDES-IMPLIES-TIMES DIFFERENCE-2) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) . Appealing to the lemma REMAINDER-QUOTIENT-ELIM, we now replace Y by (PLUS V (TIMES 2 Z)) to eliminate (QUOTIENT Y 2) and (REMAINDER Y 2). We rely upon LESSP-REMAINDER2, 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 four new conjectures: Case 4. (IMPLIES (NOT (NUMBERP Y)) (EQUAL (QUOTIENT (PLUS X X Y) 2) (PLUS X (QUOTIENT Y 2)))), which simplifies, rewriting with the lemmas PLUS-RIGHT-ID2 and COMMUTATIVITY-OF-PLUS, and unfolding the functions LESSP, NUMBERP, EQUAL, QUOTIENT, and PLUS, to two new formulas: Case 4.2. (IMPLIES (AND (NOT (NUMBERP Y)) (NOT (NUMBERP X))) (EQUAL (QUOTIENT (PLUS X 0) 2) 0)), which again simplifies, applying PLUS-RIGHT-ID2 and COMMUTATIVITY-OF-PLUS, and expanding the definitions of NUMBERP, QUOTIENT, and EQUAL, to: T. Case 4.1. (IMPLIES (AND (NOT (NUMBERP Y)) (NUMBERP X)) (EQUAL (QUOTIENT (PLUS X X) 2) X)). This again simplifies, using linear arithmetic, rewriting with DIVIDES-IMPLIES-TIMES, and expanding EQUAL, to: T. Case 3. (IMPLIES (EQUAL 2 0) (EQUAL (QUOTIENT (PLUS X X Y) 2) (PLUS X (QUOTIENT Y 2)))). However this simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (NOT (NUMBERP 2)) (EQUAL (QUOTIENT (PLUS X X Y) 2) (PLUS X (QUOTIENT Y 2)))), which simplifies, clearly, to: T. Case 1. (IMPLIES (AND (NUMBERP Z) (NUMBERP V) (EQUAL (LESSP V 2) (NOT (ZEROP 2))) (NOT (EQUAL 2 0))) (EQUAL (QUOTIENT (PLUS X X V (TIMES 2 Z)) 2) (PLUS X Z))). This simplifies, applying COMMUTATIVITY2-OF-PLUS, and unfolding the functions ZEROP, NOT, and EQUAL, to: (IMPLIES (AND (NUMBERP Z) (NUMBERP V) (LESSP V 2)) (EQUAL (QUOTIENT (PLUS V X X (TIMES 2 Z)) 2) (PLUS X Z))), 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 (QUOTIENT (PLUS X X Y) 2) (PLUS X (QUOTIENT Y 2))), named *1. Let us appeal to the induction principle. The recursive terms in the conjecture suggest four 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)) (IMPLIES (AND (NOT (ZEROP X)) (p (SUB1 X) Y)) (p X Y))). Linear arithmetic, the lemmas SUB1-LESSEQP and SUB1-LESSP, 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 two new formulas: Case 2. (IMPLIES (ZEROP X) (EQUAL (QUOTIENT (PLUS X X Y) 2) (PLUS X (QUOTIENT Y 2)))). This simplifies, opening up ZEROP, EQUAL, and PLUS, to the following two new goals: Case 2.2. (IMPLIES (AND (EQUAL X 0) (NOT (NUMBERP Y))) (EQUAL (QUOTIENT 0 2) (QUOTIENT Y 2))). This again simplifies, expanding the definitions of QUOTIENT, LESSP, NUMBERP, and EQUAL, to: T. Case 2.1. (IMPLIES (AND (NOT (NUMBERP X)) (NOT (NUMBERP Y))) (EQUAL (QUOTIENT 0 2) (QUOTIENT Y 2))), which again simplifies, expanding the functions QUOTIENT, LESSP, NUMBERP, and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (QUOTIENT (PLUS (SUB1 X) (SUB1 X) Y) 2) (PLUS (SUB1 X) (QUOTIENT Y 2)))) (EQUAL (QUOTIENT (PLUS X X Y) 2) (PLUS X (QUOTIENT Y 2)))), which simplifies, applying PLUS-ADD1, DIFFERENCE-2, and SUB1-ADD1, and expanding ZEROP, PLUS, LESSP, SUB1, NUMBERP, EQUAL, and QUOTIENT, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] HALF-PLUS (DISABLE HALF-PLUS) [ 0.0 0.0 0.0 ] HALF-PLUS-OFF (PROVE-LEMMA TIMES-1 (REWRITE) (EQUAL (TIMES '1 X) (FIX X)) ((ENABLE TIMES-ZERO2) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, unfolding FIX, to two new formulas: Case 2. (IMPLIES (NOT (NUMBERP X)) (EQUAL (TIMES 1 X) 0)), which again simplifies, rewriting with TIMES-ZERO2, and unfolding the definition of EQUAL, to: T. Case 1. (IMPLIES (NUMBERP X) (EQUAL (TIMES 1 X) X)). This again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] TIMES-1 (DISABLE TIMES-1) [ 0.0 0.0 0.0 ] TIMES-1-OFF (PROVE-LEMMA EXP-OF-0 (REWRITE) (EQUAL (EXP '0 K) (IF (ZEROP K) '1 '0)) ((ENABLE EXP) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, opening up the functions TIMES, EQUAL, EXP, and ZEROP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EXP-OF-0 (DISABLE EXP-OF-0) [ 0.0 0.0 0.0 ] EXP-OF-0-OFF (PROVE-LEMMA EXP-OF-1 (REWRITE) (EQUAL (EXP '1 K) '1) ((ENABLE EXP) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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, expanding the definitions of ZEROP, EQUAL, and EXP, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP K)) (EQUAL (EXP 1 (SUB1 K)) 1)) (EQUAL (EXP 1 K) 1)). This 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-OF-1 (DISABLE EXP-OF-1) [ 0.0 0.0 0.0 ] EXP-OF-1-OFF (PROVE-LEMMA EXP-BY-0 (REWRITE) (EQUAL (EXP X '0) '1) ((ENABLE EXP) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, unfolding EQUAL and EXP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EXP-BY-0 (DISABLE EXP-BY-0) [ 0.0 0.0 0.0 ] EXP-BY-0-OFF (PROVE-LEMMA EXP-TIMES (REWRITE) (EQUAL (EXP (TIMES I J) K) (TIMES (EXP I K) (EXP J K))) ((ENABLE COMMUTATIVITY2-OF-TIMES ASSOCIATIVITY-OF-TIMES EXP-BY-0 EXP) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 lemma EXP-BY-0, and unfolding ZEROP, TIMES, EQUAL, and EXP, 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.0 0.0 ] EXP-TIMES (DISABLE EXP-TIMES) [ 0.0 0.0 0.0 ] EXP-TIMES-OFF (PROVE-LEMMA EXP-EXP (REWRITE) (EQUAL (EXP (EXP I J) K) (EXP I (TIMES J K))) ((ENABLE EXP-PLUS EXP-OF-1 EXP-BY-0 EXP-TIMES EXP) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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-BY-0 and EXP-OF-1, and opening up the definitions of ZEROP, EQUAL, TIMES, and EXP, 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.0 0.0 ] EXP-EXP (DISABLE EXP-EXP) [ 0.0 0.0 0.0 ] EXP-EXP-OFF (PROVE-LEMMA REMAINDER-PLUS-TIMES-1 (REWRITE) (EQUAL (REMAINDER (PLUS X (TIMES I J)) J) (REMAINDER X J)) ((ENABLE COMMUTATIVITY2-OF-PLUS COMMUTATIVITY-OF-PLUS ASSOCIATIVITY-OF-PLUS TIMES-ZERO2 COMMUTATIVITY-OF-TIMES EQUAL-TIMES-0 REMAINDER-WRT-12 LESSP-REMAINDER2 REMAINDER-QUOTIENT-ELIM DIFFERENCE-PLUS1 DIVIDES-TIMES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) . Applying the lemma REMAINDER-QUOTIENT-ELIM, replace X by (PLUS Z (TIMES J V)) to eliminate (REMAINDER X J) and (QUOTIENT X J). We rely upon LESSP-REMAINDER2, 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 thus obtain the following four new conjectures: Case 4. (IMPLIES (NOT (NUMBERP X)) (EQUAL (REMAINDER (PLUS X (TIMES I J)) J) (REMAINDER X J))). But this simplifies, applying the lemma DIVIDES-TIMES, and opening up the definitions of PLUS, LESSP, REMAINDER, and EQUAL, to: T. Case 3. (IMPLIES (EQUAL J 0) (EQUAL (REMAINDER (PLUS X (TIMES I J)) J) (REMAINDER X J))), which simplifies, rewriting with COMMUTATIVITY-OF-TIMES and COMMUTATIVITY-OF-PLUS, and opening up the functions EQUAL, TIMES, PLUS, and REMAINDER, to: T. Case 2. (IMPLIES (NOT (NUMBERP J)) (EQUAL (REMAINDER (PLUS X (TIMES I J)) J) (REMAINDER X J))). But this simplifies, rewriting with TIMES-ZERO2, COMMUTATIVITY-OF-PLUS, and REMAINDER-WRT-12, and opening up the functions EQUAL and PLUS, to: T. Case 1. (IMPLIES (AND (NUMBERP Z) (EQUAL (LESSP Z J) (NOT (ZEROP J))) (NUMBERP V) (NUMBERP J) (NOT (EQUAL J 0))) (EQUAL (REMAINDER (PLUS (PLUS Z (TIMES J V)) (TIMES I J)) J) Z)). But this simplifies, applying COMMUTATIVITY-OF-PLUS and ASSOCIATIVITY-OF-PLUS, and opening up the functions ZEROP and NOT, to: (IMPLIES (AND (NUMBERP Z) (LESSP Z J) (NUMBERP V) (NUMBERP J) (NOT (EQUAL J 0))) (EQUAL (REMAINDER (PLUS Z (TIMES I J) (TIMES J V)) J) Z)), 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 (REMAINDER (PLUS X (TIMES I J)) J) (REMAINDER X J)), named *1. Let us appeal to the induction principle. The recursive terms in the conjecture suggest three inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (ZEROP I) (p X I J)) (IMPLIES (AND (NOT (ZEROP I)) (p X (SUB1 I) J)) (p X I 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 induction step of the scheme. The above induction scheme generates two new formulas: Case 2. (IMPLIES (ZEROP I) (EQUAL (REMAINDER (PLUS X (TIMES I J)) J) (REMAINDER X J))), which simplifies, rewriting with COMMUTATIVITY-OF-PLUS, and expanding ZEROP, EQUAL, TIMES, and PLUS, to the following two new conjectures: Case 2.2. (IMPLIES (AND (EQUAL I 0) (NOT (NUMBERP X))) (EQUAL (REMAINDER 0 J) (REMAINDER X J))). However this again simplifies, unfolding the definitions of LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 2.1. (IMPLIES (AND (NOT (NUMBERP I)) (NOT (NUMBERP X))) (EQUAL (REMAINDER 0 J) (REMAINDER X J))), which again simplifies, opening up the definitions of LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP I)) (EQUAL (REMAINDER (PLUS X (TIMES (SUB1 I) J)) J) (REMAINDER X J))) (EQUAL (REMAINDER (PLUS X (TIMES I J)) J) (REMAINDER X J))), which simplifies, applying COMMUTATIVITY2-OF-PLUS and DIFFERENCE-PLUS1, and unfolding ZEROP, TIMES, REMAINDER, EQUAL, and PLUS, to the following three new goals: Case 1.3. (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I) (EQUAL (REMAINDER (PLUS X (TIMES (SUB1 I) J)) J) (REMAINDER X J)) (NOT (EQUAL J 0)) (NUMBERP J) (LESSP (PLUS J X (TIMES (SUB1 I) J)) J)) (EQUAL (PLUS J X (TIMES (SUB1 I) J)) (REMAINDER X J))). But this again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I) (EQUAL (REMAINDER (PLUS X (TIMES (SUB1 I) J)) J) (REMAINDER X J)) (EQUAL J 0)) (EQUAL (PLUS X (TIMES (SUB1 I) J)) (REMAINDER X J))), which again simplifies, applying COMMUTATIVITY-OF-TIMES and COMMUTATIVITY-OF-PLUS, and unfolding EQUAL, TIMES, PLUS, and REMAINDER, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I) (EQUAL (REMAINDER (PLUS X (TIMES (SUB1 I) J)) J) (REMAINDER X J)) (NOT (NUMBERP J))) (EQUAL (PLUS X (TIMES (SUB1 I) J)) (REMAINDER X J))). This again simplifies, applying the lemmas REMAINDER-WRT-12 and EQUAL-TIMES-0, and opening up the function PLUS, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-PLUS-TIMES-1 (DISABLE REMAINDER-PLUS-TIMES-1) [ 0.0 0.0 0.0 ] REMAINDER-PLUS-TIMES-1-OFF (PROVE-LEMMA REMAINDER-PLUS-TIMES-2 (REWRITE) (EQUAL (REMAINDER (PLUS X (TIMES J I)) J) (REMAINDER X J)) ((ENABLE COMMUTATIVITY-OF-TIMES REMAINDER-PLUS-TIMES-1) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, rewriting with COMMUTATIVITY-OF-TIMES and REMAINDER-PLUS-TIMES-1, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-PLUS-TIMES-2 (DISABLE REMAINDER-PLUS-TIMES-2) [ 0.0 0.0 0.0 ] REMAINDER-PLUS-TIMES-2-OFF (PROVE-LEMMA REMAINDER-TIMES-1 (REWRITE) (EQUAL (REMAINDER (TIMES B (TIMES A C)) A) '0) ((ENABLE COMMUTATIVITY2-OF-TIMES REMAINDER-TIMES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, applying COMMUTATIVITY2-OF-TIMES and REMAINDER-TIMES, and opening up the function EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-TIMES-1 (DISABLE REMAINDER-TIMES-1) [ 0.0 0.0 0.0 ] REMAINDER-TIMES-1-OFF (PROVE-LEMMA REMAINDER-OF-1 (REWRITE) (EQUAL (REMAINDER '1 X) (IF (EQUAL X '1) '0 '1)) ((ENABLE DIFFERENCE-0) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, rewriting with DIFFERENCE-0, 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-OF-1 (DISABLE REMAINDER-OF-1) [ 0.0 0.0 0.0 ] REMAINDER-OF-1-OFF (PROVE-LEMMA REMAINDER-DIFFERENCE-TIMES (REWRITE) (EQUAL (REMAINDER (DIFFERENCE (TIMES P X) (TIMES P Y)) P) '0) ((USE (DIVIDES-TIMES (X (DIFFERENCE X Y)) (Z P))) (DISABLE DIVIDES-TIMES) (ENABLE COMMUTATIVITY-OF-TIMES TIMES-DIFFERENCE DIVIDES-TIMES EUCLID REMAINDER-TIMES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviation DIVIDES-TIMES, to the new conjecture: (IMPLIES (EQUAL 0 0) (EQUAL (REMAINDER (DIFFERENCE (TIMES P X) (TIMES P Y)) P) 0)), which simplifies, rewriting with REMAINDER-TIMES and EUCLID, and opening up the function EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-DIFFERENCE-TIMES (DISABLE REMAINDER-DIFFERENCE-TIMES) [ 0.0 0.0 0.0 ] REMAINDER-DIFFERENCE-TIMES-OFF (PROVE-LEMMA LESSP-REMAINDER-DIVISOR (REWRITE) (IMPLIES (NOT (ZEROP Y)) (LESSP (REMAINDER X Y) Y)) ((ENABLE LESSP-REMAINDER2) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) WARNING: Note that the proposed lemma LESSP-REMAINDER-DIVISOR is to be stored as zero type prescription rules, zero compound recognizer rules, one linear rule, and zero replacement rules. This formula can be simplified, using the abbreviations ZEROP, NOT, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL Y 0)) (NUMBERP Y)) (LESSP (REMAINDER X Y) Y)), which simplifies, appealing to the lemma LESSP-REMAINDER2, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-REMAINDER-DIVISOR (DISABLE LESSP-REMAINDER-DIVISOR) [ 0.0 0.0 0.0 ] LESSP-REMAINDER-DIVISOR-OFF (DEFTHEORY CL-ARITHMETIC (LESSP-REMAINDER-DIVISOR REMAINDER-DIFFERENCE-TIMES REMAINDER-OF-1 REMAINDER-TIMES-1 REMAINDER-PLUS-TIMES-2 REMAINDER-PLUS-TIMES-1 EXP-EXP EXP-TIMES EXP-BY-0 EXP-OF-1 EXP-OF-0 TIMES-1 HALF-PLUS DIFFERENCE-2 DIFFERENCE-1 DIVIDES-IMPLIES-TIMES TIMES-EQUAL-1 IF-TIMES-THEN-DIVIDES DISTRIBUTIVITY-OF-DIVIDES QUOTIENT-TIMES REMAINDER-TIMES QUOTIENT-DIVIDES TIMES-IDENTITY TIMES-IDENTITY1 DIVIDES-TIMES1 TIMES-ID-IFF-1 QUOTIENT-LESSP QUOTIENT-TIMES1 LESSP-PLUS-CANCELLATION3 LESSP-TIMES-CANCELLATION EUCLID DIVIDES-PLUS-REWRITE-COMMUTED LESSP-PLUS-CANCELATION DIVIDES-PLUS-REWRITE DIVIDES-PLUS-REWRITE2 DIVIDES-PLUS-REWRITE1 REMAINDER-ADD1 DIFFERENCE-ADD1-CANCELLATION DIFFERENCE-PLUS3 DIVIDES-TIMES DIVIDES TIMES-DIFFERENCE DIFFERENCE-PLUS-CANCELATION DIFFERENCE-PLUS2 DIFFERENCE-PLUS1 LESSP-REMAINDER1 LESSP-QUOTIENT1 LESSP-TIMES-2 LESSP-TIMES-1 REMAINDER-QUOTIENT-ELIM REMAINDER-X-X LESSP-REMAINDER2 REMAINDER-WRT-12 REMAINDER-WRT-1 REMAINDER-QUOTIENT DIFFERENCE-ELIM EQUAL-LESSP EXP-PLUS EQUAL-TIMES-0 ASSOCIATIVITY-OF-TIMES COMMUTATIVITY2-OF-TIMES COMMUTATIVITY-OF-TIMES TIMES-ADD1 DISTRIBUTIVITY-OF-TIMES-OVER-PLUS TIMES-ZERO2 DIFFERENCE-CANCELLATION-1 DIFFERENCE-CANCELLATION-0 EQUAL-DIFFERENCE-0 DIFFERENCE-0 PLUS-CANCELLATION DIFFERENCE-PLUS DIFFERENCE-X-X PLUS-EQUAL-0 ASSOCIATIVITY-OF-PLUS COMMUTATIVITY-OF-PLUS COMMUTATIVITY2-OF-PLUS PLUS-ADD1 PLUS-RIGHT-ID2)) [ 0.0 0.0 0.0 ] CL-ARITHMETIC (DEFN NUMBER-AND-LIST-INDUCTION (N L) (IF (ZEROP N) '0 (IF (LISTP L) (NUMBER-AND-LIST-INDUCTION (SUB1 N) (CDR L)) '0)) NIL) Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT N) decreases according to the well-founded relation LESSP in each recursive call. Hence, NUMBER-AND-LIST-INDUCTION is accepted under the principle of definition. The definition of: NUMBER-AND-LIST-INDUCTION can be justified in another way. Linear arithmetic and the lemma CDR-LESSP can be used to establish that the measure (COUNT L) decreases according to the well-founded relation LESSP in each recursive call. Note that: (NUMBERP (NUMBER-AND-LIST-INDUCTION N L)) is a theorem. [ 0.0 0.0 0.0 ] NUMBER-AND-LIST-INDUCTION (DEFN DOUBLE-NUMBER-INDUCTION (X Y) (IF (OR (ZEROP X) (ZEROP Y)) '0 (DOUBLE-NUMBER-INDUCTION (SUB1 X) (SUB1 Y))) NIL) Linear arithmetic, the lemma COUNT-NUMBERP, and the definitions of OR and ZEROP establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each recursive call. Hence, DOUBLE-NUMBER-INDUCTION is accepted under the definitional principle. The definition of DOUBLE-NUMBER-INDUCTION can be justified in another way. Linear arithmetic, the lemma COUNT-NUMBERP, and the definitions of OR and ZEROP inform us that the measure (COUNT Y) decreases according to the well-founded relation LESSP in each recursive call. Observe that: (NUMBERP (DOUBLE-NUMBER-INDUCTION X Y)) is a theorem. [ 0.0 0.0 0.0 ] DOUBLE-NUMBER-INDUCTION (DEFN DOUBLE-NUMBER-DOUBLE-LIST-INDUCTION (I J L1 L2) (IF (AND (LISTP L1) (LISTP L2)) (IF (OR (ZEROP I) (ZEROP J)) '0 (DOUBLE-NUMBER-DOUBLE-LIST-INDUCTION (SUB1 I) (SUB1 J) (CDR L1) (CDR L2))) '0) NIL) Linear arithmetic, the lemma COUNT-NUMBERP, and the definitions of OR, ZEROP, and AND inform us that the measure (COUNT I) decreases according to the well-founded relation LESSP in each recursive call. Hence, DOUBLE-NUMBER-DOUBLE-LIST-INDUCTION is accepted under the principle of definition. There are three other measures and well-founded functions explaining the recursion above. Linear arithmetic, the lemma COUNT-NUMBERP, and the definitions of OR, ZEROP, and AND establish that the measure (COUNT J) decreases according to the well-founded relation LESSP in each recursive call. Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definitions of OR, ZEROP, and AND can be used to establish that the measure (COUNT L1) decreases according to the well-founded relation LESSP in each recursive call. Finally, linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definitions of OR, ZEROP, and AND can be used to prove that the measure (COUNT L2) decreases according to the well-founded relation LESSP in each recursive call. From the definition we can conclude that (NUMBERP (DOUBLE-NUMBER-DOUBLE-LIST-INDUCTION I J L1 L2)) is a theorem. [ 0.0 0.0 0.1 ] DOUBLE-NUMBER-DOUBLE-LIST-INDUCTION (PROVE-LEMMA PLUS-0 (REWRITE) (EQUAL (PLUS A '0) (FIX A)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, unfolding FIX, to two new formulas: Case 2. (IMPLIES (NOT (NUMBERP A)) (EQUAL (PLUS A 0) 0)), which again simplifies, unfolding NUMBERP, PLUS, and EQUAL, to: T. Case 1. (IMPLIES (NUMBERP A) (EQUAL (PLUS A 0) A)), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PLUS-0 (DISABLE PLUS-0) [ 0.0 0.0 0.0 ] PLUS-0-OFF (PROVE-LEMMA PLUS-1 (REWRITE) (EQUAL (PLUS '1 X) (ADD1 X)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PLUS-1 (DISABLE PLUS-1) [ 0.0 0.0 0.0 ] PLUS-1-OFF (PROVE-LEMMA PLUS-0-ARG1 (REWRITE) (EQUAL (PLUS '0 X) (FIX X)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, unfolding EQUAL, PLUS, and FIX, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PLUS-0-ARG1 (DISABLE PLUS-0-ARG1) [ 0.0 0.0 0.0 ] PLUS-0-ARG1-OFF (PROVE-LEMMA PLUS-DIFFERENCE-CANCELLATION (REWRITE) (IMPLIES (IF (LESSP B A) '*1*FALSE '*1*TRUE) (EQUAL (PLUS A (DIFFERENCE B A)) (FIX B))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, opening up the definition of FIX, to the following two new formulas: Case 2. (IMPLIES (AND (NOT (LESSP B A)) (NOT (NUMBERP B))) (EQUAL (PLUS A (DIFFERENCE B A)) 0)). But this again simplifies, unfolding the functions LESSP, DIFFERENCE, PLUS, EQUAL, and NUMBERP, to: T. Case 1. (IMPLIES (AND (NOT (LESSP B A)) (NUMBERP B)) (EQUAL (PLUS A (DIFFERENCE B A)) B)), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PLUS-DIFFERENCE-CANCELLATION (DISABLE PLUS-DIFFERENCE-CANCELLATION) [ 0.0 0.0 0.0 ] PLUS-DIFFERENCE-CANCELLATION-OFF (PROVE-LEMMA CANONICALIZE-PLUS-TERMS1 (REWRITE) (EQUAL (ADD1 (PLUS (ADD1 A) B)) (PLUS (ADD1 (ADD1 A)) B)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] CANONICALIZE-PLUS-TERMS1 (DISABLE CANONICALIZE-PLUS-TERMS1) [ 0.0 0.0 0.0 ] CANONICALIZE-PLUS-TERMS1-OFF (PROVE-LEMMA CANONICALIZE-PLUS-TERMS2 (REWRITE) (EQUAL (PLUS (ADD1 A) (PLUS (ADD1 B) C)) (PLUS (PLUS (ADD1 A) (ADD1 B)) C)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] CANONICALIZE-PLUS-TERMS2 (DISABLE CANONICALIZE-PLUS-TERMS2) [ 0.0 0.0 0.0 ] CANONICALIZE-PLUS-TERMS2-OFF (PROVE-LEMMA CANONICALIZE-PLUS-TERMS3 (REWRITE) (EQUAL (PLUS (TIMES A B) (PLUS (ADD1 C) D)) (PLUS (ADD1 C) (PLUS D (TIMES A B)))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] CANONICALIZE-PLUS-TERMS3 (DISABLE CANONICALIZE-PLUS-TERMS3) [ 0.0 0.0 0.0 ] CANONICALIZE-PLUS-TERMS3-OFF (PROVE-LEMMA PLUS-PLUS-DIFFERENCE (REWRITE) (IMPLIES (AND (NUMBERP I) (AND (NUMBERP N) (IF (LESSP N I) '*1*FALSE '*1*TRUE))) (EQUAL (PLUS I (PLUS J (DIFFERENCE N I))) (PLUS N J))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PLUS-PLUS-DIFFERENCE (DISABLE PLUS-PLUS-DIFFERENCE) [ 0.0 0.0 0.0 ] PLUS-PLUS-DIFFERENCE-OFF (PROVE-LEMMA PLUS-TIMES-REDUCTION (REWRITE) (EQUAL (PLUS A (TIMES B A)) (TIMES (ADD1 B) A)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, applying SUB1-ADD1, and opening up the function TIMES, to: (IMPLIES (NOT (NUMBERP B)) (EQUAL (PLUS A (TIMES B A)) (PLUS A (TIMES 0 A)))), which again simplifies, opening up the functions TIMES and EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PLUS-TIMES-REDUCTION (DISABLE PLUS-TIMES-REDUCTION) [ 0.0 0.0 0.0 ] PLUS-TIMES-REDUCTION-OFF (PROVE-LEMMA PLUS-TIMES-SUB1-REDUCTION (REWRITE) (IMPLIES (NOT (ZEROP B)) (EQUAL (PLUS A (TIMES (SUB1 B) A)) (TIMES B A))) ((ENABLE PLUS-TIMES-REDUCTION) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, NOT, IMPLIES, and PLUS-TIMES-REDUCTION, to: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B)) (EQUAL (TIMES (ADD1 (SUB1 B)) A) (TIMES B A))), which simplifies, rewriting with ADD1-SUB1 and PLUS-TIMES-REDUCTION, and expanding the function TIMES, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PLUS-TIMES-SUB1-REDUCTION (DISABLE PLUS-TIMES-SUB1-REDUCTION) [ 0.0 0.0 0.0 ] PLUS-TIMES-SUB1-REDUCTION-OFF (PROVE-LEMMA PLUS-COMMUTATIVITY-ASSOCIATIVITY-CROCK (REWRITE) (EQUAL (PLUS B (PLUS A C)) (PLUS A (PLUS B C))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PLUS-COMMUTATIVITY-ASSOCIATIVITY-CROCK (DISABLE PLUS-COMMUTATIVITY-ASSOCIATIVITY-CROCK) [ 0.0 0.0 0.0 ] PLUS-COMMUTATIVITY-ASSOCIATIVITY-CROCK-OFF (PROVE-LEMMA DISTRIBUTIVITY-OF-TIMES-OVER-PLUS-BACKWARDS (REWRITE) (EQUAL (PLUS (TIMES A B) (TIMES A C)) (TIMES A (PLUS B C))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 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 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 generates two new goals: Case 2. (IMPLIES (ZEROP A) (EQUAL (PLUS (TIMES A B) (TIMES A C)) (TIMES A (PLUS B C)))), which simplifies, opening up the functions ZEROP, EQUAL, TIMES, and PLUS, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP A)) (EQUAL (PLUS (TIMES (SUB1 A) B) (TIMES (SUB1 A) C)) (TIMES (SUB1 A) (PLUS B C)))) (EQUAL (PLUS (TIMES A B) (TIMES A C)) (TIMES A (PLUS B C)))), which simplifies, expanding ZEROP and TIMES, to the conjecture: (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL (PLUS (TIMES (SUB1 A) B) (TIMES (SUB1 A) C)) (TIMES (SUB1 A) (PLUS B C)))) (EQUAL (PLUS (PLUS B (TIMES (SUB1 A) B)) C (TIMES (SUB1 A) C)) (PLUS (PLUS B C) (TIMES (SUB1 A) (PLUS 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 ] DISTRIBUTIVITY-OF-TIMES-OVER-PLUS-BACKWARDS (DISABLE DISTRIBUTIVITY-OF-TIMES-OVER-PLUS-BACKWARDS) [ 0.0 0.0 0.0 ] DISTRIBUTIVITY-OF-TIMES-OVER-PLUS-BACKWARDS-OFF (PROVE-LEMMA DIFFERENCE-IS-ZERO (REWRITE) (IMPLIES (LESSP A B) (EQUAL (DIFFERENCE A B) '0)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Give the conjecture the name *1. We will try to 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)) (IMPLIES (AND (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (OR (EQUAL A 0) (NOT (NUMBERP A)))) (p A B)) (IMPLIES (AND (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (p (SUB1 A) (SUB1 B))) (p A B))). Linear arithmetic, the lemmas SUB1-LESSEQP and SUB1-LESSP, and the definitions of OR and NOT 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 generates four new goals: Case 4. (IMPLIES (AND (OR (EQUAL B 0) (NOT (NUMBERP B))) (LESSP A B)) (EQUAL (DIFFERENCE A B) 0)), which simplifies, expanding 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)) (EQUAL (DIFFERENCE A B) 0)), which simplifies, opening up the functions NOT, OR, EQUAL, LESSP, and DIFFERENCE, 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)) (EQUAL (DIFFERENCE A B) 0)), which simplifies, using linear arithmetic, to the formula: (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)) (EQUAL (DIFFERENCE A B) 0)). But this again simplifies, unfolding the functions 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)))) (EQUAL (DIFFERENCE (SUB1 A) (SUB1 B)) 0) (LESSP A B)) (EQUAL (DIFFERENCE A B) 0)), which simplifies, using linear arithmetic, to two new goals: Case 1.2. (IMPLIES (AND (LESSP (SUB1 A) (SUB1 B)) (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (EQUAL (DIFFERENCE (SUB1 A) (SUB1 B)) 0) (LESSP A B)) (EQUAL (DIFFERENCE A B) 0)), which again simplifies, expanding NOT, OR, LESSP, DIFFERENCE, and EQUAL, to: T. Case 1.1. (IMPLIES (AND (LESSP A 1) (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (EQUAL (DIFFERENCE (SUB1 A) (SUB1 B)) 0) (LESSP A B)) (EQUAL (DIFFERENCE A B) 0)), which again simplifies, unfolding SUB1, NUMBERP, EQUAL, LESSP, NOT, and OR, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-IS-ZERO (DISABLE DIFFERENCE-IS-ZERO) [ 0.0 0.0 0.0 ] DIFFERENCE-IS-ZERO-OFF (PROVE-LEMMA DIFFERENCE-BY-LARGER-NUMBER (REWRITE) (EQUAL (DIFFERENCE (SUB1 X) X) '0) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) . Appealing to the lemma SUB1-ELIM, we now replace X by (ADD1 Z) to eliminate (SUB1 X). We employ the type restriction lemma noted when SUB1 was introduced to constrain the new variable. We must thus prove three new formulas: Case 3. (IMPLIES (EQUAL X 0) (EQUAL (DIFFERENCE (SUB1 X) X) 0)), which simplifies, expanding the definitions of SUB1, DIFFERENCE, and EQUAL, to: T. Case 2. (IMPLIES (NOT (NUMBERP X)) (EQUAL (DIFFERENCE (SUB1 X) X) 0)), which simplifies, applying SUB1-NNUMBERP, and opening up the functions EQUAL and DIFFERENCE, to: T. Case 1. (IMPLIES (AND (NUMBERP Z) (NOT (EQUAL (ADD1 Z) 0))) (EQUAL (DIFFERENCE Z (ADD1 Z)) 0)). However this simplifies, applying SUB1-ADD1, and unfolding DIFFERENCE, to: (IMPLIES (AND (NUMBERP Z) (NOT (EQUAL Z 0))) (EQUAL (DIFFERENCE (SUB1 Z) Z) 0)), 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 (DIFFERENCE (SUB1 X) X) 0), named *1. Let us appeal to the induction principle. There is only one suggested induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP (SUB1 X)) (p X)) (IMPLIES (AND (NOT (ZEROP (SUB1 X))) (ZEROP X)) (p X)) (IMPLIES (AND (NOT (ZEROP (SUB1 X))) (NOT (ZEROP X)) (p (SUB1 X))) (p X))). 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 three new formulas: Case 3. (IMPLIES (ZEROP (SUB1 X)) (EQUAL (DIFFERENCE (SUB1 X) X) 0)), which simplifies, expanding the definitions of ZEROP, EQUAL, and DIFFERENCE, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP (SUB1 X))) (ZEROP X)) (EQUAL (DIFFERENCE (SUB1 X) X) 0)), which simplifies, applying SUB1-NNUMBERP, and opening up ZEROP, SUB1, DIFFERENCE, and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP (SUB1 X))) (NOT (ZEROP X)) (EQUAL (DIFFERENCE (SUB1 (SUB1 X)) (SUB1 X)) 0)) (EQUAL (DIFFERENCE (SUB1 X) X) 0)). This simplifies, using linear arithmetic, to the following three new goals: Case 1.3. (IMPLIES (AND (LESSP (SUB1 (SUB1 X)) (SUB1 X)) (NOT (ZEROP (SUB1 X))) (NOT (ZEROP X)) (EQUAL (DIFFERENCE (SUB1 (SUB1 X)) (SUB1 X)) 0)) (EQUAL (DIFFERENCE (SUB1 X) X) 0)). But this again simplifies, unfolding the functions ZEROP, DIFFERENCE, and EQUAL, to: T. Case 1.2. (IMPLIES (AND (EQUAL (SUB1 X) 0) (NOT (ZEROP (SUB1 X))) (NOT (ZEROP X)) (EQUAL (DIFFERENCE (SUB1 (SUB1 X)) (SUB1 X)) 0)) (EQUAL (DIFFERENCE (SUB1 X) X) 0)), which again simplifies, unfolding the function ZEROP, to: T. Case 1.1. (IMPLIES (AND (LESSP X 1) (NOT (ZEROP (SUB1 X))) (NOT (ZEROP X)) (EQUAL (DIFFERENCE (SUB1 (SUB1 X)) (SUB1 X)) 0)) (EQUAL (DIFFERENCE (SUB1 X) X) 0)), which again simplifies, applying SUB1-NNUMBERP, and unfolding the definitions of SUB1, NUMBERP, EQUAL, LESSP, and ZEROP, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-BY-LARGER-NUMBER (DISABLE DIFFERENCE-BY-LARGER-NUMBER) [ 0.0 0.0 0.0 ] DIFFERENCE-BY-LARGER-NUMBER-OFF (PROVE-LEMMA DIFFERENCE-ADD1-ARG1 (REWRITE) (IMPLIES (IF (LESSP A B) '*1*FALSE '*1*TRUE) (EQUAL (DIFFERENCE (ADD1 A) B) (ADD1 (DIFFERENCE A B)))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP (ADD1 A) B) (NOT (LESSP A B))) (EQUAL (DIFFERENCE (ADD1 A) B) (ADD1 (DIFFERENCE A B)))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-ADD1-ARG1 (DISABLE DIFFERENCE-ADD1-ARG1) [ 0.0 0.0 0.0 ] DIFFERENCE-ADD1-ARG1-OFF (PROVE-LEMMA DIFFERENCE-ADD1-ARG2 (REWRITE) (IMPLIES (LESSP B A) (EQUAL (DIFFERENCE A (ADD1 B)) (SUB1 (DIFFERENCE A B)))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, using linear arithmetic, to the following two new conjectures: Case 2. (IMPLIES (AND (LESSP A (ADD1 B)) (LESSP B A)) (EQUAL (DIFFERENCE A (ADD1 B)) (SUB1 (DIFFERENCE A B)))). However this again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (LESSP A B) (LESSP B A)) (EQUAL (DIFFERENCE A (ADD1 B)) (SUB1 (DIFFERENCE A B)))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-ADD1-ARG2 (DISABLE DIFFERENCE-ADD1-ARG2) [ 0.0 0.0 0.0 ] DIFFERENCE-ADD1-ARG2-OFF (PROVE-LEMMA SUB1-DIFFERENCE (REWRITE) (EQUAL (SUB1 (DIFFERENCE A B)) (DIFFERENCE (SUB1 A) B)) ((INDUCT (DOUBLE-NUMBER-INDUCTION A B)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to the following two new formulas: Case 2. (IMPLIES (OR (ZEROP A) (ZEROP B)) (EQUAL (SUB1 (DIFFERENCE A B)) (DIFFERENCE (SUB1 A) B))). This simplifies, using linear arithmetic, to the following four new goals: Case 2.4. (IMPLIES (AND (NOT (LESSP B A)) (OR (ZEROP A) (ZEROP B))) (EQUAL (SUB1 (DIFFERENCE A B)) (DIFFERENCE (SUB1 A) B))). However this again simplifies, appealing to the lemma SUB1-NNUMBERP, and expanding the definitions of ZEROP, OR, EQUAL, DIFFERENCE, and SUB1, to eight new formulas: Case 2.4.8. (IMPLIES (AND (NOT (LESSP B A)) (EQUAL B 0) (NOT (EQUAL (SUB1 A) 0)) (EQUAL A 0)) (EQUAL (SUB1 0) (SUB1 A))), which again simplifies, trivially, to: T. Case 2.4.7. (IMPLIES (AND (NOT (LESSP B A)) (EQUAL B 0) (NOT (EQUAL (SUB1 A) 0)) (NOT (NUMBERP A))) (EQUAL (SUB1 0) (SUB1 A))). This again simplifies, applying SUB1-NNUMBERP, and opening up the definitions of LESSP and EQUAL, to: T. Case 2.4.6. (IMPLIES (AND (NOT (LESSP B A)) (EQUAL B 0) (EQUAL (SUB1 A) 0) (EQUAL A 0)) (EQUAL (SUB1 0) 0)). This again simplifies, clearly, to: T. Case 2.4.5. (IMPLIES (AND (NOT (LESSP B A)) (EQUAL B 0) (EQUAL (SUB1 A) 0) (NOT (NUMBERP A))) (EQUAL (SUB1 0) 0)). However this again simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP A 1) (NOT (LESSP 0 A)) (EQUAL (SUB1 A) 0) (NOT (NUMBERP A))) (EQUAL (SUB1 0) 0)). This again simplifies, rewriting with SUB1-NNUMBERP, and expanding NUMBERP, EQUAL, LESSP, and SUB1, to: T. Case 2.4.4. (IMPLIES (AND (NOT (LESSP B A)) (NOT (NUMBERP B)) (NOT (EQUAL (SUB1 A) 0)) (EQUAL A 0)) (EQUAL (SUB1 0) (SUB1 A))). This again simplifies, trivially, to: T. Case 2.4.3. (IMPLIES (AND (NOT (LESSP B A)) (NOT (NUMBERP B)) (NOT (EQUAL (SUB1 A) 0)) (NOT (NUMBERP A))) (EQUAL (SUB1 0) (SUB1 A))). But this again simplifies, applying SUB1-NNUMBERP, and expanding LESSP and EQUAL, to: T. Case 2.4.2. (IMPLIES (AND (NOT (LESSP B A)) (NOT (NUMBERP B)) (EQUAL (SUB1 A) 0) (EQUAL A 0)) (EQUAL (SUB1 0) 0)). This again simplifies, clearly, to: T. Case 2.4.1. (IMPLIES (AND (NOT (LESSP B A)) (NOT (NUMBERP B)) (EQUAL (SUB1 A) 0) (NOT (NUMBERP A))) (EQUAL (SUB1 0) 0)). This again simplifies, applying SUB1-NNUMBERP, and expanding LESSP, EQUAL, and SUB1, to: T. Case 2.3. (IMPLIES (AND (LESSP A B) (OR (ZEROP A) (ZEROP B))) (EQUAL (SUB1 (DIFFERENCE A B)) (DIFFERENCE (SUB1 A) B))). However this again simplifies, applying SUB1-NNUMBERP, and opening up the functions ZEROP, OR, EQUAL, DIFFERENCE, and SUB1, to the following eight new goals: Case 2.3.8. (IMPLIES (AND (LESSP A B) (EQUAL B 0) (NOT (EQUAL (SUB1 A) 0)) (EQUAL A 0)) (EQUAL (SUB1 0) (SUB1 A))). This again simplifies, clearly, to: T. Case 2.3.7. (IMPLIES (AND (LESSP A B) (EQUAL B 0) (NOT (EQUAL (SUB1 A) 0)) (NOT (NUMBERP A))) (EQUAL (SUB1 0) (SUB1 A))). However this again simplifies, using linear arithmetic, to: T. Case 2.3.6. (IMPLIES (AND (LESSP A B) (EQUAL B 0) (EQUAL (SUB1 A) 0) (EQUAL A 0)) (EQUAL (SUB1 0) 0)), which again simplifies, obviously, to: T. Case 2.3.5. (IMPLIES (AND (LESSP A B) (EQUAL B 0) (EQUAL (SUB1 A) 0) (NOT (NUMBERP A))) (EQUAL (SUB1 0) 0)). This again simplifies, using linear arithmetic, to: T. Case 2.3.4. (IMPLIES (AND (LESSP A B) (NOT (NUMBERP B)) (NOT (EQUAL (SUB1 A) 0)) (EQUAL A 0)) (EQUAL (SUB1 0) (SUB1 A))), which again simplifies, clearly, to: T. Case 2.3.3. (IMPLIES (AND (LESSP A B) (NOT (NUMBERP B)) (NOT (EQUAL (SUB1 A) 0)) (NOT (NUMBERP A))) (EQUAL (SUB1 0) (SUB1 A))). But this again simplifies, unfolding LESSP, to: T. Case 2.3.2. (IMPLIES (AND (LESSP A B) (NOT (NUMBERP B)) (EQUAL (SUB1 A) 0) (EQUAL A 0)) (EQUAL (SUB1 0) 0)), which again simplifies, trivially, to: T. Case 2.3.1. (IMPLIES (AND (LESSP A B) (NOT (NUMBERP B)) (EQUAL (SUB1 A) 0) (NOT (NUMBERP A))) (EQUAL (SUB1 0) 0)). However this again simplifies, unfolding the function LESSP, to: T. Case 2.2. (IMPLIES (AND (LESSP (SUB1 A) B) (OR (ZEROP A) (ZEROP B))) (EQUAL (SUB1 (DIFFERENCE A B)) (DIFFERENCE (SUB1 A) B))), which again simplifies, rewriting with SUB1-NNUMBERP, and unfolding the definitions of ZEROP, OR, EQUAL, DIFFERENCE, and SUB1, to the following eight new conjectures: Case 2.2.8. (IMPLIES (AND (LESSP (SUB1 A) B) (EQUAL B 0) (NOT (EQUAL (SUB1 A) 0)) (EQUAL A 0)) (EQUAL (SUB1 0) (SUB1 A))). This again simplifies, obviously, to: T. Case 2.2.7. (IMPLIES (AND (LESSP (SUB1 A) B) (EQUAL B 0) (NOT (EQUAL (SUB1 A) 0)) (NOT (NUMBERP A))) (EQUAL (SUB1 0) (SUB1 A))). This again simplifies, applying SUB1-NNUMBERP, and expanding the definition of LESSP, to: T. Case 2.2.6. (IMPLIES (AND (LESSP (SUB1 A) B) (EQUAL B 0) (EQUAL (SUB1 A) 0) (EQUAL A 0)) (EQUAL (SUB1 0) 0)). This again simplifies, trivially, to: T. Case 2.2.5. (IMPLIES (AND (LESSP (SUB1 A) B) (EQUAL B 0) (EQUAL (SUB1 A) 0) (NOT (NUMBERP A))) (EQUAL (SUB1 0) 0)). But this again simplifies, using linear arithmetic, to: T. Case 2.2.4. (IMPLIES (AND (LESSP (SUB1 A) B) (NOT (NUMBERP B)) (NOT (EQUAL (SUB1 A) 0)) (EQUAL A 0)) (EQUAL (SUB1 0) (SUB1 A))), which again simplifies, clearly, to: T. Case 2.2.3. (IMPLIES (AND (LESSP (SUB1 A) B) (NOT (NUMBERP B)) (NOT (EQUAL (SUB1 A) 0)) (NOT (NUMBERP A))) (EQUAL (SUB1 0) (SUB1 A))). But this again simplifies, appealing to the lemma SUB1-NNUMBERP, and unfolding LESSP, to: T. Case 2.2.2. (IMPLIES (AND (LESSP (SUB1 A) B) (NOT (NUMBERP B)) (EQUAL (SUB1 A) 0) (EQUAL A 0)) (EQUAL (SUB1 0) 0)), which again simplifies, trivially, to: T. Case 2.2.1. (IMPLIES (AND (LESSP (SUB1 A) B) (NOT (NUMBERP B)) (EQUAL (SUB1 A) 0) (NOT (NUMBERP A))) (EQUAL (SUB1 0) 0)). But this again simplifies, opening up the definition of LESSP, to: T. Case 2.1. (IMPLIES (AND (LESSP A 1) (OR (ZEROP A) (ZEROP B))) (EQUAL (SUB1 (DIFFERENCE A B)) (DIFFERENCE (SUB1 A) B))), which again simplifies, applying the lemma SUB1-NNUMBERP, and expanding the functions ZEROP, OR, EQUAL, DIFFERENCE, and SUB1, to eight new conjectures: Case 2.1.8. (IMPLIES (AND (LESSP A 1) (EQUAL B 0) (NOT (EQUAL (SUB1 A) 0)) (EQUAL A 0)) (EQUAL (SUB1 0) (SUB1 A))), which again simplifies, trivially, to: T. Case 2.1.7. (IMPLIES (AND (LESSP A 1) (EQUAL B 0) (NOT (EQUAL (SUB1 A) 0)) (NOT (NUMBERP A))) (EQUAL (SUB1 0) (SUB1 A))). But this again simplifies, rewriting with SUB1-NNUMBERP, and unfolding NUMBERP, EQUAL, and LESSP, to: T. Case 2.1.6. (IMPLIES (AND (LESSP A 1) (EQUAL B 0) (EQUAL (SUB1 A) 0) (EQUAL A 0)) (EQUAL (SUB1 0) 0)). This again simplifies, obviously, to: T. Case 2.1.5. (IMPLIES (AND (LESSP A 1) (EQUAL B 0) (EQUAL (SUB1 A) 0) (NOT (NUMBERP A))) (EQUAL (SUB1 0) 0)). But this again simplifies, rewriting with SUB1-NNUMBERP, and opening up the definitions of NUMBERP, EQUAL, LESSP, and SUB1, to: T. Case 2.1.4. (IMPLIES (AND (LESSP A 1) (NOT (NUMBERP B)) (NOT (EQUAL (SUB1 A) 0)) (EQUAL A 0)) (EQUAL (SUB1 0) (SUB1 A))). This again simplifies, clearly, to: T. Case 2.1.3. (IMPLIES (AND (LESSP A 1) (NOT (NUMBERP B)) (NOT (EQUAL (SUB1 A) 0)) (NOT (NUMBERP A))) (EQUAL (SUB1 0) (SUB1 A))). This again simplifies, rewriting with SUB1-NNUMBERP, and unfolding the definitions of NUMBERP, EQUAL, and LESSP, to: T. Case 2.1.2. (IMPLIES (AND (LESSP A 1) (NOT (NUMBERP B)) (EQUAL (SUB1 A) 0) (EQUAL A 0)) (EQUAL (SUB1 0) 0)). This again simplifies, clearly, to: T. Case 2.1.1. (IMPLIES (AND (LESSP A 1) (NOT (NUMBERP B)) (EQUAL (SUB1 A) 0) (NOT (NUMBERP A))) (EQUAL (SUB1 0) 0)). But this again simplifies, applying SUB1-NNUMBERP, and expanding NUMBERP, EQUAL, LESSP, and SUB1, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (SUB1 (DIFFERENCE (SUB1 A) (SUB1 B))) (DIFFERENCE (SUB1 (SUB1 A)) (SUB1 B)))) (EQUAL (SUB1 (DIFFERENCE A B)) (DIFFERENCE (SUB1 A) B))). This simplifies, using linear arithmetic, to the following three new conjectures: Case 1.3. (IMPLIES (AND (NOT (LESSP B A)) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (SUB1 (DIFFERENCE (SUB1 A) (SUB1 B))) (DIFFERENCE (SUB1 (SUB1 A)) (SUB1 B)))) (EQUAL (SUB1 (DIFFERENCE A B)) (DIFFERENCE (SUB1 A) B))). But this again simplifies, expanding the functions LESSP and DIFFERENCE, to: (IMPLIES (AND (NOT (LESSP (SUB1 B) (SUB1 A))) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (SUB1 (DIFFERENCE (SUB1 A) (SUB1 B))) (DIFFERENCE (SUB1 (SUB1 A)) (SUB1 B))) (EQUAL (SUB1 A) 0)) (EQUAL (DIFFERENCE (SUB1 (SUB1 A)) (SUB1 B)) 0)). However this again simplifies, expanding EQUAL, LESSP, DIFFERENCE, and SUB1, to: T. Case 1.2. (IMPLIES (AND (LESSP A B) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (SUB1 (DIFFERENCE (SUB1 A) (SUB1 B))) (DIFFERENCE (SUB1 (SUB1 A)) (SUB1 B)))) (EQUAL (SUB1 (DIFFERENCE A B)) (DIFFERENCE (SUB1 A) B))), which again simplifies, expanding LESSP and DIFFERENCE, to: (IMPLIES (AND (LESSP (SUB1 A) (SUB1 B)) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (SUB1 (DIFFERENCE (SUB1 A) (SUB1 B))) (DIFFERENCE (SUB1 (SUB1 A)) (SUB1 B))) (EQUAL (SUB1 A) 0)) (EQUAL (DIFFERENCE (SUB1 (SUB1 A)) (SUB1 B)) 0)). This again simplifies, unfolding EQUAL, LESSP, DIFFERENCE, and SUB1, to: T. Case 1.1. (IMPLIES (AND (LESSP (SUB1 A) B) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (SUB1 (DIFFERENCE (SUB1 A) (SUB1 B))) (DIFFERENCE (SUB1 (SUB1 A)) (SUB1 B)))) (EQUAL (SUB1 (DIFFERENCE A B)) (DIFFERENCE (SUB1 A) B))), which again simplifies, unfolding LESSP, EQUAL, DIFFERENCE, and SUB1, to: (IMPLIES (AND (LESSP (SUB1 (SUB1 A)) (SUB1 B)) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL (SUB1 (DIFFERENCE (SUB1 A) (SUB1 B))) (DIFFERENCE (SUB1 (SUB1 A)) (SUB1 B))) (EQUAL (SUB1 A) 0)) (EQUAL (DIFFERENCE (SUB1 (SUB1 A)) (SUB1 B)) 0)). However this again simplifies, unfolding the functions SUB1, EQUAL, LESSP, and DIFFERENCE, to: T. Q.E.D. [ 0.1 0.0 0.0 ] SUB1-DIFFERENCE (DISABLE SUB1-DIFFERENCE) [ 0.0 0.0 0.0 ] SUB1-DIFFERENCE-OFF (PROVE-LEMMA DIFFERENCE-SUB1-ARG1 (REWRITE) (IMPLIES (LESSP B A) (EQUAL (DIFFERENCE (SUB1 A) B) (SUB1 (DIFFERENCE A B)))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, using linear arithmetic, to the following three new conjectures: Case 3. (IMPLIES (AND (LESSP (SUB1 A) B) (LESSP B A)) (EQUAL (DIFFERENCE (SUB1 A) B) (SUB1 (DIFFERENCE A B)))). However this again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (LESSP A 1) (LESSP B A)) (EQUAL (DIFFERENCE (SUB1 A) B) (SUB1 (DIFFERENCE A B)))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (LESSP A B) (LESSP B A)) (EQUAL (DIFFERENCE (SUB1 A) B) (SUB1 (DIFFERENCE A B)))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-SUB1-ARG1 (DISABLE DIFFERENCE-SUB1-ARG1) [ 0.0 0.0 0.0 ] DIFFERENCE-SUB1-ARG1-OFF (PROVE-LEMMA DIFFERENCE-SUB1-ARG2 (REWRITE) (IMPLIES (AND (NOT (ZEROP B)) (IF (LESSP A B) '*1*FALSE '*1*TRUE)) (EQUAL (DIFFERENCE A (SUB1 B)) (ADD1 (DIFFERENCE A B)))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B))) (EQUAL (DIFFERENCE A (SUB1 B)) (ADD1 (DIFFERENCE A B)))). This simplifies, using linear arithmetic, to the new formula: (IMPLIES (AND (LESSP A (SUB1 B)) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP A B))) (EQUAL (DIFFERENCE A (SUB1 B)) (ADD1 (DIFFERENCE A B)))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-SUB1-ARG2 (DISABLE DIFFERENCE-SUB1-ARG2) [ 0.0 0.0 0.0 ] DIFFERENCE-SUB1-ARG2-OFF (PROVE-LEMMA DIFFERENCE-PLUS-CANCELLATION2-INSTANCE (REWRITE) (IMPLIES (IF (LESSP A C) '*1*FALSE '*1*TRUE) (EQUAL (DIFFERENCE (PLUS (ADD1 A) B) (ADD1 C)) (PLUS (DIFFERENCE A C) B))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP (PLUS (ADD1 A) B) (ADD1 C)) (NOT (LESSP A C))) (EQUAL (DIFFERENCE (PLUS (ADD1 A) B) (ADD1 C)) (PLUS (DIFFERENCE A C) B))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS-CANCELLATION2-INSTANCE (DISABLE DIFFERENCE-PLUS-CANCELLATION2-INSTANCE) [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS-CANCELLATION2-INSTANCE-OFF (PROVE-LEMMA DIFFERENCE-DIFFERENCE (REWRITE) (EQUAL (DIFFERENCE (DIFFERENCE A B) C) (DIFFERENCE A (PLUS B C))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, using linear arithmetic, to the following three new conjectures: Case 3. (IMPLIES (LESSP (DIFFERENCE A B) C) (EQUAL (DIFFERENCE (DIFFERENCE A B) C) (DIFFERENCE A (PLUS B C)))). Give the above formula the name *1. Case 2. (IMPLIES (LESSP A B) (EQUAL (DIFFERENCE (DIFFERENCE A B) C) (DIFFERENCE A (PLUS B 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 (DIFFERENCE (DIFFERENCE A B) C) (DIFFERENCE A (PLUS B C))). 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 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 establish 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 conjectures: Case 3. (IMPLIES (ZEROP A) (EQUAL (DIFFERENCE (DIFFERENCE A B) C) (DIFFERENCE A (PLUS B C)))). This simplifies, using linear arithmetic, to the following three new goals: Case 3.3. (IMPLIES (AND (LESSP (DIFFERENCE A B) C) (ZEROP A)) (EQUAL (DIFFERENCE (DIFFERENCE A B) C) (DIFFERENCE A (PLUS B C)))). But this again simplifies, unfolding the functions DIFFERENCE, ZEROP, EQUAL, and PLUS, to: T. Case 3.2. (IMPLIES (AND (LESSP A B) (ZEROP A)) (EQUAL (DIFFERENCE (DIFFERENCE A B) C) (DIFFERENCE A (PLUS B C)))), which again simplifies, opening up ZEROP, EQUAL, DIFFERENCE, and PLUS, to: T. Case 3.1. (IMPLIES (AND (LESSP A (PLUS B C)) (ZEROP A)) (EQUAL (DIFFERENCE (DIFFERENCE A B) C) (DIFFERENCE A (PLUS B C)))), which again simplifies, opening up the definitions of PLUS, ZEROP, EQUAL, and DIFFERENCE, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP A)) (ZEROP B)) (EQUAL (DIFFERENCE (DIFFERENCE A B) C) (DIFFERENCE A (PLUS B C)))), which simplifies, using linear arithmetic, to three new conjectures: Case 2.3. (IMPLIES (AND (LESSP (DIFFERENCE A B) C) (NOT (ZEROP A)) (ZEROP B)) (EQUAL (DIFFERENCE (DIFFERENCE A B) C) (DIFFERENCE A (PLUS B C)))), which again simplifies, expanding the definitions of DIFFERENCE, ZEROP, EQUAL, and PLUS, to two new formulas: Case 2.3.2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL B 0) (LESSP A C) (NOT (NUMBERP C))) (EQUAL (DIFFERENCE A C) (DIFFERENCE A 0))), which again simplifies, unfolding the definition of LESSP, to: T. Case 2.3.1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP B)) (LESSP A C) (NOT (NUMBERP C))) (EQUAL (DIFFERENCE A C) (DIFFERENCE A 0))), which again simplifies, expanding LESSP, to: T. Case 2.2. (IMPLIES (AND (LESSP A B) (NOT (ZEROP A)) (ZEROP B)) (EQUAL (DIFFERENCE (DIFFERENCE A B) C) (DIFFERENCE A (PLUS B C)))), which again simplifies, unfolding the definitions of ZEROP, EQUAL, DIFFERENCE, and PLUS, to two new goals: Case 2.2.2. (IMPLIES (AND (LESSP A B) (NOT (EQUAL A 0)) (NUMBERP A) (EQUAL B 0) (NOT (NUMBERP C))) (EQUAL (DIFFERENCE A C) (DIFFERENCE A 0))), which again simplifies, using linear arithmetic, to: T. Case 2.2.1. (IMPLIES (AND (LESSP A B) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (NUMBERP B)) (NOT (NUMBERP C))) (EQUAL (DIFFERENCE A C) (DIFFERENCE A 0))), which again simplifies, expanding LESSP, to: T. Case 2.1. (IMPLIES (AND (LESSP A (PLUS B C)) (NOT (ZEROP A)) (ZEROP B)) (EQUAL (DIFFERENCE (DIFFERENCE A B) C) (DIFFERENCE A (PLUS B C)))), which again simplifies, opening up the functions PLUS, ZEROP, EQUAL, and DIFFERENCE, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP A)) (NOT (ZEROP B)) (EQUAL (DIFFERENCE (DIFFERENCE (SUB1 A) (SUB1 B)) C) (DIFFERENCE (SUB1 A) (PLUS (SUB1 B) C)))) (EQUAL (DIFFERENCE (DIFFERENCE A B) C) (DIFFERENCE A (PLUS B C)))), which simplifies, using linear arithmetic, to three new conjectures: Case 1.3. (IMPLIES (AND (LESSP (DIFFERENCE A B) C) (NOT (ZEROP A)) (NOT (ZEROP B)) (EQUAL (DIFFERENCE (DIFFERENCE (SUB1 A) (SUB1 B)) C) (DIFFERENCE (SUB1 A) (PLUS (SUB1 B) C)))) (EQUAL (DIFFERENCE (DIFFERENCE A B) C) (DIFFERENCE A (PLUS B C)))), which again simplifies, rewriting with SUB1-ADD1, and opening up the definitions of DIFFERENCE, ZEROP, and PLUS, to: T. Case 1.2. (IMPLIES (AND (LESSP A B) (NOT (ZEROP A)) (NOT (ZEROP B)) (EQUAL (DIFFERENCE (DIFFERENCE (SUB1 A) (SUB1 B)) C) (DIFFERENCE (SUB1 A) (PLUS (SUB1 B) C)))) (EQUAL (DIFFERENCE (DIFFERENCE A B) C) (DIFFERENCE A (PLUS B C)))). But this again simplifies, appealing to the lemma SUB1-ADD1, and opening up the definitions of LESSP, ZEROP, DIFFERENCE, and PLUS, to: T. Case 1.1. (IMPLIES (AND (LESSP A (PLUS B C)) (NOT (ZEROP A)) (NOT (ZEROP B)) (EQUAL (DIFFERENCE (DIFFERENCE (SUB1 A) (SUB1 B)) C) (DIFFERENCE (SUB1 A) (PLUS (SUB1 B) C)))) (EQUAL (DIFFERENCE (DIFFERENCE A B) C) (DIFFERENCE A (PLUS B C)))), which again simplifies, applying SUB1-ADD1, and unfolding PLUS, ZEROP, and DIFFERENCE, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-DIFFERENCE (DISABLE DIFFERENCE-DIFFERENCE) [ 0.0 0.0 0.0 ] DIFFERENCE-DIFFERENCE-OFF (PROVE-LEMMA YET-ANOTHER-DIFFERENCE-PLUS-CROCK (REWRITE) (EQUAL (DIFFERENCE (PLUS N (PLUS B A)) A) (PLUS N B)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, using linear arithmetic, to: (IMPLIES (LESSP (PLUS N B A) A) (EQUAL (DIFFERENCE (PLUS N B A) A) (PLUS N B))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] YET-ANOTHER-DIFFERENCE-PLUS-CROCK (DISABLE YET-ANOTHER-DIFFERENCE-PLUS-CROCK) [ 0.0 0.0 0.0 ] YET-ANOTHER-DIFFERENCE-PLUS-CROCK-OFF (PROVE-LEMMA NON-ZERO-DIFFERENCE (REWRITE) (IMPLIES (AND (NUMBERP A) (LESSP A B)) (NOT (EQUAL (DIFFERENCE B A) '0))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] NON-ZERO-DIFFERENCE (DISABLE NON-ZERO-DIFFERENCE) [ 0.0 0.0 0.0 ] NON-ZERO-DIFFERENCE-OFF (PROVE-LEMMA REWRITE-NON-ZERO-DIFFERENCE-AS-LESSP (REWRITE) (EQUAL (NOT (EQUAL (DIFFERENCE A B) '0)) (LESSP B A)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) WARNING: Note that the rewrite rule REWRITE-NON-ZERO-DIFFERENCE-AS-LESSP will be stored so as to apply only to terms with the nonrecursive function symbol NOT. This conjecture simplifies, unfolding NOT, to two new conjectures: Case 2. (IMPLIES (NOT (EQUAL (DIFFERENCE A B) 0)) (EQUAL T (LESSP B A))), which again simplifies, trivially, to: (IMPLIES (NOT (EQUAL (DIFFERENCE A B) 0)) (LESSP B A)), which we will name *1. Case 1. (IMPLIES (EQUAL (DIFFERENCE A B) 0) (EQUAL F (LESSP B A))). This again simplifies, obviously, to: (IMPLIES (EQUAL (DIFFERENCE A B) 0) (NOT (LESSP B A))), which again simplifies, using linear arithmetic, to: T. So next consider: (IMPLIES (NOT (EQUAL (DIFFERENCE A B) 0)) (LESSP B A)), which is formula *1 above. We will try to 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 (ZEROP A) (p B A)) (IMPLIES (AND (NOT (ZEROP A)) (ZEROP B)) (p B A)) (IMPLIES (AND (NOT (ZEROP A)) (NOT (ZEROP B)) (p (SUB1 B) (SUB1 A))) (p B A))). 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 generates four new goals: Case 4. (IMPLIES (AND (ZEROP A) (NOT (EQUAL (DIFFERENCE A B) 0))) (LESSP B A)), which simplifies, expanding ZEROP, EQUAL, and DIFFERENCE, to: T. Case 3. (IMPLIES (AND (NOT (ZEROP A)) (ZEROP B) (NOT (EQUAL (DIFFERENCE A B) 0))) (LESSP B A)), which simplifies, opening up the functions ZEROP, EQUAL, DIFFERENCE, and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP A)) (NOT (ZEROP B)) (EQUAL (DIFFERENCE (SUB1 A) (SUB1 B)) 0) (NOT (EQUAL (DIFFERENCE A B) 0))) (LESSP B A)), which simplifies, using linear arithmetic, to three new formulas: Case 2.3. (IMPLIES (AND (LESSP A B) (NOT (ZEROP A)) (NOT (ZEROP B)) (EQUAL (DIFFERENCE (SUB1 A) (SUB1 B)) 0) (NOT (EQUAL (DIFFERENCE A B) 0))) (LESSP B A)), which again simplifies, using linear arithmetic, to two new formulas: Case 2.3.2. (IMPLIES (AND (LESSP (SUB1 A) (SUB1 B)) (LESSP A B) (NOT (ZEROP A)) (NOT (ZEROP B)) (EQUAL (DIFFERENCE (SUB1 A) (SUB1 B)) 0) (NOT (EQUAL (DIFFERENCE A B) 0))) (LESSP B A)), which again simplifies, expanding the definitions of LESSP, ZEROP, DIFFERENCE, and EQUAL, to: T. Case 2.3.1. (IMPLIES (AND (LESSP A 1) (LESSP A B) (NOT (ZEROP A)) (NOT (ZEROP B)) (EQUAL (DIFFERENCE (SUB1 A) (SUB1 B)) 0) (NOT (EQUAL (DIFFERENCE A B) 0))) (LESSP B A)), which again simplifies, opening up the functions SUB1, NUMBERP, EQUAL, LESSP, and ZEROP, to: T. Case 2.2. (IMPLIES (AND (LESSP (SUB1 A) (SUB1 B)) (NOT (ZEROP A)) (NOT (ZEROP B)) (EQUAL (DIFFERENCE (SUB1 A) (SUB1 B)) 0) (NOT (EQUAL (DIFFERENCE A B) 0))) (LESSP B A)), which again simplifies, unfolding the functions ZEROP, DIFFERENCE, and EQUAL, to: T. Case 2.1. (IMPLIES (AND (LESSP A 1) (NOT (ZEROP A)) (NOT (ZEROP B)) (EQUAL (DIFFERENCE (SUB1 A) (SUB1 B)) 0) (NOT (EQUAL (DIFFERENCE A B) 0))) (LESSP B A)), which again simplifies, unfolding the definitions of SUB1, NUMBERP, EQUAL, LESSP, and ZEROP, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP A)) (NOT (ZEROP B)) (LESSP (SUB1 B) (SUB1 A)) (NOT (EQUAL (DIFFERENCE A B) 0))) (LESSP B A)), which simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP A 1) (NOT (ZEROP A)) (NOT (ZEROP B)) (LESSP (SUB1 B) (SUB1 A)) (NOT (EQUAL (DIFFERENCE A B) 0))) (LESSP B A)). But this again simplifies, unfolding the definitions of SUB1, NUMBERP, EQUAL, LESSP, and ZEROP, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] REWRITE-NON-ZERO-DIFFERENCE-AS-LESSP (DISABLE REWRITE-NON-ZERO-DIFFERENCE-AS-LESSP) [ 0.0 0.0 0.0 ] REWRITE-NON-ZERO-DIFFERENCE-AS-LESSP-OFF (PROVE-LEMMA REWRITE-ZERO-DIFFERENCE-AS-EQUALITY (REWRITE) (IMPLIES (IF (LESSP A B) '*1*FALSE '*1*TRUE) (EQUAL (EQUAL (DIFFERENCE A B) '0) (EQUAL (FIX A) (FIX B)))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, expanding the definition of FIX, to seven new goals: Case 7. (IMPLIES (AND (NOT (LESSP A B)) (NUMBERP B) (NUMBERP A) (NOT (EQUAL A B))) (NOT (EQUAL (DIFFERENCE A B) 0))), which again simplifies, using linear arithmetic, to: T. Case 6. (IMPLIES (AND (NOT (LESSP A B)) (NUMBERP B) (NOT (NUMBERP A)) (NOT (EQUAL 0 B))) (NOT (EQUAL (DIFFERENCE A B) 0))), which again simplifies, unfolding the function LESSP, to: T. Case 5. (IMPLIES (AND (NOT (LESSP A B)) (NOT (NUMBERP B)) (NUMBERP A) (NOT (EQUAL A 0))) (NOT (EQUAL (DIFFERENCE A B) 0))), which again simplifies, expanding the functions LESSP and DIFFERENCE, to: T. Case 4. (IMPLIES (AND (NOT (LESSP A B)) (NOT (NUMBERP B)) (NOT (NUMBERP A))) (EQUAL (EQUAL (DIFFERENCE A B) 0) T)), which again simplifies, opening up LESSP, DIFFERENCE, and EQUAL, to: T. Case 3. (IMPLIES (AND (NOT (LESSP A B)) (NOT (NUMBERP B)) (EQUAL A 0)) (EQUAL (EQUAL (DIFFERENCE A B) 0) T)), which again simplifies, opening up the definitions of LESSP, EQUAL, and DIFFERENCE, to: T. Case 2. (IMPLIES (AND (NOT (LESSP A B)) (NOT (NUMBERP A)) (EQUAL 0 B)) (EQUAL (EQUAL (DIFFERENCE A B) 0) T)), which again simplifies, expanding the functions EQUAL, LESSP, and DIFFERENCE, to: T. Case 1. (IMPLIES (AND (NOT (LESSP A B)) (NUMBERP B) (NUMBERP A) (EQUAL A B)) (EQUAL (EQUAL (DIFFERENCE A B) 0) T)), which again simplifies, trivially, to the new formula: (IMPLIES (AND (NOT (LESSP B B)) (NUMBERP B)) (EQUAL (DIFFERENCE B B) 0)), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REWRITE-ZERO-DIFFERENCE-AS-EQUALITY (DISABLE REWRITE-ZERO-DIFFERENCE-AS-EQUALITY) [ 0.0 0.0 0.0 ] REWRITE-ZERO-DIFFERENCE-AS-EQUALITY-OFF (PROVE-LEMMA REGROUP-FACT (REWRITE) (IMPLIES (AND (IF (LESSP A C) '*1*FALSE '*1*TRUE) (IF (LESSP B D) '*1*FALSE '*1*TRUE)) (EQUAL (DIFFERENCE (PLUS A B) (PLUS C D)) (PLUS (DIFFERENCE A C) (DIFFERENCE B D)))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, using linear arithmetic, to the new goal: (IMPLIES (AND (LESSP (PLUS A B) (PLUS C D)) (NOT (LESSP A C)) (NOT (LESSP B D))) (EQUAL (DIFFERENCE (PLUS A B) (PLUS C D)) (PLUS (DIFFERENCE A C) (DIFFERENCE B D)))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REGROUP-FACT (DISABLE REGROUP-FACT) [ 0.0 0.0 0.0 ] REGROUP-FACT-OFF (PROVE-LEMMA DIFFERENCE-EQUALS-0 (REWRITE) (IMPLIES (AND (NUMBERP A) (AND (NUMBERP B) (IF (LESSP A B) '*1*FALSE '*1*TRUE))) (EQUAL (EQUAL (DIFFERENCE A B) '0) (EQUAL A B))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, trivially, to the following two new conjectures: Case 2. (IMPLIES (AND (NUMBERP A) (NUMBERP B) (NOT (LESSP A B)) (NOT (EQUAL A B))) (NOT (EQUAL (DIFFERENCE A B) 0))). However this again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NUMBERP A) (NUMBERP B) (NOT (LESSP A B)) (EQUAL A B)) (EQUAL (EQUAL (DIFFERENCE A B) 0) T)), which again simplifies, obviously, to the new goal: (IMPLIES (AND (NUMBERP B) (NOT (LESSP B B))) (EQUAL (DIFFERENCE B B) 0)), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-EQUALS-0 (DISABLE DIFFERENCE-EQUALS-0) [ 0.0 0.0 0.0 ] DIFFERENCE-EQUALS-0-OFF (PROVE-LEMMA TIMES-ZERO3 (REWRITE) (EQUAL (TIMES X '0) '0) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 X) (p X)) (IMPLIES (AND (NOT (ZEROP X)) (p (SUB1 X))) (p X))). 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 the following two new formulas: Case 2. (IMPLIES (ZEROP X) (EQUAL (TIMES X 0) 0)). This simplifies, expanding the definitions of ZEROP, TIMES, and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (TIMES (SUB1 X) 0) 0)) (EQUAL (TIMES X 0) 0)). This simplifies, opening up the functions ZEROP, TIMES, PLUS, and EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] TIMES-ZERO3 (DISABLE TIMES-ZERO3) [ 0.0 0.0 0.0 ] TIMES-ZERO3-OFF (PROVE-LEMMA DISTRIBUTIVITY-OF-TIMES-OVER-DIFFERENCE (REWRITE) (EQUAL (DIFFERENCE (TIMES A B) (TIMES A C)) (TIMES A (DIFFERENCE B C))) ((ENABLE TIMES-DIFFERENCE COMMUTATIVITY-OF-TIMES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, appealing to the lemmas COMMUTATIVITY-OF-TIMES and TIMES-DIFFERENCE, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DISTRIBUTIVITY-OF-TIMES-OVER-DIFFERENCE (DISABLE DISTRIBUTIVITY-OF-TIMES-OVER-DIFFERENCE) [ 0.0 0.0 0.0 ] DISTRIBUTIVITY-OF-TIMES-OVER-DIFFERENCE-OFF (PROVE-LEMMA EXP-2-NEVER-0 (REWRITE) (EQUAL (LESSP '0 (EXP '2 I)) '*1*TRUE) ((ENABLE EXP) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, unfolding the definitions of EQUAL and LESSP, to: (NOT (EQUAL (EXP 2 I) 0)), which we will name *1. Perhaps we can prove it by induction. There is only one plausible induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP I) (p I)) (IMPLIES (AND (NOT (ZEROP I)) (p (SUB1 I))) (p I))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP inform us that the measure (COUNT I) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme produces the following two new goals: Case 2. (IMPLIES (ZEROP I) (NOT (EQUAL (EXP 2 I) 0))). This simplifies, expanding the definitions of ZEROP, EQUAL, and EXP, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP I)) (NOT (EQUAL (EXP 2 (SUB1 I)) 0))) (NOT (EQUAL (EXP 2 I) 0))). This simplifies, opening up the functions ZEROP and EXP, to: (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL (EXP 2 (SUB1 I)) 0))) (NOT (EQUAL (TIMES 2 (EXP 2 (SUB1 I))) 0))), which again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] EXP-2-NEVER-0 (DISABLE EXP-2-NEVER-0) [ 0.0 0.0 0.0 ] EXP-2-NEVER-0-OFF (PROVE-LEMMA EXP-2-NEVER-0-LINEAR (REWRITE) (LESSP '0 (EXP '2 I)) ((ENABLE EXP-2-NEVER-0) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) WARNING: Note that the proposed lemma EXP-2-NEVER-0-LINEAR is to be stored as zero type prescription rules, zero compound recognizer rules, one linear rule, and zero replacement rules. This conjecture can be simplified, using the abbreviation EXP-2-NEVER-0, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EXP-2-NEVER-0-LINEAR (DISABLE EXP-2-NEVER-0-LINEAR) [ 0.0 0.0 0.0 ] EXP-2-NEVER-0-LINEAR-OFF (PROVE-LEMMA REMAINDER-NOOP (REWRITE) (IMPLIES (AND (NUMBERP A) (AND (LESSP A B) (NOT (ZEROP B)))) (EQUAL (REMAINDER A B) A)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to the goal: (IMPLIES (AND (NUMBERP A) (LESSP A B) (NOT (EQUAL B 0)) (NUMBERP B)) (EQUAL (REMAINDER A B) A)). This simplifies, unfolding REMAINDER, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-NOOP (DISABLE REMAINDER-NOOP) [ 0.0 0.0 0.0 ] REMAINDER-NOOP-OFF (PROVE-LEMMA REMAINDER-ADD1-CASESPLIT (REWRITE) (IMPLIES (LESSP A B) (EQUAL (REMAINDER (ADD1 A) B) (IF (EQUAL (ADD1 A) B) '0 (ADD1 A)))) ((ENABLE REMAINDER REMAINDER-NOOP) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, clearly, to two new conjectures: Case 2. (IMPLIES (AND (LESSP A B) (NOT (EQUAL (ADD1 A) B))) (EQUAL (REMAINDER (ADD1 A) B) (ADD1 A))), which we will name *1. Case 1. (IMPLIES (AND (LESSP A B) (EQUAL (ADD1 A) B)) (EQUAL (REMAINDER (ADD1 A) B) 0)). However this again simplifies, using linear arithmetic, applying SUB1-ADD1, SUB1-TYPE-RESTRICTION, and REMAINDER-NOOP, and opening up the definitions of LESSP, ADD1, REMAINDER, EQUAL, and DIFFERENCE, to the following four new goals: Case 1.4. (IMPLIES (AND (LESSP (SUB1 A) A) (NUMBERP A) (NOT (LESSP A A))) (EQUAL (DIFFERENCE A A) 0)). However this again simplifies, using linear arithmetic, to: T. Case 1.3. (IMPLIES (AND (LESSP (SUB1 A) A) (NUMBERP A) (LESSP A A)) (EQUAL (ADD1 A) 0)), which again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (LESSP (SUB1 A) A) (NOT (NUMBERP A)) (LESSP 0 0)) (EQUAL (ADD1 A) 0)), which again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (LESSP (SUB1 A) A) (NOT (NUMBERP A)) (NOT (LESSP 0 0))) (EQUAL (DIFFERENCE 0 0) 0)), which again simplifies, using linear arithmetic, to: T. So next consider: (IMPLIES (AND (LESSP A B) (NOT (EQUAL (ADD1 A) B))) (EQUAL (REMAINDER (ADD1 A) B) (ADD1 A))), which we named *1 above. Let us appeal to the induction principle. 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 B 0) (NOT (NUMBERP B))) (p A B)) (IMPLIES (AND (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (OR (EQUAL A 0) (NOT (NUMBERP A)))) (p A B)) (IMPLIES (AND (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (p (SUB1 A) (SUB1 B))) (p A B))). Linear arithmetic, the lemmas SUB1-LESSEQP and SUB1-LESSP, and the definitions of OR and NOT 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 five new goals: Case 5. (IMPLIES (AND (OR (EQUAL B 0) (NOT (NUMBERP B))) (LESSP A B) (NOT (EQUAL (ADD1 A) B))) (EQUAL (REMAINDER (ADD1 A) B) (ADD1 A))), which simplifies, expanding the functions NOT, OR, EQUAL, and LESSP, to: T. Case 4. (IMPLIES (AND (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (OR (EQUAL A 0) (NOT (NUMBERP A))) (LESSP A B) (NOT (EQUAL (ADD1 A) B))) (EQUAL (REMAINDER (ADD1 A) B) (ADD1 A))), which simplifies, rewriting with SUB1-TYPE-RESTRICTION, and unfolding NOT, OR, EQUAL, LESSP, and ADD1, to the following two new formulas: Case 4.2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (EQUAL A 0) (NOT (EQUAL 1 B))) (EQUAL (REMAINDER 1 B) 1)). This again simplifies, using linear arithmetic, applying REMAINDER-NOOP, and opening up the function EQUAL, to: T. Case 4.1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (NUMBERP A)) (NOT (EQUAL 1 B))) (EQUAL (REMAINDER 1 B) 1)). This again simplifies, using linear arithmetic, appealing to the lemma REMAINDER-NOOP, and unfolding the definition of EQUAL, to: T. Case 3. (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 (ADD1 A) B))) (EQUAL (REMAINDER (ADD1 A) B) (ADD1 A))), which 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 (ADD1 A) B))) (EQUAL (REMAINDER (ADD1 A) B) (ADD1 A))). However this again simplifies, expanding the functions SUB1, NUMBERP, EQUAL, LESSP, NOT, and OR, to: T. Case 2. (IMPLIES (AND (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (EQUAL (ADD1 (SUB1 A)) (SUB1 B)) (LESSP A B) (NOT (EQUAL (ADD1 A) B))) (EQUAL (REMAINDER (ADD1 A) B) (ADD1 A))), which simplifies, using linear arithmetic, to two new formulas: Case 2.2. (IMPLIES (AND (NOT (NUMBERP B)) (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (EQUAL (ADD1 (SUB1 A)) (SUB1 B)) (LESSP A B) (NOT (EQUAL (ADD1 A) B))) (EQUAL (REMAINDER (ADD1 A) B) (ADD1 A))), which again simplifies, unfolding the functions NOT and OR, to: T. Case 2.1. (IMPLIES (AND (LESSP A 1) (NOT (OR (EQUAL B 0) (NOT (NUMBERP B)))) (NOT (OR (EQUAL A 0) (NOT (NUMBERP A)))) (EQUAL (ADD1 (SUB1 A)) (SUB1 B)) (LESSP A B) (NOT (EQUAL (ADD1 A) B))) (EQUAL (REMAINDER (ADD1 A) B) (ADD1 A))), which again simplifies, unfolding 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)))) (EQUAL (REMAINDER (ADD1 (SUB1 A)) (SUB1 B)) (ADD1 (SUB1 A))) (LESSP A B) (NOT (EQUAL (ADD1 A) B))) (EQUAL (REMAINDER (ADD1 A) B) (ADD1 A))), which simplifies, using linear arithmetic, rewriting with ADD1-SUB1 and REMAINDER-NOOP, and expanding the functions NOT, OR, and LESSP, to: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL A 0)) (NUMBERP A) (NOT F) (LESSP (SUB1 A) (SUB1 B)) (NOT (EQUAL (ADD1 A) B)) (NOT (NUMBERP B))) (EQUAL (REMAINDER (ADD1 A) B) (ADD1 A))), which again simplifies, clearly, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-ADD1-CASESPLIT (DISABLE REMAINDER-ADD1-CASESPLIT) [ 0.0 0.0 0.0 ] REMAINDER-ADD1-CASESPLIT-OFF (PROVE-LEMMA ZEROP-REMAINDER-DIFFERENCE (REWRITE) (IMPLIES (EQUAL (REMAINDER A B) '0) (EQUAL (REMAINDER (DIFFERENCE A B) B) '0)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, unfolding the definitions of REMAINDER, DIFFERENCE, EQUAL, NUMBERP, and LESSP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] ZEROP-REMAINDER-DIFFERENCE (DISABLE ZEROP-REMAINDER-DIFFERENCE) [ 0.0 0.0 0.0 ] ZEROP-REMAINDER-DIFFERENCE-OFF (PROVE-LEMMA QUOTIENT-X-X (REWRITE) (IMPLIES (NOT (ZEROP X)) (EQUAL (QUOTIENT X X) '1)) ((ENABLE DIFFERENCE-X-X) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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, rewriting with the lemma DIFFERENCE-X-X, and expanding the functions QUOTIENT, LESSP, EQUAL, and ADD1, 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 (DISABLE QUOTIENT-X-X) [ 0.0 0.0 0.0 ] QUOTIENT-X-X-OFF (PROVE-LEMMA REMAINDER-TIMES-OTHER-WAY (REWRITE) (EQUAL (REMAINDER (TIMES B A) A) '0) ((ENABLE REMAINDER-TIMES COMMUTATIVITY-OF-TIMES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, appealing to the lemmas COMMUTATIVITY-OF-TIMES and REMAINDER-TIMES, and expanding the function EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-TIMES-OTHER-WAY (DISABLE REMAINDER-TIMES-OTHER-WAY) [ 0.0 0.0 0.0 ] REMAINDER-TIMES-OTHER-WAY-OFF (PROVE-LEMMA QUOTIENT-TIMES-OTHER-WAY (REWRITE) (EQUAL (QUOTIENT (TIMES B A) A) (IF (ZEROP A) '0 (FIX B))) ((ENABLE QUOTIENT-TIMES COMMUTATIVITY-OF-TIMES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, applying COMMUTATIVITY-OF-TIMES and QUOTIENT-TIMES, and expanding the functions ZEROP and FIX, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-TIMES-OTHER-WAY (DISABLE QUOTIENT-TIMES-OTHER-WAY) [ 0.0 0.0 0.0 ] QUOTIENT-TIMES-OTHER-WAY-OFF (PROVE-LEMMA QUOTIENT-DIFFERENCE (REWRITE) (IMPLIES (NOT (LESSP I J)) (EQUAL (QUOTIENT (DIFFERENCE I J) J) (SUB1 (QUOTIENT I J)))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, unfolding the definition of QUOTIENT, to three new conjectures: Case 3. (IMPLIES (AND (NOT (LESSP I J)) (NOT (EQUAL J 0)) (NUMBERP J)) (EQUAL (QUOTIENT (DIFFERENCE I J) J) (SUB1 (ADD1 (QUOTIENT (DIFFERENCE I J) J))))), which again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (NOT (LESSP I J)) (EQUAL J 0)) (EQUAL (QUOTIENT (DIFFERENCE I J) J) (SUB1 0))), which again simplifies, opening up EQUAL, LESSP, DIFFERENCE, QUOTIENT, and SUB1, to: T. Case 1. (IMPLIES (AND (NOT (LESSP I J)) (NOT (NUMBERP J))) (EQUAL (QUOTIENT (DIFFERENCE I J) J) (SUB1 0))), which again simplifies, unfolding LESSP, DIFFERENCE, QUOTIENT, SUB1, and EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-DIFFERENCE (DISABLE QUOTIENT-DIFFERENCE) [ 0.0 0.0 0.0 ] QUOTIENT-DIFFERENCE-OFF (PROVE-LEMMA QUOTIENT-PLUS (REWRITE) (IMPLIES (NOT (ZEROP A)) (EQUAL (QUOTIENT (PLUS A B) A) (ADD1 (QUOTIENT B A)))) ((EXPAND (QUOTIENT (PLUS A B) A)) (ENABLE DIFFERENCE-PLUS) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, NOT, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A)) (EQUAL (QUOTIENT (PLUS A B) A) (ADD1 (QUOTIENT B A)))), which simplifies, rewriting with DIFFERENCE-PLUS, and expanding the function QUOTIENT, to the following two new goals: Case 2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (LESSP (PLUS A B) A)) (NOT (NUMBERP B))) (EQUAL (ADD1 (QUOTIENT 0 A)) (ADD1 (QUOTIENT B A)))). This again simplifies, opening up the definitions of LESSP, EQUAL, QUOTIENT, and ADD1, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (LESSP (PLUS A B) A)) (EQUAL 0 (ADD1 (QUOTIENT B A)))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-PLUS (DISABLE QUOTIENT-PLUS) [ 0.0 0.0 0.0 ] QUOTIENT-PLUS-OFF (PROVE-LEMMA QUOTIENT-PLUS-TIMES (REWRITE) (IMPLIES (LESSP C B) (EQUAL (QUOTIENT (PLUS C (TIMES B A)) B) (FIX A))) ((ENABLE PLUS-0 COMMUTATIVITY2-OF-PLUS COMMUTATIVITY-OF-TIMES QUOTIENT-PLUS) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, applying COMMUTATIVITY-OF-TIMES, and unfolding FIX, to the following two new conjectures: Case 2. (IMPLIES (AND (LESSP C B) (NOT (NUMBERP A))) (EQUAL (QUOTIENT (PLUS C (TIMES A B)) B) 0)). This again simplifies, appealing to the lemma PLUS-0, and opening up the definition of TIMES, to two new formulas: Case 2.2. (IMPLIES (AND (LESSP C B) (NOT (NUMBERP A)) (NOT (NUMBERP C))) (EQUAL (QUOTIENT 0 B) 0)), which again simplifies, expanding the definitions of LESSP, EQUAL, and QUOTIENT, to: T. Case 2.1. (IMPLIES (AND (LESSP C B) (NOT (NUMBERP A)) (NUMBERP C)) (EQUAL (QUOTIENT C B) 0)), which again simplifies, expanding the functions QUOTIENT and EQUAL, to: T. Case 1. (IMPLIES (AND (LESSP C B) (NUMBERP A)) (EQUAL (QUOTIENT (PLUS C (TIMES A B)) B) A)), which we will 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 (ZEROP A) (p C A B)) (IMPLIES (AND (NOT (ZEROP A)) (p C (SUB1 A) B)) (p C A B))). 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. The above induction scheme produces the following two new goals: Case 2. (IMPLIES (AND (ZEROP A) (LESSP C B) (NUMBERP A)) (EQUAL (QUOTIENT (PLUS C (TIMES A B)) B) A)). This simplifies, applying the lemma PLUS-0, and opening up ZEROP, NUMBERP, EQUAL, and TIMES, to the following two new conjectures: Case 2.2. (IMPLIES (AND (EQUAL A 0) (LESSP C B) (NOT (NUMBERP C))) (EQUAL (QUOTIENT 0 B) 0)). This again simplifies, expanding the definitions of LESSP, EQUAL, and QUOTIENT, to: T. Case 2.1. (IMPLIES (AND (EQUAL A 0) (LESSP C B) (NUMBERP C)) (EQUAL (QUOTIENT C B) 0)), which again simplifies, expanding QUOTIENT and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP A)) (EQUAL (QUOTIENT (PLUS C (TIMES (SUB1 A) B)) B) (SUB1 A)) (LESSP C B) (NUMBERP A)) (EQUAL (QUOTIENT (PLUS C (TIMES A B)) B) A)), which simplifies, appealing to the lemma COMMUTATIVITY2-OF-PLUS, and opening up the definitions of ZEROP and TIMES, to the conjecture: (IMPLIES (AND (NOT (EQUAL A 0)) (EQUAL (QUOTIENT (PLUS C (TIMES (SUB1 A) B)) B) (SUB1 A)) (LESSP C B) (NUMBERP A)) (EQUAL (QUOTIENT (PLUS B C (TIMES (SUB1 A) B)) B) A)). But this further simplifies, rewriting with COMMUTATIVITY-OF-TIMES, to the new goal: (IMPLIES (AND (NOT (EQUAL A 0)) (EQUAL (QUOTIENT (PLUS C (TIMES B (SUB1 A))) B) (SUB1 A)) (LESSP C B) (NUMBERP A)) (EQUAL (QUOTIENT (PLUS B C (TIMES B (SUB1 A))) B) A)). 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. This produces: (IMPLIES (AND (NUMBERP X) (NOT (EQUAL (ADD1 X) 0)) (EQUAL (QUOTIENT (PLUS C (TIMES B X)) B) X) (LESSP C B)) (EQUAL (QUOTIENT (PLUS B C (TIMES B X)) B) (ADD1 X))), which further simplifies, obviously, to the new formula: (IMPLIES (AND (EQUAL (QUOTIENT (PLUS C (TIMES B X)) B) X) (LESSP C B)) (EQUAL (QUOTIENT (PLUS B C (TIMES B X)) B) (ADD1 X))). We use the above equality hypothesis by cross-fertilizing: (QUOTIENT (PLUS C (TIMES B X)) B) for X and throwing away the equality. The result is the formula: (IMPLIES (LESSP C B) (EQUAL (QUOTIENT (PLUS B C (TIMES B X)) B) (ADD1 (QUOTIENT (PLUS C (TIMES B X)) B)))). We will try to prove the above formula by generalizing it, replacing (TIMES B X) by Y. We restrict the new variable by recalling the type restriction lemma noted when TIMES was introduced. We would thus like to prove: (IMPLIES (AND (NUMBERP Y) (LESSP C B)) (EQUAL (QUOTIENT (PLUS B C Y) B) (ADD1 (QUOTIENT (PLUS C Y) B)))), which we generalize by replacing (PLUS C Y) by U. We restrict the new variable by recalling the type restriction lemma noted when PLUS was introduced. We thus obtain the new formula: (IMPLIES (AND (NUMBERP U) (NUMBERP Y) (LESSP C B)) (EQUAL (QUOTIENT (PLUS B U) B) (ADD1 (QUOTIENT U B)))), which has an irrelevant term in it. By eliminating the term we get: (IMPLIES (AND (NUMBERP U) (LESSP C B)) (EQUAL (QUOTIENT (PLUS B U) B) (ADD1 (QUOTIENT U B)))), which we will finally name *1.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 flawed. 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 B) (p B U C)) (IMPLIES (AND (NOT (ZEROP B)) (LESSP U B)) (p B U C)) (IMPLIES (AND (NOT (ZEROP B)) (NOT (LESSP U B)) (p B (DIFFERENCE U B) C)) (p B U C))). Linear arithmetic, the lemmas COUNT-NUMBERP and COUNT-NOT-LESSP, and the definition of ZEROP establish that the measure (COUNT U) 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 conjectures: Case 3. (IMPLIES (AND (ZEROP B) (NUMBERP U) (LESSP C B)) (EQUAL (QUOTIENT (PLUS B U) B) (ADD1 (QUOTIENT U B)))). This simplifies, opening up ZEROP, EQUAL, and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP B)) (LESSP U B) (NUMBERP U) (LESSP C B)) (EQUAL (QUOTIENT (PLUS B U) B) (ADD1 (QUOTIENT U B)))). This simplifies, applying QUOTIENT-PLUS, and unfolding the definitions of ZEROP, QUOTIENT, ADD1, and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP B)) (NOT (LESSP U B)) (EQUAL (QUOTIENT (PLUS B (DIFFERENCE U B)) B) (ADD1 (QUOTIENT (DIFFERENCE U B) B))) (NUMBERP U) (LESSP C B)) (EQUAL (QUOTIENT (PLUS B U) B) (ADD1 (QUOTIENT U B)))), which simplifies, applying the lemma QUOTIENT-PLUS, and opening up the definitions of ZEROP and QUOTIENT, to: T. That finishes the proof of *1.1, which finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] QUOTIENT-PLUS-TIMES (DISABLE QUOTIENT-PLUS-TIMES) [ 0.0 0.0 0.0 ] QUOTIENT-PLUS-TIMES-OFF (PROVE-LEMMA LEQ-TIMES NIL (IMPLIES (AND (NOT (ZEROP A)) (IF (LESSP C B) '*1*FALSE '*1*TRUE)) (IF (LESSP (TIMES A C) (TIMES A B)) '*1*FALSE '*1*TRUE)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to the conjecture: (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (LESSP C B))) (NOT (LESSP (TIMES A C) (TIMES A B)))). Call the above conjecture *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 (ZEROP A) (p A C B)) (IMPLIES (AND (NOT (ZEROP A)) (p (SUB1 A) C B)) (p A C B))). 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. The above induction scheme leads to the following three new formulas: Case 3. (IMPLIES (AND (ZEROP A) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (LESSP C B))) (NOT (LESSP (TIMES A C) (TIMES A B)))). This simplifies, unfolding the function ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP A)) (EQUAL (SUB1 A) 0) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (LESSP C B))) (NOT (LESSP (TIMES A C) (TIMES A B)))). This simplifies, unfolding the definitions of ZEROP and TIMES, to: (IMPLIES (AND (EQUAL (SUB1 A) 0) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (LESSP C B))) (NOT (LESSP (PLUS C (TIMES (SUB1 A) C)) (PLUS B (TIMES (SUB1 A) B))))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP A)) (NOT (LESSP (TIMES (SUB1 A) C) (TIMES (SUB1 A) B))) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (LESSP C B))) (NOT (LESSP (TIMES A C) (TIMES A B)))), which simplifies, unfolding the functions ZEROP and TIMES, to: (IMPLIES (AND (NOT (LESSP (TIMES (SUB1 A) C) (TIMES (SUB1 A) B))) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (LESSP C B))) (NOT (LESSP (PLUS C (TIMES (SUB1 A) C)) (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 ] LEQ-TIMES (PROVE-LEMMA LESSP-REMAINDER-SUB1-CROCK NIL (IMPLIES (LESSP X N) (LESSP (SUB1 X) N)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, using linear arithmetic, to the new conjecture: (IMPLIES (AND (LESSP X 1) (LESSP X N)) (LESSP (SUB1 X) N)). Applying the lemma SUB1-ELIM, replace X by (ADD1 Z) to eliminate (SUB1 X). We use the type restriction lemma noted when SUB1 was introduced to restrict the new variable. We would thus like to prove the following three new formulas: Case 3. (IMPLIES (AND (EQUAL X 0) (LESSP X 1) (LESSP X N)) (LESSP (SUB1 X) N)). However this further simplifies, unfolding the definitions of LESSP, EQUAL, and SUB1, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP X)) (LESSP X 1) (LESSP X N)) (LESSP (SUB1 X) N)), which further simplifies, rewriting with SUB1-NNUMBERP, and expanding the definitions of NUMBERP, EQUAL, and LESSP, to: T. Case 1. (IMPLIES (AND (NUMBERP Z) (NOT (EQUAL (ADD1 Z) 0)) (LESSP (ADD1 Z) 1) (LESSP (ADD1 Z) N)) (LESSP Z N)). But this further simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-REMAINDER-SUB1-CROCK (PROVE-LEMMA LEQ-PLUS NIL (IMPLIES (IF (LESSP C (PLUS A B)) '*1*FALSE '*1*TRUE) (IF (LESSP C A) '*1*FALSE '*1*TRUE)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LEQ-PLUS (PROVE-LEMMA LEQ-PLUS1 NIL (IMPLIES (IF (LESSP C (PLUS A B)) '*1*FALSE '*1*TRUE) (AND (IF (LESSP C A) '*1*FALSE '*1*TRUE) (IF (LESSP C B) '*1*FALSE '*1*TRUE))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, unfolding the definition of AND, to two new formulas: Case 2. (IMPLIES (NOT (LESSP C (PLUS A B))) (NOT (LESSP C A))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (NOT (LESSP C (PLUS A B))) (NOT (LESSP C B))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LEQ-PLUS1 (PROVE-LEMMA LEQ-PLUS2 NIL (IMPLIES (IF (LESSP C (PLUS A B)) '*1*FALSE '*1*TRUE) (EQUAL (LESSP C A) '*1*FALSE)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LEQ-PLUS2 (PROVE-LEMMA LEQ-CASESPLIT NIL (IMPLIES (AND (NUMBERP A) (NUMBERP B)) (EQUAL (IF (LESSP B A) '*1*FALSE '*1*TRUE) (OR (LESSP A B) (EQUAL A B)))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, expanding OR, to the following three new conjectures: Case 3. (IMPLIES (AND (NUMBERP A) (NUMBERP B) (LESSP B A)) (EQUAL F (EQUAL A B))). This again simplifies, obviously, to: (IMPLIES (AND (NUMBERP B) (LESSP B B)) (NOT (EQUAL A B))), which again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (NUMBERP A) (NUMBERP B) (NOT (LESSP A B)) (NOT (LESSP B A))) (EQUAL T (EQUAL A B))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (NUMBERP A) (NUMBERP A) (NOT (LESSP A A)) (NOT (LESSP A A))) (EQUAL T (EQUAL A A))). But this again simplifies, expanding the definition of EQUAL, to: T. Case 1. (IMPLIES (AND (NUMBERP A) (NUMBERP B) (LESSP A B)) (NOT (LESSP B A))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LEQ-CASESPLIT (PROVE-LEMMA INTEGER-INEQUALITY-CASESPLIT NIL (IMPLIES (AND (NUMBERP I) (NUMBERP J)) (EQUAL (NOT (EQUAL I J)) (OR (LESSP I J) (LESSP J I)))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, expanding the functions NOT and OR, to the following three new formulas: Case 3. (IMPLIES (AND (NUMBERP I) (NUMBERP J) (EQUAL I J)) (EQUAL F (LESSP J I))). This again simplifies, clearly, to the new conjecture: (IMPLIES (NUMBERP J) (NOT (LESSP J J))), which again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (NUMBERP I) (NUMBERP J) (NOT (LESSP I J)) (NOT (EQUAL I J))) (EQUAL T (LESSP J I))), which again simplifies, obviously, to: (IMPLIES (AND (NUMBERP I) (NUMBERP J) (NOT (LESSP I J)) (NOT (EQUAL I J))) (LESSP J I)), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NUMBERP I) (NUMBERP J) (LESSP I J)) (NOT (EQUAL I J))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] INTEGER-INEQUALITY-CASESPLIT (PROVE-LEMMA INTEGER-EQUALITY-CROCK NIL (IMPLIES (AND (NUMBERP A) (AND (NUMBERP B) (AND (LESSP A '1) (LESSP B '1)))) (EQUAL A B)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] INTEGER-EQUALITY-CROCK (PROVE-LEMMA LESSP-REMAINDER-REMAINDER (REWRITE) (IMPLIES (AND (NOT (ZEROP C)) (NOT (ZEROP (REMAINDER B C)))) (EQUAL (LESSP (REMAINDER A (REMAINDER B C)) C) '*1*TRUE)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to the new formula: (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (EQUAL (REMAINDER B C) 0)) (NUMBERP (REMAINDER B C))) (EQUAL (LESSP (REMAINDER A (REMAINDER B C)) C) T)), which simplifies, obviously, to: (IMPLIES (AND (NOT (EQUAL C 0)) (NUMBERP C) (NOT (EQUAL (REMAINDER B C) 0))) (LESSP (REMAINDER A (REMAINDER B C)) C)), which we will name *1. Perhaps we can prove it by induction. The recursive terms in the conjecture suggest four inductions. They merge into three likely candidate inductions, two 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 C) (p A B C)) (IMPLIES (AND (NOT (ZEROP C)) (LESSP B C)) (p A B C)) (IMPLIES (AND (NOT (ZEROP C)) (NOT (LESSP B C)) (p A (DIFFERENCE B C) C)) (p A B C))). Linear arithmetic, the lemmas COUNT-NUMBERP and COUNT-NOT-LESSP, and the definition of ZEROP establish that the measure (COUNT B) 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 (ZEROP C) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (EQUAL (REMAINDER B C) 0))) (LESSP (REMAINDER A (REMAINDER B C)) C)). This simplifies, unfolding the function ZEROP, to: T. Case 3. (IMPLIES (AND (NOT (ZEROP C)) (LESSP B C) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (EQUAL (REMAINDER B C) 0))) (LESSP (REMAINDER A (REMAINDER B C)) C)). This simplifies, unfolding the definitions of ZEROP and REMAINDER, to: (IMPLIES (AND (LESSP B C) (NOT (EQUAL C 0)) (NUMBERP C) (NUMBERP B) (NOT (EQUAL B 0))) (LESSP (REMAINDER A B) C)), which we will name *1.1. Case 2. (IMPLIES (AND (NOT (ZEROP C)) (NOT (LESSP B C)) (EQUAL (REMAINDER (DIFFERENCE B C) C) 0) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (EQUAL (REMAINDER B C) 0))) (LESSP (REMAINDER A (REMAINDER B C)) C)). This simplifies, opening up ZEROP, REMAINDER, and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP C)) (NOT (LESSP B C)) (LESSP (REMAINDER A (REMAINDER (DIFFERENCE B C) C)) C) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (EQUAL (REMAINDER B C) 0))) (LESSP (REMAINDER A (REMAINDER B C)) C)). This simplifies, opening up ZEROP and REMAINDER, to: T. So we now return to: (IMPLIES (AND (LESSP B C) (NOT (EQUAL C 0)) (NUMBERP C) (NUMBERP B) (NOT (EQUAL B 0))) (LESSP (REMAINDER A B) C)), which we named *1.1 above. We will appeal to 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 (ZEROP B) (p A B C)) (IMPLIES (AND (NOT (ZEROP B)) (LESSP A B)) (p A B C)) (IMPLIES (AND (NOT (ZEROP B)) (NOT (LESSP A B)) (p (DIFFERENCE A B) B C)) (p A B C))). Linear arithmetic, the lemmas COUNT-NUMBERP and COUNT-NOT-LESSP, and the definition of ZEROP 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. The above induction scheme generates three new formulas: Case 3. (IMPLIES (AND (ZEROP B) (LESSP B C) (NOT (EQUAL C 0)) (NUMBERP C) (NUMBERP B) (NOT (EQUAL B 0))) (LESSP (REMAINDER A B) C)), which simplifies, expanding the definition of ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP B)) (LESSP A B) (LESSP B C) (NOT (EQUAL C 0)) (NUMBERP C) (NUMBERP B) (NOT (EQUAL B 0))) (LESSP (REMAINDER A B) C)), which simplifies, expanding the functions ZEROP and REMAINDER, to two new conjectures: Case 2.2. (IMPLIES (AND (LESSP A B) (LESSP B C) (NOT (EQUAL C 0)) (NUMBERP C) (NUMBERP B) (NOT (EQUAL B 0)) (NOT (NUMBERP A))) (LESSP 0 C)), which again simplifies, using linear arithmetic, to: T. Case 2.1. (IMPLIES (AND (LESSP A B) (LESSP B C) (NOT (EQUAL C 0)) (NUMBERP C) (NUMBERP B) (NOT (EQUAL B 0)) (NUMBERP A)) (LESSP A C)), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP B)) (NOT (LESSP A B)) (LESSP (REMAINDER (DIFFERENCE A B) B) C) (LESSP B C) (NOT (EQUAL C 0)) (NUMBERP C) (NUMBERP B) (NOT (EQUAL B 0))) (LESSP (REMAINDER A B) C)), which simplifies, opening up the functions ZEROP and REMAINDER, to: T. That finishes the proof of *1.1, which, in turn, finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-REMAINDER-REMAINDER (DISABLE LESSP-REMAINDER-REMAINDER) [ 0.0 0.0 0.0 ] LESSP-REMAINDER-REMAINDER-OFF (PROVE-LEMMA LESSP-TIMES (REWRITE) (IMPLIES (AND (NOT (ZEROP A)) (LESSP B C)) (LESSP (TIMES A B) (TIMES A C))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) WARNING: When the linear lemma LESSP-TIMES is stored under (TIMES A C) it contains the free variable B which will be chosen by instantiating the hypothesis (LESSP B C). WARNING: When the linear lemma LESSP-TIMES is stored under (TIMES A B) it contains the free variable C which will be chosen by instantiating the hypothesis (LESSP B C). WARNING: Note that the proposed lemma LESSP-TIMES is to be stored as zero type prescription rules, zero compound recognizer rules, two linear rules, and zero replacement rules. This conjecture can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (LESSP B C)) (LESSP (TIMES A B) (TIMES A C))). Name the above subgoal *1. 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 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 three new goals: Case 3. (IMPLIES (AND (ZEROP A) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP B C)) (LESSP (TIMES A B) (TIMES A C))). This simplifies, opening up ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP A)) (EQUAL (SUB1 A) 0) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP B C)) (LESSP (TIMES A B) (TIMES A C))). This simplifies, opening up the definitions of ZEROP and TIMES, to: (IMPLIES (AND (EQUAL (SUB1 A) 0) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP B C)) (LESSP (PLUS B (TIMES (SUB1 A) B)) (PLUS C (TIMES (SUB1 A) C)))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP A)) (LESSP (TIMES (SUB1 A) B) (TIMES (SUB1 A) C)) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP B C)) (LESSP (TIMES A B) (TIMES A C))), which simplifies, unfolding the definitions of ZEROP and TIMES, to: (IMPLIES (AND (LESSP (TIMES (SUB1 A) B) (TIMES (SUB1 A) C)) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP B C)) (LESSP (PLUS B (TIMES (SUB1 A) B)) (PLUS C (TIMES (SUB1 A) C)))). 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-TIMES (DISABLE LESSP-TIMES) [ 0.0 0.0 0.0 ] LESSP-TIMES-OFF (PROVE-LEMMA LEQ-PLUS-TIMES NIL (IMPLIES (AND (LESSP B C) (NOT (ZEROP A))) (IF (LESSP (TIMES A C) (PLUS A (TIMES A B))) '*1*FALSE '*1*TRUE)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (LESSP B C) (NOT (EQUAL A 0)) (NUMBERP A)) (NOT (LESSP (TIMES A C) (PLUS A (TIMES A B))))), which we will name *1. Perhaps we can prove it by induction. Five 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 A) (p A C B)) (IMPLIES (AND (NOT (ZEROP A)) (p (SUB1 A) C B)) (p A C B))). 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. The above induction scheme generates the following three new formulas: Case 3. (IMPLIES (AND (ZEROP A) (LESSP B C) (NOT (EQUAL A 0)) (NUMBERP A)) (NOT (LESSP (TIMES A C) (PLUS A (TIMES A B))))). This simplifies, unfolding the function ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP A)) (EQUAL (SUB1 A) 0) (LESSP B C) (NOT (EQUAL A 0)) (NUMBERP A)) (NOT (LESSP (TIMES A C) (PLUS A (TIMES A B))))). This simplifies, expanding the functions ZEROP and TIMES, to the new conjecture: (IMPLIES (AND (EQUAL (SUB1 A) 0) (LESSP B C) (NOT (EQUAL A 0)) (NUMBERP A)) (NOT (LESSP (PLUS C (TIMES (SUB1 A) C)) (PLUS A B (TIMES (SUB1 A) B))))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP A)) (NOT (LESSP (TIMES (SUB1 A) C) (PLUS (SUB1 A) (TIMES (SUB1 A) B)))) (LESSP B C) (NOT (EQUAL A 0)) (NUMBERP A)) (NOT (LESSP (TIMES A C) (PLUS A (TIMES A B))))), which simplifies, expanding the functions ZEROP and TIMES, to the conjecture: (IMPLIES (AND (NOT (LESSP (TIMES (SUB1 A) C) (PLUS (SUB1 A) (TIMES (SUB1 A) B)))) (LESSP B C) (NOT (EQUAL A 0)) (NUMBERP A)) (NOT (LESSP (PLUS C (TIMES (SUB1 A) C)) (PLUS A B (TIMES (SUB1 A) B))))). This again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.1 ] LEQ-PLUS-TIMES (PROVE-LEMMA LESSP-DIFFERENCE NIL (IMPLIES (AND (NOT (ZEROP A)) (LESSP A B)) (LESSP (DIFFERENCE B A) B)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (LESSP A B)) (LESSP (DIFFERENCE B A) B)), which simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP B A) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP A B)) (LESSP (DIFFERENCE B A) B)). This again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-DIFFERENCE (PROVE-LEMMA REMAINDER-DIFFERENCE-NON-ZERO (REWRITE) (IMPLIES (AND (NOT (ZEROP A)) (AND (NUMBERP B) (LESSP A B))) (NOT (ZEROP (REMAINDER (DIFFERENCE B A) B)))) ((ENABLE REMAINDER-NOOP) (DISABLE REMAINDER DIFFERENCE) (USE (LESSP-DIFFERENCE (A A) (B B))) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) WARNING: Note that the rewrite rule REMAINDER-DIFFERENCE-NON-ZERO will be stored so as to apply only to terms with the nonrecursive function symbol ZEROP. This formula can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (IMPLIES (AND (NOT (ZEROP A)) (LESSP A B)) (LESSP (DIFFERENCE B A) B)) (NOT (EQUAL A 0)) (NUMBERP A) (NUMBERP B) (LESSP A B)) (NOT (ZEROP (REMAINDER (DIFFERENCE B A) B)))), which simplifies, using linear arithmetic, applying the lemma REMAINDER-NOOP, and opening up the definitions of ZEROP, NOT, AND, and IMPLIES, to the goal: (IMPLIES (AND (LESSP (DIFFERENCE B A) B) (NOT (EQUAL A 0)) (NUMBERP A) (NUMBERP B) (LESSP A B)) (NOT (EQUAL (DIFFERENCE B A) 0))). This again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-DIFFERENCE-NON-ZERO (DISABLE REMAINDER-DIFFERENCE-NON-ZERO) [ 0.0 0.0 0.0 ] REMAINDER-DIFFERENCE-NON-ZERO-OFF (PROVE-LEMMA SUM-ZERO-IMPLIES-ADDENDS-ZERO NIL (IMPLIES (EQUAL (PLUS A B) '0) (AND (ZEROP A) (ZEROP B))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, opening up the functions ZEROP and AND, to two new conjectures: 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 ] SUM-ZERO-IMPLIES-ADDENDS-ZERO (PROVE-LEMMA REMAINDER-ZERO-IMPLIES-LEQ-FACT (REWRITE) (IMPLIES (AND (EQUAL (REMAINDER A B) '0) (NOT (ZEROP A))) (EQUAL (LESSP A B) '*1*FALSE)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (EQUAL (REMAINDER A B) 0) (NOT (EQUAL A 0)) (NUMBERP A)) (EQUAL (LESSP A B) F)). This simplifies, opening up REMAINDER, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-ZERO-IMPLIES-LEQ-FACT (DISABLE REMAINDER-ZERO-IMPLIES-LEQ-FACT) [ 0.0 0.0 0.0 ] REMAINDER-ZERO-IMPLIES-LEQ-FACT-OFF (DEFN LESSP-QUOTIENT-INDUCTION (A B C) (IF (ZEROP B) '0 (IF (ZEROP C) '0 (IF (LESSP A C) '0 (LESSP-QUOTIENT-INDUCTION (DIFFERENCE A C) (SUB1 B) C)))) NIL) Linear arithmetic, the lemmas COUNT-NUMBERP and COUNT-NOT-LESSP, 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, LESSP-QUOTIENT-INDUCTION is accepted under the principle of definition. The definition of LESSP-QUOTIENT-INDUCTION can be justified in another way. Linear arithmetic, the lemma 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. Observe that: (NUMBERP (LESSP-QUOTIENT-INDUCTION A B C)) is a theorem. [ 0.0 0.0 0.0 ] LESSP-QUOTIENT-INDUCTION (PROVE-LEMMA LESSP-QUOTIENT-REMAINDER-CROCK (REWRITE) (IMPLIES (AND (LESSP A (TIMES B C)) (AND (NOT (EQUAL B '0)) (AND (NUMBERP B) (AND (NOT (EQUAL C '0)) (AND (NUMBERP C) (NUMBERP A)))))) (LESSP (QUOTIENT A C) B)) ((INDUCT (LESSP-QUOTIENT-INDUCTION A B C)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) WARNING: When the linear lemma LESSP-QUOTIENT-REMAINDER-CROCK is stored under (QUOTIENT A C) it contains the free variable B which will be chosen by instantiating the hypothesis (LESSP A (TIMES B C)). WARNING: Note that the proposed lemma LESSP-QUOTIENT-REMAINDER-CROCK is to be stored as zero type prescription rules, zero compound recognizer rules, one linear rule, and zero replacement rules. This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to four new formulas: Case 4. (IMPLIES (AND (ZEROP B) (LESSP A (TIMES B C)) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL C 0)) (NUMBERP C) (NUMBERP A)) (LESSP (QUOTIENT A C) B)), which simplifies, unfolding the function ZEROP, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (ZEROP C) (LESSP A (TIMES B C)) (NOT (EQUAL C 0)) (NUMBERP C) (NUMBERP A)) (LESSP (QUOTIENT A C) B)), which simplifies, expanding the function ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL C 0)) (NUMBERP C) (LESSP A C) (LESSP A (TIMES B C)) (NUMBERP A)) (LESSP (QUOTIENT A C) B)), which simplifies, expanding the definitions of QUOTIENT, EQUAL, and LESSP, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (IMPLIES (AND (LESSP (DIFFERENCE A C) (TIMES (SUB1 B) C)) (NOT (EQUAL (SUB1 B) 0)) (NUMBERP (SUB1 B)) (NOT (EQUAL C 0)) (NUMBERP C) (NUMBERP (DIFFERENCE A C))) (LESSP (QUOTIENT (DIFFERENCE A C) C) (SUB1 B))) (LESSP A (TIMES B C)) (NUMBERP A)) (LESSP (QUOTIENT A C) B)), which simplifies, rewriting with SUB1-ADD1, and expanding NOT, AND, IMPLIES, TIMES, QUOTIENT, LESSP, and EQUAL, to the following two new goals: Case 1.2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP (DIFFERENCE A C) (TIMES (SUB1 B) C))) (LESSP A (PLUS C (TIMES (SUB1 B) C))) (NUMBERP A)) (LESSP (QUOTIENT (DIFFERENCE A C) C) (SUB1 B))). However this again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (EQUAL (SUB1 B) 0) (LESSP A (PLUS C 0))) (NOT (NUMBERP A))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-QUOTIENT-REMAINDER-CROCK (DISABLE LESSP-QUOTIENT-REMAINDER-CROCK) [ 0.0 0.0 0.0 ] LESSP-QUOTIENT-REMAINDER-CROCK-OFF (PROVE-LEMMA LESSP-QUOTIENT-REMAINDER (REWRITE) (IMPLIES (AND (NOT (ZEROP B)) (NOT (ZEROP C))) (LESSP (QUOTIENT (REMAINDER A (TIMES B C)) C) (FIX B))) ((ENABLE DIVIDES LESSP-REMAINDER2 LESSP-QUOTIENT-REMAINDER-CROCK EQUAL-TIMES-0 REWRITE-ZERO-DIFFERENCE-AS-EQUALITY QUOTIENT-X-X) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) WARNING: Note that the proposed lemma LESSP-QUOTIENT-REMAINDER is to be stored as zero type prescription rules, zero compound recognizer rules, one linear rule, and zero replacement rules. This conjecture can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL C 0)) (NUMBERP C)) (LESSP (QUOTIENT (REMAINDER A (TIMES B C)) C) (FIX B))). This simplifies, opening up FIX, to the new conjecture: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL C 0)) (NUMBERP C)) (LESSP (QUOTIENT (REMAINDER A (TIMES B C)) C) 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, 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 (TIMES B C)) (p A B C)) (IMPLIES (AND (NOT (ZEROP (TIMES B C))) (LESSP A (TIMES B C))) (p A B C)) (IMPLIES (AND (NOT (ZEROP (TIMES B C))) (NOT (LESSP A (TIMES B C))) (p (DIFFERENCE A (TIMES B C)) B C)) (p A B C))). Linear arithmetic, the lemmas COUNT-NUMBERP and COUNT-NOT-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 leads to the following three new goals: Case 3. (IMPLIES (AND (ZEROP (TIMES B C)) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL C 0)) (NUMBERP C)) (LESSP (QUOTIENT (REMAINDER A (TIMES B C)) C) B)). This simplifies, applying EQUAL-TIMES-0, and opening up the definition of ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP (TIMES B C))) (LESSP A (TIMES B C)) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL C 0)) (NUMBERP C)) (LESSP (QUOTIENT (REMAINDER A (TIMES B C)) C) B)), which simplifies, rewriting with EQUAL-TIMES-0, and opening up the functions ZEROP and REMAINDER, to the following two new formulas: Case 2.2. (IMPLIES (AND (LESSP A (TIMES B C)) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (NUMBERP A))) (LESSP (QUOTIENT 0 C) B)). But this again simplifies, rewriting with EQUAL-TIMES-0, and expanding the functions LESSP, EQUAL, and QUOTIENT, to: T. Case 2.1. (IMPLIES (AND (LESSP A (TIMES B C)) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL C 0)) (NUMBERP C) (NUMBERP A)) (LESSP (QUOTIENT A C) B)). This again simplifies, using linear arithmetic and appealing to the lemma LESSP-QUOTIENT-REMAINDER-CROCK, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP (TIMES B C))) (NOT (LESSP A (TIMES B C))) (LESSP (QUOTIENT (REMAINDER (DIFFERENCE A (TIMES B C)) (TIMES B C)) C) B) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL C 0)) (NUMBERP C)) (LESSP (QUOTIENT (REMAINDER A (TIMES B C)) C) B)), which simplifies, applying EQUAL-TIMES-0, and expanding the functions ZEROP and REMAINDER, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-QUOTIENT-REMAINDER (DISABLE LESSP-QUOTIENT-REMAINDER) [ 0.0 0.0 0.0 ] LESSP-QUOTIENT-REMAINDER-OFF (PROVE-LEMMA LESSP-QUOTIENT-TIMES (REWRITE) (IMPLIES (LESSP A (TIMES B C)) (EQUAL (LESSP (QUOTIENT A C) B) '*1*TRUE)) ((INDUCT (LESSP-QUOTIENT-INDUCTION A B C)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 B) (LESSP A (TIMES B C))) (EQUAL (LESSP (QUOTIENT A C) B) T)). This simplifies, opening up ZEROP, EQUAL, TIMES, and LESSP, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (ZEROP C) (LESSP A (TIMES B C))) (EQUAL (LESSP (QUOTIENT A C) B) T)). This simplifies, expanding the functions ZEROP, EQUAL, QUOTIENT, and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL C 0)) (NUMBERP C) (LESSP A C) (LESSP A (TIMES B C))) (EQUAL (LESSP (QUOTIENT A C) B) T)). This simplifies, unfolding the definitions of QUOTIENT, EQUAL, and LESSP, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (IMPLIES (LESSP (DIFFERENCE A C) (TIMES (SUB1 B) C)) (EQUAL (LESSP (QUOTIENT (DIFFERENCE A C) C) (SUB1 B)) T)) (LESSP A (TIMES B C))) (EQUAL (LESSP (QUOTIENT A C) B) T)). This simplifies, rewriting with SUB1-ADD1, and unfolding IMPLIES, TIMES, QUOTIENT, LESSP, and EQUAL, to the formula: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL C 0)) (NUMBERP C) (NOT (LESSP A C)) (NOT (LESSP (DIFFERENCE A C) (TIMES (SUB1 B) C))) (LESSP A (PLUS C (TIMES (SUB1 B) C)))) (LESSP (QUOTIENT (DIFFERENCE A C) C) (SUB1 B))). This again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-QUOTIENT-TIMES (DISABLE LESSP-QUOTIENT-TIMES) [ 0.0 0.0 0.0 ] LESSP-QUOTIENT-TIMES-OFF (DEFN MIN (A B) (IF (LESSP A B) A B) NIL) Note that (OR (EQUAL (MIN A B) A) (EQUAL (MIN A B) B)) is a theorem. [ 0.0 0.0 0.0 ] MIN (PROVE-LEMMA LESSP-TRANSITIVITY NIL (IMPLIES (AND (LESSP A B) (LESSP B C)) (LESSP A C)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-TRANSITIVITY (PROVE-LEMMA REMAINDER-PLUS (REWRITE) (EQUAL (REMAINDER (PLUS A N) A) (REMAINDER N A)) ((ENABLE REMAINDER-WRT-12 PLUS-RIGHT-ID2 DIFFERENCE-PLUS1) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, applying the lemma DIFFERENCE-PLUS1, and expanding the definitions of REMAINDER, EQUAL, and PLUS, to six new conjectures: Case 6. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (LESSP (PLUS A N) A)) (NOT (NUMBERP N))) (EQUAL (REMAINDER 0 A) (REMAINDER N A))), which again simplifies, applying PLUS-RIGHT-ID2, and opening up NUMBERP, LESSP, EQUAL, and REMAINDER, to: T. Case 5. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (LESSP (PLUS A N) A)) (EQUAL (PLUS A N) (REMAINDER N A))). But this again simplifies, using linear arithmetic, to: T. Case 4. (IMPLIES (AND (EQUAL A 0) (NOT (NUMBERP N))) (EQUAL 0 (REMAINDER N A))), which again simplifies, opening up the definitions of EQUAL and REMAINDER, to: T. Case 3. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (NUMBERP N))) (EQUAL 0 (REMAINDER N A))), which again simplifies, appealing to the lemma REMAINDER-WRT-12, and opening up EQUAL, to: T. Case 2. (IMPLIES (AND (EQUAL A 0) (NUMBERP N)) (EQUAL N (REMAINDER N A))), which again simplifies, expanding the definitions of EQUAL and REMAINDER, to: T. Case 1. (IMPLIES (AND (NOT (NUMBERP A)) (NUMBERP N)) (EQUAL N (REMAINDER N A))), which again simplifies, rewriting with REMAINDER-WRT-12, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-PLUS (DISABLE REMAINDER-PLUS) [ 0.0 0.0 0.0 ] REMAINDER-PLUS-OFF (PROVE-LEMMA REMAINDER-DIVIDES (REWRITE) (IMPLIES (AND (DIVIDES A U) (NUMBERP U)) (EQUAL (REMAINDER (PLUS U N) A) (REMAINDER N A))) ((USE (QUOTIENT-DIVIDES (X A) (Y U))) (DISABLE REMAINDER PLUS TIMES) (ENABLE REMAINDER-PLUS-TIMES-2 PLUS-RIGHT-ID2 TIMES-ZERO2 COMMUTATIVITY-OF-TIMES REMAINDER-WRT-12 REMAINDER-PLUS LESSP-REMAINDER2 REMAINDER-QUOTIENT-ELIM DIVIDES-TIMES1 COMMUTATIVITY-OF-PLUS DIVIDES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations AND, IMPLIES, and DIVIDES, to: (IMPLIES (AND (IMPLIES (AND (NUMBERP U) (NOT (EQUAL (TIMES A (QUOTIENT U A)) U))) (NOT (EQUAL (REMAINDER U A) 0))) (EQUAL (REMAINDER U A) 0) (NUMBERP U)) (EQUAL (REMAINDER (PLUS U N) A) (REMAINDER N A))). This simplifies, applying DIVIDES-TIMES1 and COMMUTATIVITY-OF-PLUS, and unfolding NOT, AND, EQUAL, and IMPLIES, to the goal: (IMPLIES (EQUAL (TIMES A (QUOTIENT U A)) U) (EQUAL (REMAINDER (PLUS N U) A) (REMAINDER N A))). Appealing to the lemma REMAINDER-QUOTIENT-ELIM, we now replace U by (PLUS Z (TIMES A X)) to eliminate (QUOTIENT U A) and (REMAINDER U A). We employ LESSP-REMAINDER2, 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 four new conjectures: Case 4. (IMPLIES (AND (NOT (NUMBERP U)) (EQUAL (TIMES A (QUOTIENT U A)) U)) (EQUAL (REMAINDER (PLUS N U) A) (REMAINDER N A))), which further simplifies, obviously, to: T. Case 3. (IMPLIES (AND (EQUAL A 0) (EQUAL (TIMES A (QUOTIENT U A)) U)) (EQUAL (REMAINDER (PLUS N U) A) (REMAINDER N A))). But this further simplifies, applying COMMUTATIVITY-OF-PLUS and REMAINDER-PLUS, and opening up the functions EQUAL, QUOTIENT, and TIMES, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP A)) (EQUAL (TIMES A (QUOTIENT U A)) U)) (EQUAL (REMAINDER (PLUS N U) A) (REMAINDER N A))). But this further simplifies, rewriting with the lemmas TIMES-ZERO2, COMMUTATIVITY-OF-TIMES, COMMUTATIVITY-OF-PLUS, and REMAINDER-WRT-12, and expanding the function QUOTIENT, to two new conjectures: Case 2.2. (IMPLIES (AND (NOT (NUMBERP A)) (EQUAL 0 U) (NOT (NUMBERP N))) (EQUAL (PLUS 0 N) 0)), which again simplifies, rewriting with PLUS-RIGHT-ID2, and expanding the functions NUMBERP and EQUAL, to: T. Case 2.1. (IMPLIES (AND (NOT (NUMBERP A)) (EQUAL 0 U) (NUMBERP N)) (EQUAL (PLUS 0 N) N)). This again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NUMBERP X) (NUMBERP Z) (EQUAL (LESSP Z A) (NOT (ZEROP A))) (NUMBERP A) (NOT (EQUAL A 0)) (EQUAL (TIMES A X) (PLUS Z (TIMES A X)))) (EQUAL (REMAINDER (PLUS N Z (TIMES A X)) A) (REMAINDER N A))), which further simplifies, rewriting with REMAINDER-PLUS-TIMES-2, and unfolding the definitions of ZEROP and NOT, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-DIVIDES (DISABLE REMAINDER-DIVIDES) [ 0.0 0.0 0.0 ] REMAINDER-DIVIDES-OFF (PROVE-LEMMA REMAINDER-REMAINDER (REWRITE) (IMPLIES (DIVIDES A B) (EQUAL (REMAINDER (REMAINDER N B) A) (REMAINDER N A))) ((INDUCT (REMAINDER N B)) (DISABLE DIVIDES) (ENABLE ASSOCIATIVITY-OF-PLUS REMAINDER-DIVIDES DIFFERENCE-ELIM LESSP-REMAINDER2 REMAINDER-QUOTIENT-ELIM REMAINDER-WRT-12) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to three new formulas: Case 3. (IMPLIES (AND (ZEROP B) (DIVIDES A B)) (EQUAL (REMAINDER (REMAINDER N B) A) (REMAINDER N A))), which simplifies, applying REMAINDER-WRT-12, and expanding ZEROP, EQUAL, and REMAINDER, to the following two new formulas: Case 3.2. (IMPLIES (AND (EQUAL B 0) (DIVIDES A 0) (NOT (NUMBERP N))) (EQUAL (REMAINDER 0 A) (REMAINDER N A))). But this again simplifies, expanding LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 3.1. (IMPLIES (AND (NOT (NUMBERP B)) (DIVIDES A B) (NOT (NUMBERP N))) (EQUAL (REMAINDER 0 A) (REMAINDER N A))), which again simplifies, opening up the functions LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (LESSP N B) (DIVIDES A B)) (EQUAL (REMAINDER (REMAINDER N B) A) (REMAINDER N A))), which simplifies, expanding the definition of REMAINDER, to: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (LESSP N B) (DIVIDES A B) (NOT (NUMBERP N))) (EQUAL (REMAINDER 0 A) (REMAINDER N A))). However this again simplifies, unfolding the definitions of LESSP, EQUAL, NUMBERP, and REMAINDER, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP N B)) (IMPLIES (DIVIDES A B) (EQUAL (REMAINDER (REMAINDER (DIFFERENCE N B) B) A) (REMAINDER (DIFFERENCE N B) A))) (DIVIDES A B)) (EQUAL (REMAINDER (REMAINDER N B) A) (REMAINDER N A))), which simplifies, opening up IMPLIES and REMAINDER, to the conjecture: (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)) (DIVIDES A B)) (EQUAL (REMAINDER (DIFFERENCE N B) A) (REMAINDER N A))). Appealing to the lemmas DIFFERENCE-ELIM and REMAINDER-QUOTIENT-ELIM, we now 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 employ the type restriction lemma noted when DIFFERENCE was introduced, LESSP-REMAINDER2, 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 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)) (DIVIDES A B)) (EQUAL (REMAINDER (DIFFERENCE N B) A) (REMAINDER N A))), which further simplifies, opening up the definition of 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)) (DIVIDES A B)) (EQUAL (REMAINDER (PLUS Z (TIMES B V)) A) (REMAINDER (PLUS B Z (TIMES B V)) A))), which further simplifies, rewriting with REMAINDER-DIVIDES, and expanding the definitions of ZEROP, NOT, EQUAL, and REMAINDER, 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)) (DIVIDES A B)) (EQUAL (REMAINDER (PLUS Z (TIMES B V)) A) (REMAINDER (PLUS B Z (TIMES B V)) A))). But this further simplifies, appealing to the lemmas REMAINDER-WRT-12 and REMAINDER-DIVIDES, and unfolding the functions ZEROP and NOT, 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)) (DIVIDES A B)) (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 and REMAINDER-DIVIDES, and unfolding the functions ZEROP and NOT, to: T. Q.E.D. [ 0.0 0.1 0.0 ] REMAINDER-REMAINDER (DISABLE REMAINDER-REMAINDER) [ 0.0 0.0 0.0 ] REMAINDER-REMAINDER-OFF (PROVE-LEMMA LESSP-QUOTIENT NIL (IMPLIES (LESSP N (TIMES A B)) (LESSP (QUOTIENT N A) B)) ((INDUCT (LESSP-QUOTIENT-INDUCTION N B A)) (ENABLE TIMES-ADD1 TIMES-ZERO2 TIMES-ZERO3) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to four new conjectures: Case 4. (IMPLIES (AND (ZEROP B) (LESSP N (TIMES A B))) (LESSP (QUOTIENT N A) B)), which simplifies, applying TIMES-ZERO3 and TIMES-ZERO2, and unfolding the definitions of ZEROP, EQUAL, and LESSP, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (ZEROP A) (LESSP N (TIMES A B))) (LESSP (QUOTIENT N A) B)). This simplifies, expanding the functions ZEROP, EQUAL, TIMES, and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL A 0)) (NUMBERP A) (LESSP N A) (LESSP N (TIMES A B))) (LESSP (QUOTIENT N A) B)). This simplifies, expanding the functions QUOTIENT, EQUAL, and LESSP, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (LESSP N A)) (IMPLIES (LESSP (DIFFERENCE N A) (TIMES A (SUB1 B))) (LESSP (QUOTIENT (DIFFERENCE N A) A) (SUB1 B))) (LESSP N (TIMES A B))) (LESSP (QUOTIENT N A) B)). This simplifies, appealing to the lemma SUB1-ADD1, and expanding the functions IMPLIES, QUOTIENT, and LESSP, to the new formula: (IMPLIES (AND (NOT (EQUAL B 0)) (NUMBERP B) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (LESSP N A)) (NOT (LESSP (DIFFERENCE N A) (TIMES A (SUB1 B)))) (LESSP N (TIMES A B))) (LESSP (QUOTIENT (DIFFERENCE N A) A) (SUB1 B))). Applying the lemma SUB1-ELIM, replace B by (ADD1 X) to eliminate (SUB1 B). We use the type restriction lemma noted when SUB1 was introduced to restrict the new variable. We would thus like to prove: (IMPLIES (AND (NUMBERP X) (NOT (EQUAL (ADD1 X) 0)) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (LESSP N A)) (NOT (LESSP (DIFFERENCE N A) (TIMES A X))) (LESSP N (TIMES A (ADD1 X)))) (LESSP (QUOTIENT (DIFFERENCE N A) A) X)), which further simplifies, appealing to the lemma TIMES-ADD1, to: (IMPLIES (AND (NUMBERP X) (NOT (EQUAL A 0)) (NUMBERP A) (NOT (LESSP N A)) (NOT (LESSP (DIFFERENCE N A) (TIMES A X))) (LESSP N (PLUS A (TIMES A X)))) (LESSP (QUOTIENT (DIFFERENCE N A) A) X)). However this again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-QUOTIENT (DEFN LESSP-QUOTIENT-QUOTIENT-INDUCTION (N A B) (IF (ZEROP N) '0 (IF (LESSP A N) '0 (IF (LESSP B N) '0 (LESSP-QUOTIENT-QUOTIENT-INDUCTION N (DIFFERENCE A N) (DIFFERENCE B N))))) NIL) 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, LESSP-QUOTIENT-QUOTIENT-INDUCTION is accepted under the principle of definition. The definition of: LESSP-QUOTIENT-QUOTIENT-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 (LESSP-QUOTIENT-QUOTIENT-INDUCTION N A B)) is a theorem. [ 0.0 0.0 0.0 ] LESSP-QUOTIENT-QUOTIENT-INDUCTION (PROVE-LEMMA LESSP-QUOTIENT-QUOTIENT (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (AND (EQUAL (REMAINDER B N) '0) (LESSP A B))) (EQUAL (LESSP (QUOTIENT A N) (QUOTIENT B N)) '*1*TRUE)) ((ENABLE REMAINDER-QUOTIENT-ELIM LESSP-REMAINDER2 COMMUTATIVITY-OF-TIMES) (INDUCT (LESSP-QUOTIENT-QUOTIENT-INDUCTION N A B)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 N) (NOT (EQUAL N 0)) (NUMBERP N) (EQUAL (REMAINDER B N) 0) (LESSP A B)) (EQUAL (LESSP (QUOTIENT A N) (QUOTIENT B N)) T)). This simplifies, opening up the function ZEROP, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (LESSP A N) (EQUAL (REMAINDER B N) 0) (LESSP A B)) (EQUAL (LESSP (QUOTIENT A N) (QUOTIENT B N)) T)). This simplifies, opening up the functions QUOTIENT, EQUAL, and LESSP, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (LESSP A N) (EQUAL (REMAINDER B N) 0) (LESSP A B)) (NOT (EQUAL (QUOTIENT B N) 0))). Applying the lemma REMAINDER-QUOTIENT-ELIM, replace B by (PLUS X (TIMES N Z)) to eliminate (REMAINDER B N) and (QUOTIENT B N). We employ LESSP-REMAINDER2, 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 thus obtain the following two new conjectures: Case 3.2. (IMPLIES (AND (NOT (NUMBERP B)) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP A N) (EQUAL (REMAINDER B N) 0) (LESSP A B)) (NOT (EQUAL (QUOTIENT B N) 0))). However this further simplifies, unfolding LESSP, REMAINDER, and EQUAL, to: T. Case 3.1. (IMPLIES (AND (NUMBERP X) (EQUAL (LESSP X N) (NOT (ZEROP N))) (NUMBERP Z) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP A N) (EQUAL X 0) (LESSP A (PLUS X (TIMES N Z)))) (NOT (EQUAL Z 0))), which further simplifies, applying COMMUTATIVITY-OF-TIMES, and unfolding the definitions of NUMBERP, EQUAL, LESSP, ZEROP, NOT, TIMES, and PLUS, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (LESSP A N)) (LESSP B N) (EQUAL (REMAINDER B N) 0) (LESSP A B)) (EQUAL (LESSP (QUOTIENT A N) (QUOTIENT B N)) T)). This simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (LESSP A N)) (NOT (LESSP B N)) (IMPLIES (AND (NOT (ZEROP N)) (EQUAL (REMAINDER (DIFFERENCE B N) N) 0) (LESSP (DIFFERENCE A N) (DIFFERENCE B N))) (EQUAL (LESSP (QUOTIENT (DIFFERENCE A N) N) (QUOTIENT (DIFFERENCE B N) N)) T)) (EQUAL (REMAINDER B N) 0) (LESSP A B)) (EQUAL (LESSP (QUOTIENT A N) (QUOTIENT B N)) T)). This simplifies, applying SUB1-ADD1, and unfolding the functions ZEROP, NOT, AND, IMPLIES, REMAINDER, QUOTIENT, LESSP, and EQUAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (LESSP A N)) (NOT (LESSP B N)) (NOT (LESSP (DIFFERENCE A N) (DIFFERENCE B N))) (EQUAL (REMAINDER (DIFFERENCE B N) N) 0) (LESSP A B)) (LESSP (QUOTIENT (DIFFERENCE A N) N) (QUOTIENT (DIFFERENCE B N) N))). However this again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-QUOTIENT-QUOTIENT (DISABLE LESSP-QUOTIENT-QUOTIENT) [ 0.0 0.0 0.0 ] LESSP-QUOTIENT-QUOTIENT-OFF (PROVE-LEMMA LESSP-TIMES-QUOTIENT (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (AND (NUMBERP I) (AND (LESSP I J) (EQUAL (REMAINDER J N) '0)))) (EQUAL (LESSP (TIMES N (QUOTIENT I N)) J) '*1*TRUE)) ((USE (LESSP-QUOTIENT-QUOTIENT (A I) (B J) (N N)) (QUOTIENT-TIMES1 (X N) (Y J))) (ENABLE DIVIDES LESSP-TIMES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, NOT, IMPLIES, AND, and DIVIDES, to: (IMPLIES (AND (IMPLIES (AND (NOT (ZEROP N)) (EQUAL (REMAINDER J N) 0) (LESSP I J)) (EQUAL (LESSP (QUOTIENT I N) (QUOTIENT J N)) T)) (IMPLIES (AND (NUMBERP J) (NUMBERP N) (NOT (EQUAL N 0)) (EQUAL (REMAINDER J N) 0)) (EQUAL (TIMES N (QUOTIENT J N)) J)) (NOT (EQUAL N 0)) (NUMBERP N) (NUMBERP I) (LESSP I J) (EQUAL (REMAINDER J N) 0)) (EQUAL (LESSP (TIMES N (QUOTIENT I N)) J) T)), which simplifies, opening up ZEROP, NOT, EQUAL, AND, IMPLIES, and LESSP, to: (IMPLIES (AND (LESSP (QUOTIENT I N) (QUOTIENT J N)) (EQUAL (TIMES N (QUOTIENT J N)) J) (NOT (EQUAL N 0)) (NUMBERP N) (NUMBERP I) (LESSP I J) (EQUAL (REMAINDER J N) 0)) (LESSP (TIMES N (QUOTIENT I N)) J)). This again simplifies, using linear arithmetic and applying LESSP-TIMES, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-TIMES-QUOTIENT (DISABLE LESSP-TIMES-QUOTIENT) [ 0.0 0.0 0.0 ] LESSP-TIMES-QUOTIENT-OFF (PROVE-LEMMA NOT-LESSP-TIMES-PLUS NIL (IMPLIES (AND (NUMBERP A) (AND (NUMBERP V) (AND (LESSP V N) (AND (NUMBERP B) (AND (NOT (EQUAL N '0)) (AND (NUMBERP N) (LESSP (PLUS V (TIMES A N)) (TIMES B N)))))))) (NOT (LESSP (TIMES B N) (PLUS (TIMES A N) N)))) ((INDUCT (DOUBLE-NUMBER-INDUCTION A B)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to the following two new formulas: Case 2. (IMPLIES (AND (OR (ZEROP A) (ZEROP B)) (NUMBERP A) (NUMBERP V) (LESSP V N) (NUMBERP B) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP (PLUS V (TIMES A N)) (TIMES B N))) (NOT (LESSP (TIMES B N) (PLUS (TIMES A N) N)))). This simplifies, unfolding the functions ZEROP, OR, NUMBERP, EQUAL, TIMES, PLUS, and LESSP, to: (IMPLIES (AND (EQUAL A 0) (NUMBERP V) (LESSP V N) (NUMBERP B) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP (PLUS V 0) (TIMES B N))) (NOT (LESSP (TIMES B N) N))), which again simplifies, clearly, to the new goal: (IMPLIES (AND (NUMBERP V) (LESSP V N) (NUMBERP B) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP (PLUS V 0) (TIMES B N))) (NOT (LESSP (TIMES B N) N))), which we will name *1. Case 1. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (IMPLIES (AND (NUMBERP (SUB1 A)) (NUMBERP V) (LESSP V N) (NUMBERP (SUB1 B)) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP (PLUS V (TIMES (SUB1 A) N)) (TIMES (SUB1 B) N))) (NOT (LESSP (TIMES (SUB1 B) N) (PLUS (TIMES (SUB1 A) N) N)))) (NUMBERP V) (LESSP V N) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP (PLUS V (TIMES A N)) (TIMES B N))) (NOT (LESSP (TIMES B N) (PLUS (TIMES A N) N)))). This simplifies, expanding the definitions of NOT, AND, IMPLIES, and TIMES, to the following two new conjectures: Case 1.2. (IMPLIES (AND (NOT (EQUAL A 0)) (NUMBERP A) (NOT (EQUAL B 0)) (NUMBERP B) (NOT (LESSP (PLUS V (TIMES (SUB1 A) N)) (TIMES (SUB1 B) N))) (NUMBERP V) (LESSP V N) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP (PLUS V N (TIMES (SUB1 A) N)) (PLUS N (TIMES (SUB1 B) N)))) (NOT (LESSP (PLUS N (TIMES (SUB1 B) N)) (PLUS (PLUS N (TIMES (SUB1 A) N)) N)))). 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) (NOT (LESSP (TIMES (SUB1 B) N) (PLUS (TIMES (SUB1 A) N) N))) (NUMBERP V) (LESSP V N) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP (PLUS V N (TIMES (SUB1 A) N)) (PLUS N (TIMES (SUB1 B) N)))) (NOT (LESSP (PLUS N (TIMES (SUB1 B) N)) (PLUS (PLUS N (TIMES (SUB1 A) N)) N)))), which again simplifies, using linear arithmetic, to: T. So next consider: (IMPLIES (AND (NUMBERP V) (LESSP V N) (NUMBERP B) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP (PLUS V 0) (TIMES B N))) (NOT (LESSP (TIMES B N) N))), named *1 above. We will try to prove it by induction. There are six 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 B) (p B N V)) (IMPLIES (AND (NOT (ZEROP B)) (p (SUB1 B) N V)) (p B N V))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT B) 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 B) (NUMBERP V) (LESSP V N) (NUMBERP B) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP (PLUS V 0) (TIMES B N))) (NOT (LESSP (TIMES B N) N))), which simplifies, expanding the functions ZEROP, NUMBERP, EQUAL, TIMES, and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP B)) (NOT (LESSP (PLUS V 0) (TIMES (SUB1 B) N))) (NUMBERP V) (LESSP V N) (NUMBERP B) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP (PLUS V 0) (TIMES B N))) (NOT (LESSP (TIMES B N) N))), which simplifies, opening up ZEROP and TIMES, to the formula: (IMPLIES (AND (NOT (EQUAL B 0)) (NOT (LESSP (PLUS V 0) (TIMES (SUB1 B) N))) (NUMBERP V) (LESSP V N) (NUMBERP B) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP (PLUS V 0) (PLUS N (TIMES (SUB1 B) N)))) (NOT (LESSP (PLUS N (TIMES (SUB1 B) N)) N))). However this again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP B)) (NOT (LESSP (TIMES (SUB1 B) N) N)) (NUMBERP V) (LESSP V N) (NUMBERP B) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP (PLUS V 0) (TIMES B N))) (NOT (LESSP (TIMES B N) N))), which simplifies, expanding the functions ZEROP and TIMES, to: (IMPLIES (AND (NOT (EQUAL B 0)) (NOT (LESSP (TIMES (SUB1 B) N) N)) (NUMBERP V) (LESSP V N) (NUMBERP B) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP (PLUS V 0) (PLUS N (TIMES (SUB1 B) N)))) (NOT (LESSP (PLUS N (TIMES (SUB1 B) N)) N))). But this again simplifies, using linear arithmetic, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] NOT-LESSP-TIMES-PLUS (PROVE-LEMMA NOT-LESSP-TIMES-PLUS-INSTANCE (REWRITE) (IMPLIES (AND (NUMBERP X) (AND (NUMBERP V) (AND (LESSP V N) (AND (NUMBERP Z) (AND (NOT (EQUAL N '0)) (AND (NUMBERP N) (LESSP (TIMES N Z) (PLUS N (TIMES N X))))))))) (EQUAL (LESSP (PLUS V (TIMES N X)) (TIMES N Z)) '*1*FALSE)) ((USE (NOT-LESSP-TIMES-PLUS (A X) (B Z))) (ENABLE COMMUTATIVITY-OF-TIMES COMMUTATIVITY-OF-PLUS) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, applying the lemmas COMMUTATIVITY-OF-TIMES and COMMUTATIVITY-OF-PLUS, and unfolding NOT, AND, and IMPLIES, to: T. Q.E.D. [ 0.0 0.0 0.0 ] NOT-LESSP-TIMES-PLUS-INSTANCE (DISABLE NOT-LESSP-TIMES-PLUS-INSTANCE) [ 0.0 0.0 0.0 ] NOT-LESSP-TIMES-PLUS-INSTANCE-OFF (PROVE-LEMMA NOT-LESSP-PLUS-TIMES-QUOTIENT (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (AND (NUMBERP I) (AND (LESSP I J) (EQUAL (REMAINDER J N) '0)))) (EQUAL (LESSP J (PLUS (TIMES N (QUOTIENT I N)) N)) '*1*FALSE)) ((ENABLE-THEORY CL-ARITHMETIC GROUND-ZERO) (ENABLE NOT-LESSP-TIMES-PLUS-INSTANCE) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NUMBERP I) (LESSP I J) (EQUAL (REMAINDER J N) 0)) (EQUAL (LESSP J (PLUS (TIMES N (QUOTIENT I N)) N)) F)). This simplifies, rewriting with COMMUTATIVITY-OF-PLUS, to the formula: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NUMBERP I) (LESSP I J) (EQUAL (REMAINDER J N) 0)) (NOT (LESSP J (PLUS N (TIMES N (QUOTIENT I N)))))). Appealing to the lemma REMAINDER-QUOTIENT-ELIM, we now replace J by (PLUS X (TIMES N Z)) to eliminate (REMAINDER J N) and (QUOTIENT J N). We employ LESSP-REMAINDER2, 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 conjectures: Case 2. (IMPLIES (AND (NOT (NUMBERP J)) (NOT (EQUAL N 0)) (NUMBERP N) (NUMBERP I) (LESSP I J) (EQUAL (REMAINDER J N) 0)) (NOT (LESSP J (PLUS N (TIMES N (QUOTIENT I N)))))), which further simplifies, expanding LESSP, to: T. Case 1. (IMPLIES (AND (NUMBERP X) (EQUAL (LESSP X N) (NOT (ZEROP N))) (NUMBERP Z) (NOT (EQUAL N 0)) (NUMBERP N) (NUMBERP I) (LESSP I (PLUS X (TIMES N Z))) (EQUAL X 0)) (NOT (LESSP (PLUS X (TIMES N Z)) (PLUS N (TIMES N (QUOTIENT I N)))))), which further simplifies, unfolding the definitions of NUMBERP, EQUAL, LESSP, ZEROP, NOT, and PLUS, to the formula: (IMPLIES (AND (NUMBERP Z) (NOT (EQUAL N 0)) (NUMBERP N) (NUMBERP I) (LESSP I (TIMES N Z))) (NOT (LESSP (TIMES N Z) (PLUS N (TIMES N (QUOTIENT I N)))))). Appealing to the lemma REMAINDER-QUOTIENT-ELIM, we now replace I by (PLUS V (TIMES N X)) to eliminate (QUOTIENT I N) and (REMAINDER I N). We use LESSP-REMAINDER2, 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 the formula: (IMPLIES (AND (NUMBERP X) (NUMBERP V) (EQUAL (LESSP V N) (NOT (ZEROP N))) (NUMBERP Z) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP (PLUS V (TIMES N X)) (TIMES N Z))) (NOT (LESSP (TIMES N Z) (PLUS N (TIMES N X))))). This further simplifies, applying NOT-LESSP-TIMES-PLUS-INSTANCE, and opening up ZEROP and NOT, to: T. Q.E.D. [ 0.0 0.1 0.0 ] NOT-LESSP-PLUS-TIMES-QUOTIENT (DISABLE NOT-LESSP-PLUS-TIMES-QUOTIENT) [ 0.0 0.0 0.0 ] NOT-LESSP-PLUS-TIMES-QUOTIENT-OFF (PROVE-LEMMA QUOTIENT-PLUS-TIMES-REMAINDER (REWRITE) (IMPLIES (NOT (ZEROP N)) (EQUAL (QUOTIENT (PLUS (TIMES N A) (REMAINDER B N)) N) (FIX A))) ((USE (QUOTIENT-PLUS-TIMES (A A) (B N) (C (REMAINDER B N)))) (ENABLE COMMUTATIVITY-OF-PLUS LESSP-REMAINDER2) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, and IMPLIES, to the formula: (IMPLIES (AND (IMPLIES (LESSP (REMAINDER B N) N) (EQUAL (QUOTIENT (PLUS (REMAINDER B N) (TIMES N A)) N) (FIX A))) (NOT (EQUAL N 0)) (NUMBERP N)) (EQUAL (QUOTIENT (PLUS (TIMES N A) (REMAINDER B N)) N) (FIX A))). This simplifies, rewriting with the lemmas LESSP-REMAINDER2 and COMMUTATIVITY-OF-PLUS, and unfolding the definitions of FIX, IMPLIES, and EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] QUOTIENT-PLUS-TIMES-REMAINDER (DISABLE QUOTIENT-PLUS-TIMES-REMAINDER) [ 0.0 0.0 0.0 ] QUOTIENT-PLUS-TIMES-REMAINDER-OFF (PROVE-LEMMA REMAINDER-PLUS-TIMES-REMAINDER (REWRITE) (EQUAL (REMAINDER (PLUS (TIMES N A) (REMAINDER B N)) N) (REMAINDER B N)) ((USE (REMAINDER-PLUS-TIMES-2 (J N) (I A) (X (REMAINDER B N)))) (ENABLE COMMUTATIVITY-OF-PLUS REMAINDER-REMAINDER DIVIDES REMAINDER-X-X) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, applying REMAINDER-X-X, REMAINDER-REMAINDER, and COMMUTATIVITY-OF-PLUS, and expanding the functions DIVIDES and EQUAL, to: T. Q.E.D. [ 0.1 0.0 0.0 ] REMAINDER-PLUS-TIMES-REMAINDER (DISABLE REMAINDER-PLUS-TIMES-REMAINDER) [ 0.0 0.0 0.0 ] REMAINDER-PLUS-TIMES-REMAINDER-OFF (PROVE-LEMMA REMAINDER-NON-ZERO NIL (IMPLIES (AND (NOT (ZEROP N)) (LESSP N M)) (LESSP '0 (REMAINDER N M))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (LESSP N M)) (LESSP 0 (REMAINDER N M))), which simplifies, unfolding the definitions of REMAINDER, EQUAL, and LESSP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-NON-ZERO (PROVE-LEMMA PLUS-NOT-EQUAL (REWRITE) (IMPLIES (NOT (EQUAL (FIX B) (FIX C))) (NOT (EQUAL (PLUS A B) (PLUS A C)))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, opening up FIX, to the following three new formulas: Case 3. (IMPLIES (AND (NOT (NUMBERP C)) (NUMBERP B) (NOT (EQUAL B 0))) (NOT (EQUAL (PLUS A B) (PLUS A C)))). Name the above subgoal *1. Case 2. (IMPLIES (AND (NUMBERP C) (NOT (NUMBERP B)) (NOT (EQUAL 0 C))) (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: (IMPLIES (NOT (EQUAL (FIX B) (FIX C))) (NOT (EQUAL (PLUS A B) (PLUS A C)))), which we named *1 above. We will appeal to 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 (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 conjectures: Case 2. (IMPLIES (AND (ZEROP A) (NOT (EQUAL (FIX B) (FIX C)))) (NOT (EQUAL (PLUS A B) (PLUS A C)))). This simplifies, opening up the definitions of ZEROP, FIX, EQUAL, and PLUS, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP A)) (NOT (EQUAL (PLUS (SUB1 A) B) (PLUS (SUB1 A) C))) (NOT (EQUAL (FIX B) (FIX C)))) (NOT (EQUAL (PLUS A B) (PLUS A C)))). This simplifies, using linear arithmetic, to the new conjecture: (IMPLIES (AND (LESSP A 1) (NOT (ZEROP A)) (NOT (EQUAL (PLUS (SUB1 A) B) (PLUS (SUB1 A) C))) (NOT (EQUAL (FIX B) (FIX C)))) (NOT (EQUAL (PLUS A B) (PLUS A C)))), which again simplifies, applying ADD1-EQUAL, and opening up the functions ZEROP, FIX, and PLUS, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PLUS-NOT-EQUAL (DISABLE PLUS-NOT-EQUAL) [ 0.0 0.0 0.0 ] PLUS-NOT-EQUAL-OFF (PROVE-LEMMA DIFFERENCE-PLUS4 (REWRITE) (EQUAL (DIFFERENCE (PLUS A (PLUS B C)) (PLUS B C)) (FIX A)) ((USE (DIFFERENCE-PLUS (Y A) (X (PLUS B C)))) (ENABLE ASSOCIATIVITY-OF-PLUS) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations AND and ASSOCIATIVITY-OF-PLUS, to: T. This simplifies, obviously, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS4 (DISABLE DIFFERENCE-PLUS4) [ 0.0 0.0 0.0 ] DIFFERENCE-PLUS4-OFF (PROVE-LEMMA REMAINDER-REMAINDER-INVERSE NIL (IMPLIES (DIVIDES A B) (EQUAL (REMAINDER N A) (REMAINDER (REMAINDER N B) A))) ((ENABLE REMAINDER-REMAINDER) (DISABLE REMAINDER) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, appealing to the lemma REMAINDER-REMAINDER, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REMAINDER-REMAINDER-INVERSE (PROVE-LEMMA ASSOCIATIVITY-OF-PLUS-INVERSE NIL (EQUAL (PLUS A (PLUS B C)) (PLUS (PLUS A B) C)) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] ASSOCIATIVITY-OF-PLUS-INVERSE (DEFN LENGTH (L) (IF (LISTP L) (ADD1 (LENGTH (CDR L))) '0) NIL) Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT L) decreases according to the well-founded relation LESSP in each recursive call. Hence, LENGTH is accepted under the principle of definition. From the definition we can conclude that (NUMBERP (LENGTH L)) is a theorem. [ 0.0 0.0 0.0 ] LENGTH (DEFN INSERT (I L) (IF (LISTP L) (IF (LESSP I (CAR L)) (CONS I L) (CONS (CAR L) (INSERT I (CDR L)))) (CONS I L)) NIL) Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT L) decreases according to the well-founded relation LESSP in each recursive call. Hence, INSERT is accepted under the principle of definition. Note that (LISTP (INSERT I L)) is a theorem. [ 0.0 0.0 0.0 ] INSERT (DEFN OCCURRENCES (X L) (IF (LISTP L) (IF (EQUAL X (CAR L)) (ADD1 (OCCURRENCES X (CDR L))) (OCCURRENCES X (CDR L))) '0) NIL) Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT L) decreases according to the well-founded relation LESSP in each recursive call. Hence, OCCURRENCES is accepted under the principle of definition. From the definition we can conclude that: (NUMBERP (OCCURRENCES X L)) is a theorem. [ 0.0 0.0 0.0 ] OCCURRENCES (DEFN REMOVE (X L) (IF (LISTP L) (IF (EQUAL X (CAR L)) (CDR L) (CONS (CAR L) (REMOVE X (CDR L)))) L) NIL) Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT L) decreases according to the well-founded relation LESSP in each recursive call. Hence, REMOVE is accepted under the principle of definition. [ 0.0 0.0 0.0 ] REMOVE (DEFN PERMUTATION (A B) (IF (LISTP A) (AND (MEMBER (CAR A) B) (PERMUTATION (CDR A) (REMOVE (CAR A) B))) (NLISTP B)) NIL) Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT A) decreases according to the well-founded relation LESSP in each recursive call. Hence, PERMUTATION is accepted under the definitional principle. From the definition we can conclude that: (OR (FALSEP (PERMUTATION A B)) (TRUEP (PERMUTATION A B))) is a theorem. [ 0.0 0.0 0.0 ] PERMUTATION (DEFN PLISTP (L) (IF (LISTP L) (PLISTP (CDR L)) (EQUAL L 'NIL)) NIL) Linear arithmetic and the lemma CDR-LESSP can be used to establish that the measure (COUNT L) decreases according to the well-founded relation LESSP in each recursive call. Hence, PLISTP is accepted under the principle of definition. From the definition we can conclude that: (OR (FALSEP (PLISTP L)) (TRUEP (PLISTP L))) is a theorem. [ 0.0 0.0 0.0 ] PLISTP (DEFN SETP (L) (IF (LISTP L) (AND (NOT (MEMBER (CAR L) (CDR L))) (SETP (CDR L))) (EQUAL L 'NIL)) NIL) Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT L) decreases according to the well-founded relation LESSP in each recursive call. Hence, SETP is accepted under the definitional principle. From the definition we can conclude that: (OR (FALSEP (SETP L)) (TRUEP (SETP L))) is a theorem. [ 0.0 0.0 0.0 ] SETP (DEFN SORTED (L) (IF (LISTP L) (IF (LISTP (CDR L)) (IF (LESSP (CAR (CDR L)) (CAR L)) '*1*FALSE (SORTED (CDR L))) '*1*TRUE) '*1*TRUE) NIL) Linear arithmetic and the lemma CDR-LESSP can be used to prove that the measure (COUNT L) decreases according to the well-founded relation LESSP in each recursive call. Hence, SORTED is accepted under the principle of definition. Observe that (OR (FALSEP (SORTED L)) (TRUEP (SORTED L))) is a theorem. [ 0.0 0.0 0.0 ] SORTED (PROVE-LEMMA NOT-LISTP-REMOVE (REWRITE) (IMPLIES (NOT (LISTP L)) (NOT (LISTP (REMOVE X (CONS X L))))) ((ENABLE REMOVE) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, appealing to the lemmas CDR-CONS and CAR-CONS, and expanding the function REMOVE, to: T. Q.E.D. [ 0.0 0.0 0.0 ] NOT-LISTP-REMOVE (DISABLE NOT-LISTP-REMOVE) [ 0.0 0.0 0.0 ] NOT-LISTP-REMOVE-OFF (PROVE-LEMMA LENGTH-INSERT (REWRITE) (EQUAL (LENGTH (INSERT I L)) (ADD1 (LENGTH L))) ((ENABLE INSERT LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Give the conjecture the name *1. Let us appeal to the induction principle. 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 (AND (LISTP L) (LESSP I (CAR L))) (p I L)) (IMPLIES (AND (LISTP L) (NOT (LESSP I (CAR L))) (p I (CDR L))) (p I L)) (IMPLIES (NOT (LISTP L)) (p I L))). Linear arithmetic and the lemma CDR-LESSP 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 three new conjectures: Case 3. (IMPLIES (AND (LISTP L) (LESSP I (CAR L))) (EQUAL (LENGTH (INSERT I L)) (ADD1 (LENGTH L)))), which simplifies, expanding the functions INSERT and LENGTH, to: (IMPLIES (AND (LISTP L) (LESSP I (CAR L))) (EQUAL (LENGTH (CONS I L)) (ADD1 (ADD1 (LENGTH (CDR L)))))). But this again simplifies, applying CDR-CONS, and unfolding the function LENGTH, to: T. Case 2. (IMPLIES (AND (LISTP L) (NOT (LESSP I (CAR L))) (EQUAL (LENGTH (INSERT I (CDR L))) (ADD1 (LENGTH (CDR L))))) (EQUAL (LENGTH (INSERT I L)) (ADD1 (LENGTH L)))). This simplifies, rewriting with CDR-CONS, and opening up the functions INSERT and LENGTH, to: T. Case 1. (IMPLIES (NOT (LISTP L)) (EQUAL (LENGTH (INSERT I L)) (ADD1 (LENGTH L)))), which simplifies, applying CDR-CONS, and unfolding the definitions of INSERT, ADD1, LENGTH, and EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LENGTH-INSERT (DISABLE LENGTH-INSERT) [ 0.0 0.0 0.0 ] LENGTH-INSERT-OFF (PROVE-LEMMA LENGTH-REMOVE (REWRITE) (EQUAL (LENGTH (REMOVE X L)) (IF (MEMBER X L) (SUB1 (LENGTH L)) (LENGTH L))) ((ENABLE REMOVE MEMBER LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, obviously, to two new formulas: Case 2. (IMPLIES (NOT (MEMBER X L)) (EQUAL (LENGTH (REMOVE X L)) (LENGTH L))), which we will name *1. Case 1. (IMPLIES (MEMBER X L) (EQUAL (LENGTH (REMOVE X L)) (SUB1 (LENGTH L)))), 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 (LENGTH (REMOVE X L)) (IF (MEMBER X L) (SUB1 (LENGTH L)) (LENGTH L))), which we named *1 above. 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 (AND (LISTP L) (EQUAL X (CAR L))) (p X L)) (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (p X (CDR L))) (p X L)) (IMPLIES (NOT (LISTP L)) (p X L))). Linear arithmetic and the lemma CDR-LESSP 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 produces the following three new goals: Case 3. (IMPLIES (AND (LISTP L) (EQUAL X (CAR L))) (EQUAL (LENGTH (REMOVE X L)) (IF (MEMBER X L) (SUB1 (LENGTH L)) (LENGTH L)))). This simplifies, applying SUB1-ADD1, and opening up the definitions of REMOVE, MEMBER, and LENGTH, to: T. Case 2. (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (EQUAL (LENGTH (REMOVE X (CDR L))) (IF (MEMBER X (CDR L)) (SUB1 (LENGTH (CDR L))) (LENGTH (CDR L))))) (EQUAL (LENGTH (REMOVE X L)) (IF (MEMBER X L) (SUB1 (LENGTH L)) (LENGTH L)))), which simplifies, rewriting with CDR-CONS, ADD1-SUB1, and SUB1-ADD1, and expanding the definitions of REMOVE, LENGTH, and MEMBER, to: (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (MEMBER X (CDR L)) (EQUAL (LENGTH (REMOVE X (CDR L))) (SUB1 (LENGTH (CDR L)))) (EQUAL (LENGTH (CDR L)) 0)) (EQUAL 1 (LENGTH (CDR L)))), which again simplifies, opening up the functions SUB1 and EQUAL, to the goal: (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (MEMBER X (CDR L)) (EQUAL (LENGTH (REMOVE X (CDR L))) 0)) (NOT (EQUAL (LENGTH (CDR L)) 0))). Appealing to the lemma CAR-CDR-ELIM, we now replace L by (CONS Z V) to eliminate (CAR L) and (CDR L). We must thus prove: (IMPLIES (AND (NOT (EQUAL X Z)) (MEMBER X V) (EQUAL (LENGTH (REMOVE X V)) 0)) (NOT (EQUAL (LENGTH V) 0))). Give the above formula the name *1.1. Case 1. (IMPLIES (NOT (LISTP L)) (EQUAL (LENGTH (REMOVE X L)) (IF (MEMBER X L) (SUB1 (LENGTH L)) (LENGTH L)))). This simplifies, opening up the definitions of REMOVE, LENGTH, MEMBER, and EQUAL, to: T. So we now return to: (IMPLIES (AND (NOT (EQUAL X Z)) (MEMBER X V) (EQUAL (LENGTH (REMOVE X V)) 0)) (NOT (EQUAL (LENGTH V) 0))), named *1.1 above. We will appeal to induction. Three 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 V) (p V X Z)) (IMPLIES (AND (NOT (NLISTP V)) (EQUAL X (CAR V))) (p V X Z)) (IMPLIES (AND (NOT (NLISTP V)) (NOT (EQUAL X (CAR V))) (p (CDR V) X Z)) (p V X Z))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP inform us that the measure (COUNT V) 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 (NLISTP V) (NOT (EQUAL X Z)) (MEMBER X V) (EQUAL (LENGTH (REMOVE X V)) 0)) (NOT (EQUAL (LENGTH V) 0))). This simplifies, expanding the definitions of NLISTP and MEMBER, to: T. Case 4. (IMPLIES (AND (NOT (NLISTP V)) (EQUAL X (CAR V)) (NOT (EQUAL X Z)) (MEMBER X V) (EQUAL (LENGTH (REMOVE X V)) 0)) (NOT (EQUAL (LENGTH V) 0))). This simplifies, opening up NLISTP, MEMBER, REMOVE, LENGTH, ADD1, and EQUAL, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP V)) (NOT (EQUAL X (CAR V))) (NOT (MEMBER X (CDR V))) (NOT (EQUAL X Z)) (MEMBER X V) (EQUAL (LENGTH (REMOVE X V)) 0)) (NOT (EQUAL (LENGTH V) 0))). This simplifies, expanding NLISTP and MEMBER, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP V)) (NOT (EQUAL X (CAR V))) (NOT (EQUAL (LENGTH (REMOVE X (CDR V))) 0)) (NOT (EQUAL X Z)) (MEMBER X V) (EQUAL (LENGTH (REMOVE X V)) 0)) (NOT (EQUAL (LENGTH V) 0))). This simplifies, applying CDR-CONS, and unfolding the definitions of NLISTP, MEMBER, REMOVE, and LENGTH, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP V)) (NOT (EQUAL X (CAR V))) (NOT (EQUAL (LENGTH (CDR V)) 0)) (NOT (EQUAL X Z)) (MEMBER X V) (EQUAL (LENGTH (REMOVE X V)) 0)) (NOT (EQUAL (LENGTH V) 0))), which simplifies, rewriting with the lemma CDR-CONS, and unfolding the definitions of NLISTP, MEMBER, REMOVE, and LENGTH, to: T. That finishes the proof of *1.1, which, consequently, finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LENGTH-REMOVE (DISABLE LENGTH-REMOVE) [ 0.0 0.0 0.0 ] LENGTH-REMOVE-OFF (PROVE-LEMMA LENGTH-PERMUTATION NIL (IMPLIES (PERMUTATION A B) (EQUAL (LENGTH A) (LENGTH B))) ((ENABLE PERMUTATION LENGTH LENGTH-REMOVE) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 A) (p (CDR A) (REMOVE (CAR A) B))) (p A B)) (IMPLIES (NOT (LISTP A)) (p A B))). Linear arithmetic and the lemma CDR-LESSP 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 formulas: Case 3. (IMPLIES (AND (LISTP A) (NOT (PERMUTATION (CDR A) (REMOVE (CAR A) B))) (PERMUTATION A B)) (EQUAL (LENGTH A) (LENGTH B))). This simplifies, expanding the definition of PERMUTATION, to: T. Case 2. (IMPLIES (AND (LISTP A) (EQUAL (LENGTH (CDR A)) (LENGTH (REMOVE (CAR A) B))) (PERMUTATION A B)) (EQUAL (LENGTH A) (LENGTH B))). This simplifies, applying LENGTH-REMOVE, and expanding the definitions of PERMUTATION and LENGTH, to the goal: (IMPLIES (AND (LISTP A) (MEMBER (CAR A) B) (EQUAL (LENGTH (CDR A)) (SUB1 (LENGTH B))) (PERMUTATION (CDR A) (REMOVE (CAR A) B))) (EQUAL (ADD1 (LENGTH (CDR A))) (LENGTH B))). But this again simplifies, using linear arithmetic, to the goal: (IMPLIES (AND (EQUAL (LENGTH B) 0) (LISTP A) (MEMBER (CAR A) B) (EQUAL (LENGTH (CDR A)) (SUB1 (LENGTH B))) (PERMUTATION (CDR A) (REMOVE (CAR A) B))) (EQUAL (ADD1 (LENGTH (CDR A))) (LENGTH B))). However this again simplifies, unfolding the functions SUB1, ADD1, and EQUAL, to: (IMPLIES (AND (EQUAL (LENGTH B) 0) (LISTP A) (MEMBER (CAR A) B) (EQUAL (LENGTH (CDR A)) 0)) (NOT (PERMUTATION (CDR A) (REMOVE (CAR A) B)))). Appealing to the lemma CAR-CDR-ELIM, we now replace A by (CONS X Z) to eliminate (CAR A) and (CDR A). This generates: (IMPLIES (AND (EQUAL (LENGTH B) 0) (MEMBER X B) (EQUAL (LENGTH Z) 0)) (NOT (PERMUTATION Z (REMOVE X B)))). Name the above subgoal *1.1. Case 1. (IMPLIES (AND (NOT (LISTP A)) (PERMUTATION A B)) (EQUAL (LENGTH A) (LENGTH B))). This simplifies, opening up PERMUTATION, LENGTH, and EQUAL, to: T. So next consider: (IMPLIES (AND (EQUAL (LENGTH B) 0) (MEMBER X B) (EQUAL (LENGTH Z) 0)) (NOT (PERMUTATION Z (REMOVE X B)))), which we named *1.1 above. Perhaps we can prove it by induction. There are two plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP Z) (p (CDR Z) X B)) (p Z X B)) (IMPLIES (NOT (LISTP Z)) (p Z X B))). Linear arithmetic and the lemma CDR-LESSP 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 generates the following three new formulas: Case 3. (IMPLIES (AND (LISTP Z) (NOT (EQUAL (LENGTH (CDR Z)) 0)) (EQUAL (LENGTH B) 0) (MEMBER X B) (EQUAL (LENGTH Z) 0)) (NOT (PERMUTATION Z (REMOVE X B)))). This simplifies, opening up the function LENGTH, to: T. Case 2. (IMPLIES (AND (LISTP Z) (NOT (PERMUTATION (CDR Z) (REMOVE X B))) (EQUAL (LENGTH B) 0) (MEMBER X B) (EQUAL (LENGTH Z) 0)) (NOT (PERMUTATION Z (REMOVE X B)))). This simplifies, opening up the function LENGTH, to: T. Case 1. (IMPLIES (AND (NOT (LISTP Z)) (EQUAL (LENGTH B) 0) (MEMBER X B) (EQUAL (LENGTH Z) 0)) (NOT (PERMUTATION Z (REMOVE X B)))). This simplifies, unfolding the functions LENGTH, EQUAL, and PERMUTATION, to the new formula: (IMPLIES (AND (NOT (LISTP Z)) (EQUAL (LENGTH B) 0) (MEMBER X B)) (LISTP (REMOVE X B))), which has an irrelevant term in it. By eliminating the term we get: (IMPLIES (AND (EQUAL (LENGTH B) 0) (MEMBER X B)) (LISTP (REMOVE X B))), which we will name *1.1.1. 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 (AND (LISTP B) (p X (CDR B))) (p X B)) (IMPLIES (NOT (LISTP B)) (p X B))). Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT B) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme produces the following four new conjectures: Case 4. (IMPLIES (AND (LISTP B) (NOT (EQUAL (LENGTH (CDR B)) 0)) (EQUAL (LENGTH B) 0) (MEMBER X B)) (LISTP (REMOVE X B))). This simplifies, unfolding LENGTH, to: T. Case 3. (IMPLIES (AND (LISTP B) (NOT (MEMBER X (CDR B))) (EQUAL (LENGTH B) 0) (MEMBER X B)) (LISTP (REMOVE X B))). This simplifies, unfolding LENGTH, to: T. Case 2. (IMPLIES (AND (LISTP B) (LISTP (REMOVE X (CDR B))) (EQUAL (LENGTH B) 0) (MEMBER X B)) (LISTP (REMOVE X B))). This simplifies, expanding the function LENGTH, to: T. Case 1. (IMPLIES (AND (NOT (LISTP B)) (EQUAL (LENGTH B) 0) (MEMBER X B)) (LISTP (REMOVE X B))). This simplifies, opening up the functions LENGTH, EQUAL, and MEMBER, to: T. That finishes the proof of *1.1.1, which, consequently, also finishes the proof of *1.1, which, in turn, also finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LENGTH-PERMUTATION (PROVE-LEMMA NUMBER-OF-OCCURRENCES-OF-SET-MEMBER-IS-1 NIL (IMPLIES (AND (SETP L) (MEMBER X L)) (EQUAL (OCCURRENCES X L) '1)) ((ENABLE SETP MEMBER OCCURRENCES) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. Perhaps we can prove it by induction. Three 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 (AND (LISTP L) (EQUAL X (CAR L)) (p X (CDR L))) (p X L)) (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (p X (CDR L))) (p X L)) (IMPLIES (NOT (LISTP L)) (p X L))). Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT L) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme leads to the following seven new conjectures: Case 7. (IMPLIES (AND (LISTP L) (EQUAL X (CAR L)) (NOT (SETP (CDR L))) (SETP L) (MEMBER X L)) (EQUAL (OCCURRENCES X L) 1)). This simplifies, opening up SETP, to: T. Case 6. (IMPLIES (AND (LISTP L) (EQUAL X (CAR L)) (NOT (MEMBER X (CDR L))) (SETP L) (MEMBER X L)) (EQUAL (OCCURRENCES X L) 1)). This simplifies, rewriting with ADD1-EQUAL, and expanding the functions SETP, MEMBER, OCCURRENCES, and NUMBERP, to the formula: (IMPLIES (AND (LISTP L) (NOT (MEMBER (CAR L) (CDR L))) (SETP (CDR L))) (EQUAL (OCCURRENCES (CAR L) (CDR L)) 0)). Appealing to the lemma CAR-CDR-ELIM, we now replace L by (CONS Z V) to eliminate (CAR L) and (CDR L). The result is the conjecture: (IMPLIES (AND (NOT (MEMBER Z V)) (SETP V)) (EQUAL (OCCURRENCES Z V) 0)). Call the above conjecture *1.1. Case 5. (IMPLIES (AND (LISTP L) (EQUAL X (CAR L)) (EQUAL (OCCURRENCES X (CDR L)) 1) (SETP L) (MEMBER X L)) (EQUAL (OCCURRENCES X L) 1)). This simplifies, opening up the functions SETP, MEMBER, ADD1, OCCURRENCES, and EQUAL, to: (IMPLIES (AND (LISTP L) (EQUAL (OCCURRENCES (CAR L) (CDR L)) 1) (NOT (MEMBER (CAR L) (CDR L)))) (NOT (SETP (CDR L)))). Applying the lemma CAR-CDR-ELIM, replace L by (CONS Z V) to eliminate (CAR L) and (CDR L). We thus obtain: (IMPLIES (AND (EQUAL (OCCURRENCES Z V) 1) (NOT (MEMBER Z V))) (NOT (SETP V))), which we will name *1.2. Case 4. (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (NOT (SETP (CDR L))) (SETP L) (MEMBER X L)) (EQUAL (OCCURRENCES X L) 1)). This simplifies, opening up the definition of SETP, to: T. Case 3. (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (NOT (MEMBER X (CDR L))) (SETP L) (MEMBER X L)) (EQUAL (OCCURRENCES X L) 1)). This simplifies, opening up SETP and MEMBER, to: T. Case 2. (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (EQUAL (OCCURRENCES X (CDR L)) 1) (SETP L) (MEMBER X L)) (EQUAL (OCCURRENCES X L) 1)). This simplifies, unfolding the definitions of SETP, MEMBER, OCCURRENCES, and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (LISTP L)) (SETP L) (MEMBER X L)) (EQUAL (OCCURRENCES X L) 1)). This simplifies, opening up the functions SETP, LISTP, and MEMBER, to: T. So we now return to: (IMPLIES (AND (EQUAL (OCCURRENCES Z V) 1) (NOT (MEMBER Z V))) (NOT (SETP V))), which we named *1.2 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 (AND (LISTP V) (EQUAL Z (CAR V)) (p (CDR V) Z)) (p V Z)) (IMPLIES (AND (LISTP V) (NOT (EQUAL Z (CAR V))) (p (CDR V) Z)) (p V Z)) (IMPLIES (NOT (LISTP V)) (p V Z))). Linear arithmetic and the lemma CDR-LESSP can be used to prove that the measure (COUNT V) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme produces seven new formulas: Case 7. (IMPLIES (AND (LISTP V) (EQUAL Z (CAR V)) (NOT (EQUAL (OCCURRENCES Z (CDR V)) 1)) (EQUAL (OCCURRENCES Z V) 1) (NOT (MEMBER Z V))) (NOT (SETP V))), which simplifies, rewriting with ADD1-EQUAL, and opening up OCCURRENCES, NUMBERP, and MEMBER, to: T. Case 6. (IMPLIES (AND (LISTP V) (EQUAL Z (CAR V)) (MEMBER Z (CDR V)) (EQUAL (OCCURRENCES Z V) 1) (NOT (MEMBER Z V))) (NOT (SETP V))). This simplifies, applying ADD1-EQUAL, and unfolding the definitions of OCCURRENCES, NUMBERP, and MEMBER, to: T. Case 5. (IMPLIES (AND (LISTP V) (EQUAL Z (CAR V)) (NOT (SETP (CDR V))) (EQUAL (OCCURRENCES Z V) 1) (NOT (MEMBER Z V))) (NOT (SETP V))), which simplifies, applying the lemma ADD1-EQUAL, and unfolding the functions OCCURRENCES, NUMBERP, and MEMBER, to: T. Case 4. (IMPLIES (AND (LISTP V) (NOT (EQUAL Z (CAR V))) (NOT (EQUAL (OCCURRENCES Z (CDR V)) 1)) (EQUAL (OCCURRENCES Z V) 1) (NOT (MEMBER Z V))) (NOT (SETP V))), which simplifies, unfolding the function OCCURRENCES, to: T. Case 3. (IMPLIES (AND (LISTP V) (NOT (EQUAL Z (CAR V))) (MEMBER Z (CDR V)) (EQUAL (OCCURRENCES Z V) 1) (NOT (MEMBER Z V))) (NOT (SETP V))), which simplifies, expanding the functions OCCURRENCES and MEMBER, to: T. Case 2. (IMPLIES (AND (LISTP V) (NOT (EQUAL Z (CAR V))) (NOT (SETP (CDR V))) (EQUAL (OCCURRENCES Z V) 1) (NOT (MEMBER Z V))) (NOT (SETP V))), which simplifies, expanding the functions OCCURRENCES, MEMBER, and SETP, to: T. Case 1. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (OCCURRENCES Z V) 1) (NOT (MEMBER Z V))) (NOT (SETP V))), which simplifies, unfolding the definitions of OCCURRENCES and EQUAL, to: T. That finishes the proof of *1.2. So we now return to: (IMPLIES (AND (NOT (MEMBER Z V)) (SETP V)) (EQUAL (OCCURRENCES Z V) 0)), which we named *1.1 above. Let us appeal to the induction principle. Three 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 V) (p Z V)) (IMPLIES (AND (NOT (NLISTP V)) (EQUAL Z (CAR V))) (p Z V)) (IMPLIES (AND (NOT (NLISTP V)) (NOT (EQUAL Z (CAR V))) (p Z (CDR V))) (p Z V))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP inform us that the measure (COUNT V) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme leads to five new conjectures: Case 5. (IMPLIES (AND (NLISTP V) (NOT (MEMBER Z V)) (SETP V)) (EQUAL (OCCURRENCES Z V) 0)), which simplifies, expanding NLISTP, MEMBER, SETP, LISTP, OCCURRENCES, and EQUAL, to: T. Case 4. (IMPLIES (AND (NOT (NLISTP V)) (EQUAL Z (CAR V)) (NOT (MEMBER Z V)) (SETP V)) (EQUAL (OCCURRENCES Z V) 0)), which simplifies, unfolding the definitions of NLISTP and MEMBER, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP V)) (NOT (EQUAL Z (CAR V))) (MEMBER Z (CDR V)) (NOT (MEMBER Z V)) (SETP V)) (EQUAL (OCCURRENCES Z V) 0)), which simplifies, unfolding NLISTP and MEMBER, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP V)) (NOT (EQUAL Z (CAR V))) (NOT (SETP (CDR V))) (NOT (MEMBER Z V)) (SETP V)) (EQUAL (OCCURRENCES Z V) 0)), which simplifies, unfolding NLISTP, MEMBER, and SETP, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP V)) (NOT (EQUAL Z (CAR V))) (EQUAL (OCCURRENCES Z (CDR V)) 0) (NOT (MEMBER Z V)) (SETP V)) (EQUAL (OCCURRENCES Z V) 0)), which simplifies, unfolding the functions NLISTP, MEMBER, SETP, OCCURRENCES, and EQUAL, to: T. That finishes the proof of *1.1, which finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] NUMBER-OF-OCCURRENCES-OF-SET-MEMBER-IS-1 (PROVE-LEMMA PLISTP-REMOVE (REWRITE) (EQUAL (PLISTP (REMOVE X L)) (PLISTP L)) ((ENABLE PLISTP REMOVE) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Call the conjecture *1. We will try to 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 (AND (LISTP L) (EQUAL X (CAR L))) (p X L)) (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (p X (CDR L))) (p X L)) (IMPLIES (NOT (LISTP L)) (p X L))). Linear arithmetic and the lemma CDR-LESSP 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 three new formulas: Case 3. (IMPLIES (AND (LISTP L) (EQUAL X (CAR L))) (EQUAL (PLISTP (REMOVE X L)) (PLISTP L))). This simplifies, expanding the definitions of REMOVE and PLISTP, to: T. Case 2. (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (EQUAL (PLISTP (REMOVE X (CDR L))) (PLISTP (CDR L)))) (EQUAL (PLISTP (REMOVE X L)) (PLISTP L))). This simplifies, appealing to the lemma CDR-CONS, and opening up REMOVE and PLISTP, to: T. Case 1. (IMPLIES (NOT (LISTP L)) (EQUAL (PLISTP (REMOVE X L)) (PLISTP L))). This simplifies, unfolding REMOVE and PLISTP, to: T. That finishes the proof of *1. Q.E.D. [ 0.1 0.0 0.0 ] PLISTP-REMOVE (DISABLE PLISTP-REMOVE) [ 0.0 0.0 0.0 ] PLISTP-REMOVE-OFF (PROVE-LEMMA PLISTP-SET (REWRITE) (IMPLIES (SETP L) (PLISTP L)) ((ENABLE SETP PLISTP) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Call the conjecture *1. Perhaps we can prove it by induction. There are two plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP L) (p (CDR L))) (p L)) (IMPLIES (NOT (LISTP L)) (p L))). Linear arithmetic and the lemma CDR-LESSP 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 produces the following three new goals: Case 3. (IMPLIES (AND (LISTP L) (NOT (SETP (CDR L))) (SETP L)) (PLISTP L)). This simplifies, expanding the definition of SETP, to: T. Case 2. (IMPLIES (AND (LISTP L) (PLISTP (CDR L)) (SETP L)) (PLISTP L)). This simplifies, expanding SETP and PLISTP, to: T. Case 1. (IMPLIES (AND (NOT (LISTP L)) (SETP L)) (PLISTP L)). This simplifies, unfolding the functions SETP, EQUAL, LISTP, and PLISTP, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PLISTP-SET (DISABLE PLISTP-SET) [ 0.0 0.0 0.0 ] PLISTP-SET-OFF (PROVE-LEMMA INSERT-REMOVE (REWRITE) (IMPLIES (AND (SORTED L) (NOT (EQUAL X Y))) (EQUAL (INSERT X (REMOVE Y L)) (REMOVE Y (INSERT X L)))) ((ENABLE INSERT REMOVE SORTED) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Give the conjecture the name *1. Let us appeal to the induction principle. There are three plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (LESSP (CADR L) (CAR L))) (p X Y L)) (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (p X Y (CDR L))) (p X Y L)) (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L)))) (p X Y L)) (IMPLIES (NOT (LISTP L)) (p X Y L))). Linear arithmetic and the lemma CDR-LESSP 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 produces five new goals: Case 5. (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (LESSP (CADR L) (CAR L)) (SORTED L) (NOT (EQUAL X Y))) (EQUAL (INSERT X (REMOVE Y L)) (REMOVE Y (INSERT X L)))), which simplifies, opening up SORTED, to: T. Case 4. (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (NOT (SORTED (CDR L))) (SORTED L) (NOT (EQUAL X Y))) (EQUAL (INSERT X (REMOVE Y L)) (REMOVE Y (INSERT X L)))), which simplifies, unfolding the definition of SORTED, to: T. Case 3. (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (EQUAL (INSERT X (REMOVE Y (CDR L))) (REMOVE Y (INSERT X (CDR L)))) (SORTED L) (NOT (EQUAL X Y))) (EQUAL (INSERT X (REMOVE Y L)) (REMOVE Y (INSERT X L)))), which simplifies, unfolding the definitions of SORTED, REMOVE, and INSERT, to four new conjectures: Case 3.4. (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (EQUAL (INSERT X (REMOVE Y (CDR L))) (REMOVE Y (INSERT X (CDR L)))) (SORTED (CDR L)) (NOT (EQUAL X Y)) (NOT (LESSP X (CAR L))) (NOT (EQUAL Y (CAR L)))) (EQUAL (INSERT X (CONS (CAR L) (REMOVE Y (CDR L)))) (REMOVE Y (CONS (CAR L) (INSERT X (CDR L)))))), which again simplifies, rewriting with CDR-CONS and CAR-CONS, and opening up the functions INSERT and REMOVE, to: T. Case 3.3. (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (EQUAL (INSERT X (REMOVE Y (CDR L))) (REMOVE Y (INSERT X (CDR L)))) (SORTED (CDR L)) (NOT (EQUAL X Y)) (NOT (LESSP X (CAR L))) (EQUAL Y (CAR L))) (EQUAL (INSERT X (CDR L)) (REMOVE Y (CONS (CAR L) (INSERT X (CDR L)))))). However this again simplifies, rewriting with the lemmas CDR-CONS and CAR-CONS, and unfolding the definition of REMOVE, to: T. Case 3.2. (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (EQUAL (INSERT X (REMOVE Y (CDR L))) (REMOVE Y (INSERT X (CDR L)))) (SORTED (CDR L)) (NOT (EQUAL X Y)) (LESSP X (CAR L)) (NOT (EQUAL Y (CAR L)))) (EQUAL (INSERT X (CONS (CAR L) (REMOVE Y (CDR L)))) (REMOVE Y (CONS X L)))), which again simplifies, applying CAR-CONS and CDR-CONS, and opening up the functions INSERT and REMOVE, to: T. Case 3.1. (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (EQUAL (INSERT X (REMOVE Y (CDR L))) (REMOVE Y (INSERT X (CDR L)))) (SORTED (CDR L)) (NOT (EQUAL X Y)) (LESSP X (CAR L)) (EQUAL Y (CAR L))) (EQUAL (INSERT X (CDR L)) (REMOVE Y (CONS X L)))). This again simplifies, applying CDR-CONS and CAR-CONS, and expanding the function REMOVE, to the new formula: (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (EQUAL (INSERT X (REMOVE (CAR L) (CDR L))) (REMOVE (CAR L) (INSERT X (CDR L)))) (SORTED (CDR L)) (NOT (EQUAL X (CAR L))) (LESSP X (CAR L))) (EQUAL (INSERT X (CDR L)) (CONS X (CDR L)))). Applying the lemma CAR-CDR-ELIM, replace L by (CONS V Z) to eliminate (CDR L) and (CAR L) and Z by (CONS W D) to eliminate (CAR Z) and (CDR Z). This produces: (IMPLIES (AND (NOT (LESSP W V)) (EQUAL (INSERT X (REMOVE V (CONS W D))) (REMOVE V (INSERT X (CONS W D)))) (SORTED (CONS W D)) (NOT (EQUAL X V)) (LESSP X V)) (EQUAL (INSERT X (CONS W D)) (CONS X (CONS W D)))), which further simplifies, rewriting with CDR-CONS, CAR-CONS, and CONS-EQUAL, and expanding the definitions of REMOVE, INSERT, and SORTED, to the following three new goals: Case 3.1.3. (IMPLIES (AND (NOT (LESSP W V)) (NOT (LESSP X W)) (NOT (EQUAL V W)) (EQUAL (INSERT X (CONS W (REMOVE V D))) (REMOVE V (CONS W (INSERT X D)))) (NOT (LISTP D)) (NOT (EQUAL X V)) (LESSP X V)) (EQUAL W X)). However this again simplifies, using linear arithmetic, to: T. Case 3.1.2. (IMPLIES (AND (NOT (LESSP W V)) (NOT (LESSP X W)) (NOT (EQUAL V W)) (EQUAL (INSERT X (CONS W (REMOVE V D))) (REMOVE V (CONS W (INSERT X D)))) (NOT (LESSP (CAR D) W)) (SORTED D) (NOT (EQUAL X V)) (LESSP X V)) (EQUAL W X)), which again simplifies, using linear arithmetic, to: T. Case 3.1.1. (IMPLIES (AND (NOT (LESSP W V)) (NOT (LESSP X W)) (NOT (EQUAL V W)) (EQUAL (INSERT X (CONS W (REMOVE V D))) (REMOVE V (CONS W (INSERT X D)))) (NOT (LESSP (CAR D) W)) (SORTED D) (NOT (EQUAL X V)) (LESSP X V)) (EQUAL (INSERT X D) (CONS W D))), which again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (SORTED L) (NOT (EQUAL X Y))) (EQUAL (INSERT X (REMOVE Y L)) (REMOVE Y (INSERT X L)))), which simplifies, unfolding the functions SORTED, REMOVE, and INSERT, to four new goals: Case 2.4. (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (NOT (EQUAL X Y)) (NOT (LESSP X (CAR L))) (NOT (EQUAL Y (CAR L)))) (EQUAL (INSERT X (CONS (CAR L) (REMOVE Y (CDR L)))) (REMOVE Y (CONS (CAR L) (INSERT X (CDR L)))))), which again simplifies, appealing to the lemmas CDR-CONS, CAR-CONS, and CONS-EQUAL, and expanding the definitions of INSERT and REMOVE, to: (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (NOT (EQUAL X Y)) (NOT (LESSP X (CAR L))) (NOT (EQUAL Y (CAR L)))) (EQUAL (INSERT X (REMOVE Y (CDR L))) (REMOVE Y (INSERT X (CDR L))))). But this further simplifies, applying CDR-CONS and CAR-CONS, and opening up the definitions of REMOVE and INSERT, to: T. Case 2.3. (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (NOT (EQUAL X Y)) (NOT (LESSP X (CAR L))) (EQUAL Y (CAR L))) (EQUAL (INSERT X (CDR L)) (REMOVE Y (CONS (CAR L) (INSERT X (CDR L)))))). However this again simplifies, applying CDR-CONS and CAR-CONS, and expanding the definition of REMOVE, to: T. Case 2.2. (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (NOT (EQUAL X Y)) (LESSP X (CAR L)) (NOT (EQUAL Y (CAR L)))) (EQUAL (INSERT X (CONS (CAR L) (REMOVE Y (CDR L)))) (REMOVE Y (CONS X L)))). However this again simplifies, rewriting with CAR-CONS and CDR-CONS, and expanding INSERT and REMOVE, to: T. Case 2.1. (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (NOT (EQUAL X Y)) (LESSP X (CAR L)) (EQUAL Y (CAR L))) (EQUAL (INSERT X (CDR L)) (REMOVE Y (CONS X L)))). However this again simplifies, rewriting with CDR-CONS and CAR-CONS, and opening up the function REMOVE, to the new goal: (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (NOT (EQUAL X (CAR L))) (LESSP X (CAR L))) (EQUAL (INSERT X (CDR L)) (CONS X (CDR L)))), which further simplifies, opening up INSERT, to: T. Case 1. (IMPLIES (AND (NOT (LISTP L)) (SORTED L) (NOT (EQUAL X Y))) (EQUAL (INSERT X (REMOVE Y L)) (REMOVE Y (INSERT X L)))), which simplifies, rewriting with CDR-CONS and CAR-CONS, and unfolding the definitions of SORTED, REMOVE, and INSERT, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] INSERT-REMOVE (DISABLE INSERT-REMOVE) [ 0.0 0.0 0.0 ] INSERT-REMOVE-OFF (PROVE-LEMMA MEMBER-INSERT (REWRITE) (IMPLIES (MEMBER X L) (MEMBER X (INSERT I L))) ((ENABLE MEMBER INSERT) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Give the conjecture the name *1. Let us appeal to the induction principle. 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 L) (p X I L)) (IMPLIES (AND (NOT (NLISTP L)) (EQUAL X (CAR L))) (p X I L)) (IMPLIES (AND (NOT (NLISTP L)) (NOT (EQUAL X (CAR L))) (p X I (CDR L))) (p X I L))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP 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 four new conjectures: Case 4. (IMPLIES (AND (NLISTP L) (MEMBER X L)) (MEMBER X (INSERT I L))), which simplifies, expanding the functions NLISTP and MEMBER, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP L)) (EQUAL X (CAR L)) (MEMBER X L)) (MEMBER X (INSERT I L))), which simplifies, opening up the functions NLISTP, MEMBER, and INSERT, to two new formulas: Case 3.2. (IMPLIES (AND (LISTP L) (NOT (LESSP I (CAR L)))) (MEMBER (CAR L) (CONS (CAR L) (INSERT I (CDR L))))), which again simplifies, rewriting with the lemma CAR-CONS, and opening up the function MEMBER, to: T. Case 3.1. (IMPLIES (AND (LISTP L) (LESSP I (CAR L))) (MEMBER (CAR L) (CONS I L))), which again simplifies, applying CDR-CONS and CAR-CONS, and unfolding the definition of MEMBER, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP L)) (NOT (EQUAL X (CAR L))) (NOT (MEMBER X (CDR L))) (MEMBER X L)) (MEMBER X (INSERT I L))). This simplifies, expanding NLISTP and MEMBER, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP L)) (NOT (EQUAL X (CAR L))) (MEMBER X (INSERT I (CDR L))) (MEMBER X L)) (MEMBER X (INSERT I L))). This simplifies, expanding the functions NLISTP, MEMBER, and INSERT, to the following two new goals: Case 1.2. (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (MEMBER X (INSERT I (CDR L))) (MEMBER X (CDR L)) (NOT (LESSP I (CAR L)))) (MEMBER X (CONS (CAR L) (INSERT I (CDR L))))). This again simplifies, applying CDR-CONS and CAR-CONS, and expanding MEMBER, to: T. Case 1.1. (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (MEMBER X (INSERT I (CDR L))) (MEMBER X (CDR L)) (LESSP I (CAR L))) (MEMBER X (CONS I L))). This again simplifies, applying CDR-CONS and CAR-CONS, and opening up the definition of MEMBER, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] MEMBER-INSERT (DISABLE MEMBER-INSERT) [ 0.0 0.0 0.0 ] MEMBER-INSERT-OFF (PROVE-LEMMA NOT-MEMBER-INSERT (REWRITE) (IMPLIES (AND (NOT (MEMBER X L)) (NOT (EQUAL I X))) (NOT (MEMBER X (INSERT I L)))) ((ENABLE MEMBER INSERT) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Call the conjecture *1. Let us appeal to the induction principle. There are two plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (NLISTP L) (p X I L)) (IMPLIES (AND (NOT (NLISTP L)) (EQUAL X (CAR L))) (p X I L)) (IMPLIES (AND (NOT (NLISTP L)) (NOT (EQUAL X (CAR L))) (p X I (CDR L))) (p X I 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 induction step of the scheme. The above induction scheme produces four new formulas: Case 4. (IMPLIES (AND (NLISTP L) (NOT (MEMBER X L)) (NOT (EQUAL I X))) (NOT (MEMBER X (INSERT I L)))), which simplifies, applying the lemmas CDR-CONS and CAR-CONS, and opening up NLISTP, MEMBER, and INSERT, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP L)) (EQUAL X (CAR L)) (NOT (MEMBER X L)) (NOT (EQUAL I X))) (NOT (MEMBER X (INSERT I L)))), which simplifies, expanding NLISTP and MEMBER, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP L)) (NOT (EQUAL X (CAR L))) (MEMBER X (CDR L)) (NOT (MEMBER X L)) (NOT (EQUAL I X))) (NOT (MEMBER X (INSERT I L)))), which simplifies, opening up NLISTP and MEMBER, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP L)) (NOT (EQUAL X (CAR L))) (NOT (MEMBER X (INSERT I (CDR L)))) (NOT (MEMBER X L)) (NOT (EQUAL I X))) (NOT (MEMBER X (INSERT I L)))), which simplifies, expanding NLISTP, MEMBER, and INSERT, to two new formulas: Case 1.2. (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (NOT (MEMBER X (INSERT I (CDR L)))) (NOT (MEMBER X (CDR L))) (NOT (EQUAL I X)) (NOT (LESSP I (CAR L)))) (NOT (MEMBER X (CONS (CAR L) (INSERT I (CDR L)))))), which again simplifies, rewriting with the lemmas CDR-CONS and CAR-CONS, and opening up the definition of MEMBER, to: T. Case 1.1. (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (NOT (MEMBER X (INSERT I (CDR L)))) (NOT (MEMBER X (CDR L))) (NOT (EQUAL I X)) (LESSP I (CAR L))) (NOT (MEMBER X (CONS I L)))), which again simplifies, rewriting with the lemmas CDR-CONS and CAR-CONS, and expanding the definition of MEMBER, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] NOT-MEMBER-INSERT (DISABLE NOT-MEMBER-INSERT) [ 0.0 0.0 0.0 ] NOT-MEMBER-INSERT-OFF (PROVE-LEMMA MEMBER-REMOVE1 NIL (IMPLIES (MEMBER X (REMOVE Y L)) (MEMBER X L)) ((ENABLE MEMBER REMOVE) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Give the conjecture the name *1. Let us appeal to the induction principle. 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 (AND (LISTP L) (EQUAL Y (CAR L))) (p X L Y)) (IMPLIES (AND (LISTP L) (NOT (EQUAL Y (CAR L))) (p X (CDR L) Y)) (p X L Y)) (IMPLIES (NOT (LISTP L)) (p X L Y))). Linear arithmetic and the lemma CDR-LESSP 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 four new conjectures: Case 4. (IMPLIES (AND (LISTP L) (EQUAL Y (CAR L)) (MEMBER X (REMOVE Y L))) (MEMBER X L)), which simplifies, expanding the functions REMOVE and MEMBER, to: T. Case 3. (IMPLIES (AND (LISTP L) (NOT (EQUAL Y (CAR L))) (NOT (MEMBER X (REMOVE Y (CDR L)))) (MEMBER X (REMOVE Y L))) (MEMBER X L)), which simplifies, appealing to the lemmas CDR-CONS and CAR-CONS, and expanding REMOVE and MEMBER, to: T. Case 2. (IMPLIES (AND (LISTP L) (NOT (EQUAL Y (CAR L))) (MEMBER X (CDR L)) (MEMBER X (REMOVE Y L))) (MEMBER X L)), which simplifies, rewriting with the lemmas CDR-CONS and CAR-CONS, and opening up the functions REMOVE and MEMBER, to: T. Case 1. (IMPLIES (AND (NOT (LISTP L)) (MEMBER X (REMOVE Y L))) (MEMBER X L)), which simplifies, expanding REMOVE and MEMBER, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] MEMBER-REMOVE1 (PROVE-LEMMA MEMBER-REMOVE2 (REWRITE) (IMPLIES (AND (MEMBER X L) (NOT (EQUAL X Y))) (MEMBER X (REMOVE Y L))) ((ENABLE MEMBER REMOVE) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Give the conjecture the name *1. Let us appeal to the induction principle. 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 (NLISTP L) (p X Y L)) (IMPLIES (AND (NOT (NLISTP L)) (EQUAL X (CAR L))) (p X Y L)) (IMPLIES (AND (NOT (NLISTP L)) (NOT (EQUAL X (CAR L))) (p X Y (CDR L))) (p X Y L))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP can be used to show 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 conjectures: Case 4. (IMPLIES (AND (NLISTP L) (MEMBER X L) (NOT (EQUAL X Y))) (MEMBER X (REMOVE Y L))). This simplifies, opening up the functions NLISTP and MEMBER, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP L)) (EQUAL X (CAR L)) (MEMBER X L) (NOT (EQUAL X Y))) (MEMBER X (REMOVE Y L))). This simplifies, rewriting with CAR-CONS, and opening up the definitions of NLISTP, MEMBER, and REMOVE, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP L)) (NOT (EQUAL X (CAR L))) (NOT (MEMBER X (CDR L))) (MEMBER X L) (NOT (EQUAL X Y))) (MEMBER X (REMOVE Y L))), which simplifies, unfolding the functions NLISTP and MEMBER, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP L)) (NOT (EQUAL X (CAR L))) (MEMBER X (REMOVE Y (CDR L))) (MEMBER X L) (NOT (EQUAL X Y))) (MEMBER X (REMOVE Y L))), which simplifies, unfolding the definitions of NLISTP, MEMBER, and REMOVE, to the goal: (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (MEMBER X (REMOVE Y (CDR L))) (MEMBER X (CDR L)) (NOT (EQUAL X Y)) (NOT (EQUAL Y (CAR L)))) (MEMBER X (CONS (CAR L) (REMOVE Y (CDR L))))). But this again simplifies, rewriting with CDR-CONS and CAR-CONS, and opening up the definition of MEMBER, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] MEMBER-REMOVE2 (DISABLE MEMBER-REMOVE2) [ 0.0 0.0 0.0 ] MEMBER-REMOVE2-OFF (PROVE-LEMMA NOT-MEMBER-REMOVE1 (REWRITE) (IMPLIES (SETP L) (NOT (MEMBER X (REMOVE X L)))) ((ENABLE SETP MEMBER REMOVE) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. We will appeal to 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 (AND (LISTP L) (EQUAL X (CAR L))) (p X L)) (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (p X (CDR L))) (p X L)) (IMPLIES (NOT (LISTP L)) (p X L))). Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT L) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme produces the following four new formulas: Case 4. (IMPLIES (AND (LISTP L) (EQUAL X (CAR L)) (SETP L)) (NOT (MEMBER X (REMOVE X L)))). This simplifies, expanding the definitions of SETP and REMOVE, to: T. Case 3. (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (NOT (SETP (CDR L))) (SETP L)) (NOT (MEMBER X (REMOVE X L)))). This simplifies, expanding the definition of SETP, to: T. Case 2. (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (NOT (MEMBER X (REMOVE X (CDR L)))) (SETP L)) (NOT (MEMBER X (REMOVE X L)))). This simplifies, appealing to the lemmas CDR-CONS and CAR-CONS, and unfolding the functions SETP, REMOVE, and MEMBER, to: T. Case 1. (IMPLIES (AND (NOT (LISTP L)) (SETP L)) (NOT (MEMBER X (REMOVE X L)))). This simplifies, expanding the functions SETP, LISTP, REMOVE, and MEMBER, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] NOT-MEMBER-REMOVE1 (DISABLE NOT-MEMBER-REMOVE1) [ 0.0 0.0 0.0 ] NOT-MEMBER-REMOVE1-OFF (PROVE-LEMMA NOT-MEMBER-REMOVE2 (REWRITE) (IMPLIES (NOT (MEMBER X L)) (NOT (MEMBER X (REMOVE Y L)))) ((ENABLE MEMBER REMOVE) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. Let us appeal to the induction principle. 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 (NLISTP L) (p X Y L)) (IMPLIES (AND (NOT (NLISTP L)) (EQUAL X (CAR L))) (p X Y L)) (IMPLIES (AND (NOT (NLISTP L)) (NOT (EQUAL X (CAR L))) (p X Y (CDR L))) (p X Y L))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP can be used to show that the measure (COUNT L) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme leads to the following four new goals: Case 4. (IMPLIES (AND (NLISTP L) (NOT (MEMBER X L))) (NOT (MEMBER X (REMOVE Y L)))). This simplifies, expanding the definitions of NLISTP, MEMBER, and REMOVE, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP L)) (EQUAL X (CAR L)) (NOT (MEMBER X L))) (NOT (MEMBER X (REMOVE Y L)))). This simplifies, unfolding NLISTP and MEMBER, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP L)) (NOT (EQUAL X (CAR L))) (MEMBER X (CDR L)) (NOT (MEMBER X L))) (NOT (MEMBER X (REMOVE Y L)))). This simplifies, unfolding the definitions of NLISTP and MEMBER, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP L)) (NOT (EQUAL X (CAR L))) (NOT (MEMBER X (REMOVE Y (CDR L)))) (NOT (MEMBER X L))) (NOT (MEMBER X (REMOVE Y L)))). This simplifies, expanding the definitions of NLISTP, MEMBER, and REMOVE, to the new conjecture: (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (NOT (MEMBER X (REMOVE Y (CDR L)))) (NOT (MEMBER X (CDR L))) (NOT (EQUAL Y (CAR L)))) (NOT (MEMBER X (CONS (CAR L) (REMOVE Y (CDR L)))))), which again simplifies, applying the lemmas CDR-CONS and CAR-CONS, and opening up the function MEMBER, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] NOT-MEMBER-REMOVE2 (DISABLE NOT-MEMBER-REMOVE2) [ 0.0 0.0 0.0 ] NOT-MEMBER-REMOVE2-OFF (PROVE-LEMMA NOT-MEMBER-PERMUTATION NIL (IMPLIES (AND (PERMUTATION A B) (NOT (MEMBER X B))) (NOT (MEMBER X A))) ((ENABLE PERMUTATION MEMBER NOT-MEMBER-REMOVE2) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name 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 (AND (LISTP A) (p X (CDR A) (REMOVE (CAR A) B))) (p X A B)) (IMPLIES (NOT (LISTP A)) (p X A B))). Linear arithmetic and the lemma CDR-LESSP 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 leads to the following four new conjectures: Case 4. (IMPLIES (AND (LISTP A) (NOT (PERMUTATION (CDR A) (REMOVE (CAR A) B))) (PERMUTATION A B) (NOT (MEMBER X B))) (NOT (MEMBER X A))). This simplifies, opening up PERMUTATION, to: T. Case 3. (IMPLIES (AND (LISTP A) (MEMBER X (REMOVE (CAR A) B)) (PERMUTATION A B) (NOT (MEMBER X B))) (NOT (MEMBER X A))). This simplifies, rewriting with NOT-MEMBER-REMOVE2, to: T. Case 2. (IMPLIES (AND (LISTP A) (NOT (MEMBER X (CDR A))) (PERMUTATION A B) (NOT (MEMBER X B))) (NOT (MEMBER X A))), which simplifies, opening up the definitions of PERMUTATION and MEMBER, to: (IMPLIES (AND (LISTP A) (NOT (MEMBER X (CDR A))) (MEMBER (CAR A) B) (PERMUTATION (CDR A) (REMOVE (CAR A) B)) (NOT (MEMBER X B))) (NOT (EQUAL X (CAR A)))). This again simplifies, trivially, to: T. Case 1. (IMPLIES (AND (NOT (LISTP A)) (PERMUTATION A B) (NOT (MEMBER X B))) (NOT (MEMBER X A))). This simplifies, unfolding PERMUTATION and MEMBER, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] NOT-MEMBER-PERMUTATION (PROVE-LEMMA MEMBER-PERMUTATION NIL (IMPLIES (AND (PERMUTATION A B) (MEMBER X B)) (MEMBER X A)) ((ENABLE PERMUTATION MEMBER MEMBER-REMOVE2) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 (AND (LISTP A) (p X (CDR A) (REMOVE (CAR A) B))) (p X A B)) (IMPLIES (NOT (LISTP A)) (p X A B))). Linear arithmetic and the lemma CDR-LESSP 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 instance chosen for B. The above induction scheme leads to four new goals: Case 4. (IMPLIES (AND (LISTP A) (NOT (PERMUTATION (CDR A) (REMOVE (CAR A) B))) (PERMUTATION A B) (MEMBER X B)) (MEMBER X A)), which simplifies, opening up the definition of PERMUTATION, to: T. Case 3. (IMPLIES (AND (LISTP A) (NOT (MEMBER X (REMOVE (CAR A) B))) (PERMUTATION A B) (MEMBER X B)) (MEMBER X A)), which simplifies, expanding PERMUTATION and MEMBER, to: (IMPLIES (AND (LISTP A) (NOT (MEMBER X (REMOVE (CAR A) B))) (MEMBER (CAR A) B) (PERMUTATION (CDR A) (REMOVE (CAR A) B)) (MEMBER X B) (NOT (EQUAL X (CAR A)))) (MEMBER X (CDR A))). But this again simplifies, appealing to the lemma MEMBER-REMOVE2, to: T. Case 2. (IMPLIES (AND (LISTP A) (MEMBER X (CDR A)) (PERMUTATION A B) (MEMBER X B)) (MEMBER X A)), which simplifies, opening up the definitions of PERMUTATION and MEMBER, to: T. Case 1. (IMPLIES (AND (NOT (LISTP A)) (PERMUTATION A B) (MEMBER X B)) (MEMBER X A)), which simplifies, expanding the functions PERMUTATION and MEMBER, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] MEMBER-PERMUTATION (PROVE-LEMMA REMOVE-REMOVE (REWRITE) (IMPLIES (NOT (EQUAL X Y)) (EQUAL (REMOVE Y (REMOVE X L)) (REMOVE X (REMOVE Y L)))) ((ENABLE REMOVE) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Give the conjecture the name *1. 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 (AND (LISTP L) (EQUAL X (CAR L))) (p Y X L)) (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (p Y X (CDR L))) (p Y X L)) (IMPLIES (NOT (LISTP L)) (p Y X L))). Linear arithmetic and the lemma CDR-LESSP 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 leads to the following three new conjectures: Case 3. (IMPLIES (AND (LISTP L) (EQUAL X (CAR L)) (NOT (EQUAL X Y))) (EQUAL (REMOVE Y (REMOVE X L)) (REMOVE X (REMOVE Y L)))). This simplifies, appealing to the lemmas CDR-CONS and CAR-CONS, and unfolding REMOVE, to: T. Case 2. (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (EQUAL (REMOVE Y (REMOVE X (CDR L))) (REMOVE X (REMOVE Y (CDR L)))) (NOT (EQUAL X Y))) (EQUAL (REMOVE Y (REMOVE X L)) (REMOVE X (REMOVE Y L)))). This simplifies, applying CDR-CONS and CAR-CONS, and expanding the definition of REMOVE, to the conjecture: (IMPLIES (AND (LISTP L) (NOT (EQUAL X (CAR L))) (EQUAL (REMOVE Y (REMOVE X (CDR L))) (REMOVE X (REMOVE Y (CDR L)))) (NOT (EQUAL X Y)) (NOT (EQUAL Y (CAR L)))) (EQUAL (CONS (CAR L) (REMOVE X (REMOVE Y (CDR L)))) (REMOVE X (CONS (CAR L) (REMOVE Y (CDR L)))))). However this again simplifies, rewriting with CDR-CONS and CAR-CONS, and expanding the definition of REMOVE, to: T. Case 1. (IMPLIES (AND (NOT (LISTP L)) (NOT (EQUAL X Y))) (EQUAL (REMOVE Y (REMOVE X L)) (REMOVE X (REMOVE Y L)))). This simplifies, opening up the function REMOVE, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.1 ] REMOVE-REMOVE (DISABLE REMOVE-REMOVE) [ 0.0 0.0 0.0 ] REMOVE-REMOVE-OFF (PROVE-LEMMA SORTED-INSERT (REWRITE) (IMPLIES (AND (SORTED L) (NOT (MEMBER I L))) (SORTED (INSERT I L))) ((ENABLE SORTED INSERT MEMBER) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Call the conjecture *1. We will try to prove it by induction. There are three plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (LESSP (CADR L) (CAR L))) (p I L)) (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (p I (CDR L))) (p I L)) (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L)))) (p I L)) (IMPLIES (NOT (LISTP L)) (p I L))). Linear arithmetic and the lemma CDR-LESSP inform us 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 six new goals: Case 6. (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (LESSP (CADR L) (CAR L)) (SORTED L) (NOT (MEMBER I L))) (SORTED (INSERT I L))), which simplifies, opening up the function SORTED, to: T. Case 5. (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (NOT (SORTED (CDR L))) (SORTED L) (NOT (MEMBER I L))) (SORTED (INSERT I L))), which simplifies, expanding SORTED, to: T. Case 4. (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (MEMBER I (CDR L)) (SORTED L) (NOT (MEMBER I L))) (SORTED (INSERT I L))), which simplifies, expanding the functions SORTED and MEMBER, to: T. Case 3. (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (SORTED (INSERT I (CDR L))) (SORTED L) (NOT (MEMBER I L))) (SORTED (INSERT I L))), which simplifies, opening up the definitions of SORTED, MEMBER, and INSERT, to two new conjectures: Case 3.2. (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (SORTED (INSERT I (CDR L))) (SORTED (CDR L)) (NOT (EQUAL I (CAR L))) (NOT (MEMBER I (CDR L))) (NOT (LESSP I (CAR L)))) (SORTED (CONS (CAR L) (INSERT I (CDR L))))), which again simplifies, rewriting with CAR-CONS and CDR-CONS, and opening up the function SORTED, to: (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (SORTED (INSERT I (CDR L))) (SORTED (CDR L)) (NOT (EQUAL I (CAR L))) (NOT (MEMBER I (CDR L))) (NOT (LESSP I (CAR L)))) (NOT (LESSP (CAR (INSERT I (CDR L))) (CAR L)))). Applying the lemma CAR-CDR-ELIM, replace L by (CONS Z X) to eliminate (CDR L) and (CAR L) and X by (CONS V W) to eliminate (CAR X) and (CDR X). This produces the new conjecture: (IMPLIES (AND (NOT (LESSP V Z)) (SORTED (INSERT I (CONS V W))) (SORTED (CONS V W)) (NOT (EQUAL I Z)) (NOT (MEMBER I (CONS V W))) (NOT (LESSP I Z))) (NOT (LESSP (CAR (INSERT I (CONS V W))) Z))), which further simplifies, applying CDR-CONS and CAR-CONS, and opening up the functions INSERT, SORTED, and MEMBER, to: T. Case 3.1. (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (SORTED (INSERT I (CDR L))) (SORTED (CDR L)) (NOT (EQUAL I (CAR L))) (NOT (MEMBER I (CDR L))) (LESSP I (CAR L))) (SORTED (CONS I L))). But this again simplifies, applying CAR-CONS and CDR-CONS, and expanding the function SORTED, to: (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (SORTED (INSERT I (CDR L))) (SORTED (CDR L)) (NOT (EQUAL I (CAR L))) (NOT (MEMBER I (CDR L))) (LESSP I (CAR L))) (NOT (LESSP (CAR L) I))), which again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (SORTED L) (NOT (MEMBER I L))) (SORTED (INSERT I L))), which simplifies, expanding the definitions of SORTED, MEMBER, and INSERT, to two new conjectures: Case 2.2. (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (NOT (EQUAL I (CAR L))) (NOT (MEMBER I (CDR L))) (NOT (LESSP I (CAR L)))) (SORTED (CONS (CAR L) (INSERT I (CDR L))))), which again simplifies, applying CAR-CONS and CDR-CONS, and unfolding SORTED, to the following two new formulas: Case 2.2.2. (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (NOT (EQUAL I (CAR L))) (NOT (MEMBER I (CDR L))) (NOT (LESSP I (CAR L)))) (NOT (LESSP (CAR (INSERT I (CDR L))) (CAR L)))). But this further simplifies, applying the lemma CAR-CONS, and unfolding the functions MEMBER and INSERT, to: T. Case 2.2.1. (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (NOT (EQUAL I (CAR L))) (NOT (MEMBER I (CDR L))) (NOT (LESSP I (CAR L)))) (SORTED (INSERT I (CDR L)))), which further simplifies, rewriting with CDR-CONS, and expanding the functions MEMBER, INSERT, and SORTED, to: T. Case 2.1. (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (NOT (EQUAL I (CAR L))) (NOT (MEMBER I (CDR L))) (LESSP I (CAR L))) (SORTED (CONS I L))). But this again simplifies, applying CAR-CONS and CDR-CONS, and expanding the definition of SORTED, to: (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (NOT (EQUAL I (CAR L))) (NOT (MEMBER I (CDR L))) (LESSP I (CAR L))) (NOT (LESSP (CAR L) I))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (LISTP L)) (SORTED L) (NOT (MEMBER I L))) (SORTED (INSERT I L))), which simplifies, applying the lemma CDR-CONS, and opening up the functions SORTED, MEMBER, and INSERT, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.1 ] SORTED-INSERT (DISABLE SORTED-INSERT) [ 0.0 0.0 0.0 ] SORTED-INSERT-OFF (PROVE-LEMMA SORTED-REMOVE (REWRITE) (IMPLIES (SORTED L) (SORTED (REMOVE X L))) ((ENABLE SORTED REMOVE) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Call the conjecture *1. We will try to 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 (AND (LISTP L) (LISTP (CDR L)) (LESSP (CADR L) (CAR L))) (p X L)) (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (p X (CDR L))) (p X L)) (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L)))) (p X L)) (IMPLIES (NOT (LISTP L)) (p X L))). Linear arithmetic and the lemma CDR-LESSP 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 five new formulas: Case 5. (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (LESSP (CADR L) (CAR L)) (SORTED L)) (SORTED (REMOVE X L))). This simplifies, expanding the definition of SORTED, to: T. Case 4. (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (NOT (SORTED (CDR L))) (SORTED L)) (SORTED (REMOVE X L))). This simplifies, opening up the function SORTED, to: T. Case 3. (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (SORTED (REMOVE X (CDR L))) (SORTED L)) (SORTED (REMOVE X L))). This simplifies, opening up the definitions of SORTED and REMOVE, to: (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (SORTED (REMOVE X (CDR L))) (SORTED (CDR L)) (NOT (EQUAL X (CAR L)))) (SORTED (CONS (CAR L) (REMOVE X (CDR L))))), which again simplifies, applying CAR-CONS and CDR-CONS, and unfolding the definition of SORTED, to: (IMPLIES (AND (LISTP L) (LISTP (CDR L)) (NOT (LESSP (CADR L) (CAR L))) (SORTED (REMOVE X (CDR L))) (SORTED (CDR L)) (NOT (EQUAL X (CAR L))) (LISTP (REMOVE X (CDR L)))) (NOT (LESSP (CAR (REMOVE X (CDR L))) (CAR L)))). Applying the lemma CAR-CDR-ELIM, replace L by (CONS V Z) to eliminate (CDR L) and (CAR L) and Z by (CONS W D) to eliminate (CAR Z) and (CDR Z). We thus obtain: (IMPLIES (AND (NOT (LESSP W V)) (SORTED (REMOVE X (CONS W D))) (SORTED (CONS W D)) (NOT (EQUAL X V)) (LISTP (REMOVE X (CONS W D)))) (NOT (LESSP (CAR (REMOVE X (CONS W D))) V))), which further simplifies, applying the lemmas CDR-CONS and CAR-CONS, and expanding the definitions of REMOVE and SORTED, to: (IMPLIES (AND (NOT (LESSP W V)) (EQUAL X W) (SORTED D) (NOT (LESSP (CAR D) W)) (NOT (EQUAL W V)) (LISTP D)) (NOT (LESSP (CAR D) V))). This again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (SORTED L)) (SORTED (REMOVE X L))), which simplifies, opening up the functions SORTED and REMOVE, to two new formulas: Case 2.2. (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (NOT (EQUAL X (CAR L)))) (SORTED (CONS (CAR L) (REMOVE X (CDR L))))), which again simplifies, rewriting with CAR-CONS and CDR-CONS, and opening up the definition of SORTED, to the following two new formulas: Case 2.2.2. (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (NOT (EQUAL X (CAR L))) (LISTP (REMOVE X (CDR L)))) (SORTED (REMOVE X (CDR L)))). This further simplifies, expanding REMOVE, to: T. Case 2.2.1. (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (NOT (EQUAL X (CAR L))) (LISTP (REMOVE X (CDR L)))) (NOT (LESSP (CAR (REMOVE X (CDR L))) (CAR L)))), which further simplifies, expanding the definition of REMOVE, to: T. Case 2.1. (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L))) (EQUAL X (CAR L))) (SORTED (CDR L))), which again simplifies, clearly, to the new goal: (IMPLIES (AND (LISTP L) (NOT (LISTP (CDR L)))) (SORTED (CDR L))), which further simplifies, opening up the definition of SORTED, to: T. Case 1. (IMPLIES (AND (NOT (LISTP L)) (SORTED L)) (SORTED (REMOVE X L))), which simplifies, opening up the functions SORTED and REMOVE, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] SORTED-REMOVE (DISABLE SORTED-REMOVE) [ 0.0 0.0 0.0 ] SORTED-REMOVE-OFF (PROVE-LEMMA NOT-PERMUTATION (REWRITE) (IMPLIES (AND (LISTP B) (NOT (MEMBER (CAR B) A))) (NOT (PERMUTATION A B))) ((ENABLE PERMUTATION MEMBER REMOVE) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) . Appealing to the lemma CAR-CDR-ELIM, we now replace B by (CONS X Z) to eliminate (CAR B) and (CDR B). We must thus prove: (IMPLIES (NOT (MEMBER X A)) (NOT (PERMUTATION A (CONS X 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: (IMPLIES (AND (LISTP B) (NOT (MEMBER (CAR B) A))) (NOT (PERMUTATION A B))), which we named *1 above. We will appeal to induction. There are two plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (NLISTP A) (p A B)) (IMPLIES (AND (NOT (NLISTP A)) (EQUAL (CAR B) (CAR A))) (p A B)) (IMPLIES (AND (NOT (NLISTP A)) (NOT (EQUAL (CAR B) (CAR A))) (p (CDR A) (REMOVE (CAR A) B))) (p A B))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP 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 five new goals: Case 5. (IMPLIES (AND (NLISTP A) (LISTP B) (NOT (MEMBER (CAR B) A))) (NOT (PERMUTATION A B))). This simplifies, expanding the definitions of NLISTP, MEMBER, and PERMUTATION, to: T. Case 4. (IMPLIES (AND (NOT (NLISTP A)) (EQUAL (CAR B) (CAR A)) (LISTP B) (NOT (MEMBER (CAR B) A))) (NOT (PERMUTATION A B))). This simplifies, opening up the definitions of NLISTP and MEMBER, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP A)) (NOT (EQUAL (CAR B) (CAR A))) (NOT (LISTP (REMOVE (CAR A) B))) (LISTP B) (NOT (MEMBER (CAR B) A))) (NOT (PERMUTATION A B))). This simplifies, expanding the functions NLISTP, MEMBER, and PERMUTATION, to the new formula: (IMPLIES (AND (LISTP A) (NOT (EQUAL (CAR B) (CAR A))) (NOT (LISTP (REMOVE (CAR A) B))) (LISTP B) (NOT (MEMBER (CAR B) (CDR A))) (MEMBER (CAR A) B)) (NOT (PERMUTATION (CDR A) (REMOVE (CAR A) B)))), which further simplifies, unfolding the functions MEMBER and PERMUTATION, to: (IMPLIES (AND (LISTP A) (NOT (EQUAL (CAR B) (CAR A))) (NOT (LISTP (REMOVE (CAR A) B))) (LISTP B) (NOT (MEMBER (CAR B) (CDR A))) (MEMBER (CAR A) B)) (LISTP (CDR A))). However this again simplifies, expanding the definition of MEMBER, to: (IMPLIES (AND (LISTP A) (NOT (EQUAL (CAR B) (CAR A))) (NOT (LISTP (REMOVE (CAR A) B))) (LISTP B) (MEMBER (CAR A) B)) (LISTP (CDR A))). Appealing to the lemma CAR-CDR-ELIM, we now replace B by (CONS X Z) to eliminate (CAR B) and (CDR B). The result is: (IMPLIES (AND (LISTP A) (NOT (EQUAL X (CAR A))) (NOT (LISTP (REMOVE (CAR A) (CONS X Z)))) (MEMBER (CAR A) (CONS X Z))) (LISTP (CDR A))). This further simplifies, applying CDR-CONS and CAR-CONS, and opening up the function REMOVE, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP A)) (NOT (EQUAL (CAR B) (CAR A))) (MEMBER (CAR (REMOVE (CAR A) B)) (CDR A)) (LISTP B) (NOT (MEMBER (CAR B) A))) (NOT (PERMUTATION A B))). This simplifies, expanding the functions NLISTP, MEMBER, and PERMUTATION, to: (IMPLIES (AND (LISTP A) (NOT (EQUAL (CAR B) (CAR A))) (MEMBER (CAR (REMOVE (CAR A) B)) (CDR A)) (LISTP B) (NOT (MEMBER (CAR B) (CDR A))) (MEMBER (CAR A) B)) (NOT (PERMUTATION (CDR A) (REMOVE (CAR A) B)))). Applying the lemma CAR-CDR-ELIM, replace B by (CONS X Z) to eliminate (CAR B) and (CDR B). We thus obtain the new goal: (IMPLIES (AND (LISTP A) (NOT (EQUAL X (CAR A))) (MEMBER (CAR (REMOVE (CAR A) (CONS X Z))) (CDR A)) (NOT (MEMBER X (CDR A))) (MEMBER (CAR A) (CONS X Z))) (NOT (PERMUTATION (CDR A) (REMOVE (CAR A) (CONS X Z))))), which further simplifies, applying CDR-CONS and CAR-CONS, and expanding REMOVE, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP A)) (NOT (EQUAL (CAR B) (CAR A))) (NOT (PERMUTATION (CDR A) (REMOVE (CAR A) B))) (LISTP B) (NOT (MEMBER (CAR B) A))) (NOT (PERMUTATION A B))). This simplifies, unfolding NLISTP, MEMBER, and PERMUTATION, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] NOT-PERMUTATION (DISABLE NOT-PERMUTATION) [ 0.0 0.0 0.0 ] NOT-PERMUTATION-OFF (PROVE-LEMMA PERMUTATION-RIGHT-CONS1 (REWRITE) (IMPLIES (AND (LISTP B) (MEMBER (CAR B) A)) (EQUAL (PERMUTATION A B) (PERMUTATION (REMOVE (CAR B) A) (CDR B)))) ((ENABLE PERMUTATION MEMBER REMOVE) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) . Applying the lemma CAR-CDR-ELIM, replace B by (CONS X Z) to eliminate (CAR B) and (CDR B). We would thus like to prove the new conjecture: (IMPLIES (MEMBER X A) (EQUAL (PERMUTATION A (CONS X Z)) (PERMUTATION (REMOVE X A) Z))), 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 (LISTP B) (MEMBER (CAR B) A)) (EQUAL (PERMUTATION A B) (PERMUTATION (REMOVE (CAR B) A) (CDR B)))), named *1. Let us appeal to the induction principle. There are three plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (NLISTP A) (p A B)) (IMPLIES (AND (NOT (NLISTP A)) (EQUAL (CAR B) (CAR A))) (p A B)) (IMPLIES (AND (NOT (NLISTP A)) (NOT (EQUAL (CAR B) (CAR A))) (p (CDR A) (REMOVE (CAR A) B))) (p A B))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP 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 leads to the following five new conjectures: Case 5. (IMPLIES (AND (NLISTP A) (LISTP B) (MEMBER (CAR B) A)) (EQUAL (PERMUTATION A B) (PERMUTATION (REMOVE (CAR B) A) (CDR B)))). This simplifies, opening up the functions NLISTP and MEMBER, to: T. Case 4. (IMPLIES (AND (NOT (NLISTP A)) (EQUAL (CAR B) (CAR A)) (LISTP B) (MEMBER (CAR B) A)) (EQUAL (PERMUTATION A B) (PERMUTATION (REMOVE (CAR B) A) (CDR B)))). This simplifies, opening up the functions NLISTP, MEMBER, PERMUTATION, and REMOVE, to: (IMPLIES (AND (LISTP A) (EQUAL (CAR B) (CAR A)) (LISTP B)) (EQUAL (PERMUTATION (CDR A) (REMOVE (CAR A) B)) (PERMUTATION (CDR A) (CDR B)))), which further simplifies, opening up the function REMOVE, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP A)) (NOT (EQUAL (CAR B) (CAR A))) (NOT (LISTP (REMOVE (CAR A) B))) (LISTP B) (MEMBER (CAR B) A)) (EQUAL (PERMUTATION A B) (PERMUTATION (REMOVE (CAR B) A) (CDR B)))), which simplifies, unfolding the functions NLISTP and REMOVE, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP A)) (NOT (EQUAL (CAR B) (CAR A))) (NOT (MEMBER (CAR (REMOVE (CAR A) B)) (CDR A))) (LISTP B) (MEMBER (CAR B) A)) (EQUAL (PERMUTATION A B) (PERMUTATION (REMOVE (CAR B) A) (CDR B)))), which simplifies, applying CDR-CONS and CAR-CONS, and expanding the definitions of NLISTP, MEMBER, PERMUTATION, and REMOVE, to the new conjecture: (IMPLIES (AND (LISTP A) (NOT (EQUAL (CAR B) (CAR A))) (NOT (MEMBER (CAR (REMOVE (CAR A) B)) (CDR A))) (LISTP B) (MEMBER (CAR B) (CDR A)) (MEMBER (CAR A) (CDR B))) (EQUAL (PERMUTATION (CDR A) (REMOVE (CAR A) B)) (PERMUTATION (REMOVE (CAR B) (CDR A)) (REMOVE (CAR A) (CDR B))))), which further simplifies, rewriting with CAR-CONS, and expanding the function REMOVE, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP A)) (NOT (EQUAL (CAR B) (CAR A))) (EQUAL (PERMUTATION (CDR A) (REMOVE (CAR A) B)) (PERMUTATION (REMOVE (CAR (REMOVE (CAR A) B)) (CDR A)) (CDR (REMOVE (CAR A) B)))) (LISTP B) (MEMBER (CAR B) A)) (EQUAL (PERMUTATION A B) (PERMUTATION (REMOVE (CAR B) A) (CDR B)))). This simplifies, applying CDR-CONS and CAR-CONS, and expanding NLISTP, REMOVE, MEMBER, and PERMUTATION, to: (IMPLIES (AND (LISTP A) (NOT (EQUAL (CAR B) (CAR A))) (EQUAL (PERMUTATION (CDR A) (REMOVE (CAR A) B)) (PERMUTATION (REMOVE (CAR (REMOVE (CAR A) B)) (CDR A)) (REMOVE (CAR A) (CDR B)))) (LISTP B) (MEMBER (CAR B) (CDR A)) (MEMBER (CAR A) (CDR B))) (EQUAL (PERMUTATION (CDR A) (REMOVE (CAR A) B)) (PERMUTATION (REMOVE (CAR B) (CDR A)) (REMOVE (CAR A) (CDR B))))). This further simplifies, rewriting with CAR-CONS, and expanding the definition of REMOVE, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] PERMUTATION-RIGHT-CONS1 (DISABLE PERMUTATION-RIGHT-CONS1) [ 0.0 0.0 0.0 ] PERMUTATION-RIGHT-CONS1-OFF (PROVE-LEMMA PERMUTATION-RIGHT-CONS (REWRITE) (EQUAL (PERMUTATION A (CONS X B)) (IF (MEMBER X A) (PERMUTATION (REMOVE X A) B) '*1*FALSE)) ((ENABLE NOT-PERMUTATION PERMUTATION-RIGHT-CONS1) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, trivially, to the following two new goals: Case 2. (IMPLIES (NOT (MEMBER X A)) (EQUAL (PERMUTATION A (CONS X B)) F)). But this again simplifies, rewriting with CAR-CONS and NOT-PERMUTATION, and unfolding the function EQUAL, to: T. Case 1. (IMPLIES (MEMBER X A) (EQUAL (PERMUTATION A (CONS X B)) (PERMUTATION (REMOVE X A) B))). But this again simplifies, applying CAR-CONS, CDR-CONS, and PERMUTATION-RIGHT-CONS1, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PERMUTATION-RIGHT-CONS (DISABLE PERMUTATION-RIGHT-CONS) [ 0.0 0.0 0.0 ] PERMUTATION-RIGHT-CONS-OFF (PROVE-LEMMA COMMUTATIVITY-OF-PERMUTATION (REWRITE) (EQUAL (PERMUTATION B A) (PERMUTATION A B)) ((ENABLE PERMUTATION PERMUTATION-RIGHT-CONS) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Give the conjecture the name *1. We will appeal to induction. Two inductions are suggested by terms in the conjecture, 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 (AND (LISTP B) (p (CDR B) (REMOVE (CAR B) A))) (p B A)) (IMPLIES (NOT (LISTP B)) (p B A))). Linear arithmetic and the lemma CDR-LESSP 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 produces the following two new conjectures: Case 2. (IMPLIES (AND (LISTP B) (EQUAL (PERMUTATION (CDR B) (REMOVE (CAR B) A)) (PERMUTATION (REMOVE (CAR B) A) (CDR B)))) (EQUAL (PERMUTATION B A) (PERMUTATION A B))). This simplifies, expanding the function PERMUTATION, to the following two new conjectures: Case 2.2. (IMPLIES (AND (LISTP B) (EQUAL (PERMUTATION (CDR B) (REMOVE (CAR B) A)) (PERMUTATION (REMOVE (CAR B) A) (CDR B))) (NOT (MEMBER (CAR B) A))) (EQUAL F (PERMUTATION A B))). This again simplifies, obviously, to: (IMPLIES (AND (LISTP B) (EQUAL (PERMUTATION (CDR B) (REMOVE (CAR B) A)) (PERMUTATION (REMOVE (CAR B) A) (CDR B))) (NOT (MEMBER (CAR B) A))) (NOT (PERMUTATION A B))). Applying the lemma CAR-CDR-ELIM, replace B by (CONS Z X) to eliminate (CDR B) and (CAR B). We would thus like to prove: (IMPLIES (AND (EQUAL (PERMUTATION X (REMOVE Z A)) (PERMUTATION (REMOVE Z A) X)) (NOT (MEMBER Z A))) (NOT (PERMUTATION A (CONS Z X)))), which further simplifies, rewriting with PERMUTATION-RIGHT-CONS, to: T. Case 2.1. (IMPLIES (AND (LISTP B) (EQUAL (PERMUTATION (CDR B) (REMOVE (CAR B) A)) (PERMUTATION (REMOVE (CAR B) A) (CDR B))) (MEMBER (CAR B) A)) (EQUAL (PERMUTATION (CDR B) (REMOVE (CAR B) A)) (PERMUTATION A B))). Appealing to the lemma CAR-CDR-ELIM, we now replace B by (CONS Z X) to eliminate (CDR B) and (CAR B). The result is: (IMPLIES (AND (EQUAL (PERMUTATION X (REMOVE Z A)) (PERMUTATION (REMOVE Z A) X)) (MEMBER Z A)) (EQUAL (PERMUTATION X (REMOVE Z A)) (PERMUTATION A (CONS Z X)))). However this further simplifies, rewriting with PERMUTATION-RIGHT-CONS, to: T. Case 1. (IMPLIES (NOT (LISTP B)) (EQUAL (PERMUTATION B A) (PERMUTATION A B))). This simplifies, expanding the functions PERMUTATION and MEMBER, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] COMMUTATIVITY-OF-PERMUTATION (DISABLE COMMUTATIVITY-OF-PERMUTATION) [ 0.0 0.0 0.0 ] COMMUTATIVITY-OF-PERMUTATION-OFF (PROVE-LEMMA MEMBER-PERMUTATION2 NIL (IMPLIES (AND (PERMUTATION B A) (MEMBER X B)) (MEMBER X A)) ((USE (COMMUTATIVITY-OF-PERMUTATION (A A) (B B)) (MEMBER-PERMUTATION (X X) (A A) (B B))) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, unfolding the functions AND and IMPLIES, to: T. Q.E.D. [ 0.0 0.0 0.0 ] MEMBER-PERMUTATION2 (PROVE-LEMMA PERMUTATION-REFLEXIVITY (REWRITE) (PERMUTATION L L) ((ENABLE PERMUTATION REMOVE) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Give the conjecture the name *1. Perhaps we can prove it by induction. There is only one plausible induction. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP L) (p (CDR L))) (p L)) (IMPLIES (NOT (LISTP L)) (p L))). Linear arithmetic and the lemma CDR-LESSP inform us 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 two new formulas: Case 2. (IMPLIES (AND (LISTP L) (PERMUTATION (CDR L) (CDR L))) (PERMUTATION L L)). This simplifies, expanding the functions PERMUTATION, MEMBER, and REMOVE, to: T. Case 1. (IMPLIES (NOT (LISTP L)) (PERMUTATION L L)). This simplifies, opening up the function PERMUTATION, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PERMUTATION-REFLEXIVITY (DISABLE PERMUTATION-REFLEXIVITY) [ 0.0 0.0 0.0 ] PERMUTATION-REFLEXIVITY-OFF (PROVE-LEMMA PERMUTATION-APPEND-CAR (REWRITE) (PERMUTATION (APPEND L (CONS X 'NIL)) (CONS X L)) ((ENABLE PERMUTATION APPEND REMOVE MEMBER) (INDUCT (LENGTH L)) (EXPAND (APPEND L (LIST X))) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations NOT, OR, and AND, to two new formulas: Case 2. (IMPLIES (AND (LISTP L) (PERMUTATION (APPEND (CDR L) (LIST X)) (CONS X (CDR L)))) (PERMUTATION (APPEND L (LIST X)) (CONS X L))), which simplifies, appealing to the lemmas CDR-CONS and CAR-CONS, and unfolding the definitions of APPEND, REMOVE, MEMBER, and PERMUTATION, to the formula: (IMPLIES (AND (LISTP L) (PERMUTATION (APPEND (CDR L) (LIST X)) (CONS X (CDR L))) (EQUAL (CAR L) X)) (PERMUTATION (APPEND (CDR L) (LIST X)) L)). This again simplifies, rewriting with CONS-CAR-CDR, to: T. Case 1. (IMPLIES (NOT (LISTP L)) (PERMUTATION (APPEND L (LIST X)) (CONS X L))). This simplifies, applying the lemmas CDR-CONS and CAR-CONS, and unfolding APPEND, REMOVE, MEMBER, PERMUTATION, and LISTP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PERMUTATION-APPEND-CAR (DISABLE PERMUTATION-APPEND-CAR) [ 0.0 0.0 0.0 ] PERMUTATION-APPEND-CAR-OFF (PROVE-LEMMA PERMUTATION-APPEND-INSERT (REWRITE) (IMPLIES (AND (PERMUTATION A B) (AND (SORTED B) (AND (NOT (MEMBER X A)) (NOT (MEMBER X B))))) (PERMUTATION (APPEND A (CONS X 'NIL)) (INSERT X B))) ((ENABLE APPEND INSERT PERMUTATION SORTED INSERT-REMOVE MEMBER-INSERT NOT-LISTP-REMOVE NOT-MEMBER-REMOVE2 SORTED-REMOVE) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. We will appeal to induction. There are six 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 A) (p (CDR A) X (REMOVE (CAR A) B))) (p A X B)) (IMPLIES (NOT (LISTP A)) (p A X B))). Linear arithmetic and the lemma CDR-LESSP 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 six new conjectures: Case 6. (IMPLIES (AND (LISTP A) (NOT (PERMUTATION (CDR A) (REMOVE (CAR A) B))) (PERMUTATION A B) (SORTED B) (NOT (MEMBER X A)) (NOT (MEMBER X B))) (PERMUTATION (APPEND A (LIST X)) (INSERT X B))), which simplifies, opening up the function PERMUTATION, to: T. Case 5. (IMPLIES (AND (LISTP A) (NOT (SORTED (REMOVE (CAR A) B))) (PERMUTATION A B) (SORTED B) (NOT (MEMBER X A)) (NOT (MEMBER X B))) (PERMUTATION (APPEND A (LIST X)) (INSERT X B))), which simplifies, applying the lemma SORTED-REMOVE, to: T. Case 4. (IMPLIES (AND (LISTP A) (MEMBER X (CDR A)) (PERMUTATION A B) (SORTED B) (NOT (MEMBER X A)) (NOT (MEMBER X B))) (PERMUTATION (APPEND A (LIST X)) (INSERT X B))), which simplifies, expanding the functions PERMUTATION and MEMBER, to: T. Case 3. (IMPLIES (AND (LISTP A) (MEMBER X (REMOVE (CAR A) B)) (PERMUTATION A B) (SORTED B) (NOT (MEMBER X A)) (NOT (MEMBER X B))) (PERMUTATION (APPEND A (LIST X)) (INSERT X B))), which simplifies, applying the lemma NOT-MEMBER-REMOVE2, to: T. Case 2. (IMPLIES (AND (LISTP A) (PERMUTATION (APPEND (CDR A) (LIST X)) (INSERT X (REMOVE (CAR A) B))) (PERMUTATION A B) (SORTED B) (NOT (MEMBER X A)) (NOT (MEMBER X B))) (PERMUTATION (APPEND A (LIST X)) (INSERT X B))), which simplifies, applying CDR-CONS, MEMBER-INSERT, and CAR-CONS, and opening up the definitions of PERMUTATION, MEMBER, and APPEND, to the new formula: (IMPLIES (AND (LISTP A) (PERMUTATION (APPEND (CDR A) (LIST X)) (INSERT X (REMOVE (CAR A) B))) (MEMBER (CAR A) B) (PERMUTATION (CDR A) (REMOVE (CAR A) B)) (SORTED B) (NOT (EQUAL X (CAR A))) (NOT (MEMBER X (CDR A))) (NOT (MEMBER X B))) (PERMUTATION (APPEND (CDR A) (LIST X)) (REMOVE (CAR A) (INSERT X B)))), which again simplifies, applying the lemma INSERT-REMOVE, to: T. Case 1. (IMPLIES (AND (NOT (LISTP A)) (PERMUTATION A B) (SORTED B) (NOT (MEMBER X A)) (NOT (MEMBER X B))) (PERMUTATION (APPEND A (LIST X)) (INSERT X B))), which simplifies, rewriting with CDR-CONS, CAR-CONS, and NOT-LISTP-REMOVE, and unfolding the definitions of PERMUTATION, SORTED, MEMBER, APPEND, INSERT, and LISTP, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PERMUTATION-APPEND-INSERT (DISABLE PERMUTATION-APPEND-INSERT) [ 0.0 0.0 0.0 ] PERMUTATION-APPEND-INSERT-OFF (PROVE-LEMMA PERMUTATION-REMOVE-REMOVE (REWRITE) (IMPLIES (AND (PERMUTATION A B) (AND (MEMBER X A) (MEMBER X B))) (PERMUTATION (REMOVE X A) (REMOVE X B))) ((ENABLE PERMUTATION MEMBER REMOVE MEMBER-REMOVE2 REMOVE-REMOVE) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. 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 (AND (LISTP A) (p X (CDR A) (REMOVE (CAR A) B))) (p X A B)) (IMPLIES (NOT (LISTP A)) (p X A B))). Linear arithmetic and the lemma CDR-LESSP establish 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 leads to the following five new formulas: Case 5. (IMPLIES (AND (LISTP A) (NOT (PERMUTATION (CDR A) (REMOVE (CAR A) B))) (PERMUTATION A B) (MEMBER X A) (MEMBER X B)) (PERMUTATION (REMOVE X A) (REMOVE X B))). This simplifies, opening up the definition of PERMUTATION, to: T. Case 4. (IMPLIES (AND (LISTP A) (NOT (MEMBER X (CDR A))) (PERMUTATION A B) (MEMBER X A) (MEMBER X B)) (PERMUTATION (REMOVE X A) (REMOVE X B))). This simplifies, expanding PERMUTATION, MEMBER, and REMOVE, to: (IMPLIES (AND (LISTP A) (NOT (MEMBER X (CDR A))) (MEMBER (CAR A) B) (PERMUTATION (CDR A) (REMOVE (CAR A) B)) (EQUAL X (CAR A)) (MEMBER X B)) (PERMUTATION (CDR A) (REMOVE X B))), which again simplifies, obviously, to: T. Case 3. (IMPLIES (AND (LISTP A) (NOT (MEMBER X (REMOVE (CAR A) B))) (PERMUTATION A B) (MEMBER X A) (MEMBER X B)) (PERMUTATION (REMOVE X A) (REMOVE X B))). This simplifies, unfolding the functions PERMUTATION, MEMBER, and REMOVE, to the following three new goals: Case 3.3. (IMPLIES (AND (LISTP A) (NOT (MEMBER X (REMOVE (CAR A) B))) (MEMBER (CAR A) B) (PERMUTATION (CDR A) (REMOVE (CAR A) B)) (EQUAL X (CAR A)) (MEMBER X B)) (PERMUTATION (CDR A) (REMOVE X B))). This again simplifies, obviously, to: T. Case 3.2. (IMPLIES (AND (LISTP A) (NOT (MEMBER X (REMOVE (CAR A) B))) (MEMBER (CAR A) B) (PERMUTATION (CDR A) (REMOVE (CAR A) B)) (MEMBER X (CDR A)) (MEMBER X B) (NOT (EQUAL X (CAR A)))) (PERMUTATION (CONS (CAR A) (REMOVE X (CDR A))) (REMOVE X B))). This again simplifies, applying MEMBER-REMOVE2, to: T. Case 3.1. (IMPLIES (AND (LISTP A) (NOT (MEMBER X (REMOVE (CAR A) B))) (MEMBER (CAR A) B) (PERMUTATION (CDR A) (REMOVE (CAR A) B)) (MEMBER X (CDR A)) (MEMBER X B) (EQUAL X (CAR A))) (PERMUTATION (CDR A) (REMOVE X B))). This again simplifies, obviously, to: T. Case 2. (IMPLIES (AND (LISTP A) (PERMUTATION (REMOVE X (CDR A)) (REMOVE X (REMOVE (CAR A) B))) (PERMUTATION A B) (MEMBER X A) (MEMBER X B)) (PERMUTATION (REMOVE X A) (REMOVE X B))). This simplifies, unfolding PERMUTATION, MEMBER, and REMOVE, to the following three new conjectures: Case 2.3. (IMPLIES (AND (LISTP A) (PERMUTATION (REMOVE X (CDR A)) (REMOVE X (REMOVE (CAR A) B))) (MEMBER (CAR A) B) (PERMUTATION (CDR A) (REMOVE (CAR A) B)) (EQUAL X (CAR A)) (MEMBER X B)) (PERMUTATION (CDR A) (REMOVE X B))). This again simplifies, trivially, to: T. Case 2.2. (IMPLIES (AND (LISTP A) (PERMUTATION (REMOVE X (CDR A)) (REMOVE X (REMOVE (CAR A) B))) (MEMBER (CAR A) B) (PERMUTATION (CDR A) (REMOVE (CAR A) B)) (MEMBER X (CDR A)) (MEMBER X B) (NOT (EQUAL X (CAR A)))) (PERMUTATION (CONS (CAR A) (REMOVE X (CDR A))) (REMOVE X B))). This again simplifies, appealing to the lemmas REMOVE-REMOVE, CDR-CONS, MEMBER-REMOVE2, and CAR-CONS, and unfolding the definition of PERMUTATION, to: T. Case 2.1. (IMPLIES (AND (LISTP A) (PERMUTATION (REMOVE X (CDR A)) (REMOVE X (REMOVE (CAR A) B))) (MEMBER (CAR A) B) (PERMUTATION (CDR A) (REMOVE (CAR A) B)) (MEMBER X (CDR A)) (MEMBER X B) (EQUAL X (CAR A))) (PERMUTATION (CDR A) (REMOVE X B))), which again simplifies, obviously, to: T. Case 1. (IMPLIES (AND (NOT (LISTP A)) (PERMUTATION A B) (MEMBER X A) (MEMBER X B)) (PERMUTATION (REMOVE X A) (REMOVE X B))). This simplifies, opening up the definitions of PERMUTATION and MEMBER, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.1 ] PERMUTATION-REMOVE-REMOVE (DISABLE PERMUTATION-REMOVE-REMOVE) [ 0.0 0.0 0.0 ] PERMUTATION-REMOVE-REMOVE-OFF (DEFN TRANSITIVITY-OF-PERMUTATION-INDUCTION (A B C) (IF (LISTP A) (TRANSITIVITY-OF-PERMUTATION-INDUCTION (CDR A) (REMOVE (CAR A) B) (REMOVE (CAR A) C)) '0) NIL) Linear arithmetic and the lemma CDR-LESSP can be used to show that the measure (COUNT A) decreases according to the well-founded relation LESSP in each recursive call. Hence, TRANSITIVITY-OF-PERMUTATION-INDUCTION is accepted under the definitional principle. Observe that: (NUMBERP (TRANSITIVITY-OF-PERMUTATION-INDUCTION A B C)) is a theorem. [ 0.0 0.0 0.0 ] TRANSITIVITY-OF-PERMUTATION-INDUCTION (PROVE-LEMMA TRANSITIVITY-OF-PERMUTATION-BASE-CASE NIL (IMPLIES (AND (NLISTP A) (AND (PERMUTATION A B) (PERMUTATION B C))) (PERMUTATION A C)) ((EXPAND (PERMUTATION A B) (PERMUTATION B C) (PERMUTATION A C)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations NLISTP, AND, and IMPLIES, to: (IMPLIES (AND (NOT (LISTP A)) (PERMUTATION A B) (PERMUTATION B C)) (PERMUTATION A C)). This simplifies, expanding the definition of PERMUTATION, to: T. Q.E.D. [ 0.0 0.0 0.0 ] TRANSITIVITY-OF-PERMUTATION-BASE-CASE (PROVE-LEMMA TRANSITIVITY-OF-PERMUTATION-INDUCTION-STEP NIL (IMPLIES (AND (LISTP A) (AND (IMPLIES (AND (PERMUTATION (CDR A) (REMOVE (CAR A) B)) (PERMUTATION (REMOVE (CAR A) B) (REMOVE (CAR A) C))) (PERMUTATION (CDR A) (REMOVE (CAR A) C))) (AND (PERMUTATION A B) (PERMUTATION B C)))) (PERMUTATION A C)) ((EXPAND (PERMUTATION A B) (PERMUTATION A C)) (USE (MEMBER-PERMUTATION2 (X (CAR A)) (B B) (A C))) (ENABLE PERMUTATION-REMOVE-REMOVE) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, unfolding AND, IMPLIES, and PERMUTATION, to: (IMPLIES (AND (MEMBER (CAR A) C) (LISTP A) (NOT (PERMUTATION (REMOVE (CAR A) B) (REMOVE (CAR A) C))) (MEMBER (CAR A) B) (PERMUTATION (CDR A) (REMOVE (CAR A) B)) (PERMUTATION B C)) (PERMUTATION (CDR A) (REMOVE (CAR A) C))), which again simplifies, rewriting with the lemma PERMUTATION-REMOVE-REMOVE, to: T. Q.E.D. [ 0.0 0.0 0.0 ] TRANSITIVITY-OF-PERMUTATION-INDUCTION-STEP (PROVE-LEMMA TRANSITIVITY-OF-PERMUTATION NIL (IMPLIES (AND (PERMUTATION A B) (PERMUTATION B C)) (PERMUTATION A C)) ((INDUCT (TRANSITIVITY-OF-PERMUTATION-INDUCTION A B C)) (USE (TRANSITIVITY-OF-PERMUTATION-BASE-CASE (A A) (B B) (C C)) (TRANSITIVITY-OF-PERMUTATION-INDUCTION-STEP (A A) (B B) (C C))) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, expanding NLISTP, AND, IMPLIES, NOT, and OR, to: T. Q.E.D. [ 0.0 0.0 0.0 ] TRANSITIVITY-OF-PERMUTATION (PROVE-LEMMA SETP-REMOVE (REWRITE) (IMPLIES (SETP A) (SETP (REMOVE X A))) ((ENABLE SETP REMOVE NOT-MEMBER-REMOVE2) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Call the conjecture *1. We will try to 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 (AND (LISTP A) (EQUAL X (CAR A))) (p X A)) (IMPLIES (AND (LISTP A) (NOT (EQUAL X (CAR A))) (p X (CDR A))) (p X A)) (IMPLIES (NOT (LISTP A)) (p X A))). Linear arithmetic and the lemma CDR-LESSP can be used to 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 generates the following four new formulas: Case 4. (IMPLIES (AND (LISTP A) (EQUAL X (CAR A)) (SETP A)) (SETP (REMOVE X A))). This simplifies, expanding the definitions of SETP and REMOVE, to: T. Case 3. (IMPLIES (AND (LISTP A) (NOT (EQUAL X (CAR A))) (NOT (SETP (CDR A))) (SETP A)) (SETP (REMOVE X A))). This simplifies, opening up the function SETP, to: T. Case 2. (IMPLIES (AND (LISTP A) (NOT (EQUAL X (CAR A))) (SETP (REMOVE X (CDR A))) (SETP A)) (SETP (REMOVE X A))). This simplifies, applying the lemmas NOT-MEMBER-REMOVE2, CDR-CONS, and CAR-CONS, and unfolding SETP and REMOVE, to: T. Case 1. (IMPLIES (AND (NOT (LISTP A)) (SETP A)) (SETP (REMOVE X A))). This simplifies, unfolding the definitions of SETP, LISTP, REMOVE, and EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] SETP-REMOVE (DISABLE SETP-REMOVE) [ 0.0 0.0 0.0 ] SETP-REMOVE-OFF (DEFN SETP-PERMUTATION-INDUCTION (A B) (IF (LISTP A) (SETP-PERMUTATION-INDUCTION (CDR A) (REMOVE (CAR A) B)) '0) NIL) Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT A) decreases according to the well-founded relation LESSP in each recursive call. Hence, SETP-PERMUTATION-INDUCTION is accepted under the definitional principle. Observe that: (NUMBERP (SETP-PERMUTATION-INDUCTION A B)) is a theorem. [ 0.0 0.0 0.0 ] SETP-PERMUTATION-INDUCTION (PROVE-LEMMA SETP-PERMUTATION-BASE-CASE NIL (IMPLIES (AND (NOT (LISTP A)) (PLISTP A)) (SETP A)) ((ENABLE SETP PLISTP) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, expanding the functions PLISTP, EQUAL, LISTP, and SETP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] SETP-PERMUTATION-BASE-CASE (PROVE-LEMMA SETP-PERMUTATION-INDUCTION-STEP NIL (IMPLIES (AND (LISTP A) (AND (SETP B) (AND (PLISTP A) (AND (PERMUTATION A B) (IMPLIES (AND (SETP (REMOVE (CAR A) B)) (AND (PLISTP (CDR A)) (PERMUTATION (CDR A) (REMOVE (CAR A) B)))) (SETP (CDR A))))))) (SETP A)) ((ENABLE SETP PERMUTATION REMOVE MEMBER PLISTP NOT-MEMBER-REMOVE1 SETP-REMOVE) (USE (NOT-MEMBER-PERMUTATION (X (CAR A)) (A (CDR A)) (B (REMOVE (CAR A) B)))) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, applying NOT-MEMBER-REMOVE1 and SETP-REMOVE, and unfolding NOT, AND, IMPLIES, PLISTP, PERMUTATION, and SETP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] SETP-PERMUTATION-INDUCTION-STEP (PROVE-LEMMA SETP-PERMUTATION NIL (IMPLIES (AND (SETP B) (AND (PLISTP A) (PERMUTATION A B))) (SETP A)) ((INDUCT (SETP-PERMUTATION-INDUCTION A B)) (USE (SETP-PERMUTATION-BASE-CASE (A A)) (SETP-PERMUTATION-INDUCTION-STEP (A A) (B B))) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, opening up NOT, AND, IMPLIES, and OR, to: T. Q.E.D. [ 0.0 0.0 0.0 ] SETP-PERMUTATION (PROVE-LEMMA SETP-INSERT (REWRITE) (IMPLIES (AND (SETP L) (NOT (MEMBER I L))) (SETP (INSERT I L))) ((ENABLE SETP INSERT MEMBER NOT-MEMBER-INSERT) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Call the conjecture *1. We will try to prove it by induction. There are three plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP L) (LESSP I (CAR L))) (p I L)) (IMPLIES (AND (LISTP L) (NOT (LESSP I (CAR L))) (p I (CDR L))) (p I L)) (IMPLIES (NOT (LISTP L)) (p I L))). Linear arithmetic and the lemma CDR-LESSP inform us 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 five new goals: Case 5. (IMPLIES (AND (LISTP L) (LESSP I (CAR L)) (SETP L) (NOT (MEMBER I L))) (SETP (INSERT I L))), which simplifies, appealing to the lemmas CDR-CONS and CAR-CONS, and unfolding SETP, MEMBER, and INSERT, to: T. Case 4. (IMPLIES (AND (LISTP L) (NOT (LESSP I (CAR L))) (NOT (SETP (CDR L))) (SETP L) (NOT (MEMBER I L))) (SETP (INSERT I L))), which simplifies, opening up SETP, to: T. Case 3. (IMPLIES (AND (LISTP L) (NOT (LESSP I (CAR L))) (MEMBER I (CDR L)) (SETP L) (NOT (MEMBER I L))) (SETP (INSERT I L))), which simplifies, opening up the definitions of SETP and MEMBER, to: T. Case 2. (IMPLIES (AND (LISTP L) (NOT (LESSP I (CAR L))) (SETP (INSERT I (CDR L))) (SETP L) (NOT (MEMBER I L))) (SETP (INSERT I L))), which simplifies, applying the lemmas NOT-MEMBER-INSERT, CDR-CONS, and CAR-CONS, and expanding SETP, MEMBER, and INSERT, to: T. Case 1. (IMPLIES (AND (NOT (LISTP L)) (SETP L) (NOT (MEMBER I L))) (SETP (INSERT I L))), which simplifies, applying the lemmas CDR-CONS and CAR-CONS, and opening up the functions SETP, LISTP, MEMBER, INSERT, and EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] SETP-INSERT (DISABLE SETP-INSERT) [ 0.0 0.0 0.0 ] SETP-INSERT-OFF (DEFN GETNTH (N L) (IF (LISTP L) (IF (ZEROP N) (CAR L) (GETNTH (SUB1 N) (CDR L))) '0) NIL) Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT N) decreases according to the well-founded relation LESSP in each recursive call. Hence, GETNTH is accepted under the principle of definition. The definition of GETNTH can be justified in another way. Linear arithmetic and the lemma CDR-LESSP can be used to establish that the measure (COUNT L) decreases according to the well-founded relation LESSP in each recursive call. [ 0.0 0.0 0.0 ] GETNTH (DEFN PUTNTH (V N L) (IF (LISTP L) (IF (ZEROP N) (CONS V (CDR L)) (CONS (CAR L) (PUTNTH V (SUB1 N) (CDR L)))) L) NIL) Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT N) decreases according to the well-founded relation LESSP in each recursive call. Hence, PUTNTH is accepted under the principle of definition. The definition of PUTNTH can be justified in another way. Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT L) decreases according to the well-founded relation LESSP in each recursive call. Observe that: (OR (LISTP (PUTNTH V N L)) (EQUAL (PUTNTH V N L) L)) is a theorem. [ 0.0 0.0 0.0 ] PUTNTH (DEFN GETSEG (N K L) (IF (ZEROP K) 'NIL (CONS (GETNTH N L) (GETSEG (ADD1 N) (SUB1 K) L))) NIL) Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT K) decreases according to the well-founded relation LESSP in each recursive call. Hence, GETSEG is accepted under the principle of definition. From the definition we can conclude that: (OR (LITATOM (GETSEG N K L)) (LISTP (GETSEG N K L))) is a theorem. [ 0.0 0.0 0.0 ] GETSEG (DEFN PUTSEG (S N L) (IF (LISTP S) (PUTNTH (CAR S) N (PUTSEG (CDR S) (ADD1 N) L)) L) NIL) Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT S) decreases according to the well-founded relation LESSP in each recursive call. Hence, PUTSEG is accepted under the principle of definition. Note that (OR (LISTP (PUTSEG S N L)) (EQUAL (PUTSEG S N L) L)) is a theorem. [ 0.0 0.0 0.0 ] PUTSEG (DEFN FIXLENGTH (N L DEFAULT) (IF (LISTP L) (IF (ZEROP N) 'NIL (CONS (CAR L) (FIXLENGTH (SUB1 N) (CDR L) DEFAULT))) (IF (ZEROP N) 'NIL (CONS DEFAULT (FIXLENGTH (SUB1 N) L DEFAULT)))) NIL) Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT N) decreases according to the well-founded relation LESSP in each recursive call. Hence, FIXLENGTH is accepted under the principle of definition. Observe that: (OR (LITATOM (FIXLENGTH N L DEFAULT)) (LISTP (FIXLENGTH N L DEFAULT))) is a theorem. [ 0.0 0.0 0.0 ] FIXLENGTH (DEFN FIRSTN (N L) (IF (LISTP L) (IF (ZEROP N) 'NIL (CONS (CAR L) (FIRSTN (SUB1 N) (CDR L)))) 'NIL) NIL) Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP can be used to establish that the measure (COUNT N) decreases according to the well-founded relation LESSP in each recursive call. Hence, FIRSTN is accepted under the principle of definition. The definition of FIRSTN can be justified in another way. Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT L) decreases according to the well-founded relation LESSP in each recursive call. Observe that: (OR (LITATOM (FIRSTN N L)) (LISTP (FIRSTN N L))) is a theorem. [ 0.0 0.0 0.0 ] FIRSTN (DEFN NTHCDR (N L) (IF (LISTP L) (IF (ZEROP N) L (NTHCDR (SUB1 N) (CDR L))) L) NIL) Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP can be used to show that the measure (COUNT N) decreases according to the well-founded relation LESSP in each recursive call. Hence, NTHCDR is accepted under the definitional principle. The definition of NTHCDR can be justified in another way. Linear arithmetic and the lemma CDR-LESSP can be used to prove that the measure (COUNT L) decreases according to the well-founded relation LESSP in each recursive call. [ 0.0 0.0 0.0 ] NTHCDR (PROVE-LEMMA NON-ZERO-LENGTH-IMPLIES-LISTP (REWRITE) (IMPLIES (NOT (ZEROP (LENGTH L))) (LISTP L)) ((ENABLE LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) WARNING: NON-ZERO-LENGTH-IMPLIES-LISTP will slow down the theorem-prover because it will cause backward chaining on every instance of a primitive type expression. This formula can be simplified, using the abbreviations ZEROP, NOT, and IMPLIES, to the new conjecture: (IMPLIES (AND (NOT (EQUAL (LENGTH L) 0)) (NUMBERP (LENGTH L))) (LISTP L)), which simplifies, opening up LENGTH and EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] NON-ZERO-LENGTH-IMPLIES-LISTP (DISABLE NON-ZERO-LENGTH-IMPLIES-LISTP) [ 0.0 0.0 0.0 ] NON-ZERO-LENGTH-IMPLIES-LISTP-OFF (PROVE-LEMMA LISTP-IMPLIES-NON-ZERO-LENGTH (REWRITE) (IMPLIES (LISTP L) (NOT (EQUAL (LENGTH L) '0))) ((ENABLE LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Give the conjecture the name *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 (AND (LISTP L) (p (CDR L))) (p L)) (IMPLIES (NOT (LISTP L)) (p L))). Linear arithmetic and the lemma CDR-LESSP inform us 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 two new goals: Case 2. (IMPLIES (AND (NOT (LISTP (CDR L))) (LISTP L)) (NOT (EQUAL (LENGTH L) 0))), which simplifies, expanding LENGTH, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL (LENGTH (CDR L)) 0)) (LISTP L)) (NOT (EQUAL (LENGTH L) 0))), which simplifies, opening up the function LENGTH, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LISTP-IMPLIES-NON-ZERO-LENGTH (DISABLE LISTP-IMPLIES-NON-ZERO-LENGTH) [ 0.0 0.0 0.0 ] LISTP-IMPLIES-NON-ZERO-LENGTH-OFF (PROVE-LEMMA PLIST-OF-NON-ZERO-LENGTH-IS-A-LIST (REWRITE) (IMPLIES (AND (PLISTP A) (NOT (EQUAL (LENGTH A) '0))) (LISTP A)) ((ENABLE PLISTP LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) WARNING: PLIST-OF-NON-ZERO-LENGTH-IS-A-LIST will slow down the theorem-prover because it will cause backward chaining on every instance of a primitive type expression. This conjecture simplifies, expanding the definitions of PLISTP, LISTP, LENGTH, and EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PLIST-OF-NON-ZERO-LENGTH-IS-A-LIST (DISABLE PLIST-OF-NON-ZERO-LENGTH-IS-A-LIST) [ 0.0 0.0 0.0 ] PLIST-OF-NON-ZERO-LENGTH-IS-A-LIST-OFF (PROVE-LEMMA LISTP-APPEND (REWRITE) (EQUAL (LISTP (APPEND A B)) (OR (LISTP A) (LISTP B))) ((ENABLE APPEND) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, unfolding the definition of OR, to the following two new goals: Case 2. (IMPLIES (NOT (LISTP A)) (EQUAL (LISTP (APPEND A B)) (LISTP B))). This again simplifies, opening up the definition of APPEND, to: T. Case 1. (IMPLIES (LISTP A) (EQUAL (LISTP (APPEND A B)) T)), which again simplifies, trivially, to: (IMPLIES (LISTP A) (LISTP (APPEND A B))), 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 (AND (LISTP A) (p (CDR A) B)) (p A B)) (IMPLIES (NOT (LISTP A)) (p A B))). Linear arithmetic and the lemma CDR-LESSP 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 goals: Case 2. (IMPLIES (AND (NOT (LISTP (CDR A))) (LISTP A)) (LISTP (APPEND A B))). This simplifies, opening up the function APPEND, to: T. Case 1. (IMPLIES (AND (LISTP (APPEND (CDR A) B)) (LISTP A)) (LISTP (APPEND A B))). This simplifies, unfolding the definition of APPEND, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LISTP-APPEND (DISABLE LISTP-APPEND) [ 0.0 0.0 0.0 ] LISTP-APPEND-OFF (PROVE-LEMMA LISTP-APPEND-LEFT (REWRITE) (IMPLIES (LISTP A) (LISTP (APPEND A B))) ((ENABLE APPEND) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 (AND (LISTP A) (p (CDR A) B)) (p A B)) (IMPLIES (NOT (LISTP A)) (p A B))). Linear arithmetic and the lemma CDR-LESSP can be used to 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 generates the following two new formulas: Case 2. (IMPLIES (AND (NOT (LISTP (CDR A))) (LISTP A)) (LISTP (APPEND A B))). This simplifies, expanding the definition of APPEND, to: T. Case 1. (IMPLIES (AND (LISTP (APPEND (CDR A) B)) (LISTP A)) (LISTP (APPEND A B))). This simplifies, opening up the function APPEND, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LISTP-APPEND-LEFT (DISABLE LISTP-APPEND-LEFT) [ 0.0 0.0 0.0 ] LISTP-APPEND-LEFT-OFF (PROVE-LEMMA LISTP-GETSEG (REWRITE) (IMPLIES (NOT (ZEROP K)) (LISTP (GETSEG N K L))) ((ENABLE NON-ZERO-LENGTH-IMPLIES-LISTP GETSEG) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, NOT, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K)) (LISTP (GETSEG N K L))), which we will name *1. Perhaps we can prove it by induction. There is only one plausible induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP K) (p N K L)) (IMPLIES (AND (NOT (ZEROP K)) (p (ADD1 N) (SUB1 K) L)) (p N K L))). 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. Note, however, the inductive instance chosen for N. The above induction scheme leads to the following three new conjectures: Case 3. (IMPLIES (AND (ZEROP K) (NOT (EQUAL K 0)) (NUMBERP K)) (LISTP (GETSEG N K L))). This simplifies, unfolding the definition of ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP K)) (EQUAL (SUB1 K) 0) (NOT (EQUAL K 0)) (NUMBERP K)) (LISTP (GETSEG N K L))). This simplifies, expanding the functions ZEROP and GETSEG, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP K)) (LISTP (GETSEG (ADD1 N) (SUB1 K) L)) (NOT (EQUAL K 0)) (NUMBERP K)) (LISTP (GETSEG N K L))). This simplifies, unfolding the functions ZEROP and GETSEG, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LISTP-GETSEG (DISABLE LISTP-GETSEG) [ 0.0 0.0 0.0 ] LISTP-GETSEG-OFF (PROVE-LEMMA LISTP-PUTNTH (REWRITE) (EQUAL (LISTP (PUTNTH V N L)) (LISTP L)) ((ENABLE PUTNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. Perhaps we can prove it by induction. There are two plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP L) (ZEROP N)) (p V N L)) (IMPLIES (AND (LISTP L) (NOT (ZEROP N)) (p V (SUB1 N) (CDR L))) (p V N L)) (IMPLIES (NOT (LISTP L)) (p V N L))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT N) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for L. The above induction scheme produces the following three new goals: Case 3. (IMPLIES (AND (LISTP L) (ZEROP N)) (EQUAL (LISTP (PUTNTH V N L)) (LISTP L))). This simplifies, obviously, to: T. Case 2. (IMPLIES (AND (LISTP L) (NOT (ZEROP N)) (EQUAL (LISTP (PUTNTH V (SUB1 N) (CDR L))) (LISTP (CDR L)))) (EQUAL (LISTP (PUTNTH V N L)) (LISTP L))). This simplifies, obviously, to: T. Case 1. (IMPLIES (NOT (LISTP L)) (EQUAL (LISTP (PUTNTH V N L)) (LISTP L))). This simplifies, opening up PUTNTH and EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.1 ] LISTP-PUTNTH (DISABLE LISTP-PUTNTH) [ 0.0 0.0 0.0 ] LISTP-PUTNTH-OFF (PROVE-LEMMA LISTP-PUTSEG (REWRITE) (EQUAL (LISTP (PUTSEG S N L)) (LISTP L)) ((ENABLE PUTSEG LISTP-PUTNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. Perhaps we can prove it by induction. There is only one plausible induction. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP S) (p (CDR S) (ADD1 N) L)) (p S N L)) (IMPLIES (NOT (LISTP S)) (p S N L))). Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT S) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for N. The above induction scheme produces the following two new goals: Case 2. (IMPLIES (AND (LISTP S) (EQUAL (LISTP (PUTSEG (CDR S) (ADD1 N) L)) (LISTP L))) (EQUAL (LISTP (PUTSEG S N L)) (LISTP L))). This simplifies, applying LISTP-PUTNTH, and unfolding the definition of PUTSEG, to: T. Case 1. (IMPLIES (NOT (LISTP S)) (EQUAL (LISTP (PUTSEG S N L)) (LISTP L))), which simplifies, unfolding the definition of PUTSEG, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LISTP-PUTSEG (DISABLE LISTP-PUTSEG) [ 0.0 0.0 0.0 ] LISTP-PUTSEG-OFF (PROVE-LEMMA REWRITE-CAR-TO-GETNTH-0 (REWRITE) (EQUAL (CAR L) (GETNTH '0 L)) ((ENABLE GETNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) WARNING: the newly proposed lemma, REWRITE-CAR-TO-GETNTH-0, could be applied whenever the previously added lemma CAR-NLISTP could. WARNING: the newly proposed lemma, REWRITE-CAR-TO-GETNTH-0, could be applied whenever the previously added lemma CAR-CONS could. This simplifies, unfolding EQUAL and GETNTH, to: (IMPLIES (NOT (LISTP L)) (EQUAL (CAR L) 0)). This again simplifies, rewriting with CAR-NLISTP, and unfolding the definition of EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] REWRITE-CAR-TO-GETNTH-0 (DISABLE REWRITE-CAR-TO-GETNTH-0) [ 0.0 0.0 0.0 ] REWRITE-CAR-TO-GETNTH-0-OFF (PROVE-LEMMA CAR-APPEND-CASESPLIT (REWRITE) (EQUAL (CAR (APPEND A B)) (IF (LISTP A) (CAR A) (CAR B))) ((ENABLE APPEND) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, trivially, to the following two new goals: Case 2. (IMPLIES (NOT (LISTP A)) (EQUAL (CAR (APPEND A B)) (CAR B))). This again simplifies, expanding APPEND, to: T. Case 1. (IMPLIES (LISTP A) (EQUAL (CAR (APPEND A B)) (CAR A))). Applying the lemma CAR-CDR-ELIM, replace A by (CONS X Z) to eliminate (CAR A) and (CDR A). This produces: (EQUAL (CAR (APPEND (CONS X Z) B)) X), which further simplifies, rewriting with the lemmas CDR-CONS and CAR-CONS, and expanding the function APPEND, to: T. Q.E.D. [ 0.0 0.0 0.0 ] CAR-APPEND-CASESPLIT (DISABLE CAR-APPEND-CASESPLIT) [ 0.0 0.0 0.0 ] CAR-APPEND-CASESPLIT-OFF (PROVE-LEMMA CAR-APPEND (REWRITE) (IMPLIES (LISTP A) (EQUAL (CAR (APPEND A B)) (CAR A))) ((ENABLE APPEND) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) . Applying the lemma CAR-CDR-ELIM, replace A by (CONS X Z) to eliminate (CAR A) and (CDR A). We would thus like to prove: (EQUAL (CAR (APPEND (CONS X Z) B)) X), which simplifies, applying CDR-CONS and CAR-CONS, and opening up the function APPEND, to: T. Q.E.D. [ 0.0 0.0 0.0 ] CAR-APPEND (DISABLE CAR-APPEND) [ 0.0 0.0 0.0 ] CAR-APPEND-OFF (PROVE-LEMMA CAR-GETSEG (REWRITE) (IMPLIES (NOT (ZEROP K)) (EQUAL (CAR (GETSEG N K L)) (GETNTH N L))) ((ENABLE GETSEG) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, NOT, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K)) (EQUAL (CAR (GETSEG N K L)) (GETNTH N L))), 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 L)) (IMPLIES (AND (NOT (ZEROP K)) (p (ADD1 N) (SUB1 K) L)) (p N K L))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT K) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for N. The above induction scheme generates the following three new conjectures: Case 3. (IMPLIES (AND (ZEROP K) (NOT (EQUAL K 0)) (NUMBERP K)) (EQUAL (CAR (GETSEG N K L)) (GETNTH N L))). This simplifies, opening up the definition of ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP K)) (EQUAL (SUB1 K) 0) (NOT (EQUAL K 0)) (NUMBERP K)) (EQUAL (CAR (GETSEG N K L)) (GETNTH N L))). This simplifies, appealing to the lemma CAR-CONS, and expanding ZEROP and GETSEG, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP K)) (EQUAL (CAR (GETSEG (ADD1 N) (SUB1 K) L)) (GETNTH (ADD1 N) L)) (NOT (EQUAL K 0)) (NUMBERP K)) (EQUAL (CAR (GETSEG N K L)) (GETNTH N L))). This simplifies, applying CAR-CONS, and opening up the definitions of ZEROP and GETSEG, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] CAR-GETSEG (DISABLE CAR-GETSEG) [ 0.0 0.0 0.0 ] CAR-GETSEG-OFF (PROVE-LEMMA CAR-PUTNTH-ZERO (REWRITE) (IMPLIES (AND (LISTP L) (ZEROP N)) (EQUAL (CAR (PUTNTH V N L)) V)) ((ENABLE PUTNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, applying CAR-CONS, and expanding the functions ZEROP, EQUAL, and PUTNTH, to: T. Q.E.D. [ 0.0 0.0 0.0 ] CAR-PUTNTH-ZERO (DISABLE CAR-PUTNTH-ZERO) [ 0.0 0.0 0.0 ] CAR-PUTNTH-ZERO-OFF (PROVE-LEMMA CAR-PUTSEG-ZERO (REWRITE) (IMPLIES (AND (ZEROP N) (AND (LISTP S) (LISTP L))) (EQUAL (CAR (PUTSEG S N L)) (CAR S))) ((ENABLE CAR-PUTNTH-ZERO PUTSEG) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, expanding ZEROP, to two new goals: Case 2. (IMPLIES (AND (EQUAL N 0) (LISTP S) (LISTP L)) (EQUAL (CAR (PUTSEG S 0 L)) (CAR S))), which again simplifies, trivially, to: (IMPLIES (AND (LISTP S) (LISTP L)) (EQUAL (CAR (PUTSEG S 0 L)) (CAR S))). Applying the lemma CAR-CDR-ELIM, replace S by (CONS X Z) to eliminate (CAR S) and (CDR S). We would thus like to prove: (IMPLIES (LISTP L) (EQUAL (CAR (PUTSEG (CONS X Z) 0 L)) X)), which further simplifies, rewriting with CDR-CONS, CAR-CONS, and CAR-PUTNTH-ZERO, and expanding ADD1, PUTSEG, and ZEROP, to: T. Case 1. (IMPLIES (AND (NOT (NUMBERP N)) (LISTP S) (LISTP L)) (EQUAL (CAR (PUTSEG S N L)) (CAR S))). Appealing to the lemma CAR-CDR-ELIM, we now replace S by (CONS X Z) to eliminate (CAR S) and (CDR S). We must thus prove: (IMPLIES (AND (NOT (NUMBERP N)) (LISTP L)) (EQUAL (CAR (PUTSEG (CONS X Z) N L)) X)). But this further simplifies, applying SUB1-TYPE-RESTRICTION, CDR-CONS, CAR-CONS, and CAR-PUTNTH-ZERO, and opening up the definitions of PUTSEG and ZEROP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] CAR-PUTSEG-ZERO (DISABLE CAR-PUTSEG-ZERO) [ 0.0 0.0 0.0 ] CAR-PUTSEG-ZERO-OFF (PROVE-LEMMA CDR-APPEND (REWRITE) (EQUAL (CDR (APPEND A B)) (IF (LISTP A) (APPEND (CDR A) B) (CDR B))) ((ENABLE APPEND) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, unfolding the function APPEND, to: (IMPLIES (LISTP A) (EQUAL (CDR (CONS (CAR A) (APPEND (CDR A) B))) (APPEND (CDR A) B))), which again simplifies, rewriting with the lemma CDR-CONS, to: T. Q.E.D. [ 0.0 0.0 0.0 ] CDR-APPEND (DISABLE CDR-APPEND) [ 0.0 0.0 0.0 ] CDR-APPEND-OFF (PROVE-LEMMA CDR-GETSEG (REWRITE) (IMPLIES (NOT (ZEROP K)) (EQUAL (CDR (GETSEG N K L)) (GETSEG (ADD1 N) (SUB1 K) L))) ((ENABLE GETSEG) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, and IMPLIES, to the goal: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K)) (EQUAL (CDR (GETSEG N K L)) (GETSEG (ADD1 N) (SUB1 K) L))). This simplifies, rewriting with CDR-CONS, and unfolding GETSEG, to: T. Q.E.D. [ 0.0 0.0 0.0 ] CDR-GETSEG (DISABLE CDR-GETSEG) [ 0.0 0.0 0.0 ] CDR-GETSEG-OFF (PROVE-LEMMA CDR-IS-NIL-WHEN-LENGTH-IS-1 (REWRITE) (IMPLIES (AND (PLISTP L) (EQUAL (LENGTH L) '1)) (EQUAL (EQUAL (CDR L) 'NIL) '*1*TRUE)) ((ENABLE PLISTP LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, applying ADD1-EQUAL, and opening up the definitions of PLISTP, LISTP, LENGTH, EQUAL, and NUMBERP, to: (IMPLIES (AND (LISTP L) (PLISTP (CDR L)) (EQUAL (LENGTH (CDR L)) 0)) (EQUAL (CDR L) NIL)). Appealing to the lemma CAR-CDR-ELIM, we now replace L by (CONS Z X) to eliminate (CDR L) and (CAR L). This generates: (IMPLIES (AND (PLISTP X) (EQUAL (LENGTH X) 0)) (EQUAL X NIL)), 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 (AND (PLISTP L) (EQUAL (LENGTH L) 1)) (EQUAL (EQUAL (CDR L) NIL) T)). We gave this the name *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 (AND (LISTP L) (p (CDR L))) (p L)) (IMPLIES (NOT (LISTP L)) (p L))). Linear arithmetic and the lemma CDR-LESSP 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 leads to four new conjectures: Case 4. (IMPLIES (AND (LISTP L) (NOT (PLISTP (CDR L))) (PLISTP L) (EQUAL (LENGTH L) 1)) (EQUAL (EQUAL (CDR L) NIL) T)), which simplifies, opening up the definition of PLISTP, to: T. Case 3. (IMPLIES (AND (LISTP L) (NOT (EQUAL (LENGTH (CDR L)) 1)) (PLISTP L) (EQUAL (LENGTH L) 1)) (EQUAL (EQUAL (CDR L) NIL) T)), which simplifies, appealing to the lemma ADD1-EQUAL, and unfolding the functions PLISTP, LENGTH, and NUMBERP, to: (IMPLIES (AND (LISTP L) (NOT (EQUAL (LENGTH (CDR L)) 1)) (PLISTP (CDR L)) (EQUAL (LENGTH (CDR L)) 0)) (EQUAL (CDR L) NIL)). This again simplifies, unfolding EQUAL, to: (IMPLIES (AND (LISTP L) (PLISTP (CDR L)) (EQUAL (LENGTH (CDR L)) 0)) (EQUAL (CDR L) NIL)). Appealing to the lemma CAR-CDR-ELIM, we now replace L by (CONS Z X) to eliminate (CDR L) and (CAR L). We must thus prove: (IMPLIES (AND (PLISTP X) (EQUAL (LENGTH X) 0)) (EQUAL X NIL)). Name the above subgoal *1.1. Case 2. (IMPLIES (AND (LISTP L) (EQUAL (EQUAL (CDDR L) NIL) T) (PLISTP L) (EQUAL (LENGTH L) 1)) (EQUAL (EQUAL (CDR L) NIL) T)). This simplifies, appealing to the lemma ADD1-EQUAL, and unfolding the definitions of PLISTP, LENGTH, and NUMBERP, to: (IMPLIES (AND (LISTP L) (EQUAL (CDDR L) NIL) (PLISTP (CDR L)) (EQUAL (LENGTH (CDR L)) 0)) (EQUAL (CDR L) NIL)), which further simplifies, unfolding the definitions of PLISTP, EQUAL, LISTP, LENGTH, and ADD1, to: T. Case 1. (IMPLIES (AND (NOT (LISTP L)) (PLISTP L) (EQUAL (LENGTH L) 1)) (EQUAL (EQUAL (CDR L) NIL) T)), which simplifies, unfolding the functions PLISTP, LISTP, LENGTH, and EQUAL, to: T. So we now return to: (IMPLIES (AND (PLISTP X) (EQUAL (LENGTH X) 0)) (EQUAL X NIL)), named *1.1 above. Let us appeal to the induction principle. There are two plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP X) (p (CDR X))) (p X)) (IMPLIES (NOT (LISTP X)) (p X))). 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. The above induction scheme generates four new formulas: Case 4. (IMPLIES (AND (LISTP X) (NOT (PLISTP (CDR X))) (PLISTP X) (EQUAL (LENGTH X) 0)) (EQUAL X NIL)), which simplifies, unfolding the function PLISTP, to: T. Case 3. (IMPLIES (AND (LISTP X) (NOT (EQUAL (LENGTH (CDR X)) 0)) (PLISTP X) (EQUAL (LENGTH X) 0)) (EQUAL X NIL)), which simplifies, unfolding PLISTP and LENGTH, to: T. Case 2. (IMPLIES (AND (LISTP X) (EQUAL (CDR X) NIL) (PLISTP X) (EQUAL (LENGTH X) 0)) (EQUAL X NIL)), which simplifies, unfolding the definitions of PLISTP and LENGTH, to: T. Case 1. (IMPLIES (AND (NOT (LISTP X)) (PLISTP X) (EQUAL (LENGTH X) 0)) (EQUAL X NIL)), which simplifies, unfolding PLISTP, to: T. That finishes the proof of *1.1, which, consequently, finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] CDR-IS-NIL-WHEN-LENGTH-IS-1 (DISABLE CDR-IS-NIL-WHEN-LENGTH-IS-1) [ 0.0 0.0 0.0 ] CDR-IS-NIL-WHEN-LENGTH-IS-1-OFF (PROVE-LEMMA PLIST-OF-LENGTH-0 (REWRITE) (IMPLIES (AND (PLISTP L) (EQUAL (LENGTH L) '0)) (EQUAL (EQUAL L 'NIL) '*1*TRUE)) ((ENABLE PLISTP LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Give the conjecture the name *1. We will appeal to 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 (AND (LISTP L) (p (CDR L))) (p L)) (IMPLIES (NOT (LISTP L)) (p L))). Linear arithmetic and the lemma CDR-LESSP 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 leads to four new goals: Case 4. (IMPLIES (AND (LISTP L) (NOT (PLISTP (CDR L))) (PLISTP L) (EQUAL (LENGTH L) 0)) (EQUAL L NIL)), which simplifies, unfolding the function PLISTP, to: T. Case 3. (IMPLIES (AND (LISTP L) (NOT (EQUAL (LENGTH (CDR L)) 0)) (PLISTP L) (EQUAL (LENGTH L) 0)) (EQUAL L NIL)), which simplifies, opening up PLISTP and LENGTH, to: T. Case 2. (IMPLIES (AND (LISTP L) (EQUAL (CDR L) NIL) (PLISTP L) (EQUAL (LENGTH L) 0)) (EQUAL L NIL)), which simplifies, expanding PLISTP and LENGTH, to: T. Case 1. (IMPLIES (AND (NOT (LISTP L)) (PLISTP L) (EQUAL (LENGTH L) 0)) (EQUAL L NIL)), which simplifies, expanding PLISTP, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PLIST-OF-LENGTH-0 (DISABLE PLIST-OF-LENGTH-0) [ 0.0 0.0 0.0 ] PLIST-OF-LENGTH-0-OFF (PROVE-LEMMA PLISTP-APPEND (REWRITE) (IMPLIES (PLISTP B) (PLISTP (APPEND A B))) ((ENABLE PLISTP APPEND) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Call the conjecture *1. We will try to prove it by induction. The recursive terms in the conjecture suggest two inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP A) (p (CDR A) B)) (p A B)) (IMPLIES (NOT (LISTP A)) (p A B))). Linear arithmetic and the lemma CDR-LESSP can be used to 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 generates the following two new formulas: Case 2. (IMPLIES (AND (LISTP A) (PLISTP (APPEND (CDR A) B)) (PLISTP B)) (PLISTP (APPEND A B))). This simplifies, applying CDR-CONS, and expanding the functions APPEND and PLISTP, to: T. Case 1. (IMPLIES (AND (NOT (LISTP A)) (PLISTP B)) (PLISTP (APPEND A B))), which simplifies, opening up the function APPEND, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PLISTP-APPEND (DISABLE PLISTP-APPEND) [ 0.0 0.0 0.0 ] PLISTP-APPEND-OFF (PROVE-LEMMA PLISTP-LIST1 (REWRITE) (PLISTP (CONS X 'NIL)) ((ENABLE PLISTP) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, applying CDR-CONS, and opening up the definitions of PLISTP, EQUAL, and LISTP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PLISTP-LIST1 (DISABLE PLISTP-LIST1) [ 0.0 0.0 0.0 ] PLISTP-LIST1-OFF (PROVE-LEMMA PLISTP-LIST2 (REWRITE) (PLISTP (CONS X (CONS Y 'NIL))) ((ENABLE PLISTP) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, rewriting with CDR-CONS, and unfolding PLISTP, EQUAL, and LISTP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PLISTP-LIST2 (DISABLE PLISTP-LIST2) [ 0.0 0.0 0.0 ] PLISTP-LIST2-OFF (PROVE-LEMMA PLISTP-PUTNTH (REWRITE) (IMPLIES (PLISTP L) (PLISTP (PUTNTH V I L))) ((ENABLE PLISTP PUTNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. Perhaps we can prove it by induction. There are three plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP L) (ZEROP I)) (p V I L)) (IMPLIES (AND (LISTP L) (NOT (ZEROP I)) (p V (SUB1 I) (CDR L))) (p V I L)) (IMPLIES (NOT (LISTP L)) (p V I L))). 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 induction step of the scheme. Note, however, the inductive instance chosen for L. The above induction scheme produces the following four new goals: Case 4. (IMPLIES (AND (LISTP L) (ZEROP I) (PLISTP L)) (PLISTP (PUTNTH V I L))). This simplifies, applying CDR-CONS, and unfolding the definitions of ZEROP, PLISTP, EQUAL, and PUTNTH, to: T. Case 3. (IMPLIES (AND (LISTP L) (NOT (ZEROP I)) (NOT (PLISTP (CDR L))) (PLISTP L)) (PLISTP (PUTNTH V I L))), which simplifies, unfolding the definitions of ZEROP and PLISTP, to: T. Case 2. (IMPLIES (AND (LISTP L) (NOT (ZEROP I)) (PLISTP (PUTNTH V (SUB1 I) (CDR L))) (PLISTP L)) (PLISTP (PUTNTH V I L))), which simplifies, rewriting with CDR-CONS, and expanding the definitions of ZEROP, PLISTP, and PUTNTH, to: T. Case 1. (IMPLIES (AND (NOT (LISTP L)) (PLISTP L)) (PLISTP (PUTNTH V I L))). This simplifies, unfolding PLISTP, LISTP, PUTNTH, and EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PLISTP-PUTNTH (DISABLE PLISTP-PUTNTH) [ 0.0 0.0 0.0 ] PLISTP-PUTNTH-OFF (PROVE-LEMMA PLISTP-GETSEG (REWRITE) (PLISTP (GETSEG N K L)) ((ENABLE PLISTP GETSEG) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Give the conjecture the name *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 N K L)) (IMPLIES (AND (NOT (ZEROP K)) (p (ADD1 N) (SUB1 K) L)) (p N K L))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT K) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for N. The above induction scheme leads to two new formulas: Case 2. (IMPLIES (ZEROP K) (PLISTP (GETSEG N K L))), which simplifies, expanding the functions ZEROP, EQUAL, GETSEG, LISTP, and PLISTP, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP K)) (PLISTP (GETSEG (ADD1 N) (SUB1 K) L))) (PLISTP (GETSEG N K L))), which simplifies, applying the lemma CDR-CONS, and unfolding ZEROP, GETSEG, and PLISTP, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PLISTP-GETSEG (DISABLE PLISTP-GETSEG) [ 0.0 0.0 0.0 ] PLISTP-GETSEG-OFF (PROVE-LEMMA PLISTP-PUTSEG (REWRITE) (IMPLIES (PLISTP L) (PLISTP (PUTSEG S N L))) ((ENABLE PLISTP PUTSEG PLISTP-PUTNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. 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 (AND (LISTP S) (p (CDR S) (ADD1 N) L)) (p S N L)) (IMPLIES (NOT (LISTP S)) (p S N L))). Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT S) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for N. The above induction scheme produces the following two new goals: Case 2. (IMPLIES (AND (LISTP S) (PLISTP (PUTSEG (CDR S) (ADD1 N) L)) (PLISTP L)) (PLISTP (PUTSEG S N L))). This simplifies, applying PLISTP-PUTNTH, and unfolding the definition of PUTSEG, to: T. Case 1. (IMPLIES (AND (NOT (LISTP S)) (PLISTP L)) (PLISTP (PUTSEG S N L))), which simplifies, unfolding the definition of PUTSEG, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PLISTP-PUTSEG (DISABLE PLISTP-PUTSEG) [ 0.0 0.0 0.0 ] PLISTP-PUTSEG-OFF (PROVE-LEMMA PLISTP-FIXLENGTH (REWRITE) (PLISTP (FIXLENGTH N L V)) ((ENABLE PLISTP FIXLENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Give the conjecture the name *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 (AND (LISTP L) (ZEROP N)) (p N L V)) (IMPLIES (AND (LISTP L) (NOT (ZEROP N)) (p (SUB1 N) (CDR L) V)) (p N L V)) (IMPLIES (AND (NOT (LISTP L)) (ZEROP N)) (p N L V)) (IMPLIES (AND (NOT (LISTP L)) (NOT (ZEROP N)) (p (SUB1 N) L V)) (p N L V))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT N) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instances chosen for L. The above induction scheme leads to four new formulas: Case 4. (IMPLIES (AND (LISTP L) (ZEROP N)) (PLISTP (FIXLENGTH N L V))), which simplifies, expanding the functions ZEROP, EQUAL, FIXLENGTH, LISTP, and PLISTP, to: T. Case 3. (IMPLIES (AND (LISTP L) (NOT (ZEROP N)) (PLISTP (FIXLENGTH (SUB1 N) (CDR L) V))) (PLISTP (FIXLENGTH N L V))), which simplifies, applying the lemma CDR-CONS, and unfolding ZEROP, FIXLENGTH, and PLISTP, to: T. Case 2. (IMPLIES (AND (NOT (LISTP L)) (ZEROP N)) (PLISTP (FIXLENGTH N L V))), which simplifies, opening up the functions ZEROP, EQUAL, FIXLENGTH, LISTP, and PLISTP, to: T. Case 1. (IMPLIES (AND (NOT (LISTP L)) (NOT (ZEROP N)) (PLISTP (FIXLENGTH (SUB1 N) L V))) (PLISTP (FIXLENGTH N L V))), which simplifies, applying the lemma CDR-CONS, and opening up ZEROP, FIXLENGTH, and PLISTP, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PLISTP-FIXLENGTH (DISABLE PLISTP-FIXLENGTH) [ 0.0 0.0 0.0 ] PLISTP-FIXLENGTH-OFF (PROVE-LEMMA LENGTH-APPEND (REWRITE) (EQUAL (LENGTH (APPEND A B)) (PLUS (LENGTH A) (LENGTH B))) ((ENABLE APPEND LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 (AND (LISTP A) (p (CDR A) B)) (p A B)) (IMPLIES (NOT (LISTP A)) (p A B))). Linear arithmetic and the lemma CDR-LESSP 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. The above induction scheme leads to two new goals: Case 2. (IMPLIES (AND (LISTP A) (EQUAL (LENGTH (APPEND (CDR A) B)) (PLUS (LENGTH (CDR A)) (LENGTH B)))) (EQUAL (LENGTH (APPEND A B)) (PLUS (LENGTH A) (LENGTH B)))), which simplifies, applying the lemmas CDR-CONS and SUB1-ADD1, and opening up the definitions of APPEND, LENGTH, and PLUS, to: T. Case 1. (IMPLIES (NOT (LISTP A)) (EQUAL (LENGTH (APPEND A B)) (PLUS (LENGTH A) (LENGTH B)))), which simplifies, unfolding the functions APPEND, LENGTH, EQUAL, and PLUS, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.1 ] LENGTH-APPEND (DISABLE LENGTH-APPEND) [ 0.0 0.0 0.0 ] LENGTH-APPEND-OFF (PROVE-LEMMA LENGTH-PUTNTH (REWRITE) (EQUAL (LENGTH (PUTNTH N V L)) (LENGTH L)) ((ENABLE PUTNTH LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. Perhaps we can prove it by induction. There are three plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP L) (ZEROP V)) (p N V L)) (IMPLIES (AND (LISTP L) (NOT (ZEROP V)) (p N (SUB1 V) (CDR L))) (p N V L)) (IMPLIES (NOT (LISTP L)) (p N V L))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT V) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for L. The above induction scheme produces the following three new goals: Case 3. (IMPLIES (AND (LISTP L) (ZEROP V)) (EQUAL (LENGTH (PUTNTH N V L)) (LENGTH L))). This simplifies, applying CDR-CONS, and unfolding the definitions of ZEROP, EQUAL, PUTNTH, and LENGTH, to: T. Case 2. (IMPLIES (AND (LISTP L) (NOT (ZEROP V)) (EQUAL (LENGTH (PUTNTH N (SUB1 V) (CDR L))) (LENGTH (CDR L)))) (EQUAL (LENGTH (PUTNTH N V L)) (LENGTH L))), which simplifies, rewriting with CDR-CONS, and expanding the definitions of ZEROP, PUTNTH, and LENGTH, to: T. Case 1. (IMPLIES (NOT (LISTP L)) (EQUAL (LENGTH (PUTNTH N V L)) (LENGTH L))). This simplifies, expanding the definitions of PUTNTH, LENGTH, and EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LENGTH-PUTNTH (DISABLE LENGTH-PUTNTH) [ 0.0 0.0 0.0 ] LENGTH-PUTNTH-OFF (PROVE-LEMMA LENGTH-GETSEG (REWRITE) (EQUAL (LENGTH (GETSEG N K L)) (FIX K)) ((ENABLE GETSEG LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, opening up the function FIX, to the following two new goals: Case 2. (IMPLIES (NOT (NUMBERP K)) (EQUAL (LENGTH (GETSEG N K L)) 0)). But this again simplifies, expanding the definitions of GETSEG, LISTP, LENGTH, and EQUAL, to: T. Case 1. (IMPLIES (NUMBERP K) (EQUAL (LENGTH (GETSEG N K L)) K)), 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 L)) (IMPLIES (AND (NOT (ZEROP K)) (p (ADD1 N) (SUB1 K) L)) (p N K L))). 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. Note, however, the inductive instance chosen for N. The above induction scheme generates two new goals: Case 2. (IMPLIES (AND (ZEROP K) (NUMBERP K)) (EQUAL (LENGTH (GETSEG N K L)) K)), which simplifies, expanding ZEROP, NUMBERP, EQUAL, GETSEG, LISTP, and LENGTH, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP K)) (EQUAL (LENGTH (GETSEG (ADD1 N) (SUB1 K) L)) (SUB1 K)) (NUMBERP K)) (EQUAL (LENGTH (GETSEG N K L)) K)), which simplifies, rewriting with ADD1-SUB1 and CDR-CONS, and unfolding the definitions of ZEROP, GETSEG, and LENGTH, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LENGTH-GETSEG (DISABLE LENGTH-GETSEG) [ 0.0 0.0 0.0 ] LENGTH-GETSEG-OFF (PROVE-LEMMA LENGTH-PUTSEG (REWRITE) (EQUAL (LENGTH (PUTSEG S N L)) (LENGTH L)) ((ENABLE LENGTH-PUTNTH PUTSEG) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. Perhaps we can prove it by induction. There is only one plausible induction. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP S) (p (CDR S) (ADD1 N) L)) (p S N L)) (IMPLIES (NOT (LISTP S)) (p S N L))). Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT S) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for N. The above induction scheme produces the following two new goals: Case 2. (IMPLIES (AND (LISTP S) (EQUAL (LENGTH (PUTSEG (CDR S) (ADD1 N) L)) (LENGTH L))) (EQUAL (LENGTH (PUTSEG S N L)) (LENGTH L))). This simplifies, applying LENGTH-PUTNTH, and unfolding the definition of PUTSEG, to: T. Case 1. (IMPLIES (NOT (LISTP S)) (EQUAL (LENGTH (PUTSEG S N L)) (LENGTH L))), which simplifies, unfolding the definition of PUTSEG, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LENGTH-PUTSEG (DISABLE LENGTH-PUTSEG) [ 0.0 0.0 0.0 ] LENGTH-PUTSEG-OFF (PROVE-LEMMA LENGTH-FIXLENGTH (REWRITE) (EQUAL (LENGTH (FIXLENGTH N L DEFAULT)) (FIX N)) ((ENABLE FIXLENGTH LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, opening up the function FIX, to the following two new goals: Case 2. (IMPLIES (NOT (NUMBERP N)) (EQUAL (LENGTH (FIXLENGTH N L DEFAULT)) 0)). But this again simplifies, expanding the definitions of FIXLENGTH, LISTP, LENGTH, and EQUAL, to: T. Case 1. (IMPLIES (NUMBERP N) (EQUAL (LENGTH (FIXLENGTH N L DEFAULT)) N)), 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 (AND (LISTP L) (ZEROP N)) (p N L DEFAULT)) (IMPLIES (AND (LISTP L) (NOT (ZEROP N)) (p (SUB1 N) (CDR L) DEFAULT)) (p N L DEFAULT)) (IMPLIES (AND (NOT (LISTP L)) (ZEROP N)) (p N L DEFAULT)) (IMPLIES (AND (NOT (LISTP L)) (NOT (ZEROP N)) (p (SUB1 N) L DEFAULT)) (p N L DEFAULT))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP can be used to establish that the measure (COUNT N) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instances chosen for L. The above induction scheme generates four new goals: Case 4. (IMPLIES (AND (LISTP L) (ZEROP N) (NUMBERP N)) (EQUAL (LENGTH (FIXLENGTH N L DEFAULT)) N)), which simplifies, expanding ZEROP, NUMBERP, EQUAL, FIXLENGTH, LISTP, and LENGTH, to: T. Case 3. (IMPLIES (AND (LISTP L) (NOT (ZEROP N)) (EQUAL (LENGTH (FIXLENGTH (SUB1 N) (CDR L) DEFAULT)) (SUB1 N)) (NUMBERP N)) (EQUAL (LENGTH (FIXLENGTH N L DEFAULT)) N)), which simplifies, rewriting with ADD1-SUB1 and CDR-CONS, and unfolding the definitions of ZEROP, FIXLENGTH, and LENGTH, to: T. Case 2. (IMPLIES (AND (NOT (LISTP L)) (ZEROP N) (NUMBERP N)) (EQUAL (LENGTH (FIXLENGTH N L DEFAULT)) N)). This simplifies, opening up ZEROP, NUMBERP, EQUAL, FIXLENGTH, LISTP, and LENGTH, to: T. Case 1. (IMPLIES (AND (NOT (LISTP L)) (NOT (ZEROP N)) (EQUAL (LENGTH (FIXLENGTH (SUB1 N) L DEFAULT)) (SUB1 N)) (NUMBERP N)) (EQUAL (LENGTH (FIXLENGTH N L DEFAULT)) N)). This simplifies, applying the lemmas ADD1-SUB1 and CDR-CONS, and opening up ZEROP, FIXLENGTH, and LENGTH, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LENGTH-FIXLENGTH (DISABLE LENGTH-FIXLENGTH) [ 0.0 0.0 0.0 ] LENGTH-FIXLENGTH-OFF (PROVE-LEMMA APPEND-NON-LIST-LEFT (REWRITE) (IMPLIES (NOT (LISTP A)) (EQUAL (APPEND A B) B)) ((ENABLE APPEND) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, expanding APPEND, to: T. Q.E.D. [ 0.0 0.0 0.0 ] APPEND-NON-LIST-LEFT (DISABLE APPEND-NON-LIST-LEFT) [ 0.0 0.0 0.0 ] APPEND-NON-LIST-LEFT-OFF (PROVE-LEMMA APPEND-NON-LIST-LEFT-COROLLARY (REWRITE) (IMPLIES (EQUAL (LENGTH A) '0) (EQUAL (APPEND A B) B)) ((ENABLE APPEND LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. Let us appeal to the induction principle. 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 (AND (LISTP A) (p (CDR A) B)) (p A B)) (IMPLIES (NOT (LISTP A)) (p A B))). Linear arithmetic and the lemma CDR-LESSP 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. The above induction scheme leads to the following three new goals: Case 3. (IMPLIES (AND (LISTP A) (NOT (EQUAL (LENGTH (CDR A)) 0)) (EQUAL (LENGTH A) 0)) (EQUAL (APPEND A B) B)). This simplifies, expanding the definition of LENGTH, to: T. Case 2. (IMPLIES (AND (LISTP A) (EQUAL (APPEND (CDR A) B) B) (EQUAL (LENGTH A) 0)) (EQUAL (APPEND A B) B)). This simplifies, unfolding LENGTH, to: T. Case 1. (IMPLIES (AND (NOT (LISTP A)) (EQUAL (LENGTH A) 0)) (EQUAL (APPEND A B) B)). This simplifies, unfolding the definitions of LENGTH, EQUAL, and APPEND, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] APPEND-NON-LIST-LEFT-COROLLARY (DISABLE APPEND-NON-LIST-LEFT-COROLLARY) [ 0.0 0.0 0.0 ] APPEND-NON-LIST-LEFT-COROLLARY-OFF (PROVE-LEMMA APPEND-NIL-ON-RIGHT (REWRITE) (IMPLIES (PLISTP A) (EQUAL (APPEND A 'NIL) A)) ((ENABLE APPEND PLISTP) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. We will appeal to 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 (AND (LISTP A) (p (CDR A))) (p A)) (IMPLIES (NOT (LISTP A)) (p A))). Linear arithmetic and the lemma CDR-LESSP 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 three new formulas: Case 3. (IMPLIES (AND (LISTP A) (NOT (PLISTP (CDR A))) (PLISTP A)) (EQUAL (APPEND A NIL) A)). This simplifies, expanding the definition of PLISTP, to: T. Case 2. (IMPLIES (AND (LISTP A) (EQUAL (APPEND (CDR A) NIL) (CDR A)) (PLISTP A)) (EQUAL (APPEND A NIL) A)). This simplifies, applying CONS-CAR-CDR, and expanding the definitions of PLISTP and APPEND, to: T. Case 1. (IMPLIES (AND (NOT (LISTP A)) (PLISTP A)) (EQUAL (APPEND A NIL) A)), which simplifies, opening up PLISTP, APPEND, and EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] APPEND-NIL-ON-RIGHT (DISABLE APPEND-NIL-ON-RIGHT) [ 0.0 0.0 0.0 ] APPEND-NIL-ON-RIGHT-OFF (PROVE-LEMMA APPEND-CDR (REWRITE) (IMPLIES (LISTP A) (EQUAL (APPEND (CDR A) B) (CDR (APPEND A B)))) ((ENABLE APPEND) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, appealing to the lemma CDR-CONS, and opening up the definition of APPEND, to: T. Q.E.D. [ 0.0 0.0 0.0 ] APPEND-CDR (DISABLE APPEND-CDR) [ 0.0 0.0 0.0 ] APPEND-CDR-OFF (PROVE-LEMMA APPEND-CROCK (REWRITE) (EQUAL (APPEND (CONS A 'NIL) (APPEND B C)) (APPEND (CONS A B) C)) ((ENABLE APPEND) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, applying CDR-CONS and CAR-CONS, and unfolding APPEND and LISTP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] APPEND-CROCK (DISABLE APPEND-CROCK) [ 0.0 0.0 0.0 ] APPEND-CROCK-OFF (PROVE-LEMMA ASSOCIATIVITY-OF-APPEND (REWRITE) (EQUAL (APPEND (APPEND A B) C) (APPEND A (APPEND B C))) ((ENABLE APPEND) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 (AND (LISTP A) (p (CDR A) B C)) (p A B C)) (IMPLIES (NOT (LISTP A)) (p A B C))). Linear arithmetic and the lemma CDR-LESSP 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. The above induction scheme leads to two new goals: Case 2. (IMPLIES (AND (LISTP A) (EQUAL (APPEND (APPEND (CDR A) B) C) (APPEND (CDR A) (APPEND B C)))) (EQUAL (APPEND (APPEND A B) C) (APPEND A (APPEND B C)))), which simplifies, applying the lemmas CDR-CONS and CAR-CONS, and opening up the definition of APPEND, to: T. Case 1. (IMPLIES (NOT (LISTP A)) (EQUAL (APPEND (APPEND A B) C) (APPEND A (APPEND B C)))), which simplifies, unfolding the function APPEND, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] ASSOCIATIVITY-OF-APPEND (DISABLE ASSOCIATIVITY-OF-APPEND) [ 0.0 0.0 0.0 ] ASSOCIATIVITY-OF-APPEND-OFF (PROVE-LEMMA APPEND-FIXLENGTH (REWRITE) (EQUAL (APPEND (FIXLENGTH A 'NIL DEFAULT) (FIXLENGTH B 'NIL DEFAULT)) (FIXLENGTH (PLUS A B) 'NIL DEFAULT)) ((ENABLE FIXLENGTH APPEND) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 (ZEROP A) (p A DEFAULT B)) (IMPLIES (AND (NOT (ZEROP A)) (p (SUB1 A) DEFAULT B)) (p A DEFAULT B))). 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 formulas: Case 2. (IMPLIES (ZEROP A) (EQUAL (APPEND (FIXLENGTH A NIL DEFAULT) (FIXLENGTH B NIL DEFAULT)) (FIXLENGTH (PLUS A B) NIL DEFAULT))). This simplifies, opening up the definitions of ZEROP, EQUAL, LISTP, FIXLENGTH, APPEND, and PLUS, to the following two new goals: Case 2.2. (IMPLIES (AND (EQUAL A 0) (NOT (NUMBERP B))) (EQUAL (FIXLENGTH B NIL DEFAULT) (FIXLENGTH 0 NIL DEFAULT))). However this again simplifies, unfolding LISTP, FIXLENGTH, and EQUAL, to: T. Case 2.1. (IMPLIES (AND (NOT (NUMBERP A)) (NOT (NUMBERP B))) (EQUAL (FIXLENGTH B NIL DEFAULT) (FIXLENGTH 0 NIL DEFAULT))), which again simplifies, opening up LISTP, FIXLENGTH, and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP A)) (EQUAL (APPEND (FIXLENGTH (SUB1 A) NIL DEFAULT) (FIXLENGTH B NIL DEFAULT)) (FIXLENGTH (PLUS (SUB1 A) B) NIL DEFAULT))) (EQUAL (APPEND (FIXLENGTH A NIL DEFAULT) (FIXLENGTH B NIL DEFAULT)) (FIXLENGTH (PLUS A B) NIL DEFAULT))), which simplifies, rewriting with the lemmas CDR-CONS, CAR-CONS, and SUB1-ADD1, and opening up the functions ZEROP, FIXLENGTH, LISTP, APPEND, and PLUS, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] APPEND-FIXLENGTH (DISABLE APPEND-FIXLENGTH) [ 0.0 0.0 0.0 ] APPEND-FIXLENGTH-OFF (PROVE-LEMMA GETNTH-0-2 (REWRITE) (EQUAL (GETNTH '0 (CONS A (CONS B 'NIL))) A) ((ENABLE GETNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, rewriting with CAR-CONS, and unfolding EQUAL and GETNTH, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETNTH-0-2 (DISABLE GETNTH-0-2) [ 0.0 0.0 0.0 ] GETNTH-0-2-OFF (PROVE-LEMMA GETNTH-1-2 (REWRITE) (EQUAL (GETNTH '1 (CONS A (CONS B 'NIL))) B) ((ENABLE GETNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, rewriting with CDR-CONS and CAR-CONS, and unfolding SUB1, NUMBERP, EQUAL, and GETNTH, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETNTH-1-2 (DISABLE GETNTH-1-2) [ 0.0 0.0 0.0 ] GETNTH-1-2-OFF (PROVE-LEMMA LIST-GETNTH-0 (REWRITE) (IMPLIES (AND (PLISTP L) (EQUAL (LENGTH L) '1)) (EQUAL (CONS (GETNTH '0 L) 'NIL) L)) ((ENABLE PLISTP GETNTH LENGTH PLIST-OF-LENGTH-0 NON-ZERO-LENGTH-IMPLIES-LISTP) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, rewriting with NON-ZERO-LENGTH-IMPLIES-LISTP, and opening up the definitions of EQUAL and GETNTH, to the new goal: (IMPLIES (AND (PLISTP L) (EQUAL (LENGTH L) 1)) (EQUAL (LIST (CAR L)) L)). Applying the lemma CAR-CDR-ELIM, replace L by (CONS X Z) to eliminate (CAR L) and (CDR L). We thus obtain the following two new formulas: Case 2. (IMPLIES (AND (NOT (LISTP L)) (PLISTP L) (EQUAL (LENGTH L) 1)) (EQUAL (LIST (CAR L)) L)). However this further simplifies, appealing to the lemma NON-ZERO-LENGTH-IMPLIES-LISTP, and unfolding the definition of EQUAL, to: T. Case 1. (IMPLIES (AND (PLISTP (CONS X Z)) (EQUAL (LENGTH (CONS X Z)) 1)) (EQUAL (LIST X) (CONS X Z))), which further simplifies, rewriting with CDR-CONS, ADD1-EQUAL, CAR-CONS, and PLIST-OF-LENGTH-0, and opening up PLISTP, LENGTH, and NUMBERP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LIST-GETNTH-0 (DISABLE LIST-GETNTH-0) [ 0.0 0.0 0.0 ] LIST-GETNTH-0-OFF (PROVE-LEMMA OPEN-UP-GETNTH (REWRITE) (EQUAL (GETNTH (ADD1 N) (CONS A B)) (GETNTH N B)) ((ENABLE GETNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, applying CDR-CONS and SUB1-ADD1, and opening up the function GETNTH, to: (IMPLIES (NOT (NUMBERP N)) (EQUAL (GETNTH 0 B) (GETNTH N B))), which again simplifies, opening up the functions EQUAL and GETNTH, to: T. Q.E.D. [ 0.1 0.0 0.0 ] OPEN-UP-GETNTH (DISABLE OPEN-UP-GETNTH) [ 0.0 0.0 0.0 ] OPEN-UP-GETNTH-OFF (PROVE-LEMMA OPEN-UP-GETNTH1 (REWRITE) (IMPLIES (NOT (ZEROP N)) (EQUAL (GETNTH N (CONS A B)) (GETNTH (SUB1 N) B))) ((ENABLE GETNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, NOT, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N)) (EQUAL (GETNTH N (CONS A B)) (GETNTH (SUB1 N) B))), which simplifies, rewriting with CDR-CONS, and expanding the function GETNTH, to: T. Q.E.D. [ 0.0 0.0 0.0 ] OPEN-UP-GETNTH1 (DISABLE OPEN-UP-GETNTH1) [ 0.0 0.0 0.0 ] OPEN-UP-GETNTH1-OFF (PROVE-LEMMA OPEN-UP-GETNTH-ON-ZERO (REWRITE) (EQUAL (GETNTH '0 (CONS A B)) A) ((ENABLE GETNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, appealing to the lemma CAR-CONS, and expanding the functions EQUAL and GETNTH, to: T. Q.E.D. [ 0.0 0.0 0.0 ] OPEN-UP-GETNTH-ON-ZERO (DISABLE OPEN-UP-GETNTH-ON-ZERO) [ 0.0 0.0 0.0 ] OPEN-UP-GETNTH-ON-ZERO-OFF (PROVE-LEMMA GETNTH-WITH-NON-NUMBER-INDEX (REWRITE) (IMPLIES (NOT (NUMBERP N)) (EQUAL (GETNTH N L) (GETNTH '0 L))) ((ENABLE GETNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, opening up the functions GETNTH and EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETNTH-WITH-NON-NUMBER-INDEX (DISABLE GETNTH-WITH-NON-NUMBER-INDEX) [ 0.0 0.0 0.0 ] GETNTH-WITH-NON-NUMBER-INDEX-OFF (PROVE-LEMMA GETNTH-APPEND-FOR-LENGTH-LEFT (REWRITE) (EQUAL (GETNTH (LENGTH A) (APPEND A B)) (IF (LISTP B) (CAR B) '0)) ((ENABLE GETNTH APPEND LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, obviously, to two new formulas: Case 2. (IMPLIES (NOT (LISTP B)) (EQUAL (GETNTH (LENGTH A) (APPEND A B)) 0)), which we will name *1. Case 1. (IMPLIES (LISTP B) (EQUAL (GETNTH (LENGTH A) (APPEND A B)) (CAR B))). Appealing to the lemma CAR-CDR-ELIM, we now replace B by (CONS X Z) to eliminate (CAR B) and (CDR B). We must thus prove the conjecture: (EQUAL (GETNTH (LENGTH A) (APPEND A (CONS X Z))) 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 (GETNTH (LENGTH A) (APPEND A B)) (IF (LISTP B) (CAR B) 0)). We gave this the name *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 (AND (LISTP A) (p (CDR A) B)) (p A B)) (IMPLIES (NOT (LISTP A)) (p A B))). Linear arithmetic and the lemma CDR-LESSP 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 two new conjectures: Case 2. (IMPLIES (AND (LISTP A) (EQUAL (GETNTH (LENGTH (CDR A)) (APPEND (CDR A) B)) (IF (LISTP B) (CAR B) 0))) (EQUAL (GETNTH (LENGTH A) (APPEND A B)) (IF (LISTP B) (CAR B) 0))). This simplifies, applying CDR-CONS and SUB1-ADD1, and expanding the definitions of LENGTH, APPEND, GETNTH, and EQUAL, to: T. Case 1. (IMPLIES (NOT (LISTP A)) (EQUAL (GETNTH (LENGTH A) (APPEND A B)) (IF (LISTP B) (CAR B) 0))), which simplifies, opening up the functions LENGTH, APPEND, EQUAL, and GETNTH, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] GETNTH-APPEND-FOR-LENGTH-LEFT (DISABLE GETNTH-APPEND-FOR-LENGTH-LEFT) [ 0.0 0.0 0.0 ] GETNTH-APPEND-FOR-LENGTH-LEFT-OFF (PROVE-LEMMA GETNTH-APPEND-CASESPLIT (REWRITE) (EQUAL (GETNTH N (APPEND A B)) (IF (LESSP N (LENGTH A)) (GETNTH N A) (GETNTH (DIFFERENCE N (LENGTH A)) B))) ((ENABLE GETNTH APPEND CAR-APPEND APPEND-NON-LIST-LEFT LENGTH) (INDUCT (GETNTH N A)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to three new formulas: Case 3. (IMPLIES (AND (LISTP A) (ZEROP N)) (EQUAL (GETNTH N (APPEND A B)) (IF (LESSP N (LENGTH A)) (GETNTH N A) (GETNTH (DIFFERENCE N (LENGTH A)) B)))), which simplifies, applying CAR-APPEND, and opening up the definitions of ZEROP, EQUAL, GETNTH, LESSP, and DIFFERENCE, to the following eight new conjectures: Case 3.8. (IMPLIES (AND (LISTP A) (EQUAL N 0) (NOT (EQUAL (LENGTH A) 0)) (NOT (LISTP (APPEND A B)))) (EQUAL 0 (CAR A))). This again simplifies, obviously, to the new conjecture: (IMPLIES (AND (LISTP A) (NOT (EQUAL (LENGTH A) 0)) (NOT (LISTP (APPEND A B)))) (EQUAL 0 (CAR A))). Applying the lemma CAR-CDR-ELIM, replace A by (CONS X Z) to eliminate (CAR A) and (CDR A). We thus obtain: (IMPLIES (AND (NOT (EQUAL (LENGTH (CONS X Z)) 0)) (NOT (LISTP (APPEND (CONS X Z) B)))) (EQUAL 0 X)), which further simplifies, rewriting with CDR-CONS and CAR-CONS, and expanding LENGTH and APPEND, to: T. Case 3.7. (IMPLIES (AND (LISTP A) (EQUAL N 0) (EQUAL (LENGTH A) 0) (LISTP B) (NOT (LISTP (APPEND A B)))) (EQUAL 0 (CAR B))). This again simplifies, clearly, to: T. Case 3.6. (IMPLIES (AND (LISTP A) (EQUAL N 0) (EQUAL (LENGTH A) 0) (LISTP B) (LISTP (APPEND A B))) (EQUAL (CAR A) (CAR B))). This again simplifies, obviously, to the new conjecture: (IMPLIES (AND (LISTP A) (EQUAL (LENGTH A) 0) (LISTP B)) (EQUAL (CAR A) (CAR B))). Applying the lemma CAR-CDR-ELIM, replace A by (CONS X Z) to eliminate (CAR A) and (CDR A). We would thus like to prove: (IMPLIES (AND (EQUAL (LENGTH (CONS X Z)) 0) (LISTP B)) (EQUAL X (CAR B))), which further simplifies, applying CDR-CONS, and unfolding the definition of LENGTH, to: T. Case 3.5. (IMPLIES (AND (LISTP A) (EQUAL N 0) (EQUAL (LENGTH A) 0) (NOT (LISTP B)) (LISTP (APPEND A B))) (EQUAL (CAR A) 0)). This again simplifies, clearly, to: (IMPLIES (AND (LISTP A) (EQUAL (LENGTH A) 0) (NOT (LISTP B)) (LISTP (APPEND A B))) (EQUAL (CAR A) 0)). Applying the lemma CAR-CDR-ELIM, replace A by (CONS X Z) to eliminate (CAR A) and (CDR A). We thus obtain: (IMPLIES (AND (EQUAL (LENGTH (CONS X Z)) 0) (NOT (LISTP B)) (LISTP (APPEND (CONS X Z) B))) (EQUAL X 0)), which further simplifies, rewriting with CDR-CONS, and unfolding the function LENGTH, to: T. Case 3.4. (IMPLIES (AND (LISTP A) (NOT (NUMBERP N)) (NOT (EQUAL (LENGTH A) 0)) (NOT (LISTP (APPEND A B)))) (EQUAL 0 (CAR A))). Appealing to the lemma CAR-CDR-ELIM, we now replace A by (CONS X Z) to eliminate (CAR A) and (CDR A). We must thus prove: (IMPLIES (AND (NOT (NUMBERP N)) (NOT (EQUAL (LENGTH (CONS X Z)) 0)) (NOT (LISTP (APPEND (CONS X Z) B)))) (EQUAL 0 X)). But this further simplifies, applying CDR-CONS and CAR-CONS, and unfolding the definitions of LENGTH and APPEND, to: T. Case 3.3. (IMPLIES (AND (LISTP A) (NOT (NUMBERP N)) (EQUAL (LENGTH A) 0) (LISTP B) (NOT (LISTP (APPEND A B)))) (EQUAL 0 (CAR B))). This again simplifies, obviously, to: T. Case 3.2. (IMPLIES (AND (LISTP A) (NOT (NUMBERP N)) (EQUAL (LENGTH A) 0) (LISTP B) (LISTP (APPEND A B))) (EQUAL (CAR A) (CAR B))). This again simplifies, clearly, to: (IMPLIES (AND (LISTP A) (NOT (NUMBERP N)) (EQUAL (LENGTH A) 0) (LISTP B)) (EQUAL (CAR A) (CAR B))). Applying the lemma CAR-CDR-ELIM, replace A by (CONS X Z) to eliminate (CAR A) and (CDR A). We would thus like to prove: (IMPLIES (AND (NOT (NUMBERP N)) (EQUAL (LENGTH (CONS X Z)) 0) (LISTP B)) (EQUAL X (CAR B))), which further simplifies, appealing to the lemma CDR-CONS, and expanding the function LENGTH, to: T. Case 3.1. (IMPLIES (AND (LISTP A) (NOT (NUMBERP N)) (EQUAL (LENGTH A) 0) (NOT (LISTP B)) (LISTP (APPEND A B))) (EQUAL (CAR A) 0)). Applying the lemma CAR-CDR-ELIM, replace A by (CONS X Z) to eliminate (CAR A) and (CDR A). This produces: (IMPLIES (AND (NOT (NUMBERP N)) (EQUAL (LENGTH (CONS X Z)) 0) (NOT (LISTP B)) (LISTP (APPEND (CONS X Z) B))) (EQUAL X 0)), which further simplifies, rewriting with the lemma CDR-CONS, and unfolding LENGTH, to: T. Case 2. (IMPLIES (AND (LISTP A) (NOT (EQUAL N 0)) (NUMBERP N) (EQUAL (GETNTH (SUB1 N) (APPEND (CDR A) B)) (IF (LESSP (SUB1 N) (LENGTH (CDR A))) (GETNTH (SUB1 N) (CDR A)) (GETNTH (DIFFERENCE (SUB1 N) (LENGTH (CDR A))) B)))) (EQUAL (GETNTH N (APPEND A B)) (IF (LESSP N (LENGTH A)) (GETNTH N A) (GETNTH (DIFFERENCE N (LENGTH A)) B)))), which simplifies, rewriting with the lemmas CDR-CONS and SUB1-ADD1, and opening up APPEND, GETNTH, LENGTH, LESSP, and DIFFERENCE, to: T. Case 1. (IMPLIES (NOT (LISTP A)) (EQUAL (GETNTH N (APPEND A B)) (IF (LESSP N (LENGTH A)) (GETNTH N A) (GETNTH (DIFFERENCE N (LENGTH A)) B)))), which simplifies, appealing to the lemma APPEND-NON-LIST-LEFT, and opening up LENGTH, EQUAL, LESSP, and DIFFERENCE, to two new goals: Case 1.2. (IMPLIES (AND (NOT (LISTP A)) (NOT (NUMBERP N))) (EQUAL (GETNTH N B) (GETNTH 0 B))), which again simplifies, unfolding the functions GETNTH and EQUAL, to: T. Case 1.1. (IMPLIES (AND (NOT (LISTP A)) (EQUAL N 0)) (EQUAL (GETNTH N B) (GETNTH 0 B))), which again simplifies, obviously, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETNTH-APPEND-CASESPLIT (DISABLE GETNTH-APPEND-CASESPLIT) [ 0.0 0.0 0.0 ] GETNTH-APPEND-CASESPLIT-OFF (PROVE-LEMMA GETNTH-APPEND-RIGHT (REWRITE) (IMPLIES (IF (LESSP N (LENGTH A)) '*1*FALSE '*1*TRUE) (EQUAL (GETNTH N (APPEND A B)) (GETNTH (DIFFERENCE N (LENGTH A)) B))) ((ENABLE GETNTH-APPEND-CASESPLIT LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, applying GETNTH-APPEND-CASESPLIT, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETNTH-APPEND-RIGHT (DISABLE GETNTH-APPEND-RIGHT) [ 0.0 0.0 0.0 ] GETNTH-APPEND-RIGHT-OFF (PROVE-LEMMA GETNTH-APPEND-LEFT (REWRITE) (IMPLIES (LESSP N (LENGTH A)) (EQUAL (GETNTH N (APPEND A B)) (GETNTH N A))) ((ENABLE GETNTH-APPEND-CASESPLIT LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, applying GETNTH-APPEND-CASESPLIT, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETNTH-APPEND-LEFT (DISABLE GETNTH-APPEND-LEFT) [ 0.0 0.0 0.0 ] GETNTH-APPEND-LEFT-OFF (PROVE-LEMMA GETNTH-PUTNTH-CASESPLIT (REWRITE) (EQUAL (GETNTH I (PUTNTH V J L)) (IF (LESSP I (LENGTH L)) (IF (EQUAL (FIX I) (FIX J)) V (GETNTH I L)) (GETNTH I L))) ((ENABLE GETNTH PUTNTH LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, opening up FIX, to eight new goals: Case 8. (IMPLIES (AND (NUMBERP J) (NUMBERP I) (NOT (EQUAL I J))) (EQUAL (GETNTH I (PUTNTH V J L)) (GETNTH I L))), which we will name *1. Case 7. (IMPLIES (AND (NUMBERP J) (NOT (NUMBERP I)) (NOT (EQUAL 0 J))) (EQUAL (GETNTH I (PUTNTH V J L)) (GETNTH I L))). But this again simplifies, unfolding the definition of GETNTH, to three new conjectures: Case 7.3. (IMPLIES (AND (NUMBERP J) (NOT (NUMBERP I)) (NOT (EQUAL 0 J)) (NOT (LISTP L)) (LISTP (PUTNTH V J L))) (EQUAL (CAR (PUTNTH V J L)) 0)), which again simplifies, unfolding the function PUTNTH, to: T. Case 7.2. (IMPLIES (AND (NUMBERP J) (NOT (NUMBERP I)) (NOT (EQUAL 0 J)) (LISTP L) (NOT (LISTP (PUTNTH V J L)))) (EQUAL 0 (CAR L))), which again simplifies, obviously, to: T. Case 7.1. (IMPLIES (AND (NUMBERP J) (NOT (NUMBERP I)) (NOT (EQUAL 0 J)) (LISTP L) (LISTP (PUTNTH V J L))) (EQUAL (CAR (PUTNTH V J L)) (CAR L))). This again simplifies, obviously, to: (IMPLIES (AND (NUMBERP J) (NOT (NUMBERP I)) (NOT (EQUAL 0 J)) (LISTP L)) (EQUAL (CAR (PUTNTH V J L)) (CAR L))). Applying the lemma CAR-CDR-ELIM, replace L by (CONS X Z) to eliminate (CAR L) and (CDR L). We would thus like to prove the new goal: (IMPLIES (AND (NUMBERP J) (NOT (NUMBERP I)) (NOT (EQUAL 0 J))) (EQUAL (CAR (PUTNTH V J (CONS X Z))) X)), which further simplifies, applying CDR-CONS and CAR-CONS, and expanding the function PUTNTH, to: T. Case 6. (IMPLIES (AND (NOT (NUMBERP J)) (NUMBERP I) (NOT (EQUAL I 0))) (EQUAL (GETNTH I (PUTNTH V J L)) (GETNTH I L))). However this again simplifies, expanding the function PUTNTH, to: (IMPLIES (AND (NOT (NUMBERP J)) (NUMBERP I) (NOT (EQUAL I 0)) (LISTP L)) (EQUAL (GETNTH I (CONS V (CDR L))) (GETNTH I L))). However this again simplifies, rewriting with CDR-CONS, and expanding the definition of GETNTH, to the new conjecture: (IMPLIES (AND (NOT (NUMBERP J)) (NUMBERP I) (NOT (EQUAL I 0)) (LISTP L)) (EQUAL (GETNTH (SUB1 I) (CDR L)) (GETNTH I L))), which again simplifies, expanding GETNTH, to: T. Case 5. (IMPLIES (NOT (LESSP I (LENGTH L))) (EQUAL (GETNTH I (PUTNTH V J L)) (GETNTH I L))), 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 (GETNTH I (PUTNTH V J L)) (IF (LESSP I (LENGTH L)) (IF (EQUAL (FIX I) (FIX J)) V (GETNTH I L)) (GETNTH I L))). We named this *1. We will try to prove it by induction. There are nine plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP (PUTNTH V J L)) (ZEROP I)) (p I V J L)) (IMPLIES (AND (LISTP (PUTNTH V J L)) (NOT (ZEROP I)) (p (SUB1 I) V (SUB1 J) (CDR L))) (p I V J L)) (IMPLIES (NOT (LISTP (PUTNTH V J L))) (p I V J L))). 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 induction step of the scheme. Note, however, the inductive instances chosen for J and L. The above induction scheme produces three new conjectures: Case 3. (IMPLIES (AND (LISTP (PUTNTH V J L)) (ZEROP I)) (EQUAL (GETNTH I (PUTNTH V J L)) (IF (LESSP I (LENGTH L)) (IF (EQUAL (FIX I) (FIX J)) V (GETNTH I L)) (GETNTH I L)))), which simplifies, expanding the definitions of PUTNTH, ZEROP, EQUAL, GETNTH, LENGTH, LESSP, and FIX, to ten new goals: Case 3.10. (IMPLIES (AND (LISTP L) (EQUAL I 0) (NUMBERP J) (NOT (EQUAL 0 J)) (NOT (EQUAL J 0))) (EQUAL (CAR (CONS (CAR L) (PUTNTH V (SUB1 J) (CDR L)))) (CAR L))), which again simplifies, applying CAR-CONS, to: T. Case 3.9. (IMPLIES (AND (LISTP L) (EQUAL I 0) (NUMBERP J) (NOT (EQUAL 0 J)) (EQUAL J 0)) (EQUAL (CAR (CONS V (CDR L))) (CAR L))). This again simplifies, obviously, to: T. Case 3.8. (IMPLIES (AND (LISTP L) (EQUAL I 0) (NUMBERP J) (EQUAL 0 J) (NOT (EQUAL J 0))) (EQUAL (CAR (CONS (CAR L) (PUTNTH V (SUB1 J) (CDR L)))) V)). This again simplifies, clearly, to: T. Case 3.7. (IMPLIES (AND (LISTP L) (EQUAL I 0) (EQUAL 0 J) (EQUAL J 0)) (EQUAL (CAR (CONS V (CDR L))) V)). However this again simplifies, rewriting with CAR-CONS, and expanding EQUAL, to: T. Case 3.6. (IMPLIES (AND (LISTP L) (EQUAL I 0) (NOT (NUMBERP J))) (EQUAL (CAR (CONS V (CDR L))) V)). However this again simplifies, rewriting with CAR-CONS, to: T. Case 3.5. (IMPLIES (AND (LISTP L) (NOT (NUMBERP I)) (NUMBERP J) (NOT (EQUAL 0 J)) (NOT (EQUAL J 0))) (EQUAL (CAR (CONS (CAR L) (PUTNTH V (SUB1 J) (CDR L)))) (CAR L))). But this again simplifies, appealing to the lemma CAR-CONS, to: T. Case 3.4. (IMPLIES (AND (LISTP L) (NOT (NUMBERP I)) (NUMBERP J) (NOT (EQUAL 0 J)) (EQUAL J 0)) (EQUAL (CAR (CONS V (CDR L))) (CAR L))), which again simplifies, trivially, to: T. Case 3.3. (IMPLIES (AND (LISTP L) (NOT (NUMBERP I)) (NUMBERP J) (EQUAL 0 J) (NOT (EQUAL J 0))) (EQUAL (CAR (CONS (CAR L) (PUTNTH V (SUB1 J) (CDR L)))) V)). This again simplifies, obviously, to: T. Case 3.2. (IMPLIES (AND (LISTP L) (NOT (NUMBERP I)) (EQUAL 0 J) (EQUAL J 0)) (EQUAL (CAR (CONS V (CDR L))) V)). This again simplifies, appealing to the lemma CAR-CONS, and unfolding EQUAL, to: T. Case 3.1. (IMPLIES (AND (LISTP L) (NOT (NUMBERP I)) (NOT (NUMBERP J))) (EQUAL (CAR (CONS V (CDR L))) V)), which again simplifies, applying CAR-CONS, to: T. Case 2. (IMPLIES (AND (LISTP (PUTNTH V J L)) (NOT (ZEROP I)) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) (IF (LESSP (SUB1 I) (LENGTH (CDR L))) (IF (EQUAL (FIX (SUB1 I)) (FIX (SUB1 J))) V (GETNTH (SUB1 I) (CDR L))) (GETNTH (SUB1 I) (CDR L))))) (EQUAL (GETNTH I (PUTNTH V J L)) (IF (LESSP I (LENGTH L)) (IF (EQUAL (FIX I) (FIX J)) V (GETNTH I L)) (GETNTH I L)))). This simplifies, rewriting with the lemma SUB1-ADD1, and expanding PUTNTH, ZEROP, FIX, LENGTH, LESSP, and GETNTH, to the following 15 new goals: Case 2.15. (IMPLIES (AND (LISTP L) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL (SUB1 I) (SUB1 J))) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) (GETNTH (SUB1 I) (CDR L))) (NUMBERP J) (NOT (EQUAL I J)) (NOT (EQUAL J 0))) (EQUAL (GETNTH I (CONS (CAR L) (PUTNTH V (SUB1 J) (CDR L)))) (GETNTH (SUB1 I) (CDR L)))). But this again simplifies, applying CDR-CONS, and expanding the definition of GETNTH, to: T. Case 2.14. (IMPLIES (AND (LISTP L) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL (SUB1 I) (SUB1 J))) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) (GETNTH (SUB1 I) (CDR L))) (NOT (LESSP (SUB1 I) (LENGTH (CDR L)))) (NOT (EQUAL J 0)) (NUMBERP J)) (EQUAL (GETNTH I (CONS (CAR L) (PUTNTH V (SUB1 J) (CDR L)))) (GETNTH (SUB1 I) (CDR L)))). This again simplifies, applying CDR-CONS, and opening up GETNTH, to: T. Case 2.13. (IMPLIES (AND (LISTP L) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL (SUB1 I) (SUB1 J))) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) (GETNTH (SUB1 I) (CDR L))) (NOT (NUMBERP J))) (EQUAL (GETNTH I (CONS V (CDR L))) (GETNTH (SUB1 I) (CDR L)))). But this again simplifies, appealing to the lemmas SUB1-NNUMBERP and CDR-CONS, and unfolding the definition of GETNTH, to: T. Case 2.12. (IMPLIES (AND (LISTP L) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL (SUB1 I) (SUB1 J))) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) (GETNTH (SUB1 I) (CDR L))) (NOT (LESSP (SUB1 I) (LENGTH (CDR L)))) (EQUAL J 0)) (EQUAL (GETNTH I (CONS V (CDR L))) (GETNTH (SUB1 I) (CDR L)))), which again simplifies, applying the lemma CDR-CONS, and expanding the functions SUB1, EQUAL, PUTNTH, and GETNTH, to: T. Case 2.11. (IMPLIES (AND (LISTP L) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL (SUB1 I) (SUB1 J))) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) (GETNTH (SUB1 I) (CDR L))) (NOT (EQUAL I J)) (EQUAL J 0)) (EQUAL (GETNTH I (CONS V (CDR L))) (GETNTH (SUB1 I) (CDR L)))), which again simplifies, appealing to the lemma CDR-CONS, and unfolding the functions SUB1, EQUAL, PUTNTH, and GETNTH, to: T. Case 2.10. (IMPLIES (AND (LISTP L) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL (SUB1 I) (SUB1 J))) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) (GETNTH (SUB1 I) (CDR L))) (LESSP (SUB1 I) (LENGTH (CDR L))) (NUMBERP J) (EQUAL I J) (NOT (EQUAL J 0))) (EQUAL (GETNTH I (CONS (CAR L) (PUTNTH V (SUB1 J) (CDR L)))) V)), which again simplifies, trivially, to: T. Case 2.9. (IMPLIES (AND (LISTP L) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL (SUB1 I) (SUB1 J))) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) (GETNTH (SUB1 I) (CDR L))) (LESSP (SUB1 I) (LENGTH (CDR L))) (NUMBERP J) (EQUAL I J) (EQUAL J 0)) (EQUAL (GETNTH I (CONS V (CDR L))) V)). This again simplifies, obviously, to: T. Case 2.8. (IMPLIES (AND (LISTP L) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (LESSP (SUB1 I) (LENGTH (CDR L)))) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) (GETNTH (SUB1 I) (CDR L))) (NOT (EQUAL J 0)) (NUMBERP J)) (EQUAL (GETNTH I (CONS (CAR L) (PUTNTH V (SUB1 J) (CDR L)))) (GETNTH (SUB1 I) (CDR L)))). But this again simplifies, rewriting with CDR-CONS, and opening up the definition of GETNTH, to: T. Case 2.7. (IMPLIES (AND (LISTP L) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (LESSP (SUB1 I) (LENGTH (CDR L)))) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) (GETNTH (SUB1 I) (CDR L))) (EQUAL J 0)) (EQUAL (GETNTH I (CONS V (CDR L))) (GETNTH (SUB1 I) (CDR L)))). However this again simplifies, appealing to the lemma CDR-CONS, and expanding the functions SUB1, EQUAL, PUTNTH, and GETNTH, to: T. Case 2.6. (IMPLIES (AND (LISTP L) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (LESSP (SUB1 I) (LENGTH (CDR L)))) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) (GETNTH (SUB1 I) (CDR L))) (NOT (NUMBERP J))) (EQUAL (GETNTH I (CONS V (CDR L))) (GETNTH (SUB1 I) (CDR L)))), which again simplifies, rewriting with CDR-CONS, and unfolding GETNTH, to: T. Case 2.5. (IMPLIES (AND (LISTP L) (NOT (EQUAL I 0)) (NUMBERP I) (LESSP (SUB1 I) (LENGTH (CDR L))) (EQUAL (SUB1 I) (SUB1 J)) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) V) (NUMBERP J) (NOT (EQUAL I J)) (NOT (EQUAL J 0))) (EQUAL (GETNTH I (CONS (CAR L) (PUTNTH V (SUB1 J) (CDR L)))) (GETNTH (SUB1 I) (CDR L)))). This again simplifies, using linear arithmetic, to: T. Case 2.4. (IMPLIES (AND (LISTP L) (NOT (EQUAL I 0)) (NUMBERP I) (LESSP (SUB1 I) (LENGTH (CDR L))) (EQUAL (SUB1 I) (SUB1 J)) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) V) (NOT (EQUAL I J)) (EQUAL J 0)) (EQUAL (GETNTH I (CONS V (CDR L))) (GETNTH (SUB1 I) (CDR L)))), which again simplifies, rewriting with CDR-CONS, and expanding SUB1, EQUAL, PUTNTH, and GETNTH, to the following two new conjectures: Case 2.4.2. (IMPLIES (AND (LISTP L) (NUMBERP I) (LESSP (SUB1 I) (LENGTH (CDR L))) (EQUAL (SUB1 I) 0) (LISTP (CDR L)) (EQUAL (CAR (CONS V (CDDR L))) V) (NOT (EQUAL I 0))) (EQUAL (CADR L) (GETNTH (SUB1 I) (CDR L)))). This again simplifies, appealing to the lemma CAR-CONS, and expanding EQUAL, LESSP, and GETNTH, to: T. Case 2.4.1. (IMPLIES (AND (LISTP L) (NUMBERP I) (LESSP (SUB1 I) (LENGTH (CDR L))) (EQUAL (SUB1 I) 0) (NOT (LISTP (CDR L))) (EQUAL 0 V) (NOT (EQUAL I 0))) (EQUAL 0 (GETNTH (SUB1 I) (CDR L)))), which again simplifies, expanding the functions EQUAL, LESSP, and GETNTH, to: T. Case 2.3. (IMPLIES (AND (LISTP L) (NOT (EQUAL I 0)) (NUMBERP I) (LESSP (SUB1 I) (LENGTH (CDR L))) (EQUAL (SUB1 I) (SUB1 J)) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) V) (NOT (NUMBERP J))) (EQUAL (GETNTH I (CONS V (CDR L))) (GETNTH (SUB1 I) (CDR L)))), which again simplifies, rewriting with SUB1-NNUMBERP and CDR-CONS, and opening up the functions GETNTH and EQUAL, to the following two new formulas: Case 2.3.2. (IMPLIES (AND (LISTP L) (NOT (EQUAL I 0)) (NUMBERP I) (LESSP (SUB1 I) (LENGTH (CDR L))) (EQUAL (SUB1 I) 0) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) V) (NOT (NUMBERP J)) (NOT (LISTP (CDR L)))) (EQUAL 0 (GETNTH (SUB1 I) (CDR L)))). This again simplifies, unfolding the definitions of EQUAL, LESSP, and GETNTH, to: T. Case 2.3.1. (IMPLIES (AND (LISTP L) (NOT (EQUAL I 0)) (NUMBERP I) (LESSP (SUB1 I) (LENGTH (CDR L))) (EQUAL (SUB1 I) 0) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) V) (NOT (NUMBERP J)) (LISTP (CDR L))) (EQUAL (CADR L) (GETNTH (SUB1 I) (CDR L)))), which again simplifies, expanding EQUAL, LESSP, and GETNTH, to: T. Case 2.2. (IMPLIES (AND (LISTP L) (NOT (EQUAL I 0)) (NUMBERP I) (LESSP (SUB1 I) (LENGTH (CDR L))) (EQUAL (SUB1 I) (SUB1 J)) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) V) (NUMBERP J) (EQUAL I J) (NOT (EQUAL J 0))) (EQUAL (GETNTH I (CONS (CAR L) (PUTNTH V (SUB1 J) (CDR L)))) V)), which again simplifies, applying the lemma CDR-CONS, and expanding the function GETNTH, to: T. Case 2.1. (IMPLIES (AND (LISTP L) (NOT (EQUAL I 0)) (NUMBERP I) (LESSP (SUB1 I) (LENGTH (CDR L))) (EQUAL (SUB1 I) (SUB1 J)) (EQUAL (GETNTH (SUB1 I) (PUTNTH V (SUB1 J) (CDR L))) V) (NUMBERP J) (EQUAL I J) (EQUAL J 0)) (EQUAL (GETNTH I (CONS V (CDR L))) V)), which again simplifies, clearly, to: T. Case 1. (IMPLIES (NOT (LISTP (PUTNTH V J L))) (EQUAL (GETNTH I (PUTNTH V J L)) (IF (LESSP I (LENGTH L)) (IF (EQUAL (FIX I) (FIX J)) V (GETNTH I L)) (GETNTH I L)))). This simplifies, expanding PUTNTH, GETNTH, LENGTH, EQUAL, and LESSP, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] GETNTH-PUTNTH-CASESPLIT (DISABLE GETNTH-PUTNTH-CASESPLIT) [ 0.0 0.0 0.0 ] GETNTH-PUTNTH-CASESPLIT-OFF (PROVE-LEMMA GETNTH-PUTNTH-COINCIDENCE (REWRITE) (IMPLIES (LESSP N (LENGTH L)) (EQUAL (GETNTH N (PUTNTH V N L)) V)) ((ENABLE GETNTH-PUTNTH-CASESPLIT LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, appealing to the lemma GETNTH-PUTNTH-CASESPLIT, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETNTH-PUTNTH-COINCIDENCE (DISABLE GETNTH-PUTNTH-COINCIDENCE) [ 0.0 0.0 0.0 ] GETNTH-PUTNTH-COINCIDENCE-OFF (PROVE-LEMMA GETNTH-PUTNTH-NON-INTERFERENCE (REWRITE) (IMPLIES (NOT (EQUAL (FIX I) (FIX J))) (EQUAL (GETNTH I (PUTNTH V J L)) (GETNTH I L))) ((ENABLE GETNTH-PUTNTH-CASESPLIT) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, applying the lemma GETNTH-PUTNTH-CASESPLIT, and unfolding FIX and LESSP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETNTH-PUTNTH-NON-INTERFERENCE (DISABLE GETNTH-PUTNTH-NON-INTERFERENCE) [ 0.0 0.0 0.0 ] GETNTH-PUTNTH-NON-INTERFERENCE-OFF (PROVE-LEMMA GETNTH-GETSEG-ZERO-INDEX (REWRITE) (IMPLIES (AND (NOT (ZEROP K)) (ZEROP I)) (EQUAL (GETNTH I (GETSEG N K L)) (GETNTH N L))) ((ENABLE GETNTH GETSEG) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, NOT, AND, and IMPLIES, to the new formula: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (ZEROP I)) (EQUAL (GETNTH I (GETSEG N K L)) (GETNTH N L))), which simplifies, opening up the functions ZEROP, EQUAL, and GETNTH, to four new goals: Case 4. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL I 0) (NOT (LISTP (GETSEG N K L)))) (EQUAL 0 (GETNTH N L))), which again simplifies, clearly, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (LISTP (GETSEG N K L)))) (EQUAL 0 (GETNTH N L))), which we will name *1. Case 3. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL I 0) (LISTP (GETSEG N K L))) (EQUAL (CAR (GETSEG N K L)) (GETNTH N L))). This again simplifies, clearly, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP (GETSEG N K L))) (EQUAL (CAR (GETSEG N K L)) (GETNTH N L))), 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 (NOT (ZEROP K)) (ZEROP I)) (EQUAL (GETNTH I (GETSEG N K L)) (GETNTH N L))). We named this *1. We will try to prove it by induction. There are four plausible inductions. They merge into three likely candidate inductions, two 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 K) (p I N K L)) (IMPLIES (AND (NOT (ZEROP K)) (p I (ADD1 N) (SUB1 K) L)) (p I N K L))). 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. Note, however, the inductive instance chosen for N. The above induction scheme produces the following two new conjectures: Case 2. (IMPLIES (AND (ZEROP (SUB1 K)) (NOT (ZEROP K)) (ZEROP I)) (EQUAL (GETNTH I (GETSEG N K L)) (GETNTH N L))). This simplifies, rewriting with the lemma CAR-CONS, and opening up the functions ZEROP, GETSEG, EQUAL, and GETNTH, to: T. Case 1. (IMPLIES (AND (EQUAL (GETNTH I (GETSEG (ADD1 N) (SUB1 K) L)) (GETNTH (ADD1 N) L)) (NOT (ZEROP K)) (ZEROP I)) (EQUAL (GETNTH I (GETSEG N K L)) (GETNTH N L))). This simplifies, rewriting with SUB1-ADD1 and CAR-CONS, and opening up the definitions of GETNTH, ZEROP, GETSEG, and EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.1 ] GETNTH-GETSEG-ZERO-INDEX (DISABLE GETNTH-GETSEG-ZERO-INDEX) [ 0.0 0.0 0.0 ] GETNTH-GETSEG-ZERO-INDEX-OFF (DEFN GETNTH-GETSEG-INDUCTION (I N K) (IF (OR (ZEROP I) (ZEROP K)) '0 (GETNTH-GETSEG-INDUCTION (SUB1 I) (ADD1 N) (SUB1 K))) NIL) Linear arithmetic, the lemma COUNT-NUMBERP, and the definitions of OR and ZEROP inform us that the measure (COUNT I) decreases according to the well-founded relation LESSP in each recursive call. Hence, GETNTH-GETSEG-INDUCTION is accepted under the definitional principle. The definition of GETNTH-GETSEG-INDUCTION can be justified in another way. Linear arithmetic, the lemma COUNT-NUMBERP, and the definitions of OR and ZEROP inform us that the measure (COUNT K) decreases according to the well-founded relation LESSP in each recursive call. From the definition we can conclude that (NUMBERP (GETNTH-GETSEG-INDUCTION I N K)) is a theorem. [ 0.0 0.0 0.0 ] GETNTH-GETSEG-INDUCTION (PROVE-LEMMA GETNTH-GETSEG (REWRITE) (IMPLIES (LESSP I K) (EQUAL (GETNTH I (GETSEG N K L)) (GETNTH (PLUS N I) L))) ((ENABLE GETSEG GETNTH GETNTH-GETSEG-ZERO-INDEX PLUS-0 PLUS-ADD1 PLUS-RIGHT-ID2) (INDUCT (GETNTH-GETSEG-INDUCTION I N K)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to two new formulas: Case 2. (IMPLIES (AND (OR (ZEROP I) (ZEROP K)) (LESSP I K)) (EQUAL (GETNTH I (GETSEG N K L)) (GETNTH (PLUS N I) L))), which simplifies, applying the lemmas GETNTH-GETSEG-ZERO-INDEX, PLUS-0, and PLUS-RIGHT-ID2, and unfolding the definitions of ZEROP, OR, EQUAL, and LESSP, to two new conjectures: Case 2.2. (IMPLIES (AND (EQUAL I 0) (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N))) (EQUAL (GETNTH N L) (GETNTH 0 L))), which again simplifies, opening up the definitions of GETNTH and EQUAL, to: T. Case 2.1. (IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N))) (EQUAL (GETNTH N L) (GETNTH 0 L))), which again simplifies, expanding GETNTH and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL K 0)) (NUMBERP K) (IMPLIES (LESSP (SUB1 I) (SUB1 K)) (EQUAL (GETNTH (SUB1 I) (GETSEG (ADD1 N) (SUB1 K) L)) (GETNTH (PLUS (ADD1 N) (SUB1 I)) L))) (LESSP I K)) (EQUAL (GETNTH I (GETSEG N K L)) (GETNTH (PLUS N I) L))), which simplifies, rewriting with SUB1-ADD1 and CDR-CONS, and unfolding the functions PLUS, GETNTH, IMPLIES, LESSP, GETSEG, and EQUAL, to the following two new goals: Case 1.2. (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL K 0)) (NUMBERP K) (LISTP L) (NUMBERP N) (EQUAL (GETNTH (SUB1 I) (GETSEG (ADD1 N) (SUB1 K) L)) (GETNTH (PLUS N (SUB1 I)) (CDR L))) (LESSP (SUB1 I) (SUB1 K))) (EQUAL (GETNTH (PLUS N (SUB1 I)) (CDR L)) (GETNTH (PLUS N I) L))). Appealing to the lemma SUB1-ELIM, we now replace I by (ADD1 X) to eliminate (SUB1 I). We employ the type restriction lemma noted when SUB1 was introduced to constrain the new variable. The result is: (IMPLIES (AND (NUMBERP X) (NOT (EQUAL (ADD1 X) 0)) (NOT (EQUAL K 0)) (NUMBERP K) (LISTP L) (NUMBERP N) (EQUAL (GETNTH X (GETSEG (ADD1 N) (SUB1 K) L)) (GETNTH (PLUS N X) (CDR L))) (LESSP X (SUB1 K))) (EQUAL (GETNTH (PLUS N X) (CDR L)) (GETNTH (PLUS N (ADD1 X)) L))). However this further simplifies, appealing to the lemmas PLUS-ADD1 and SUB1-ADD1, and unfolding the definition of GETNTH, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL K 0)) (NUMBERP K) (LISTP L) (NOT (NUMBERP N)) (EQUAL (GETNTH (SUB1 I) (GETSEG (ADD1 N) (SUB1 K) L)) (GETNTH (PLUS 0 (SUB1 I)) (CDR L))) (LESSP (SUB1 I) (SUB1 K))) (EQUAL (GETNTH I (GETSEG N K L)) (GETNTH I L))), which again simplifies, rewriting with SUB1-TYPE-RESTRICTION, and unfolding the functions EQUAL and PLUS, to the new conjecture: (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I) (NOT (EQUAL K 0)) (NUMBERP K) (LISTP L) (NOT (NUMBERP N)) (EQUAL (GETNTH (SUB1 I) (GETSEG 1 (SUB1 K) L)) (GETNTH (SUB1 I) (CDR L))) (LESSP (SUB1 I) (SUB1 K))) (EQUAL (GETNTH I (GETSEG N K L)) (GETNTH I L))), which again simplifies, applying SUB1-TYPE-RESTRICTION and CDR-CONS, and expanding GETNTH and GETSEG, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETNTH-GETSEG (DISABLE GETNTH-GETSEG) [ 0.0 0.0 0.0 ] GETNTH-GETSEG-OFF (PROVE-LEMMA GETNTH-GETSEG-INVERSE (REWRITE) (IMPLIES (LESSP I K) (EQUAL (GETNTH (PLUS N I) L) (GETNTH I (GETSEG N K L)))) ((ENABLE GETNTH-GETSEG) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) WARNING: Note that GETNTH-GETSEG-INVERSE contains the free variable K which will be chosen by instantiating the hypothesis (LESSP I K). This conjecture simplifies, rewriting with GETNTH-GETSEG, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETNTH-GETSEG-INVERSE (DISABLE GETNTH-GETSEG-INVERSE) [ 0.0 0.0 0.0 ] GETNTH-GETSEG-INVERSE-OFF (PROVE-LEMMA GETNTH-AFTER-PUTSEG (REWRITE) (IMPLIES (IF (LESSP I (PLUS N (LENGTH S))) '*1*FALSE '*1*TRUE) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH I L))) ((ENABLE PUTSEG GETNTH GETNTH-PUTNTH-CASESPLIT LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Call the conjecture *1. Let us appeal to the induction principle. Seven inductions are suggested by terms in the conjecture. They merge into three likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP S) (p I (CDR S) (ADD1 N) L)) (p I S N L)) (IMPLIES (NOT (LISTP S)) (p I S N L))). Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT S) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for N. The above induction scheme produces three new goals: Case 3. (IMPLIES (AND (LISTP S) (LESSP I (PLUS (ADD1 N) (LENGTH (CDR S)))) (NOT (LESSP I (PLUS N (LENGTH S))))) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH I L))), which simplifies, rewriting with SUB1-ADD1 and GETNTH-PUTNTH-CASESPLIT, and opening up the definitions of PLUS, LESSP, LENGTH, EQUAL, PUTSEG, GETNTH, and NUMBERP, to the following 27 new conjectures: Case 3.27. (IMPLIES (AND (LISTP S) (EQUAL I 0) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (NOT (LISTP L)) (EQUAL (LENGTH (PUTSEG (CDR S) (ADD1 N) L)) 0) (LISTP (PUTSEG (CDR S) (ADD1 N) L))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) 0)). This again simplifies, using linear arithmetic, to: T. Case 3.26. (IMPLIES (AND (LISTP S) (EQUAL I 0) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (NOT (LISTP L)) (NUMBERP N) (NOT (EQUAL 0 N)) (LISTP (PUTSEG (CDR S) (ADD1 N) L))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) 0)), which again simplifies, using linear arithmetic, to: T. Case 3.25. (IMPLIES (AND (LISTP S) (EQUAL I 0) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (NOT (LISTP L)) (NOT (EQUAL (LENGTH (PUTSEG (CDR S) (ADD1 N) L)) 0)) (NOT (NUMBERP N))) (EQUAL (CAR S) 0)), which again simplifies, using linear arithmetic, to: T. Case 3.24. (IMPLIES (AND (LISTP S) (EQUAL I 0) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (NOT (LISTP L)) (NOT (EQUAL (LENGTH (PUTSEG (CDR S) (ADD1 N) L)) 0)) (EQUAL 0 N)) (EQUAL (CAR S) 0)), which again simplifies, using linear arithmetic, to: T. Case 3.23. (IMPLIES (AND (LISTP S) (EQUAL I 0) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (LISTP L) (EQUAL (LENGTH (PUTSEG (CDR S) (ADD1 N) L)) 0) (LISTP (PUTSEG (CDR S) (ADD1 N) L))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) (CAR L))), which again simplifies, using linear arithmetic, to: T. Case 3.22. (IMPLIES (AND (LISTP S) (EQUAL I 0) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (LISTP L) (NUMBERP N) (NOT (EQUAL 0 N)) (LISTP (PUTSEG (CDR S) (ADD1 N) L))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) (CAR L))), which again simplifies, using linear arithmetic, to: T. Case 3.21. (IMPLIES (AND (LISTP S) (EQUAL I 0) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (LISTP L) (EQUAL (LENGTH (PUTSEG (CDR S) (ADD1 N) L)) 0) (NOT (LISTP (PUTSEG (CDR S) (ADD1 N) L)))) (EQUAL 0 (CAR L))), which again simplifies, trivially, to: T. Case 3.20. (IMPLIES (AND (LISTP S) (EQUAL I 0) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (LISTP L) (NUMBERP N) (NOT (EQUAL 0 N)) (NOT (LISTP (PUTSEG (CDR S) (ADD1 N) L)))) (EQUAL 0 (CAR L))). This again simplifies, obviously, to: T. Case 3.19. (IMPLIES (AND (LISTP S) (EQUAL I 0) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (LISTP L) (NOT (EQUAL (LENGTH (PUTSEG (CDR S) (ADD1 N) L)) 0)) (NOT (NUMBERP N))) (EQUAL (CAR S) (CAR L))). However this again simplifies, using linear arithmetic, to: T. Case 3.18. (IMPLIES (AND (LISTP S) (EQUAL I 0) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (LISTP L) (NOT (EQUAL (LENGTH (PUTSEG (CDR S) (ADD1 N) L)) 0)) (EQUAL 0 N)) (EQUAL (CAR S) (CAR L))), which again simplifies, using linear arithmetic, to: T. Case 3.17. (IMPLIES (AND (LISTP S) (NOT (NUMBERP I)) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (NOT (LISTP L)) (EQUAL (LENGTH (PUTSEG (CDR S) (ADD1 N) L)) 0) (LISTP (PUTSEG (CDR S) (ADD1 N) L))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) 0)), which again simplifies, using linear arithmetic, to: T. Case 3.16. (IMPLIES (AND (LISTP S) (NOT (NUMBERP I)) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (NOT (LISTP L)) (NUMBERP N) (NOT (EQUAL 0 N)) (LISTP (PUTSEG (CDR S) (ADD1 N) L))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) 0)), which again simplifies, using linear arithmetic, to: T. Case 3.15. (IMPLIES (AND (LISTP S) (NOT (NUMBERP I)) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (NOT (LISTP L)) (NOT (EQUAL (LENGTH (PUTSEG (CDR S) (ADD1 N) L)) 0)) (NOT (NUMBERP N))) (EQUAL (CAR S) 0)), which again simplifies, using linear arithmetic, to: T. Case 3.14. (IMPLIES (AND (LISTP S) (NOT (NUMBERP I)) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (NOT (LISTP L)) (NOT (EQUAL (LENGTH (PUTSEG (CDR S) (ADD1 N) L)) 0)) (EQUAL 0 N)) (EQUAL (CAR S) 0)), which again simplifies, using linear arithmetic, to: T. Case 3.13. (IMPLIES (AND (LISTP S) (NOT (NUMBERP I)) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (LISTP L) (EQUAL (LENGTH (PUTSEG (CDR S) (ADD1 N) L)) 0) (LISTP (PUTSEG (CDR S) (ADD1 N) L))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) (CAR L))), which again simplifies, using linear arithmetic, to: T. Case 3.12. (IMPLIES (AND (LISTP S) (NOT (NUMBERP I)) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (LISTP L) (NUMBERP N) (NOT (EQUAL 0 N)) (LISTP (PUTSEG (CDR S) (ADD1 N) L))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) (CAR L))), which again simplifies, using linear arithmetic, to: T. Case 3.11. (IMPLIES (AND (LISTP S) (NOT (NUMBERP I)) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (LISTP L) (EQUAL (LENGTH (PUTSEG (CDR S) (ADD1 N) L)) 0) (NOT (LISTP (PUTSEG (CDR S) (ADD1 N) L)))) (EQUAL 0 (CAR L))), which again simplifies, trivially, to: T. Case 3.10. (IMPLIES (AND (LISTP S) (NOT (NUMBERP I)) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (LISTP L) (NUMBERP N) (NOT (EQUAL 0 N)) (NOT (LISTP (PUTSEG (CDR S) (ADD1 N) L)))) (EQUAL 0 (CAR L))). This again simplifies, obviously, to: T. Case 3.9. (IMPLIES (AND (LISTP S) (NOT (NUMBERP I)) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (LISTP L) (NOT (EQUAL (LENGTH (PUTSEG (CDR S) (ADD1 N) L)) 0)) (NOT (NUMBERP N))) (EQUAL (CAR S) (CAR L))). However this again simplifies, using linear arithmetic, to: T. Case 3.8. (IMPLIES (AND (LISTP S) (NOT (NUMBERP I)) (EQUAL (PLUS N (ADD1 (LENGTH (CDR S)))) 0) (LISTP L) (NOT (EQUAL (LENGTH (PUTSEG (CDR S) (ADD1 N) L)) 0)) (EQUAL 0 N)) (EQUAL (CAR S) (CAR L))), which again simplifies, using linear arithmetic, to: T. Case 3.7. (IMPLIES (AND (LISTP S) (NOT (NUMBERP N)) (LESSP (SUB1 I) (PLUS 0 (LENGTH (CDR S)))) (NOT (EQUAL I 0)) (NUMBERP I) (NOT (LESSP (SUB1 I) (LENGTH (CDR S))))) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 3.6. (IMPLIES (AND (LISTP S) (NUMBERP N) (LESSP (SUB1 I) (PLUS N (LENGTH (CDR S)))) (NOT (LESSP I (PLUS N (ADD1 (LENGTH (CDR S)))))) (NUMBERP I) (NOT (EQUAL I N))) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 3.5. (IMPLIES (AND (LISTP S) (NUMBERP N) (LESSP (SUB1 I) (PLUS N (LENGTH (CDR S)))) (NOT (LESSP I (PLUS N (ADD1 (LENGTH (CDR S)))))) (NOT (LESSP I (LENGTH (PUTSEG (CDR S) (ADD1 N) L))))) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 3.4. (IMPLIES (AND (LISTP S) (NUMBERP N) (LESSP (SUB1 I) (PLUS N (LENGTH (CDR S)))) (NOT (LESSP I (PLUS N (ADD1 (LENGTH (CDR S)))))) (LESSP I (LENGTH (PUTSEG (CDR S) (ADD1 N) L))) (NUMBERP I) (EQUAL I N)) (EQUAL (CAR S) (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 3.3. (IMPLIES (AND (LISTP S) (NUMBERP N) (LESSP (SUB1 I) (PLUS N (LENGTH (CDR S)))) (NOT (LESSP I (PLUS N (ADD1 (LENGTH (CDR S)))))) (LESSP I (LENGTH (PUTSEG (CDR S) (ADD1 N) L))) (NOT (NUMBERP I)) (EQUAL 0 N)) (EQUAL (CAR S) (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 3.2. (IMPLIES (AND (LISTP S) (NUMBERP N) (LESSP (SUB1 I) (PLUS N (LENGTH (CDR S)))) (NOT (LESSP I (PLUS N (ADD1 (LENGTH (CDR S)))))) (LESSP I (LENGTH (PUTSEG (CDR S) (ADD1 N) L))) (NOT (NUMBERP I)) (NOT (EQUAL 0 N)) (LISTP (PUTSEG (CDR S) (ADD1 N) L))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 3.1. (IMPLIES (AND (LISTP S) (NUMBERP N) (LESSP (SUB1 I) (PLUS N (LENGTH (CDR S)))) (NOT (LESSP I (PLUS N (ADD1 (LENGTH (CDR S)))))) (LESSP I (LENGTH (PUTSEG (CDR S) (ADD1 N) L))) (NOT (NUMBERP I)) (NOT (EQUAL 0 N)) (NOT (LISTP (PUTSEG (CDR S) (ADD1 N) L)))) (EQUAL 0 (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (LISTP S) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L)) (NOT (LESSP I (PLUS N (LENGTH S))))) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH I L))), which simplifies, rewriting with GETNTH-PUTNTH-CASESPLIT, and unfolding LENGTH, PUTSEG, and GETNTH, to the following six new goals: Case 2.6. (IMPLIES (AND (LISTP S) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L)) (NOT (LESSP I (PLUS N (ADD1 (LENGTH (CDR S)))))) (LESSP I (LENGTH (PUTSEG (CDR S) (ADD1 N) L))) (NOT (NUMBERP I)) (EQUAL 0 N)) (EQUAL (CAR S) (GETNTH I L))). But this again simplifies, opening up GETNTH, EQUAL, PLUS, and LESSP, to: T. Case 2.5. (IMPLIES (AND (LISTP S) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L)) (NOT (LESSP I (PLUS N (ADD1 (LENGTH (CDR S)))))) (LESSP I (LENGTH (PUTSEG (CDR S) (ADD1 N) L))) (NOT (NUMBERP I)) (NOT (NUMBERP N))) (EQUAL (CAR S) (GETNTH I L))), which again simplifies, unfolding GETNTH, PLUS, and LESSP, to: T. Case 2.4. (IMPLIES (AND (LISTP S) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L)) (NOT (LESSP I (PLUS N (ADD1 (LENGTH (CDR S)))))) (LESSP I (LENGTH (PUTSEG (CDR S) (ADD1 N) L))) (NOT (NUMBERP N)) (EQUAL I 0)) (EQUAL (CAR S) (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 2.3. (IMPLIES (AND (LISTP S) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L)) (NOT (LESSP I (PLUS N (ADD1 (LENGTH (CDR S)))))) (LESSP I (LENGTH (PUTSEG (CDR S) (ADD1 N) L))) (NUMBERP I) (NUMBERP N) (EQUAL I N)) (EQUAL (CAR S) (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 2.2. (IMPLIES (AND (LISTP S) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L)) (NOT (LESSP I (PLUS N (ADD1 (LENGTH (CDR S)))))) (LESSP I (LENGTH (PUTSEG (CDR S) (ADD1 N) L))) (NOT (NUMBERP I)) (NUMBERP N) (NOT (EQUAL 0 N)) (NOT (LISTP (PUTSEG (CDR S) (ADD1 N) L)))) (EQUAL 0 (GETNTH I L))), which again simplifies, expanding the functions GETNTH, LESSP, LENGTH, and EQUAL, to: T. Case 2.1. (IMPLIES (AND (LISTP S) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L)) (NOT (LESSP I (PLUS N (ADD1 (LENGTH (CDR S)))))) (LESSP I (LENGTH (PUTSEG (CDR S) (ADD1 N) L))) (NOT (NUMBERP I)) (NUMBERP N) (NOT (EQUAL 0 N)) (LISTP (PUTSEG (CDR S) (ADD1 N) L))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L))), which again simplifies, unfolding the definitions of GETNTH, LESSP, and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (LISTP S)) (NOT (LESSP I (PLUS N (LENGTH S))))) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH I L))), which simplifies, opening up LENGTH and PUTSEG, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] GETNTH-AFTER-PUTSEG (DISABLE GETNTH-AFTER-PUTSEG) [ 0.0 0.0 0.0 ] GETNTH-AFTER-PUTSEG-OFF (PROVE-LEMMA GETNTH-BEFORE-PUTSEG (REWRITE) (IMPLIES (LESSP I N) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH I L))) ((ENABLE PUTSEG GETNTH GETNTH-PUTNTH-CASESPLIT) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. Perhaps we can prove it by induction. Six 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 S) (p I (CDR S) (ADD1 N) L)) (p I S N L)) (IMPLIES (NOT (LISTP S)) (p I S N L))). Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT S) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for N. The above induction scheme leads to the following three new conjectures: Case 3. (IMPLIES (AND (LISTP S) (NOT (LESSP I (ADD1 N))) (LESSP I N)) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH I L))). This simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (LISTP S) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L)) (LESSP I N)) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH I L))). This simplifies, applying the lemma GETNTH-PUTNTH-CASESPLIT, and unfolding the definitions of PUTSEG and GETNTH, to the following six new goals: Case 2.6. (IMPLIES (AND (LISTP S) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L)) (LESSP I N) (LESSP I (LENGTH (PUTSEG (CDR S) (ADD1 N) L))) (NOT (NUMBERP I)) (EQUAL 0 N)) (EQUAL (CAR S) (GETNTH I L))). However this again simplifies, using linear arithmetic, to: T. Case 2.5. (IMPLIES (AND (LISTP S) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L)) (LESSP I N) (LESSP I (LENGTH (PUTSEG (CDR S) (ADD1 N) L))) (NOT (NUMBERP I)) (NOT (NUMBERP N))) (EQUAL (CAR S) (GETNTH I L))), which again simplifies, opening up the definitions of GETNTH and LESSP, to: T. Case 2.4. (IMPLIES (AND (LISTP S) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L)) (LESSP I N) (LESSP I (LENGTH (PUTSEG (CDR S) (ADD1 N) L))) (NOT (NUMBERP N)) (EQUAL I 0)) (EQUAL (CAR S) (GETNTH I L))), which again simplifies, unfolding the definitions of EQUAL, GETNTH, and LESSP, to: T. Case 2.3. (IMPLIES (AND (LISTP S) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L)) (LESSP I N) (LESSP I (LENGTH (PUTSEG (CDR S) (ADD1 N) L))) (NUMBERP I) (NUMBERP N) (EQUAL I N)) (EQUAL (CAR S) (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 2.2. (IMPLIES (AND (LISTP S) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L)) (LESSP I N) (LESSP I (LENGTH (PUTSEG (CDR S) (ADD1 N) L))) (NOT (NUMBERP I)) (NUMBERP N) (NOT (EQUAL 0 N)) (NOT (LISTP (PUTSEG (CDR S) (ADD1 N) L)))) (EQUAL 0 (GETNTH I L))), which again simplifies, opening up GETNTH, LESSP, and EQUAL, to: T. Case 2.1. (IMPLIES (AND (LISTP S) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L)) (LESSP I N) (LESSP I (LENGTH (PUTSEG (CDR S) (ADD1 N) L))) (NOT (NUMBERP I)) (NUMBERP N) (NOT (EQUAL 0 N)) (LISTP (PUTSEG (CDR S) (ADD1 N) L))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH I L))), which again simplifies, unfolding the definitions of GETNTH, LESSP, and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (LISTP S)) (LESSP I N)) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH I L))), which simplifies, expanding PUTSEG, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] GETNTH-BEFORE-PUTSEG (DISABLE GETNTH-BEFORE-PUTSEG) [ 0.0 0.0 0.0 ] GETNTH-BEFORE-PUTSEG-OFF (PROVE-LEMMA GETNTH-PUTSEG-COINCIDENCE (REWRITE) (IMPLIES (AND (IF (LESSP I N) '*1*FALSE '*1*TRUE) (AND (LESSP (DIFFERENCE I N) (LENGTH S)) (LESSP I (LENGTH L)))) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH (DIFFERENCE I N) S))) ((ENABLE PUTSEG GETNTH LENGTH CAR-PUTSEG-ZERO DIFFERENCE-X-X DIFFERENCE-SUB1-ARG1 GETNTH-PUTNTH-CASESPLIT LENGTH-PUTSEG LISTP-PUTSEG NON-ZERO-LENGTH-IMPLIES-LISTP) (INDUCT (PUTSEG S N L)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations IMPLIES, NOT, OR, and AND, to the following two new goals: Case 2. (IMPLIES (AND (LISTP S) (IMPLIES (AND (IF (LESSP I (ADD1 N)) F T) (LESSP (DIFFERENCE I (ADD1 N)) (LENGTH (CDR S))) (LESSP I (LENGTH L))) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE I (ADD1 N)) (CDR S)))) (NOT (LESSP I N)) (LESSP (DIFFERENCE I N) (LENGTH S)) (LESSP I (LENGTH L))) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH (DIFFERENCE I N) S))). This simplifies, using linear arithmetic, rewriting with SUB1-ADD1, CAR-PUTSEG-ZERO, LISTP-PUTSEG, NON-ZERO-LENGTH-IMPLIES-LISTP, LENGTH-PUTSEG, and GETNTH-PUTNTH-CASESPLIT, and opening up the functions LESSP, DIFFERENCE, AND, IMPLIES, LENGTH, EQUAL, ZEROP, GETNTH, and PUTSEG, to 27 new goals: Case 2.27. (IMPLIES (AND (LISTP S) (NOT (NUMBERP N)) (LESSP (SUB1 I) 0) (LESSP (SUB1 I) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (EQUAL I 0)) (NUMBERP I)) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH I S))), which again simplifies, using linear arithmetic, to: T. Case 2.26. (IMPLIES (AND (LISTP S) (NOT (NUMBERP N)) (LESSP (SUB1 I) 0) (LESSP (SUB1 I) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (EQUAL I 0)) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH 0 S))), which again simplifies, expanding the functions SUB1 and LESSP, to: T. Case 2.25. (IMPLIES (AND (LISTP S) (NOT (NUMBERP N)) (LESSP (SUB1 I) 0) (LESSP (SUB1 I) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (NUMBERP I))) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH 0 S))), which again simplifies, applying SUB1-NNUMBERP, and opening up LESSP, to: T. Case 2.24. (IMPLIES (AND (LISTP S) (NUMBERP N) (LESSP (SUB1 I) N) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (LESSP I (LENGTH L)) (NOT (NUMBERP I)) (NOT (EQUAL 0 N))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) (CAR S))). This again simplifies, rewriting with SUB1-NNUMBERP, and opening up EQUAL and LESSP, to: T. Case 2.23. (IMPLIES (AND (LISTP S) (NUMBERP N) (LESSP (SUB1 I) N) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (LESSP I (LENGTH L)) (NUMBERP I) (NOT (EQUAL I N))) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (CAR S))). This again simplifies, using linear arithmetic, to: T. Case 2.22. (IMPLIES (AND (LISTP S) (NUMBERP N) (LESSP (SUB1 I) N) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (NUMBERP I)) (EQUAL 0 N)) (EQUAL (CAR S) (GETNTH (DIFFERENCE I N) S))), which again simplifies, rewriting with SUB1-NNUMBERP, and expanding NUMBERP and LESSP, to: T. Case 2.21. (IMPLIES (AND (LISTP S) (NUMBERP N) (LESSP (SUB1 I) N) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NUMBERP I) (EQUAL I N)) (EQUAL (CAR S) (GETNTH (DIFFERENCE I N) S))). But this again simplifies, rewriting with the lemma DIFFERENCE-X-X, and unfolding the definitions of SUB1, EQUAL, LESSP, and GETNTH, to: T. Case 2.20. (IMPLIES (AND (LISTP S) (NUMBERP N) (LESSP (SUB1 I) N) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (NUMBERP I)) (NOT (EQUAL 0 N))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE I N) S))), which again simplifies, appealing to the lemma SUB1-NNUMBERP, and unfolding the functions EQUAL and LESSP, to: T. Case 2.19. (IMPLIES (AND (LISTP S) (NUMBERP N) (LESSP (SUB1 I) N) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NUMBERP I) (NOT (EQUAL I N))) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE I N) S))), which again simplifies, using linear arithmetic, to: T. Case 2.18. (IMPLIES (AND (LISTP S) (NOT (NUMBERP N)) (NOT (LESSP (DIFFERENCE (SUB1 I) 0) (LENGTH (CDR S)))) (LESSP (SUB1 I) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (EQUAL I 0)) (NUMBERP I)) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH I S))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP (SUB1 I) 0) (LISTP S) (NOT (NUMBERP N)) (NOT (LESSP (DIFFERENCE (SUB1 I) 0) (LENGTH (CDR S)))) (LESSP (SUB1 I) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (EQUAL I 0)) (NUMBERP I)) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH I S))). However this again simplifies, using linear arithmetic, to: T. Case 2.17. (IMPLIES (AND (LISTP S) (NOT (NUMBERP N)) (NOT (LESSP (DIFFERENCE (SUB1 I) 0) (LENGTH (CDR S)))) (LESSP (SUB1 I) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (EQUAL I 0)) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH 0 S))), which again simplifies, expanding the definitions of SUB1, DIFFERENCE, EQUAL, and LESSP, to: T. Case 2.16. (IMPLIES (AND (LISTP S) (NOT (NUMBERP N)) (NOT (LESSP (DIFFERENCE (SUB1 I) 0) (LENGTH (CDR S)))) (LESSP (SUB1 I) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (NUMBERP I))) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH 0 S))), which again simplifies, using linear arithmetic, to two new goals: Case 2.16.2. (IMPLIES (AND (LESSP (SUB1 I) 0) (LISTP S) (NOT (NUMBERP N)) (NOT (LESSP (DIFFERENCE (SUB1 I) 0) (LENGTH (CDR S)))) (LESSP (SUB1 I) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (NUMBERP I))) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH 0 S))), which again simplifies, rewriting with SUB1-NNUMBERP, and expanding LESSP, to: T. Case 2.16.1. (IMPLIES (AND (LESSP I 1) (LISTP S) (NOT (NUMBERP N)) (NOT (LESSP (DIFFERENCE (SUB1 I) 0) (LENGTH (CDR S)))) (LESSP (SUB1 I) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (NUMBERP I))) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH 0 S))). But this again simplifies, rewriting with SUB1-NNUMBERP, and expanding the definitions of NUMBERP, EQUAL, LESSP, and DIFFERENCE, to: T. Case 2.15. (IMPLIES (AND (LISTP S) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (LESSP I (LENGTH L)) (NOT (NUMBERP I)) (NOT (EQUAL 0 N))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) (CAR S))). However this again simplifies, using linear arithmetic, to two new formulas: Case 2.15.2. (IMPLIES (AND (LESSP (SUB1 I) N) (LISTP S) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (LESSP I (LENGTH L)) (NOT (NUMBERP I)) (NOT (EQUAL 0 N))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) (CAR S))), which again simplifies, rewriting with the lemma SUB1-NNUMBERP, and opening up the definitions of EQUAL, LESSP, and DIFFERENCE, to: T. Case 2.15.1. (IMPLIES (AND (LESSP I 1) (LISTP S) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (LESSP I (LENGTH L)) (NOT (NUMBERP I)) (NOT (EQUAL 0 N))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) (CAR S))), which again simplifies, using linear arithmetic, to: T. Case 2.14. (IMPLIES (AND (LISTP S) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (LESSP I (LENGTH L)) (NUMBERP I) (NOT (EQUAL I N))) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (CAR S))), which again simplifies, using linear arithmetic, to two new goals: Case 2.14.2. (IMPLIES (AND (LESSP (SUB1 I) N) (LISTP S) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (LESSP I (LENGTH L)) (NUMBERP I) (NOT (EQUAL I N))) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (CAR S))), which again simplifies, using linear arithmetic, to: T. Case 2.14.1. (IMPLIES (AND (EQUAL I 0) (LISTP S) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (LESSP I (LENGTH L)) (NUMBERP I) (NOT (EQUAL I N))) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (CAR S))), which again simplifies, using linear arithmetic, to: T. Case 2.13. (IMPLIES (AND (LISTP S) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (NUMBERP I)) (EQUAL 0 N)) (EQUAL (CAR S) (GETNTH (DIFFERENCE I N) S))), which again simplifies, using linear arithmetic, to two new conjectures: Case 2.13.2. (IMPLIES (AND (LESSP (SUB1 I) 0) (LISTP S) (NUMBERP 0) (NOT (LESSP (DIFFERENCE (SUB1 I) 0) (LENGTH (CDR S)))) (NOT (LESSP I 0)) (LESSP (SUB1 (DIFFERENCE I 0)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (NUMBERP I))) (EQUAL (CAR S) (GETNTH (DIFFERENCE I 0) S))), which again simplifies, rewriting with SUB1-NNUMBERP, and unfolding the definition of LESSP, to: T. Case 2.13.1. (IMPLIES (AND (LESSP I 1) (LISTP S) (NUMBERP 0) (NOT (LESSP (DIFFERENCE (SUB1 I) 0) (LENGTH (CDR S)))) (NOT (LESSP I 0)) (LESSP (SUB1 (DIFFERENCE I 0)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (NUMBERP I))) (EQUAL (CAR S) (GETNTH (DIFFERENCE I 0) S))). However this again simplifies, rewriting with SUB1-NNUMBERP, and expanding the functions NUMBERP, EQUAL, LESSP, DIFFERENCE, and SUB1, to: T. Case 2.12. (IMPLIES (AND (LISTP S) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NUMBERP I) (EQUAL I N)) (EQUAL (CAR S) (GETNTH (DIFFERENCE I N) S))). But this again simplifies, using linear arithmetic, to two new conjectures: Case 2.12.2. (IMPLIES (AND (LESSP (SUB1 N) N) (LISTP S) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 N) N) (LENGTH (CDR S)))) (NOT (LESSP N N)) (LESSP (SUB1 (DIFFERENCE N N)) (LENGTH (CDR S))) (LESSP N (LENGTH L)) (NUMBERP N)) (EQUAL (CAR S) (GETNTH (DIFFERENCE N N) S))), which again simplifies, rewriting with DIFFERENCE-X-X, and expanding SUB1, EQUAL, LESSP, and GETNTH, to: T. Case 2.12.1. (IMPLIES (AND (EQUAL N 0) (LISTP S) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 N) N) (LENGTH (CDR S)))) (NOT (LESSP N N)) (LESSP (SUB1 (DIFFERENCE N N)) (LENGTH (CDR S))) (LESSP N (LENGTH L)) (NUMBERP N)) (EQUAL (CAR S) (GETNTH (DIFFERENCE N N) S))). However this again simplifies, unfolding the functions NUMBERP, SUB1, DIFFERENCE, EQUAL, and LESSP, to: T. Case 2.11. (IMPLIES (AND (LISTP S) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (NUMBERP I)) (NOT (EQUAL 0 N))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE I N) S))), which again simplifies, using linear arithmetic, to two new goals: Case 2.11.2. (IMPLIES (AND (LESSP (SUB1 I) N) (LISTP S) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (NUMBERP I)) (NOT (EQUAL 0 N))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE I N) S))), which again simplifies, rewriting with the lemma SUB1-NNUMBERP, and unfolding the definitions of EQUAL, LESSP, and DIFFERENCE, to: T. Case 2.11.1. (IMPLIES (AND (LESSP I 1) (LISTP S) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (NUMBERP I)) (NOT (EQUAL 0 N))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE I N) S))), which again simplifies, using linear arithmetic, to: T. Case 2.10. (IMPLIES (AND (LISTP S) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NUMBERP I) (NOT (EQUAL I N))) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE I N) S))), which again simplifies, using linear arithmetic, to two new goals: Case 2.10.2. (IMPLIES (AND (LESSP (SUB1 I) N) (LISTP S) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NUMBERP I) (NOT (EQUAL I N))) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE I N) S))), which again simplifies, using linear arithmetic, to: T. Case 2.10.1. (IMPLIES (AND (EQUAL I 0) (LISTP S) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NUMBERP I) (NOT (EQUAL I N))) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE I N) S))), which again simplifies, using linear arithmetic, to: T. Case 2.9. (IMPLIES (AND (LISTP S) (NOT (NUMBERP N)) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE (SUB1 I) 0) (CDR S))) (LESSP (SUB1 I) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (EQUAL I 0)) (NUMBERP I)) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH I S))), which again simplifies, using linear arithmetic, applying SUB1-TYPE-RESTRICTION and DIFFERENCE-SUB1-ARG1, and expanding the definitions of EQUAL and DIFFERENCE, to: (IMPLIES (AND (LISTP S) (NOT (NUMBERP N)) (EQUAL (GETNTH I (PUTSEG (CDR S) 1 L)) (GETNTH (SUB1 I) (CDR S))) (LESSP (SUB1 I) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (EQUAL I 0)) (NUMBERP I)) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH I S))), which again simplifies, applying the lemmas SUB1-TYPE-RESTRICTION, LENGTH-PUTSEG, and GETNTH-PUTNTH-CASESPLIT, and opening up the definitions of PUTSEG and GETNTH, to: T. Case 2.8. (IMPLIES (AND (LISTP S) (NOT (NUMBERP N)) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE (SUB1 I) 0) (CDR S))) (LESSP (SUB1 I) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (EQUAL I 0)) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH 0 S))), which again simplifies, using linear arithmetic, rewriting with the lemmas SUB1-TYPE-RESTRICTION, LISTP-PUTSEG, NON-ZERO-LENGTH-IMPLIES-LISTP, and CAR-PUTSEG-ZERO, and expanding the definitions of EQUAL, GETNTH, SUB1, DIFFERENCE, LENGTH, LESSP, and ZEROP, to: T. Case 2.7. (IMPLIES (AND (LISTP S) (NOT (NUMBERP N)) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE (SUB1 I) 0) (CDR S))) (LESSP (SUB1 I) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (NUMBERP I))) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH 0 S))), which again simplifies, using linear arithmetic, rewriting with SUB1-TYPE-RESTRICTION, LISTP-PUTSEG, NON-ZERO-LENGTH-IMPLIES-LISTP, SUB1-NNUMBERP, and CAR-PUTSEG-ZERO, and opening up the functions GETNTH, DIFFERENCE, EQUAL, LENGTH, LESSP, and ZEROP, to: T. Case 2.6. (IMPLIES (AND (LISTP S) (NUMBERP N) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE (SUB1 I) N) (CDR S))) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (LESSP I (LENGTH L)) (NOT (NUMBERP I)) (NOT (EQUAL 0 N))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) (CAR S))). However this again simplifies, using linear arithmetic, rewriting with LISTP-PUTSEG, NON-ZERO-LENGTH-IMPLIES-LISTP, and SUB1-NNUMBERP, and opening up the definitions of GETNTH, EQUAL, DIFFERENCE, and LESSP, to: T. Case 2.5. (IMPLIES (AND (LISTP S) (NUMBERP N) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE (SUB1 I) N) (CDR S))) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (LESSP I (LENGTH L)) (NUMBERP I) (NOT (EQUAL I N))) (EQUAL (GETNTH (DIFFERENCE (SUB1 I) N) (CDR S)) (CAR S))). But this again simplifies, using linear arithmetic, to: T. Case 2.4. (IMPLIES (AND (LISTP S) (NUMBERP N) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE (SUB1 I) N) (CDR S))) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (NUMBERP I)) (EQUAL 0 N)) (EQUAL (CAR S) (GETNTH (DIFFERENCE I N) S))), which again simplifies, using linear arithmetic, applying LISTP-PUTSEG, NON-ZERO-LENGTH-IMPLIES-LISTP, and SUB1-NNUMBERP, and expanding NUMBERP, GETNTH, DIFFERENCE, EQUAL, LESSP, SUB1, and LENGTH, to: T. Case 2.3. (IMPLIES (AND (LISTP S) (NUMBERP N) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE (SUB1 I) N) (CDR S))) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NUMBERP I) (EQUAL I N)) (EQUAL (CAR S) (GETNTH (DIFFERENCE I N) S))). But this again simplifies, rewriting with DIFFERENCE-X-X, and opening up the definitions of SUB1, EQUAL, LESSP, and GETNTH, to: T. Case 2.2. (IMPLIES (AND (LISTP S) (NUMBERP N) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE (SUB1 I) N) (CDR S))) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NOT (NUMBERP I)) (NOT (EQUAL 0 N))) (EQUAL (CAR (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE I N) S))). This again simplifies, using linear arithmetic, applying LISTP-PUTSEG, NON-ZERO-LENGTH-IMPLIES-LISTP, and SUB1-NNUMBERP, and unfolding the functions GETNTH, EQUAL, DIFFERENCE, and LESSP, to: T. Case 2.1. (IMPLIES (AND (LISTP S) (NUMBERP N) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (DIFFERENCE (SUB1 I) N) (CDR S))) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NUMBERP I) (NOT (EQUAL I N))) (EQUAL (GETNTH (DIFFERENCE (SUB1 I) N) (CDR S)) (GETNTH (DIFFERENCE I N) S))). This again simplifies, using linear arithmetic and rewriting with DIFFERENCE-SUB1-ARG1, to: (IMPLIES (AND (LISTP S) (NUMBERP N) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (SUB1 (DIFFERENCE I N)) (CDR S))) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NUMBERP I) (NOT (EQUAL I N))) (EQUAL (GETNTH (SUB1 (DIFFERENCE I N)) (CDR S)) (GETNTH (DIFFERENCE I N) S))), which again simplifies, opening up GETNTH, to: (IMPLIES (AND (LISTP S) (NUMBERP N) (EQUAL (GETNTH I (PUTSEG (CDR S) (ADD1 N) L)) (GETNTH (SUB1 (DIFFERENCE I N)) (CDR S))) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (LESSP I (LENGTH L)) (NUMBERP I) (NOT (EQUAL I N)) (EQUAL (DIFFERENCE I N) 0)) (EQUAL (GETNTH (SUB1 (DIFFERENCE I N)) (CDR S)) (CAR S))). However this again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (LISTP S)) (NOT (LESSP I N)) (LESSP (DIFFERENCE I N) (LENGTH S)) (LESSP I (LENGTH L))) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH (DIFFERENCE I N) S))), which simplifies, using linear arithmetic and applying NON-ZERO-LENGTH-IMPLIES-LISTP, to: T. Q.E.D. [ 0.0 0.2 0.0 ] GETNTH-PUTSEG-COINCIDENCE (DISABLE GETNTH-PUTSEG-COINCIDENCE) [ 0.0 0.0 0.0 ] GETNTH-PUTSEG-COINCIDENCE-OFF (PROVE-LEMMA OPEN-PUTNTH-CASESPLIT (REWRITE) (EQUAL (PUTNTH V N (CONS A B)) (IF (ZEROP N) (CONS V B) (CONS A (PUTNTH V (SUB1 N) B)))) ((ENABLE PUTNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, rewriting with CAR-CONS and CDR-CONS, and opening up the definitions of PUTNTH and ZEROP, to: T. Q.E.D. [ 0.0 0.0 0.1 ] OPEN-PUTNTH-CASESPLIT (DISABLE OPEN-PUTNTH-CASESPLIT) [ 0.0 0.0 0.0 ] OPEN-PUTNTH-CASESPLIT-OFF (PROVE-LEMMA OPEN-UP-PUTNTH1 (REWRITE) (IMPLIES (NOT (ZEROP N)) (EQUAL (PUTNTH V N (CONS A B)) (CONS A (PUTNTH V (SUB1 N) B)))) ((ENABLE PUTNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N)) (EQUAL (PUTNTH V N (CONS A B)) (CONS A (PUTNTH V (SUB1 N) B)))). This simplifies, rewriting with the lemmas CDR-CONS and CAR-CONS, and expanding the function PUTNTH, to: T. Q.E.D. [ 0.0 0.0 0.0 ] OPEN-UP-PUTNTH1 (DISABLE OPEN-UP-PUTNTH1) [ 0.0 0.0 0.0 ] OPEN-UP-PUTNTH1-OFF (PROVE-LEMMA PUTNTH-INTO-NIL (REWRITE) (EQUAL (PUTNTH V I 'NIL) 'NIL) ((ENABLE PUTNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, opening up the functions LISTP, PUTNTH, and EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PUTNTH-INTO-NIL (DISABLE PUTNTH-INTO-NIL) [ 0.0 0.0 0.0 ] PUTNTH-INTO-NIL-OFF (PROVE-LEMMA OPEN-UP-PUTNTH-ON-ZERO (REWRITE) (EQUAL (PUTNTH VAL '0 (CONS A B)) (CONS VAL B)) ((ENABLE PUTNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, rewriting with CDR-CONS, and expanding EQUAL and PUTNTH, to: T. Q.E.D. [ 0.0 0.0 0.0 ] OPEN-UP-PUTNTH-ON-ZERO (DISABLE OPEN-UP-PUTNTH-ON-ZERO) [ 0.0 0.0 0.0 ] OPEN-UP-PUTNTH-ON-ZERO-OFF (PROVE-LEMMA PUTNTH-WITH-NON-NUMBER-INDEX (REWRITE) (IMPLIES (NOT (NUMBERP I)) (EQUAL (PUTNTH V I L) (PUTNTH V '0 L))) ((ENABLE PUTNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, expanding PUTNTH and EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PUTNTH-WITH-NON-NUMBER-INDEX (DISABLE PUTNTH-WITH-NON-NUMBER-INDEX) [ 0.0 0.0 0.0 ] PUTNTH-WITH-NON-NUMBER-INDEX-OFF (PROVE-LEMMA PUTNTH-HAS-NO-EFFECT (REWRITE) (IMPLIES (NOT (LESSP N (LENGTH L))) (EQUAL (PUTNTH V N L) L)) ((ENABLE PUTNTH LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Give the conjecture the name *1. We will appeal to 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 (LENGTH L) 0) (NOT (NUMBERP (LENGTH L)))) (p V N L)) (IMPLIES (AND (NOT (OR (EQUAL (LENGTH L) 0) (NOT (NUMBERP (LENGTH L))))) (OR (EQUAL N 0) (NOT (NUMBERP N)))) (p V N L)) (IMPLIES (AND (NOT (OR (EQUAL (LENGTH L) 0) (NOT (NUMBERP (LENGTH L))))) (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (p V (SUB1 N) (CDR L))) (p V N L))). Linear arithmetic, the lemmas SUB1-LESSEQP and SUB1-LESSP, and the definitions of OR and NOT establish that the measure (COUNT N) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for L. The above induction scheme produces the following four new formulas: Case 4. (IMPLIES (AND (OR (EQUAL (LENGTH L) 0) (NOT (NUMBERP (LENGTH L)))) (NOT (LESSP N (LENGTH L)))) (EQUAL (PUTNTH V N L) L)). This simplifies, opening up LENGTH, NOT, OR, EQUAL, LESSP, and PUTNTH, to the following three new formulas: Case 4.3. (IMPLIES (AND (EQUAL (ADD1 (LENGTH (CDR L))) 0) (LISTP L) (NOT (NUMBERP N))) (EQUAL (CONS V (CDR L)) L)). This again simplifies, using linear arithmetic, to: T. Case 4.2. (IMPLIES (AND (EQUAL (ADD1 (LENGTH (CDR L))) 0) (LISTP L) (EQUAL N 0)) (EQUAL (CONS V (CDR L)) L)), which again simplifies, using linear arithmetic, to: T. Case 4.1. (IMPLIES (AND (EQUAL (ADD1 (LENGTH (CDR L))) 0) (LISTP L) (NOT (EQUAL N 0)) (NUMBERP N)) (EQUAL (CONS (CAR L) (PUTNTH V (SUB1 N) (CDR L))) L)), which again simplifies, using linear arithmetic, to: T. Case 3. (IMPLIES (AND (NOT (OR (EQUAL (LENGTH L) 0) (NOT (NUMBERP (LENGTH L))))) (OR (EQUAL N 0) (NOT (NUMBERP N))) (NOT (LESSP N (LENGTH L)))) (EQUAL (PUTNTH V N L) L)), which simplifies, expanding LENGTH, NOT, OR, EQUAL, and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (OR (EQUAL (LENGTH L) 0) (NOT (NUMBERP (LENGTH L))))) (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (LESSP (SUB1 N) (LENGTH (CDR L))) (NOT (LESSP N (LENGTH L)))) (EQUAL (PUTNTH V N L) L)), which simplifies, applying SUB1-ADD1, and opening up LENGTH, NOT, OR, and LESSP, to: T. Case 1. (IMPLIES (AND (NOT (OR (EQUAL (LENGTH L) 0) (NOT (NUMBERP (LENGTH L))))) (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (EQUAL (PUTNTH V (SUB1 N) (CDR L)) (CDR L)) (NOT (LESSP N (LENGTH L)))) (EQUAL (PUTNTH V N L) L)). This simplifies, appealing to the lemmas SUB1-ADD1 and CONS-CAR-CDR, and unfolding the functions LENGTH, NOT, OR, LESSP, and PUTNTH, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PUTNTH-HAS-NO-EFFECT (DISABLE PUTNTH-HAS-NO-EFFECT) [ 0.0 0.0 0.0 ] PUTNTH-HAS-NO-EFFECT-OFF (PROVE-LEMMA PUTNTH-CONS1 (REWRITE) (IMPLIES (ZEROP N) (EQUAL (PUTNTH V N (CONS A B)) (CONS V B))) ((ENABLE PUTNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, appealing to the lemma CDR-CONS, and opening up the definitions of ZEROP, EQUAL, and PUTNTH, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PUTNTH-CONS1 (DISABLE PUTNTH-CONS1) [ 0.0 0.0 0.0 ] PUTNTH-CONS1-OFF (PROVE-LEMMA PUTNTH-CONS2 (REWRITE) (IMPLIES (NOT (ZEROP N)) (EQUAL (PUTNTH V N (CONS A B)) (CONS A (PUTNTH V (SUB1 N) B)))) ((ENABLE PUTNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N)) (EQUAL (PUTNTH V N (CONS A B)) (CONS A (PUTNTH V (SUB1 N) B)))). This simplifies, rewriting with the lemmas CDR-CONS and CAR-CONS, and expanding the function PUTNTH, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PUTNTH-CONS2 (DISABLE PUTNTH-CONS2) [ 0.0 0.0 0.0 ] PUTNTH-CONS2-OFF (PROVE-LEMMA PUTNTH-SHIFT (REWRITE) (IMPLIES (LESSP I (LENGTH L)) (EQUAL (PUTNTH V I L) (APPEND (FIRSTN I L) (CONS V (NTHCDR (ADD1 I) L))))) ((ENABLE PUTNTH APPEND FIRSTN NTHCDR LENGTH) (INDUCT (NUMBER-AND-LIST-INDUCTION I L)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to three new conjectures: Case 3. (IMPLIES (AND (ZEROP I) (LESSP I (LENGTH L))) (EQUAL (PUTNTH V I L) (APPEND (FIRSTN I L) (CONS V (NTHCDR (ADD1 I) L))))), which simplifies, applying SUB1-TYPE-RESTRICTION, and expanding the definitions of ZEROP, EQUAL, LESSP, PUTNTH, FIRSTN, ADD1, LISTP, and APPEND, to the following four new conjectures: Case 3.4. (IMPLIES (AND (EQUAL I 0) (NOT (EQUAL (LENGTH L) 0)) (NOT (LISTP L))) (EQUAL L (CONS V (NTHCDR 1 L)))). However this again simplifies, opening up the definitions of LENGTH and EQUAL, to: T. Case 3.3. (IMPLIES (AND (EQUAL I 0) (NOT (EQUAL (LENGTH L) 0)) (LISTP L)) (EQUAL (CONS V (CDR L)) (CONS V (NTHCDR 1 L)))), which again simplifies, applying CAR-CONS, CDR-CONS, and CONS-EQUAL, to: (IMPLIES (AND (NOT (EQUAL (LENGTH L) 0)) (LISTP L)) (EQUAL (CDR L) (NTHCDR 1 L))). Applying the lemma CAR-CDR-ELIM, replace L by (CONS Z X) to eliminate (CDR L) and (CAR L). We thus obtain: (IMPLIES (NOT (EQUAL (LENGTH (CONS Z X)) 0)) (EQUAL X (NTHCDR 1 (CONS Z X)))), which further simplifies, rewriting with CDR-CONS, and expanding the functions LENGTH, SUB1, NUMBERP, EQUAL, and NTHCDR, to: T. Case 3.2. (IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL (LENGTH L) 0)) (NOT (LISTP L))) (EQUAL L (CONS V (NTHCDR 1 L)))). This again simplifies, opening up the definitions of LENGTH and EQUAL, to: T. Case 3.1. (IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL (LENGTH L) 0)) (LISTP L)) (EQUAL (CONS V (CDR L)) (CONS V (NTHCDR 1 L)))), which again simplifies, rewriting with the lemmas CAR-CONS, CDR-CONS, and CONS-EQUAL, to: (IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL (LENGTH L) 0)) (LISTP L)) (EQUAL (CDR L) (NTHCDR 1 L))). Appealing to the lemma CAR-CDR-ELIM, we now replace L by (CONS Z X) to eliminate (CDR L) and (CAR L). The result is: (IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL (LENGTH (CONS Z X)) 0))) (EQUAL X (NTHCDR 1 (CONS Z X)))). However this further simplifies, appealing to the lemma CDR-CONS, and expanding the functions LENGTH, SUB1, NUMBERP, EQUAL, and NTHCDR, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I) (LISTP L) (IMPLIES (LESSP (SUB1 I) (LENGTH (CDR L))) (EQUAL (PUTNTH V (SUB1 I) (CDR L)) (APPEND (FIRSTN (SUB1 I) (CDR L)) (CONS V (NTHCDR (ADD1 (SUB1 I)) (CDR L)))))) (LESSP I (LENGTH L))) (EQUAL (PUTNTH V I L) (APPEND (FIRSTN I L) (CONS V (NTHCDR (ADD1 I) L))))), which simplifies, rewriting with ADD1-SUB1, SUB1-ADD1, CDR-CONS, and CAR-CONS, and unfolding the definitions of IMPLIES, LENGTH, LESSP, PUTNTH, FIRSTN, NTHCDR, and APPEND, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL I 0)) (NUMBERP I) (NOT (LISTP L)) (LESSP I (LENGTH L))) (EQUAL (PUTNTH V I L) (APPEND (FIRSTN I L) (CONS V (NTHCDR (ADD1 I) L))))). This simplifies, unfolding the definitions of LENGTH, EQUAL, and LESSP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PUTNTH-SHIFT (DISABLE PUTNTH-SHIFT) [ 0.0 0.0 0.0 ] PUTNTH-SHIFT-OFF (PROVE-LEMMA PUTNTH-APPEND-CASESPLIT (REWRITE) (EQUAL (PUTNTH V N (APPEND A B)) (IF (LESSP N (LENGTH A)) (APPEND (PUTNTH V N A) B) (APPEND A (PUTNTH V (DIFFERENCE N (LENGTH A)) B)))) ((ENABLE PUTNTH APPEND LENGTH) (INDUCT (PUTNTH V N A)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to three new conjectures: Case 3. (IMPLIES (AND (LISTP A) (ZEROP N)) (EQUAL (PUTNTH V N (APPEND A B)) (IF (LESSP N (LENGTH A)) (APPEND (PUTNTH V N A) B) (APPEND A (PUTNTH V (DIFFERENCE N (LENGTH A)) B))))), which simplifies, rewriting with the lemmas CDR-CONS and CAR-CONS, and opening up ZEROP, EQUAL, PUTNTH, LESSP, DIFFERENCE, and APPEND, to ten new formulas: Case 3.10. (IMPLIES (AND (LISTP A) (EQUAL N 0) (NOT (EQUAL (LENGTH A) 0)) (NOT (LISTP (APPEND A B)))) (EQUAL (APPEND A B) (CONS V (APPEND (CDR A) B)))), which again simplifies, opening up the definition of APPEND, to: T. Case 3.9. (IMPLIES (AND (LISTP A) (EQUAL N 0) (NOT (EQUAL (LENGTH A) 0)) (LISTP (APPEND A B))) (EQUAL (CONS V (CDR (APPEND A B))) (CONS V (APPEND (CDR A) B)))), which again simplifies, rewriting with the lemma CDR-CONS, and expanding APPEND, to: T. Case 3.8. (IMPLIES (AND (LISTP A) (EQUAL N 0) (EQUAL (LENGTH A) 0) (LISTP B) (NOT (LISTP (APPEND A B)))) (EQUAL (APPEND A B) (APPEND A (CONS V (CDR B))))), which again simplifies, clearly, to: T. Case 3.7. (IMPLIES (AND (LISTP A) (EQUAL N 0) (EQUAL (LENGTH A) 0) (LISTP B) (LISTP (APPEND A B))) (EQUAL (CONS V (CDR (APPEND A B))) (APPEND A (CONS V (CDR B))))). This again simplifies, applying CAR-CONS, to the new conjecture: (IMPLIES (AND (LISTP A) (EQUAL (LENGTH A) 0) (LISTP B)) (EQUAL (CONS V (CDR (APPEND A B))) (APPEND A (CONS V (CDR B))))). Applying the lemma CAR-CDR-ELIM, replace B by (CONS Z X) to eliminate (CDR B) and (CAR B). We would thus like to prove: (IMPLIES (AND (LISTP A) (EQUAL (LENGTH A) 0)) (EQUAL (CONS V (CDR (APPEND A (CONS Z X)))) (APPEND A (CONS V X)))), which we will name *1. Case 3.6. (IMPLIES (AND (LISTP A) (EQUAL N 0) (EQUAL (LENGTH A) 0) (NOT (LISTP B)) (LISTP (APPEND A B))) (EQUAL (CONS V (CDR (APPEND A B))) (APPEND A B))). But this again simplifies, applying the lemma CAR-CONS, to: (IMPLIES (AND (LISTP A) (EQUAL (LENGTH A) 0) (NOT (LISTP B)) (LISTP (APPEND A B))) (EQUAL (CONS V (CDR (APPEND A B))) (APPEND A B))). Call the above conjecture *2. Case 3.5. (IMPLIES (AND (LISTP A) (NOT (NUMBERP N)) (NOT (EQUAL (LENGTH A) 0)) (NOT (LISTP (APPEND A B)))) (EQUAL (APPEND A B) (CONS V (APPEND (CDR A) B)))). However this again simplifies, expanding the function APPEND, to: T. Case 3.4. (IMPLIES (AND (LISTP A) (NOT (NUMBERP N)) (NOT (EQUAL (LENGTH A) 0)) (LISTP (APPEND A B))) (EQUAL (CONS V (CDR (APPEND A B))) (CONS V (APPEND (CDR A) B)))), which again simplifies, rewriting with CDR-CONS, and opening up APPEND, to: T. Case 3.3. (IMPLIES (AND (LISTP A) (NOT (NUMBERP N)) (EQUAL (LENGTH A) 0) (LISTP B) (NOT (LISTP (APPEND A B)))) (EQUAL (APPEND A B) (APPEND A (CONS V (CDR B))))). This again simplifies, clearly, to: T. Case 3.2. (IMPLIES (AND (LISTP A) (NOT (NUMBERP N)) (EQUAL (LENGTH A) 0) (LISTP B) (LISTP (APPEND A B))) (EQUAL (CONS V (CDR (APPEND A B))) (APPEND A (CONS V (CDR B))))). But this again simplifies, applying CAR-CONS, to: (IMPLIES (AND (LISTP A) (NOT (NUMBERP N)) (EQUAL (LENGTH A) 0) (LISTP B)) (EQUAL (CONS V (CDR (APPEND A B))) (APPEND A (CONS V (CDR B))))). Applying the lemma CAR-CDR-ELIM, replace B by (CONS Z X) to eliminate (CDR B) and (CAR B). We would thus like to prove: (IMPLIES (AND (LISTP A) (NOT (NUMBERP N)) (EQUAL (LENGTH A) 0)) (EQUAL (CONS V (CDR (APPEND A (CONS Z X)))) (APPEND A (CONS V X)))), which we will name *3. Case 3.1. (IMPLIES (AND (LISTP A) (NOT (NUMBERP N)) (EQUAL (LENGTH A) 0) (NOT (LISTP B)) (LISTP (APPEND A B))) (EQUAL (CONS V (CDR (APPEND A B))) (APPEND A B))). Name the above subgoal *4. Case 2. (IMPLIES (AND (LISTP A) (NOT (EQUAL N 0)) (NUMBERP N) (EQUAL (PUTNTH V (SUB1 N) (APPEND (CDR A) B)) (IF (LESSP (SUB1 N) (LENGTH (CDR A))) (APPEND (PUTNTH V (SUB1 N) (CDR A)) B) (APPEND (CDR A) (PUTNTH V (DIFFERENCE (SUB1 N) (LENGTH (CDR A))) B))))) (EQUAL (PUTNTH V N (APPEND A B)) (IF (LESSP N (LENGTH A)) (APPEND (PUTNTH V N A) B) (APPEND A (PUTNTH V (DIFFERENCE N (LENGTH A)) B))))). This simplifies, rewriting with CDR-CONS, CAR-CONS, and SUB1-ADD1, and opening up APPEND, PUTNTH, LENGTH, LESSP, and DIFFERENCE, to: T. Case 1. (IMPLIES (NOT (LISTP A)) (EQUAL (PUTNTH V N (APPEND A B)) (IF (LESSP N (LENGTH A)) (APPEND (PUTNTH V N A) B) (APPEND A (PUTNTH V (DIFFERENCE N (LENGTH A)) B))))), which simplifies, opening up the definitions of APPEND, LENGTH, EQUAL, LESSP, and DIFFERENCE, to two new formulas: Case 1.2. (IMPLIES (AND (NOT (LISTP A)) (NOT (NUMBERP N))) (EQUAL (PUTNTH V N B) (PUTNTH V 0 B))), which again simplifies, opening up the definitions of PUTNTH and EQUAL, to: T. Case 1.1. (IMPLIES (AND (NOT (LISTP A)) (EQUAL N 0)) (EQUAL (PUTNTH V N B) (PUTNTH V 0 B))), which again simplifies, clearly, to: T. So we now return to: (IMPLIES (AND (LISTP A) (NOT (NUMBERP N)) (EQUAL (LENGTH A) 0) (NOT (LISTP B)) (LISTP (APPEND A B))) (EQUAL (CONS V (CDR (APPEND A B))) (APPEND A B))), named *4 above. What luck! This conjecture is subsumed by formula *2 above. So next consider: (IMPLIES (AND (LISTP A) (NOT (NUMBERP N)) (EQUAL (LENGTH A) 0)) (EQUAL (CONS V (CDR (APPEND A (CONS Z X)))) (APPEND A (CONS V X)))), named *3 above. Ah ha! This conjecture is subsumed by the subgoal we named *1 above. So let us turn our attention to: (IMPLIES (AND (LISTP A) (EQUAL (LENGTH A) 0) (NOT (LISTP B)) (LISTP (APPEND A B))) (EQUAL (CONS V (CDR (APPEND A B))) (APPEND A B))), which is formula *2 above. 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 (AND (LISTP A) (p V (CDR A) B)) (p V A B)) (IMPLIES (NOT (LISTP A)) (p V A B))). Linear arithmetic and the lemma CDR-LESSP 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 four new goals: Case 4. (IMPLIES (AND (NOT (LISTP (CDR A))) (LISTP A) (EQUAL (LENGTH A) 0) (NOT (LISTP B)) (LISTP (APPEND A B))) (EQUAL (CONS V (CDR (APPEND A B))) (APPEND A B))). This simplifies, opening up the function LENGTH, to: T. Case 3. (IMPLIES (AND (NOT (EQUAL (LENGTH (CDR A)) 0)) (LISTP A) (EQUAL (LENGTH A) 0) (NOT (LISTP B)) (LISTP (APPEND A B))) (EQUAL (CONS V (CDR (APPEND A B))) (APPEND A B))). This simplifies, unfolding the function LENGTH, to: T. Case 2. (IMPLIES (AND (NOT (LISTP (APPEND (CDR A) B))) (LISTP A) (EQUAL (LENGTH A) 0) (NOT (LISTP B)) (LISTP (APPEND A B))) (EQUAL (CONS V (CDR (APPEND A B))) (APPEND A B))). This simplifies, unfolding LENGTH, to: T. Case 1. (IMPLIES (AND (EQUAL (CONS V (CDR (APPEND (CDR A) B))) (APPEND (CDR A) B)) (LISTP A) (EQUAL (LENGTH A) 0) (NOT (LISTP B)) (LISTP (APPEND A B))) (EQUAL (CONS V (CDR (APPEND A B))) (APPEND A B))). This simplifies, opening up the function LENGTH, to: T. That finishes the proof of *2. So we now return to: (IMPLIES (AND (LISTP A) (EQUAL (LENGTH A) 0)) (EQUAL (CONS V (CDR (APPEND A (CONS Z X)))) (APPEND A (CONS V X)))), named *1 above. Perhaps we can prove it by induction. Three 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 (AND (LISTP A) (p V (CDR A) Z X)) (p V A Z X)) (IMPLIES (NOT (LISTP A)) (p V A Z X))). Linear arithmetic and the lemma CDR-LESSP 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 three new goals: Case 3. (IMPLIES (AND (NOT (LISTP (CDR A))) (LISTP A) (EQUAL (LENGTH A) 0)) (EQUAL (CONS V (CDR (APPEND A (CONS Z X)))) (APPEND A (CONS V X)))). This simplifies, opening up the function LENGTH, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL (LENGTH (CDR A)) 0)) (LISTP A) (EQUAL (LENGTH A) 0)) (EQUAL (CONS V (CDR (APPEND A (CONS Z X)))) (APPEND A (CONS V X)))). This simplifies, opening up the function LENGTH, to: T. Case 1. (IMPLIES (AND (EQUAL (CONS V (CDR (APPEND (CDR A) (CONS Z X)))) (APPEND (CDR A) (CONS V X))) (LISTP A) (EQUAL (LENGTH A) 0)) (EQUAL (CONS V (CDR (APPEND A (CONS Z X)))) (APPEND A (CONS V X)))). This simplifies, rewriting with CAR-CONS, and opening up LENGTH, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] PUTNTH-APPEND-CASESPLIT (DISABLE PUTNTH-APPEND-CASESPLIT) [ 0.0 0.0 0.0 ] PUTNTH-APPEND-CASESPLIT-OFF (PROVE-LEMMA PUTNTH-APPEND-RIGHT (REWRITE) (IMPLIES (IF (LESSP N (LENGTH A)) '*1*FALSE '*1*TRUE) (EQUAL (PUTNTH V N (APPEND A B)) (APPEND A (PUTNTH V (DIFFERENCE N (LENGTH A)) B)))) ((ENABLE PUTNTH-APPEND-CASESPLIT LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, appealing to the lemma PUTNTH-APPEND-CASESPLIT, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PUTNTH-APPEND-RIGHT (DISABLE PUTNTH-APPEND-RIGHT) [ 0.0 0.0 0.0 ] PUTNTH-APPEND-RIGHT-OFF (PROVE-LEMMA PUTNTH-APPEND-LEFT (REWRITE) (IMPLIES (LESSP N (LENGTH A)) (EQUAL (PUTNTH V N (APPEND A B)) (APPEND (PUTNTH V N A) B))) ((ENABLE PUTNTH-APPEND-CASESPLIT LENGTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, applying the lemma PUTNTH-APPEND-CASESPLIT, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PUTNTH-APPEND-LEFT (DISABLE PUTNTH-APPEND-LEFT) [ 0.0 0.0 0.0 ] PUTNTH-APPEND-LEFT-OFF (PROVE-LEMMA PUTNTH-GETNTH-COINCIDENCE (REWRITE) (EQUAL (PUTNTH (GETNTH I L) I L) L) ((ENABLE GETNTH PUTNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Call the conjecture *1. We will try to prove it by 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 (AND (LISTP L) (ZEROP I)) (p I L)) (IMPLIES (AND (LISTP L) (NOT (ZEROP I)) (p (SUB1 I) (CDR L))) (p I L)) (IMPLIES (NOT (LISTP L)) (p I L))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP can be used to establish that the measure (COUNT I) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for L. The above induction scheme generates the following three new formulas: Case 3. (IMPLIES (AND (LISTP L) (ZEROP I)) (EQUAL (PUTNTH (GETNTH I L) I L) L)). This simplifies, applying CONS-CAR-CDR, and expanding the functions ZEROP, EQUAL, GETNTH, and PUTNTH, to: T. Case 2. (IMPLIES (AND (LISTP L) (NOT (ZEROP I)) (EQUAL (PUTNTH (GETNTH (SUB1 I) (CDR L)) (SUB1 I) (CDR L)) (CDR L))) (EQUAL (PUTNTH (GETNTH I L) I L) L)), which simplifies, appealing to the lemma CONS-CAR-CDR, and unfolding the functions ZEROP, GETNTH, and PUTNTH, to: T. Case 1. (IMPLIES (NOT (LISTP L)) (EQUAL (PUTNTH (GETNTH I L) I L) L)), which simplifies, unfolding the definitions of GETNTH and PUTNTH, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PUTNTH-GETNTH-COINCIDENCE (DISABLE PUTNTH-GETNTH-COINCIDENCE) [ 0.0 0.0 0.0 ] PUTNTH-GETNTH-COINCIDENCE-OFF (PROVE-LEMMA PUTNTH-GETNTH-COINCIDENCE1 (REWRITE) (IMPLIES (EQUAL (GETNTH I L1) (GETNTH I L2)) (EQUAL (PUTNTH (GETNTH I L1) I (PUTNTH V I L2)) L2)) ((ENABLE PUTNTH GETNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) . We now use the above equality hypothesis by substituting (GETNTH I L2) for (GETNTH I L1) and keeping the equality hypothesis. We would thus like to prove: (IMPLIES (EQUAL (GETNTH I L1) (GETNTH I L2)) (EQUAL (PUTNTH (GETNTH I L2) I (PUTNTH V I L2)) L2)), which simplifies, obviously, to: (IMPLIES (EQUAL (GETNTH I L1) (GETNTH I L2)) (EQUAL (PUTNTH (GETNTH I L1) I (PUTNTH V I L2)) L2)), 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 (GETNTH I L1) (GETNTH I L2)) (EQUAL (PUTNTH (GETNTH I L1) I (PUTNTH V I L2)) L2)), named *1. Let us appeal to the induction principle. Nine 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 (AND (LISTP L1) (ZEROP I)) (p I L1 V L2)) (IMPLIES (AND (LISTP L1) (NOT (ZEROP I)) (p (SUB1 I) (CDR L1) V (CDR L2))) (p I L1 V L2)) (IMPLIES (NOT (LISTP L1)) (p I L1 V L2))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP inform us that the measure (COUNT I) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instances chosen for L2 and L1. The above induction scheme generates four new conjectures: Case 4. (IMPLIES (AND (LISTP L1) (ZEROP I) (EQUAL (GETNTH I L1) (GETNTH I L2))) (EQUAL (PUTNTH (GETNTH I L1) I (PUTNTH V I L2)) L2)), which simplifies, rewriting with CDR-CONS and CAR-CONS, and unfolding ZEROP, EQUAL, GETNTH, and PUTNTH, to: T. Case 3. (IMPLIES (AND (LISTP L1) (NOT (ZEROP I)) (NOT (EQUAL (GETNTH (SUB1 I) (CDR L1)) (GETNTH (SUB1 I) (CDR L2)))) (EQUAL (GETNTH I L1) (GETNTH I L2))) (EQUAL (PUTNTH (GETNTH I L1) I (PUTNTH V I L2)) L2)). This simplifies, unfolding the definitions of ZEROP, GETNTH, and PUTNTH, to: T. Case 2. (IMPLIES (AND (LISTP L1) (NOT (ZEROP I)) (EQUAL (PUTNTH (GETNTH (SUB1 I) (CDR L1)) (SUB1 I) (PUTNTH V (SUB1 I) (CDR L2))) (CDR L2)) (EQUAL (GETNTH I L1) (GETNTH I L2))) (EQUAL (PUTNTH (GETNTH I L1) I (PUTNTH V I L2)) L2)). This simplifies, applying CONS-CAR-CDR, CDR-CONS, and CAR-CONS, and opening up ZEROP, GETNTH, and PUTNTH, to: T. Case 1. (IMPLIES (AND (NOT (LISTP L1)) (EQUAL (GETNTH I L1) (GETNTH I L2))) (EQUAL (PUTNTH (GETNTH I L1) I (PUTNTH V I L2)) L2)), which simplifies, opening up GETNTH, PUTNTH, and EQUAL, to four new conjectures: Case 1.4. (IMPLIES (AND (NOT (LISTP L1)) (NOT (EQUAL I 0)) (NUMBERP I) (EQUAL 0 (GETNTH (SUB1 I) (CDR L2))) (NOT (LISTP L2))) (EQUAL (PUTNTH 0 I L2) L2)), which again simplifies, expanding the definition of PUTNTH, to: T. Case 1.3. (IMPLIES (AND (NOT (LISTP L1)) (NOT (EQUAL I 0)) (NUMBERP I) (EQUAL 0 (GETNTH (SUB1 I) (CDR L2))) (LISTP L2)) (EQUAL (PUTNTH 0 I (CONS (CAR L2) (PUTNTH V (SUB1 I) (CDR L2)))) L2)), which again simplifies, rewriting with CDR-CONS and CAR-CONS, and unfolding the definition of PUTNTH, to: (IMPLIES (AND (NOT (LISTP L1)) (NOT (EQUAL I 0)) (NUMBERP I) (EQUAL 0 (GETNTH (SUB1 I) (CDR L2))) (LISTP L2)) (EQUAL (CONS (CAR L2) (PUTNTH 0 (SUB1 I) (PUTNTH V (SUB1 I) (CDR L2)))) L2)). Applying the lemma SUB1-ELIM, replace I by (ADD1 X) to eliminate (SUB1 I). We use the type restriction lemma noted when SUB1 was introduced to restrict the new variable. We thus obtain: (IMPLIES (AND (NUMBERP X) (NOT (LISTP L1)) (NOT (EQUAL (ADD1 X) 0)) (EQUAL 0 (GETNTH X (CDR L2))) (LISTP L2)) (EQUAL (CONS (CAR L2) (PUTNTH 0 X (PUTNTH V X (CDR L2)))) L2)), which further simplifies, rewriting with CAR-CONS and CDR-CONS, to the new formula: (IMPLIES (AND (NUMBERP X) (NOT (LISTP L1)) (EQUAL 0 (GETNTH X (CDR L2))) (LISTP L2)) (EQUAL (CONS (CAR L2) (PUTNTH 0 X (PUTNTH V X (CDR L2)))) L2)). Applying the lemma CAR-CDR-ELIM, replace L2 by (CONS W Z) to eliminate (CDR L2) and (CAR L2). This produces: (IMPLIES (AND (NUMBERP X) (NOT (LISTP L1)) (EQUAL 0 (GETNTH X Z))) (EQUAL (CONS W (PUTNTH 0 X (PUTNTH V X Z))) (CONS W Z))), which further simplifies, rewriting with the lemmas CAR-CONS, CDR-CONS, and CONS-EQUAL, to: (IMPLIES (AND (NUMBERP X) (NOT (LISTP L1)) (EQUAL 0 (GETNTH X Z))) (EQUAL (PUTNTH 0 X (PUTNTH V X Z)) Z)). Eliminate the irrelevant term. This produces the new goal: (IMPLIES (AND (NUMBERP X) (EQUAL 0 (GETNTH X Z))) (EQUAL (PUTNTH 0 X (PUTNTH V X Z)) Z)), which we will finally name *1.1. Case 1.2. (IMPLIES (AND (NOT (LISTP L1)) (EQUAL I 0) (EQUAL 0 (CAR L2)) (LISTP L2)) (EQUAL (CONS 0 (CDR (CONS V (CDR L2)))) L2)). But this again simplifies, applying CDR-CONS and CAR-CONS, and expanding EQUAL, to: T. Case 1.1. (IMPLIES (AND (NOT (LISTP L1)) (NOT (NUMBERP I)) (EQUAL 0 (CAR L2)) (LISTP L2)) (EQUAL (CONS 0 (CDR (CONS V (CDR L2)))) L2)). But this again simplifies, rewriting with CDR-CONS and CAR-CONS, and opening up the definition of EQUAL, to: T. So we now return to: (IMPLIES (AND (NUMBERP X) (EQUAL 0 (GETNTH X Z))) (EQUAL (PUTNTH 0 X (PUTNTH V X Z)) Z)), which we named *1.1 above. Perhaps we can prove it by induction. Five 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 (AND (LISTP Z) (ZEROP X)) (p X V Z)) (IMPLIES (AND (LISTP Z) (NOT (ZEROP X)) (p (SUB1 X) V (CDR Z))) (p X V Z)) (IMPLIES (NOT (LISTP Z)) (p X V Z))). 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. Note, however, the inductive instance chosen for Z. The above induction scheme generates four new formulas: Case 4. (IMPLIES (AND (LISTP Z) (ZEROP X) (NUMBERP X) (EQUAL 0 (GETNTH X Z))) (EQUAL (PUTNTH 0 X (PUTNTH V X Z)) Z)), which simplifies, rewriting with CDR-CONS and CAR-CONS, and opening up the functions ZEROP, NUMBERP, EQUAL, GETNTH, and PUTNTH, to: T. Case 3. (IMPLIES (AND (LISTP Z) (NOT (ZEROP X)) (NOT (EQUAL 0 (GETNTH (SUB1 X) (CDR Z)))) (NUMBERP X) (EQUAL 0 (GETNTH X Z))) (EQUAL (PUTNTH 0 X (PUTNTH V X Z)) Z)). This simplifies, unfolding ZEROP and GETNTH, to: T. Case 2. (IMPLIES (AND (LISTP Z) (NOT (ZEROP X)) (EQUAL (PUTNTH 0 (SUB1 X) (PUTNTH V (SUB1 X) (CDR Z))) (CDR Z)) (NUMBERP X) (EQUAL 0 (GETNTH X Z))) (EQUAL (PUTNTH 0 X (PUTNTH V X Z)) Z)). This simplifies, applying the lemmas CONS-CAR-CDR, CDR-CONS, and CAR-CONS, and unfolding ZEROP, GETNTH, and PUTNTH, to: T. Case 1. (IMPLIES (AND (NOT (LISTP Z)) (NUMBERP X) (EQUAL 0 (GETNTH X Z))) (EQUAL (PUTNTH 0 X (PUTNTH V X Z)) Z)). This simplifies, unfolding the definitions of GETNTH, EQUAL, and PUTNTH, to: T. That finishes the proof of *1.1, which, in turn, also finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.1 ] PUTNTH-GETNTH-COINCIDENCE1 (DISABLE PUTNTH-GETNTH-COINCIDENCE1) [ 0.0 0.0 0.0 ] PUTNTH-GETNTH-COINCIDENCE1-OFF (PROVE-LEMMA PUTNTH-PUTNTH-CASESPLIT (REWRITE) (IMPLIES (AND (NUMBERP I) (AND (NUMBERP J) (IF (LESSP J I) '*1*FALSE '*1*TRUE))) (EQUAL (PUTNTH B J (PUTNTH A I L)) (IF (EQUAL I J) (PUTNTH B J L) (PUTNTH A I (PUTNTH B J L))))) ((ENABLE PUTNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, obviously, to the following two new goals: Case 2. (IMPLIES (AND (NUMBERP I) (NUMBERP J) (NOT (LESSP J I)) (NOT (EQUAL I J))) (EQUAL (PUTNTH B J (PUTNTH A I L)) (PUTNTH A I (PUTNTH B J L)))). Name the above subgoal *1. Case 1. (IMPLIES (AND (NUMBERP I) (NUMBERP J) (NOT (LESSP J I)) (EQUAL I J)) (EQUAL (PUTNTH B J (PUTNTH A I L)) (PUTNTH B I L))). This again simplifies, clearly, to: (IMPLIES (AND (NUMBERP J) (NOT (LESSP J J))) (EQUAL (PUTNTH B J (PUTNTH A J L)) (PUTNTH B J L))), 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 (NUMBERP I) (NUMBERP J) (IF (LESSP J I) F T)) (EQUAL (PUTNTH B J (PUTNTH A I L)) (IF (EQUAL I J) (PUTNTH B J L) (PUTNTH A I (PUTNTH B J L))))), named *1. Let us appeal to the induction principle. There are ten plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (OR (EQUAL I 0) (NOT (NUMBERP I))) (p B J A I L)) (IMPLIES (AND (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (OR (EQUAL J 0) (NOT (NUMBERP J)))) (p B J A I L)) (IMPLIES (AND (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (NOT (OR (EQUAL J 0) (NOT (NUMBERP J)))) (p B (SUB1 J) A (SUB1 I) (CDR L))) (p B J A I L))). Linear arithmetic, the lemmas SUB1-LESSEQP and SUB1-LESSP, and the definitions of OR and NOT inform us that the measure (COUNT J) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instances chosen for L and I. The above induction scheme leads to four new formulas: Case 4. (IMPLIES (AND (OR (EQUAL I 0) (NOT (NUMBERP I))) (NUMBERP I) (NUMBERP J) (IF (LESSP J I) F T)) (EQUAL (PUTNTH B J (PUTNTH A I L)) (IF (EQUAL I J) (PUTNTH B J L) (PUTNTH A I (PUTNTH B J L))))), which simplifies, opening up NOT, OR, NUMBERP, EQUAL, LESSP, and PUTNTH, to three new formulas: Case 4.3. (IMPLIES (AND (EQUAL I 0) (NUMBERP J) (NOT (LISTP L))) (EQUAL (PUTNTH B J L) L)), which again simplifies, opening up PUTNTH, to: T. Case 4.2. (IMPLIES (AND (EQUAL I 0) (NUMBERP J) (NOT (EQUAL 0 J)) (LISTP L)) (EQUAL (PUTNTH B J (CONS A (CDR L))) (CONS A (CDR (CONS (CAR L) (PUTNTH B (SUB1 J) (CDR L))))))), which again simplifies, applying CDR-CONS and CAR-CONS, and expanding the function PUTNTH, to: T. Case 4.1. (IMPLIES (AND (EQUAL I 0) (NUMBERP J) (EQUAL 0 J) (LISTP L)) (EQUAL (PUTNTH B J (CONS A (CDR L))) (CONS B (CDR L)))). But this again simplifies, rewriting with CDR-CONS, and opening up the functions NUMBERP, EQUAL, and PUTNTH, to: T. Case 3. (IMPLIES (AND (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (OR (EQUAL J 0) (NOT (NUMBERP J))) (NUMBERP I) (NUMBERP J) (IF (LESSP J I) F T)) (EQUAL (PUTNTH B J (PUTNTH A I L)) (IF (EQUAL I J) (PUTNTH B J L) (PUTNTH A I (PUTNTH B J L))))). This simplifies, opening up the functions NOT, OR, NUMBERP, EQUAL, and LESSP, to: T. Case 2. (IMPLIES (AND (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (NOT (OR (EQUAL J 0) (NOT (NUMBERP J)))) (NOT (IF (LESSP (SUB1 J) (SUB1 I)) F T)) (NUMBERP I) (NUMBERP J) (IF (LESSP J I) F T)) (EQUAL (PUTNTH B J (PUTNTH A I L)) (IF (EQUAL I J) (PUTNTH B J L) (PUTNTH A I (PUTNTH B J L))))). This simplifies, unfolding the functions NOT, OR, and LESSP, to: T. Case 1. (IMPLIES (AND (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (NOT (OR (EQUAL J 0) (NOT (NUMBERP J)))) (EQUAL (PUTNTH B (SUB1 J) (PUTNTH A (SUB1 I) (CDR L))) (IF (EQUAL (SUB1 I) (SUB1 J)) (PUTNTH B (SUB1 J) (CDR L)) (PUTNTH A (SUB1 I) (PUTNTH B (SUB1 J) (CDR L))))) (NUMBERP I) (NUMBERP J) (IF (LESSP J I) F T)) (EQUAL (PUTNTH B J (PUTNTH A I L)) (IF (EQUAL I J) (PUTNTH B J L) (PUTNTH A I (PUTNTH B J L))))). This simplifies, unfolding the definitions of NOT, OR, LESSP, and PUTNTH, to the following eight new formulas: Case 1.8. (IMPLIES (AND (NOT (EQUAL I 0)) (NOT (EQUAL J 0)) (NOT (EQUAL (SUB1 I) (SUB1 J))) (EQUAL (PUTNTH B (SUB1 J) (PUTNTH A (SUB1 I) (CDR L))) (PUTNTH A (SUB1 I) (PUTNTH B (SUB1 J) (CDR L)))) (NUMBERP I) (NUMBERP J) (NOT (LESSP (SUB1 J) (SUB1 I))) (NOT (EQUAL I J)) (LISTP L)) (EQUAL (PUTNTH B J (CONS (CAR L) (PUTNTH A (SUB1 I) (CDR L)))) (PUTNTH A I (CONS (CAR L) (PUTNTH B (SUB1 J) (CDR L)))))). But this again simplifies, rewriting with CDR-CONS and CAR-CONS, and expanding the definition of PUTNTH, to: T. Case 1.7. (IMPLIES (AND (NOT (EQUAL I 0)) (NOT (EQUAL J 0)) (NOT (EQUAL (SUB1 I) (SUB1 J))) (EQUAL (PUTNTH B (SUB1 J) (PUTNTH A (SUB1 I) (CDR L))) (PUTNTH A (SUB1 I) (PUTNTH B (SUB1 J) (CDR L)))) (NUMBERP I) (NUMBERP J) (NOT (LESSP (SUB1 J) (SUB1 I))) (NOT (EQUAL I J)) (NOT (LISTP L))) (EQUAL (PUTNTH B J L) (PUTNTH A I L))). But this again simplifies, opening up the function PUTNTH, to: T. Case 1.6. (IMPLIES (AND (NOT (EQUAL I 0)) (NOT (EQUAL J 0)) (NOT (EQUAL (SUB1 I) (SUB1 J))) (EQUAL (PUTNTH B (SUB1 J) (PUTNTH A (SUB1 I) (CDR L))) (PUTNTH A (SUB1 I) (PUTNTH B (SUB1 J) (CDR L)))) (NUMBERP I) (NUMBERP J) (NOT (LESSP (SUB1 J) (SUB1 I))) (EQUAL I J) (LISTP L)) (EQUAL (PUTNTH B J (CONS (CAR L) (PUTNTH A (SUB1 I) (CDR L)))) (CONS (CAR L) (PUTNTH B (SUB1 I) (CDR L))))), which again simplifies, obviously, to: T. Case 1.5. (IMPLIES (AND (NOT (EQUAL I 0)) (NOT (EQUAL J 0)) (NOT (EQUAL (SUB1 I) (SUB1 J))) (EQUAL (PUTNTH B (SUB1 J) (PUTNTH A (SUB1 I) (CDR L))) (PUTNTH A (SUB1 I) (PUTNTH B (SUB1 J) (CDR L)))) (NUMBERP I) (NUMBERP J) (NOT (LESSP (SUB1 J) (SUB1 I))) (EQUAL I J) (NOT (LISTP L))) (EQUAL (PUTNTH B J L) L)). This again simplifies, trivially, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL I 0)) (NOT (EQUAL J 0)) (EQUAL (SUB1 I) (SUB1 J)) (EQUAL (PUTNTH B (SUB1 J) (PUTNTH A (SUB1 I) (CDR L))) (PUTNTH B (SUB1 J) (CDR L))) (NUMBERP I) (NUMBERP J) (NOT (LESSP (SUB1 J) (SUB1 I))) (NOT (EQUAL I J)) (LISTP L)) (EQUAL (PUTNTH B J (CONS (CAR L) (PUTNTH A (SUB1 I) (CDR L)))) (PUTNTH A I (CONS (CAR L) (PUTNTH B (SUB1 J) (CDR L)))))). But this again simplifies, using linear arithmetic, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL I 0)) (NOT (EQUAL J 0)) (EQUAL (SUB1 I) (SUB1 J)) (EQUAL (PUTNTH B (SUB1 J) (PUTNTH A (SUB1 I) (CDR L))) (PUTNTH B (SUB1 J) (CDR L))) (NUMBERP I) (NUMBERP J) (NOT (LESSP (SUB1 J) (SUB1 I))) (NOT (EQUAL I J)) (NOT (LISTP L))) (EQUAL (PUTNTH B J L) (PUTNTH A I L))), which again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL I 0)) (NOT (EQUAL J 0)) (EQUAL (SUB1 I) (SUB1 J)) (EQUAL (PUTNTH B (SUB1 J) (PUTNTH A (SUB1 I) (CDR L))) (PUTNTH B (SUB1 J) (CDR L))) (NUMBERP I) (NUMBERP J) (NOT (LESSP (SUB1 J) (SUB1 I))) (EQUAL I J) (LISTP L)) (EQUAL (PUTNTH B J (CONS (CAR L) (PUTNTH A (SUB1 I) (CDR L)))) (CONS (CAR L) (PUTNTH B (SUB1 I) (CDR L))))), which again simplifies, applying CDR-CONS and CAR-CONS, and unfolding the definition of PUTNTH, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL I 0)) (NOT (EQUAL J 0)) (EQUAL (SUB1 I) (SUB1 J)) (EQUAL (PUTNTH B (SUB1 J) (PUTNTH A (SUB1 I) (CDR L))) (PUTNTH B (SUB1 J) (CDR L))) (NUMBERP I) (NUMBERP J) (NOT (LESSP (SUB1 J) (SUB1 I))) (EQUAL I J) (NOT (LISTP L))) (EQUAL (PUTNTH B J L) L)). However this again simplifies, appealing to the lemma CDR-NLISTP, and expanding the functions LISTP and PUTNTH, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PUTNTH-PUTNTH-CASESPLIT (DISABLE PUTNTH-PUTNTH-CASESPLIT) [ 0.0 0.0 0.0 ] PUTNTH-PUTNTH-CASESPLIT-OFF (PROVE-LEMMA PUTNTH-COINCIDENCE (REWRITE) (IMPLIES (EQUAL (FIX I) (FIX J)) (EQUAL (PUTNTH B J (PUTNTH A I L)) (PUTNTH B J L))) ((ENABLE PUTNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, opening up the definitions of FIX, PUTNTH, and EQUAL, to the following four new formulas: Case 4. (IMPLIES (AND (NUMBERP J) (NUMBERP I) (EQUAL I J)) (EQUAL (PUTNTH B I (PUTNTH A I L)) (PUTNTH B I L))). This again simplifies, obviously, to the new goal: (IMPLIES (NUMBERP J) (EQUAL (PUTNTH B J (PUTNTH A J L)) (PUTNTH B J L))), which we will name *1. Case 3. (IMPLIES (AND (NOT (NUMBERP I)) (EQUAL 0 J) (LISTP L)) (EQUAL (CONS B (CDR (CONS A (CDR L)))) (CONS B (CDR L)))). But this again simplifies, rewriting with the lemma CDR-CONS, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP J)) (EQUAL I 0) (LISTP L)) (EQUAL (CONS B (CDR (CONS A (CDR L)))) (CONS B (CDR L)))), which again simplifies, rewriting with the lemma CDR-CONS, to: T. Case 1. (IMPLIES (AND (NOT (NUMBERP J)) (NOT (NUMBERP I)) (LISTP L)) (EQUAL (CONS B (CDR (CONS A (CDR L)))) (CONS B (CDR L)))), which again simplifies, rewriting with CDR-CONS, to: T. So next consider: (IMPLIES (NUMBERP J) (EQUAL (PUTNTH B J (PUTNTH A J L)) (PUTNTH B J L))), which is formula *1 above. Perhaps we can prove it by induction. There are five plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP (PUTNTH A J L)) (ZEROP J)) (p B J A L)) (IMPLIES (AND (LISTP (PUTNTH A J L)) (NOT (ZEROP J)) (p B (SUB1 J) A (CDR L))) (p B J A L)) (IMPLIES (NOT (LISTP (PUTNTH A J L))) (p B J A L))). 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 induction step of the scheme. Note, however, the inductive instance chosen for L. The above induction scheme generates the following three new conjectures: Case 3. (IMPLIES (AND (LISTP (PUTNTH A J L)) (ZEROP J) (NUMBERP J)) (EQUAL (PUTNTH B J (PUTNTH A J L)) (PUTNTH B J L))). This simplifies, appealing to the lemma CDR-CONS, and expanding PUTNTH, ZEROP, NUMBERP, and EQUAL, to: T. Case 2. (IMPLIES (AND (LISTP (PUTNTH A J L)) (NOT (ZEROP J)) (EQUAL (PUTNTH B (SUB1 J) (PUTNTH A (SUB1 J) (CDR L))) (PUTNTH B (SUB1 J) (CDR L))) (NUMBERP J)) (EQUAL (PUTNTH B J (PUTNTH A J L)) (PUTNTH B J L))). This simplifies, applying CDR-CONS and CAR-CONS, and expanding the definitions of PUTNTH and ZEROP, to: T. Case 1. (IMPLIES (AND (NOT (LISTP (PUTNTH A J L))) (NUMBERP J)) (EQUAL (PUTNTH B J (PUTNTH A J L)) (PUTNTH B J L))), which simplifies, unfolding PUTNTH, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PUTNTH-COINCIDENCE (DISABLE PUTNTH-COINCIDENCE) [ 0.0 0.0 0.0 ] PUTNTH-COINCIDENCE-OFF (PROVE-LEMMA PUTNTH-NON-INTERFERENCE NIL (IMPLIES (NOT (EQUAL (FIX I) (FIX J))) (EQUAL (PUTNTH B J (PUTNTH A I L)) (PUTNTH A I (PUTNTH B J L)))) ((ENABLE PUTNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, opening up the functions FIX and PUTNTH, to the following seven new conjectures: Case 7. (IMPLIES (AND (NOT (NUMBERP J)) (NUMBERP I) (NOT (EQUAL I 0)) (NOT (LISTP L)) (LISTP (PUTNTH A I L))) (EQUAL (CONS B (CDR (PUTNTH A I L))) (PUTNTH A I L))). However this again simplifies, unfolding PUTNTH, to: T. Case 6. (IMPLIES (AND (NOT (NUMBERP J)) (NUMBERP I) (NOT (EQUAL I 0)) (LISTP L) (NOT (LISTP (PUTNTH A I L)))) (EQUAL (PUTNTH A I L) (PUTNTH A I (CONS B (CDR L))))), which again simplifies, clearly, to: T. Case 5. (IMPLIES (AND (NOT (NUMBERP J)) (NUMBERP I) (NOT (EQUAL I 0)) (LISTP L) (LISTP (PUTNTH A I L))) (EQUAL (CONS B (CDR (PUTNTH A I L))) (PUTNTH A I (CONS B (CDR L))))). However this again simplifies, applying CDR-CONS, CAR-CONS, and CONS-EQUAL, and unfolding the function PUTNTH, to: (IMPLIES (AND (NOT (NUMBERP J)) (NUMBERP I) (NOT (EQUAL I 0)) (LISTP L)) (EQUAL (CDR (PUTNTH A I L)) (PUTNTH A (SUB1 I) (CDR L)))), which again simplifies, applying CDR-CONS, and unfolding the function PUTNTH, to: T. Case 4. (IMPLIES (AND (NUMBERP J) (NOT (NUMBERP I)) (NOT (EQUAL 0 J)) (NOT (LISTP (PUTNTH B J L))) (LISTP L)) (EQUAL (PUTNTH B J (CONS A (CDR L))) (PUTNTH B J L))). This again simplifies, obviously, to: T. Case 3. (IMPLIES (AND (NUMBERP J) (NOT (NUMBERP I)) (NOT (EQUAL 0 J)) (LISTP (PUTNTH B J L)) (NOT (LISTP L))) (EQUAL (PUTNTH B J L) (CONS A (CDR (PUTNTH B J L))))). This again simplifies, unfolding PUTNTH, to: T. Case 2. (IMPLIES (AND (NUMBERP J) (NOT (NUMBERP I)) (NOT (EQUAL 0 J)) (LISTP (PUTNTH B J L)) (LISTP L)) (EQUAL (PUTNTH B J (CONS A (CDR L))) (CONS A (CDR (PUTNTH B J L))))), which again simplifies, applying CDR-CONS, CAR-CONS, and CONS-EQUAL, and unfolding the definition of PUTNTH, to: (IMPLIES (AND (NUMBERP J) (NOT (NUMBERP I)) (NOT (EQUAL 0 J)) (LISTP L)) (EQUAL (PUTNTH B (SUB1 J) (CDR L)) (CDR (PUTNTH B J L)))), which again simplifies, applying CDR-CONS, and unfolding the definition of PUTNTH, to: T. Case 1. (IMPLIES (AND (NUMBERP J) (NUMBERP I) (NOT (EQUAL I J))) (EQUAL (PUTNTH B J (PUTNTH A I L)) (PUTNTH A I (PUTNTH B J L)))). Name the above subgoal *1. We will appeal to induction. Six 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 (AND (LISTP (PUTNTH A I L)) (ZEROP J)) (p B J A I L)) (IMPLIES (AND (LISTP (PUTNTH A I L)) (NOT (ZEROP J)) (p B (SUB1 J) A (SUB1 I) (CDR L))) (p B J A I L)) (IMPLIES (NOT (LISTP (PUTNTH A I L))) (p B J A I L))). 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 induction step of the scheme. Note, however, the inductive instances chosen for I and L. The above induction scheme produces the following four new goals: Case 4. (IMPLIES (AND (LISTP (PUTNTH A I L)) (ZEROP J) (NUMBERP J) (NUMBERP I) (NOT (EQUAL I J))) (EQUAL (PUTNTH B J (PUTNTH A I L)) (PUTNTH A I (PUTNTH B J L)))). This simplifies, applying the lemmas CDR-CONS and CAR-CONS, and unfolding the functions PUTNTH, ZEROP, NUMBERP, and EQUAL, to: T. Case 3. (IMPLIES (AND (LISTP (PUTNTH A I L)) (NOT (ZEROP J)) (EQUAL (SUB1 I) (SUB1 J)) (NUMBERP J) (NUMBERP I) (NOT (EQUAL I J))) (EQUAL (PUTNTH B J (PUTNTH A I L)) (PUTNTH A I (PUTNTH B J L)))). This simplifies, using linear arithmetic, to the following two new formulas: Case 3.2. (IMPLIES (AND (EQUAL J 0) (LISTP (PUTNTH A I L)) (NOT (ZEROP J)) (EQUAL (SUB1 I) (SUB1 J)) (NUMBERP J) (NUMBERP I) (NOT (EQUAL I J))) (EQUAL (PUTNTH B J (PUTNTH A I L)) (PUTNTH A I (PUTNTH B J L)))). This again simplifies, opening up the functions PUTNTH and ZEROP, to: T. Case 3.1. (IMPLIES (AND (EQUAL I 0) (LISTP (PUTNTH A I L)) (NOT (ZEROP J)) (EQUAL (SUB1 I) (SUB1 J)) (NUMBERP J) (NUMBERP I) (NOT (EQUAL I J))) (EQUAL (PUTNTH B J (PUTNTH A I L)) (PUTNTH A I (PUTNTH B J L)))), which again simplifies, applying the lemmas CDR-CONS, CAR-CONS, and CONS-EQUAL, and unfolding EQUAL, PUTNTH, ZEROP, SUB1, and NUMBERP, to two new conjectures: Case 3.1.2. (IMPLIES (AND (LISTP L) (EQUAL 0 (SUB1 J)) (NUMBERP J) (NOT (EQUAL 0 J)) (NOT (LISTP (CDR L)))) (EQUAL (CDR L) (PUTNTH B (SUB1 J) (CDR L)))), which again simplifies, expanding the definition of PUTNTH, to: T. Case 3.1.1. (IMPLIES (AND (LISTP L) (EQUAL 0 (SUB1 J)) (NUMBERP J) (NOT (EQUAL 0 J)) (LISTP (CDR L))) (EQUAL (CONS B (CDDR L)) (PUTNTH B (SUB1 J) (CDR L)))), which again simplifies, opening up the functions EQUAL and PUTNTH, to: T. Case 2. (IMPLIES (AND (LISTP (PUTNTH A I L)) (NOT (ZEROP J)) (EQUAL (PUTNTH B (SUB1 J) (PUTNTH A (SUB1 I) (CDR L))) (PUTNTH A (SUB1 I) (PUTNTH B (SUB1 J) (CDR L)))) (NUMBERP J) (NUMBERP I) (NOT (EQUAL I J))) (EQUAL (PUTNTH B J (PUTNTH A I L)) (PUTNTH A I (PUTNTH B J L)))), which simplifies, rewriting with CAR-CONS and CDR-CONS, and unfolding PUTNTH and ZEROP, to the following two new goals: Case 2.2. (IMPLIES (AND (LISTP L) (NOT (EQUAL J 0)) (EQUAL (PUTNTH B (SUB1 J) (PUTNTH A (SUB1 I) (CDR L))) (PUTNTH A (SUB1 I) (PUTNTH B (SUB1 J) (CDR L)))) (NUMBERP J) (NUMBERP I) (NOT (EQUAL I J)) (NOT (EQUAL I 0))) (EQUAL (PUTNTH B J (CONS (CAR L) (PUTNTH A (SUB1 I) (CDR L)))) (CONS (CAR L) (PUTNTH A (SUB1 I) (PUTNTH B (SUB1 J) (CDR L)))))). However this again simplifies, applying the lemmas CDR-CONS and CAR-CONS, and unfolding the function PUTNTH, to: T. Case 2.1. (IMPLIES (AND (LISTP L) (NOT (EQUAL J 0)) (EQUAL (PUTNTH B (SUB1 J) (PUTNTH A (SUB1 I) (CDR L))) (PUTNTH A (SUB1 I) (PUTNTH B (SUB1 J) (CDR L)))) (NUMBERP J) (NUMBERP I) (NOT (EQUAL I J)) (EQUAL I 0)) (EQUAL (PUTNTH B J (CONS A (CDR L))) (CONS A (PUTNTH B (SUB1 J) (CDR L))))), which again simplifies, rewriting with CDR-CONS and CAR-CONS, and expanding the definitions of SUB1, EQUAL, PUTNTH, and NUMBERP, to: T. Case 1. (IMPLIES (AND (NOT (LISTP (PUTNTH A I L))) (NUMBERP J) (NUMBERP I) (NOT (EQUAL I J))) (EQUAL (PUTNTH B J (PUTNTH A I L)) (PUTNTH A I (PUTNTH B J L)))). This simplifies, unfolding PUTNTH, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] PUTNTH-NON-INTERFERENCE (PROVE-LEMMA PUTNTH-NON-INTERFERENCE-COROLLARY1 (REWRITE) (IMPLIES (LESSP (FIX I) (ADD1 J)) (EQUAL (PUTNTH B (ADD1 J) (PUTNTH A I L)) (PUTNTH A I (PUTNTH B (ADD1 J) L)))) ((USE (PUTNTH-NON-INTERFERENCE (I I) (J (ADD1 J)) (A A) (B B) (L L))) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, opening up FIX, NOT, IMPLIES, and LESSP, to the conjecture: (IMPLIES (AND (NUMBERP I) (EQUAL I (ADD1 J)) (LESSP I I)) (EQUAL (PUTNTH B I (PUTNTH A I L)) (PUTNTH A I (PUTNTH B I L)))). However this again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PUTNTH-NON-INTERFERENCE-COROLLARY1 (DISABLE PUTNTH-NON-INTERFERENCE-COROLLARY1) [ 0.0 0.0 0.0 ] PUTNTH-NON-INTERFERENCE-COROLLARY1-OFF (PROVE-LEMMA PUTNTH-NON-INTERFERENCE-COROLLARY2 (REWRITE) (IMPLIES (LESSP (FIX I) (PLUS J K)) (EQUAL (PUTNTH B (PLUS J K) (PUTNTH A I L)) (PUTNTH A I (PUTNTH B (PLUS J K) L)))) ((USE (PUTNTH-NON-INTERFERENCE (I I) (J (PLUS J K)) (A A) (B B) (L L))) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, opening up the definitions of FIX, NOT, IMPLIES, and LESSP, to: (IMPLIES (AND (NUMBERP I) (EQUAL I (PLUS J K)) (LESSP I I)) (EQUAL (PUTNTH B I (PUTNTH A I L)) (PUTNTH A I (PUTNTH B I L)))). However this again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PUTNTH-NON-INTERFERENCE-COROLLARY2 (DISABLE PUTNTH-NON-INTERFERENCE-COROLLARY2) [ 0.0 0.0 0.0 ] PUTNTH-NON-INTERFERENCE-COROLLARY2-OFF (PROVE-LEMMA PUTNTH-PUTSEG-COINCIDENCE-PROOF (REWRITE) (IMPLIES (AND (NUMBERP N) (AND (NUMBERP I) (AND (IF (LESSP I N) '*1*FALSE '*1*TRUE) (LESSP (DIFFERENCE I N) (LENGTH S))))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))) ((ENABLE PUTSEG PUTNTH LENGTH DIFFERENCE-X-X DIFFERENCE-SUB1-ARG1 LISTP-PUTSEG NON-ZERO-LENGTH-IMPLIES-LISTP PUTNTH-PUTNTH-CASESPLIT) (INDUCT (PUTSEG S N L)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations IMPLIES, NOT, OR, and AND, to the following two new conjectures: Case 2. (IMPLIES (AND (LISTP S) (IMPLIES (AND (NUMBERP (ADD1 N)) (NUMBERP I) (IF (LESSP I (ADD1 N)) F T) (LESSP (DIFFERENCE I (ADD1 N)) (LENGTH (CDR S)))) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (PUTNTH V (DIFFERENCE I (ADD1 N)) (CDR S)) (ADD1 N) L))) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (LESSP (DIFFERENCE I N) (LENGTH S))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))). This simplifies, appealing to the lemmas SUB1-ADD1, PUTNTH-PUTNTH-CASESPLIT, CDR-CONS, CAR-CONS, and LISTP-PUTSEG, and unfolding the definitions of LESSP, DIFFERENCE, AND, IMPLIES, LENGTH, PUTSEG, EQUAL, PUTNTH, NUMBERP, and ADD1, to the following 14 new formulas: Case 2.14. (IMPLIES (AND (LISTP S) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (PUTNTH V (DIFFERENCE (SUB1 I) N) (CDR S)) (ADD1 N) L)) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (NOT (EQUAL N I))) (EQUAL (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))) (PUTNTH V N (PUTSEG (CDR S) (ADD1 N) L)))). But this again simplifies, using linear arithmetic, to: T. Case 2.13. (IMPLIES (AND (LISTP S) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (PUTNTH V (DIFFERENCE (SUB1 I) N) (CDR S)) (ADD1 N) L)) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (EQUAL N I)) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTNTH V N (PUTSEG (CDR S) (ADD1 N) L)))), which again simplifies, clearly, to: T. Case 2.12. (IMPLIES (AND (LISTP S) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (PUTNTH V (DIFFERENCE (SUB1 I) N) (CDR S)) (ADD1 N) L)) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (NOT (EQUAL N I))) (EQUAL (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))). However this again simplifies, using linear arithmetic and rewriting with DIFFERENCE-SUB1-ARG1, to: (IMPLIES (AND (LISTP S) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (PUTNTH V (SUB1 (DIFFERENCE I N)) (CDR S)) (ADD1 N) L)) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (NOT (EQUAL N I))) (EQUAL (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))), which again simplifies, unfolding the definition of PUTNTH, to two new conjectures: Case 2.12.2. (IMPLIES (AND (LISTP S) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (PUTNTH V (SUB1 (DIFFERENCE I N)) (CDR S)) (ADD1 N) L)) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (NOT (EQUAL N I)) (NOT (EQUAL (DIFFERENCE I N) 0))) (EQUAL (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))) (PUTSEG (CONS (CAR S) (PUTNTH V (SUB1 (DIFFERENCE I N)) (CDR S))) N L))), which again simplifies, rewriting with CDR-CONS and CAR-CONS, and opening up the function PUTSEG, to: T. Case 2.12.1. (IMPLIES (AND (LISTP S) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (PUTNTH V (SUB1 (DIFFERENCE I N)) (CDR S)) (ADD1 N) L)) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (NOT (EQUAL N I)) (EQUAL (DIFFERENCE I N) 0)) (EQUAL (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))) (PUTSEG (CONS V (CDR S)) N L))). However this again simplifies, using linear arithmetic, to: T. Case 2.11. (IMPLIES (AND (LISTP S) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (PUTNTH V (DIFFERENCE (SUB1 I) N) (CDR S)) (ADD1 N) L)) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (EQUAL N I)) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))), which again simplifies, applying DIFFERENCE-X-X, CDR-CONS, and CAR-CONS, and opening up the definitions of SUB1, EQUAL, LESSP, PUTNTH, and PUTSEG, to: T. Case 2.10. (IMPLIES (AND (LISTP S) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (NOT (EQUAL N I))) (EQUAL (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))) (PUTNTH V N (PUTSEG (CDR S) (ADD1 N) L)))). This again simplifies, using linear arithmetic, to two new formulas: Case 2.10.2. (IMPLIES (AND (LESSP (SUB1 I) N) (LISTP S) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (NOT (EQUAL N I))) (EQUAL (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))) (PUTNTH V N (PUTSEG (CDR S) (ADD1 N) L)))), which again simplifies, using linear arithmetic, to: T. Case 2.10.1. (IMPLIES (AND (EQUAL I 0) (LISTP S) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (NOT (EQUAL N I))) (EQUAL (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))) (PUTNTH V N (PUTSEG (CDR S) (ADD1 N) L)))), which again simplifies, using linear arithmetic, to: T. Case 2.9. (IMPLIES (AND (LISTP S) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (EQUAL N I)) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTNTH V N (PUTSEG (CDR S) (ADD1 N) L)))), which again simplifies, trivially, to: T. Case 2.8. (IMPLIES (AND (LISTP S) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (NOT (EQUAL N I))) (EQUAL (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))). This again simplifies, using linear arithmetic, to two new goals: Case 2.8.2. (IMPLIES (AND (LESSP (SUB1 I) N) (LISTP S) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (NOT (EQUAL N I))) (EQUAL (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))), which again simplifies, using linear arithmetic, to: T. Case 2.8.1. (IMPLIES (AND (EQUAL I 0) (LISTP S) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (NOT (EQUAL N I))) (EQUAL (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))), which again simplifies, using linear arithmetic, to: T. Case 2.7. (IMPLIES (AND (LISTP S) (NOT (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S)))) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (EQUAL N I)) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))), which again simplifies, using linear arithmetic, to two new conjectures: Case 2.7.2. (IMPLIES (AND (LESSP (SUB1 I) I) (LISTP S) (NOT (LESSP (DIFFERENCE (SUB1 I) I) (LENGTH (CDR S)))) (NUMBERP I) (NUMBERP I) (NOT (LESSP I I)) (LESSP (SUB1 (DIFFERENCE I I)) (LENGTH (CDR S)))) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 I) L)) (PUTSEG (PUTNTH V (DIFFERENCE I I) S) I L))), which again simplifies, rewriting with DIFFERENCE-X-X, CDR-CONS, and CAR-CONS, and opening up SUB1, EQUAL, LESSP, PUTNTH, and PUTSEG, to: T. Case 2.7.1. (IMPLIES (AND (EQUAL I 0) (LISTP S) (NOT (LESSP (DIFFERENCE (SUB1 I) I) (LENGTH (CDR S)))) (NUMBERP I) (NUMBERP I) (NOT (LESSP I I)) (LESSP (SUB1 (DIFFERENCE I I)) (LENGTH (CDR S)))) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 I) L)) (PUTSEG (PUTNTH V (DIFFERENCE I I) S) I L))). However this again simplifies, unfolding the functions SUB1, DIFFERENCE, EQUAL, LESSP, and NUMBERP, to: T. Case 2.6. (IMPLIES (AND (LISTP S) (LESSP (SUB1 I) N) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (NOT (EQUAL N I))) (EQUAL (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))) (PUTNTH V N (PUTSEG (CDR S) (ADD1 N) L)))), which again simplifies, using linear arithmetic, to: T. Case 2.5. (IMPLIES (AND (LISTP S) (LESSP (SUB1 I) N) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (EQUAL (DIFFERENCE I N) 0) (EQUAL N I)) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTNTH V N (PUTSEG (CDR S) (ADD1 N) L)))), which again simplifies, clearly, to: T. Case 2.4. (IMPLIES (AND (LISTP S) (LESSP (SUB1 I) N) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (NOT (EQUAL N I))) (EQUAL (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))). This again simplifies, using linear arithmetic, to: T. Case 2.3. (IMPLIES (AND (LISTP S) (LESSP (SUB1 I) N) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S))) (EQUAL N I)) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))), which again simplifies, applying DIFFERENCE-X-X, CDR-CONS, and CAR-CONS, and opening up the functions SUB1, EQUAL, LESSP, PUTNTH, and PUTSEG, to: T. Case 2.2. (IMPLIES (AND (LISTP S) (EQUAL I 0) (NUMBERP N) (EQUAL N 0) (NOT (LISTP L))) (EQUAL (PUTSEG S 0 L) (PUTSEG (CDR S) 1 L))). This again simplifies, rewriting with LISTP-PUTSEG, and expanding NUMBERP, PUTNTH, ADD1, and PUTSEG, to: T. Case 2.1. (IMPLIES (AND (LISTP S) (EQUAL I 0) (NUMBERP N) (EQUAL N 0) (LISTP L)) (EQUAL (CONS V (CDR (PUTSEG S 0 L))) (CONS V (CDR (PUTSEG (CDR S) 1 L))))). However this again simplifies, rewriting with the lemma CDR-CONS, and unfolding the definitions of NUMBERP, PUTNTH, EQUAL, ADD1, and PUTSEG, to: T. Case 1. (IMPLIES (AND (NOT (LISTP S)) (NUMBERP N) (NUMBERP I) (NOT (LESSP I N)) (LESSP (DIFFERENCE I N) (LENGTH S))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))), which simplifies, using linear arithmetic and rewriting with NON-ZERO-LENGTH-IMPLIES-LISTP, to: T. Q.E.D. [ 0.0 0.2 0.0 ] PUTNTH-PUTSEG-COINCIDENCE-PROOF (DISABLE PUTNTH-PUTSEG-COINCIDENCE-PROOF) [ 0.0 0.0 0.0 ] PUTNTH-PUTSEG-COINCIDENCE-PROOF-OFF (PROVE-LEMMA PUTSEG-WITH-NON-NUMBER-INDEX (REWRITE) (IMPLIES (NOT (NUMBERP N)) (EQUAL (PUTSEG S N L) (PUTSEG S '0 L))) ((ENABLE PUTSEG PUTNTH-WITH-NON-NUMBER-INDEX) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Give the conjecture the name *1. Let us appeal to the induction principle. 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 (AND (LISTP S) (p (CDR S) (ADD1 N) L)) (p S N L)) (IMPLIES (NOT (LISTP S)) (p S N L))). Linear arithmetic and the lemma CDR-LESSP can be used to show that the measure (COUNT S) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for N. The above induction scheme generates the following two new conjectures: Case 2. (IMPLIES (AND (LISTP S) (NOT (NUMBERP N))) (EQUAL (PUTSEG S N L) (PUTSEG S 0 L))). This simplifies, appealing to the lemma PUTNTH-WITH-NON-NUMBER-INDEX, and expanding the functions PUTSEG and ADD1, to: (IMPLIES (AND (LISTP S) (NOT (NUMBERP N))) (EQUAL (PUTNTH (CAR S) 0 (PUTSEG (CDR S) (ADD1 N) L)) (PUTNTH (CAR S) 0 (PUTSEG (CDR S) 1 L)))), which further simplifies, applying SUB1-TYPE-RESTRICTION, to: T. Case 1. (IMPLIES (AND (NOT (LISTP S)) (NOT (NUMBERP N))) (EQUAL (PUTSEG S N L) (PUTSEG S 0 L))). This simplifies, opening up the definition of PUTSEG, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PUTSEG-WITH-NON-NUMBER-INDEX (DISABLE PUTSEG-WITH-NON-NUMBER-INDEX) [ 0.0 0.0 0.0 ] PUTSEG-WITH-NON-NUMBER-INDEX-OFF (PROVE-LEMMA PUTNTH-PUTSEG-COINCIDENCE (REWRITE) (IMPLIES (AND (IF (LESSP I N) '*1*FALSE '*1*TRUE) (LESSP (DIFFERENCE I N) (LENGTH S))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))) ((ENABLE PUTNTH-PUTSEG-COINCIDENCE-PROOF PUTNTH-WITH-NON-NUMBER-INDEX PUTSEG-WITH-NON-NUMBER-INDEX) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. Perhaps we can prove it by induction. There are six plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (OR (EQUAL N 0) (NOT (NUMBERP N))) (p V I S N L)) (IMPLIES (AND (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (OR (EQUAL I 0) (NOT (NUMBERP I)))) (p V I S N L)) (IMPLIES (AND (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (p V (SUB1 I) S (SUB1 N) L)) (p V I S N L))). Linear arithmetic, the lemmas SUB1-LESSEQP and SUB1-LESSP, and the definitions of OR and NOT 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. Note, however, the inductive instance chosen for N. The above induction scheme leads to five new goals: Case 5. (IMPLIES (AND (OR (EQUAL N 0) (NOT (NUMBERP N))) (NOT (LESSP I N)) (LESSP (DIFFERENCE I N) (LENGTH S))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))), which simplifies, using linear arithmetic, applying the lemmas PUTNTH-PUTSEG-COINCIDENCE-PROOF, PUTNTH-WITH-NON-NUMBER-INDEX, and PUTSEG-WITH-NON-NUMBER-INDEX, and expanding NOT, OR, EQUAL, LESSP, and DIFFERENCE, to four new formulas: Case 5.4. (IMPLIES (AND (EQUAL N 0) (EQUAL I 0) (LESSP 0 (LENGTH S))) (EQUAL (PUTNTH V 0 (PUTSEG S 0 L)) (PUTSEG (PUTNTH V 0 S) 0 L))), which again simplifies, using linear arithmetic, applying PUTNTH-PUTSEG-COINCIDENCE-PROOF, and unfolding EQUAL, LESSP, and DIFFERENCE, to: T. Case 5.3. (IMPLIES (AND (EQUAL N 0) (NOT (NUMBERP I)) (LESSP 0 (LENGTH S))) (EQUAL (PUTNTH V 0 (PUTSEG S 0 L)) (PUTSEG (PUTNTH V 0 S) 0 L))). This again simplifies, using linear arithmetic, applying PUTNTH-PUTSEG-COINCIDENCE-PROOF, and opening up the definitions of EQUAL, LESSP, and DIFFERENCE, to: T. Case 5.2. (IMPLIES (AND (NOT (NUMBERP N)) (EQUAL I 0) (LESSP 0 (LENGTH S))) (EQUAL (PUTNTH V 0 (PUTSEG S 0 L)) (PUTSEG (PUTNTH V 0 S) 0 L))). But this again simplifies, using linear arithmetic, rewriting with PUTNTH-PUTSEG-COINCIDENCE-PROOF, and opening up the definitions of EQUAL, LESSP, and DIFFERENCE, to: T. Case 5.1. (IMPLIES (AND (NOT (NUMBERP N)) (NOT (NUMBERP I)) (LESSP 0 (LENGTH S))) (EQUAL (PUTNTH V 0 (PUTSEG S 0 L)) (PUTSEG (PUTNTH V 0 S) 0 L))). However this again simplifies, using linear arithmetic, applying PUTNTH-PUTSEG-COINCIDENCE-PROOF, and unfolding the definitions of EQUAL, LESSP, and DIFFERENCE, to: T. Case 4. (IMPLIES (AND (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (OR (EQUAL I 0) (NOT (NUMBERP I))) (NOT (LESSP I N)) (LESSP (DIFFERENCE I N) (LENGTH S))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))). This simplifies, opening up the functions NOT, OR, EQUAL, and LESSP, to: T. Case 3. (IMPLIES (AND (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (LESSP (SUB1 I) (SUB1 N)) (NOT (LESSP I N)) (LESSP (DIFFERENCE I N) (LENGTH S))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))). This simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP N 1) (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (LESSP (SUB1 I) (SUB1 N)) (NOT (LESSP I N)) (LESSP (DIFFERENCE I N) (LENGTH S))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))), which again simplifies, expanding the definitions of SUB1, NUMBERP, EQUAL, LESSP, NOT, and OR, to: T. Case 2. (IMPLIES (AND (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (NOT (LESSP (DIFFERENCE (SUB1 I) (SUB1 N)) (LENGTH S))) (NOT (LESSP I N)) (LESSP (DIFFERENCE I N) (LENGTH S))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))), which simplifies, using linear arithmetic, to two new goals: Case 2.2. (IMPLIES (AND (LESSP (SUB1 I) (SUB1 N)) (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (NOT (LESSP (DIFFERENCE (SUB1 I) (SUB1 N)) (LENGTH S))) (NOT (LESSP I N)) (LESSP (DIFFERENCE I N) (LENGTH S))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))), which again simplifies, using linear arithmetic, to the goal: (IMPLIES (AND (LESSP N 1) (LESSP (SUB1 I) (SUB1 N)) (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (NOT (LESSP (DIFFERENCE (SUB1 I) (SUB1 N)) (LENGTH S))) (NOT (LESSP I N)) (LESSP (DIFFERENCE I N) (LENGTH S))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))). But this again simplifies, unfolding the functions SUB1, NUMBERP, EQUAL, LESSP, NOT, and OR, to: T. Case 2.1. (IMPLIES (AND (LESSP I 1) (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (NOT (LESSP (DIFFERENCE (SUB1 I) (SUB1 N)) (LENGTH S))) (NOT (LESSP I N)) (LESSP (DIFFERENCE I N) (LENGTH S))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))), which again simplifies, unfolding the functions SUB1, NUMBERP, EQUAL, LESSP, NOT, and OR, to: T. Case 1. (IMPLIES (AND (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (EQUAL (PUTNTH V (SUB1 I) (PUTSEG S (SUB1 N) L)) (PUTSEG (PUTNTH V (DIFFERENCE (SUB1 I) (SUB1 N)) S) (SUB1 N) L)) (NOT (LESSP I N)) (LESSP (DIFFERENCE I N) (LENGTH S))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG (PUTNTH V (DIFFERENCE I N) S) N L))), which simplifies, using linear arithmetic, applying PUTNTH-PUTSEG-COINCIDENCE-PROOF, and unfolding the definitions of NOT, OR, LESSP, and DIFFERENCE, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PUTNTH-PUTSEG-COINCIDENCE (DISABLE PUTNTH-PUTSEG-COINCIDENCE) [ 0.0 0.0 0.0 ] PUTNTH-PUTSEG-COINCIDENCE-OFF (PROVE-LEMMA PUTNTH-PUTSEG-COINCIDENCE-INVERSE (REWRITE) (IMPLIES (AND (LESSP I (LENGTH S)) (NUMBERP I)) (EQUAL (PUTSEG (PUTNTH V I S) N L) (PUTNTH V (PLUS I N) (PUTSEG S N L)))) ((USE (PUTNTH-PUTSEG-COINCIDENCE (N N) (I (PLUS I N)) (V V) (S S) (L L))) (ENABLE DIFFERENCE-PLUS2) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture simplifies, rewriting with DIFFERENCE-PLUS2, and unfolding the definitions of AND and IMPLIES, to the new formula: (IMPLIES (AND (LESSP (PLUS I N) N) (LESSP I (LENGTH S)) (NUMBERP I)) (EQUAL (PUTSEG (PUTNTH V I S) N L) (PUTNTH V (PLUS I N) (PUTSEG S N L)))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PUTNTH-PUTSEG-COINCIDENCE-INVERSE (DISABLE PUTNTH-PUTSEG-COINCIDENCE-INVERSE) [ 0.0 0.0 0.0 ] PUTNTH-PUTSEG-COINCIDENCE-INVERSE-OFF (PROVE-LEMMA PUTNTH-AFTER-PUTSEG-PROOF (REWRITE) (IMPLIES (AND (NUMBERP I) (AND (NUMBERP N) (AND (IF (LESSP I N) '*1*FALSE '*1*TRUE) (IF (LESSP (DIFFERENCE I N) (LENGTH S)) '*1*FALSE '*1*TRUE)))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG S N (PUTNTH V I L)))) ((ENABLE PUTNTH PUTSEG LENGTH PUTNTH-PUTNTH-CASESPLIT) (INDUCT (PUTSEG S N L)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations IMPLIES, NOT, OR, and AND, to two new conjectures: Case 2. (IMPLIES (AND (LISTP S) (IMPLIES (AND (NUMBERP I) (NUMBERP (ADD1 N)) (IF (LESSP I (ADD1 N)) F T) (IF (LESSP (DIFFERENCE I (ADD1 N)) (LENGTH (CDR S))) F T)) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (CDR S) (ADD1 N) (PUTNTH V I L)))) (NUMBERP I) (NUMBERP N) (NOT (LESSP I N)) (NOT (LESSP (DIFFERENCE I N) (LENGTH S)))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG S N (PUTNTH V I L)))), which simplifies, rewriting with the lemmas SUB1-ADD1 and PUTNTH-PUTNTH-CASESPLIT, and unfolding the definitions of LESSP, DIFFERENCE, AND, IMPLIES, LENGTH, PUTSEG, NUMBERP, and EQUAL, to five new goals: Case 2.5. (IMPLIES (AND (LISTP S) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (CDR S) (ADD1 N) (PUTNTH V I L))) (NUMBERP I) (NUMBERP N) (NOT (LESSP I N)) (NOT (EQUAL (DIFFERENCE I N) 0)) (NOT (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S)))) (EQUAL N I)) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))))), which again simplifies, using linear arithmetic, to: T. Case 2.4. (IMPLIES (AND (LISTP S) (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S))) (NUMBERP I) (NUMBERP N) (NOT (LESSP I N)) (NOT (EQUAL (DIFFERENCE I N) 0)) (NOT (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S)))) (NOT (EQUAL N I))) (EQUAL (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))) (PUTNTH (CAR S) N (PUTSEG (CDR S) (ADD1 N) (PUTNTH V I L))))), which again simplifies, using linear arithmetic, to the formula: (IMPLIES (AND (NOT (LESSP N I)) (LISTP S) (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S))) (NUMBERP I) (NUMBERP N) (NOT (LESSP I N)) (NOT (EQUAL (DIFFERENCE I N) 0)) (NOT (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S)))) (NOT (EQUAL N I))) (EQUAL (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))) (PUTNTH (CAR S) N (PUTSEG (CDR S) (ADD1 N) (PUTNTH V I L))))). However this again simplifies, using linear arithmetic, to: T. Case 2.3. (IMPLIES (AND (LISTP S) (LESSP (DIFFERENCE (SUB1 I) N) (LENGTH (CDR S))) (NUMBERP I) (NUMBERP N) (NOT (LESSP I N)) (NOT (EQUAL (DIFFERENCE I N) 0)) (NOT (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S)))) (EQUAL N I)) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTNTH (CAR S) N (PUTSEG (CDR S) (ADD1 N) (PUTNTH V I L))))), which again simplifies, using linear arithmetic, to: T. Case 2.2. (IMPLIES (AND (LISTP S) (LESSP (SUB1 I) N) (NUMBERP I) (NUMBERP N) (NOT (LESSP I N)) (NOT (EQUAL (DIFFERENCE I N) 0)) (NOT (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S)))) (NOT (EQUAL N I))) (EQUAL (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))) (PUTNTH (CAR S) N (PUTSEG (CDR S) (ADD1 N) (PUTNTH V I L))))), which again simplifies, using linear arithmetic, to the conjecture: (IMPLIES (AND (NOT (LESSP N I)) (LISTP S) (LESSP (SUB1 I) N) (NUMBERP I) (NUMBERP N) (NOT (LESSP I N)) (NOT (EQUAL (DIFFERENCE I N) 0)) (NOT (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S)))) (NOT (EQUAL N I))) (EQUAL (PUTNTH (CAR S) N (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L))) (PUTNTH (CAR S) N (PUTSEG (CDR S) (ADD1 N) (PUTNTH V I L))))). But this again simplifies, using linear arithmetic, to: T. Case 2.1. (IMPLIES (AND (LISTP S) (LESSP (SUB1 I) N) (NUMBERP I) (NUMBERP N) (NOT (LESSP I N)) (NOT (EQUAL (DIFFERENCE I N) 0)) (NOT (LESSP (SUB1 (DIFFERENCE I N)) (LENGTH (CDR S)))) (EQUAL N I)) (EQUAL (PUTNTH V I (PUTSEG (CDR S) (ADD1 N) L)) (PUTNTH (CAR S) N (PUTSEG (CDR S) (ADD1 N) (PUTNTH V I L))))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (LISTP S)) (NUMBERP I) (NUMBERP N) (NOT (LESSP I N)) (NOT (LESSP (DIFFERENCE I N) (LENGTH S)))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG S N (PUTNTH V I L)))), which simplifies, unfolding LENGTH, EQUAL, LESSP, and PUTSEG, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PUTNTH-AFTER-PUTSEG-PROOF (DISABLE PUTNTH-AFTER-PUTSEG-PROOF) [ 0.0 0.0 0.0 ] PUTNTH-AFTER-PUTSEG-PROOF-OFF (PROVE-LEMMA PUTNTH-AFTER-PUTSEG (REWRITE) (IMPLIES (AND (IF (LESSP I N) '*1*FALSE '*1*TRUE) (IF (LESSP (DIFFERENCE I N) (LENGTH S)) '*1*FALSE '*1*TRUE)) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG S N (PUTNTH V I L)))) ((ENABLE PUTNTH-AFTER-PUTSEG-PROOF PUTNTH-WITH-NON-NUMBER-INDEX PUTSEG-WITH-NON-NUMBER-INDEX) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. Let us appeal to the induction principle. 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 N 0) (NOT (NUMBERP N))) (p V I S N L)) (IMPLIES (AND (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (OR (EQUAL I 0) (NOT (NUMBERP I)))) (p V I S N L)) (IMPLIES (AND (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (p V (SUB1 I) S (SUB1 N) L)) (p V I S N L))). 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 I) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for N. The above induction scheme generates the following five new conjectures: Case 5. (IMPLIES (AND (OR (EQUAL N 0) (NOT (NUMBERP N))) (NOT (LESSP I N)) (NOT (LESSP (DIFFERENCE I N) (LENGTH S)))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG S N (PUTNTH V I L)))). This simplifies, using linear arithmetic, rewriting with PUTNTH-AFTER-PUTSEG-PROOF, PUTNTH-WITH-NON-NUMBER-INDEX, and PUTSEG-WITH-NON-NUMBER-INDEX, and expanding NOT, OR, EQUAL, LESSP, and DIFFERENCE, to four new goals: Case 5.4. (IMPLIES (AND (EQUAL N 0) (EQUAL I 0) (NOT (LESSP 0 (LENGTH S)))) (EQUAL (PUTNTH V 0 (PUTSEG S 0 L)) (PUTSEG S 0 (PUTNTH V 0 L)))), which again simplifies, rewriting with PUTNTH-AFTER-PUTSEG-PROOF, and expanding the functions EQUAL, LESSP, and DIFFERENCE, to: T. Case 5.3. (IMPLIES (AND (EQUAL N 0) (NOT (NUMBERP I)) (NOT (LESSP 0 (LENGTH S)))) (EQUAL (PUTNTH V 0 (PUTSEG S 0 L)) (PUTSEG S 0 (PUTNTH V 0 L)))). But this again simplifies, applying PUTNTH-AFTER-PUTSEG-PROOF, and unfolding EQUAL, LESSP, and DIFFERENCE, to: T. Case 5.2. (IMPLIES (AND (NOT (NUMBERP N)) (EQUAL I 0) (NOT (LESSP 0 (LENGTH S)))) (EQUAL (PUTNTH V 0 (PUTSEG S 0 L)) (PUTSEG S 0 (PUTNTH V 0 L)))). However this again simplifies, applying the lemma PUTNTH-AFTER-PUTSEG-PROOF, and expanding EQUAL, LESSP, and DIFFERENCE, to: T. Case 5.1. (IMPLIES (AND (NOT (NUMBERP N)) (NOT (NUMBERP I)) (NOT (LESSP 0 (LENGTH S)))) (EQUAL (PUTNTH V 0 (PUTSEG S 0 L)) (PUTSEG S 0 (PUTNTH V 0 L)))), which again simplifies, applying PUTNTH-AFTER-PUTSEG-PROOF, and opening up EQUAL, LESSP, and DIFFERENCE, to: T. Case 4. (IMPLIES (AND (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (OR (EQUAL I 0) (NOT (NUMBERP I))) (NOT (LESSP I N)) (NOT (LESSP (DIFFERENCE I N) (LENGTH S)))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG S N (PUTNTH V I L)))). This simplifies, expanding NOT, OR, EQUAL, and LESSP, to: T. Case 3. (IMPLIES (AND (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (LESSP (SUB1 I) (SUB1 N)) (NOT (LESSP I N)) (NOT (LESSP (DIFFERENCE I N) (LENGTH S)))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG S N (PUTNTH V I L)))). This simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP N 1) (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (LESSP (SUB1 I) (SUB1 N)) (NOT (LESSP I N)) (NOT (LESSP (DIFFERENCE I N) (LENGTH S)))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG S N (PUTNTH V I L)))), which again simplifies, unfolding the functions SUB1, NUMBERP, EQUAL, LESSP, NOT, and OR, to: T. Case 2. (IMPLIES (AND (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (LESSP (DIFFERENCE (SUB1 I) (SUB1 N)) (LENGTH S)) (NOT (LESSP I N)) (NOT (LESSP (DIFFERENCE I N) (LENGTH S)))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG S N (PUTNTH V I L)))), which simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP N 1) (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (LESSP (DIFFERENCE (SUB1 I) (SUB1 N)) (LENGTH S)) (NOT (LESSP I N)) (NOT (LESSP (DIFFERENCE I N) (LENGTH S)))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG S N (PUTNTH V I L)))). However this again simplifies, unfolding the definitions of SUB1, NUMBERP, EQUAL, LESSP, NOT, and OR, to: T. Case 1. (IMPLIES (AND (NOT (OR (EQUAL N 0) (NOT (NUMBERP N)))) (NOT (OR (EQUAL I 0) (NOT (NUMBERP I)))) (EQUAL (PUTNTH V (SUB1 I) (PUTSEG S (SUB1 N) L)) (PUTSEG S (SUB1 N) (PUTNTH V (SUB1 I) L))) (NOT (LESSP I N)) (NOT (LESSP (DIFFERENCE I N) (LENGTH S)))) (EQUAL (PUTNTH V I (PUTSEG S N L)) (PUTSEG S N (PUTNTH V I L)))), which simplifies, using linear arithmetic, applying PUTNTH-AFTER-PUTSEG-PROOF, and opening up the functions NOT, OR, LESSP, and DIFFERENCE, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PUTNTH-AFTER-PUTSEG (DISABLE PUTNTH-AFTER-PUTSEG) [ 0.0 0.0 0.0 ] PUTNTH-AFTER-PUTSEG-OFF (PROVE-LEMMA GETSEG-OF-LENGTH-ZERO (REWRITE) (IMPLIES (ZEROP K) (EQUAL (GETSEG N K L) 'NIL)) ((ENABLE GETSEG) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, expanding the functions ZEROP, EQUAL, and GETSEG, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETSEG-OF-LENGTH-ZERO (DISABLE GETSEG-OF-LENGTH-ZERO) [ 0.0 0.0 0.0 ] GETSEG-OF-LENGTH-ZERO-OFF (PROVE-LEMMA GETSEG-ADD1-LENGTH (REWRITE) (EQUAL (GETSEG N (ADD1 K) L) (APPEND (GETSEG N K L) (CONS (GETNTH (PLUS N K) L) 'NIL))) ((ENABLE APPEND GETSEG PLUS-0 PLUS-RIGHT-ID2 GETNTH-WITH-NON-NUMBER-INDEX PLUS-ADD1) (INDUCT (GETSEG N K L)) (EXPAND (GETSEG N 1 L)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, NOT, OR, and AND, to the following two new formulas: Case 2. (IMPLIES (ZEROP K) (EQUAL (GETSEG N (ADD1 K) L) (APPEND (GETSEG N K L) (LIST (GETNTH (PLUS N K) L))))). This simplifies, applying the lemmas PLUS-0, CAR-CONS, CONS-EQUAL, SUB1-TYPE-RESTRICTION, and PLUS-RIGHT-ID2, and opening up the functions ZEROP, ADD1, GETSEG, EQUAL, NUMBERP, SUB1, LISTP, and APPEND, to the following two new conjectures: Case 2.2. (IMPLIES (AND (EQUAL K 0) (NOT (NUMBERP N))) (EQUAL (GETNTH N L) (GETNTH 0 L))). But this again simplifies, rewriting with GETNTH-WITH-NON-NUMBER-INDEX, to: T. Case 2.1. (IMPLIES (AND (NOT (NUMBERP K)) (NOT (NUMBERP N))) (EQUAL (GETNTH N L) (GETNTH 0 L))). This again simplifies, rewriting with GETNTH-WITH-NON-NUMBER-INDEX, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (GETSEG (ADD1 N) (ADD1 (SUB1 K)) L) (APPEND (GETSEG (ADD1 N) (SUB1 K) L) (LIST (GETNTH (PLUS (ADD1 N) (SUB1 K)) L))))) (EQUAL (GETSEG N (ADD1 K) L) (APPEND (GETSEG N K L) (LIST (GETNTH (PLUS N K) L))))). This simplifies, applying the lemmas ADD1-SUB1, SUB1-ADD1, SUB1-TYPE-RESTRICTION, GETNTH-WITH-NON-NUMBER-INDEX, CAR-CONS, CDR-CONS, and CONS-EQUAL, and opening up the functions PLUS, GETSEG, and APPEND, to the following two new conjectures: Case 1.2. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (EQUAL (GETSEG (ADD1 N) K L) (APPEND (GETSEG (ADD1 N) (SUB1 K) L) (LIST (GETNTH (ADD1 (PLUS 0 (SUB1 K))) L))))) (EQUAL (CONS (GETNTH 0 L) (GETSEG 1 K L)) (APPEND (GETSEG N K L) (LIST (GETNTH K L))))). This again simplifies, rewriting with SUB1-TYPE-RESTRICTION, ADD1-SUB1, and CAR-CONS, and opening up the definitions of EQUAL and PLUS, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (EQUAL (GETSEG 1 K L) (APPEND (GETSEG 1 (SUB1 K) L) (LIST (GETNTH K L))))) (EQUAL (CONS (GETNTH 0 L) (GETSEG 1 K L)) (APPEND (GETSEG N K L) (LIST (GETNTH K L))))), which again simplifies, applying SUB1-TYPE-RESTRICTION, GETNTH-WITH-NON-NUMBER-INDEX, CDR-CONS, and CAR-CONS, and expanding GETSEG and APPEND, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP N) (EQUAL (GETSEG (ADD1 N) K L) (APPEND (GETSEG (ADD1 N) (SUB1 K) L) (LIST (GETNTH (ADD1 (PLUS N (SUB1 K))) L))))) (EQUAL (GETSEG (ADD1 N) K L) (APPEND (GETSEG (ADD1 N) (SUB1 K) L) (LIST (GETNTH (PLUS N K) L))))). Appealing to the lemma SUB1-ELIM, we now replace K by (ADD1 X) to eliminate (SUB1 K). We employ the type restriction lemma noted when SUB1 was introduced to constrain the new variable. We must thus prove: (IMPLIES (AND (NUMBERP X) (NOT (EQUAL (ADD1 X) 0)) (NUMBERP N) (EQUAL (GETSEG (ADD1 N) (ADD1 X) L) (APPEND (GETSEG (ADD1 N) X L) (LIST (GETNTH (ADD1 (PLUS N X)) L))))) (EQUAL (GETSEG (ADD1 N) (ADD1 X) L) (APPEND (GETSEG (ADD1 N) X L) (LIST (GETNTH (PLUS N (ADD1 X)) L))))). This further simplifies, rewriting with SUB1-ADD1, CAR-CONS, and PLUS-ADD1, and opening up the definition of GETSEG, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETSEG-ADD1-LENGTH (DISABLE GETSEG-ADD1-LENGTH) [ 0.0 0.0 0.0 ] GETSEG-ADD1-LENGTH-OFF (PROVE-LEMMA GETSEG-WITH-NON-NUMBER-INDEX (REWRITE) (IMPLIES (NOT (NUMBERP N)) (EQUAL (GETSEG N K L) (GETSEG '0 K L))) ((ENABLE GETSEG GETNTH-WITH-NON-NUMBER-INDEX) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Give the conjecture the name *1. Let us appeal to the induction principle. 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 (ZEROP K) (p N K L)) (IMPLIES (AND (NOT (ZEROP K)) (p (ADD1 N) (SUB1 K) L)) (p N K L))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP can be used to show that the measure (COUNT K) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for N. The above induction scheme generates the following two new conjectures: Case 2. (IMPLIES (AND (ZEROP K) (NOT (NUMBERP N))) (EQUAL (GETSEG N K L) (GETSEG 0 K L))). This simplifies, opening up the functions ZEROP, EQUAL, and GETSEG, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP K)) (NOT (NUMBERP N))) (EQUAL (GETSEG N K L) (GETSEG 0 K L))). This simplifies, rewriting with GETNTH-WITH-NON-NUMBER-INDEX, CAR-CONS, CDR-CONS, and CONS-EQUAL, and opening up the definitions of ZEROP, GETSEG, and ADD1, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N))) (EQUAL (GETSEG (ADD1 N) (SUB1 K) L) (GETSEG 1 (SUB1 K) L))). However this further simplifies, applying SUB1-TYPE-RESTRICTION, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] GETSEG-WITH-NON-NUMBER-INDEX (DISABLE GETSEG-WITH-NON-NUMBER-INDEX) [ 0.0 0.0 0.0 ] GETSEG-WITH-NON-NUMBER-INDEX-OFF (PROVE-LEMMA GETSEG-ADD1-CONS (REWRITE) (EQUAL (GETSEG (ADD1 N) K (CONS A B)) (GETSEG N K B)) ((ENABLE GETSEG GETNTH) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Name the conjecture *1. Let us appeal to the induction principle. 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 (ZEROP K) (p N K A B)) (IMPLIES (AND (NOT (ZEROP K)) (p (ADD1 N) (SUB1 K) A B)) (p N K A B))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP can be used to show that the measure (COUNT K) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for N. The above induction scheme leads to the following two new goals: Case 2. (IMPLIES (ZEROP K) (EQUAL (GETSEG (ADD1 N) K (CONS A B)) (GETSEG N K B))). This simplifies, expanding the definitions of ZEROP, EQUAL, and GETSEG, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP K)) (EQUAL (GETSEG (ADD1 (ADD1 N)) (SUB1 K) (CONS A B)) (GETSEG (ADD1 N) (SUB1 K) B))) (EQUAL (GETSEG (ADD1 N) K (CONS A B)) (GETSEG N K B))). This simplifies, rewriting with CDR-CONS, SUB1-ADD1, CAR-CONS, and CONS-EQUAL, and unfolding the functions ZEROP, GETSEG, and GETNTH, to the conjecture: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (GETSEG (ADD1 (ADD1 N)) (SUB1 K) (CONS A B)) (GETSEG (ADD1 N) (SUB1 K) B)) (NOT (NUMBERP N))) (EQUAL (GETNTH 0 B) (GETNTH N B))). But this again simplifies, expanding the functions EQUAL and GETNTH, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] GETSEG-ADD1-CONS (DISABLE GETSEG-ADD1-CONS) [ 0.0 0.0 0.0 ] GETSEG-ADD1-CONS-OFF (PROVE-LEMMA GETSEG-LENGTH-1 NIL (EQUAL (GETSEG N '1 L) (CONS (GETNTH N L) 'NIL)) ((ENABLE GETSEG) (EXPAND (GETSEG N 1 L)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, opening up the functions GETSEG, EQUAL, NUMBERP, and SUB1, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETSEG-LENGTH-1 (PROVE-LEMMA GETSEG-LENGTH-1-RULE (REWRITE) (IMPLIES (EQUAL K '1) (EQUAL (GETSEG N K L) (CONS (GETNTH N L) 'NIL))) ((USE (GETSEG-LENGTH-1 (N N) (K '1) (L L))) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, clearly, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETSEG-LENGTH-1-RULE (DISABLE GETSEG-LENGTH-1-RULE) [ 0.0 0.0 0.0 ] GETSEG-LENGTH-1-RULE-OFF (PROVE-LEMMA GETSEG-ADD1-LENGTH2 (REWRITE) (IMPLIES (AND (NUMBERP N) (IF (LESSP (LENGTH L) (ADD1 N)) '*1*FALSE '*1*TRUE)) (EQUAL (GETSEG N (ADD1 K) L) (CONS (GETNTH N L) (GETSEG (ADD1 N) K L)))) ((ENABLE GETNTH GETSEG LENGTH NON-ZERO-LENGTH-IMPLIES-LISTP) (INDUCT (NUMBER-AND-LIST-INDUCTION N L)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to three new formulas: Case 3. (IMPLIES (AND (ZEROP N) (NUMBERP N) (NOT (LESSP (LENGTH L) (ADD1 N)))) (EQUAL (GETSEG N (ADD1 K) L) (CONS (GETNTH N L) (GETSEG (ADD1 N) K L)))), which simplifies, using linear arithmetic, appealing to the lemmas SUB1-ADD1, NON-ZERO-LENGTH-IMPLIES-LISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and opening up the functions ZEROP, NUMBERP, ADD1, GETNTH, EQUAL, and GETSEG, to the formula: (IMPLIES (AND (EQUAL N 0) (NOT (LESSP (LENGTH L) 1)) (NOT (NUMBERP K))) (EQUAL (GETSEG 1 0 L) (GETSEG 1 K L))). But this again simplifies, expanding the functions EQUAL and GETSEG, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (LISTP L) (IMPLIES (AND (NUMBERP (SUB1 N)) (IF (LESSP (LENGTH (CDR L)) (ADD1 (SUB1 N))) F T)) (EQUAL (GETSEG (SUB1 N) (ADD1 K) (CDR L)) (CONS (GETNTH (SUB1 N) (CDR L)) (GETSEG (ADD1 (SUB1 N)) K (CDR L))))) (NOT (LESSP (LENGTH L) (ADD1 N)))) (EQUAL (GETSEG N (ADD1 K) L) (CONS (GETNTH N L) (GETSEG (ADD1 N) K L)))), which simplifies, applying ADD1-SUB1, SUB1-ADD1, CAR-CONS, CDR-CONS, and CONS-EQUAL, and expanding the functions AND, GETSEG, IMPLIES, LENGTH, LESSP, and GETNTH, to the new conjecture: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (LISTP L) (EQUAL (GETSEG N 0 (CDR L)) (GETSEG N K (CDR L))) (NOT (LESSP (LENGTH (CDR L)) N)) (NOT (NUMBERP K))) (EQUAL (GETSEG (ADD1 N) 0 L) (GETSEG (ADD1 N) K L))), which again simplifies, unfolding the functions EQUAL and GETSEG, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (LISTP L)) (NOT (LESSP (LENGTH L) (ADD1 N)))) (EQUAL (GETSEG N (ADD1 K) L) (CONS (GETNTH N L) (GETSEG (ADD1 N) K L)))), which simplifies, using linear arithmetic and rewriting with NON-ZERO-LENGTH-IMPLIES-LISTP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETSEG-ADD1-LENGTH2 (DISABLE GETSEG-ADD1-LENGTH2) [ 0.0 0.0 0.0 ] GETSEG-ADD1-LENGTH2-OFF (PROVE-LEMMA GETSEG-APPEND-RIGHT (REWRITE) (IMPLIES (IF (LESSP N (LENGTH A)) '*1*FALSE '*1*TRUE) (EQUAL (GETSEG N K (APPEND A B)) (GETSEG (DIFFERENCE N (LENGTH A)) K B))) ((ENABLE GETSEG LENGTH GETNTH-APPEND-RIGHT DIFFERENCE-SUB1-ARG2) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Call the conjecture *1. Perhaps we can prove it by induction. Seven inductions are suggested by terms in the conjecture. They merge into three likely candidate inductions, two 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 K) (p N K A B)) (IMPLIES (AND (NOT (ZEROP K)) (p (ADD1 N) (SUB1 K) A B)) (p N K A B))). 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. Note, however, the inductive instance chosen for N. The above induction scheme generates the following three new goals: Case 3. (IMPLIES (AND (ZEROP K) (NOT (LESSP N (LENGTH A)))) (EQUAL (GETSEG N K (APPEND A B)) (GETSEG (DIFFERENCE N (LENGTH A)) K B))). This simplifies, unfolding the functions ZEROP, EQUAL, and GETSEG, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP K)) (LESSP (ADD1 N) (LENGTH A)) (NOT (LESSP N (LENGTH A)))) (EQUAL (GETSEG N K (APPEND A B)) (GETSEG (DIFFERENCE N (LENGTH A)) K B))). This simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP K)) (EQUAL (GETSEG (ADD1 N) (SUB1 K) (APPEND A B)) (GETSEG (DIFFERENCE (ADD1 N) (LENGTH A)) (SUB1 K) B)) (NOT (LESSP N (LENGTH A)))) (EQUAL (GETSEG N K (APPEND A B)) (GETSEG (DIFFERENCE N (LENGTH A)) K B))). This simplifies, rewriting with GETNTH-APPEND-RIGHT, CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding the functions ZEROP and GETSEG, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (GETSEG (ADD1 N) (SUB1 K) (APPEND A B)) (GETSEG (DIFFERENCE (ADD1 N) (LENGTH A)) (SUB1 K) B)) (NOT (LESSP N (LENGTH A)))) (EQUAL (GETSEG (ADD1 N) (SUB1 K) (APPEND A B)) (GETSEG (ADD1 (DIFFERENCE N (LENGTH A))) (SUB1 K) B))). This further simplifies, applying the lemma SUB1-ADD1, and expanding DIFFERENCE, LESSP, and EQUAL, to three new formulas: Case 1.3. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (EQUAL (LENGTH A) 0)) (NUMBERP N) (EQUAL (GETSEG (ADD1 N) (SUB1 K) (APPEND A B)) (GETSEG (DIFFERENCE N (SUB1 (LENGTH A))) (SUB1 K) B)) (NOT (LESSP N (LENGTH A)))) (EQUAL (GETSEG (ADD1 N) (SUB1 K) (APPEND A B)) (GETSEG (ADD1 (DIFFERENCE N (LENGTH A))) (SUB1 K) B))), which again simplifies, applying DIFFERENCE-SUB1-ARG2, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (LENGTH A) 0) (EQUAL (GETSEG (ADD1 N) (SUB1 K) (APPEND A B)) (GETSEG (ADD1 N) (SUB1 K) B)) (NOT (NUMBERP N))) (EQUAL (GETSEG (ADD1 N) (SUB1 K) B) (GETSEG 1 (SUB1 K) B))). However this again simplifies, applying SUB1-TYPE-RESTRICTION, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (LENGTH A) 0) (EQUAL (GETSEG (ADD1 N) (SUB1 K) (APPEND A B)) (GETSEG (ADD1 N) (SUB1 K) B)) (EQUAL N 0)) (EQUAL (GETSEG (ADD1 N) (SUB1 K) B) (GETSEG 1 (SUB1 K) B))). This again simplifies, trivially, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] GETSEG-APPEND-RIGHT (DISABLE GETSEG-APPEND-RIGHT) [ 0.0 0.0 0.0 ] GETSEG-APPEND-RIGHT-OFF (PROVE-LEMMA GETSEG-ACROSS-APPEND (REWRITE) (IMPLIES (AND (NUMBERP N) (AND (IF (LESSP (LENGTH A) N) '*1*FALSE '*1*TRUE) (IF (LESSP (PLUS N K) (LENGTH A)) '*1*FALSE '*1*TRUE))) (EQUAL (GETSEG N K (APPEND A B)) (APPEND (GETSEG N (DIFFERENCE (LENGTH A) N) A) (GETSEG '0 (DIFFERENCE K (DIFFERENCE (LENGTH A) N)) B)))) ((ENABLE GETSEG APPEND GETNTH LENGTH APPEND-NIL-ON-RIGHT APPEND-NON-LIST-LEFT-COROLLARY DIFFERENCE-X-X DIFFERENCE-SUB1-ARG2 GETNTH-APPEND-FOR-LENGTH-LEFT GETNTH-APPEND-LEFT GETSEG-ADD1-CONS GETSEG-APPEND-RIGHT GETSEG-OF-LENGTH-ZERO PLISTP-GETSEG PLUS-0 PLUS-ADD1 PLUS-RIGHT-ID2 REWRITE-ZERO-DIFFERENCE-AS-EQUALITY) (INDUCT (NUMBER-AND-LIST-INDUCTION K A)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to three new goals: Case 3. (IMPLIES (AND (ZEROP K) (NUMBERP N) (NOT (LESSP (LENGTH A) N)) (NOT (LESSP (PLUS N K) (LENGTH A)))) (EQUAL (GETSEG N K (APPEND A B)) (APPEND (GETSEG N (DIFFERENCE (LENGTH A) N) A) (GETSEG 0 (DIFFERENCE K (DIFFERENCE (LENGTH A) N)) B)))), which simplifies, applying PLUS-0, GETSEG-OF-LENGTH-ZERO, GETSEG-APPEND-RIGHT, PLISTP-GETSEG, APPEND-NIL-ON-RIGHT, and PLUS-RIGHT-ID2, and opening up ZEROP, EQUAL, and DIFFERENCE, to the following two new formulas: Case 3.2. (IMPLIES (AND (EQUAL K 0) (NUMBERP N) (NOT (LESSP (LENGTH A) N)) (NOT (LESSP N (LENGTH A)))) (EQUAL NIL (GETSEG N (DIFFERENCE (LENGTH A) N) A))). However this again simplifies, using linear arithmetic, to: (IMPLIES (AND (NUMBERP (LENGTH A)) (NOT (LESSP (LENGTH A) (LENGTH A))) (NOT (LESSP (LENGTH A) (LENGTH A)))) (EQUAL NIL (GETSEG (LENGTH A) (DIFFERENCE (LENGTH A) (LENGTH A)) A))). But this again simplifies, rewriting with the lemmas DIFFERENCE-X-X and GETSEG-OF-LENGTH-ZERO, and unfolding ZEROP and EQUAL, to: T. Case 3.1. (IMPLIES (AND (NOT (NUMBERP K)) (NUMBERP N) (NOT (LESSP (LENGTH A) N)) (NOT (LESSP N (LENGTH A)))) (EQUAL NIL (GETSEG N (DIFFERENCE (LENGTH A) N) A))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (NOT (NUMBERP K)) (NUMBERP (LENGTH A)) (NOT (LESSP (LENGTH A) (LENGTH A))) (NOT (LESSP (LENGTH A) (LENGTH A)))) (EQUAL NIL (GETSEG (LENGTH A) (DIFFERENCE (LENGTH A) (LENGTH A)) A))). This again simplifies, rewriting with the lemmas DIFFERENCE-X-X and GETSEG-OF-LENGTH-ZERO, and unfolding ZEROP and EQUAL, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (IMPLIES (AND (NUMBERP N) (IF (LESSP (LENGTH (CDR A)) N) F T) (IF (LESSP (PLUS N (SUB1 K)) (LENGTH (CDR A))) F T)) (EQUAL (GETSEG N (SUB1 K) (APPEND (CDR A) B)) (APPEND (GETSEG N (DIFFERENCE (LENGTH (CDR A)) N) (CDR A)) (GETSEG 0 (DIFFERENCE (SUB1 K) (DIFFERENCE (LENGTH (CDR A)) N)) B)))) (NUMBERP N) (NOT (LESSP (LENGTH A) N)) (NOT (LESSP (PLUS N K) (LENGTH A)))) (EQUAL (GETSEG N K (APPEND A B)) (APPEND (GETSEG N (DIFFERENCE (LENGTH A) N) A) (GETSEG 0 (DIFFERENCE K (DIFFERENCE (LENGTH A) N)) B)))), which simplifies, rewriting with the lemmas SUB1-ADD1, CDR-CONS, and CAR-CONS, and opening up AND, IMPLIES, LENGTH, LESSP, EQUAL, PLUS, APPEND, DIFFERENCE, ADD1, GETNTH, and GETSEG, to nine new conjectures: Case 2.9. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (LESSP (LENGTH (CDR A)) N) (NUMBERP N) (EQUAL N 0) (NOT (LESSP (SUB1 K) (LENGTH (CDR A))))) (EQUAL (GETSEG 0 K (CONS (CAR A) (APPEND (CDR A) B))) (CONS (CAR A) (APPEND (GETSEG 1 (LENGTH (CDR A)) A) (GETSEG 0 (DIFFERENCE (SUB1 K) (LENGTH (CDR A))) B))))), which again simplifies, using linear arithmetic, to: T. Case 2.8. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (LESSP (LENGTH (CDR A)) N) (NUMBERP N) (NOT (LESSP (LENGTH (CDR A)) (SUB1 N))) (NOT (EQUAL (PLUS N K) 0)) (NOT (LESSP (SUB1 (PLUS N K)) (LENGTH (CDR A)))) (NOT (EQUAL N 0))) (EQUAL (GETSEG N K (CONS (CAR A) (APPEND (CDR A) B))) (APPEND (GETSEG N (DIFFERENCE (LENGTH (CDR A)) (SUB1 N)) A) (GETSEG 0 (DIFFERENCE K (DIFFERENCE (LENGTH (CDR A)) (SUB1 N))) B)))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (LESSP (LENGTH (CDR A)) (PLUS 1 (LENGTH (CDR A)))) (NUMBERP (PLUS 1 (LENGTH (CDR A)))) (NOT (LESSP (LENGTH (CDR A)) (SUB1 (PLUS 1 (LENGTH (CDR A)))))) (NOT (EQUAL (PLUS (PLUS 1 (LENGTH (CDR A))) K) 0)) (NOT (LESSP (SUB1 (PLUS (PLUS 1 (LENGTH (CDR A))) K)) (LENGTH (CDR A)))) (NOT (EQUAL (PLUS 1 (LENGTH (CDR A))) 0))) (EQUAL (GETSEG (PLUS 1 (LENGTH (CDR A))) K (CONS (CAR A) (APPEND (CDR A) B))) (APPEND (GETSEG (PLUS 1 (LENGTH (CDR A))) (DIFFERENCE (LENGTH (CDR A)) (SUB1 (PLUS 1 (LENGTH (CDR A))))) A) (GETSEG 0 (DIFFERENCE K (DIFFERENCE (LENGTH (CDR A)) (SUB1 (PLUS 1 (LENGTH (CDR A)))))) B)))). But this again simplifies, rewriting with the lemmas SUB1-ADD1, APPEND-NON-LIST-LEFT-COROLLARY, GETSEG-ADD1-CONS, GETSEG-OF-LENGTH-ZERO, DIFFERENCE-X-X, and GETSEG-APPEND-RIGHT, and opening up the functions SUB1, NUMBERP, EQUAL, PLUS, LESSP, DIFFERENCE, ZEROP, LENGTH, and LISTP, to: T. Case 2.7. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (LESSP (LENGTH (CDR A)) N) (NUMBERP N) (NOT (LESSP (LENGTH (CDR A)) (SUB1 N))) (NOT (EQUAL (PLUS N K) 0)) (NOT (LESSP (SUB1 (PLUS N K)) (LENGTH (CDR A)))) (EQUAL N 0)) (EQUAL (GETSEG N K (CONS (CAR A) (APPEND (CDR A) B))) (APPEND (GETSEG N (ADD1 (LENGTH (CDR A))) A) (GETSEG 0 (DIFFERENCE K (ADD1 (LENGTH (CDR A)))) B)))), which again simplifies, using linear arithmetic, to: T. Case 2.6. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (LESSP (PLUS N (SUB1 K)) (LENGTH (CDR A))) (NUMBERP N) (EQUAL N 0) (NOT (LESSP (SUB1 K) (LENGTH (CDR A))))) (EQUAL (GETSEG 0 K (CONS (CAR A) (APPEND (CDR A) B))) (CONS (CAR A) (APPEND (GETSEG 1 (LENGTH (CDR A)) A) (GETSEG 0 (DIFFERENCE (SUB1 K) (LENGTH (CDR A))) B))))), which again simplifies, using linear arithmetic, to: T. Case 2.5. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (LESSP (PLUS N (SUB1 K)) (LENGTH (CDR A))) (NUMBERP N) (NOT (LESSP (LENGTH (CDR A)) (SUB1 N))) (NOT (EQUAL (PLUS N K) 0)) (NOT (LESSP (SUB1 (PLUS N K)) (LENGTH (CDR A)))) (NOT (EQUAL N 0))) (EQUAL (GETSEG N K (CONS (CAR A) (APPEND (CDR A) B))) (APPEND (GETSEG N (DIFFERENCE (LENGTH (CDR A)) (SUB1 N)) A) (GETSEG 0 (DIFFERENCE K (DIFFERENCE (LENGTH (CDR A)) (SUB1 N))) B)))), which again simplifies, using linear arithmetic, to: T. Case 2.4. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (LESSP (PLUS N (SUB1 K)) (LENGTH (CDR A))) (NUMBERP N) (NOT (LESSP (LENGTH (CDR A)) (SUB1 N))) (NOT (EQUAL (PLUS N K) 0)) (NOT (LESSP (SUB1 (PLUS N K)) (LENGTH (CDR A)))) (EQUAL N 0)) (EQUAL (GETSEG N K (CONS (CAR A) (APPEND (CDR A) B))) (APPEND (GETSEG N (ADD1 (LENGTH (CDR A))) A) (GETSEG 0 (DIFFERENCE K (ADD1 (LENGTH (CDR A)))) B)))), which again simplifies, using linear arithmetic, to: T. Case 2.3. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (EQUAL (GETSEG N (SUB1 K) (APPEND (CDR A) B)) (APPEND (GETSEG N (DIFFERENCE (LENGTH (CDR A)) N) (CDR A)) (GETSEG 0 (DIFFERENCE (SUB1 K) (DIFFERENCE (LENGTH (CDR A)) N)) B))) (NUMBERP N) (EQUAL N 0) (NOT (LESSP (SUB1 K) (LENGTH (CDR A))))) (EQUAL (GETSEG 0 K (CONS (CAR A) (APPEND (CDR A) B))) (CONS (CAR A) (APPEND (GETSEG 1 (LENGTH (CDR A)) A) (GETSEG 0 (DIFFERENCE (SUB1 K) (LENGTH (CDR A))) B))))), which again simplifies, rewriting with APPEND-NON-LIST-LEFT-COROLLARY and GETSEG-OF-LENGTH-ZERO, and unfolding EQUAL, DIFFERENCE, NUMBERP, LESSP, ZEROP, LENGTH, and LISTP, to the following three new goals: Case 2.3.3. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (NOT (EQUAL (LENGTH (CDR A)) 0)) (EQUAL (GETSEG 0 (SUB1 K) (APPEND (CDR A) B)) (APPEND (GETSEG 0 (LENGTH (CDR A)) (CDR A)) (GETSEG 0 (DIFFERENCE (SUB1 K) (LENGTH (CDR A))) B))) (NOT (LESSP (SUB1 K) (LENGTH (CDR A))))) (EQUAL (GETSEG 0 K (CONS (CAR A) (APPEND (CDR A) B))) (CONS (CAR A) (APPEND (GETSEG 1 (LENGTH (CDR A)) A) (GETSEG 0 (DIFFERENCE (SUB1 K) (LENGTH (CDR A))) B))))). Appealing to the lemma CAR-CDR-ELIM, we now replace A by (CONS Z X) to eliminate (CDR A) and (CAR A). The result is the goal: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (EQUAL (LENGTH X) 0)) (EQUAL (GETSEG 0 (SUB1 K) (APPEND X B)) (APPEND (GETSEG 0 (LENGTH X) X) (GETSEG 0 (DIFFERENCE (SUB1 K) (LENGTH X)) B))) (NOT (LESSP (SUB1 K) (LENGTH X)))) (EQUAL (GETSEG 0 K (CONS Z (APPEND X B))) (CONS Z (APPEND (GETSEG 1 (LENGTH X) (CONS Z X)) (GETSEG 0 (DIFFERENCE (SUB1 K) (LENGTH X)) B))))). But this further simplifies, applying GETSEG-ADD1-CONS, to the new goal: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (EQUAL (LENGTH X) 0)) (EQUAL (GETSEG 0 (SUB1 K) (APPEND X B)) (APPEND (GETSEG 0 (LENGTH X) X) (GETSEG 0 (DIFFERENCE (SUB1 K) (LENGTH X)) B))) (NOT (LESSP (SUB1 K) (LENGTH X)))) (EQUAL (GETSEG 0 K (CONS Z (APPEND X B))) (CONS Z (GETSEG 0 (SUB1 K) (APPEND X B))))). Applying the lemma SUB1-ELIM, replace K by (ADD1 V) to eliminate (SUB1 K). We employ the type restriction lemma noted when SUB1 was introduced to restrict the new variable. This produces the new conjecture: (IMPLIES (AND (NUMBERP V) (NOT (EQUAL (ADD1 V) 0)) (NOT (EQUAL (LENGTH X) 0)) (EQUAL (GETSEG 0 V (APPEND X B)) (APPEND (GETSEG 0 (LENGTH X) X) (GETSEG 0 (DIFFERENCE V (LENGTH X)) B))) (NOT (LESSP V (LENGTH X)))) (EQUAL (GETSEG 0 (ADD1 V) (CONS Z (APPEND X B))) (CONS Z (GETSEG 0 V (APPEND X B))))), which finally simplifies, rewriting with SUB1-ADD1, CAR-CONS, and GETSEG-ADD1-CONS, and unfolding ADD1, GETNTH, EQUAL, and GETSEG, to: T. Case 2.3.2. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (EQUAL (LENGTH (CDR A)) 0) (EQUAL (GETSEG 0 (SUB1 K) (APPEND (CDR A) B)) (APPEND (GETSEG 0 0 (CDR A)) (GETSEG 0 (DIFFERENCE (SUB1 K) 0) B))) (NOT (EQUAL (SUB1 K) 0))) (EQUAL (GETSEG 0 K (CONS (CAR A) B)) (CONS (CAR A) (GETSEG 0 (SUB1 K) B)))). However this again simplifies, applying APPEND-NON-LIST-LEFT-COROLLARY and GETSEG-OF-LENGTH-ZERO, and expanding the definitions of ZEROP, EQUAL, DIFFERENCE, LENGTH, and LISTP, to the new goal: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (EQUAL (LENGTH (CDR A)) 0) (NOT (EQUAL (SUB1 K) 0))) (EQUAL (GETSEG 0 K (CONS (CAR A) B)) (CONS (CAR A) (GETSEG 0 (SUB1 K) B)))). Applying the lemma CAR-CDR-ELIM, replace A by (CONS Z X) to eliminate (CDR A) and (CAR A). This produces the new goal: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (LENGTH X) 0) (NOT (EQUAL (SUB1 K) 0))) (EQUAL (GETSEG 0 K (CONS Z B)) (CONS Z (GETSEG 0 (SUB1 K) B)))). Applying the lemma SUB1-ELIM, replace K by (ADD1 V) to eliminate (SUB1 K). We rely upon the type restriction lemma noted when SUB1 was introduced to restrict the new variable. We thus obtain: (IMPLIES (AND (NUMBERP V) (NOT (EQUAL (ADD1 V) 0)) (EQUAL (LENGTH X) 0) (NOT (EQUAL V 0))) (EQUAL (GETSEG 0 (ADD1 V) (CONS Z B)) (CONS Z (GETSEG 0 V B)))), which finally simplifies, applying the lemmas SUB1-ADD1, CAR-CONS, and GETSEG-ADD1-CONS, and opening up the definitions of ADD1, GETNTH, EQUAL, and GETSEG, to: T. Case 2.3.1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (EQUAL (LENGTH (CDR A)) 0) (EQUAL (GETSEG 0 (SUB1 K) (APPEND (CDR A) B)) (APPEND (GETSEG 0 0 (CDR A)) (GETSEG 0 (DIFFERENCE (SUB1 K) 0) B))) (EQUAL (SUB1 K) 0)) (EQUAL (GETSEG 0 K (CONS (CAR A) B)) (CONS (CAR A) (GETSEG 0 0 B)))), which again simplifies, rewriting with APPEND-NON-LIST-LEFT-COROLLARY, GETSEG-OF-LENGTH-ZERO, and CAR-CONS, and opening up the functions ZEROP, DIFFERENCE, APPEND, EQUAL, ADD1, GETNTH, and GETSEG, to: T. Case 2.2. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (EQUAL (GETSEG N (SUB1 K) (APPEND (CDR A) B)) (APPEND (GETSEG N (DIFFERENCE (LENGTH (CDR A)) N) (CDR A)) (GETSEG 0 (DIFFERENCE (SUB1 K) (DIFFERENCE (LENGTH (CDR A)) N)) B))) (NUMBERP N) (NOT (LESSP (LENGTH (CDR A)) (SUB1 N))) (NOT (EQUAL (PLUS N K) 0)) (NOT (LESSP (SUB1 (PLUS N K)) (LENGTH (CDR A)))) (NOT (EQUAL N 0))) (EQUAL (GETSEG N K (CONS (CAR A) (APPEND (CDR A) B))) (APPEND (GETSEG N (DIFFERENCE (LENGTH (CDR A)) (SUB1 N)) A) (GETSEG 0 (DIFFERENCE K (DIFFERENCE (LENGTH (CDR A)) (SUB1 N))) B)))). Appealing to the lemma SUB1-ELIM, we now replace K by (ADD1 X) to eliminate (SUB1 K). We employ the type restriction lemma noted when SUB1 was introduced to constrain the new variable. The result is: (IMPLIES (AND (NUMBERP X) (NOT (EQUAL (ADD1 X) 0)) (LISTP A) (EQUAL (GETSEG N X (APPEND (CDR A) B)) (APPEND (GETSEG N (DIFFERENCE (LENGTH (CDR A)) N) (CDR A)) (GETSEG 0 (DIFFERENCE X (DIFFERENCE (LENGTH (CDR A)) N)) B))) (NUMBERP N) (NOT (LESSP (LENGTH (CDR A)) (SUB1 N))) (NOT (EQUAL (PLUS N (ADD1 X)) 0)) (NOT (LESSP (SUB1 (PLUS N (ADD1 X))) (LENGTH (CDR A)))) (NOT (EQUAL N 0))) (EQUAL (GETSEG N (ADD1 X) (CONS (CAR A) (APPEND (CDR A) B))) (APPEND (GETSEG N (DIFFERENCE (LENGTH (CDR A)) (SUB1 N)) A) (GETSEG 0 (DIFFERENCE (ADD1 X) (DIFFERENCE (LENGTH (CDR A)) (SUB1 N))) B)))). However this further simplifies, appealing to the lemmas PLUS-ADD1, SUB1-ADD1, CDR-CONS, GETSEG-ADD1-CONS, and REWRITE-ZERO-DIFFERENCE-AS-EQUALITY, and expanding the definitions of GETNTH, GETSEG, and DIFFERENCE, to two new goals: Case 2.2.2. (IMPLIES (AND (NUMBERP X) (LISTP A) (EQUAL (GETSEG N X (APPEND (CDR A) B)) (APPEND (GETSEG N (DIFFERENCE (LENGTH (CDR A)) N) (CDR A)) (GETSEG 0 (DIFFERENCE X (DIFFERENCE (LENGTH (CDR A)) N)) B))) (NUMBERP N) (NOT (LESSP (LENGTH (CDR A)) (SUB1 N))) (NOT (LESSP (PLUS N X) (LENGTH (CDR A)))) (NOT (EQUAL N 0)) (NOT (EQUAL (LENGTH (CDR A)) (SUB1 N)))) (EQUAL (CONS (GETNTH (SUB1 N) (APPEND (CDR A) B)) (GETSEG N X (APPEND (CDR A) B))) (APPEND (GETSEG N (DIFFERENCE (LENGTH (CDR A)) (SUB1 N)) A) (GETSEG 0 (DIFFERENCE X (SUB1 (DIFFERENCE (LENGTH (CDR A)) (SUB1 N)))) B)))), which again simplifies, using linear arithmetic, appealing to the lemmas GETNTH-APPEND-LEFT, DIFFERENCE-SUB1-ARG2, SUB1-ADD1, CDR-CONS, CAR-CONS, and CONS-EQUAL, and unfolding the definitions of GETSEG and APPEND, to two new conjectures: Case 2.2.2.2. (IMPLIES (AND (NUMBERP X) (LISTP A) (EQUAL (GETSEG N X (APPEND (CDR A) B)) (APPEND (GETSEG N (DIFFERENCE (LENGTH (CDR A)) N) (CDR A)) (GETSEG 0 (DIFFERENCE X (DIFFERENCE (LENGTH (CDR A)) N)) B))) (NUMBERP N) (NOT (LESSP (LENGTH (CDR A)) (SUB1 N))) (NOT (LESSP (PLUS N X) (LENGTH (CDR A)))) (NOT (EQUAL N 0)) (NOT (EQUAL (LENGTH (CDR A)) (SUB1 N)))) (EQUAL (GETNTH (SUB1 N) (CDR A)) (GETNTH N A))), which again simplifies, opening up the function GETNTH, to: T. Case 2.2.2.1. (IMPLIES (AND (NUMBERP X) (LISTP A) (EQUAL (GETSEG N X (APPEND (CDR A) B)) (APPEND (GETSEG N (DIFFERENCE (LENGTH (CDR A)) N) (CDR A)) (GETSEG 0 (DIFFERENCE X (DIFFERENCE (LENGTH (CDR A)) N)) B))) (NUMBERP N) (NOT (LESSP (LENGTH (CDR A)) (SUB1 N))) (NOT (LESSP (PLUS N X) (LENGTH (CDR A)))) (NOT (EQUAL N 0)) (NOT (EQUAL (LENGTH (CDR A)) (SUB1 N)))) (EQUAL (GETSEG N X (APPEND (CDR A) B)) (APPEND (GETSEG (ADD1 N) (DIFFERENCE (LENGTH (CDR A)) N) A) (GETSEG 0 (DIFFERENCE X (DIFFERENCE (LENGTH (CDR A)) N)) B)))). Applying the lemma CAR-CDR-ELIM, replace A by (CONS V Z) to eliminate (CDR A) and (CAR A). This produces: (IMPLIES (AND (NUMBERP X) (EQUAL (GETSEG N X (APPEND Z B)) (APPEND (GETSEG N (DIFFERENCE (LENGTH Z) N) Z) (GETSEG 0 (DIFFERENCE X (DIFFERENCE (LENGTH Z) N)) B))) (NUMBERP N) (NOT (LESSP (LENGTH Z) (SUB1 N))) (NOT (LESSP (PLUS N X) (LENGTH Z))) (NOT (EQUAL N 0)) (NOT (EQUAL (LENGTH Z) (SUB1 N)))) (EQUAL (GETSEG N X (APPEND Z B)) (APPEND (GETSEG (ADD1 N) (DIFFERENCE (LENGTH Z) N) (CONS V Z)) (GETSEG 0 (DIFFERENCE X (DIFFERENCE (LENGTH Z) N)) B)))), which finally simplifies, rewriting with the lemma GETSEG-ADD1-CONS, to: T. Case 2.2.1. (IMPLIES (AND (NUMBERP X) (LISTP A) (EQUAL (GETSEG N X (APPEND (CDR A) B)) (APPEND (GETSEG N (DIFFERENCE (LENGTH (CDR A)) N) (CDR A)) (GETSEG 0 (DIFFERENCE X (DIFFERENCE (LENGTH (CDR A)) N)) B))) (NUMBERP N) (NOT (LESSP (LENGTH (CDR A)) (SUB1 N))) (NOT (LESSP (PLUS N X) (LENGTH (CDR A)))) (NOT (EQUAL N 0)) (EQUAL (LENGTH (CDR A)) (SUB1 N))) (EQUAL (CONS (GETNTH (SUB1 N) (APPEND (CDR A) B)) (GETSEG N X (APPEND (CDR A) B))) (APPEND (GETSEG N (DIFFERENCE (LENGTH (CDR A)) (SUB1 N)) A) (GETSEG 0 (ADD1 X) B)))), which again simplifies, using linear arithmetic, applying the lemmas DIFFERENCE-X-X, DIFFERENCE-SUB1-ARG2, GETSEG-APPEND-RIGHT, GETSEG-OF-LENGTH-ZERO, SUB1-ADD1, APPEND-NON-LIST-LEFT-COROLLARY, CAR-CONS, and CONS-EQUAL, and expanding the definitions of ADD1, ZEROP, GETNTH, EQUAL, GETSEG, LENGTH, and LISTP, to two new conjectures: Case 2.2.1.2. (IMPLIES (AND (NUMBERP X) (LISTP A) (EQUAL (GETSEG 1 X B) (APPEND (GETSEG N (DIFFERENCE (SUB1 N) N) (CDR A)) (GETSEG 0 (DIFFERENCE X (DIFFERENCE (SUB1 N) N)) B))) (NUMBERP N) (NOT (LESSP (SUB1 N) (SUB1 N))) (NOT (LESSP (PLUS N X) (SUB1 N))) (NOT (EQUAL N 0)) (EQUAL (LENGTH (CDR A)) (SUB1 N)) (NOT (LISTP B))) (EQUAL (GETNTH (SUB1 N) (APPEND (CDR A) B)) 0)). Applying the lemma SUB1-ELIM, replace N by (ADD1 Z) to eliminate (SUB1 N). We rely upon the type restriction lemma noted when SUB1 was introduced to restrict the new variable. We thus obtain the new formula: (IMPLIES (AND (NUMBERP Z) (NUMBERP X) (LISTP A) (EQUAL (GETSEG 1 X B) (APPEND (GETSEG (ADD1 Z) (DIFFERENCE Z (ADD1 Z)) (CDR A)) (GETSEG 0 (DIFFERENCE X (DIFFERENCE Z (ADD1 Z))) B))) (NOT (LESSP Z Z)) (NOT (LESSP (PLUS (ADD1 Z) X) Z)) (NOT (EQUAL (ADD1 Z) 0)) (EQUAL (LENGTH (CDR A)) Z) (NOT (LISTP B))) (EQUAL (GETNTH Z (APPEND (CDR A) B)) 0)), which finally simplifies, applying the lemmas SUB1-ADD1, GETNTH-APPEND-FOR-LENGTH-LEFT, and APPEND-NON-LIST-LEFT-COROLLARY, and opening up DIFFERENCE, PLUS, LESSP, EQUAL, ADD1, and GETNTH, to: T. Case 2.2.1.1. (IMPLIES (AND (NUMBERP X) (LISTP A) (EQUAL (GETSEG 1 X B) (APPEND (GETSEG N (DIFFERENCE (SUB1 N) N) (CDR A)) (GETSEG 0 (DIFFERENCE X (DIFFERENCE (SUB1 N) N)) B))) (NUMBERP N) (NOT (LESSP (SUB1 N) (SUB1 N))) (NOT (LESSP (PLUS N X) (SUB1 N))) (NOT (EQUAL N 0)) (EQUAL (LENGTH (CDR A)) (SUB1 N)) (LISTP B)) (EQUAL (GETNTH (SUB1 N) (APPEND (CDR A) B)) (CAR B))). Applying the lemma SUB1-ELIM, replace N by (ADD1 Z) to eliminate (SUB1 N). We use the type restriction lemma noted when SUB1 was introduced to restrict the new variable. This produces: (IMPLIES (AND (NUMBERP Z) (NUMBERP X) (LISTP A) (EQUAL (GETSEG 1 X B) (APPEND (GETSEG (ADD1 Z) (DIFFERENCE Z (ADD1 Z)) (CDR A)) (GETSEG 0 (DIFFERENCE X (DIFFERENCE Z (ADD1 Z))) B))) (NOT (LESSP Z Z)) (NOT (LESSP (PLUS (ADD1 Z) X) Z)) (NOT (EQUAL (ADD1 Z) 0)) (EQUAL (LENGTH (CDR A)) Z) (LISTP B)) (EQUAL (GETNTH Z (APPEND (CDR A) B)) (CAR B))), which finally simplifies, applying SUB1-ADD1, GETNTH-APPEND-FOR-LENGTH-LEFT, and APPEND-NON-LIST-LEFT-COROLLARY, and unfolding DIFFERENCE, PLUS, LESSP, ADD1, EQUAL, and GETNTH, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (EQUAL (GETSEG N (SUB1 K) (APPEND (CDR A) B)) (APPEND (GETSEG N (DIFFERENCE (LENGTH (CDR A)) N) (CDR A)) (GETSEG 0 (DIFFERENCE (SUB1 K) (DIFFERENCE (LENGTH (CDR A)) N)) B))) (NUMBERP N) (NOT (LESSP (LENGTH (CDR A)) (SUB1 N))) (NOT (EQUAL (PLUS N K) 0)) (NOT (LESSP (SUB1 (PLUS N K)) (LENGTH (CDR A)))) (EQUAL N 0)) (EQUAL (GETSEG N K (CONS (CAR A) (APPEND (CDR A) B))) (APPEND (GETSEG N (ADD1 (LENGTH (CDR A))) A) (GETSEG 0 (DIFFERENCE K (ADD1 (LENGTH (CDR A)))) B)))). This again simplifies, applying the lemmas SUB1-ADD1, CDR-CONS, CAR-CONS, APPEND-NON-LIST-LEFT-COROLLARY, and GETSEG-OF-LENGTH-ZERO, and unfolding the definitions of EQUAL, DIFFERENCE, NUMBERP, SUB1, LESSP, PLUS, ADD1, GETNTH, GETSEG, APPEND, ZEROP, LISTP, and LENGTH, to three new goals: Case 2.1.3. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (NOT (EQUAL (LENGTH (CDR A)) 0)) (EQUAL (GETSEG 0 (SUB1 K) (APPEND (CDR A) B)) (APPEND (GETSEG 0 (LENGTH (CDR A)) (CDR A)) (GETSEG 0 (DIFFERENCE (SUB1 K) (LENGTH (CDR A))) B))) (NOT (LESSP (SUB1 K) (LENGTH (CDR A))))) (EQUAL (GETSEG 0 K (CONS (CAR A) (APPEND (CDR A) B))) (CONS (CAR A) (APPEND (GETSEG 1 (LENGTH (CDR A)) A) (GETSEG 0 (DIFFERENCE (SUB1 K) (LENGTH (CDR A))) B))))). Applying the lemma CAR-CDR-ELIM, replace A by (CONS Z X) to eliminate (CDR A) and (CAR A). This produces the new goal: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (EQUAL (LENGTH X) 0)) (EQUAL (GETSEG 0 (SUB1 K) (APPEND X B)) (APPEND (GETSEG 0 (LENGTH X) X) (GETSEG 0 (DIFFERENCE (SUB1 K) (LENGTH X)) B))) (NOT (LESSP (SUB1 K) (LENGTH X)))) (EQUAL (GETSEG 0 K (CONS Z (APPEND X B))) (CONS Z (APPEND (GETSEG 1 (LENGTH X) (CONS Z X)) (GETSEG 0 (DIFFERENCE (SUB1 K) (LENGTH X)) B))))), which further simplifies, rewriting with GETSEG-ADD1-CONS, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (EQUAL (LENGTH X) 0)) (EQUAL (GETSEG 0 (SUB1 K) (APPEND X B)) (APPEND (GETSEG 0 (LENGTH X) X) (GETSEG 0 (DIFFERENCE (SUB1 K) (LENGTH X)) B))) (NOT (LESSP (SUB1 K) (LENGTH X)))) (EQUAL (GETSEG 0 K (CONS Z (APPEND X B))) (CONS Z (GETSEG 0 (SUB1 K) (APPEND X B))))). Applying the lemma SUB1-ELIM, replace K by (ADD1 V) to eliminate (SUB1 K). We use the type restriction lemma noted when SUB1 was introduced to restrict the new variable. We would thus like to prove: (IMPLIES (AND (NUMBERP V) (NOT (EQUAL (ADD1 V) 0)) (NOT (EQUAL (LENGTH X) 0)) (EQUAL (GETSEG 0 V (APPEND X B)) (APPEND (GETSEG 0 (LENGTH X) X) (GETSEG 0 (DIFFERENCE V (LENGTH X)) B))) (NOT (LESSP V (LENGTH X)))) (EQUAL (GETSEG 0 (ADD1 V) (CONS Z (APPEND X B))) (CONS Z (GETSEG 0 V (APPEND X B))))), which finally simplifies, applying the lemmas SUB1-ADD1, CAR-CONS, and GETSEG-ADD1-CONS, and expanding ADD1, GETNTH, EQUAL, and GETSEG, to: T. Case 2.1.2. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (EQUAL (LENGTH (CDR A)) 0) (EQUAL (GETSEG 0 (SUB1 K) (APPEND (CDR A) B)) (APPEND (GETSEG 0 0 (CDR A)) (GETSEG 0 (DIFFERENCE (SUB1 K) 0) B))) (NOT (EQUAL (SUB1 K) 0))) (EQUAL (GETSEG 0 K (CONS (CAR A) B)) (CONS (CAR A) (GETSEG 0 (SUB1 K) B)))), which again simplifies, rewriting with APPEND-NON-LIST-LEFT-COROLLARY and GETSEG-OF-LENGTH-ZERO, and expanding ZEROP, EQUAL, DIFFERENCE, LENGTH, and LISTP, to the new formula: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (EQUAL (LENGTH (CDR A)) 0) (NOT (EQUAL (SUB1 K) 0))) (EQUAL (GETSEG 0 K (CONS (CAR A) B)) (CONS (CAR A) (GETSEG 0 (SUB1 K) B)))). Applying the lemma CAR-CDR-ELIM, replace A by (CONS Z X) to eliminate (CDR A) and (CAR A). This produces: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (LENGTH X) 0) (NOT (EQUAL (SUB1 K) 0))) (EQUAL (GETSEG 0 K (CONS Z B)) (CONS Z (GETSEG 0 (SUB1 K) B)))). Applying the lemma SUB1-ELIM, replace K by (ADD1 V) to eliminate (SUB1 K). We use the type restriction lemma noted when SUB1 was introduced to restrict the new variable. This produces the new formula: (IMPLIES (AND (NUMBERP V) (NOT (EQUAL (ADD1 V) 0)) (EQUAL (LENGTH X) 0) (NOT (EQUAL V 0))) (EQUAL (GETSEG 0 (ADD1 V) (CONS Z B)) (CONS Z (GETSEG 0 V B)))), which finally simplifies, rewriting with SUB1-ADD1, CAR-CONS, and GETSEG-ADD1-CONS, and expanding the definitions of ADD1, GETNTH, EQUAL, and GETSEG, to: T. Case 2.1.1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (EQUAL (LENGTH (CDR A)) 0) (EQUAL (GETSEG 0 (SUB1 K) (APPEND (CDR A) B)) (APPEND (GETSEG 0 0 (CDR A)) (GETSEG 0 (DIFFERENCE (SUB1 K) 0) B))) (EQUAL (SUB1 K) 0)) (EQUAL (GETSEG 0 K (CONS (CAR A) B)) (CONS (CAR A) (GETSEG 0 0 B)))). However this again simplifies, applying APPEND-NON-LIST-LEFT-COROLLARY, GETSEG-OF-LENGTH-ZERO, and CAR-CONS, and unfolding ZEROP, DIFFERENCE, APPEND, EQUAL, ADD1, GETNTH, and GETSEG, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (LISTP A)) (NUMBERP N) (NOT (LESSP (LENGTH A) N)) (NOT (LESSP (PLUS N K) (LENGTH A)))) (EQUAL (GETSEG N K (APPEND A B)) (APPEND (GETSEG N (DIFFERENCE (LENGTH A) N) A) (GETSEG 0 (DIFFERENCE K (DIFFERENCE (LENGTH A) N)) B)))). This simplifies, rewriting with APPEND-NON-LIST-LEFT-COROLLARY and GETSEG-OF-LENGTH-ZERO, and opening up the functions LENGTH, EQUAL, LESSP, PLUS, DIFFERENCE, ZEROP, and LISTP, to: T. Q.E.D. [ 0.0 0.5 0.1 ] GETSEG-ACROSS-APPEND (DISABLE GETSEG-ACROSS-APPEND) [ 0.0 0.0 0.0 ] GETSEG-ACROSS-APPEND-OFF (PROVE-LEMMA GETSEG-APPEND-LEFT (REWRITE) (IMPLIES (IF (LESSP (LENGTH A) (PLUS N K)) '*1*FALSE '*1*TRUE) (EQUAL (GETSEG N K (APPEND A B)) (GETSEG N K A))) ((ENABLE GETSEG LENGTH GETNTH-APPEND-LEFT) (DISABLE APPEND) (INDUCT (NUMBER-AND-LIST-INDUCTION K A)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to three new formulas: Case 3. (IMPLIES (AND (ZEROP K) (NOT (LESSP (LENGTH A) (PLUS N K)))) (EQUAL (GETSEG N K (APPEND A B)) (GETSEG N K A))), which simplifies, expanding ZEROP, EQUAL, and GETSEG, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (IMPLIES (IF (LESSP (LENGTH (CDR A)) (PLUS N (SUB1 K))) F T) (EQUAL (GETSEG N (SUB1 K) (APPEND (CDR A) B)) (GETSEG N (SUB1 K) (CDR A)))) (NOT (LESSP (LENGTH A) (PLUS N K)))) (EQUAL (GETSEG N K (APPEND A B)) (GETSEG N K A))), which simplifies, applying the lemma SUB1-ADD1, and opening up the definitions of IMPLIES, LENGTH, and LESSP, to four new formulas: Case 2.4. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (LESSP (LENGTH (CDR A)) (PLUS N (SUB1 K))) (EQUAL (PLUS N K) 0)) (EQUAL (GETSEG N K (APPEND A B)) (GETSEG N K A))), which again simplifies, using linear arithmetic, to: T. Case 2.3. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (LESSP (LENGTH (CDR A)) (PLUS N (SUB1 K))) (NOT (LESSP (LENGTH (CDR A)) (SUB1 (PLUS N K))))) (EQUAL (GETSEG N K (APPEND A B)) (GETSEG N K A))), which again simplifies, using linear arithmetic, to: T. Case 2.2. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (EQUAL (GETSEG N (SUB1 K) (APPEND (CDR A) B)) (GETSEG N (SUB1 K) (CDR A))) (EQUAL (PLUS N K) 0)) (EQUAL (GETSEG N K (APPEND A B)) (GETSEG N K A))), which again simplifies, using linear arithmetic, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP A) (EQUAL (GETSEG N (SUB1 K) (APPEND (CDR A) B)) (GETSEG N (SUB1 K) (CDR A))) (NOT (LESSP (LENGTH (CDR A)) (SUB1 (PLUS N K))))) (EQUAL (GETSEG N K (APPEND A B)) (GETSEG N K A))). Applying the lemma SUB1-ELIM, replace K by (ADD1 X) to eliminate (SUB1 K). We rely upon the type restriction lemma noted when SUB1 was introduced to restrict the new variable. We would thus like to prove: (IMPLIES (AND (NUMBERP X) (NOT (EQUAL (ADD1 X) 0)) (LISTP A) (EQUAL (GETSEG N X (APPEND (CDR A) B)) (GETSEG N X (CDR A))) (NOT (LESSP (LENGTH (CDR A)) (SUB1 (PLUS N (ADD1 X)))))) (EQUAL (GETSEG N (ADD1 X) (APPEND A B)) (GETSEG N (ADD1 X) A))), which further simplifies, using linear arithmetic, applying SUB1-ADD1, GETNTH-APPEND-LEFT, CAR-CONS, CDR-CONS, and CONS-EQUAL, and expanding the definitions of LENGTH and GETSEG, to: (IMPLIES (AND (NUMBERP X) (LISTP A) (EQUAL (GETSEG N X (APPEND (CDR A) B)) (GETSEG N X (CDR A))) (NOT (LESSP (LENGTH (CDR A)) (SUB1 (PLUS N (ADD1 X)))))) (EQUAL (GETSEG (ADD1 N) X (APPEND A B)) (GETSEG (ADD1 N) X A))). Applying the lemma CAR-CDR-ELIM, replace A by (CONS V Z) to eliminate (CDR A) and (CAR A). We thus obtain: (IMPLIES (AND (NUMBERP X) (EQUAL (GETSEG N X (APPEND Z B)) (GETSEG N X Z)) (NOT (LESSP (LENGTH Z) (SUB1 (PLUS N (ADD1 X)))))) (EQUAL (GETSEG (ADD1 N) X (APPEND (CONS V Z) B)) (GETSEG (ADD1 N) X (CONS V Z)))), which we will name *1. Case 1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (LISTP A)) (NOT (LESSP (LENGTH A) (PLUS N K)))) (EQUAL (GETSEG N K (APPEND A B)) (GETSEG N K A))). This simplifies, unfolding LENGTH, EQUAL, and LESSP, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (LISTP A)) (EQUAL (PLUS N K) 0)) (EQUAL (GETSEG N K (APPEND A B)) (GETSEG N K A))), which again simplifies, using linear arithmetic, to: T. So we now return to: (IMPLIES (AND (NUMBERP X) (EQUAL (GETSEG N X (APPEND Z B)) (GETSEG N X Z)) (NOT (LESSP (LENGTH Z) (SUB1 (PLUS N (ADD1 X)))))) (EQUAL (GETSEG (ADD1 N) X (APPEND (CONS V Z) B)) (GETSEG (ADD1 N) X (CONS V Z)))), which we named *1 above. We will try to 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 N X V Z B)) (IMPLIES (AND (NOT (ZEROP X)) (p (ADD1 N) (SUB1 X) V Z B)) (p N X V Z B))). Linear arithmetic, the lemma COUNT-NUMBERP, 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. Note, however, the inductive instance chosen for N. The above induction scheme produces the following four new conjectures: Case 4. (IMPLIES (AND (ZEROP X) (NUMBERP X) (EQUAL (GETSEG N X (APPEND Z B)) (GETSEG N X Z)) (NOT (LESSP (LENGTH Z) (SUB1 (PLUS N (ADD1 X)))))) (EQUAL (GETSEG (ADD1 N) X (APPEND (CONS V Z) B)) (GETSEG (ADD1 N) X (CONS V Z)))). This simplifies, expanding the definitions of ZEROP, NUMBERP, EQUAL, GETSEG, and ADD1, to: T. Case 3. (IMPLIES (AND (NOT (ZEROP X)) (NOT (EQUAL (GETSEG (ADD1 N) (SUB1 X) (APPEND Z B)) (GETSEG (ADD1 N) (SUB1 X) Z))) (NUMBERP X) (EQUAL (GETSEG N X (APPEND Z B)) (GETSEG N X Z)) (NOT (LESSP (LENGTH Z) (SUB1 (PLUS N (ADD1 X)))))) (EQUAL (GETSEG (ADD1 N) X (APPEND (CONS V Z) B)) (GETSEG (ADD1 N) X (CONS V Z)))). This simplifies, applying CAR-CONS and CONS-EQUAL, and expanding ZEROP and GETSEG, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP X)) (LESSP (LENGTH Z) (SUB1 (PLUS (ADD1 N) (ADD1 (SUB1 X))))) (NUMBERP X) (EQUAL (GETSEG N X (APPEND Z B)) (GETSEG N X Z)) (NOT (LESSP (LENGTH Z) (SUB1 (PLUS N (ADD1 X)))))) (EQUAL (GETSEG (ADD1 N) X (APPEND (CONS V Z) B)) (GETSEG (ADD1 N) X (CONS V Z)))), which simplifies, using linear arithmetic, to two new conjectures: Case 2.2. (IMPLIES (AND (EQUAL (PLUS (ADD1 N) (ADD1 (SUB1 X))) 0) (NOT (ZEROP X)) (LESSP (LENGTH Z) (SUB1 (PLUS (ADD1 N) (ADD1 (SUB1 X))))) (NUMBERP X) (EQUAL (GETSEG N X (APPEND Z B)) (GETSEG N X Z)) (NOT (LESSP (LENGTH Z) (SUB1 (PLUS N (ADD1 X)))))) (EQUAL (GETSEG (ADD1 N) X (APPEND (CONS V Z) B)) (GETSEG (ADD1 N) X (CONS V Z)))), which again simplifies, using linear arithmetic, to: T. Case 2.1. (IMPLIES (AND (EQUAL X 0) (NOT (ZEROP X)) (LESSP (LENGTH Z) (SUB1 (PLUS (ADD1 N) (ADD1 (SUB1 X))))) (NUMBERP X) (EQUAL (GETSEG N X (APPEND Z B)) (GETSEG N X Z)) (NOT (LESSP (LENGTH Z) (SUB1 (PLUS N (ADD1 X)))))) (EQUAL (GETSEG (ADD1 N) X (APPEND (CONS V Z) B)) (GETSEG (ADD1 N) X (CONS V Z)))), which again simplifies, unfolding ZEROP, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP X)) (EQUAL (GETSEG (ADD1 (ADD1 N)) (SUB1 X) (APPEND (CONS V Z) B)) (GETSEG (ADD1 (ADD1 N)) (SUB1 X) (CONS V Z))) (NUMBERP X) (EQUAL (GETSEG N X (APPEND Z B)) (GETSEG N X Z)) (NOT (LESSP (LENGTH Z) (SUB1 (PLUS N (ADD1 X)))))) (EQUAL (GETSEG (ADD1 N) X (APPEND (CONS V Z) B)) (GETSEG (ADD1 N) X (CONS V Z)))), which simplifies, rewriting with CAR-CONS and CONS-EQUAL, and unfolding the definitions of ZEROP and GETSEG, to the new conjecture: (IMPLIES (AND (NOT (EQUAL X 0)) (EQUAL (GETSEG (ADD1 (ADD1 N)) (SUB1 X) (APPEND (CONS V Z) B)) (GETSEG (ADD1 (ADD1 N)) (SUB1 X) (CONS V Z))) (NUMBERP X) (EQUAL (GETNTH N (APPEND Z B)) (GETNTH N Z)) (EQUAL (GETSEG (ADD1 N) (SUB1 X) (APPEND Z B)) (GETSEG (ADD1 N) (SUB1 X) Z)) (NOT (LESSP (LENGTH Z) (SUB1 (PLUS N (ADD1 X)))))) (EQUAL (GETNTH (ADD1 N) (APPEND (CONS V Z) B)) (GETNTH (ADD1 N) (CONS V Z)))), which again simplifies, using linear arithmetic, applying GETNTH-APPEND-LEFT and CDR-CONS, and unfolding the function LENGTH, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] GETSEG-APPEND-LEFT (DISABLE GETSEG-APPEND-LEFT) [ 0.0 0.0 0.0 ] GETSEG-APPEND-LEFT-OFF (PROVE-LEMMA GETSEG-AFTER-PUTNTH (REWRITE) (IMPLIES (LESSP N I) (EQUAL (GETSEG I K (PUTNTH V N L)) (GETSEG I K L))) ((ENABLE GETSEG GETNTH-PUTNTH-CASESPLIT) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Call the conjecture *1. We will appeal to induction. There are two plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP K) (p I K V N L)) (IMPLIES (AND (NOT (ZEROP K)) (p (ADD1 I) (SUB1 K) V N L)) (p I K V N L))). 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. Note, however, the inductive instance chosen for I. The above induction scheme generates three new formulas: Case 3. (IMPLIES (AND (ZEROP K) (LESSP N I)) (EQUAL (GETSEG I K (PUTNTH V N L)) (GETSEG I K L))), which simplifies, expanding the definitions of ZEROP, EQUAL, and GETSEG, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP K)) (NOT (LESSP N (ADD1 I))) (LESSP N I)) (EQUAL (GETSEG I K (PUTNTH V N L)) (GETSEG I K L))), which simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP K)) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (GETSEG (ADD1 I) (SUB1 K) L)) (LESSP N I)) (EQUAL (GETSEG I K (PUTNTH V N L)) (GETSEG I K L))), which simplifies, rewriting with GETNTH-PUTNTH-CASESPLIT, CAR-CONS, and CONS-EQUAL, and expanding the functions ZEROP and GETSEG, to the following four new conjectures: Case 1.4. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (GETSEG (ADD1 I) (SUB1 K) L)) (LESSP N I) (LESSP I (LENGTH L)) (NOT (NUMBERP I)) (EQUAL 0 N)) (EQUAL V (GETNTH I L))). However this again simplifies, applying SUB1-TYPE-RESTRICTION, and expanding the function LESSP, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (GETSEG (ADD1 I) (SUB1 K) L)) (LESSP N I) (LESSP I (LENGTH L)) (NUMBERP I) (NUMBERP N) (EQUAL I N)) (EQUAL V (GETNTH I L))). But this again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (GETSEG (ADD1 I) (SUB1 K) L)) (LESSP N I) (LESSP I (LENGTH L)) (NOT (NUMBERP N)) (EQUAL I 0)) (EQUAL V (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (GETSEG (ADD1 I) (SUB1 K) L)) (LESSP N I) (LESSP I (LENGTH L)) (NOT (NUMBERP I)) (NOT (NUMBERP N))) (EQUAL V (GETNTH I L))), which again simplifies, opening up LESSP, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] GETSEG-AFTER-PUTNTH (DISABLE GETSEG-AFTER-PUTNTH) [ 0.0 0.0 0.0 ] GETSEG-AFTER-PUTNTH-OFF (PROVE-LEMMA GETSEG-BEFORE-PUTNTH (REWRITE) (IMPLIES (IF (LESSP N (PLUS I K)) '*1*FALSE '*1*TRUE) (EQUAL (GETSEG I K (PUTNTH V N L)) (GETSEG I K L))) ((ENABLE GETSEG GETNTH-PUTNTH-CASESPLIT) (INDUCT (GETSEG I K L)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to two new goals: Case 2. (IMPLIES (AND (ZEROP K) (NOT (LESSP N (PLUS I K)))) (EQUAL (GETSEG I K (PUTNTH V N L)) (GETSEG I K L))), which simplifies, expanding ZEROP, EQUAL, and GETSEG, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (IMPLIES (IF (LESSP N (PLUS (ADD1 I) (SUB1 K))) F T) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (GETSEG (ADD1 I) (SUB1 K) L))) (NOT (LESSP N (PLUS I K)))) (EQUAL (GETSEG I K (PUTNTH V N L)) (GETSEG I K L))), which simplifies, applying SUB1-ADD1, GETNTH-PUTNTH-CASESPLIT, CAR-CONS, and CONS-EQUAL, and expanding PLUS, LESSP, IMPLIES, EQUAL, and GETSEG, to the following 12 new conjectures: Case 1.12. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL N 0) (EQUAL (PLUS I K) 0)) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) L)))). However this again simplifies, using linear arithmetic, to: T. Case 1.11. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (EQUAL (PLUS I K) 0) (LESSP I (LENGTH L)) (NOT (NUMBERP I))) (EQUAL V (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 1.10. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (EQUAL (PLUS I K) 0) (LESSP I (LENGTH L)) (EQUAL I 0)) (EQUAL V (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 1.9. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (EQUAL (PLUS I K) 0)) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (GETSEG (ADD1 I) (SUB1 K) L))), which again simplifies, using linear arithmetic, to: T. Case 1.8. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (LESSP (SUB1 N) (PLUS 0 (SUB1 K))) (NOT (LESSP N K))) (EQUAL (GETSEG I K (PUTNTH V N L)) (GETSEG I K L))), which again simplifies, using linear arithmetic, to: T. Case 1.7. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (LESSP (SUB1 N) (PLUS I (SUB1 K))) (NOT (LESSP N (PLUS I K))) (LESSP I (LENGTH L)) (NUMBERP N) (EQUAL I N)) (EQUAL V (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 1.6. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (LESSP (SUB1 N) (PLUS I (SUB1 K))) (NOT (LESSP N (PLUS I K))) (LESSP I (LENGTH L)) (NOT (NUMBERP N)) (EQUAL I 0)) (EQUAL V (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 1.5. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (LESSP (SUB1 N) (PLUS I (SUB1 K))) (NOT (LESSP N (PLUS I K)))) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (GETSEG (ADD1 I) (SUB1 K) L))), which again simplifies, using linear arithmetic, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (GETSEG (ADD1 I) (SUB1 K) L)) (NOT (LESSP N (PLUS I K))) (LESSP I (LENGTH L)) (NOT (NUMBERP I)) (EQUAL 0 N)) (EQUAL V (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (GETSEG (ADD1 I) (SUB1 K) L)) (NOT (LESSP N (PLUS I K))) (LESSP I (LENGTH L)) (NUMBERP I) (NUMBERP N) (EQUAL I N)) (EQUAL V (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (GETSEG (ADD1 I) (SUB1 K) L)) (NOT (LESSP N (PLUS I K))) (LESSP I (LENGTH L)) (NOT (NUMBERP N)) (EQUAL I 0)) (EQUAL V (GETNTH I L))), which again simplifies, opening up the definitions of EQUAL, PLUS, and LESSP, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (GETSEG (ADD1 I) (SUB1 K) L)) (NOT (LESSP N (PLUS I K))) (LESSP I (LENGTH L)) (NOT (NUMBERP I)) (NOT (NUMBERP N))) (EQUAL V (GETNTH I L))), which again simplifies, rewriting with the lemma SUB1-TYPE-RESTRICTION, and opening up the functions PLUS and LESSP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETSEG-BEFORE-PUTNTH (DISABLE GETSEG-BEFORE-PUTNTH) [ 0.0 0.0 0.0 ] GETSEG-BEFORE-PUTNTH-OFF (PROVE-LEMMA GETSEG-PUTNTH-COINCIDENCE (REWRITE) (IMPLIES (AND (IF (LESSP N I) '*1*FALSE '*1*TRUE) (AND (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)))) (EQUAL (GETSEG I K (PUTNTH V N L)) (PUTNTH V (DIFFERENCE N I) (GETSEG I K L)))) ((ENABLE GETSEG LENGTH DIFFERENCE-SUB1-ARG1 GETNTH-PUTNTH-CASESPLIT GETSEG-OF-LENGTH-ZERO GETSEG-AFTER-PUTNTH OPEN-PUTNTH-CASESPLIT PUTNTH-WITH-NON-NUMBER-INDEX) (INDUCT (GETSEG I K L)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to the following two new goals: Case 2. (IMPLIES (AND (ZEROP K) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L))) (EQUAL (GETSEG I K (PUTNTH V N L)) (PUTNTH V (DIFFERENCE N I) (GETSEG I K L)))). This simplifies, expanding the functions ZEROP, EQUAL, and LESSP, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (IMPLIES (AND (IF (LESSP N (ADD1 I)) F T) (LESSP (DIFFERENCE N (ADD1 I)) (SUB1 K)) (LESSP N (LENGTH L))) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (PUTNTH V (DIFFERENCE N (ADD1 I)) (GETSEG (ADD1 I) (SUB1 K) L)))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L))) (EQUAL (GETSEG I K (PUTNTH V N L)) (PUTNTH V (DIFFERENCE N I) (GETSEG I K L)))). This simplifies, rewriting with SUB1-ADD1, PUTNTH-WITH-NON-NUMBER-INDEX, GETNTH-PUTNTH-CASESPLIT, GETSEG-AFTER-PUTNTH, OPEN-PUTNTH-CASESPLIT, and CAR-CONS, and opening up the functions LESSP, DIFFERENCE, AND, IMPLIES, EQUAL, and GETSEG, to 41 new goals: Case 1.41. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (EQUAL I 0) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG 0 K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG 0 K L)))), which again simplifies, obviously, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG 0 K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG 0 K L)))), which we will name *1. Case 1.40. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (NOT (NUMBERP I)) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG I K L)))). Call the above conjecture *2. Case 1.39. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL N 0) (EQUAL I 0) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG 0 K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG 0 K L)))). This again simplifies, obviously, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG 0 K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG 0 K L)))), which we will name *3. Case 1.38. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL N 0) (NOT (NUMBERP I)) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG I K L)))). This again simplifies, clearly, to the new conjecture: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG I K L)))), which we will name *4. Case 1.37. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (LESSP (SUB1 N) 0) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP N K) (LESSP N (LENGTH L))) (EQUAL (GETSEG I K (PUTNTH V N L)) (PUTNTH V N (GETSEG I K L)))). This again simplifies, using linear arithmetic, to: T. Case 1.36. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (LESSP (SUB1 N) 0) (EQUAL N 0) (LESSP 0 K) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG I K L)))), which again simplifies, unfolding the functions SUB1 and LESSP, to: T. Case 1.35. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (LESSP (SUB1 N) 0) (NOT (NUMBERP N)) (LESSP 0 K) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG I K L)))), which again simplifies, rewriting with the lemma SUB1-NNUMBERP, and opening up LESSP, to: T. Case 1.34. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (LESSP (SUB1 N) I) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (NOT (NUMBERP N)) (NOT (EQUAL I 0))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) L)) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to: T. Case 1.33. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (LESSP (SUB1 N) I) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (NUMBERP N) (NOT (EQUAL I N))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) L)) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to: T. Case 1.32. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (LESSP (SUB1 N) I) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (NOT (LESSP I (LENGTH L)))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) L)) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to: T. Case 1.31. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (LESSP (SUB1 N) I) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (LESSP I (LENGTH L)) (NUMBERP N) (EQUAL I N)) (EQUAL (CONS V (GETSEG (ADD1 I) (SUB1 K) L)) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to: T. Case 1.30. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (LESSP (SUB1 N) I) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (LESSP I (LENGTH L)) (NOT (NUMBERP N)) (EQUAL I 0)) (EQUAL (CONS V (GETSEG (ADD1 I) (SUB1 K) L)) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to: T. Case 1.29. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (LESSP (SUB1 N) I) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N I) 0) (NOT (NUMBERP N)) (NOT (EQUAL I 0))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) L)) (CONS V (GETSEG (ADD1 I) (SUB1 K) L)))), which again simplifies, applying SUB1-NNUMBERP, and expanding the functions EQUAL and LESSP, to: T. Case 1.28. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (LESSP (SUB1 N) I) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N I) 0) (NUMBERP N) (NOT (EQUAL I N))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) L)) (CONS V (GETSEG (ADD1 I) (SUB1 K) L)))). However this again simplifies, using linear arithmetic, to: T. Case 1.27. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (LESSP (SUB1 N) I) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N I) 0) (NOT (LESSP I (LENGTH L)))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) L)) (CONS V (GETSEG (ADD1 I) (SUB1 K) L)))), which again simplifies, using linear arithmetic, to: T. Case 1.26. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (NOT (LESSP (DIFFERENCE (SUB1 N) 0) (SUB1 K))) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP N K) (LESSP N (LENGTH L))) (EQUAL (GETSEG I K (PUTNTH V N L)) (PUTNTH V N (GETSEG I K L)))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (LESSP (SUB1 N) 0) (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (NOT (LESSP (DIFFERENCE (SUB1 N) 0) (SUB1 K))) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP N K) (LESSP N (LENGTH L))) (EQUAL (GETSEG I K (PUTNTH V N L)) (PUTNTH V N (GETSEG I K L)))). But this again simplifies, using linear arithmetic, to: T. Case 1.25. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (NOT (LESSP (DIFFERENCE (SUB1 N) 0) (SUB1 K))) (EQUAL N 0) (LESSP 0 K) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG I K L)))), which again simplifies, rewriting with GETSEG-OF-LENGTH-ZERO, SUB1-TYPE-RESTRICTION, GETNTH-PUTNTH-CASESPLIT, and OPEN-PUTNTH-CASESPLIT, and expanding the definitions of SUB1, DIFFERENCE, EQUAL, LESSP, ZEROP, NUMBERP, and GETSEG, to: T. Case 1.24. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (NOT (LESSP (DIFFERENCE (SUB1 N) 0) (SUB1 K))) (NOT (NUMBERP N)) (LESSP 0 K) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG I K L)))). But this again simplifies, appealing to the lemmas SUB1-NNUMBERP, GETSEG-OF-LENGTH-ZERO, SUB1-TYPE-RESTRICTION, GETNTH-PUTNTH-CASESPLIT, and OPEN-PUTNTH-CASESPLIT, and expanding the functions DIFFERENCE, EQUAL, LESSP, ZEROP, NUMBERP, and GETSEG, to: T. Case 1.23. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (NOT (NUMBERP N)) (NOT (EQUAL I 0))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to two new conjectures: Case 1.23.2. (IMPLIES (AND (LESSP (SUB1 N) I) (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (NOT (NUMBERP N)) (NOT (EQUAL I 0))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to: T. Case 1.23.1. (IMPLIES (AND (LESSP N 1) (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (NOT (NUMBERP N)) (NOT (EQUAL I 0))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to: T. Case 1.22. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (NUMBERP N) (NOT (EQUAL I N))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to two new goals: Case 1.22.2. (IMPLIES (AND (LESSP (SUB1 N) I) (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (NUMBERP N) (NOT (EQUAL I N))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to: T. Case 1.22.1. (IMPLIES (AND (EQUAL N 0) (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (NUMBERP N) (NOT (EQUAL I N))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to: T. Case 1.21. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (NOT (LESSP I (LENGTH L)))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to two new goals: Case 1.21.2. (IMPLIES (AND (LESSP (SUB1 N) I) (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (NOT (LESSP I (LENGTH L)))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to: T. Case 1.21.1. (IMPLIES (AND (LESSP N 1) (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (NOT (LESSP I (LENGTH L)))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to: T. Case 1.20. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (LESSP I (LENGTH L)) (NUMBERP N) (EQUAL I N)) (EQUAL (CONS V (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to: T. Case 1.19. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (LESSP I (LENGTH L)) (NOT (NUMBERP N)) (EQUAL I 0)) (EQUAL (CONS V (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to two new goals: Case 1.19.2. (IMPLIES (AND (LESSP (SUB1 N) 0) (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP 0) (NOT (LESSP (DIFFERENCE (SUB1 N) 0) (SUB1 K))) (NOT (LESSP N 0)) (LESSP (DIFFERENCE N 0) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N 0) 0)) (LESSP 0 (LENGTH L)) (NOT (NUMBERP N))) (EQUAL (CONS V (GETSEG 1 (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH 0 L) (PUTNTH V (SUB1 (DIFFERENCE N 0)) (GETSEG 1 (SUB1 K) L))))), which again simplifies, using linear arithmetic, to: T. Case 1.19.1. (IMPLIES (AND (LESSP N 1) (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP 0) (NOT (LESSP (DIFFERENCE (SUB1 N) 0) (SUB1 K))) (NOT (LESSP N 0)) (LESSP (DIFFERENCE N 0) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N 0) 0)) (LESSP 0 (LENGTH L)) (NOT (NUMBERP N))) (EQUAL (CONS V (GETSEG 1 (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH 0 L) (PUTNTH V (SUB1 (DIFFERENCE N 0)) (GETSEG 1 (SUB1 K) L))))), which again simplifies, using linear arithmetic, to: T. Case 1.18. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N I) 0) (NOT (NUMBERP N)) (NOT (EQUAL I 0))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG (ADD1 I) (SUB1 K) L)))), which again simplifies, using linear arithmetic, to two new formulas: Case 1.18.2. (IMPLIES (AND (LESSP (SUB1 N) I) (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP 0 K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N I) 0) (NOT (NUMBERP N)) (NOT (EQUAL I 0))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG (ADD1 I) (SUB1 K) L)))), which again simplifies, applying the lemma SUB1-NNUMBERP, and opening up the functions EQUAL, LESSP, and DIFFERENCE, to: T. Case 1.18.1. (IMPLIES (AND (LESSP N 1) (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP 0 K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N I) 0) (NOT (NUMBERP N)) (NOT (EQUAL I 0))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG (ADD1 I) (SUB1 K) L)))), which again simplifies, using linear arithmetic, to: T. Case 1.17. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N I) 0) (NUMBERP N) (NOT (EQUAL I N))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG (ADD1 I) (SUB1 K) L)))), which again simplifies, using linear arithmetic, to two new conjectures: Case 1.17.2. (IMPLIES (AND (LESSP (SUB1 N) I) (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP 0 K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N I) 0) (NUMBERP N) (NOT (EQUAL I N))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG (ADD1 I) (SUB1 K) L)))), which again simplifies, using linear arithmetic, to: T. Case 1.17.1. (IMPLIES (AND (EQUAL N 0) (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP 0 K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N I) 0) (NUMBERP N) (NOT (EQUAL I N))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG (ADD1 I) (SUB1 K) L)))), which again simplifies, using linear arithmetic, to: T. Case 1.16. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N I) 0) (NOT (LESSP I (LENGTH L)))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG (ADD1 I) (SUB1 K) L)))), which again simplifies, using linear arithmetic, to: T. Case 1.15. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N I) 0) (LESSP I (LENGTH L)) (NUMBERP N) (EQUAL I N)) (EQUAL (CONS V (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG (ADD1 I) (SUB1 K) L)))), which again simplifies, using linear arithmetic, to two new formulas: Case 1.15.2. (IMPLIES (AND (LESSP (SUB1 N) N) (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 N) N) (SUB1 K))) (NOT (LESSP N N)) (LESSP 0 K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N N) 0) (LESSP N (LENGTH L)) (NUMBERP N)) (EQUAL (CONS V (GETSEG (ADD1 N) (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG (ADD1 N) (SUB1 K) L)))), which again simplifies, using linear arithmetic, rewriting with the lemma GETSEG-AFTER-PUTNTH, and opening up the definitions of EQUAL and LESSP, to: T. Case 1.15.1. (IMPLIES (AND (EQUAL N 0) (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP N) (NOT (LESSP (DIFFERENCE (SUB1 N) N) (SUB1 K))) (NOT (LESSP N N)) (LESSP 0 K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N N) 0) (LESSP N (LENGTH L)) (NUMBERP N)) (EQUAL (CONS V (GETSEG (ADD1 N) (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG (ADD1 N) (SUB1 K) L)))), which again simplifies, applying GETSEG-OF-LENGTH-ZERO and GETSEG-AFTER-PUTNTH, and opening up NUMBERP, SUB1, DIFFERENCE, EQUAL, LESSP, and ZEROP, to: T. Case 1.14. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (NOT (LESSP (DIFFERENCE (SUB1 N) I) (SUB1 K))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N I) 0) (LESSP I (LENGTH L)) (NOT (NUMBERP N)) (EQUAL I 0)) (EQUAL (CONS V (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG (ADD1 I) (SUB1 K) L)))). But this again simplifies, using linear arithmetic, to two new formulas: Case 1.14.2. (IMPLIES (AND (LESSP (SUB1 N) 0) (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP 0) (NOT (LESSP (DIFFERENCE (SUB1 N) 0) (SUB1 K))) (NOT (LESSP N 0)) (LESSP 0 K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N 0) 0) (LESSP 0 (LENGTH L)) (NOT (NUMBERP N))) (EQUAL (CONS V (GETSEG 1 (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG 1 (SUB1 K) L)))), which again simplifies, rewriting with SUB1-NNUMBERP, and unfolding LESSP, to: T. Case 1.14.1. (IMPLIES (AND (LESSP N 1) (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP 0) (NOT (LESSP (DIFFERENCE (SUB1 N) 0) (SUB1 K))) (NOT (LESSP N 0)) (LESSP 0 K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N 0) 0) (LESSP 0 (LENGTH L)) (NOT (NUMBERP N))) (EQUAL (CONS V (GETSEG 1 (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG 1 (SUB1 K) L)))). This again simplifies, applying SUB1-NNUMBERP, PUTNTH-WITH-NON-NUMBER-INDEX, GETSEG-OF-LENGTH-ZERO, and GETSEG-AFTER-PUTNTH, and expanding NUMBERP, EQUAL, LESSP, DIFFERENCE, and ZEROP, to: T. Case 1.13. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (PUTNTH V (DIFFERENCE (SUB1 N) 0) (GETSEG (ADD1 I) (SUB1 K) L))) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP N K) (LESSP N (LENGTH L))) (EQUAL (GETSEG I K (PUTNTH V N L)) (PUTNTH V N (GETSEG I K L)))). However this again simplifies, using linear arithmetic, applying SUB1-TYPE-RESTRICTION and DIFFERENCE-SUB1-ARG1, and opening up EQUAL and DIFFERENCE, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (EQUAL (GETSEG 1 (SUB1 K) (PUTNTH V N L)) (PUTNTH V (SUB1 N) (GETSEG 1 (SUB1 K) L))) (NOT (EQUAL N 0)) (NUMBERP N) (LESSP N K) (LESSP N (LENGTH L))) (EQUAL (GETSEG I K (PUTNTH V N L)) (PUTNTH V N (GETSEG I K L)))), which again simplifies, rewriting with SUB1-TYPE-RESTRICTION, GETNTH-PUTNTH-CASESPLIT, and OPEN-PUTNTH-CASESPLIT, and unfolding LESSP and GETSEG, to: T. Case 1.12. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (PUTNTH V (DIFFERENCE (SUB1 N) 0) (GETSEG (ADD1 I) (SUB1 K) L))) (EQUAL N 0) (LESSP 0 K) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG I K L)))). But this again simplifies, rewriting with SUB1-TYPE-RESTRICTION and GETSEG-AFTER-PUTNTH, and expanding LESSP, SUB1, DIFFERENCE, and EQUAL, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (EQUAL (GETSEG 1 (SUB1 K) L) (PUTNTH V 0 (GETSEG 1 (SUB1 K) L))) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG I K L)))), which again simplifies, applying SUB1-TYPE-RESTRICTION and OPEN-PUTNTH-CASESPLIT, and opening up the functions GETSEG and EQUAL, to the new conjecture: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (EQUAL (GETSEG 1 (SUB1 K) L) (PUTNTH V 0 (GETSEG 1 (SUB1 K) L))) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (CONS V (GETSEG 1 (SUB1 K) L)))). Applying the lemma SUB1-ELIM, replace K by (ADD1 X) to eliminate (SUB1 K). We employ the type restriction lemma noted when SUB1 was introduced to restrict the new variable. We thus obtain: (IMPLIES (AND (NUMBERP X) (NOT (EQUAL (ADD1 X) 0)) (NOT (NUMBERP I)) (EQUAL (GETSEG 1 X L) (PUTNTH V 0 (GETSEG 1 X L))) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I (ADD1 X) (PUTNTH V 0 L)) (CONS V (GETSEG 1 X L)))), which further simplifies, applying the lemmas SUB1-ADD1, SUB1-TYPE-RESTRICTION, GETNTH-PUTNTH-CASESPLIT, and GETSEG-AFTER-PUTNTH, and expanding EQUAL, NUMBERP, LESSP, and GETSEG, to: T. Case 1.11. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (PUTNTH V (DIFFERENCE (SUB1 N) 0) (GETSEG (ADD1 I) (SUB1 K) L))) (NOT (NUMBERP N)) (LESSP 0 K) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG I K L)))), which again simplifies, applying SUB1-TYPE-RESTRICTION, PUTNTH-WITH-NON-NUMBER-INDEX, GETSEG-AFTER-PUTNTH, and SUB1-NNUMBERP, and expanding LESSP, DIFFERENCE, and EQUAL, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (EQUAL (GETSEG 1 (SUB1 K) L) (PUTNTH V 0 (GETSEG 1 (SUB1 K) L))) (NOT (NUMBERP N)) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG I K L)))), which again simplifies, rewriting with SUB1-TYPE-RESTRICTION and OPEN-PUTNTH-CASESPLIT, and expanding GETSEG and EQUAL, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (EQUAL (GETSEG 1 (SUB1 K) L) (PUTNTH V 0 (GETSEG 1 (SUB1 K) L))) (NOT (NUMBERP N)) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (CONS V (GETSEG 1 (SUB1 K) L)))). Applying the lemma SUB1-ELIM, replace K by (ADD1 X) to eliminate (SUB1 K). We rely upon the type restriction lemma noted when SUB1 was introduced to restrict the new variable. We would thus like to prove: (IMPLIES (AND (NUMBERP X) (NOT (EQUAL (ADD1 X) 0)) (NOT (NUMBERP I)) (EQUAL (GETSEG 1 X L) (PUTNTH V 0 (GETSEG 1 X L))) (NOT (NUMBERP N)) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I (ADD1 X) (PUTNTH V 0 L)) (CONS V (GETSEG 1 X L)))), which further simplifies, applying SUB1-ADD1, SUB1-TYPE-RESTRICTION, GETNTH-PUTNTH-CASESPLIT, and GETSEG-AFTER-PUTNTH, and expanding the functions EQUAL, NUMBERP, LESSP, and GETSEG, to: T. Case 1.10. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (PUTNTH V (DIFFERENCE (SUB1 N) I) (GETSEG (ADD1 I) (SUB1 K) L))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (NOT (NUMBERP N)) (NOT (EQUAL I 0))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))). However this again simplifies, using linear arithmetic, rewriting with PUTNTH-WITH-NON-NUMBER-INDEX, GETSEG-AFTER-PUTNTH, and SUB1-NNUMBERP, and expanding EQUAL, DIFFERENCE, and LESSP, to: T. Case 1.9. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (PUTNTH V (DIFFERENCE (SUB1 N) I) (GETSEG (ADD1 I) (SUB1 K) L))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (NUMBERP N) (NOT (EQUAL I N))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))). However this again simplifies, using linear arithmetic and rewriting with DIFFERENCE-SUB1-ARG1, to: T. Case 1.8. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (PUTNTH V (DIFFERENCE (SUB1 N) I) (GETSEG (ADD1 I) (SUB1 K) L))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (NOT (LESSP I (LENGTH L)))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))). But this again simplifies, using linear arithmetic, to: T. Case 1.7. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (PUTNTH V (DIFFERENCE (SUB1 N) I) (GETSEG (ADD1 I) (SUB1 K) L))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (LESSP I (LENGTH L)) (NUMBERP N) (EQUAL I N)) (EQUAL (CONS V (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to: T. Case 1.6. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (PUTNTH V (DIFFERENCE (SUB1 N) I) (GETSEG (ADD1 I) (SUB1 K) L))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (NOT (EQUAL (DIFFERENCE N I) 0)) (LESSP I (LENGTH L)) (NOT (NUMBERP N)) (EQUAL I 0)) (EQUAL (CONS V (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS (GETNTH I L) (PUTNTH V (SUB1 (DIFFERENCE N I)) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, rewriting with the lemmas PUTNTH-WITH-NON-NUMBER-INDEX, GETSEG-AFTER-PUTNTH, and SUB1-NNUMBERP, and unfolding the definitions of NUMBERP, LESSP, DIFFERENCE, and EQUAL, to: T. Case 1.5. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (PUTNTH V (DIFFERENCE (SUB1 N) I) (GETSEG (ADD1 I) (SUB1 K) L))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N I) 0) (NOT (NUMBERP N)) (NOT (EQUAL I 0))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG (ADD1 I) (SUB1 K) L)))), which again simplifies, using linear arithmetic, applying PUTNTH-WITH-NON-NUMBER-INDEX, GETSEG-AFTER-PUTNTH, and SUB1-NNUMBERP, and opening up the functions EQUAL, DIFFERENCE, and LESSP, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (PUTNTH V (DIFFERENCE (SUB1 N) I) (GETSEG (ADD1 I) (SUB1 K) L))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N I) 0) (NUMBERP N) (NOT (EQUAL I N))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG (ADD1 I) (SUB1 K) L)))). This again simplifies, using linear arithmetic, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (PUTNTH V (DIFFERENCE (SUB1 N) I) (GETSEG (ADD1 I) (SUB1 K) L))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N I) 0) (NOT (LESSP I (LENGTH L)))) (EQUAL (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG (ADD1 I) (SUB1 K) L)))), which again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (PUTNTH V (DIFFERENCE (SUB1 N) I) (GETSEG (ADD1 I) (SUB1 K) L))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N I) 0) (LESSP I (LENGTH L)) (NUMBERP N) (EQUAL I N)) (EQUAL (CONS V (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG (ADD1 I) (SUB1 K) L)))), which again simplifies, using linear arithmetic, applying GETSEG-AFTER-PUTNTH, and unfolding the functions EQUAL and LESSP, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L)) (PUTNTH V (DIFFERENCE (SUB1 N) I) (GETSEG (ADD1 I) (SUB1 K) L))) (NOT (LESSP N I)) (LESSP (DIFFERENCE N I) K) (LESSP N (LENGTH L)) (EQUAL (DIFFERENCE N I) 0) (LESSP I (LENGTH L)) (NOT (NUMBERP N)) (EQUAL I 0)) (EQUAL (CONS V (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V N L))) (CONS V (GETSEG (ADD1 I) (SUB1 K) L)))). This again simplifies, applying PUTNTH-WITH-NON-NUMBER-INDEX, GETSEG-AFTER-PUTNTH, and SUB1-NNUMBERP, and expanding the definitions of NUMBERP, LESSP, DIFFERENCE, and EQUAL, to: T. So we now return to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG I K L)))), which is formula *4 above. This conjecture is subsumed by formula *2 above. So we now return to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG 0 K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG 0 K L)))), which we named *3 above. We will appeal to induction. There are two plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP K) (p K V L)) (IMPLIES (AND (NOT (ZEROP K)) (p (SUB1 K) V L)) (p K V L))). 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 leads to the following three new goals: Case 3. (IMPLIES (AND (ZEROP K) (NOT (EQUAL K 0)) (NUMBERP K) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG 0 K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG 0 K L)))). This simplifies, expanding the definition of ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP K)) (EQUAL (SUB1 K) 0) (NOT (EQUAL K 0)) (NUMBERP K) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG 0 K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG 0 K L)))). This simplifies, applying GETNTH-PUTNTH-CASESPLIT, GETSEG-OF-LENGTH-ZERO, GETSEG-AFTER-PUTNTH, and OPEN-PUTNTH-CASESPLIT, and expanding the definitions of ZEROP, GETSEG, EQUAL, LESSP, NUMBERP, and ADD1, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP K)) (EQUAL (GETSEG 0 (SUB1 K) (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG 0 (SUB1 K) L))) (NOT (EQUAL K 0)) (NUMBERP K) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG 0 K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG 0 K L)))), which simplifies, applying the lemmas GETNTH-PUTNTH-CASESPLIT, GETSEG-AFTER-PUTNTH, and OPEN-PUTNTH-CASESPLIT, and expanding ZEROP, GETSEG, EQUAL, LESSP, NUMBERP, and ADD1, to: T. That finishes the proof of *3. So next consider: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (NOT (NUMBERP I)) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG I K L)))), which we named *2 above. 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 (ZEROP K) (p I K V L N)) (IMPLIES (AND (NOT (ZEROP K)) (p (ADD1 I) (SUB1 K) V L N)) (p I K V L N))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT K) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for I. The above induction scheme leads to two new formulas: Case 2. (IMPLIES (AND (ZEROP K) (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (NOT (NUMBERP I)) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG I K L)))), which simplifies, opening up ZEROP, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP K)) (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (NOT (NUMBERP I)) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG I K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG I K L)))), which simplifies, applying GETNTH-PUTNTH-CASESPLIT, OPEN-PUTNTH-CASESPLIT, CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding the definitions of ZEROP, GETSEG, LESSP, NUMBERP, and EQUAL, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (NOT (NUMBERP I)) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTNTH V 0 L)) (GETSEG (ADD1 I) (SUB1 K) L))), which further simplifies, rewriting with SUB1-TYPE-RESTRICTION and GETSEG-AFTER-PUTNTH, and opening up LESSP, to: T. That finishes the proof of *2. So let us turn our attention to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG 0 K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG 0 K L)))), named *1 above. Perhaps we can prove it by induction. There are two plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (ZEROP K) (p K V L N)) (IMPLIES (AND (NOT (ZEROP K)) (p (SUB1 K) V L N)) (p K V L N))). Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP 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 leads to the following three new formulas: Case 3. (IMPLIES (AND (ZEROP K) (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG 0 K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG 0 K L)))). This simplifies, unfolding the definition of ZEROP, to: T. Case 2. (IMPLIES (AND (NOT (ZEROP K)) (EQUAL (SUB1 K) 0) (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG 0 K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG 0 K L)))). This simplifies, applying GETNTH-PUTNTH-CASESPLIT, GETSEG-OF-LENGTH-ZERO, GETSEG-AFTER-PUTNTH, and OPEN-PUTNTH-CASESPLIT, and opening up the definitions of ZEROP, GETSEG, EQUAL, LESSP, NUMBERP, and ADD1, to: T. Case 1. (IMPLIES (AND (NOT (ZEROP K)) (EQUAL (GETSEG 0 (SUB1 K) (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG 0 (SUB1 K) L))) (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (NOT (EQUAL (LENGTH L) 0))) (EQUAL (GETSEG 0 K (PUTNTH V 0 L)) (PUTNTH V 0 (GETSEG 0 K L)))), which simplifies, rewriting with the lemmas GETNTH-PUTNTH-CASESPLIT, GETSEG-AFTER-PUTNTH, and OPEN-PUTNTH-CASESPLIT, and expanding the definitions of ZEROP, GETSEG, EQUAL, LESSP, NUMBERP, and ADD1, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.1 ] GETSEG-PUTNTH-COINCIDENCE (DISABLE GETSEG-PUTNTH-COINCIDENCE) [ 0.0 0.0 0.0 ] GETSEG-PUTNTH-COINCIDENCE-OFF (DEFN INTEGER-INDUCTION-INSTANCE (N K) (IF (ZEROP K) '0 (INTEGER-INDUCTION-INSTANCE (ADD1 N) (SUB1 K))) NIL) Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT K) decreases according to the well-founded relation LESSP in each recursive call. Hence, INTEGER-INDUCTION-INSTANCE is accepted under the principle of definition. Observe that: (NUMBERP (INTEGER-INDUCTION-INSTANCE N K)) is a theorem. [ 0.0 0.0 0.0 ] INTEGER-INDUCTION-INSTANCE (PROVE-LEMMA GETSEG-GETSEG (REWRITE) (IMPLIES (IF (LESSP K (PLUS I J)) '*1*FALSE '*1*TRUE) (EQUAL (GETSEG I J (GETSEG N K L)) (GETSEG (PLUS N I) J L))) ((ENABLE GETSEG GETNTH-GETSEG PLUS-ADD1 PLUS-RIGHT-ID2 PLUS-0 GETNTH-WITH-NON-NUMBER-INDEX GETSEG-WITH-NON-NUMBER-INDEX) (INDUCT (INTEGER-INDUCTION-INSTANCE I J)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) 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 J) (NOT (LESSP K (PLUS I J)))) (EQUAL (GETSEG I J (GETSEG N K L)) (GETSEG (PLUS N I) J L))). This simplifies, rewriting with PLUS-0, GETSEG-WITH-NON-NUMBER-INDEX, and PLUS-RIGHT-ID2, and expanding the functions ZEROP, EQUAL, and GETSEG, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (IMPLIES (IF (LESSP K (PLUS (ADD1 I) (SUB1 J))) F T) (EQUAL (GETSEG (ADD1 I) (SUB1 J) (GETSEG N K L)) (GETSEG (PLUS N (ADD1 I)) (SUB1 J) L))) (NOT (LESSP K (PLUS I J)))) (EQUAL (GETSEG I J (GETSEG N K L)) (GETSEG (PLUS N I) J L))), which simplifies, using linear arithmetic, applying SUB1-ADD1, PLUS-ADD1, GETSEG-WITH-NON-NUMBER-INDEX, PLUS-RIGHT-ID2, and GETNTH-GETSEG, and expanding PLUS, LESSP, IMPLIES, EQUAL, and GETSEG, to the following eight new conjectures: Case 1.8. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (EQUAL K 0) (EQUAL (PLUS I J) 0)) (EQUAL (GETSEG I J NIL) (GETSEG (PLUS N I) J L))). However this again simplifies, using linear arithmetic, to: T. Case 1.7. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (NOT (NUMBERP K)) (EQUAL (PLUS I J) 0)) (EQUAL (GETSEG I J NIL) (GETSEG (PLUS N I) J L))), which again simplifies, using linear arithmetic, to: T. Case 1.6. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (NOT (NUMBERP I)) (LESSP (SUB1 K) (PLUS 0 (SUB1 J))) (NOT (LESSP K J)) (NOT (NUMBERP N))) (EQUAL (GETSEG 0 J (GETSEG N K L)) (GETSEG 0 J L))), which again simplifies, using linear arithmetic, to: T. Case 1.5. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (NOT (NUMBERP I)) (LESSP (SUB1 K) (PLUS 0 (SUB1 J))) (NOT (LESSP K J)) (NUMBERP N)) (EQUAL (GETSEG 0 J (GETSEG N K L)) (GETSEG N J L))), which again simplifies, using linear arithmetic, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (NUMBERP I) (LESSP (SUB1 K) (PLUS I (SUB1 J))) (NOT (LESSP K (PLUS I J)))) (EQUAL (CONS (GETNTH (PLUS N I) L) (GETSEG (ADD1 I) (SUB1 J) (GETSEG N K L))) (GETSEG (PLUS N I) J L))), which again simplifies, using linear arithmetic, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (NOT (NUMBERP I)) (EQUAL (GETSEG (ADD1 I) (SUB1 J) (GETSEG N K L)) (GETSEG (ADD1 N) (SUB1 J) L)) (NOT (LESSP K J)) (NOT (NUMBERP N))) (EQUAL (GETSEG 0 J (GETSEG N K L)) (GETSEG 0 J L))), which again simplifies, rewriting with the lemmas SUB1-TYPE-RESTRICTION and GETSEG-WITH-NON-NUMBER-INDEX, to: (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (NOT (NUMBERP I)) (EQUAL (GETSEG 1 (SUB1 J) (GETSEG 0 K L)) (GETSEG 1 (SUB1 J) L)) (NOT (LESSP K J)) (NOT (NUMBERP N))) (EQUAL (GETSEG 0 J (GETSEG 0 K L)) (GETSEG 0 J L))). However this again simplifies, using linear arithmetic, rewriting with GETNTH-GETSEG, and unfolding the definitions of ADD1, PLUS, and GETSEG, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (NOT (NUMBERP I)) (EQUAL (GETSEG (ADD1 I) (SUB1 J) (GETSEG N K L)) (GETSEG (ADD1 N) (SUB1 J) L)) (NOT (LESSP K J)) (NUMBERP N)) (EQUAL (GETSEG 0 J (GETSEG N K L)) (GETSEG N J L))). This again simplifies, using linear arithmetic, rewriting with SUB1-TYPE-RESTRICTION, GETNTH-GETSEG, and PLUS-0, and opening up ADD1 and GETSEG, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL J 0)) (NUMBERP J) (NUMBERP I) (EQUAL (GETSEG (ADD1 I) (SUB1 J) (GETSEG N K L)) (GETSEG (ADD1 (PLUS N I)) (SUB1 J) L)) (NOT (LESSP K (PLUS I J)))) (EQUAL (GETSEG I J (GETSEG N K L)) (GETSEG (PLUS N I) J L))). However this again simplifies, using linear arithmetic, rewriting with GETNTH-GETSEG, and opening up GETSEG, to: T. Q.E.D. [ 0.0 0.1 0.0 ] GETSEG-GETSEG (DISABLE GETSEG-GETSEG) [ 0.0 0.0 0.0 ] GETSEG-GETSEG-OFF (PROVE-LEMMA GETSEG-AFTER-PUTSEG (REWRITE) (IMPLIES (IF (LESSP I (PLUS N (LENGTH S))) '*1*FALSE '*1*TRUE) (EQUAL (GETSEG I K (PUTSEG S N L)) (GETSEG I K L))) ((ENABLE GETSEG PUTSEG LENGTH PLUS-ADD1 GETNTH-AFTER-PUTSEG) (INDUCT (INTEGER-INDUCTION-INSTANCE I K)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to two new conjectures: Case 2. (IMPLIES (AND (ZEROP K) (NOT (LESSP I (PLUS N (LENGTH S))))) (EQUAL (GETSEG I K (PUTSEG S N L)) (GETSEG I K L))), which simplifies, opening up ZEROP, EQUAL, and GETSEG, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (IMPLIES (IF (LESSP (ADD1 I) (PLUS N (LENGTH S))) F T) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTSEG S N L)) (GETSEG (ADD1 I) (SUB1 K) L))) (NOT (LESSP I (PLUS N (LENGTH S))))) (EQUAL (GETSEG I K (PUTSEG S N L)) (GETSEG I K L))), which simplifies, applying SUB1-ADD1, GETNTH-AFTER-PUTSEG, CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding the definitions of LESSP, IMPLIES, and GETSEG, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (EQUAL (PLUS N (LENGTH S)) 0)) (NUMBERP I) (LESSP I (SUB1 (PLUS N (LENGTH S)))) (NOT (LESSP I (PLUS N (LENGTH S))))) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTSEG S N L)) (GETSEG (ADD1 I) (SUB1 K) L))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETSEG-AFTER-PUTSEG (DISABLE GETSEG-AFTER-PUTSEG) [ 0.0 0.0 0.0 ] GETSEG-AFTER-PUTSEG-OFF (PROVE-LEMMA GETSEG-BEFORE-PUTSEG (REWRITE) (IMPLIES (IF (LESSP N (PLUS I K)) '*1*FALSE '*1*TRUE) (EQUAL (GETSEG I K (PUTSEG S N L)) (GETSEG I K L))) ((ENABLE GETSEG PUTSEG PLUS-ADD1 GETNTH-BEFORE-PUTSEG) (INDUCT (INTEGER-INDUCTION-INSTANCE I K)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to two new goals: Case 2. (IMPLIES (AND (ZEROP K) (NOT (LESSP N (PLUS I K)))) (EQUAL (GETSEG I K (PUTSEG S N L)) (GETSEG I K L))), which simplifies, expanding ZEROP, EQUAL, and GETSEG, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (IMPLIES (IF (LESSP N (PLUS (ADD1 I) (SUB1 K))) F T) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTSEG S N L)) (GETSEG (ADD1 I) (SUB1 K) L))) (NOT (LESSP N (PLUS I K)))) (EQUAL (GETSEG I K (PUTSEG S N L)) (GETSEG I K L))), which simplifies, using linear arithmetic, applying SUB1-ADD1, CAR-CONS, CONS-EQUAL, GETNTH-BEFORE-PUTSEG, and CDR-CONS, and expanding PLUS, LESSP, IMPLIES, EQUAL, and GETSEG, to the following five new conjectures: Case 1.5. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL N 0) (EQUAL (PLUS I K) 0)) (EQUAL (GETSEG I K (PUTSEG S 0 L)) (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) L)))). However this again simplifies, using linear arithmetic, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (EQUAL (PLUS I K) 0)) (EQUAL (GETNTH I (PUTSEG S N L)) (GETNTH I L))), which again simplifies, using linear arithmetic, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (EQUAL (PLUS I K) 0)) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTSEG S N L)) (GETSEG (ADD1 I) (SUB1 K) L))), which again simplifies, using linear arithmetic, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (LESSP (SUB1 N) (PLUS 0 (SUB1 K))) (NOT (LESSP N K))) (EQUAL (GETSEG I K (PUTSEG S N L)) (GETSEG I K L))), which again simplifies, using linear arithmetic, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (LESSP (SUB1 N) (PLUS I (SUB1 K))) (NOT (LESSP N (PLUS I K)))) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTSEG S N L)) (GETSEG (ADD1 I) (SUB1 K) L))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] GETSEG-BEFORE-PUTSEG (DISABLE GETSEG-BEFORE-PUTSEG) [ 0.0 0.0 0.0 ] GETSEG-BEFORE-PUTSEG-OFF (PROVE-LEMMA GETSEG-WITHIN-PUTSEG (REWRITE) (IMPLIES (AND (IF (LESSP I N) '*1*FALSE '*1*TRUE) (AND (IF (LESSP (LENGTH L) (PLUS N (LENGTH S))) '*1*FALSE '*1*TRUE) (IF (LESSP (PLUS N (LENGTH S)) (PLUS I K)) '*1*FALSE '*1*TRUE))) (EQUAL (GETSEG I K (PUTSEG S N L)) (GETSEG (DIFFERENCE I N) K S))) ((ENABLE GETSEG PUTSEG LENGTH PLUS-ADD1 GETNTH-PUTSEG-COINCIDENCE DIFFERENCE-SUB1-ARG1 DIFFERENCE-SUB1-ARG2) (INDUCT (INTEGER-INDUCTION-INSTANCE I K)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to the following two new conjectures: Case 2. (IMPLIES (AND (ZEROP K) (NOT (LESSP I N)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NOT (LESSP (PLUS N (LENGTH S)) (PLUS I K)))) (EQUAL (GETSEG I K (PUTSEG S N L)) (GETSEG (DIFFERENCE I N) K S))). This simplifies, unfolding the definitions of ZEROP, EQUAL, and GETSEG, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (IMPLIES (AND (IF (LESSP (ADD1 I) N) F T) (IF (LESSP (LENGTH L) (PLUS N (LENGTH S))) F T) (IF (LESSP (PLUS N (LENGTH S)) (PLUS (ADD1 I) (SUB1 K))) F T)) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTSEG S N L)) (GETSEG (DIFFERENCE (ADD1 I) N) (SUB1 K) S))) (NOT (LESSP I N)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NOT (LESSP (PLUS N (LENGTH S)) (PLUS I K)))) (EQUAL (GETSEG I K (PUTSEG S N L)) (GETSEG (DIFFERENCE I N) K S))). This simplifies, using linear arithmetic, applying SUB1-ADD1 and GETNTH-PUTSEG-COINCIDENCE, and unfolding the definitions of LESSP, PLUS, AND, DIFFERENCE, IMPLIES, GETSEG, and EQUAL, to 12 new formulas: Case 1.12. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (EQUAL N 0)) (NUMBERP N) (NUMBERP I) (LESSP I (SUB1 N)) (NOT (LESSP I N)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NOT (LESSP (PLUS N (LENGTH S)) (PLUS I K)))) (EQUAL (CONS (GETNTH (DIFFERENCE I N) S) (GETSEG (ADD1 I) (SUB1 K) (PUTSEG S N L))) (GETSEG (DIFFERENCE I N) K S))), which again simplifies, using linear arithmetic, to: T. Case 1.11. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (PLUS N (LENGTH S)) 0) (NOT (LESSP I N)) (EQUAL (PLUS I K) 0)) (EQUAL (CONS (GETNTH I (PUTSEG S N L)) (GETSEG (ADD1 I) (SUB1 K) (PUTSEG S N L))) (GETSEG (DIFFERENCE I N) K S))), which again simplifies, using linear arithmetic, to: T. Case 1.10. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (LESSP (SUB1 (PLUS N (LENGTH S))) (PLUS 0 (SUB1 K))) (EQUAL N 0) (NOT (LESSP (LENGTH L) (LENGTH S))) (NOT (LESSP (LENGTH S) K))) (EQUAL (GETSEG I K (PUTSEG S 0 L)) (GETSEG 0 K S))), which again simplifies, using linear arithmetic, to: T. Case 1.9. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP I)) (LESSP (SUB1 (PLUS N (LENGTH S))) (PLUS 0 (SUB1 K))) (NOT (NUMBERP N)) (NOT (LESSP (LENGTH L) (LENGTH S))) (NOT (LESSP (LENGTH S) K))) (EQUAL (GETSEG I K (PUTSEG S N L)) (GETSEG 0 K S))), which again simplifies, using linear arithmetic, to: T. Case 1.8. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NUMBERP I) (LESSP (SUB1 (PLUS N (LENGTH S))) (PLUS I (SUB1 K))) (NOT (LESSP I N)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NOT (LESSP (PLUS N (LENGTH S)) (PLUS I K)))) (EQUAL (CONS (GETNTH (DIFFERENCE I N) S) (GETSEG (ADD1 I) (SUB1 K) (PUTSEG S N L))) (GETSEG (DIFFERENCE I N) K S))), which again simplifies, using linear arithmetic, to: T. Case 1.7. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (EQUAL N 0)) (NUMBERP N) (NUMBERP I) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTSEG S N L)) (GETSEG (DIFFERENCE I (SUB1 N)) (SUB1 K) S)) (NOT (LESSP I N)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NOT (LESSP (PLUS N (LENGTH S)) (PLUS I K)))) (EQUAL (GETSEG I K (PUTSEG S N L)) (GETSEG (DIFFERENCE I N) K S))), which again simplifies, rewriting with DIFFERENCE-SUB1-ARG2, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (EQUAL N 0)) (NUMBERP N) (NUMBERP I) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTSEG S N L)) (GETSEG (ADD1 (DIFFERENCE I N)) (SUB1 K) S)) (NOT (LESSP I N)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NOT (LESSP (PLUS N (LENGTH S)) (PLUS I K)))) (EQUAL (GETSEG I K (PUTSEG S N L)) (GETSEG (DIFFERENCE I N) K S))), which again simplifies, using linear arithmetic, applying the lemma GETNTH-PUTSEG-COINCIDENCE, and expanding the definition of GETSEG, to: T. Case 1.6. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL N 0) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTSEG S N L)) (GETSEG (ADD1 I) (SUB1 K) S)) (NOT (LESSP (LENGTH L) (LENGTH S))) (NOT (LESSP (LENGTH S) (PLUS I K))) (NOT (EQUAL I 0)) (NUMBERP I)) (EQUAL (GETSEG I K (PUTSEG S 0 L)) (GETSEG I K S))), which again simplifies, using linear arithmetic, rewriting with GETNTH-PUTSEG-COINCIDENCE, and opening up the definitions of EQUAL, DIFFERENCE, and GETSEG, to: T. Case 1.5. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL N 0) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTSEG S N L)) (GETSEG (ADD1 I) (SUB1 K) S)) (NOT (LESSP (LENGTH L) (LENGTH S))) (NOT (LESSP (LENGTH S) (PLUS I K))) (EQUAL I 0)) (EQUAL (GETSEG I K (PUTSEG S 0 L)) (GETSEG 0 K S))). But this again simplifies, opening up the functions EQUAL and PLUS, to the goal: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (GETSEG 1 (SUB1 K) (PUTSEG S 0 L)) (GETSEG 1 (SUB1 K) S)) (NOT (LESSP (LENGTH L) (LENGTH S))) (NOT (LESSP (LENGTH S) K))) (EQUAL (GETSEG 0 K (PUTSEG S 0 L)) (GETSEG 0 K S))). This again simplifies, using linear arithmetic, rewriting with GETNTH-PUTSEG-COINCIDENCE, and unfolding ADD1, LESSP, DIFFERENCE, and GETSEG, to: T. Case 1.4. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL N 0) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTSEG S N L)) (GETSEG (ADD1 I) (SUB1 K) S)) (NOT (LESSP (LENGTH L) (LENGTH S))) (NOT (LESSP (LENGTH S) (PLUS I K))) (NOT (NUMBERP I))) (EQUAL (GETSEG I K (PUTSEG S 0 L)) (GETSEG 0 K S))). This again simplifies, applying SUB1-TYPE-RESTRICTION, and expanding the definition of PLUS, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (EQUAL (GETSEG 1 (SUB1 K) (PUTSEG S 0 L)) (GETSEG 1 (SUB1 K) S)) (NOT (LESSP (LENGTH L) (LENGTH S))) (NOT (LESSP (LENGTH S) K)) (NOT (NUMBERP I))) (EQUAL (GETSEG I K (PUTSEG S 0 L)) (GETSEG 0 K S))), which again simplifies, using linear arithmetic, appealing to the lemmas SUB1-TYPE-RESTRICTION and GETNTH-PUTSEG-COINCIDENCE, and unfolding the definitions of DIFFERENCE, GETSEG, and ADD1, to: T. Case 1.3. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTSEG S N L)) (GETSEG (ADD1 I) (SUB1 K) S)) (NOT (LESSP (LENGTH L) (LENGTH S))) (NOT (LESSP (LENGTH S) (PLUS I K))) (NOT (EQUAL I 0)) (NUMBERP I)) (EQUAL (CONS (GETNTH I (PUTSEG S N L)) (GETSEG (ADD1 I) (SUB1 K) S)) (GETSEG I K S))), which again simplifies, using linear arithmetic, rewriting with the lemma GETNTH-PUTSEG-COINCIDENCE, and unfolding the definitions of DIFFERENCE and GETSEG, to: T. Case 1.2. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTSEG S N L)) (GETSEG (ADD1 I) (SUB1 K) S)) (NOT (LESSP (LENGTH L) (LENGTH S))) (NOT (LESSP (LENGTH S) (PLUS I K))) (EQUAL I 0)) (EQUAL (CONS (GETNTH I (PUTSEG S N L)) (GETSEG (ADD1 I) (SUB1 K) S)) (GETSEG 0 K S))), which again simplifies, using linear arithmetic, applying GETNTH-PUTSEG-COINCIDENCE, and unfolding the definitions of EQUAL, PLUS, and DIFFERENCE, to the new conjecture: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (EQUAL (GETSEG 1 (SUB1 K) (PUTSEG S N L)) (GETSEG 1 (SUB1 K) S)) (NOT (LESSP (LENGTH L) (LENGTH S))) (NOT (LESSP (LENGTH S) K))) (EQUAL (CONS (GETNTH 0 S) (GETSEG 1 (SUB1 K) S)) (GETSEG 0 K S))), which again simplifies, expanding ADD1 and GETSEG, to: T. Case 1.1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTSEG S N L)) (GETSEG (ADD1 I) (SUB1 K) S)) (NOT (LESSP (LENGTH L) (LENGTH S))) (NOT (LESSP (LENGTH S) (PLUS I K))) (NOT (NUMBERP I))) (EQUAL (CONS (GETNTH I (PUTSEG S N L)) (GETSEG (ADD1 I) (SUB1 K) S)) (GETSEG 0 K S))), which again simplifies, using linear arithmetic, appealing to the lemmas SUB1-TYPE-RESTRICTION and GETNTH-PUTSEG-COINCIDENCE, and opening up PLUS and DIFFERENCE, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (NUMBERP N)) (EQUAL (GETSEG 1 (SUB1 K) (PUTSEG S N L)) (GETSEG 1 (SUB1 K) S)) (NOT (LESSP (LENGTH L) (LENGTH S))) (NOT (LESSP (LENGTH S) K)) (NOT (NUMBERP I))) (EQUAL (CONS (GETNTH 0 S) (GETSEG 1 (SUB1 K) S)) (GETSEG 0 K S))). But this again simplifies, opening up ADD1 and GETSEG, to: T. Q.E.D. [ 0.0 0.2 0.0 ] GETSEG-WITHIN-PUTSEG (DISABLE GETSEG-WITHIN-PUTSEG) [ 0.0 0.0 0.0 ] GETSEG-WITHIN-PUTSEG-OFF (DEFN GETSEG-PUTSEG-INDUCTION (I K S N) (IF (ZEROP K) '0 (IF (LISTP S) (GETSEG-PUTSEG-INDUCTION (ADD1 I) (SUB1 K) (CDR S) (ADD1 N)) '0)) NIL) Linear arithmetic, the lemma COUNT-NUMBERP, and the definition of ZEROP establish that the measure (COUNT K) decreases according to the well-founded relation LESSP in each recursive call. Hence, GETSEG-PUTSEG-INDUCTION is accepted under the principle of definition. The definition of GETSEG-PUTSEG-INDUCTION can be justified in another way. Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT S) decreases according to the well-founded relation LESSP in each recursive call. Observe that (NUMBERP (GETSEG-PUTSEG-INDUCTION I K S N)) is a theorem. [ 0.0 0.0 0.0 ] GETSEG-PUTSEG-INDUCTION (PROVE-LEMMA PUTSEG-HAS-NO-EFFECT (REWRITE) (IMPLIES (NOT (LESSP N (LENGTH L))) (EQUAL (PUTSEG S N L) L)) ((ENABLE PUTSEG LENGTH PUTNTH-HAS-NO-EFFECT) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) Give the conjecture the name *1. We will appeal to induction. There are three plausible inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP S) (p (CDR S) (ADD1 N) L)) (p S N L)) (IMPLIES (NOT (LISTP S)) (p S N L))). Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT S) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for N. The above induction scheme produces the following three new formulas: Case 3. (IMPLIES (AND (LISTP S) (LESSP (ADD1 N) (LENGTH L)) (NOT (LESSP N (LENGTH L)))) (EQUAL (PUTSEG S N L) L)). This simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (LISTP S) (EQUAL (PUTSEG (CDR S) (ADD1 N) L) L) (NOT (LESSP N (LENGTH L)))) (EQUAL (PUTSEG S N L) L)). This simplifies, rewriting with PUTNTH-HAS-NO-EFFECT, and unfolding the function PUTSEG, to: T. Case 1. (IMPLIES (AND (NOT (LISTP S)) (NOT (LESSP N (LENGTH L)))) (EQUAL (PUTSEG S N L) L)), which simplifies, expanding the function PUTSEG, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PUTSEG-HAS-NO-EFFECT (DISABLE PUTSEG-HAS-NO-EFFECT) [ 0.0 0.0 0.0 ] PUTSEG-HAS-NO-EFFECT-OFF (PROVE-LEMMA PUTSEG-CONS2 (REWRITE) (IMPLIES (NOT (ZEROP N)) (EQUAL (PUTSEG S N (CONS A B)) (CONS A (PUTSEG S (SUB1 N) B)))) ((ENABLE PUTSEG PUTNTH-CONS2) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, NOT, and IMPLIES, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N)) (EQUAL (PUTSEG S N (CONS A B)) (CONS A (PUTSEG S (SUB1 N) B)))). Appealing to the lemma SUB1-ELIM, we now replace N by (ADD1 X) to eliminate (SUB1 N). We use the type restriction lemma noted when SUB1 was introduced to constrain the new variable. The result is the goal: (IMPLIES (AND (NUMBERP X) (NOT (EQUAL (ADD1 X) 0))) (EQUAL (PUTSEG S (ADD1 X) (CONS A B)) (CONS A (PUTSEG S X B)))). This simplifies, applying the lemma CAR-CONS, to: (IMPLIES (NUMBERP X) (EQUAL (PUTSEG S (ADD1 X) (CONS A B)) (CONS A (PUTSEG S X B)))), 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 (NOT (ZEROP N)) (EQUAL (PUTSEG S N (CONS A B)) (CONS A (PUTSEG S (SUB1 N) B)))). We gave this the name *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 (AND (LISTP S) (p (CDR S) (ADD1 N) A B)) (p S N A B)) (IMPLIES (NOT (LISTP S)) (p S N A B))). Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT S) decreases according to the well-founded relation LESSP in each induction step of the scheme. Note, however, the inductive instance chosen for N. The above induction scheme produces the following three new conjectures: Case 3. (IMPLIES (AND (LISTP S) (ZEROP (ADD1 N)) (NOT (ZEROP N))) (EQUAL (PUTSEG S N (CONS A B)) (CONS A (PUTSEG S (SUB1 N) B)))). This simplifies, expanding the function ZEROP, to: T. Case 2. (IMPLIES (AND (LISTP S) (EQUAL (PUTSEG (CDR S) (ADD1 N) (CONS A B)) (CONS A (PUTSEG (CDR S) (SUB1 (ADD1 N)) B))) (NOT (ZEROP N))) (EQUAL (PUTSEG S N (CONS A B)) (CONS A (PUTSEG S (SUB1 N) B)))). This simplifies, applying CAR-CONS and ADD1-SUB1, and opening up ZEROP and PUTSEG, to: (IMPLIES (AND (LISTP S) (EQUAL (PUTSEG (CDR S) (ADD1 N) (CONS A B)) (CONS A (PUTSEG (CDR S) (SUB1 (ADD1 N)) B))) (NOT (EQUAL N 0)) (NUMBERP N)) (EQUAL (PUTNTH (CAR S) N (PUTSEG (CDR S) (ADD1 N) (CONS A B))) (CONS A (PUTNTH (CAR S) (SUB1 N) (PUTSEG (CDR S) N B))))). However this further simplifies, applying SUB1-ADD1, CAR-CONS, and PUTNTH-CONS2, to: T. Case 1. (IMPLIES (AND (NOT (LISTP S)) (NOT (ZEROP N))) (EQUAL (PUTSEG S N (CONS A B)) (CONS A (PUTSEG S (SUB1 N) B)))). This simplifies, expanding ZEROP and PUTSEG, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] PUTSEG-CONS2 (DISABLE PUTSEG-CONS2) [ 0.0 0.0 0.0 ] PUTSEG-CONS2-OFF (PROVE-LEMMA GETSEG-AROUND-PUTSEG-PROOF (REWRITE) (IMPLIES (AND (NUMBERP I) (AND (NUMBERP N) (AND (IF (LESSP N I) '*1*FALSE '*1*TRUE) (AND (IF (LESSP (LENGTH L) (PLUS N (LENGTH S))) '*1*FALSE '*1*TRUE) (IF (LESSP (PLUS I K) (PLUS N (LENGTH S))) '*1*FALSE '*1*TRUE))))) (EQUAL (GETSEG I K (PUTSEG S N L)) (PUTSEG S (DIFFERENCE N I) (GETSEG I K L)))) ((ENABLE GETSEG PUTSEG LENGTH GETNTH-BEFORE-PUTSEG GETSEG-OF-LENGTH-ZERO GETSEG-PUTNTH-COINCIDENCE LENGTH-PUTSEG PLUS-ADD1 PUTSEG-CONS2 PUTSEG-HAS-NO-EFFECT) (INDUCT (GETSEG-PUTSEG-INDUCTION I K S N)) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This conjecture can be simplified, using the abbreviations ZEROP, IMPLIES, NOT, OR, and AND, to three new formulas: Case 3. (IMPLIES (AND (ZEROP K) (NUMBERP I) (NUMBERP N) (NOT (LESSP N I)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NOT (LESSP (PLUS I K) (PLUS N (LENGTH S))))) (EQUAL (GETSEG I K (PUTSEG S N L)) (PUTSEG S (DIFFERENCE N I) (GETSEG I K L)))), which simplifies, using linear arithmetic, rewriting with GETSEG-OF-LENGTH-ZERO and PUTSEG-HAS-NO-EFFECT, and unfolding the functions ZEROP, LENGTH, LISTP, and EQUAL, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP S) (IMPLIES (AND (NUMBERP (ADD1 I)) (NUMBERP (ADD1 N)) (IF (LESSP (ADD1 N) (ADD1 I)) F T) (IF (LESSP (LENGTH L) (PLUS (ADD1 N) (LENGTH (CDR S)))) F T) (IF (LESSP (PLUS (ADD1 I) (SUB1 K)) (PLUS (ADD1 N) (LENGTH (CDR S)))) F T)) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (CDR S) (DIFFERENCE (ADD1 N) (ADD1 I)) (GETSEG (ADD1 I) (SUB1 K) L)))) (NUMBERP I) (NUMBERP N) (NOT (LESSP N I)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NOT (LESSP (PLUS I K) (PLUS N (LENGTH S))))) (EQUAL (GETSEG I K (PUTSEG S N L)) (PUTSEG S (DIFFERENCE N I) (GETSEG I K L)))). This simplifies, rewriting with SUB1-ADD1 and PLUS-ADD1, and expanding LESSP, PLUS, AND, DIFFERENCE, IMPLIES, LENGTH, EQUAL, PUTSEG, and GETSEG, to two new formulas: Case 2.2. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP S) (LESSP (PLUS I (SUB1 K)) (PLUS N (LENGTH (CDR S)))) (NUMBERP I) (NUMBERP N) (NOT (LESSP N I)) (NOT (EQUAL (LENGTH L) 0)) (NOT (LESSP (SUB1 (LENGTH L)) (PLUS N (LENGTH (CDR S))))) (NOT (EQUAL (PLUS I K) 0)) (NOT (LESSP (SUB1 (PLUS I K)) (PLUS N (LENGTH (CDR S)))))) (EQUAL (GETSEG I K (PUTNTH (CAR S) N (PUTSEG (CDR S) (ADD1 N) L))) (PUTSEG S (DIFFERENCE N I) (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, to: T. Case 2.1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP S) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (CDR S) (DIFFERENCE N I) (GETSEG (ADD1 I) (SUB1 K) L))) (NUMBERP I) (NUMBERP N) (NOT (LESSP N I)) (NOT (EQUAL (LENGTH L) 0)) (NOT (LESSP (SUB1 (LENGTH L)) (PLUS N (LENGTH (CDR S))))) (NOT (EQUAL (PLUS I K) 0)) (NOT (LESSP (SUB1 (PLUS I K)) (PLUS N (LENGTH (CDR S)))))) (EQUAL (GETSEG I K (PUTNTH (CAR S) N (PUTSEG (CDR S) (ADD1 N) L))) (PUTSEG S (DIFFERENCE N I) (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) L))))), which again simplifies, using linear arithmetic, rewriting with LENGTH-PUTSEG, GETNTH-BEFORE-PUTSEG, and GETSEG-PUTNTH-COINCIDENCE, and expanding the function GETSEG, to: (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (LISTP S) (EQUAL (GETSEG (ADD1 I) (SUB1 K) (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (CDR S) (DIFFERENCE N I) (GETSEG (ADD1 I) (SUB1 K) L))) (NUMBERP I) (NUMBERP N) (NOT (LESSP N I)) (NOT (EQUAL (LENGTH L) 0)) (NOT (LESSP (SUB1 (LENGTH L)) (PLUS N (LENGTH (CDR S))))) (NOT (EQUAL (PLUS I K) 0)) (NOT (LESSP (SUB1 (PLUS I K)) (PLUS N (LENGTH (CDR S)))))) (EQUAL (PUTNTH (CAR S) (DIFFERENCE N I) (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) (PUTSEG (CDR S) (ADD1 N) L)))) (PUTSEG S (DIFFERENCE N I) (CONS (GETNTH I L) (GETSEG (ADD1 I) (SUB1 K) L))))). Applying the lemma SUB1-ELIM, replace K by (ADD1 X) to eliminate (SUB1 K). We employ the type restriction lemma noted when SUB1 was introduced to restrict the new variable. This produces: (IMPLIES (AND (NUMBERP X) (NOT (EQUAL (ADD1 X) 0)) (LISTP S) (EQUAL (GETSEG (ADD1 I) X (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (CDR S) (DIFFERENCE N I) (GETSEG (ADD1 I) X L))) (NUMBERP I) (NUMBERP N) (NOT (LESSP N I)) (NOT (EQUAL (LENGTH L) 0)) (NOT (LESSP (SUB1 (LENGTH L)) (PLUS N (LENGTH (CDR S))))) (NOT (EQUAL (PLUS I (ADD1 X)) 0)) (NOT (LESSP (SUB1 (PLUS I (ADD1 X))) (PLUS N (LENGTH (CDR S)))))) (EQUAL (PUTNTH (CAR S) (DIFFERENCE N I) (CONS (GETNTH I L) (GETSEG (ADD1 I) X (PUTSEG (CDR S) (ADD1 N) L)))) (PUTSEG S (DIFFERENCE N I) (CONS (GETNTH I L) (GETSEG (ADD1 I) X L))))), which further simplifies, rewriting with PLUS-ADD1 and SUB1-ADD1, to: (IMPLIES (AND (NUMBERP X) (LISTP S) (EQUAL (GETSEG (ADD1 I) X (PUTSEG (CDR S) (ADD1 N) L)) (PUTSEG (CDR S) (DIFFERENCE N I) (GETSEG (ADD1 I) X L))) (NUMBERP I) (NUMBERP N) (NOT (LESSP N I)) (NOT (EQUAL (LENGTH L) 0)) (NOT (LESSP (SUB1 (LENGTH L)) (PLUS N (LENGTH (CDR S))))) (NOT (LESSP (PLUS I X) (PLUS N (LENGTH (CDR S)))))) (EQUAL (PUTNTH (CAR S) (DIFFERENCE N I) (CONS (GETNTH I L) (GETSEG (ADD1 I) X (PUTSEG (CDR S) (ADD1 N) L)))) (PUTSEG S (DIFFERENCE N I) (CONS (GETNTH I L) (GETSEG (ADD1 I) X L))))). Applying the lemma CAR-CDR-ELIM, replace S by (CONS V Z) to eliminate (CDR S) and (CAR S). We would thus like to prove the new goal: (IMPLIES (AND (NUMBERP X) (EQUAL (GETSEG (ADD1 I) X (PUTSEG Z (ADD1 N) L)) (PUTSEG Z (DIFFERENCE N I) (GETSEG (ADD1 I) X L))) (NUMBERP I) (NUMBERP N) (NOT (LESSP N I)) (NOT (EQUAL (LENGTH L) 0)) (NOT (LESSP (SUB1 (LENGTH L)) (PLUS N (LENGTH Z)))) (NOT (LESSP (PLUS I X) (PLUS N (LENGTH Z))))) (EQUAL (PUTNTH V (DIFFERENCE N I) (CONS (GETNTH I L) (GETSEG (ADD1 I) X (PUTSEG Z (ADD1 N) L)))) (PUTSEG (CONS V Z) (DIFFERENCE N I) (CONS (GETNTH I L) (GETSEG (ADD1 I) X L))))), which finally simplifies, rewriting with CDR-CONS, CAR-CONS, SUB1-ADD1, and PUTSEG-CONS2, and opening up the definition of PUTSEG, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL K 0)) (NUMBERP K) (NOT (LISTP S)) (NUMBERP I) (NUMBERP N) (NOT (LESSP N I)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NOT (LESSP (PLUS I K) (PLUS N (LENGTH S))))) (EQUAL (GETSEG I K (PUTSEG S N L)) (PUTSEG S (DIFFERENCE N I) (GETSEG I K L)))). This simplifies, expanding the definitions of LENGTH and PUTSEG, to: T. Q.E.D. [ 0.0 0.3 0.0 ] GETSEG-AROUND-PUTSEG-PROOF (DISABLE GETSEG-AROUND-PUTSEG-PROOF) [ 0.0 0.0 0.0 ] GETSEG-AROUND-PUTSEG-PROOF-OFF (PROVE-LEMMA NUMBERP-CASESPLIT NIL (OR (NUMBERP A) (NOT (NUMBERP A))) ((ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, obviously, to: T. Q.E.D. [ 0.0 0.0 0.0 ] NUMBERP-CASESPLIT (PROVE-LEMMA GETSEG-AROUND-PUTSEG (REWRITE) (IMPLIES (AND (IF (LESSP N I) '*1*FALSE '*1*TRUE) (AND (IF (LESSP (LENGTH L) (PLUS N (LENGTH S))) '*1*FALSE '*1*TRUE) (IF (LESSP (PLUS I K) (PLUS N (LENGTH S))) '*1*FALSE '*1*TRUE))) (EQUAL (GETSEG I K (PUTSEG S N L)) (PUTSEG S (DIFFERENCE N I) (GETSEG I K L)))) ((USE (NUMBERP-CASESPLIT (A I)) (NUMBERP-CASESPLIT (A N)) (GETSEG-AROUND-PUTSEG-PROOF (I I) (N N) (K K) (S S) (L L)) (GETSEG-AROUND-PUTSEG-PROOF (I '0) (N N) (K K) (S S) (L L)) (GETSEG-AROUND-PUTSEG-PROOF (I I) (N '0) (K K) (S S) (L L)) (GETSEG-AROUND-PUTSEG-PROOF (I '0) (N '0) (K K) (S S) (L L))) (ENABLE GETSEG-WITH-NON-NUMBER-INDEX PUTSEG-WITH-NON-NUMBER-INDEX) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This simplifies, applying GETSEG-WITH-NON-NUMBER-INDEX and PUTSEG-WITH-NON-NUMBER-INDEX, and opening up the definitions of NOT, OR, AND, IMPLIES, NUMBERP, EQUAL, LESSP, PLUS, and DIFFERENCE, to the following 29 new formulas: Case 29.(IMPLIES (AND (NOT (NUMBERP I)) (EQUAL N 0) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S 0 (GETSEG 0 K L))) (NOT (NUMBERP K)) (LESSP 0 (LENGTH S)) (NOT (LESSP (LENGTH L) (LENGTH S))) (EQUAL (LENGTH S) 0)) (EQUAL (GETSEG 0 K (PUTSEG S 0 L)) (PUTSEG S 0 (GETSEG 0 K L)))). This again simplifies, trivially, to: T. Case 28.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL N 0)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L))) (LESSP (LENGTH L) (LENGTH S)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NOT (NUMBERP K)) (NOT (LESSP 0 (PLUS N (LENGTH S)))) (NOT (NUMBERP N))) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S 0 (GETSEG 0 K L)))). But this again simplifies, using linear arithmetic, to: T. Case 27.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL N 0)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L))) (LESSP (LENGTH L) (LENGTH S)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NOT (NUMBERP K)) (NOT (LESSP 0 (PLUS N (LENGTH S)))) (NUMBERP N)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L)))), which again simplifies, obviously, to: T. Case 26.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL N 0)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L))) (LESSP (LENGTH L) (LENGTH S)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NUMBERP K) (NOT (LESSP K (PLUS N (LENGTH S)))) (NOT (NUMBERP N))) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S 0 (GETSEG 0 K L)))). This again simplifies, using linear arithmetic, to: T. Case 25.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL N 0)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L))) (LESSP (LENGTH L) (LENGTH S)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NUMBERP K) (NOT (LESSP K (PLUS N (LENGTH S)))) (NUMBERP N)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L)))), which again simplifies, clearly, to: T. Case 24.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL N 0)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L))) (NOT (NUMBERP K)) (LESSP 0 (LENGTH S)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (EQUAL (PLUS N (LENGTH S)) 0) (NOT (NUMBERP N))) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S 0 (GETSEG 0 K L)))). But this again simplifies, using linear arithmetic, to: T. Case 23.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL N 0)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L))) (NOT (NUMBERP K)) (LESSP 0 (LENGTH S)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (EQUAL (PLUS N (LENGTH S)) 0) (NUMBERP N)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L)))), which again simplifies, obviously, to: T. Case 22.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL N 0)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L))) (NUMBERP K) (LESSP K (LENGTH S)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NOT (LESSP K (PLUS N (LENGTH S)))) (NOT (NUMBERP N))) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S 0 (GETSEG 0 K L)))). However this again simplifies, using linear arithmetic, to: T. Case 21.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL N 0)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L))) (NUMBERP K) (LESSP K (LENGTH S)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NOT (LESSP K (PLUS N (LENGTH S)))) (NUMBERP N)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L)))), which again simplifies, obviously, to: T. Case 20.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL N 0)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L))) (EQUAL (GETSEG 0 K (PUTSEG S 0 L)) (PUTSEG S 0 (GETSEG 0 K L))) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NOT (NUMBERP K)) (NOT (LESSP 0 (PLUS N (LENGTH S)))) (NOT (NUMBERP N))) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S 0 (GETSEG 0 K L)))). But this again simplifies, applying PUTSEG-WITH-NON-NUMBER-INDEX, and opening up the functions PLUS, EQUAL, and LESSP, to: T. Case 19.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL N 0)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L))) (EQUAL (GETSEG 0 K (PUTSEG S 0 L)) (PUTSEG S 0 (GETSEG 0 K L))) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NOT (NUMBERP K)) (NOT (LESSP 0 (PLUS N (LENGTH S)))) (NUMBERP N)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L)))). This again simplifies, obviously, to: T. Case 18.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL N 0)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L))) (EQUAL (GETSEG 0 K (PUTSEG S 0 L)) (PUTSEG S 0 (GETSEG 0 K L))) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NUMBERP K) (NOT (LESSP K (PLUS N (LENGTH S)))) (NOT (NUMBERP N))) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S 0 (GETSEG 0 K L)))). However this again simplifies, rewriting with PUTSEG-WITH-NON-NUMBER-INDEX, and unfolding the definition of PLUS, to: T. Case 17.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (EQUAL N 0)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L))) (EQUAL (GETSEG 0 K (PUTSEG S 0 L)) (PUTSEG S 0 (GETSEG 0 K L))) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (NUMBERP K) (NOT (LESSP K (PLUS N (LENGTH S)))) (NUMBERP N)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L)))). This again simplifies, clearly, to: T. Case 16.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (NUMBERP K)) (LESSP 0 (PLUS N (LENGTH S))) (LESSP (LENGTH L) (LENGTH S)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (EQUAL (PLUS N (LENGTH S)) 0) (NOT (EQUAL N 0)) (NUMBERP N)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L)))). But this again simplifies, using linear arithmetic, to: T. Case 15.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (NUMBERP K)) (LESSP 0 (PLUS N (LENGTH S))) (LESSP (LENGTH L) (LENGTH S)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (EQUAL (PLUS N (LENGTH S)) 0) (EQUAL N 0)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S 0 (GETSEG 0 K L)))), which again simplifies, using linear arithmetic, to: T. Case 14.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (NUMBERP K)) (LESSP 0 (PLUS N (LENGTH S))) (LESSP (LENGTH L) (LENGTH S)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (EQUAL (PLUS N (LENGTH S)) 0) (NOT (NUMBERP N))) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S 0 (GETSEG 0 K L)))), which again simplifies, using linear arithmetic, to: T. Case 13.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (NUMBERP K)) (LESSP 0 (PLUS N (LENGTH S))) (NOT (EQUAL (LENGTH S) 0)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (EQUAL (PLUS N (LENGTH S)) 0) (NOT (EQUAL N 0)) (NUMBERP N)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L)))), which again simplifies, using linear arithmetic, to: T. Case 12.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (NUMBERP K)) (LESSP 0 (PLUS N (LENGTH S))) (NOT (EQUAL (LENGTH S) 0)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (EQUAL (PLUS N (LENGTH S)) 0) (EQUAL N 0)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S 0 (GETSEG 0 K L)))), which again simplifies, using linear arithmetic, to: T. Case 11.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (NUMBERP K)) (LESSP 0 (PLUS N (LENGTH S))) (NOT (EQUAL (LENGTH S) 0)) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (EQUAL (PLUS N (LENGTH S)) 0) (NOT (NUMBERP N))) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S 0 (GETSEG 0 K L)))), which again simplifies, using linear arithmetic, to: T. Case 10.(IMPLIES (AND (NOT (NUMBERP I)) (NOT (NUMBERP K)) (LESSP 0 (PLUS N (LENGTH S))) (EQUAL (GETSEG 0 K (PUTSEG S 0 L)) (PUTSEG S 0 (GETSEG 0 K L))) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (EQUAL (PLUS N (LENGTH S)) 0) (NOT (EQUAL N 0)) (NUMBERP N)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S N (GETSEG 0 K L)))), which again simplifies, using linear arithmetic, to: T. Case 9. (IMPLIES (AND (NOT (NUMBERP I)) (NOT (NUMBERP K)) (LESSP 0 (PLUS N (LENGTH S))) (EQUAL (GETSEG 0 K (PUTSEG S 0 L)) (PUTSEG S 0 (GETSEG 0 K L))) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (EQUAL (PLUS N (LENGTH S)) 0) (EQUAL N 0)) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S 0 (GETSEG 0 K L)))), which again simplifies, obviously, to: T. Case 8. (IMPLIES (AND (NOT (NUMBERP I)) (NOT (NUMBERP K)) (LESSP 0 (PLUS N (LENGTH S))) (EQUAL (GETSEG 0 K (PUTSEG S 0 L)) (PUTSEG S 0 (GETSEG 0 K L))) (NOT (LESSP (LENGTH L) (PLUS N (LENGTH S)))) (EQUAL (PLUS N (LENGTH S)) 0) (NOT (NUMBERP N))) (EQUAL (GETSEG 0 K (PUTSEG S N L)) (PUTSEG S 0 (GETSEG 0 K L)))). But this again simplifies, using linear arithmetic, to: T. Case 7. (IMPLIES (AND (NOT (NUMBERP I)) (NOT (NUMBERP N)) (NOT (NUMBERP K)) (LESSP 0 (LENGTH S)) (NOT (LESSP (LENGTH L) (LENGTH S))) (EQUAL (LENGTH S) 0)) (EQUAL (GETSEG 0 K (PUTSEG S 0 L)) (PUTSEG S 0 (GETSEG 0 K L)))), which again simplifies, using linear arithmetic, to: T. Case 6. (IMPLIES (AND (NOT (NUMBERP N)) (EQUAL (GETSEG I K (PUTSEG S 0 L)) (PUTSEG S 0 (GETSEG I K L))) (NOT (NUMBERP K)) (LESSP 0 (LENGTH S)) (EQUAL I 0) (NOT (LESSP (LENGTH L) (LENGTH S))) (EQUAL (LENGTH S) 0)) (EQUAL (GETSEG 0 K (PUTSEG S 0 L)) (PUTSEG S 0 (GETSEG 0 K L)))), which again simplifies, obviously, to: T. Case 5. (IMPLIES (AND (NOT (NUMBERP N)) (EQUAL (GETSEG I K (PUTSEG S 0 L)) (PUTSEG S 0 (GETSEG I K L))) (NOT (NUMBERP K)) (LESSP 0 (LENGTH S)) (NOT (NUMBERP I)) (NOT (LESSP (LENGTH L) (LENGTH S))) (EQUAL (LENGTH S) 0)) (EQUAL (GETSEG 0 K (PUTSEG S 0 L)) (PUTSEG S 0 (GETSEG 0 K L)))). But this again simplifies, using linear arithmetic, to: T. Case 4. (IMPLIES (AND (NOT (NUMBERP N)) (LESSP (PLUS I K) (LENGTH S)) (NOT (NUMBERP K)) (LESSP 0 (LENGTH S)) (EQUAL I 0) (NOT (LESSP (LENGTH L) (LENGTH S))) (EQUAL (LENGTH S) 0)) (EQUAL (GETSEG 0 K (PUTSEG S 0 L)) (PUTSEG S 0 (GETSEG 0 K L)))), which again simplifies, using linear arithmetic, to: T. Case 3. (IMPLIES (AND (NOT (NUMBERP N)) (LESSP (PLUS I K) (LENGTH S)) (NOT (NUMBERP K)) (LESSP 0 (LENGTH S)) (NOT (NUMBERP I)) (NOT (LESSP (LENGTH L) (LENGTH S))) (EQUAL (LENGTH S) 0)) (EQUAL (GETSEG 0 K (PUTSEG S 0 L)) (PUTSEG S 0 (GETSEG 0 K L)))), which again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (NOT (NUMBERP N)) (NOT (EQUAL I 0)) (NOT (NUMBERP K)) (LESSP 0 (LENGTH S)) (NOT (NUMBERP I)) (NOT (LESSP (LENGTH L) (LENGTH S))) (EQUAL (LENGTH S) 0)) (EQUAL (GETSEG 0 K (PUTSEG S 0 L)) (PUTSEG S 0 (GETSEG 0 K L)))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (NUMBERP N)) (NOT (NUMBERP I)) (NOT (NUMBERP K)) (LESSP 0 (LENGTH S)) (NOT (LESSP (LENGTH L) (LENGTH S))) (EQUAL (LENGTH S) 0)) (EQUAL (GETSEG 0 K (PUTSEG S 0 L)) (PUTSEG S 0 (GETSEG 0 K L)))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.1 0.0 ] GETSEG-AROUND-PUTSEG (DISABLE GETSEG-AROUND-PUTSEG) [ 0.0 0.0 0.0 ] GETSEG-AROUND-PUTSEG-OFF (PROVE-LEMMA PUTSEG-NIL-SEGMENT (REWRITE) (EQUAL (PUTSEG 'NIL N L) L) ((ENABLE PUTSEG) (ENABLE-THEORY GROUND-ZERO) (DISABLE-THEORY T))) This formula simplifies, unfolding the definitions of LISTP and PUTSEG, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PUTSEG