(BOOT-STRAP THM) [ 0.1 0.0 0.0 ] GROUND-ZERO (DEFN FUNCTION (FN) (AND (EQUAL FN (LIST 'F (CADR FN) (CADDR FN))) (NUMBERP (CADR FN)) (NUMBERP (CADDR FN)))) Observe that (OR (FALSEP (FUNCTION FN)) (TRUEP (FUNCTION FN))) is a theorem. [ 0.0 0.0 0.0 ] FUNCTION (DEFN VARIABLE (X) (AND (EQUAL X (LIST 'X (CADR X))) (NUMBERP (CADR X)))) From the definition we can conclude that: (OR (FALSEP (VARIABLE X)) (TRUEP (VARIABLE X))) is a theorem. [ 0.0 0.0 0.0 ] VARIABLE (DEFN PREDICATE (P) (OR (AND (EQUAL P (LIST 'P (CADR P) (CADDR P))) (NUMBERP (CADR P)) (NUMBERP (CADDR P))) (EQUAL P 'EQUAL))) From the definition we can conclude that: (OR (FALSEP (PREDICATE P)) (TRUEP (PREDICATE P))) is a theorem. [ 0.0 0.0 0.0 ] PREDICATE (DEFN DEGREE (FN) (IF (EQUAL FN 'EQUAL) 2 (CADDR FN))) [ 0.0 0.0 0.0 ] DEGREE (DEFN INDEX (FN) (CADR FN)) [ 0.0 0.0 0.0 ] INDEX (DEFN FUNC-PRED (X) (OR (FUNCTION X) (PREDICATE X))) Observe that (OR (FALSEP (FUNC-PRED X)) (TRUEP (FUNC-PRED X))) is a theorem. [ 0.0 0.0 0.0 ] FUNC-PRED (DEFN V (X) (LIST 'X (FIX X))) From the definition we can conclude that (LISTP (V X)) is a theorem. [ 0.0 0.0 0.0 ] V (PROVE-LEMMA NUMBERP-FIX (REWRITE) (NUMBERP (FIX X))) This simplifies, trivially, to: T. Q.E.D. [ 0.0 0.0 0.0 ] NUMBERP-FIX (PROVE-LEMMA VARIABLE-V (REWRITE) (VARIABLE (V X))) WARNING: Note that the rewrite rule VARIABLE-V will be stored so as to apply only to terms with the nonrecursive function symbol VARIABLE. This conjecture can be simplified, using the abbreviation VARIABLE, to two new goals: Case 2. (EQUAL (V X) (LIST 'X (CADR (V X)))), which simplifies, rewriting with CAR-CONS, and opening up the function V, to the following two new conjectures: Case 2.2. (IMPLIES (NOT (NUMBERP X)) (EQUAL '(X 0) (LIST 'X (CADR '(X 0))))). But this again simplifies, expanding the definitions of CDR, CAR, CONS, and EQUAL, to: T. Case 2.1. (IMPLIES (NUMBERP X) (EQUAL (LIST 'X X) (LIST 'X (CADR (LIST 'X X))))), which again simplifies, rewriting with CDR-CONS and CAR-CONS, to: T. Case 1. (NUMBERP (CADR (V X))). This simplifies, expanding the definition of V, to the following two new goals: Case 1.2. (IMPLIES (NOT (NUMBERP X)) (NUMBERP (CADR '(X 0)))). This again simplifies, unfolding the definitions of CDR, CAR, and NUMBERP, to: T. Case 1.1. (IMPLIES (NUMBERP X) (NUMBERP (CADR (LIST 'X X)))), which again simplifies, rewriting with CDR-CONS and CAR-CONS, to: T. Q.E.D. [ 0.0 0.0 0.0 ] VARIABLE-V (DEFN FN (X Y) (LIST 'F (FIX X) (FIX Y))) From the definition we can conclude that (LISTP (FN X Y)) is a theorem. [ 0.0 0.0 0.0 ] FN (DEFN P (X Y) (LIST 'P (FIX X) (FIX Y))) From the definition we can conclude that (LISTP (P X Y)) is a theorem. [ 0.0 0.0 0.0 ] P (PROVE-LEMMA FUNCTION-FN (REWRITE) (FUNCTION (FN X Y))) WARNING: Note that the rewrite rule FUNCTION-FN will be stored so as to apply only to terms with the nonrecursive function symbol FUNCTION. This formula can be simplified, using the abbreviation FUNCTION, to the following three new conjectures: Case 3. (EQUAL (FN X Y) (LIST 'F (CADR (FN X Y)) (CADDR (FN X Y)))). This simplifies, rewriting with CAR-CONS, and expanding the function FN, to four new conjectures: Case 3.4. (IMPLIES (AND (NOT (NUMBERP X)) (NUMBERP Y)) (EQUAL (LIST 'F 0 Y) (LIST 'F (CADR (LIST 'F 0 Y)) (CADDR (LIST 'F 0 Y))))), which again simplifies, rewriting with the lemmas CDR-CONS and CAR-CONS, to: T. Case 3.3. (IMPLIES (AND (NOT (NUMBERP X)) (NOT (NUMBERP Y))) (EQUAL '(F 0 0) (LIST 'F (CADR '(F 0 0)) (CADDR '(F 0 0))))), which again simplifies, expanding CDR, CAR, CONS, and EQUAL, to: T. Case 3.2. (IMPLIES (AND (NUMBERP X) (NUMBERP Y)) (EQUAL (LIST 'F X Y) (LIST 'F (CADR (LIST 'F X Y)) (CADDR (LIST 'F X Y))))), which again simplifies, rewriting with CDR-CONS and CAR-CONS, to: T. Case 3.1. (IMPLIES (AND (NUMBERP X) (NOT (NUMBERP Y))) (EQUAL (CONS 'F (CONS X '(0))) (LIST 'F (CADR (CONS 'F (CONS X '(0)))) (CADDR (CONS 'F (CONS X '(0))))))). But this again simplifies, applying CDR-CONS and CAR-CONS, and unfolding the definitions of CAR and CONS, to: T. Case 2. (NUMBERP (CADR (FN X Y))). This simplifies, opening up FN, to the following four new conjectures: Case 2.4. (IMPLIES (AND (NOT (NUMBERP X)) (NUMBERP Y)) (NUMBERP (CADR (LIST 'F 0 Y)))). However this again simplifies, applying CDR-CONS and CAR-CONS, and unfolding NUMBERP, to: T. Case 2.3. (IMPLIES (AND (NOT (NUMBERP X)) (NOT (NUMBERP Y))) (NUMBERP (CADR '(F 0 0)))). However this again simplifies, expanding the functions CDR, CAR, and NUMBERP, to: T. Case 2.2. (IMPLIES (AND (NUMBERP X) (NUMBERP Y)) (NUMBERP (CADR (LIST 'F X Y)))), which again simplifies, rewriting with CDR-CONS and CAR-CONS, to: T. Case 2.1. (IMPLIES (AND (NUMBERP X) (NOT (NUMBERP Y))) (NUMBERP (CADR (CONS 'F (CONS X '(0)))))). However this again simplifies, rewriting with CDR-CONS and CAR-CONS, to: T. Case 1. (NUMBERP (CADDR (FN X Y))). This simplifies, opening up the function FN, to the following four new goals: Case 1.4. (IMPLIES (AND (NOT (NUMBERP X)) (NUMBERP Y)) (NUMBERP (CADDR (LIST 'F 0 Y)))). However this again simplifies, applying CDR-CONS and CAR-CONS, to: T. Case 1.3. (IMPLIES (AND (NOT (NUMBERP X)) (NOT (NUMBERP Y))) (NUMBERP (CADDR '(F 0 0)))). However this again simplifies, expanding CDR, CAR, and NUMBERP, to: T. Case 1.2. (IMPLIES (AND (NUMBERP X) (NUMBERP Y)) (NUMBERP (CADDR (LIST 'F X Y)))), which again simplifies, rewriting with CDR-CONS and CAR-CONS, to: T. Case 1.1. (IMPLIES (AND (NUMBERP X) (NOT (NUMBERP Y))) (NUMBERP (CADDR (CONS 'F (CONS X '(0)))))). This again simplifies, rewriting with the lemma CDR-CONS, and opening up CAR and NUMBERP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] FUNCTION-FN (PROVE-LEMMA PREDICATE-P (REWRITE) (PREDICATE (P X Y))) WARNING: Note that the rewrite rule PREDICATE-P will be stored so as to apply only to terms with the nonrecursive function symbol PREDICATE. This conjecture simplifies, opening up the definition of P, to the following four new conjectures: Case 4. (IMPLIES (AND (NOT (NUMBERP X)) (NUMBERP Y)) (PREDICATE (LIST 'P 0 Y))). This again simplifies, applying CAR-CONS and CDR-CONS, and expanding NUMBERP and PREDICATE, to: T. Case 3. (IMPLIES (AND (NOT (NUMBERP X)) (NOT (NUMBERP Y))) (PREDICATE '(P 0 0))). But this again simplifies, opening up PREDICATE, to: T. Case 2. (IMPLIES (AND (NUMBERP X) (NUMBERP Y)) (PREDICATE (LIST 'P X Y))), which again simplifies, rewriting with CAR-CONS and CDR-CONS, and expanding PREDICATE, to: T. Case 1. (IMPLIES (AND (NUMBERP X) (NOT (NUMBERP Y))) (PREDICATE (CONS 'P (CONS X '(0))))). But this again simplifies, applying CAR-CONS and CDR-CONS, and unfolding the definitions of NUMBERP, CONS, CAR, and PREDICATE, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PREDICATE-P (DEFN QUANTIFIER (X) (EQUAL X 'FORSOME)) Observe that (OR (FALSEP (QUANTIFIER X)) (TRUEP (QUANTIFIER X))) is a theorem. [ 0.0 0.0 0.0 ] QUANTIFIER (DEFN UNION (X Y) (IF (LISTP X) (IF (MEMBER (CAR X) Y) (UNION (CDR X) Y) (CONS (CAR X) (UNION (CDR X) Y))) Y)) Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT X) decreases according to the well-founded relation LESSP in each recursive call. Hence, UNION is accepted under the definitional principle. Note that (OR (LISTP (UNION X Y)) (EQUAL (UNION X Y) Y)) is a theorem. [ 0.0 0.0 0.0 ] UNION (TOGGLE G0223 VARIABLE T) [ 0.0 0.0 0.0 ] G0223 (TOGGLE G0224 QUANTIFIER T) [ 0.0 0.0 0.0 ] G0224 (PROVE-LEMMA PREDICATE-F-EQUAL (REWRITE) (PREDICATE 'EQUAL)) WARNING: Note that the rewrite rule PREDICATE-F-EQUAL will be stored so as to apply only to terms with the nonrecursive function symbol PREDICATE. This simplifies, opening up the function PREDICATE, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PREDICATE-F-EQUAL (TOGGLE G0225 FUNCTION T) [ 0.0 0.0 0.0 ] G0225 (TOGGLE G0226 PREDICATE T) [ 0.0 0.0 0.0 ] G0226 (DEFN APPEND (X Y) (IF (LISTP X) (CONS (CAR X) (APPEND (CDR X) Y)) Y)) Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT X) decreases according to the well-founded relation LESSP in each recursive call. Hence, APPEND is accepted under the definitional principle. From the definition we can conclude that: (OR (LISTP (APPEND X Y)) (EQUAL (APPEND X Y) Y)) is a theorem. [ 0.0 0.0 0.0 ] APPEND (DEFN DELETE (X Y) (IF (LISTP Y) (IF (EQUAL X (CAR Y)) (DELETE X (CDR Y)) (CONS (CAR Y) (DELETE X (CDR Y)))) Y)) Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT Y) decreases according to the well-founded relation LESSP in each recursive call. Hence, DELETE is accepted under the definitional principle. [ 0.0 0.0 0.0 ] DELETE (PROVE-LEMMA NOT-MEMBER-DELETE (REWRITE) (NOT (MEMBER X (DELETE X Y)))) Name the conjecture *1. Let us appeal to the induction principle. There is only one suggested induction. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP Y) (EQUAL X (CAR Y)) (p X (CDR Y))) (p X Y)) (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (p X (CDR Y))) (p X Y)) (IMPLIES (NOT (LISTP Y)) (p X Y))). Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT Y) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme leads to three new conjectures: Case 3. (IMPLIES (AND (LISTP Y) (EQUAL X (CAR Y)) (NOT (MEMBER X (DELETE X (CDR Y))))) (NOT (MEMBER X (DELETE X Y)))), which simplifies, expanding DELETE, to: T. Case 2. (IMPLIES (AND (LISTP Y) (NOT (EQUAL X (CAR Y))) (NOT (MEMBER X (DELETE X (CDR Y))))) (NOT (MEMBER X (DELETE X Y)))), which simplifies, rewriting with CDR-CONS and CAR-CONS, and expanding the functions DELETE and MEMBER, to: T. Case 1. (IMPLIES (NOT (LISTP Y)) (NOT (MEMBER X (DELETE X Y)))). This simplifies, unfolding DELETE and MEMBER, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] NOT-MEMBER-DELETE (DEFN COLLECT-FREE (EXP FLG) (IF (LISTP EXP) (IF (EQUAL FLG T) (IF (VARIABLE EXP) (CONS EXP NIL) (IF (AND (QUANTIFIER (CAR EXP)) (LISTP (CDR EXP))) (DELETE (CADR EXP) (COLLECT-FREE (CDDR EXP) 'LIST)) (IF (OR (FUNC-PRED (CAR EXP)) (EQUAL (CAR EXP) 'NOT) (EQUAL (CAR EXP) 'OR)) (COLLECT-FREE (CDR EXP) 'LIST) NIL))) (APPEND (COLLECT-FREE (CAR EXP) T) (COLLECT-FREE (CDR EXP) 'LIST))) NIL)) Linear arithmetic and the lemmas CDR-LESSEQP, CDR-LESSP, and CAR-LESSP inform us that the measure (COUNT EXP) decreases according to the well-founded relation LESSP in each recursive call. Hence, COLLECT-FREE is accepted under the principle of definition. [ 0.0 0.0 0.0 ] COLLECT-FREE (DEFN SENTENCE (EXP) (EQUAL (COLLECT-FREE EXP T) NIL)) Observe that (OR (FALSEP (SENTENCE EXP)) (TRUEP (SENTENCE EXP))) is a theorem. [ 0.0 0.0 0.0 ] SENTENCE (DEFN COVERING (EXP VAR FLG) (IF (LISTP EXP) (IF (EQUAL FLG T) (IF (VARIABLE EXP) NIL (IF (AND (QUANTIFIER (CAR EXP)) (LISTP (CDR EXP))) (IF (EQUAL (CADR EXP) VAR) NIL (IF (MEMBER VAR (COLLECT-FREE (CDDR EXP) 'LIST)) (CONS (CADR EXP) (COVERING (CDDR EXP) VAR 'LIST)) NIL)) (IF (OR (FUNC-PRED (CAR EXP)) (EQUAL (CAR EXP) 'NOT) (EQUAL (CAR EXP) 'OR)) (COVERING (CDR EXP) VAR 'LIST) NIL))) (APPEND (COVERING (CAR EXP) VAR T) (COVERING (CDR EXP) VAR 'LIST))) NIL)) Linear arithmetic and the lemmas CDR-LESSEQP, CDR-LESSP, and CAR-LESSP establish that the measure (COUNT EXP) decreases according to the well-founded relation LESSP in each recursive call. Hence, COVERING is accepted under the definitional principle. From the definition we can conclude that: (OR (LITATOM (COVERING EXP VAR FLG)) (LISTP (COVERING EXP VAR FLG))) is a theorem. [ 0.0 0.0 0.0 ] COVERING (DEFN NIL-INTERSECT (X Y) (IF (LISTP X) (AND (NOT (MEMBER (CAR X) Y)) (NIL-INTERSECT (CDR X) Y)) T)) Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each recursive call. Hence, NIL-INTERSECT is accepted under the principle of definition. From the definition we can conclude that: (OR (FALSEP (NIL-INTERSECT X Y)) (TRUEP (NIL-INTERSECT X Y))) is a theorem. [ 0.0 0.0 0.0 ] NIL-INTERSECT (DEFN FREE-FOR (EXP VAR TERM FLG) (NIL-INTERSECT (COVERING EXP VAR FLG) (COLLECT-FREE TERM T))) From the definition we can conclude that: (OR (FALSEP (FREE-FOR EXP VAR TERM FLG)) (TRUEP (FREE-FOR EXP VAR TERM FLG))) is a theorem. [ 0.0 0.0 0.0 ] FREE-FOR (DEFN F-EQUAL (X Y) (LIST 'EQUAL X Y)) Note that (LISTP (F-EQUAL X Y)) is a theorem. [ 0.0 0.0 0.0 ] F-EQUAL (DEFN F-NOT (X) (LIST 'NOT X)) Observe that (LISTP (F-NOT X)) is a theorem. [ 0.0 0.0 0.0 ] F-NOT (DEFN F-OR (X Y) (LIST 'OR X Y)) Note that (LISTP (F-OR X Y)) is a theorem. [ 0.0 0.0 0.0 ] F-OR (DEFN FORSOME (X Y) (LIST 'FORSOME X Y)) Note that (LISTP (FORSOME X Y)) is a theorem. [ 0.0 0.0 0.0 ] FORSOME (DEFN F-AND (X Y) (F-NOT (F-OR (F-NOT X) (F-NOT Y)))) Observe that (LISTP (F-AND X Y)) is a theorem. [ 0.0 0.0 0.0 ] F-AND (DEFN F-IMPLIES (X Y) (F-OR (F-NOT X) Y)) Note that (LISTP (F-IMPLIES X Y)) is a theorem. [ 0.0 0.0 0.0 ] F-IMPLIES (DEFN FORALL (VAR EXP) (F-NOT (FORSOME VAR (F-NOT EXP)))) Note that (LISTP (FORALL VAR EXP)) is a theorem. [ 0.0 0.0 0.0 ] FORALL (DEFN F-IFF (X Y) (F-AND (F-IMPLIES X Y) (F-IMPLIES Y X))) Observe that (LISTP (F-IFF X Y)) is a theorem. [ 0.0 0.0 0.0 ] F-IFF (DEFN VAR-LIST (LIST N) (IF (ZEROP N) (EQUAL LIST NIL) (AND (VARIABLE (CAR LIST)) (VAR-LIST (CDR LIST) (SUB1 N))))) 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, VAR-LIST is accepted under the definitional principle. Observe that: (OR (FALSEP (VAR-LIST LIST N)) (TRUEP (VAR-LIST LIST N))) is a theorem. [ 0.0 0.0 0.0 ] VAR-LIST (DEFN VAR-SET (LIST N) (IF (ZEROP N) (EQUAL LIST NIL) (AND (VARIABLE (CAR LIST)) (NOT (MEMBER (CAR LIST) (CDR LIST))) (VAR-SET (CDR LIST) (SUB1 N))))) 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, VAR-SET is accepted under the principle of definition. Note that: (OR (FALSEP (VAR-SET LIST N)) (TRUEP (VAR-SET LIST N))) is a theorem. [ 0.0 0.0 0.0 ] VAR-SET (DEFN TERMP (EXP FLG COUNT) (IF (EQUAL FLG T) (IF (NLISTP EXP) F (OR (VARIABLE EXP) (AND (FUNCTION (CAR EXP)) (TERMP (CDR EXP) 'LIST (DEGREE (CAR EXP)))))) (IF (OR (NLISTP EXP) (ZEROP COUNT)) (AND (EQUAL EXP NIL) (ZEROP COUNT)) (AND (TERMP (CAR EXP) T 0) (TERMP (CDR EXP) 'LIST (SUB1 COUNT)))))) Linear arithmetic, the lemmas CDR-LESSEQP, CDR-LESSP, CAR-LESSEQP, and CAR-LESSP, and the definitions of NLISTP, OR, and ZEROP can be used to establish that the measure (COUNT EXP) decreases according to the well-founded relation LESSP in each recursive call. Hence, TERMP is accepted under the principle of definition. From the definition we can conclude that: (OR (FALSEP (TERMP EXP FLG COUNT)) (TRUEP (TERMP EXP FLG COUNT))) is a theorem. [ 0.0 0.0 0.0 ] TERMP (DEFN ARG1 (X) (CADR X)) [ 0.0 0.0 0.0 ] ARG1 (DEFN ARG2 (X) (CADDR X)) [ 0.0 0.0 0.0 ] ARG2 (DEFN ATOMP (EXP) (AND (PREDICATE (CAR EXP)) (TERMP (CDR EXP) 'LIST (DEGREE (CAR EXP))))) Note that (OR (FALSEP (ATOMP EXP)) (TRUEP (ATOMP EXP))) is a theorem. [ 0.0 0.0 0.0 ] ATOMP (TOGGLE G0253 ATOMP T) [ 0.0 0.0 0.0 ] G0253 (DEFN FORMULA (EXP FLG COUNT) (IF (EQUAL FLG T) (IF (NLISTP EXP) F (OR (ATOMP EXP) (AND (EQUAL (CAR EXP) 'NOT) (FORMULA (CDR EXP) 'LIST 1)) (AND (EQUAL (CAR EXP) 'OR) (FORMULA (CDR EXP) 'LIST 2)) (AND (EQUAL (CAR EXP) 'FORSOME) (VARIABLE (CADR EXP)) (FORMULA (CDDR EXP) 'LIST 1)))) (IF (OR (NLISTP EXP) (ZEROP COUNT)) (AND (EQUAL EXP NIL) (ZEROP COUNT)) (AND (FORMULA (CAR EXP) T 0) (FORMULA (CDR EXP) 'LIST (SUB1 COUNT)))))) Linear arithmetic, the lemmas CDR-LESSEQP, CDR-LESSP, CAR-LESSEQP, and CAR-LESSP, and the definitions of NLISTP, OR, and ZEROP inform us that the measure (COUNT EXP) decreases according to the well-founded relation LESSP in each recursive call. Hence, FORMULA is accepted under the definitional principle. Note that: (OR (FALSEP (FORMULA EXP FLG COUNT)) (TRUEP (FORMULA EXP FLG COUNT))) is a theorem. [ 0.0 0.0 0.0 ] FORMULA (DEFN SUBST (EXP VAR TERM FLG) (IF (LISTP EXP) (IF (EQUAL FLG T) (IF (VARIABLE EXP) (IF (EQUAL EXP VAR) TERM EXP) (IF (AND (QUANTIFIER (CAR EXP)) (LISTP (CDR EXP))) (IF (EQUAL (CADR EXP) VAR) EXP (CONS (CAR EXP) (CONS (CADR EXP) (SUBST (CDDR EXP) VAR TERM 'LIST)))) (IF (OR (FUNC-PRED (CAR EXP)) (EQUAL (CAR EXP) 'NOT) (EQUAL (CAR EXP) 'OR)) (CONS (CAR EXP) (SUBST (CDR EXP) VAR TERM 'LIST)) EXP))) (CONS (SUBST (CAR EXP) VAR TERM T) (SUBST (CDR EXP) VAR TERM 'LIST))) EXP)) Linear arithmetic and the lemmas CDR-LESSEQP, CDR-LESSP, and CAR-LESSP can be used to show that the measure (COUNT EXP) decreases according to the well-founded relation LESSP in each recursive call. Hence, SUBST is accepted under the principle of definition. From the definition we can conclude that: (OR (LISTP (SUBST EXP VAR TERM FLG)) (EQUAL (SUBST EXP VAR TERM FLG) EXP) (EQUAL (SUBST EXP VAR TERM FLG) TERM)) is a theorem. [ 0.0 0.0 0.0 ] SUBST (DEFN NEG (EXP1 EXP2) (OR (EQUAL EXP1 (F-NOT EXP2)) (EQUAL EXP2 (F-NOT EXP1)))) Note that (OR (FALSEP (NEG EXP1 EXP2)) (TRUEP (NEG EXP1 EXP2))) is a theorem. [ 0.0 0.0 0.0 ] NEG (DEFN CONC (PF FLG) (IF (NLISTP PF) NIL (IF (EQUAL FLG T) (CADDR PF) (CONS (CONC (CAR PF) T) (CONC (CDR PF) 'LIST))))) Linear arithmetic, the lemmas CDR-LESSEQP, CDR-LESSP, CAR-LESSEQP, and CAR-LESSP, and the definition of NLISTP establish that the measure (COUNT PF) decreases according to the well-founded relation LESSP in each recursive call. Hence, CONC is accepted under the definitional principle. [ 0.0 0.0 0.0 ] CONC (DEFN SUBSET (X Y) (IF (LISTP X) (AND (MEMBER (CAR X) Y) (SUBSET (CDR X) Y)) T)) Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT X) decreases according to the well-founded relation LESSP in each recursive call. Hence, SUBSET is accepted under the principle of definition. Note that (OR (FALSEP (SUBSET X Y)) (TRUEP (SUBSET X Y))) is a theorem. [ 0.0 0.0 0.0 ] SUBSET (DEFN SET-EQUAL (X Y) (AND (SUBSET X Y) (SUBSET Y X))) Observe that (OR (FALSEP (SET-EQUAL X Y)) (TRUEP (SET-EQUAL X Y))) is a theorem. [ 0.0 0.0 0.0 ] SET-EQUAL (DEFN PROP-AXIOM (EXP) (F-OR (F-NOT EXP) EXP)) Observe that (LISTP (PROP-AXIOM EXP)) is a theorem. [ 0.0 0.0 0.0 ] PROP-AXIOM (DEFN SUBST-AXIOM (EXP VAR TERM) (F-IMPLIES (SUBST EXP VAR TERM T) (FORSOME VAR EXP))) From the definition we can conclude that: (LISTP (SUBST-AXIOM EXP VAR TERM)) is a theorem. [ 0.0 0.0 0.0 ] SUBST-AXIOM (DEFN IDENT-AXIOM (VAR) (F-EQUAL VAR VAR)) Note that (LISTP (IDENT-AXIOM VAR)) is a theorem. [ 0.0 0.0 0.0 ] IDENT-AXIOM (DEFN PAIREQUALS (VARS1 VARS2 EXP) (IF (LISTP VARS1) (F-IMPLIES (F-EQUAL (CAR VARS1) (CAR VARS2)) (PAIREQUALS (CDR VARS1) (CDR VARS2) EXP)) EXP)) Linear arithmetic and the lemma CDR-LESSP can be used to show that the measure (COUNT VARS1) decreases according to the well-founded relation LESSP in each recursive call. Hence, PAIREQUALS is accepted under the definitional principle. Observe that: (OR (LISTP (PAIREQUALS VARS1 VARS2 EXP)) (EQUAL (PAIREQUALS VARS1 VARS2 EXP) EXP)) is a theorem. [ 0.0 0.0 0.0 ] PAIREQUALS (DEFN EQUAL-AXIOM2 (VARS1 VARS2 PR) (PAIREQUALS VARS1 VARS2 (F-IMPLIES (CONS PR VARS1) (CONS PR VARS2)))) From the definition we can conclude that: (LISTP (EQUAL-AXIOM2 VARS1 VARS2 PR)) is a theorem. [ 0.0 0.0 0.0 ] EQUAL-AXIOM2 (DEFN ASSUME (EXP LIST FLG) (IF (LISTP LIST) (IF (AND (EQUAL (CAAAR LIST) FLG) (EQUAL EXP (CADAR LIST))) (CDR LIST) (ASSUME EXP (CDR LIST) FLG)) F)) Linear arithmetic and the lemma CDR-LESSP can be used to prove that the measure (COUNT LIST) decreases according to the well-founded relation LESSP in each recursive call. Hence, ASSUME is accepted under the principle of definition. [ 0.0 0.0 0.0 ] ASSUME (DEFN PROP-AXIOM-PROOF (EXP) (LIST 'AXIOM (LIST 'PROP-AXIOM EXP) (PROP-AXIOM EXP))) Note that (LISTP (PROP-AXIOM-PROOF EXP)) is a theorem. [ 0.0 0.0 0.0 ] PROP-AXIOM-PROOF (DEFN SUBST-AXIOM-PROOF (EXP VAR TERM) (LIST 'AXIOM (LIST 'SUBST-AXIOM EXP VAR TERM) (SUBST-AXIOM EXP VAR TERM))) Observe that (LISTP (SUBST-AXIOM-PROOF EXP VAR TERM)) is a theorem. [ 0.0 0.0 0.0 ] SUBST-AXIOM-PROOF (DEFN IDENT-AXIOM-PROOF (VAR) (LIST 'AXIOM (LIST 'IDENT-AXIOM VAR) (F-EQUAL VAR VAR))) From the definition we can conclude that (LISTP (IDENT-AXIOM-PROOF VAR)) is a theorem. [ 0.0 0.0 0.0 ] IDENT-AXIOM-PROOF (DEFN EQUAL-AXIOM1 (VARS1 VARS2 FN) (PAIREQUALS VARS1 VARS2 (F-EQUAL (CONS FN VARS1) (CONS FN VARS2)))) From the definition we can conclude that: (LISTP (EQUAL-AXIOM1 VARS1 VARS2 FN)) is a theorem. [ 0.0 0.0 0.0 ] EQUAL-AXIOM1 (DEFN EQUAL-AXIOM1-PROOF (FN VARS1 VARS2) (LIST 'AXIOM (LIST 'EQUAL-AXIOM1 FN VARS1 VARS2) (EQUAL-AXIOM1 VARS1 VARS2 FN))) Observe that (LISTP (EQUAL-AXIOM1-PROOF FN VARS1 VARS2)) is a theorem. [ 0.0 0.0 0.0 ] EQUAL-AXIOM1-PROOF (DEFN EQUAL-AXIOM2-PROOF (PR VARS1 VARS2) (LIST 'AXIOM (LIST 'EQUAL-AXIOM2 PR VARS1 VARS2) (EQUAL-AXIOM2 VARS1 VARS2 PR))) Observe that (LISTP (EQUAL-AXIOM2-PROOF PR VARS1 VARS2)) is a theorem. [ 0.0 0.0 0.0 ] EQUAL-AXIOM2-PROOF (DEFN EXPAN-PROOF (A B PF) (LIST 'RULE (LIST 'EXPAN A B) (F-OR A B) PF)) From the definition we can conclude that (LISTP (EXPAN-PROOF A B PF)) is a theorem. [ 0.0 0.0 0.0 ] EXPAN-PROOF (DEFN CONTRAC-PROOF (A PF) (LIST 'RULE (LIST 'CONTRAC A) A PF)) Observe that (LISTP (CONTRAC-PROOF A PF)) is a theorem. [ 0.0 0.0 0.0 ] CONTRAC-PROOF (DEFN ASSOC-PROOF (A B C PF) (LIST 'RULE (LIST 'ASSOC A B C) (F-OR (F-OR A B) C) PF)) Observe that (LISTP (ASSOC-PROOF A B C PF)) is a theorem. [ 0.0 0.0 0.0 ] ASSOC-PROOF (DEFN CUT-PROOF (A B C PF1 PF2) (LIST 'RULE (LIST 'CUT A B C) (F-OR B C) (LIST PF1 PF2))) Note that (LISTP (CUT-PROOF A B C PF1 PF2)) is a theorem. [ 0.0 0.0 0.0 ] CUT-PROOF (DEFN FORSOME-INTRO-PROOF (VAR A B PF) (LIST 'RULE (LIST 'E-INTRO VAR A B) (F-IMPLIES (FORSOME VAR A) B) PF)) Observe that (LISTP (FORSOME-INTRO-PROOF VAR A B PF)) is a theorem. [ 0.0 0.0 0.0 ] FORSOME-INTRO-PROOF (TOGGLE G2737 ATOMP NIL) [ 0.0 0.0 0.0 ] G2737 (DEFN HINT1 (PF) (CAADR PF)) [ 0.0 0.0 0.0 ] HINT1 (DEFN HINT2 (PF) (CADADR PF)) [ 0.0 0.0 0.0 ] HINT2 (DEFN HINT3 (PF) (CADDADR PF)) [ 0.0 0.0 0.0 ] HINT3 (DEFN HINT4 (PF) (CADDDADR PF)) [ 0.0 0.0 0.0 ] HINT4 (DEFN SUB-PROOF (PF) (CADDDR PF)) [ 0.0 0.0 0.0 ] SUB-PROOF (DEFN PRF (PF) (IF (NLISTP PF) F (IF (EQUAL (CAR PF) 'AXIOM) (IF (EQUAL (HINT1 PF) 'PROP-AXIOM) (AND (FORMULA (HINT2 PF) T 0) (EQUAL PF (PROP-AXIOM-PROOF (HINT2 PF)))) (IF (EQUAL (HINT1 PF) 'SUBST-AXIOM) (AND (FORMULA (HINT2 PF) T 0) (VARIABLE (HINT3 PF)) (TERMP (HINT4 PF) T 0) (FREE-FOR (HINT2 PF) (HINT3 PF) (HINT4 PF) T) (EQUAL PF (SUBST-AXIOM-PROOF (HINT2 PF) (HINT3 PF) (HINT4 PF)))) (IF (EQUAL (HINT1 PF) 'IDENT-AXIOM) (AND (VARIABLE (HINT2 PF)) (EQUAL PF (IDENT-AXIOM-PROOF (HINT2 PF)))) (IF (EQUAL (HINT1 PF) 'EQUAL-AXIOM1) (AND (FUNCTION (HINT2 PF)) (VAR-LIST (HINT3 PF) (DEGREE (HINT2 PF))) (VAR-LIST (HINT4 PF) (DEGREE (HINT2 PF))) (EQUAL PF (EQUAL-AXIOM1-PROOF (HINT2 PF) (HINT3 PF) (HINT4 PF)))) (IF (EQUAL (HINT1 PF) 'EQUAL-AXIOM2) (AND (PREDICATE (HINT2 PF)) (VAR-LIST (HINT3 PF) (DEGREE (HINT2 PF))) (VAR-LIST (HINT4 PF) (DEGREE (HINT2 PF))) (EQUAL PF (EQUAL-AXIOM2-PROOF (HINT2 PF) (HINT3 PF) (HINT4 PF)))) F))))) (IF (EQUAL (CAR PF) 'RULE) (IF (EQUAL (HINT1 PF) 'EXPAN) (AND (FORMULA (HINT2 PF) T 0) (EQUAL PF (EXPAN-PROOF (HINT2 PF) (HINT3 PF) (SUB-PROOF PF))) (EQUAL (CONC (SUB-PROOF PF) T) (HINT3 PF)) (PRF (SUB-PROOF PF))) (IF (EQUAL (HINT1 PF) 'CONTRAC) (AND (EQUAL PF (CONTRAC-PROOF (HINT2 PF) (SUB-PROOF PF))) (EQUAL (CONC (SUB-PROOF PF) T) (F-OR (HINT2 PF) (HINT2 PF))) (PRF (SUB-PROOF PF))) (IF (EQUAL (HINT1 PF) 'ASSOC) (AND (EQUAL PF (ASSOC-PROOF (HINT2 PF) (HINT3 PF) (HINT4 PF) (SUB-PROOF PF))) (EQUAL (CONC (SUB-PROOF PF) T) (F-OR (HINT2 PF) (F-OR (HINT3 PF) (HINT4 PF)))) (PRF (SUB-PROOF PF))) (IF (EQUAL (HINT1 PF) 'CUT) (AND (EQUAL PF (CUT-PROOF (HINT2 PF) (HINT3 PF) (HINT4 PF) (CAR (SUB-PROOF PF)) (CADR (SUB-PROOF PF)))) (EQUAL (CONC (SUB-PROOF PF) 'LIST) (LIST (F-OR (HINT2 PF) (HINT3 PF)) (F-OR (F-NOT (HINT2 PF)) (HINT4 PF)))) (PRF (CAR (SUB-PROOF PF))) (PRF (CADR (SUB-PROOF PF)))) (IF (EQUAL (HINT1 PF) 'E-INTRO) (AND (VARIABLE (HINT2 PF)) (EQUAL PF (FORSOME-INTRO-PROOF (HINT2 PF) (HINT3 PF) (HINT4 PF) (SUB-PROOF PF))) (NOT (MEMBER (HINT2 PF) (COLLECT-FREE (HINT4 PF) T))) (EQUAL (CONC (SUB-PROOF PF) T) (F-IMPLIES (HINT3 PF) (HINT4 PF))) (PRF (SUB-PROOF PF))) F))))) F)))) Linear arithmetic, the lemmas CAR-LESSEQP, CDR-LESSEQP, and CDR-LESSP, and the definitions of SUB-PROOF, HINT1, EQUAL, and NLISTP establish that the measure (COUNT PF) decreases according to the well-founded relation LESSP in each recursive call. Hence, PRF is accepted under the principle of definition. From the definition we can conclude that: (OR (FALSEP (PRF PF)) (TRUEP (PRF PF))) is a theorem. [ 0.0 0.0 0.0 ] PRF (PROVE-LEMMA FORMULA-OR-REDUC (REWRITE) (EQUAL (FORMULA (LIST 'OR A B) T 0) (AND (FORMULA A T 0) (FORMULA B T 0)))) This simplifies, rewriting with the lemmas CDR-CONS and CAR-CONS, and expanding the functions ATOMP, PREDICATE, EQUAL, FORMULA, SUB1, NUMBERP, and AND, to: T. Q.E.D. [ 0.0 0.0 0.0 ] FORMULA-OR-REDUC (PROVE-LEMMA FORMULA-NOT-REDUC (REWRITE) (EQUAL (FORMULA (LIST 'NOT A) T 0) (FORMULA A T 0))) This simplifies, rewriting with CDR-CONS and CAR-CONS, and expanding the functions ATOMP, PREDICATE, EQUAL, FORMULA, SUB1, and NUMBERP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] FORMULA-NOT-REDUC (PROVE-LEMMA FORMULA-FORSOME-REDUC (REWRITE) (EQUAL (FORMULA (LIST 'FORSOME X A) T 0) (AND (VARIABLE X) (FORMULA A T 0)))) This formula simplifies, appealing to the lemmas CDR-CONS and CAR-CONS, and expanding the definitions of ATOMP, PREDICATE, EQUAL, FORMULA, SUB1, NUMBERP, and AND, to: T. Q.E.D. [ 0.0 0.0 0.0 ] FORMULA-FORSOME-REDUC (DEFN PROVES (PF EXP) (AND (EQUAL (CONC PF T) EXP) (FORMULA EXP T 0) (PRF PF))) Note that (OR (FALSEP (PROVES PF EXP)) (TRUEP (PROVES PF EXP))) is a theorem. [ 0.0 0.0 0.0 ] PROVES (PROVE-LEMMA PROVES-IS-FORMULA (REWRITE) (IMPLIES (PROVES PF EXP) (FORMULA EXP T 0))) WARNING: Note that PROVES-IS-FORMULA contains the free variable PF which will be chosen by instantiating the hypothesis (PROVES PF EXP). This conjecture can be simplified, using the abbreviations PROVES and IMPLIES, to: T. This simplifies, obviously, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PROVES-IS-FORMULA (PROVE-LEMMA PROVES-IS-FORMULA-AGAIN (REWRITE) (IMPLIES (NOT (FORMULA EXP T 0)) (NOT (PROVES PF EXP))) ((DISABLE FORMULA))) WARNING: Note that the rewrite rule PROVES-IS-FORMULA-AGAIN will be stored so as to apply only to terms with the nonrecursive function symbol PROVES. This conjecture can be simplified, using the abbreviations PROVES, NOT, and IMPLIES, to the goal: T. This simplifies, clearly, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PROVES-IS-FORMULA-AGAIN (PROVE-LEMMA PROP-AXIOM-PROVES (REWRITE) (IMPLIES (AND (FORMULA EXP T 0) (EQUAL CONCL (F-OR (F-NOT EXP) EXP))) (PROVES (PROP-AXIOM-PROOF EXP) CONCL))) WARNING: Note that the rewrite rule PROP-AXIOM-PROVES will be stored so as to apply only to terms with the nonrecursive function symbol PROVES. This formula can be simplified, using the abbreviations AND, IMPLIES, F-NOT, and F-OR, to: (IMPLIES (AND (FORMULA EXP T 0) (EQUAL CONCL (LIST 'OR (LIST 'NOT EXP) EXP))) (PROVES (PROP-AXIOM-PROOF EXP) CONCL)), which simplifies, rewriting with FORMULA-OR-REDUC, FORMULA-NOT-REDUC, CDR-CONS, and CAR-CONS, and unfolding PROP-AXIOM, F-NOT, F-OR, PROP-AXIOM-PROOF, PRF, HINT1, HINT2, CONC, EQUAL, and PROVES, to: T. Q.E.D. [ 0.0 0.1 0.0 ] PROP-AXIOM-PROVES (PROVE-LEMMA SUBST-AXIOM-PROVES (REWRITE) (IMPLIES (AND (FORMULA CONCL T 0) (VARIABLE VAR) (TERMP TERM T 0) (FREE-FOR EXP VAR TERM T) (EQUAL CONCL (SUBST-AXIOM EXP VAR TERM))) (PROVES (SUBST-AXIOM-PROOF EXP VAR TERM) CONCL)) ((DISABLE FREE-FOR))) WARNING: Note that the rewrite rule SUBST-AXIOM-PROVES will be stored so as to apply only to terms with the nonrecursive function symbol PROVES. This simplifies, rewriting with FORMULA-NOT-REDUC, FORMULA-FORSOME-REDUC, FORMULA-OR-REDUC, CDR-CONS, and CAR-CONS, and opening up the functions F-IMPLIES, F-NOT, F-OR, FORSOME, SUBST-AXIOM, SUBST-AXIOM-PROOF, PRF, HINT1, HINT2, HINT3, HINT4, CONC, EQUAL, and PROVES, to: T. Q.E.D. [ 0.0 0.1 0.0 ] SUBST-AXIOM-PROVES (PROVE-LEMMA EQUAL-AXIOM1-PROVES (REWRITE) (IMPLIES (AND (FUNCTION FN) (VAR-LIST VARS1 (DEGREE FN)) (VAR-LIST VARS2 (DEGREE FN)) (FORMULA CONCL T 0) (EQUAL CONCL (EQUAL-AXIOM1 VARS1 VARS2 FN))) (PROVES (EQUAL-AXIOM1-PROOF FN VARS1 VARS2) CONCL))) WARNING: Note that the rewrite rule EQUAL-AXIOM1-PROVES will be stored so as to apply only to terms with the nonrecursive function symbol PROVES. This simplifies, applying the lemmas CDR-CONS and CAR-CONS, and opening up the functions DEGREE, F-EQUAL, EQUAL-AXIOM1, EQUAL-AXIOM1-PROOF, PRF, HINT1, HINT2, HINT3, HINT4, CONC, EQUAL, PROVES, and FUNCTION, to: (IMPLIES (AND (FUNCTION FN) (EQUAL FN 'EQUAL) (VAR-LIST VARS1 2) (VAR-LIST VARS2 2)) (NOT (FORMULA (PAIREQUALS VARS1 VARS2 (LIST 'EQUAL (CONS 'EQUAL VARS1) (CONS 'EQUAL VARS2))) T 0))), which again simplifies, expanding the definition of FUNCTION, to: T. Q.E.D. [ 0.0 0.1 0.0 ] EQUAL-AXIOM1-PROVES (PROVE-LEMMA EQUAL-AXIOM2-PROVES (REWRITE) (IMPLIES (AND (PREDICATE PR) (VAR-LIST VARS1 (DEGREE PR)) (VAR-LIST VARS2 (DEGREE PR)) (FORMULA CONCL T 0) (EQUAL CONCL (EQUAL-AXIOM2 VARS1 VARS2 PR))) (PROVES (EQUAL-AXIOM2-PROOF PR VARS1 VARS2) CONCL))) WARNING: Note that the rewrite rule EQUAL-AXIOM2-PROVES will be stored so as to apply only to terms with the nonrecursive function symbol PROVES. This simplifies, applying the lemmas CDR-CONS and CAR-CONS, and opening up the functions DEGREE, F-IMPLIES, F-NOT, F-OR, EQUAL-AXIOM2, EQUAL-AXIOM2-PROOF, PRF, HINT1, HINT2, HINT3, HINT4, CONC, EQUAL, PROVES, and PREDICATE, to: T. Q.E.D. [ 0.0 0.1 0.0 ] EQUAL-AXIOM2-PROVES (PROVE-LEMMA IDENT-AXIOM-PROVES (REWRITE) (IMPLIES (AND (VARIABLE VAR) (EQUAL CONCL (IDENT-AXIOM VAR)) (FORMULA CONCL T 0)) (PROVES (IDENT-AXIOM-PROOF VAR) CONCL))) WARNING: Note that the rewrite rule IDENT-AXIOM-PROVES will be stored so as to apply only to terms with the nonrecursive function symbol PROVES. This simplifies, rewriting with CAR-CONS and CDR-CONS, and expanding the functions F-EQUAL, IDENT-AXIOM, ATOMP, PREDICATE, DEGREE, SUB1, NUMBERP, TERMP, EQUAL, FORMULA, IDENT-AXIOM-PROOF, PRF, HINT1, HINT2, CONC, and PROVES, to: T. Q.E.D. [ 0.0 0.0 0.0 ] IDENT-AXIOM-PROVES (PROVE-LEMMA EXPAN-PROOF-PROVES (REWRITE) (IMPLIES (AND (FORMULA A T 0) (PROVES PF B) (EQUAL CONCL (F-OR A B))) (PROVES (EXPAN-PROOF A B PF) CONCL))) WARNING: Note that the rewrite rule EXPAN-PROOF-PROVES will be stored so as to apply only to terms with the nonrecursive function symbol PROVES. This formula can be simplified, using the abbreviations PROVES, AND, IMPLIES, and F-OR, to: (IMPLIES (AND (FORMULA A T 0) (EQUAL (CONC PF T) B) (FORMULA B T 0) (PRF PF) (EQUAL CONCL (LIST 'OR A B))) (PROVES (EXPAN-PROOF A B PF) CONCL)), which simplifies, applying FORMULA-OR-REDUC, CDR-CONS, and CAR-CONS, and opening up the definitions of EQUAL, CONC, PRF, F-OR, EXPAN-PROOF, HINT1, HINT2, HINT3, SUB-PROOF, and PROVES, to: T. Q.E.D. [ 0.0 0.1 0.0 ] EXPAN-PROOF-PROVES (PROVE-LEMMA CONTRAC-PROOF-PROVES (REWRITE) (IMPLIES (PROVES PF (F-OR A A)) (PROVES (CONTRAC-PROOF A PF) A))) WARNING: Note that the rewrite rule CONTRAC-PROOF-PROVES will be stored so as to apply only to terms with the nonrecursive function symbol PROVES. This formula can be simplified, using the abbreviations FORMULA-OR-REDUC, PROVES, IMPLIES, and F-OR, to: (IMPLIES (AND (EQUAL (CONC PF T) (LIST 'OR A A)) (FORMULA A T 0) (PRF PF)) (PROVES (CONTRAC-PROOF A PF) A)), which simplifies, rewriting with the lemmas CDR-CONS and CAR-CONS, and expanding the functions EQUAL, CONC, CONTRAC-PROOF, PRF, HINT1, HINT2, SUB-PROOF, F-OR, and PROVES, to: T. Q.E.D. [ 0.0 0.1 0.0 ] CONTRAC-PROOF-PROVES (PROVE-LEMMA ASSOC-PROOF-PROVES (REWRITE) (IMPLIES (AND (PROVES PF (F-OR A (F-OR B C))) (EQUAL CONCL (F-OR (F-OR A B) C))) (PROVES (ASSOC-PROOF A B C PF) CONCL))) WARNING: Note that the rewrite rule ASSOC-PROOF-PROVES will be stored so as to apply only to terms with the nonrecursive function symbol PROVES. This conjecture can be simplified, using the abbreviations FORMULA-OR-REDUC, PROVES, AND, IMPLIES, and F-OR, to: (IMPLIES (AND (EQUAL (CONC PF T) (LIST 'OR A (LIST 'OR B C))) (FORMULA A T 0) (FORMULA B T 0) (FORMULA C T 0) (PRF PF) (EQUAL CONCL (LIST 'OR (LIST 'OR A B) C))) (PROVES (ASSOC-PROOF A B C PF) CONCL)). This simplifies, applying the lemmas FORMULA-OR-REDUC, CDR-CONS, and CAR-CONS, and opening up EQUAL, CONC, F-OR, ASSOC-PROOF, PRF, HINT1, HINT2, HINT3, HINT4, SUB-PROOF, and PROVES, to: T. Q.E.D. [ 0.0 0.3 0.0 ] ASSOC-PROOF-PROVES (PROVE-LEMMA CUT-PROOF-PROVES (REWRITE) (IMPLIES (AND (PROVES PF1 (F-OR A B)) (PROVES PF2 (F-OR (F-NOT A) C)) (EQUAL CONCL (F-OR B C))) (PROVES (CUT-PROOF A B C PF1 PF2) CONCL))) WARNING: Note that the rewrite rule CUT-PROOF-PROVES will be stored so as to apply only to terms with the nonrecursive function symbol PROVES. This conjecture can be simplified, using the abbreviations FORMULA-NOT-REDUC, FORMULA-OR-REDUC, PROVES, AND, IMPLIES, F-NOT, and F-OR, to the conjecture: (IMPLIES (AND (EQUAL (CONC PF1 T) (LIST 'OR A B)) (FORMULA A T 0) (FORMULA B T 0) (PRF PF1) (EQUAL (CONC PF2 T) (LIST 'OR (LIST 'NOT A) C)) (FORMULA C T 0) (PRF PF2) (EQUAL CONCL (LIST 'OR B C))) (PROVES (CUT-PROOF A B C PF1 PF2) CONCL)). This simplifies, rewriting with FORMULA-OR-REDUC, CDR-CONS, and CAR-CONS, and opening up the functions EQUAL, CONC, F-OR, CUT-PROOF, PRF, HINT1, HINT2, HINT3, HINT4, SUB-PROOF, F-NOT, and PROVES, to: T. Q.E.D. [ 0.0 0.2 0.0 ] CUT-PROOF-PROVES (TOGGLE G2752 PROP-AXIOM-PROOF T) [ 0.0 0.0 0.0 ] G2752 (TOGGLE G2753 SUBST-AXIOM-PROOF T) [ 0.0 0.0 0.0 ] G2753 (TOGGLE G2754 EQUAL-AXIOM1-PROOF T) [ 0.0 0.0 0.0 ] G2754 (TOGGLE G2755 EQUAL-AXIOM2-PROOF T) [ 0.0 0.0 0.0 ] G2755 (TOGGLE G2756 IDENT-AXIOM-PROOF T) [ 0.0 0.0 0.0 ] G2756 (TOGGLE G2759 EXPAN-PROOF T) [ 0.0 0.0 0.0 ] G2759 (TOGGLE G2760 CONTRAC-PROOF T) [ 0.0 0.0 0.0 ] G2760 (TOGGLE G2761 ASSOC-PROOF T) [ 0.0 0.0 0.0 ] G2761 (TOGGLE G2762 CUT-PROOF T) [ 0.0 0.0 0.0 ] G2762 (PROVE-LEMMA FORSOME-INTRO-PROVES (REWRITE) (IMPLIES (AND (PROVES PF (F-IMPLIES A B)) (NOT (MEMBER VAR (COLLECT-FREE B T))) (VARIABLE VAR) (EQUAL A-PRIME (F-IMPLIES (FORSOME VAR A) B))) (PROVES (FORSOME-INTRO-PROOF VAR A B PF) A-PRIME)) ((DISABLE COLLECT-FREE FORMULA))) WARNING: Note that the rewrite rule FORSOME-INTRO-PROVES will be stored so as to apply only to terms with the nonrecursive function symbol PROVES. This formula can be simplified, using the abbreviations NOT, FORMULA-NOT-REDUC, FORMULA-OR-REDUC, PROVES, AND, IMPLIES, FORSOME, F-NOT, F-OR, and F-IMPLIES, to: (IMPLIES (AND (EQUAL (CONC PF T) (LIST 'OR (LIST 'NOT A) B)) (FORMULA A T 0) (FORMULA B T 0) (PRF PF) (NOT (MEMBER VAR (COLLECT-FREE B T))) (VARIABLE VAR) (EQUAL A-PRIME (LIST 'OR (LIST 'NOT (LIST 'FORSOME VAR A)) B))) (PROVES (FORSOME-INTRO-PROOF VAR A B PF) A-PRIME)), which simplifies, rewriting with the lemmas FORMULA-OR-REDUC, FORMULA-NOT-REDUC, FORMULA-FORSOME-REDUC, CDR-CONS, and CAR-CONS, and expanding the functions EQUAL, CONC, F-IMPLIES, F-NOT, F-OR, FORSOME, FORSOME-INTRO-PROOF, PRF, HINT1, HINT2, HINT3, HINT4, SUB-PROOF, and PROVES, to: T. Q.E.D. [ 0.0 0.1 0.0 ] FORSOME-INTRO-PROVES (TOGGLE G2763 FORSOME-INTRO-PROOF T) [ 0.0 0.0 0.0 ] G2763 (TOGGLE G2764 PRF T) [ 0.0 0.0 0.0 ] G2764 (TOGGLE G2765 PROVES T) [ 0.0 0.0 0.0 ] G2765 (DEFN COMMUT-PROOF (A B PF) (CUT-PROOF A B A PF (PROP-AXIOM-PROOF A))) Observe that (LISTP (COMMUT-PROOF A B PF)) is a theorem. [ 0.0 0.0 0.0 ] COMMUT-PROOF (PROVE-LEMMA COMMUT-PROOF-PROVES (REWRITE) (IMPLIES (AND (PROVES PF (F-OR A B)) (FORMULA (F-OR A B) T 0) (EQUAL CONCL (F-OR B A))) (PROVES (COMMUT-PROOF A B PF) CONCL))) This formula can be simplified, using the abbreviations FORMULA-OR-REDUC, AND, IMPLIES, and F-OR, to: (IMPLIES (AND (PROVES PF (LIST 'OR A B)) (FORMULA A T 0) (FORMULA B T 0) (EQUAL CONCL (LIST 'OR B A))) (PROVES (COMMUT-PROOF A B PF) CONCL)), which simplifies, applying PROP-AXIOM-PROVES and CUT-PROOF-PROVES, and unfolding the functions COMMUT-PROOF, F-NOT, and F-OR, to: T. Q.E.D. [ 0.0 0.0 0.0 ] COMMUT-PROOF-PROVES (TOGGLE G2766 COMMUT-PROOF T) [ 0.0 0.0 0.0 ] G2766 (DEFN DETACH-PROOF (A B PF1 PF2) (CONTRAC-PROOF B (CUT-PROOF A B B (COMMUT-PROOF B A (EXPAN-PROOF B A PF1)) PF2))) From the definition we can conclude that: (LISTP (DETACH-PROOF A B PF1 PF2)) is a theorem. [ 0.0 0.0 0.0 ] DETACH-PROOF (PROVE-LEMMA DETACH-PROOF-PROVES1 (REWRITE) (IMPLIES (AND (PROVES PF1 A) (PROVES PF2 (F-IMPLIES A B)) (FORMULA B T 0)) (PROVES (DETACH-PROOF A B PF1 PF2) B)) ((DISABLE FORMULA))) This conjecture can be simplified, using the abbreviations AND, IMPLIES, F-NOT, F-OR, and F-IMPLIES, to: (IMPLIES (AND (PROVES PF1 A) (PROVES PF2 (LIST 'OR (LIST 'NOT A) B)) (FORMULA B T 0)) (PROVES (DETACH-PROOF A B PF1 PF2) B)). This simplifies, appealing to the lemmas CUT-PROOF-PROVES, FORMULA-OR-REDUC, PROVES-IS-FORMULA, EXPAN-PROOF-PROVES, COMMUT-PROOF-PROVES, and CONTRAC-PROOF-PROVES, and unfolding DETACH-PROOF, F-NOT, and F-OR, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DETACH-PROOF-PROVES1 (TOGGLE G2767 DETACH-PROOF T) [ 0.0 0.0 0.0 ] G2767 (DEFN PROVES-LIST (PFLIST EXPLIST) (IF (NLISTP EXPLIST) (EQUAL PFLIST NIL) (AND (PROVES (CAR PFLIST) (CAR EXPLIST)) (PROVES-LIST (CDR PFLIST) (CDR EXPLIST))))) Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP can be used to establish that the measure (COUNT EXPLIST) decreases according to the well-founded relation LESSP in each recursive call. Hence, PROVES-LIST is accepted under the principle of definition. Note that: (OR (FALSEP (PROVES-LIST PFLIST EXPLIST)) (TRUEP (PROVES-LIST PFLIST EXPLIST))) is a theorem. [ 0.0 0.0 0.0 ] PROVES-LIST (DEFN LIST-IMPLIES (LIST CONC) (IF (NLISTP LIST) CONC (IF (NLISTP (CDR LIST)) (F-IMPLIES (CAR LIST) CONC) (F-IMPLIES (CAR LIST) (LIST-IMPLIES (CDR LIST) CONC))))) Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP establish that the measure (COUNT LIST) decreases according to the well-founded relation LESSP in each recursive call. Hence, LIST-IMPLIES is accepted under the principle of definition. From the definition we can conclude that: (OR (LISTP (LIST-IMPLIES LIST CONC)) (EQUAL (LIST-IMPLIES LIST CONC) CONC)) is a theorem. [ 0.0 0.0 0.0 ] LIST-IMPLIES (DEFN LIST-DETACH-PROOF (ALIST B PFLIST PF2) (IF (NLISTP ALIST) PF2 (IF (NLISTP (CDR ALIST)) (DETACH-PROOF (CAR ALIST) B (CAR PFLIST) PF2) (LIST-DETACH-PROOF (CDR ALIST) B (CDR PFLIST) (DETACH-PROOF (CAR ALIST) (LIST-IMPLIES (CDR ALIST) B) (CAR PFLIST) PF2))))) Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP establish that the measure (COUNT ALIST) decreases according to the well-founded relation LESSP in each recursive call. Hence, LIST-DETACH-PROOF is accepted under the definitional principle. Observe that: (OR (LISTP (LIST-DETACH-PROOF ALIST B PFLIST PF2)) (EQUAL (LIST-DETACH-PROOF ALIST B PFLIST PF2) PF2)) is a theorem. [ 0.0 0.0 0.0 ] LIST-DETACH-PROOF (PROVE-LEMMA DETACH-LIST-IMPLIES (REWRITE) (IMPLIES (AND (LIST C) (PROVES PF A) (PROVES PF2 (LIST-IMPLIES (CONS A C) B)) (FORMULA A T 0) (FORMULA (LIST-IMPLIES C B) T 0)) (PROVES (DETACH-PROOF A (LIST-IMPLIES C B) PF PF2) (LIST-IMPLIES C B)))) This simplifies, applying CAR-CONS, CDR-CONS, PROVES-IS-FORMULA, and DETACH-PROOF-PROVES1, and expanding the functions F-IMPLIES, F-NOT, F-OR, and LIST-IMPLIES, to: T. Q.E.D. [ 0.0 0.1 0.0 ] DETACH-LIST-IMPLIES (PROVE-LEMMA FORMULA-LIST-IMPLIES NIL (IMPLIES (AND (FORMULA (LIST-IMPLIES ALIST B) T 0) (LISTP ALIST)) (FORMULA (LIST-IMPLIES (CDR ALIST) B) T 0))) This simplifies, expanding the definitions of F-IMPLIES, F-NOT, F-OR, and LIST-IMPLIES, to two new goals: Case 2. (IMPLIES (AND (NOT (LISTP (CDR ALIST))) (FORMULA (LIST 'OR (LIST 'NOT (CAR ALIST)) B) T 0) (LISTP ALIST)) (FORMULA B T 0)), which again simplifies, rewriting with FORMULA-NOT-REDUC and FORMULA-OR-REDUC, to: T. Case 1. (IMPLIES (AND (LISTP (CDR ALIST)) (FORMULA (LIST 'OR (LIST 'NOT (CAR ALIST)) (LIST-IMPLIES (CDR ALIST) B)) T 0) (LISTP ALIST)) (FORMULA (LIST-IMPLIES (CDR ALIST) B) T 0)). However this again simplifies, applying FORMULA-NOT-REDUC and FORMULA-OR-REDUC, to: T. Q.E.D. [ 0.0 0.1 0.0 ] FORMULA-LIST-IMPLIES (PROVE-LEMMA DETACH-RULE-CORR (REWRITE) (IMPLIES (AND (PROVES-LIST PFLIST ALIST) (PROVES PF2 (LIST-IMPLIES ALIST B)) (FORMULA B T 0)) (PROVES (LIST-DETACH-PROOF ALIST B PFLIST PF2) B)) ((INDUCT (LIST-DETACH-PROOF ALIST B PFLIST PF2)) (USE (DETACH-LIST-IMPLIES (A (CAR ALIST)) (C (CDR ALIST)) (PF (CAR PFLIST))) (FORMULA-LIST-IMPLIES)))) This formula simplifies, applying the lemmas CONS-CAR-CDR, CDR-NLISTP, CAR-NLISTP, PROVES-IS-FORMULA-AGAIN, and PROVES-IS-FORMULA, and expanding the definitions of AND, IMPLIES, F-IMPLIES, F-NOT, F-OR, LIST-IMPLIES, NLISTP, NOT, PROVES-LIST, LIST-DETACH-PROOF, OR, and LISTP, to five new conjectures: Case 5. (IMPLIES (AND (LISTP ALIST) (NOT (PROVES PF2 (LIST-IMPLIES ALIST B))) (FORMULA (LIST-IMPLIES (CDR ALIST) B) T 0) (NOT (LISTP (CDR ALIST))) (PROVES (CAR PFLIST) (CAR ALIST)) (PROVES-LIST (CDR PFLIST) (CDR ALIST)) (PROVES PF2 (LIST 'OR (LIST 'NOT (CAR ALIST)) B)) (FORMULA B T 0)) (PROVES (DETACH-PROOF (CAR ALIST) B (CAR PFLIST) PF2) B)), which again simplifies, expanding the functions F-IMPLIES, F-NOT, F-OR, and LIST-IMPLIES, to: T. Case 4. (IMPLIES (AND (LISTP ALIST) (NOT (PROVES PF2 (LIST-IMPLIES ALIST B))) (FORMULA (LIST-IMPLIES (CDR ALIST) B) T 0) (LISTP (CDR ALIST)) (PROVES-LIST (CDR PFLIST) (CDR ALIST)) (NOT (PROVES (DETACH-PROOF (CAR ALIST) (LIST-IMPLIES (CDR ALIST) B) (CAR PFLIST) PF2) (LIST-IMPLIES (CDR ALIST) B))) (PROVES (CAR PFLIST) (CAR ALIST)) (PROVES PF2 (LIST 'OR (LIST 'NOT (CAR ALIST)) (LIST-IMPLIES (CDR ALIST) B))) (FORMULA B T 0)) (PROVES (LIST-DETACH-PROOF (CDR ALIST) B (CDR PFLIST) (DETACH-PROOF (CAR ALIST) (LIST-IMPLIES (CDR ALIST) B) (CAR PFLIST) PF2)) B)), which again simplifies, unfolding F-IMPLIES, F-NOT, F-OR, and LIST-IMPLIES, to: T. Case 3. (IMPLIES (AND (NOT (FORMULA (LIST-IMPLIES (CDR ALIST) B) T 0)) (NOT (LISTP (CDR ALIST))) (NOT (FORMULA (LIST 'OR (LIST 'NOT (CAR ALIST)) B) T 0)) (LISTP ALIST) (PROVES (CAR PFLIST) (CAR ALIST)) (EQUAL (CDR PFLIST) NIL) (PROVES PF2 (LIST 'OR (LIST 'NOT (CAR ALIST)) B)) (FORMULA B T 0)) (PROVES (DETACH-PROOF (CAR ALIST) B (CAR PFLIST) PF2) B)), which again simplifies, expanding LIST-IMPLIES, to: T. Case 2. (IMPLIES (AND (NOT (FORMULA (LIST-IMPLIES (CDR ALIST) B) T 0)) (LISTP (CDR ALIST)) (NOT (FORMULA (LIST 'OR (LIST 'NOT (CAR ALIST)) (LIST-IMPLIES (CDR ALIST) B)) T 0)) (LISTP ALIST) (PROVES (CAR PFLIST) (CAR ALIST)) (PROVES-LIST (CDR PFLIST) (CDR ALIST)) (PROVES PF2 (LIST 'OR (LIST 'NOT (CAR ALIST)) (LIST-IMPLIES (CDR ALIST) B))) (FORMULA B T 0)) (PROVES (LIST-DETACH-PROOF (CDR ALIST) B (CDR PFLIST) (DETACH-PROOF (CAR ALIST) (LIST-IMPLIES (CDR ALIST) B) (CAR PFLIST) PF2)) B)), which again simplifies, rewriting with PROVES-IS-FORMULA, to: T. Case 1. (IMPLIES (AND (PROVES (DETACH-PROOF (CAR ALIST) (LIST-IMPLIES (CDR ALIST) B) (CAR PFLIST) PF2) (LIST-IMPLIES (CDR ALIST) B)) (LISTP ALIST) (NOT (LISTP (CDR ALIST))) (PROVES (CAR PFLIST) (CAR ALIST)) (PROVES-LIST (CDR PFLIST) (CDR ALIST)) (PROVES PF2 (LIST 'OR (LIST 'NOT (CAR ALIST)) B)) (FORMULA B T 0)) (PROVES (DETACH-PROOF (CAR ALIST) B (CAR PFLIST) PF2) B)). But this again simplifies, rewriting with DETACH-PROOF-PROVES1, and opening up LIST-IMPLIES, F-IMPLIES, F-NOT, F-OR, and PROVES-LIST, to: T. Q.E.D. [ 0.0 2.5 0.0 ] DETACH-RULE-CORR (TOGGLE G0220 LIST-DETACH-PROOF T) [ 0.0 0.0 0.0 ] G0220 (TOGGLE G0221 DETACH-LIST-IMPLIES T) [ 0.0 0.0 0.0 ] G0221 (DEFN RT-EXPAN-PROOF (A B PF) (COMMUT-PROOF B A (EXPAN-PROOF B A PF))) Observe that (LISTP (RT-EXPAN-PROOF A B PF)) is a theorem. [ 0.0 0.0 0.0 ] RT-EXPAN-PROOF (PROVE-LEMMA RT-EXPAN-PROOF-PROVES (REWRITE) (IMPLIES (AND (PROVES PF A) (FORMULA B T 0) (EQUAL CONCL (F-OR A B))) (PROVES (RT-EXPAN-PROOF A B PF) CONCL))) This formula can be simplified, using the abbreviations AND, IMPLIES, and F-OR, to: (IMPLIES (AND (PROVES PF A) (FORMULA B T 0) (EQUAL CONCL (LIST 'OR A B))) (PROVES (RT-EXPAN-PROOF A B PF) CONCL)), which simplifies, applying FORMULA-OR-REDUC, PROVES-IS-FORMULA, EXPAN-PROOF-PROVES, and COMMUT-PROOF-PROVES, and opening up the definitions of RT-EXPAN-PROOF and F-OR, to: T. Q.E.D. [ 0.0 0.0 0.0 ] RT-EXPAN-PROOF-PROVES (TOGGLE G0227 RT-EXPAN-PROOF T) [ 0.0 0.0 0.0 ] G0227 (DEFN MAKE-DISJUNCT (FLIST) (IF (NLISTP FLIST) NIL (IF (NLISTP (CDR FLIST)) (CAR FLIST) (F-OR (CAR FLIST) (MAKE-DISJUNCT (CDR FLIST)))))) Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP establish that the measure (COUNT FLIST) decreases according to the well-founded relation LESSP in each recursive call. Hence, MAKE-DISJUNCT is accepted under the definitional principle. [ 0.0 0.0 0.0 ] MAKE-DISJUNCT (DEFN M1-PROOF (EXP FLIST PF) (IF (NLISTP FLIST) NIL (IF (NLISTP (CDR FLIST)) PF (IF (EQUAL EXP (CAR FLIST)) (RT-EXPAN-PROOF (CAR FLIST) (MAKE-DISJUNCT (CDR FLIST)) PF) (EXPAN-PROOF (CAR FLIST) (MAKE-DISJUNCT (CDR FLIST)) (M1-PROOF EXP (CDR FLIST) PF)))))) Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP inform us that the measure (COUNT FLIST) decreases according to the well-founded relation LESSP in each recursive call. Hence, M1-PROOF is accepted under the definitional principle. Observe that: (OR (OR (LITATOM (M1-PROOF EXP FLIST PF)) (LISTP (M1-PROOF EXP FLIST PF))) (EQUAL (M1-PROOF EXP FLIST PF) PF)) is a theorem. [ 0.0 0.0 0.0 ] M1-PROOF (PROVE-LEMMA M1-PROOF-PROVES1 (REWRITE) (IMPLIES (AND (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP FLIST) (PROVES PF EXP)) (PROVES (M1-PROOF EXP FLIST PF) (MAKE-DISJUNCT FLIST))) ((DISABLE FORMULA))) 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 (NLISTP FLIST) (p EXP FLIST PF)) (IMPLIES (AND (NOT (NLISTP FLIST)) (NLISTP (CDR FLIST))) (p EXP FLIST PF)) (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (EQUAL EXP (CAR FLIST))) (p EXP FLIST PF)) (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (NOT (EQUAL EXP (CAR FLIST))) (p EXP (CDR FLIST) PF)) (p EXP FLIST PF))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP inform us that the measure (COUNT FLIST) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme produces six new formulas: Case 6. (IMPLIES (AND (NLISTP FLIST) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP FLIST) (PROVES PF EXP)) (PROVES (M1-PROOF EXP FLIST PF) (MAKE-DISJUNCT FLIST))), which simplifies, unfolding NLISTP, MAKE-DISJUNCT, and FORMULA, to: T. Case 5. (IMPLIES (AND (NOT (NLISTP FLIST)) (NLISTP (CDR FLIST)) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP FLIST) (PROVES PF EXP)) (PROVES (M1-PROOF EXP FLIST PF) (MAKE-DISJUNCT FLIST))), which simplifies, opening up the functions NLISTP, MAKE-DISJUNCT, MEMBER, and M1-PROOF, to: (IMPLIES (AND (LISTP FLIST) (NOT (LISTP (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (MEMBER EXP (CDR FLIST)) (PROVES PF EXP)) (PROVES PF (CAR FLIST))). But this further simplifies, opening up the function MEMBER, to: T. Case 4. (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (EQUAL EXP (CAR FLIST)) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP FLIST) (PROVES PF EXP)) (PROVES (M1-PROOF EXP FLIST PF) (MAKE-DISJUNCT FLIST))), which simplifies, rewriting with PROVES-IS-FORMULA, FORMULA-OR-REDUC, and RT-EXPAN-PROOF-PROVES, and expanding the definitions of NLISTP, MAKE-DISJUNCT, F-OR, MEMBER, and M1-PROOF, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (NOT (EQUAL EXP (CAR FLIST))) (NOT (FORMULA (MAKE-DISJUNCT (CDR FLIST)) T 0)) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP FLIST) (PROVES PF EXP)) (PROVES (M1-PROOF EXP FLIST PF) (MAKE-DISJUNCT FLIST))). This simplifies, rewriting with FORMULA-OR-REDUC, and opening up the functions NLISTP, MAKE-DISJUNCT, and F-OR, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (NOT (EQUAL EXP (CAR FLIST))) (NOT (MEMBER EXP (CDR FLIST))) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP FLIST) (PROVES PF EXP)) (PROVES (M1-PROOF EXP FLIST PF) (MAKE-DISJUNCT FLIST))), which simplifies, rewriting with FORMULA-OR-REDUC, and expanding the definitions of NLISTP, MAKE-DISJUNCT, F-OR, and MEMBER, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (NOT (EQUAL EXP (CAR FLIST))) (PROVES (M1-PROOF EXP (CDR FLIST) PF) (MAKE-DISJUNCT (CDR FLIST))) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP FLIST) (PROVES PF EXP)) (PROVES (M1-PROOF EXP FLIST PF) (MAKE-DISJUNCT FLIST))). This simplifies, rewriting with PROVES-IS-FORMULA, FORMULA-OR-REDUC, and EXPAN-PROOF-PROVES, and expanding the definitions of NLISTP, MAKE-DISJUNCT, F-OR, MEMBER, and M1-PROOF, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] M1-PROOF-PROVES1 (TOGGLE G0228 M1-PROOF T) [ 0.0 0.0 0.0 ] G0228 (DEFN RT-ASSOC-PROOF (A B C PF) (COMMUT-PROOF (F-OR B C) A (ASSOC-PROOF B C A (COMMUT-PROOF (F-OR C A) B (ASSOC-PROOF C A B (COMMUT-PROOF (F-OR A B) C PF)))))) From the definition we can conclude that: (LISTP (RT-ASSOC-PROOF A B C PF)) is a theorem. [ 0.0 0.0 0.0 ] RT-ASSOC-PROOF (PROVE-LEMMA RT-ASSOC-PROOF-PROVES (REWRITE) (IMPLIES (AND (PROVES PF (F-OR (F-OR A B) C)) (FORMULA A T 0) (FORMULA B T 0) (FORMULA C T 0) (EQUAL CONCL (F-OR A (F-OR B C)))) (PROVES (RT-ASSOC-PROOF A B C PF) CONCL))) This formula can be simplified, using the abbreviations AND, IMPLIES, and F-OR, to: (IMPLIES (AND (PROVES PF (LIST 'OR (LIST 'OR A B) C)) (FORMULA A T 0) (FORMULA B T 0) (FORMULA C T 0) (EQUAL CONCL (LIST 'OR A (LIST 'OR B C)))) (PROVES (RT-ASSOC-PROOF A B C PF) CONCL)), which simplifies, rewriting with FORMULA-OR-REDUC, ASSOC-PROOF-PROVES, PROVES-IS-FORMULA, and COMMUT-PROOF-PROVES, and expanding F-OR and RT-ASSOC-PROOF, to: T. Q.E.D. [ 0.0 0.2 0.0 ] RT-ASSOC-PROOF-PROVES (TOGGLE G0231 RT-ASSOC-PROOF T) [ 0.0 0.0 0.0 ] G0231 (DEFN INSERT-PROOF (A B C PF) (COMMUT-PROOF (F-OR A C) B (ASSOC-PROOF A C B (EXPAN-PROOF A (F-OR C B) (COMMUT-PROOF B C PF))))) From the definition we can conclude that (LISTP (INSERT-PROOF A B C PF)) is a theorem. [ 0.0 0.0 0.0 ] INSERT-PROOF (PROVE-LEMMA INSERT-PROOF-PROVES (REWRITE) (IMPLIES (AND (PROVES PF (F-OR B C)) (FORMULA A T 0) (FORMULA B T 0) (FORMULA C T 0) (EQUAL CONCL (F-OR B (F-OR A C)))) (PROVES (INSERT-PROOF A B C PF) CONCL))) This conjecture can be simplified, using the abbreviations AND, IMPLIES, and F-OR, to the formula: (IMPLIES (AND (PROVES PF (LIST 'OR B C)) (FORMULA A T 0) (FORMULA B T 0) (FORMULA C T 0) (EQUAL CONCL (LIST 'OR B (LIST 'OR A C)))) (PROVES (INSERT-PROOF A B C PF) CONCL)). This simplifies, rewriting with FORMULA-OR-REDUC, ASSOC-PROOF-PROVES, COMMUT-PROOF-PROVES, PROVES-IS-FORMULA, and EXPAN-PROOF-PROVES, and expanding F-OR and INSERT-PROOF, to: T. Q.E.D. [ 0.0 0.1 0.0 ] INSERT-PROOF-PROVES (TOGGLE G0232 INSERT-PROOF T) [ 0.0 0.0 0.0 ] G0232 (DEFN M2-PROOF-STEP (EXP1 EXP2 FLIST PF) (IF (NLISTP FLIST) NIL (IF (NLISTP (CDR FLIST)) (IF (EQUAL EXP2 (CAR FLIST)) PF NIL) (IF (EQUAL EXP2 (CAR FLIST)) (RT-ASSOC-PROOF EXP1 EXP2 (MAKE-DISJUNCT (CDR FLIST)) (RT-EXPAN-PROOF (F-OR EXP1 EXP2) (MAKE-DISJUNCT (CDR FLIST)) PF)) (INSERT-PROOF (CAR FLIST) EXP1 (MAKE-DISJUNCT (CDR FLIST)) (M2-PROOF-STEP EXP1 EXP2 (CDR FLIST) PF)))))) Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP establish that the measure (COUNT FLIST) decreases according to the well-founded relation LESSP in each recursive call. Hence, M2-PROOF-STEP is accepted under the definitional principle. From the definition we can conclude that: (OR (OR (LITATOM (M2-PROOF-STEP EXP1 EXP2 FLIST PF)) (LISTP (M2-PROOF-STEP EXP1 EXP2 FLIST PF))) (EQUAL (M2-PROOF-STEP EXP1 EXP2 FLIST PF) PF)) is a theorem. [ 0.0 0.0 0.0 ] M2-PROOF-STEP (PROVE-LEMMA M2-PROOF-STEP-PROVES (REWRITE) (IMPLIES (AND (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP2 FLIST) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (PROVES PF (F-OR EXP1 EXP2))) (PROVES (M2-PROOF-STEP EXP1 EXP2 FLIST PF) (F-OR EXP1 (MAKE-DISJUNCT FLIST)))) ((DISABLE FORMULA))) This formula can be simplified, using the abbreviations AND, IMPLIES, and F-OR, to the new conjecture: (IMPLIES (AND (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP2 FLIST) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES (M2-PROOF-STEP EXP1 EXP2 FLIST PF) (LIST 'OR EXP1 (MAKE-DISJUNCT FLIST)))), which we will name *1. Perhaps we can prove it by induction. There are four plausible inductions. However, they merge into one likely candidate induction. We will induct according to the following scheme: (AND (IMPLIES (NLISTP FLIST) (p EXP1 EXP2 FLIST PF)) (IMPLIES (AND (NOT (NLISTP FLIST)) (NLISTP (CDR FLIST)) (EQUAL EXP2 (CAR FLIST))) (p EXP1 EXP2 FLIST PF)) (IMPLIES (AND (NOT (NLISTP FLIST)) (NLISTP (CDR FLIST)) (NOT (EQUAL EXP2 (CAR FLIST)))) (p EXP1 EXP2 FLIST PF)) (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (EQUAL EXP2 (CAR FLIST))) (p EXP1 EXP2 FLIST PF)) (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (NOT (EQUAL EXP2 (CAR FLIST))) (p EXP1 EXP2 (CDR FLIST) PF)) (p EXP1 EXP2 FLIST PF))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP establish that the measure (COUNT FLIST) 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 (NLISTP FLIST) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP2 FLIST) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES (M2-PROOF-STEP EXP1 EXP2 FLIST PF) (LIST 'OR EXP1 (MAKE-DISJUNCT FLIST)))). This simplifies, expanding the functions NLISTP, MAKE-DISJUNCT, and FORMULA, to: T. Case 6. (IMPLIES (AND (NOT (NLISTP FLIST)) (NLISTP (CDR FLIST)) (EQUAL EXP2 (CAR FLIST)) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP2 FLIST) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES (M2-PROOF-STEP EXP1 EXP2 FLIST PF) (LIST 'OR EXP1 (MAKE-DISJUNCT FLIST)))). This simplifies, expanding the definitions of NLISTP, MAKE-DISJUNCT, MEMBER, and M2-PROOF-STEP, to: T. Case 5. (IMPLIES (AND (NOT (NLISTP FLIST)) (NLISTP (CDR FLIST)) (NOT (EQUAL EXP2 (CAR FLIST))) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP2 FLIST) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES (M2-PROOF-STEP EXP1 EXP2 FLIST PF) (LIST 'OR EXP1 (MAKE-DISJUNCT FLIST)))). This simplifies, expanding the functions NLISTP, MAKE-DISJUNCT, MEMBER, and M2-PROOF-STEP, to: (IMPLIES (AND (LISTP FLIST) (NOT (LISTP (CDR FLIST))) (NOT (EQUAL EXP2 (CAR FLIST))) (FORMULA (CAR FLIST) T 0) (MEMBER EXP2 (CDR FLIST)) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES NIL (LIST 'OR EXP1 (CAR FLIST)))), which further simplifies, opening up the definition of MEMBER, to: T. Case 4. (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (EQUAL EXP2 (CAR FLIST)) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP2 FLIST) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES (M2-PROOF-STEP EXP1 EXP2 FLIST PF) (LIST 'OR EXP1 (MAKE-DISJUNCT FLIST)))), which simplifies, applying FORMULA-OR-REDUC, RT-EXPAN-PROOF-PROVES, and RT-ASSOC-PROOF-PROVES, and unfolding the functions NLISTP, MAKE-DISJUNCT, F-OR, MEMBER, and M2-PROOF-STEP, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (NOT (EQUAL EXP2 (CAR FLIST))) (NOT (FORMULA (MAKE-DISJUNCT (CDR FLIST)) T 0)) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP2 FLIST) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES (M2-PROOF-STEP EXP1 EXP2 FLIST PF) (LIST 'OR EXP1 (MAKE-DISJUNCT FLIST)))). This simplifies, rewriting with FORMULA-OR-REDUC, and expanding NLISTP, MAKE-DISJUNCT, and F-OR, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (NOT (EQUAL EXP2 (CAR FLIST))) (NOT (MEMBER EXP2 (CDR FLIST))) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP2 FLIST) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES (M2-PROOF-STEP EXP1 EXP2 FLIST PF) (LIST 'OR EXP1 (MAKE-DISJUNCT FLIST)))), which simplifies, applying FORMULA-OR-REDUC, and opening up the functions NLISTP, MAKE-DISJUNCT, F-OR, and MEMBER, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (NOT (EQUAL EXP2 (CAR FLIST))) (PROVES (M2-PROOF-STEP EXP1 EXP2 (CDR FLIST) PF) (LIST 'OR EXP1 (MAKE-DISJUNCT (CDR FLIST)))) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP2 FLIST) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES (M2-PROOF-STEP EXP1 EXP2 FLIST PF) (LIST 'OR EXP1 (MAKE-DISJUNCT FLIST)))). This simplifies, rewriting with FORMULA-OR-REDUC and INSERT-PROOF-PROVES, and unfolding the definitions of NLISTP, MAKE-DISJUNCT, F-OR, MEMBER, and M2-PROOF-STEP, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] M2-PROOF-STEP-PROVES (PROVE-LEMMA M2-PROOF-STEP-PROVES1 (REWRITE) (IMPLIES (AND (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP2 FLIST) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (PROVES PF (F-OR EXP1 EXP2)) (EQUAL CONCL (F-OR EXP1 (MAKE-DISJUNCT FLIST)))) (PROVES (M2-PROOF-STEP EXP1 EXP2 FLIST PF) CONCL)) ((USE (M2-PROOF-STEP-PROVES)))) This conjecture can be simplified, using the abbreviations AND, IMPLIES, and F-OR, to: (IMPLIES (AND (IMPLIES (AND (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP2 FLIST) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES (M2-PROOF-STEP EXP1 EXP2 FLIST PF) (LIST 'OR EXP1 (MAKE-DISJUNCT FLIST)))) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP2 FLIST) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (PROVES PF (LIST 'OR EXP1 EXP2)) (EQUAL CONCL (LIST 'OR EXP1 (MAKE-DISJUNCT FLIST)))) (PROVES (M2-PROOF-STEP EXP1 EXP2 FLIST PF) CONCL)). This simplifies, opening up AND and IMPLIES, to: T. Q.E.D. [ 0.0 0.1 0.0 ] M2-PROOF-STEP-PROVES1 (TOGGLE G0233 M2-PROOF-STEP T) [ 0.0 0.0 0.0 ] G0233 (TOGGLE G0234 M2-PROOF-STEP-PROVES T) [ 0.0 0.0 0.0 ] G0234 (DEFN M2-PROOF (EXP1 EXP2 FLIST PF) (IF (NLISTP FLIST) NIL (IF (EQUAL EXP1 EXP2) (M1-PROOF EXP1 FLIST (CONTRAC-PROOF EXP1 PF)) (IF (EQUAL EXP1 (CAR FLIST)) (M2-PROOF-STEP EXP1 EXP2 (CDR FLIST) PF) (IF (EQUAL EXP2 (CAR FLIST)) (M2-PROOF-STEP EXP2 EXP1 (CDR FLIST) (COMMUT-PROOF EXP1 EXP2 PF)) (EXPAN-PROOF (CAR FLIST) (MAKE-DISJUNCT (CDR FLIST)) (M2-PROOF EXP1 EXP2 (CDR FLIST) PF))))))) Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP inform us that the measure (COUNT FLIST) decreases according to the well-founded relation LESSP in each recursive call. Hence, M2-PROOF is accepted under the principle of definition. Note that: (OR (OR (LITATOM (M2-PROOF EXP1 EXP2 FLIST PF)) (LISTP (M2-PROOF EXP1 EXP2 FLIST PF))) (EQUAL (M2-PROOF EXP1 EXP2 FLIST PF) PF)) is a theorem. [ 0.0 0.0 0.0 ] M2-PROOF (PROVE-LEMMA M1-PROOF-PROVES (REWRITE) (IMPLIES (AND (FORMULA (MAKE-DISJUNCT FLIST) T 0) (MEMBER EXP FLIST) (PROVES PF EXP) (EQUAL CONCL (MAKE-DISJUNCT FLIST))) (PROVES (M1-PROOF EXP FLIST PF) CONCL)) ((USE (M1-PROOF-PROVES1)))) This conjecture simplifies, rewriting with M1-PROOF-PROVES1, and unfolding the functions AND and IMPLIES, to: T. Q.E.D. [ 0.0 0.0 0.0 ] M1-PROOF-PROVES (PROVE-LEMMA M2-PROOF-PROVES (REWRITE) (IMPLIES (AND (FORMULA (MAKE-DISJUNCT FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 FLIST) (MEMBER EXP2 FLIST) (PROVES PF (F-OR EXP1 EXP2))) (PROVES (M2-PROOF EXP1 EXP2 FLIST PF) (MAKE-DISJUNCT FLIST))) ((DISABLE FORMULA))) This conjecture can be simplified, using the abbreviations AND, IMPLIES, and F-OR, to: (IMPLIES (AND (FORMULA (MAKE-DISJUNCT FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 FLIST) (MEMBER EXP2 FLIST) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES (M2-PROOF EXP1 EXP2 FLIST PF) (MAKE-DISJUNCT FLIST))). Call the above conjecture *1. 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 (NLISTP FLIST) (p EXP1 EXP2 FLIST PF)) (IMPLIES (AND (NOT (NLISTP FLIST)) (NLISTP (CDR FLIST))) (p EXP1 EXP2 FLIST PF)) (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (p EXP1 EXP2 (CDR FLIST) PF)) (p EXP1 EXP2 FLIST PF))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP inform us that the measure (COUNT FLIST) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme leads to the following six new goals: Case 6. (IMPLIES (AND (NLISTP FLIST) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 FLIST) (MEMBER EXP2 FLIST) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES (M2-PROOF EXP1 EXP2 FLIST PF) (MAKE-DISJUNCT FLIST))). This simplifies, opening up the definitions of NLISTP, MAKE-DISJUNCT, and FORMULA, to: T. Case 5. (IMPLIES (AND (NOT (NLISTP FLIST)) (NLISTP (CDR FLIST)) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 FLIST) (MEMBER EXP2 FLIST) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES (M2-PROOF EXP1 EXP2 FLIST PF) (MAKE-DISJUNCT FLIST))). This simplifies, applying CONTRAC-PROOF-PROVES and M1-PROOF-PROVES, and expanding the functions NLISTP, MAKE-DISJUNCT, MEMBER, M2-PROOF, and F-OR, to eight new formulas: Case 5.8. (IMPLIES (AND (LISTP FLIST) (NOT (LISTP (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (EQUAL EXP1 (CAR FLIST)) (MEMBER EXP2 (CDR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (NOT (EQUAL EXP1 EXP2))) (PROVES (M2-PROOF-STEP EXP1 EXP2 (CDR FLIST) PF) EXP1)), which again simplifies, clearly, to: (IMPLIES (AND (LISTP FLIST) (NOT (LISTP (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA EXP2 T 0) (MEMBER EXP2 (CDR FLIST)) (PROVES PF (LIST 'OR (CAR FLIST) EXP2)) (NOT (EQUAL (CAR FLIST) EXP2))) (PROVES (M2-PROOF-STEP (CAR FLIST) EXP2 (CDR FLIST) PF) (CAR FLIST))), which further simplifies, expanding the definition of MEMBER, to: T. Case 5.7. (IMPLIES (AND (LISTP FLIST) (NOT (LISTP (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (EQUAL EXP1 (CAR FLIST)) (MEMBER EXP2 (CDR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (EQUAL EXP1 EXP2)) (PROVES (M1-PROOF EXP1 FLIST (CONTRAC-PROOF EXP1 PF)) EXP1)), which again simplifies, expanding the definition of MEMBER, to: T. Case 5.6. (IMPLIES (AND (LISTP FLIST) (NOT (LISTP (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 (CDR FLIST)) (EQUAL EXP2 (CAR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (NOT (EQUAL EXP1 EXP2))) (PROVES (M2-PROOF-STEP EXP2 EXP1 (CDR FLIST) (COMMUT-PROOF EXP1 EXP2 PF)) EXP2)), which again simplifies, clearly, to: (IMPLIES (AND (LISTP FLIST) (NOT (LISTP (CDR FLIST))) (FORMULA EXP1 T 0) (FORMULA (CAR FLIST) T 0) (MEMBER EXP1 (CDR FLIST)) (PROVES PF (LIST 'OR EXP1 (CAR FLIST))) (NOT (EQUAL EXP1 (CAR FLIST)))) (PROVES (M2-PROOF-STEP (CAR FLIST) EXP1 (CDR FLIST) (COMMUT-PROOF EXP1 (CAR FLIST) PF)) (CAR FLIST))), which further simplifies, opening up the definition of MEMBER, to: T. Case 5.5. (IMPLIES (AND (LISTP FLIST) (NOT (LISTP (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 (CDR FLIST)) (EQUAL EXP2 (CAR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (EQUAL EXP1 EXP2)) (PROVES (M1-PROOF EXP1 FLIST (CONTRAC-PROOF EXP1 PF)) EXP2)), which again simplifies, expanding the function MEMBER, to: T. Case 5.4. (IMPLIES (AND (LISTP FLIST) (NOT (LISTP (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 (CDR FLIST)) (MEMBER EXP2 (CDR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (NOT (EQUAL EXP1 EXP2)) (EQUAL EXP1 (CAR FLIST))) (PROVES (M2-PROOF-STEP EXP1 EXP2 (CDR FLIST) PF) (CAR FLIST))), which again simplifies, expanding MEMBER, to: T. Case 5.3. (IMPLIES (AND (LISTP FLIST) (NOT (LISTP (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 (CDR FLIST)) (MEMBER EXP2 (CDR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (NOT (EQUAL EXP1 EXP2)) (NOT (EQUAL EXP1 (CAR FLIST))) (NOT (EQUAL EXP2 (CAR FLIST)))) (PROVES (EXPAN-PROOF (CAR FLIST) (MAKE-DISJUNCT (CDR FLIST)) (M2-PROOF EXP1 EXP2 (CDR FLIST) PF)) (CAR FLIST))), which further simplifies, expanding MEMBER, to: T. Case 5.2. (IMPLIES (AND (LISTP FLIST) (NOT (LISTP (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 (CDR FLIST)) (MEMBER EXP2 (CDR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (NOT (EQUAL EXP1 EXP2)) (NOT (EQUAL EXP1 (CAR FLIST))) (EQUAL EXP2 (CAR FLIST))) (PROVES (M2-PROOF-STEP EXP2 EXP1 (CDR FLIST) (COMMUT-PROOF EXP1 EXP2 PF)) (CAR FLIST))), which again simplifies, expanding the function MEMBER, to: T. Case 5.1. (IMPLIES (AND (LISTP FLIST) (NOT (LISTP (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 (CDR FLIST)) (MEMBER EXP2 (CDR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (EQUAL EXP1 EXP2)) (PROVES (M1-PROOF EXP1 FLIST (CONTRAC-PROOF EXP1 PF)) (CAR FLIST))), which again simplifies, rewriting with CONTRAC-PROOF-PROVES and M1-PROOF-PROVES, and unfolding F-OR, MEMBER, and MAKE-DISJUNCT, to: T. Case 4. (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (NOT (FORMULA (MAKE-DISJUNCT (CDR FLIST)) T 0)) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 FLIST) (MEMBER EXP2 FLIST) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES (M2-PROOF EXP1 EXP2 FLIST PF) (MAKE-DISJUNCT FLIST))). This simplifies, rewriting with the lemma FORMULA-OR-REDUC, and expanding NLISTP, MAKE-DISJUNCT, and F-OR, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (NOT (MEMBER EXP1 (CDR FLIST))) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 FLIST) (MEMBER EXP2 FLIST) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES (M2-PROOF EXP1 EXP2 FLIST PF) (MAKE-DISJUNCT FLIST))). This simplifies, rewriting with the lemmas FORMULA-OR-REDUC, CONTRAC-PROOF-PROVES, and M1-PROOF-PROVES, and expanding NLISTP, MAKE-DISJUNCT, F-OR, MEMBER, and M2-PROOF, to the following two new goals: Case 3.2. (IMPLIES (AND (LISTP FLIST) (LISTP (CDR FLIST)) (NOT (MEMBER EXP1 (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA (MAKE-DISJUNCT (CDR FLIST)) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (EQUAL EXP1 (CAR FLIST)) (MEMBER EXP2 (CDR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (NOT (EQUAL EXP1 EXP2))) (PROVES (M2-PROOF-STEP EXP1 EXP2 (CDR FLIST) PF) (LIST 'OR EXP1 (MAKE-DISJUNCT (CDR FLIST))))). But this again simplifies, appealing to the lemma M2-PROOF-STEP-PROVES1, and expanding the function F-OR, to: T. Case 3.1. (IMPLIES (AND (LISTP FLIST) (LISTP (CDR FLIST)) (NOT (MEMBER EXP1 (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA (MAKE-DISJUNCT (CDR FLIST)) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (EQUAL EXP1 (CAR FLIST)) (MEMBER EXP2 (CDR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (EQUAL EXP1 EXP2)) (PROVES (M1-PROOF EXP1 FLIST (CONTRAC-PROOF EXP1 PF)) (LIST 'OR EXP1 (MAKE-DISJUNCT (CDR FLIST))))), which again simplifies, trivially, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (NOT (MEMBER EXP2 (CDR FLIST))) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 FLIST) (MEMBER EXP2 FLIST) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES (M2-PROOF EXP1 EXP2 FLIST PF) (MAKE-DISJUNCT FLIST))). This simplifies, rewriting with FORMULA-OR-REDUC, CONTRAC-PROOF-PROVES, and M1-PROOF-PROVES, and unfolding the functions NLISTP, MAKE-DISJUNCT, F-OR, MEMBER, and M2-PROOF, to two new formulas: Case 2.2. (IMPLIES (AND (LISTP FLIST) (LISTP (CDR FLIST)) (NOT (MEMBER EXP2 (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA (MAKE-DISJUNCT (CDR FLIST)) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 (CDR FLIST)) (EQUAL EXP2 (CAR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (NOT (EQUAL EXP1 EXP2))) (PROVES (M2-PROOF-STEP EXP2 EXP1 (CDR FLIST) (COMMUT-PROOF EXP1 EXP2 PF)) (LIST 'OR EXP2 (MAKE-DISJUNCT (CDR FLIST))))), which again simplifies, appealing to the lemmas COMMUT-PROOF-PROVES, PROVES-IS-FORMULA, and M2-PROOF-STEP-PROVES1, and unfolding F-OR, to: T. Case 2.1. (IMPLIES (AND (LISTP FLIST) (LISTP (CDR FLIST)) (NOT (MEMBER EXP2 (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA (MAKE-DISJUNCT (CDR FLIST)) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 (CDR FLIST)) (EQUAL EXP2 (CAR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (EQUAL EXP1 EXP2)) (PROVES (M1-PROOF EXP1 FLIST (CONTRAC-PROOF EXP1 PF)) (LIST 'OR EXP2 (MAKE-DISJUNCT (CDR FLIST))))), which again simplifies, obviously, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (PROVES (M2-PROOF EXP1 EXP2 (CDR FLIST) PF) (MAKE-DISJUNCT (CDR FLIST))) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 FLIST) (MEMBER EXP2 FLIST) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES (M2-PROOF EXP1 EXP2 FLIST PF) (MAKE-DISJUNCT FLIST))). This simplifies, applying PROVES-IS-FORMULA, FORMULA-OR-REDUC, CONTRAC-PROOF-PROVES, and M1-PROOF-PROVES, and unfolding the definitions of NLISTP, MAKE-DISJUNCT, F-OR, MEMBER, and M2-PROOF, to eight new conjectures: Case 1.8. (IMPLIES (AND (LISTP FLIST) (LISTP (CDR FLIST)) (PROVES (M2-PROOF EXP1 EXP2 (CDR FLIST) PF) (MAKE-DISJUNCT (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (EQUAL EXP1 (CAR FLIST)) (MEMBER EXP2 (CDR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (NOT (EQUAL EXP1 EXP2))) (PROVES (M2-PROOF-STEP EXP1 EXP2 (CDR FLIST) PF) (LIST 'OR EXP1 (MAKE-DISJUNCT (CDR FLIST))))), which again simplifies, rewriting with PROVES-IS-FORMULA and M2-PROOF-STEP-PROVES1, and expanding the function F-OR, to: T. Case 1.7. (IMPLIES (AND (LISTP FLIST) (LISTP (CDR FLIST)) (PROVES (M2-PROOF EXP1 EXP2 (CDR FLIST) PF) (MAKE-DISJUNCT (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (EQUAL EXP1 (CAR FLIST)) (MEMBER EXP2 (CDR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (EQUAL EXP1 EXP2)) (PROVES (M1-PROOF EXP1 FLIST (CONTRAC-PROOF EXP1 PF)) (LIST 'OR EXP1 (MAKE-DISJUNCT (CDR FLIST))))). But this again simplifies, rewriting with CONTRAC-PROOF-PROVES, FORMULA-OR-REDUC, PROVES-IS-FORMULA, and M1-PROOF-PROVES, and expanding the definitions of M2-PROOF, MEMBER, F-OR, and MAKE-DISJUNCT, to: T. Case 1.6. (IMPLIES (AND (LISTP FLIST) (LISTP (CDR FLIST)) (PROVES (M2-PROOF EXP1 EXP2 (CDR FLIST) PF) (MAKE-DISJUNCT (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 (CDR FLIST)) (EQUAL EXP2 (CAR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (NOT (EQUAL EXP1 EXP2))) (PROVES (M2-PROOF-STEP EXP2 EXP1 (CDR FLIST) (COMMUT-PROOF EXP1 EXP2 PF)) (LIST 'OR EXP2 (MAKE-DISJUNCT (CDR FLIST))))). This again simplifies, rewriting with COMMUT-PROOF-PROVES, PROVES-IS-FORMULA, and M2-PROOF-STEP-PROVES1, and opening up F-OR, to: T. Case 1.5. (IMPLIES (AND (LISTP FLIST) (LISTP (CDR FLIST)) (PROVES (M2-PROOF EXP1 EXP2 (CDR FLIST) PF) (MAKE-DISJUNCT (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 (CDR FLIST)) (EQUAL EXP2 (CAR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (EQUAL EXP1 EXP2)) (PROVES (M1-PROOF EXP1 FLIST (CONTRAC-PROOF EXP1 PF)) (LIST 'OR EXP2 (MAKE-DISJUNCT (CDR FLIST))))). But this again simplifies, rewriting with CONTRAC-PROOF-PROVES, FORMULA-OR-REDUC, PROVES-IS-FORMULA, and M1-PROOF-PROVES, and opening up the definitions of M2-PROOF, MEMBER, F-OR, and MAKE-DISJUNCT, to: T. Case 1.4. (IMPLIES (AND (LISTP FLIST) (LISTP (CDR FLIST)) (PROVES (M2-PROOF EXP1 EXP2 (CDR FLIST) PF) (MAKE-DISJUNCT (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 (CDR FLIST)) (MEMBER EXP2 (CDR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (NOT (EQUAL EXP1 EXP2)) (EQUAL EXP1 (CAR FLIST))) (PROVES (M2-PROOF-STEP EXP1 EXP2 (CDR FLIST) PF) (LIST 'OR (CAR FLIST) (MAKE-DISJUNCT (CDR FLIST))))). However this again simplifies, rewriting with PROVES-IS-FORMULA and M2-PROOF-STEP-PROVES1, and expanding the function F-OR, to: T. Case 1.3. (IMPLIES (AND (LISTP FLIST) (LISTP (CDR FLIST)) (PROVES (M2-PROOF EXP1 EXP2 (CDR FLIST) PF) (MAKE-DISJUNCT (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 (CDR FLIST)) (MEMBER EXP2 (CDR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (NOT (EQUAL EXP1 EXP2)) (NOT (EQUAL EXP1 (CAR FLIST))) (NOT (EQUAL EXP2 (CAR FLIST)))) (PROVES (EXPAN-PROOF (CAR FLIST) (MAKE-DISJUNCT (CDR FLIST)) (M2-PROOF EXP1 EXP2 (CDR FLIST) PF)) (LIST 'OR (CAR FLIST) (MAKE-DISJUNCT (CDR FLIST))))). This again simplifies, applying the lemma EXPAN-PROOF-PROVES, and unfolding F-OR, to: T. Case 1.2. (IMPLIES (AND (LISTP FLIST) (LISTP (CDR FLIST)) (PROVES (M2-PROOF EXP1 EXP2 (CDR FLIST) PF) (MAKE-DISJUNCT (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 (CDR FLIST)) (MEMBER EXP2 (CDR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (NOT (EQUAL EXP1 EXP2)) (NOT (EQUAL EXP1 (CAR FLIST))) (EQUAL EXP2 (CAR FLIST))) (PROVES (M2-PROOF-STEP EXP2 EXP1 (CDR FLIST) (COMMUT-PROOF EXP1 EXP2 PF)) (LIST 'OR (CAR FLIST) (MAKE-DISJUNCT (CDR FLIST))))), which again simplifies, rewriting with COMMUT-PROOF-PROVES, PROVES-IS-FORMULA, and M2-PROOF-STEP-PROVES1, and expanding the definition of F-OR, to: T. Case 1.1. (IMPLIES (AND (LISTP FLIST) (LISTP (CDR FLIST)) (PROVES (M2-PROOF EXP1 EXP2 (CDR FLIST) PF) (MAKE-DISJUNCT (CDR FLIST))) (FORMULA (CAR FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 (CDR FLIST)) (MEMBER EXP2 (CDR FLIST)) (PROVES PF (LIST 'OR EXP1 EXP2)) (EQUAL EXP1 EXP2)) (PROVES (M1-PROOF EXP1 FLIST (CONTRAC-PROOF EXP1 PF)) (LIST 'OR (CAR FLIST) (MAKE-DISJUNCT (CDR FLIST))))). But this again simplifies, appealing to the lemmas CONTRAC-PROOF-PROVES, FORMULA-OR-REDUC, PROVES-IS-FORMULA, and M1-PROOF-PROVES, and opening up the definitions of M2-PROOF, MEMBER, F-OR, and MAKE-DISJUNCT, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.1 ] M2-PROOF-PROVES (PROVE-LEMMA M2-PROOF-PROVES1 (REWRITE) (IMPLIES (AND (FORMULA (MAKE-DISJUNCT FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 FLIST) (MEMBER EXP2 FLIST) (PROVES PF (F-OR EXP1 EXP2)) (EQUAL CONCL (MAKE-DISJUNCT FLIST))) (PROVES (M2-PROOF EXP1 EXP2 FLIST PF) CONCL)) ((USE (M2-PROOF-PROVES)))) This conjecture can be simplified, using the abbreviations AND, IMPLIES, and F-OR, to: (IMPLIES (AND (IMPLIES (AND (FORMULA (MAKE-DISJUNCT FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 FLIST) (MEMBER EXP2 FLIST) (PROVES PF (LIST 'OR EXP1 EXP2))) (PROVES (M2-PROOF EXP1 EXP2 FLIST PF) (MAKE-DISJUNCT FLIST))) (FORMULA (MAKE-DISJUNCT FLIST) T 0) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (MEMBER EXP1 FLIST) (MEMBER EXP2 FLIST) (PROVES PF (LIST 'OR EXP1 EXP2)) (EQUAL CONCL (MAKE-DISJUNCT FLIST))) (PROVES (M2-PROOF EXP1 EXP2 FLIST PF) CONCL)). This simplifies, appealing to the lemma M2-PROOF-PROVES, and expanding AND, F-OR, and IMPLIES, to: T. Q.E.D. [ 0.0 0.1 0.0 ] M2-PROOF-PROVES1 (TOGGLE G0235 M2-PROOF T) [ 0.0 0.0 0.0 ] G0235 (TOGGLE G0236 M2-PROOF-PROVES T) [ 0.0 0.0 0.0 ] G0236 (DEFN M3-PROOF (EXP1 EXP2 FLIST2 PF) (CONTRAC-PROOF (MAKE-DISJUNCT FLIST2) (CONTRAC-PROOF (F-OR (MAKE-DISJUNCT FLIST2) (MAKE-DISJUNCT FLIST2)) (M2-PROOF (F-OR (MAKE-DISJUNCT FLIST2) (MAKE-DISJUNCT FLIST2)) EXP1 (CONS (F-OR (MAKE-DISJUNCT FLIST2) (MAKE-DISJUNCT FLIST2)) (CONS (MAKE-DISJUNCT FLIST2) FLIST2)) (ASSOC-PROOF (MAKE-DISJUNCT FLIST2) (MAKE-DISJUNCT FLIST2) EXP1 (COMMUT-PROOF (F-OR (MAKE-DISJUNCT FLIST2) EXP1) (MAKE-DISJUNCT FLIST2) (M2-PROOF (F-OR (MAKE-DISJUNCT FLIST2) EXP1) EXP2 (CONS (F-OR (MAKE-DISJUNCT FLIST2) EXP1) FLIST2) (ASSOC-PROOF (MAKE-DISJUNCT FLIST2) EXP1 EXP2 (COMMUT-PROOF (F-OR EXP1 EXP2) (MAKE-DISJUNCT FLIST2) PF))))))))) Observe that (LISTP (M3-PROOF EXP1 EXP2 FLIST2 PF)) is a theorem. [ 0.0 0.0 0.0 ] M3-PROOF (DEFN M-PROOF (FLIST1 FLIST2 PF) (IF (NLISTP FLIST1) NIL (IF (NLISTP (CDR FLIST1)) (M1-PROOF (CAR FLIST1) FLIST2 PF) (IF (NLISTP (CDDR FLIST1)) (M2-PROOF (CAR FLIST1) (CADR FLIST1) FLIST2 PF) (M3-PROOF (CAR FLIST1) (CADR FLIST1) FLIST2 (M-PROOF (CONS (F-OR (CAR FLIST1) (CADR FLIST1)) (CDDR FLIST1)) (CONS (F-OR (CAR FLIST1) (CADR FLIST1)) FLIST2) (ASSOC-PROOF (CAR FLIST1) (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1)) PF)))))) ((LESSP (LENGTH FLIST1)))) Linear arithmetic, the lemmas SUB1-ADD1 and CDR-CONS, and the definitions of LESSP, LENGTH, F-OR, and NLISTP establish that the measure (LENGTH FLIST1) decreases according to the well-founded relation LESSP in each recursive call. Hence, M-PROOF is accepted under the principle of definition. Observe that: (OR (OR (LITATOM (M-PROOF FLIST1 FLIST2 PF)) (LISTP (M-PROOF FLIST1 FLIST2 PF))) (EQUAL (M-PROOF FLIST1 FLIST2 PF) PF)) is a theorem. [ 0.0 0.0 0.0 ] M-PROOF (PROVE-LEMMA SUBSET-CONS (REWRITE) (IMPLIES (SUBSET X Y) (SUBSET X (CONS Z Y)))) 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 X) (p (CDR X) Z Y)) (p X Z Y)) (IMPLIES (NOT (LISTP X)) (p X Z Y))). Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates three new conjectures: Case 3. (IMPLIES (AND (LISTP X) (NOT (SUBSET (CDR X) Y)) (SUBSET X Y)) (SUBSET X (CONS Z Y))), which simplifies, expanding the function SUBSET, to: T. Case 2. (IMPLIES (AND (LISTP X) (SUBSET (CDR X) (CONS Z Y)) (SUBSET X Y)) (SUBSET X (CONS Z Y))), which simplifies, appealing to the lemmas CDR-CONS and CAR-CONS, and expanding SUBSET and MEMBER, to: T. Case 1. (IMPLIES (AND (NOT (LISTP X)) (SUBSET X Y)) (SUBSET X (CONS Z Y))), which simplifies, opening up SUBSET, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.2 0.0 ] SUBSET-CONS (DEFN FORM-LIST (FLIST) (IF (LISTP FLIST) (AND (FORMULA (CAR FLIST) T 0) (FORM-LIST (CDR FLIST))) T)) Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT FLIST) decreases according to the well-founded relation LESSP in each recursive call. Hence, FORM-LIST is accepted under the definitional principle. Note that (OR (FALSEP (FORM-LIST FLIST)) (TRUEP (FORM-LIST FLIST))) is a theorem. [ 0.0 0.0 0.0 ] FORM-LIST (PROVE-LEMMA FORMLIST-FORMULA-MAKE-DISJ (REWRITE) (IMPLIES (AND (FORM-LIST FLIST) (LISTP FLIST)) (FORMULA (MAKE-DISJUNCT FLIST) T 0)) ((DISABLE FORMULA))) 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 FLIST) (p (CDR FLIST))) (p FLIST)) (IMPLIES (NOT (LISTP FLIST)) (p FLIST))). Linear arithmetic and the lemma CDR-LESSP can be used to show that the measure (COUNT FLIST) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates the following three new conjectures: Case 3. (IMPLIES (AND (NOT (FORM-LIST (CDR FLIST))) (FORM-LIST FLIST) (LISTP FLIST)) (FORMULA (MAKE-DISJUNCT FLIST) T 0)). This simplifies, opening up the function FORM-LIST, to: T. Case 2. (IMPLIES (AND (NOT (LISTP (CDR FLIST))) (FORM-LIST FLIST) (LISTP FLIST)) (FORMULA (MAKE-DISJUNCT FLIST) T 0)). This simplifies, unfolding the functions FORM-LIST and MAKE-DISJUNCT, to: T. Case 1. (IMPLIES (AND (FORMULA (MAKE-DISJUNCT (CDR FLIST)) T 0) (FORM-LIST FLIST) (LISTP FLIST)) (FORMULA (MAKE-DISJUNCT FLIST) T 0)). This simplifies, expanding FORM-LIST, MAKE-DISJUNCT, and F-OR, to the new goal: (IMPLIES (AND (FORMULA (MAKE-DISJUNCT (CDR FLIST)) T 0) (FORMULA (CAR FLIST) T 0) (FORM-LIST (CDR FLIST)) (LISTP FLIST) (LISTP (CDR FLIST))) (FORMULA (LIST 'OR (CAR FLIST) (MAKE-DISJUNCT (CDR FLIST))) T 0)), which again simplifies, appealing to the lemma FORMULA-OR-REDUC, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] FORMLIST-FORMULA-MAKE-DISJ (PROVE-LEMMA M3-PROOF-PROVES (REWRITE) (IMPLIES (AND (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (FORM-LIST FLIST2) (PROVES PF (MAKE-DISJUNCT (CONS (F-OR EXP1 EXP2) FLIST2))) (MEMBER EXP1 FLIST2) (MEMBER EXP2 FLIST2)) (PROVES (M3-PROOF EXP1 EXP2 FLIST2 PF) (MAKE-DISJUNCT FLIST2)))) This formula can be simplified, using the abbreviations AND, IMPLIES, and F-OR, to the new conjecture: (IMPLIES (AND (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (FORM-LIST FLIST2) (PROVES PF (MAKE-DISJUNCT (CONS (LIST 'OR EXP1 EXP2) FLIST2))) (MEMBER EXP1 FLIST2) (MEMBER EXP2 FLIST2)) (PROVES (M3-PROOF EXP1 EXP2 FLIST2 PF) (MAKE-DISJUNCT FLIST2))), which simplifies, applying the lemmas CAR-CONS, CDR-CONS, CONTRAC-PROOF-PROVES, M2-PROOF-PROVES1, COMMUT-PROOF-PROVES, PROVES-IS-FORMULA, ASSOC-PROOF-PROVES, FORMULA-OR-REDUC, and FORMLIST-FORMULA-MAKE-DISJ, and unfolding the functions F-OR, MAKE-DISJUNCT, MEMBER, and M3-PROOF, to: T. Q.E.D. [ 0.0 0.9 0.0 ] M3-PROOF-PROVES (TOGGLE G0222 M3-PROOF T) [ 0.0 0.0 0.0 ] G0222 (PROVE-LEMMA M3-PROOF-PROVES1 (REWRITE) (IMPLIES (AND (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (FORM-LIST FLIST2) (PROVES PF (MAKE-DISJUNCT (CONS (F-OR EXP1 EXP2) FLIST2))) (MEMBER EXP1 FLIST2) (MEMBER EXP2 FLIST2) (EQUAL CONCL (MAKE-DISJUNCT FLIST2))) (PROVES (M3-PROOF EXP1 EXP2 FLIST2 PF) CONCL)) ((USE (M3-PROOF-PROVES)))) This conjecture can be simplified, using the abbreviations AND, IMPLIES, and F-OR, to: (IMPLIES (AND (IMPLIES (AND (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (FORM-LIST FLIST2) (PROVES PF (MAKE-DISJUNCT (CONS (LIST 'OR EXP1 EXP2) FLIST2))) (MEMBER EXP1 FLIST2) (MEMBER EXP2 FLIST2)) (PROVES (M3-PROOF EXP1 EXP2 FLIST2 PF) (MAKE-DISJUNCT FLIST2))) (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (FORM-LIST FLIST2) (PROVES PF (MAKE-DISJUNCT (CONS (LIST 'OR EXP1 EXP2) FLIST2))) (MEMBER EXP1 FLIST2) (MEMBER EXP2 FLIST2) (EQUAL CONCL (MAKE-DISJUNCT FLIST2))) (PROVES (M3-PROOF EXP1 EXP2 FLIST2 PF) CONCL)). This simplifies, rewriting with the lemmas CAR-CONS and CDR-CONS, and unfolding the definitions of F-OR, MAKE-DISJUNCT, AND, IMPLIES, and FORM-LIST, to: T. Q.E.D. [ 0.0 0.1 0.0 ] M3-PROOF-PROVES1 (TOGGLE G0229 M3-PROOF-PROVES T) [ 0.0 0.0 0.0 ] G0229 (PROVE-LEMMA M-PROOF-PROVES (REWRITE) (IMPLIES (AND (FORM-LIST FLIST1) (LISTP FLIST1) (FORM-LIST FLIST2) (LISTP FLIST2) (SUBSET FLIST1 FLIST2) (PROVES PF (MAKE-DISJUNCT FLIST1))) (PROVES (M-PROOF FLIST1 FLIST2 PF) (MAKE-DISJUNCT FLIST2))) ((INDUCT (M-PROOF FLIST1 FLIST2 PF)))) This conjecture can be simplified, using the abbreviations IMPLIES, NLISTP, NOT, OR, AND, and F-OR, to four new formulas: Case 4. T, which simplifies, obviously, to: T. Case 3. (IMPLIES (AND (LISTP FLIST1) (NOT (LISTP (CDR FLIST1))) (FORM-LIST FLIST1) (FORM-LIST FLIST2) (LISTP FLIST2) (SUBSET FLIST1 FLIST2) (PROVES PF (MAKE-DISJUNCT FLIST1))) (PROVES (M-PROOF FLIST1 FLIST2 PF) (MAKE-DISJUNCT FLIST2))). This simplifies, applying the lemmas FORMLIST-FORMULA-MAKE-DISJ and M1-PROOF-PROVES, and expanding FORM-LIST, SUBSET, MAKE-DISJUNCT, and M-PROOF, to: T. Case 2. (IMPLIES (AND (LISTP FLIST1) (LISTP (CDR FLIST1)) (NOT (LISTP (CDDR FLIST1))) (FORM-LIST FLIST1) (FORM-LIST FLIST2) (LISTP FLIST2) (SUBSET FLIST1 FLIST2) (PROVES PF (MAKE-DISJUNCT FLIST1))) (PROVES (M-PROOF FLIST1 FLIST2 PF) (MAKE-DISJUNCT FLIST2))). This simplifies, applying the lemmas FORMLIST-FORMULA-MAKE-DISJ and M2-PROOF-PROVES1, and unfolding the functions FORM-LIST, SUBSET, F-OR, MAKE-DISJUNCT, and M-PROOF, to: T. Case 1. (IMPLIES (AND (LISTP FLIST1) (LISTP (CDR FLIST1)) (LISTP (CDDR FLIST1)) (IMPLIES (AND (FORM-LIST (CONS (LIST 'OR (CAR FLIST1) (CADR FLIST1)) (CDDR FLIST1))) (LISTP (CONS (LIST 'OR (CAR FLIST1) (CADR FLIST1)) (CDDR FLIST1))) (FORM-LIST (CONS (LIST 'OR (CAR FLIST1) (CADR FLIST1)) FLIST2)) (LISTP (CONS (LIST 'OR (CAR FLIST1) (CADR FLIST1)) FLIST2)) (SUBSET (CONS (LIST 'OR (CAR FLIST1) (CADR FLIST1)) (CDDR FLIST1)) (CONS (LIST 'OR (CAR FLIST1) (CADR FLIST1)) FLIST2)) (PROVES (ASSOC-PROOF (CAR FLIST1) (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1)) PF) (MAKE-DISJUNCT (CONS (LIST 'OR (CAR FLIST1) (CADR FLIST1)) (CDDR FLIST1))))) (PROVES (M-PROOF (CONS (LIST 'OR (CAR FLIST1) (CADR FLIST1)) (CDDR FLIST1)) (CONS (LIST 'OR (CAR FLIST1) (CADR FLIST1)) FLIST2) (ASSOC-PROOF (CAR FLIST1) (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1)) PF)) (MAKE-DISJUNCT (CONS (LIST 'OR (CAR FLIST1) (CADR FLIST1)) FLIST2)))) (FORM-LIST FLIST1) (FORM-LIST FLIST2) (LISTP FLIST2) (SUBSET FLIST1 FLIST2) (PROVES PF (MAKE-DISJUNCT FLIST1))) (PROVES (M-PROOF FLIST1 FLIST2 PF) (MAKE-DISJUNCT FLIST2))). This simplifies, rewriting with the lemmas CDR-CONS, FORMULA-OR-REDUC, CAR-CONS, and M3-PROOF-PROVES1, and unfolding FORM-LIST, MEMBER, SUBSET, F-OR, MAKE-DISJUNCT, AND, IMPLIES, and M-PROOF, to the following two new conjectures: Case 1.2. (IMPLIES (AND (LISTP FLIST1) (LISTP (CDR FLIST1)) (LISTP (CDDR FLIST1)) (NOT (SUBSET (CDDR FLIST1) (CONS (LIST 'OR (CAR FLIST1) (CADR FLIST1)) FLIST2))) (FORMULA (CAR FLIST1) T 0) (FORMULA (CADR FLIST1) T 0) (FORM-LIST (CDDR FLIST1)) (FORM-LIST FLIST2) (LISTP FLIST2) (MEMBER (CAR FLIST1) FLIST2) (MEMBER (CADR FLIST1) FLIST2) (SUBSET (CDDR FLIST1) FLIST2) (PROVES PF (LIST 'OR (CAR FLIST1) (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1)))))) (PROVES (M3-PROOF (CAR FLIST1) (CADR FLIST1) FLIST2 (M-PROOF (CONS (LIST 'OR (CAR FLIST1) (CADR FLIST1)) (CDDR FLIST1)) (CONS (LIST 'OR (CAR FLIST1) (CADR FLIST1)) FLIST2) (ASSOC-PROOF (CAR FLIST1) (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1)) PF))) (MAKE-DISJUNCT FLIST2))). However this again simplifies, rewriting with the lemma SUBSET-CONS, to: T. Case 1.1. (IMPLIES (AND (LISTP FLIST1) (LISTP (CDR FLIST1)) (LISTP (CDDR FLIST1)) (NOT (PROVES (ASSOC-PROOF (CAR FLIST1) (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1)) PF) (LIST 'OR (LIST 'OR (CAR FLIST1) (CADR FLIST1)) (MAKE-DISJUNCT (CDDR FLIST1))))) (FORMULA (CAR FLIST1) T 0) (FORMULA (CADR FLIST1) T 0) (FORM-LIST (CDDR FLIST1)) (FORM-LIST FLIST2) (LISTP FLIST2) (MEMBER (CAR FLIST1) FLIST2) (MEMBER (CADR FLIST1) FLIST2) (SUBSET (CDDR FLIST1) FLIST2) (PROVES PF (LIST 'OR (CAR FLIST1) (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1)))))) (PROVES (M3-PROOF (CAR FLIST1) (CADR FLIST1) FLIST2 (M-PROOF (CONS (LIST 'OR (CAR FLIST1) (CADR FLIST1)) (CDDR FLIST1)) (CONS (LIST 'OR (CAR FLIST1) (CADR FLIST1)) FLIST2) (ASSOC-PROOF (CAR FLIST1) (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1)) PF))) (MAKE-DISJUNCT FLIST2))), which again simplifies, appealing to the lemma ASSOC-PROOF-PROVES, and unfolding the function F-OR, to: T. Q.E.D. [ 0.0 0.5 0.0 ] M-PROOF-PROVES (TOGGLE G0247 M-PROOF T) [ 0.0 0.0 0.0 ] G0247 (PROVE-LEMMA M-PROOF-PROVES1 (REWRITE) (IMPLIES (AND (FORM-LIST FLIST1) (FORM-LIST FLIST2) (SUBSET FLIST1 FLIST2) (PROVES PF (MAKE-DISJUNCT FLIST1)) (EQUAL CONCL (MAKE-DISJUNCT FLIST2))) (PROVES (M-PROOF FLIST1 FLIST2 PF) CONCL)) ((USE (M-PROOF-PROVES)))) This simplifies, appealing to the lemma PROVES-IS-FORMULA-AGAIN, and unfolding the definitions of AND, IMPLIES, FORM-LIST, SUBSET, MAKE-DISJUNCT, FORMULA, and MEMBER, to: T. Q.E.D. [ 0.0 0.0 0.0 ] M-PROOF-PROVES1 (DEFN OR-TYPE (EXP) (EQUAL EXP (F-OR (CADR EXP) (CADDR EXP)))) Observe that (OR (FALSEP (OR-TYPE EXP)) (TRUEP (OR-TYPE EXP))) is a theorem. [ 0.0 0.0 0.0 ] OR-TYPE (DEFN NOR-TYPE (EXP) (EQUAL EXP (F-NOT (F-OR (CADADR EXP) (CADDADR EXP))))) From the definition we can conclude that: (OR (FALSEP (NOR-TYPE EXP)) (TRUEP (NOR-TYPE EXP))) is a theorem. [ 0.0 0.0 0.0 ] NOR-TYPE (TOGGLE G0250 ATOMP T) [ 0.0 0.0 0.0 ] G0250 (DEFN ELEM-FORM (EXP) (OR (ATOMP EXP) (EQUAL EXP (FORSOME (CADR EXP) (CADDR EXP))))) Observe that (OR (FALSEP (ELEM-FORM EXP)) (TRUEP (ELEM-FORM EXP))) is a theorem. [ 0.0 0.0 0.0 ] ELEM-FORM (DEFN NEG-ELEM-FORM (EXP) (AND (EQUAL EXP (F-NOT (CADR EXP))) (ELEM-FORM (ARG1 EXP)))) Observe that: (OR (FALSEP (NEG-ELEM-FORM EXP)) (TRUEP (NEG-ELEM-FORM EXP))) is a theorem. [ 0.0 0.0 0.0 ] NEG-ELEM-FORM (DEFN PROP-ATOMP (EXP) (OR (ELEM-FORM EXP) (NEG-ELEM-FORM EXP))) Observe that (OR (FALSEP (PROP-ATOMP EXP)) (TRUEP (PROP-ATOMP EXP))) is a theorem. [ 0.0 0.0 0.0 ] PROP-ATOMP (DEFN DBLE-NEG-TYPE (EXP) (EQUAL EXP (F-NOT (F-NOT (CADADR EXP))))) From the definition we can conclude that: (OR (FALSEP (DBLE-NEG-TYPE EXP)) (TRUEP (DBLE-NEG-TYPE EXP))) is a theorem. [ 0.0 0.0 0.0 ] DBLE-NEG-TYPE (TOGGLE G0251 ATOMP NIL) [ 0.0 0.0 0.0 ] G0251 (PROVE-LEMMA DBLE-NEG-NOT-PROP-ATOMP (REWRITE) (IMPLIES (DBLE-NEG-TYPE EXP) (NOT (PROP-ATOMP EXP)))) WARNING: Note that the rewrite rule DBLE-NEG-NOT-PROP-ATOMP will be stored so as to apply only to terms with the nonrecursive function symbol PROP-ATOMP. This formula simplifies, rewriting with CAR-CONS, and expanding the functions F-NOT, DBLE-NEG-TYPE, NEG-ELEM-FORM, ARG1, ELEM-FORM, DEGREE, ATOMP, FORSOME, and PROP-ATOMP, to six new conjectures: Case 6. (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP)))) (PREDICATE (CAR EXP)) (EQUAL (CAR EXP) 'EQUAL)) (NOT (TERMP (CDR EXP) 'LIST 2))), which again simplifies, unfolding the definition of PREDICATE, to the conjecture: (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP)))) (EQUAL (CAR EXP) 'EQUAL)) (NOT (TERMP (CDR EXP) 'LIST 2))). Appealing to the lemma CAR-CDR-ELIM, we now replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), V by (CONS D X) to eliminate (CDR V) and (CAR V), and X by (CONS V C) to eliminate (CAR X) and (CDR X). This generates five new formulas: Case 6.5. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP)))) (EQUAL (CAR EXP) 'EQUAL)) (NOT (TERMP (CDR EXP) 'LIST 2))), which further simplifies, clearly, to: T. Case 6.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'NOT (LIST 'NOT (CADAR X)))) (EQUAL Z 'EQUAL)) (NOT (TERMP X 'LIST 2))). This further simplifies, rewriting with CAR-NLISTP and CAR-CONS, and opening up the functions CDR, CAR, CONS, and EQUAL, to: T. Case 6.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'NOT (CADR V)))) (EQUAL Z 'EQUAL)) (NOT (TERMP (CONS V W) 'LIST 2))). However this further simplifies, rewriting with CDR-NLISTP and CAR-CONS, and opening up CAR, CONS, and EQUAL, to: T. Case 6.2. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'NOT (CAR X)))) (EQUAL Z 'EQUAL)) (NOT (TERMP (CONS (CONS D X) W) 'LIST 2))). This further simplifies, applying the lemmas CAR-NLISTP and CAR-CONS, and unfolding CONS, CAR, and EQUAL, to: T. Case 6.1. (IMPLIES (AND (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'NOT V))) (EQUAL Z 'EQUAL)) (NOT (TERMP (CONS (CONS D (CONS V C)) W) 'LIST 2))), which further simplifies, applying CAR-CONS, and opening up the definition of EQUAL, to: T. Case 5. (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP)))) (PREDICATE (CAR EXP)) (NOT (EQUAL (CAR EXP) 'EQUAL))) (NOT (TERMP (CDR EXP) 'LIST (CADDAR EXP)))). Appealing to the lemma CAR-CDR-ELIM, we now replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), V by (CONS D X) to eliminate (CDR V) and (CAR V), X by (CONS V C) to eliminate (CAR X) and (CDR X), Z by (CONS X1 X) to eliminate (CDR Z) and (CAR Z), X by (CONS Z1 Z) to eliminate (CDR X) and (CAR X), Z by (CONS X V1) to eliminate (CAR Z) and (CDR Z), Z by (CONS C V) to eliminate (CDR Z) and (CAR Z), V by (CONS X1 Z) to eliminate (CDR V) and (CAR V), Z by (CONS V Z1) to eliminate (CAR Z) and (CDR Z), Z by (CONS D X) to eliminate (CDR Z) and (CAR Z), X by (CONS C Z) to eliminate (CDR X) and (CAR X), Z by (CONS X X1) to eliminate (CAR Z) and (CDR Z), Z by (CONS W V) to eliminate (CDR Z) and (CAR Z), V by (CONS D Z) to eliminate (CDR V) and (CAR V), and Z by (CONS V C) to eliminate (CAR Z) and (CDR Z). The result is 17 new formulas: Case 5.17. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP)))) (PREDICATE (CAR EXP)) (NOT (EQUAL (CAR EXP) 'EQUAL))) (NOT (TERMP (CDR EXP) 'LIST (CADDAR EXP)))), which further simplifies, obviously, to: T. Case 5.16. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'NOT (LIST 'NOT (CADAR X)))) (PREDICATE Z) (NOT (EQUAL Z 'EQUAL))) (NOT (TERMP X 'LIST (CADDR Z)))). But this further simplifies, applying the lemmas CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up CDR, CAR, and CONS, to: T. Case 5.15. (IMPLIES (AND (NOT (LISTP V)) (NOT (LISTP X)) (EQUAL (CONS (CONS W V) X) (LIST 'NOT (LIST 'NOT (CADAR X)))) (PREDICATE (CONS W V))) (NOT (TERMP X 'LIST (CADR V)))), which further simplifies, rewriting with CAR-NLISTP and CAR-CONS, and opening up the definitions of CDR, CAR, and CONS, to: T. Case 5.14. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP X)) (EQUAL (CONS (CONS W (CONS D Z)) X) (LIST 'NOT (LIST 'NOT (CADAR X)))) (PREDICATE (CONS W (CONS D Z)))) (NOT (TERMP X 'LIST (CAR Z)))). This further simplifies, rewriting with CAR-NLISTP and CAR-CONS, and unfolding CDR, CAR, and CONS, to: T. Case 5.13. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS (CONS W (CONS D (CONS V C))) X) (LIST 'NOT (LIST 'NOT (CADAR X)))) (PREDICATE (CONS W (CONS D (CONS V C))))) (NOT (TERMP X 'LIST V))). However this further simplifies, rewriting with CAR-NLISTP and CAR-CONS, and unfolding the definitions of CDR, CAR, and CONS, to: T. Case 5.12. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP V)) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'NOT (CADR V)))) (PREDICATE Z) (NOT (EQUAL Z 'EQUAL))) (NOT (TERMP (CONS V W) 'LIST (CADDR Z)))). This further simplifies, rewriting with the lemmas CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding CAR and CONS, to: T. Case 5.11. (IMPLIES (AND (NOT (LISTP X)) (NOT (LISTP V)) (EQUAL (CONS (CONS D X) (CONS V W)) (LIST 'NOT (LIST 'NOT (CADR V)))) (PREDICATE (CONS D X))) (NOT (TERMP (CONS V W) 'LIST (CADR X)))), which further simplifies, rewriting with CDR-NLISTP and CAR-CONS, and expanding the definitions of CAR and CONS, to: T. Case 5.10. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP V)) (EQUAL (CONS (CONS D (CONS C Z)) (CONS V W)) (LIST 'NOT (LIST 'NOT (CADR V)))) (PREDICATE (CONS D (CONS C Z)))) (NOT (TERMP (CONS V W) 'LIST (CAR Z)))). However this further simplifies, rewriting with CDR-NLISTP and CAR-CONS, and opening up the definitions of CAR and CONS, to: T. Case 5.9. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS (CONS D (CONS C (CONS X X1))) (CONS V W)) (LIST 'NOT (LIST 'NOT (CADR V)))) (PREDICATE (CONS D (CONS C (CONS X X1))))) (NOT (TERMP (CONS V W) 'LIST X))). But this further simplifies, applying CDR-NLISTP and CAR-CONS, and unfolding the definitions of CAR and CONS, to: T. Case 5.8. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'NOT (CAR X)))) (PREDICATE Z) (NOT (EQUAL Z 'EQUAL))) (NOT (TERMP (CONS (CONS D X) W) 'LIST (CADDR Z)))). However this further simplifies, applying CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding CONS and CAR, to: T. Case 5.7. (IMPLIES (AND (NOT (LISTP V)) (NOT (LISTP X)) (EQUAL (CONS (CONS C V) (CONS (CONS D X) W)) (LIST 'NOT (LIST 'NOT (CAR X)))) (PREDICATE (CONS C V))) (NOT (TERMP (CONS (CONS D X) W) 'LIST (CADR V)))). This further simplifies, rewriting with CAR-NLISTP and CAR-CONS, and expanding the functions CONS and CAR, to: T. Case 5.6. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP X)) (EQUAL (CONS (CONS C (CONS X1 Z)) (CONS (CONS D X) W)) (LIST 'NOT (LIST 'NOT (CAR X)))) (PREDICATE (CONS C (CONS X1 Z)))) (NOT (TERMP (CONS (CONS D X) W) 'LIST (CAR Z)))). However this further simplifies, applying CAR-NLISTP and CAR-CONS, and unfolding the definitions of CONS and CAR, to: T. Case 5.5. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS (CONS C (CONS X1 (CONS V Z1))) (CONS (CONS D X) W)) (LIST 'NOT (LIST 'NOT (CAR X)))) (PREDICATE (CONS C (CONS X1 (CONS V Z1))))) (NOT (TERMP (CONS (CONS D X) W) 'LIST V))). However this further simplifies, applying CAR-NLISTP and CAR-CONS, and expanding the definitions of CONS and CAR, to: T. Case 5.4. (IMPLIES (AND (NOT (LISTP Z)) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'NOT V))) (PREDICATE Z) (NOT (EQUAL Z 'EQUAL))) (NOT (TERMP (CONS (CONS D (CONS V C)) W) 'LIST (CADDR Z)))). This further simplifies, rewriting with CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding the definition of PREDICATE, to: T. Case 5.3. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS (CONS X1 X) (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'NOT V))) (PREDICATE (CONS X1 X))) (NOT (TERMP (CONS (CONS D (CONS V C)) W) 'LIST (CADR X)))). This further simplifies, applying the lemma CAR-CONS, to: T. Case 5.2. (IMPLIES (AND (NOT (LISTP Z)) (EQUAL (CONS (CONS X1 (CONS Z1 Z)) (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'NOT V))) (PREDICATE (CONS X1 (CONS Z1 Z)))) (NOT (TERMP (CONS (CONS D (CONS V C)) W) 'LIST (CAR Z)))), which further simplifies, applying the lemma CAR-CONS, to: T. Case 5.1. (IMPLIES (AND (EQUAL (CONS (CONS X1 (CONS Z1 (CONS X V1))) (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'NOT V))) (PREDICATE (CONS X1 (CONS Z1 (CONS X V1))))) (NOT (TERMP (CONS (CONS D (CONS V C)) W) 'LIST X))), which further simplifies, rewriting with the lemma CAR-CONS, to: T. Case 4. (IMPLIES (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP)))) (NOT (EQUAL EXP (LIST 'FORSOME (CADR EXP) (CADDR EXP))))). Applying the lemma CAR-CDR-ELIM, replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), V by (CONS D X) to eliminate (CDR V) and (CAR V), X by (CONS V C) to eliminate (CAR X) and (CDR X), W by (CONS X X1) to eliminate (CAR W) and (CDR W), W by (CONS V C) to eliminate (CAR W) and (CDR W), and W by (CONS X D) to eliminate (CAR W) and (CDR W). We would thus like to prove the following eight new conjectures: Case 4.8. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP))))) (NOT (EQUAL EXP (LIST 'FORSOME (CADR EXP) (CADDR EXP))))). This further simplifies, clearly, to: T. Case 4.7. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'NOT (LIST 'NOT (CADAR X))))) (NOT (EQUAL (CONS Z X) (LIST 'FORSOME (CAR X) (CADR X))))). But this further simplifies, rewriting with CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the functions CDR, CAR, and CONS, to: T. Case 4.6. (IMPLIES (AND (NOT (LISTP W)) (NOT (LISTP V)) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'NOT (CADR V))))) (NOT (EQUAL (CONS Z (CONS V W)) (LIST 'FORSOME V (CAR W))))). This further simplifies, applying CAR-NLISTP, CDR-NLISTP, and CAR-CONS, and unfolding the functions CONS, CAR, and EQUAL, to: T. Case 4.5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'NOT (LIST 'NOT (CADR V))))) (NOT (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'FORSOME V X)))). But this further simplifies, applying CDR-NLISTP and CAR-CONS, and opening up the definitions of CAR, CONS, and EQUAL, to: T. Case 4.4. (IMPLIES (AND (NOT (LISTP W)) (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'NOT (CAR X))))) (NOT (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'FORSOME (CONS D X) (CAR W))))). This further simplifies, applying CAR-NLISTP and CAR-CONS, and expanding the definitions of CONS, CAR, and EQUAL, to: T. Case 4.3. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS D X) (CONS V C))) (LIST 'NOT (LIST 'NOT (CAR X))))) (NOT (EQUAL (CONS Z (CONS (CONS D X) (CONS V C))) (LIST 'FORSOME (CONS D X) V)))). However this further simplifies, rewriting with CAR-NLISTP and CAR-CONS, and opening up the definitions of CONS, CAR, and EQUAL, to: T. Case 4.2. (IMPLIES (AND (NOT (LISTP W)) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'NOT V)))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'FORSOME (CONS D (CONS V C)) (CAR W))))). However this further simplifies, rewriting with CAR-NLISTP and CAR-CONS, and opening up the definitions of CONS and EQUAL, to: T. Case 4.1. (IMPLIES (EQUAL (CONS Z (CONS (CONS D (CONS V C)) (CONS X X1))) (LIST 'NOT (LIST 'NOT V))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V C)) (CONS X X1))) (LIST 'FORSOME (CONS D (CONS V C)) X)))). But this further simplifies, rewriting with the lemma CAR-CONS, and expanding the definition of EQUAL, to: T. Case 3. (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP)))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EQUAL (CADR EXP) (LIST 'FORSOME (CADADR EXP) (CADDADR EXP))))). Applying the lemma CAR-CDR-ELIM, replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), V by (CONS D X) to eliminate (CDR V) and (CAR V), X by (CONS V C) to eliminate (CAR X) and (CDR X), and C by (CONS X X1) to eliminate (CAR C) and (CDR C). We thus obtain the following six new conjectures: Case 3.6. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP)))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EQUAL (CADR EXP) (LIST 'FORSOME (CADADR EXP) (CADDADR EXP))))). This further simplifies, clearly, to: T. Case 3.5. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'NOT (LIST 'NOT (CADAR X)))) (EQUAL (CONS Z X) (LIST 'NOT (CAR X)))) (NOT (EQUAL (CAR X) (LIST 'FORSOME (CADAR X) (CADDAR X))))). However this further simplifies, rewriting with CAR-NLISTP, and unfolding the definitions of CONS, CDR, CAR, and EQUAL, to: T. Case 3.4. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'NOT (CADR V)))) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT V))) (NOT (EQUAL V (LIST 'FORSOME (CADR V) (CADDR V))))). This further simplifies, trivially, to: T. Case 3.3. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'NOT (CAR X)))) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (CONS D X)))) (NOT (EQUAL (CONS D X) (LIST 'FORSOME (CAR X) (CADR X))))). But this further simplifies, applying CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and expanding CONS, CAR, EQUAL, and CDR, to: T. Case 3.2. (IMPLIES (AND (NOT (LISTP C)) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'NOT V))) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (CONS D (CONS V C))))) (NOT (EQUAL (CONS D (CONS V C)) (LIST 'FORSOME V (CAR C))))). However this further simplifies, rewriting with CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the definitions of CONS and EQUAL, to: T. Case 3.1. (IMPLIES (AND (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'NOT V))) (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (CONS D (CONS V (CONS X X1)))))) (NOT (EQUAL (CONS D (CONS V (CONS X X1))) (LIST 'FORSOME V X)))). However this further simplifies, applying CAR-CONS and CONS-EQUAL, and unfolding the function EQUAL, to: T. Case 2. (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP)))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (PREDICATE (CAADR EXP)) (NOT (EQUAL (CAADR EXP) 'EQUAL))) (NOT (TERMP (CDADR EXP) 'LIST (CADDAADR EXP)))). Appealing to the lemma CAR-CDR-ELIM, we now replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), V by (CONS D X) to eliminate (CDR V) and (CAR V), X by (CONS V C) to eliminate (CAR X) and (CDR X), D by (CONS X1 X) to eliminate (CDR D) and (CAR D), X by (CONS Z1 D) to eliminate (CDR X) and (CAR X), D by (CONS X V1) to eliminate (CAR D) and (CDR D), D by (CONS C V) to eliminate (CDR D) and (CAR D), V by (CONS X1 D) to eliminate (CDR V) and (CAR V), and D by (CONS V Z1) to eliminate (CAR D) and (CDR D). We must thus prove 11 new formulas: Case 2.11. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP)))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (PREDICATE (CAADR EXP)) (NOT (EQUAL (CAADR EXP) 'EQUAL))) (NOT (TERMP (CDADR EXP) 'LIST (CADDAADR EXP)))), which further simplifies, obviously, to: T. Case 2.10. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'NOT (LIST 'NOT (CADAR X)))) (EQUAL (CONS Z X) (LIST 'NOT (CAR X))) (PREDICATE (CAAR X)) (NOT (EQUAL (CAAR X) 'EQUAL))) (NOT (TERMP (CDAR X) 'LIST (CADDAAR X)))). However this further simplifies, applying CAR-NLISTP, and opening up CONS, CDR, CAR, and EQUAL, to: T. Case 2.9. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'NOT (CADR V)))) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT V)) (PREDICATE (CAR V)) (NOT (EQUAL (CAR V) 'EQUAL))) (NOT (TERMP (CDR V) 'LIST (CADDAR V)))). This further simplifies, applying CDR-NLISTP, CAR-CONS, and CDR-CONS, and unfolding the definitions of CAR, CONS, EQUAL, and CDR, to: T. Case 2.8. (IMPLIES (AND (NOT (LISTP D)) (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'NOT (CAR X)))) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (CONS D X))) (PREDICATE D) (NOT (EQUAL D 'EQUAL))) (NOT (TERMP X 'LIST (CADDR D)))). However this further simplifies, applying CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding the definitions of CONS, CAR, EQUAL, and CDR, to: T. Case 2.7. (IMPLIES (AND (NOT (LISTP V)) (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS (CONS C V) X) W)) (LIST 'NOT (LIST 'NOT (CAR X)))) (EQUAL (CONS Z (CONS (CONS (CONS C V) X) W)) (LIST 'NOT (CONS (CONS C V) X))) (PREDICATE (CONS C V))) (NOT (TERMP X 'LIST (CADR V)))). This further simplifies, applying CAR-NLISTP, CAR-CONS, and CDR-CONS, and opening up the functions CONS, CAR, EQUAL, and CDR, to: T. Case 2.6. (IMPLIES (AND (NOT (LISTP D)) (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS (CONS C (CONS X1 D)) X) W)) (LIST 'NOT (LIST 'NOT (CAR X)))) (EQUAL (CONS Z (CONS (CONS (CONS C (CONS X1 D)) X) W)) (LIST 'NOT (CONS (CONS C (CONS X1 D)) X))) (PREDICATE (CONS C (CONS X1 D)))) (NOT (TERMP X 'LIST (CAR D)))). But this further simplifies, applying CAR-NLISTP, CAR-CONS, and CDR-CONS, and opening up the definitions of CONS, CAR, EQUAL, and CDR, to: T. Case 2.5. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS (CONS C (CONS X1 (CONS V Z1))) X) W)) (LIST 'NOT (LIST 'NOT (CAR X)))) (EQUAL (CONS Z (CONS (CONS (CONS C (CONS X1 (CONS V Z1))) X) W)) (LIST 'NOT (CONS (CONS C (CONS X1 (CONS V Z1))) X))) (PREDICATE (CONS C (CONS X1 (CONS V Z1))))) (NOT (TERMP X 'LIST V))). But this further simplifies, appealing to the lemmas CAR-NLISTP, CAR-CONS, and CDR-CONS, and unfolding CONS, CAR, EQUAL, and CDR, to: T. Case 2.4. (IMPLIES (AND (NOT (LISTP D)) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'NOT V))) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (CONS D (CONS V C)))) (PREDICATE D) (NOT (EQUAL D 'EQUAL))) (NOT (TERMP (CONS V C) 'LIST (CADDR D)))), which further simplifies, appealing to the lemmas CAR-CONS, CDR-CONS, and CONS-EQUAL, and opening up the functions EQUAL and PREDICATE, to: T. Case 2.3. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS (CONS X1 X) (CONS V C)) W)) (LIST 'NOT (LIST 'NOT V))) (EQUAL (CONS Z (CONS (CONS (CONS X1 X) (CONS V C)) W)) (LIST 'NOT (CONS (CONS X1 X) (CONS V C)))) (PREDICATE (CONS X1 X))) (NOT (TERMP (CONS V C) 'LIST (CADR X)))), which further simplifies, rewriting with CAR-CONS and CDR-CONS, and unfolding the function EQUAL, to: T. Case 2.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL (CONS Z (CONS (CONS (CONS X1 (CONS Z1 D)) (CONS V C)) W)) (LIST 'NOT (LIST 'NOT V))) (EQUAL (CONS Z (CONS (CONS (CONS X1 (CONS Z1 D)) (CONS V C)) W)) (LIST 'NOT (CONS (CONS X1 (CONS Z1 D)) (CONS V C)))) (PREDICATE (CONS X1 (CONS Z1 D)))) (NOT (TERMP (CONS V C) 'LIST (CAR D)))). This further simplifies, applying CAR-CONS and CDR-CONS, and expanding the definition of EQUAL, to: T. Case 2.1. (IMPLIES (AND (EQUAL (CONS Z (CONS (CONS (CONS X1 (CONS Z1 (CONS X V1))) (CONS V C)) W)) (LIST 'NOT (LIST 'NOT V))) (EQUAL (CONS Z (CONS (CONS (CONS X1 (CONS Z1 (CONS X V1))) (CONS V C)) W)) (LIST 'NOT (CONS (CONS X1 (CONS Z1 (CONS X V1))) (CONS V C)))) (PREDICATE (CONS X1 (CONS Z1 (CONS X V1))))) (NOT (TERMP (CONS V C) 'LIST X))). But this further simplifies, applying the lemmas CAR-CONS and CDR-CONS, and unfolding EQUAL, to: T. Case 1. (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP)))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (PREDICATE (CAADR EXP)) (EQUAL (CAADR EXP) 'EQUAL)) (NOT (TERMP (CDADR EXP) 'LIST 2))), which again simplifies, appealing to the lemma CAR-CONS, and unfolding the definition of PREDICATE, to the formula: (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP)))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (EQUAL (CAADR EXP) 'EQUAL)) (NOT (TERMP (CDADR EXP) 'LIST 2))). Appealing to the lemma CAR-CDR-ELIM, we now replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), V by (CONS D X) to eliminate (CDR V) and (CAR V), and X by (CONS V C) to eliminate (CAR X) and (CDR X). The result is five new conjectures: Case 1.5. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP)))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (EQUAL (CAADR EXP) 'EQUAL)) (NOT (TERMP (CDADR EXP) 'LIST 2))), which further simplifies, clearly, to: T. Case 1.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'NOT (LIST 'NOT (CADAR X)))) (EQUAL (CONS Z X) (LIST 'NOT (CAR X))) (EQUAL (CAAR X) 'EQUAL)) (NOT (TERMP (CDAR X) 'LIST 2))). However this further simplifies, applying CAR-NLISTP, and unfolding the functions CONS, CDR, CAR, and EQUAL, to: T. Case 1.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'NOT (CADR V)))) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT V)) (EQUAL (CAR V) 'EQUAL)) (NOT (TERMP (CDR V) 'LIST 2))). This further simplifies, appealing to the lemmas CDR-NLISTP, CAR-CONS, and CDR-CONS, and expanding the definitions of CAR, CONS, EQUAL, and CDR, to: T. Case 1.2. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'NOT (CAR X)))) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (CONS D X))) (EQUAL D 'EQUAL)) (NOT (TERMP X 'LIST 2))), which further simplifies, applying CAR-NLISTP, CAR-CONS, and CDR-CONS, and expanding the definitions of CONS, CAR, EQUAL, and CDR, to: T. Case 1.1. (IMPLIES (AND (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'NOT V))) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (CONS D (CONS V C)))) (EQUAL D 'EQUAL)) (NOT (TERMP (CONS V C) 'LIST 2))). But this further simplifies, applying CAR-CONS and CDR-CONS, and opening up the definition of EQUAL, to: T. Q.E.D. [ 0.0 0.1 0.1 ] DBLE-NEG-NOT-PROP-ATOMP (PROVE-LEMMA OR-TYPE-NOT-PROP-ATOMP (REWRITE) (IMPLIES (OR-TYPE EXP) (NOT (PROP-ATOMP EXP)))) WARNING: Note that the rewrite rule OR-TYPE-NOT-PROP-ATOMP will be stored so as to apply only to terms with the nonrecursive function symbol PROP-ATOMP. This formula simplifies, rewriting with CAR-CONS, and expanding the functions F-OR, OR-TYPE, NEG-ELEM-FORM, F-NOT, ARG1, ELEM-FORM, DEGREE, ATOMP, FORSOME, and PROP-ATOMP, to six new conjectures: Case 6. (IMPLIES (AND (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP))) (PREDICATE (CAR EXP)) (EQUAL (CAR EXP) 'EQUAL)) (NOT (TERMP (CDR EXP) 'LIST 2))), which again simplifies, unfolding the definition of PREDICATE, to the conjecture: (IMPLIES (AND (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP))) (EQUAL (CAR EXP) 'EQUAL)) (NOT (TERMP (CDR EXP) 'LIST 2))). Appealing to the lemma CAR-CDR-ELIM, we now replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), and W by (CONS X D) to eliminate (CAR W) and (CDR W). This generates four new formulas: Case 6.4. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP))) (EQUAL (CAR EXP) 'EQUAL)) (NOT (TERMP (CDR EXP) 'LIST 2))), which further simplifies, clearly, to: T. Case 6.3. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'OR (CAR X) (CADR X))) (EQUAL Z 'EQUAL)) (NOT (TERMP X 'LIST 2))). This further simplifies, rewriting with CAR-NLISTP, CDR-NLISTP, and CAR-CONS, and opening up the functions CAR, CONS, and EQUAL, to: T. Case 6.2. (IMPLIES (AND (NOT (LISTP W)) (EQUAL (CONS Z (CONS V W)) (LIST 'OR V (CAR W))) (EQUAL Z 'EQUAL)) (NOT (TERMP (CONS V W) 'LIST 2))). However this further simplifies, rewriting with CAR-NLISTP and CAR-CONS, and opening up CONS and EQUAL, to: T. Case 6.1. (IMPLIES (AND (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'OR V X)) (EQUAL Z 'EQUAL)) (NOT (TERMP (CONS V (CONS X D)) 'LIST 2))). This further simplifies, applying the lemma CAR-CONS, and unfolding EQUAL, to: T. Case 5. (IMPLIES (AND (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP))) (PREDICATE (CAR EXP)) (NOT (EQUAL (CAR EXP) 'EQUAL))) (NOT (TERMP (CDR EXP) 'LIST (CADDAR EXP)))). Applying the lemma CAR-CDR-ELIM, replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), W by (CONS X D) to eliminate (CAR W) and (CDR W), Z by (CONS C W) to eliminate (CDR Z) and (CAR Z), W by (CONS X1 Z) to eliminate (CDR W) and (CAR W), Z by (CONS W Z1) to eliminate (CAR Z) and (CDR Z), Z by (CONS D X) to eliminate (CDR Z) and (CAR Z), X by (CONS C Z) to eliminate (CDR X) and (CAR X), Z by (CONS X X1) to eliminate (CAR Z) and (CDR Z), Z by (CONS W V) to eliminate (CDR Z) and (CAR Z), V by (CONS D Z) to eliminate (CDR V) and (CAR V), and Z by (CONS V C) to eliminate (CAR Z) and (CDR Z). We would thus like to prove the following 13 new conjectures: Case 5.13. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP))) (PREDICATE (CAR EXP)) (NOT (EQUAL (CAR EXP) 'EQUAL))) (NOT (TERMP (CDR EXP) 'LIST (CADDAR EXP)))). This further simplifies, obviously, to: T. Case 5.12. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'OR (CAR X) (CADR X))) (PREDICATE Z) (NOT (EQUAL Z 'EQUAL))) (NOT (TERMP X 'LIST (CADDR Z)))). However this further simplifies, rewriting with CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the functions CAR and CONS, to: T. Case 5.11. (IMPLIES (AND (NOT (LISTP V)) (NOT (LISTP X)) (EQUAL (CONS (CONS W V) X) (LIST 'OR (CAR X) (CADR X))) (PREDICATE (CONS W V))) (NOT (TERMP X 'LIST (CADR V)))). But this further simplifies, rewriting with the lemmas CAR-NLISTP, CDR-NLISTP, and CAR-CONS, and opening up the functions CAR and CONS, to: T. Case 5.10. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP X)) (EQUAL (CONS (CONS W (CONS D Z)) X) (LIST 'OR (CAR X) (CADR X))) (PREDICATE (CONS W (CONS D Z)))) (NOT (TERMP X 'LIST (CAR Z)))), which further simplifies, applying CAR-NLISTP, CDR-NLISTP, and CAR-CONS, and unfolding the definitions of CAR and CONS, to: T. Case 5.9. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS (CONS W (CONS D (CONS V C))) X) (LIST 'OR (CAR X) (CADR X))) (PREDICATE (CONS W (CONS D (CONS V C))))) (NOT (TERMP X 'LIST V))). However this further simplifies, rewriting with CAR-NLISTP, CDR-NLISTP, and CAR-CONS, and unfolding CAR and CONS, to: T. Case 5.8. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP W)) (EQUAL (CONS Z (CONS V W)) (LIST 'OR V (CAR W))) (PREDICATE Z) (NOT (EQUAL Z 'EQUAL))) (NOT (TERMP (CONS V W) 'LIST (CADDR Z)))). However this further simplifies, applying CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and opening up the definition of CONS, to: T. Case 5.7. (IMPLIES (AND (NOT (LISTP X)) (NOT (LISTP W)) (EQUAL (CONS (CONS D X) (CONS V W)) (LIST 'OR V (CAR W))) (PREDICATE (CONS D X))) (NOT (TERMP (CONS V W) 'LIST (CADR X)))). But this further simplifies, applying CAR-NLISTP and CAR-CONS, and unfolding the function CONS, to: T. Case 5.6. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP W)) (EQUAL (CONS (CONS D (CONS C Z)) (CONS V W)) (LIST 'OR V (CAR W))) (PREDICATE (CONS D (CONS C Z)))) (NOT (TERMP (CONS V W) 'LIST (CAR Z)))). However this further simplifies, applying CAR-NLISTP and CAR-CONS, and unfolding CONS, to: T. Case 5.5. (IMPLIES (AND (NOT (LISTP W)) (EQUAL (CONS (CONS D (CONS C (CONS X X1))) (CONS V W)) (LIST 'OR V (CAR W))) (PREDICATE (CONS D (CONS C (CONS X X1))))) (NOT (TERMP (CONS V W) 'LIST X))). However this further simplifies, applying CAR-NLISTP and CAR-CONS, and opening up the function CONS, to: T. Case 5.4. (IMPLIES (AND (NOT (LISTP Z)) (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'OR V X)) (PREDICATE Z) (NOT (EQUAL Z 'EQUAL))) (NOT (TERMP (CONS V (CONS X D)) 'LIST (CADDR Z)))). This further simplifies, applying CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding PREDICATE, to: T. Case 5.3. (IMPLIES (AND (NOT (LISTP W)) (EQUAL (CONS (CONS C W) (CONS V (CONS X D))) (LIST 'OR V X)) (PREDICATE (CONS C W))) (NOT (TERMP (CONS V (CONS X D)) 'LIST (CADR W)))). This further simplifies, rewriting with CAR-CONS, to: T. Case 5.2. (IMPLIES (AND (NOT (LISTP Z)) (EQUAL (CONS (CONS C (CONS X1 Z)) (CONS V (CONS X D))) (LIST 'OR V X)) (PREDICATE (CONS C (CONS X1 Z)))) (NOT (TERMP (CONS V (CONS X D)) 'LIST (CAR Z)))). This further simplifies, rewriting with CAR-CONS, to: T. Case 5.1. (IMPLIES (AND (EQUAL (CONS (CONS C (CONS X1 (CONS W Z1))) (CONS V (CONS X D))) (LIST 'OR V X)) (PREDICATE (CONS C (CONS X1 (CONS W Z1))))) (NOT (TERMP (CONS V (CONS X D)) 'LIST W))). But this further simplifies, rewriting with CAR-CONS, to: T. Case 4. (IMPLIES (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP))) (NOT (EQUAL EXP (LIST 'FORSOME (CADR EXP) (CADDR EXP))))). Appealing to the lemma CAR-CDR-ELIM, we now replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), and W by (CONS X D) to eliminate (CAR W) and (CDR W). We must thus prove four new goals: Case 4.4. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP)))) (NOT (EQUAL EXP (LIST 'FORSOME (CADR EXP) (CADDR EXP))))), which further simplifies, clearly, to: T. Case 4.3. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'OR (CAR X) (CADR X)))) (NOT (EQUAL (CONS Z X) (LIST 'FORSOME (CAR X) (CADR X))))). This further simplifies, applying CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up CAR and CONS, to: T. Case 4.2. (IMPLIES (AND (NOT (LISTP W)) (EQUAL (CONS Z (CONS V W)) (LIST 'OR V (CAR W)))) (NOT (EQUAL (CONS Z (CONS V W)) (LIST 'FORSOME V (CAR W))))). This further simplifies, applying CAR-NLISTP and CAR-CONS, and unfolding the functions CONS and EQUAL, to: T. Case 4.1. (IMPLIES (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'OR V X)) (NOT (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'FORSOME V X)))). This further simplifies, applying the lemma CAR-CONS, and expanding EQUAL, to: T. Case 3. (IMPLIES (AND (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EQUAL (CADR EXP) (LIST 'FORSOME (CADADR EXP) (CADDADR EXP))))). Applying the lemma CAR-CDR-ELIM, replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), W by (CONS X D) to eliminate (CAR W) and (CDR W), V by (CONS C W) to eliminate (CDR V) and (CAR V), W by (CONS V X1) to eliminate (CAR W) and (CDR W), X1 by (CONS W Z1) to eliminate (CAR X1) and (CDR X1), V by (CONS D X) to eliminate (CDR V) and (CAR V), X by (CONS V C) to eliminate (CAR X) and (CDR X), and C by (CONS X X1) to eliminate (CAR C) and (CDR C). We would thus like to prove the following ten new conjectures: Case 3.10. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EQUAL (CADR EXP) (LIST 'FORSOME (CADADR EXP) (CADDADR EXP))))). This further simplifies, obviously, to: T. Case 3.9. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'OR (CAR X) (CADR X))) (EQUAL (CONS Z X) (LIST 'NOT (CAR X)))) (NOT (EQUAL (CAR X) (LIST 'FORSOME (CADAR X) (CADDAR X))))). This further simplifies, rewriting with the lemmas CAR-NLISTP and CDR-NLISTP, and unfolding CONS, CAR, and EQUAL, to: T. Case 3.8. (IMPLIES (AND (NOT (LISTP V)) (NOT (LISTP W)) (EQUAL (CONS Z (CONS V W)) (LIST 'OR V (CAR W))) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT V))) (NOT (EQUAL V (LIST 'FORSOME (CADR V) (CADDR V))))), which further simplifies, clearly, to: T. Case 3.7. (IMPLIES (AND (NOT (LISTP X)) (NOT (LISTP W)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'OR (CONS D X) (CAR W))) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (CONS D X)))) (NOT (EQUAL (CONS D X) (LIST 'FORSOME (CAR X) (CADR X))))). This further simplifies, appealing to the lemmas CAR-NLISTP and CAR-CONS, and opening up the definitions of CONS and EQUAL, to: T. Case 3.6. (IMPLIES (AND (NOT (LISTP C)) (NOT (LISTP W)) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'OR (CONS D (CONS V C)) (CAR W))) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (CONS D (CONS V C))))) (NOT (EQUAL (CONS D (CONS V C)) (LIST 'FORSOME V (CAR C))))), which further simplifies, applying CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and opening up the definition of CONS, to: T. Case 3.5. (IMPLIES (AND (NOT (LISTP W)) (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'OR (CONS D (CONS V (CONS X X1))) (CAR W))) (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (CONS D (CONS V (CONS X X1)))))) (NOT (EQUAL (CONS D (CONS V (CONS X X1))) (LIST 'FORSOME V X)))). This further simplifies, applying CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding CONS, to: T. Case 3.4. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'OR V X)) (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'NOT V))) (NOT (EQUAL V (LIST 'FORSOME (CADR V) (CADDR V))))). This further simplifies, clearly, to: T. Case 3.3. (IMPLIES (AND (NOT (LISTP W)) (EQUAL (CONS Z (CONS (CONS C W) (CONS X D))) (LIST 'OR (CONS C W) X)) (EQUAL (CONS Z (CONS (CONS C W) (CONS X D))) (LIST 'NOT (CONS C W)))) (NOT (EQUAL (CONS C W) (LIST 'FORSOME (CAR W) (CADR W))))). However this further simplifies, rewriting with CAR-CONS, and opening up the definition of EQUAL, to: T. Case 3.2. (IMPLIES (AND (NOT (LISTP X1)) (EQUAL (CONS Z (CONS (CONS C (CONS V X1)) (CONS X D))) (LIST 'OR (CONS C (CONS V X1)) X)) (EQUAL (CONS Z (CONS (CONS C (CONS V X1)) (CONS X D))) (LIST 'NOT (CONS C (CONS V X1))))) (NOT (EQUAL (CONS C (CONS V X1)) (LIST 'FORSOME V (CAR X1))))). But this further simplifies, rewriting with the lemmas CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and expanding the definitions of CONS and EQUAL, to: T. Case 3.1. (IMPLIES (AND (EQUAL (CONS Z (CONS (CONS C (CONS V (CONS W Z1))) (CONS X D))) (LIST 'OR (CONS C (CONS V (CONS W Z1))) X)) (EQUAL (CONS Z (CONS (CONS C (CONS V (CONS W Z1))) (CONS X D))) (LIST 'NOT (CONS C (CONS V (CONS W Z1)))))) (NOT (EQUAL (CONS C (CONS V (CONS W Z1))) (LIST 'FORSOME V W)))), which further simplifies, rewriting with the lemmas CAR-CONS, CDR-CONS, and CONS-EQUAL, and expanding the function EQUAL, to: T. Case 2. (IMPLIES (AND (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (PREDICATE (CAADR EXP)) (NOT (EQUAL (CAADR EXP) 'EQUAL))) (NOT (TERMP (CDADR EXP) 'LIST (CADDAADR EXP)))). Applying the lemma CAR-CDR-ELIM, replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), W by (CONS X D) to eliminate (CAR W) and (CDR W), V by (CONS W C) to eliminate (CAR V) and (CDR V), W by (CONS X1 V) to eliminate (CDR W) and (CAR W), V by (CONS Z1 W) to eliminate (CDR V) and (CAR V), W by (CONS V V1) to eliminate (CAR W) and (CDR W), V by (CONS D X) to eliminate (CDR V) and (CAR V), D by (CONS C V) to eliminate (CDR D) and (CAR D), V by (CONS X1 D) to eliminate (CDR V) and (CAR V), and D by (CONS V Z1) to eliminate (CAR D) and (CDR D). We would thus like to prove the following 12 new formulas: Case 2.12. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (PREDICATE (CAADR EXP)) (NOT (EQUAL (CAADR EXP) 'EQUAL))) (NOT (TERMP (CDADR EXP) 'LIST (CADDAADR EXP)))). This further simplifies, clearly, to: T. Case 2.11. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'OR (CAR X) (CADR X))) (EQUAL (CONS Z X) (LIST 'NOT (CAR X))) (PREDICATE (CAAR X)) (NOT (EQUAL (CAAR X) 'EQUAL))) (NOT (TERMP (CDAR X) 'LIST (CADDAAR X)))). But this further simplifies, appealing to the lemmas CAR-NLISTP and CDR-NLISTP, and opening up CONS, CAR, and EQUAL, to: T. Case 2.10. (IMPLIES (AND (NOT (LISTP V)) (NOT (LISTP W)) (EQUAL (CONS Z (CONS V W)) (LIST 'OR V (CAR W))) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT V)) (PREDICATE (CAR V)) (NOT (EQUAL (CAR V) 'EQUAL))) (NOT (TERMP (CDR V) 'LIST (CADDAR V)))), which further simplifies, rewriting with CAR-NLISTP and CAR-CONS, and expanding CONS and EQUAL, to: T. Case 2.9. (IMPLIES (AND (NOT (LISTP D)) (NOT (LISTP W)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'OR (CONS D X) (CAR W))) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (CONS D X))) (PREDICATE D) (NOT (EQUAL D 'EQUAL))) (NOT (TERMP X 'LIST (CADDR D)))). However this further simplifies, applying CAR-NLISTP and CAR-CONS, and opening up CONS and EQUAL, to: T. Case 2.8. (IMPLIES (AND (NOT (LISTP V)) (NOT (LISTP W)) (EQUAL (CONS Z (CONS (CONS (CONS C V) X) W)) (LIST 'OR (CONS (CONS C V) X) (CAR W))) (EQUAL (CONS Z (CONS (CONS (CONS C V) X) W)) (LIST 'NOT (CONS (CONS C V) X))) (PREDICATE (CONS C V))) (NOT (TERMP X 'LIST (CADR V)))). This further simplifies, rewriting with the lemmas CAR-NLISTP and CAR-CONS, and unfolding CONS and EQUAL, to: T. Case 2.7. (IMPLIES (AND (NOT (LISTP D)) (NOT (LISTP W)) (EQUAL (CONS Z (CONS (CONS (CONS C (CONS X1 D)) X) W)) (LIST 'OR (CONS (CONS C (CONS X1 D)) X) (CAR W))) (EQUAL (CONS Z (CONS (CONS (CONS C (CONS X1 D)) X) W)) (LIST 'NOT (CONS (CONS C (CONS X1 D)) X))) (PREDICATE (CONS C (CONS X1 D)))) (NOT (TERMP X 'LIST (CAR D)))), which further simplifies, appealing to the lemmas CAR-NLISTP and CAR-CONS, and unfolding the functions CONS and EQUAL, to: T. Case 2.6. (IMPLIES (AND (NOT (LISTP W)) (EQUAL (CONS Z (CONS (CONS (CONS C (CONS X1 (CONS V Z1))) X) W)) (LIST 'OR (CONS (CONS C (CONS X1 (CONS V Z1))) X) (CAR W))) (EQUAL (CONS Z (CONS (CONS (CONS C (CONS X1 (CONS V Z1))) X) W)) (LIST 'NOT (CONS (CONS C (CONS X1 (CONS V Z1))) X))) (PREDICATE (CONS C (CONS X1 (CONS V Z1))))) (NOT (TERMP X 'LIST V))), which further simplifies, applying CAR-NLISTP and CAR-CONS, and opening up CONS and EQUAL, to: T. Case 2.5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'OR V X)) (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'NOT V)) (PREDICATE (CAR V)) (NOT (EQUAL (CAR V) 'EQUAL))) (NOT (TERMP (CDR V) 'LIST (CADDAR V)))). This further simplifies, applying CAR-CONS, and unfolding the definition of EQUAL, to: T. Case 2.4. (IMPLIES (AND (NOT (LISTP W)) (EQUAL (CONS Z (CONS (CONS W C) (CONS X D))) (LIST 'OR (CONS W C) X)) (EQUAL (CONS Z (CONS (CONS W C) (CONS X D))) (LIST 'NOT (CONS W C))) (PREDICATE W) (NOT (EQUAL W 'EQUAL))) (NOT (TERMP C 'LIST (CADDR W)))). However this further simplifies, applying CAR-CONS, and unfolding the definition of EQUAL, to: T. Case 2.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS Z (CONS (CONS (CONS X1 V) C) (CONS X D))) (LIST 'OR (CONS (CONS X1 V) C) X)) (EQUAL (CONS Z (CONS (CONS (CONS X1 V) C) (CONS X D))) (LIST 'NOT (CONS (CONS X1 V) C))) (PREDICATE (CONS X1 V))) (NOT (TERMP C 'LIST (CADR V)))). This further simplifies, applying CAR-CONS, and opening up the function EQUAL, to: T. Case 2.2. (IMPLIES (AND (NOT (LISTP W)) (EQUAL (CONS Z (CONS (CONS (CONS X1 (CONS Z1 W)) C) (CONS X D))) (LIST 'OR (CONS (CONS X1 (CONS Z1 W)) C) X)) (EQUAL (CONS Z (CONS (CONS (CONS X1 (CONS Z1 W)) C) (CONS X D))) (LIST 'NOT (CONS (CONS X1 (CONS Z1 W)) C))) (PREDICATE (CONS X1 (CONS Z1 W)))) (NOT (TERMP C 'LIST (CAR W)))). But this further simplifies, applying CAR-CONS, and opening up the definition of EQUAL, to: T. Case 2.1. (IMPLIES (AND (EQUAL (CONS Z (CONS (CONS (CONS X1 (CONS Z1 (CONS V V1))) C) (CONS X D))) (LIST 'OR (CONS (CONS X1 (CONS Z1 (CONS V V1))) C) X)) (EQUAL (CONS Z (CONS (CONS (CONS X1 (CONS Z1 (CONS V V1))) C) (CONS X D))) (LIST 'NOT (CONS (CONS X1 (CONS Z1 (CONS V V1))) C))) (PREDICATE (CONS X1 (CONS Z1 (CONS V V1))))) (NOT (TERMP C 'LIST V))). But this further simplifies, appealing to the lemma CAR-CONS, and unfolding EQUAL, to: T. Case 1. (IMPLIES (AND (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (PREDICATE (CAADR EXP)) (EQUAL (CAADR EXP) 'EQUAL)) (NOT (TERMP (CDADR EXP) 'LIST 2))), which again simplifies, appealing to the lemma CAR-CONS, and opening up the function PREDICATE, to the formula: (IMPLIES (AND (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (EQUAL (CAADR EXP) 'EQUAL)) (NOT (TERMP (CDADR EXP) 'LIST 2))). Appealing to the lemma CAR-CDR-ELIM, we now replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), W by (CONS X D) to eliminate (CAR W) and (CDR W), V by (CONS W C) to eliminate (CAR V) and (CDR V), and V by (CONS D X) to eliminate (CDR V) and (CAR V). The result is six new goals: Case 1.6. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (EQUAL (CAADR EXP) 'EQUAL)) (NOT (TERMP (CDADR EXP) 'LIST 2))), which further simplifies, clearly, to: T. Case 1.5. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'OR (CAR X) (CADR X))) (EQUAL (CONS Z X) (LIST 'NOT (CAR X))) (EQUAL (CAAR X) 'EQUAL)) (NOT (TERMP (CDAR X) 'LIST 2))). But this further simplifies, applying the lemmas CAR-NLISTP and CDR-NLISTP, and unfolding CONS, CAR, and EQUAL, to: T. Case 1.4. (IMPLIES (AND (NOT (LISTP V)) (NOT (LISTP W)) (EQUAL (CONS Z (CONS V W)) (LIST 'OR V (CAR W))) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT V)) (EQUAL (CAR V) 'EQUAL)) (NOT (TERMP (CDR V) 'LIST 2))), which further simplifies, appealing to the lemmas CAR-NLISTP and CAR-CONS, and unfolding the definitions of CONS and EQUAL, to: T. Case 1.3. (IMPLIES (AND (NOT (LISTP W)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'OR (CONS D X) (CAR W))) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (CONS D X))) (EQUAL D 'EQUAL)) (NOT (TERMP X 'LIST 2))), which further simplifies, rewriting with CAR-NLISTP and CAR-CONS, and opening up the definitions of CONS and EQUAL, to: T. Case 1.2. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'OR V X)) (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'NOT V)) (EQUAL (CAR V) 'EQUAL)) (NOT (TERMP (CDR V) 'LIST 2))). However this further simplifies, applying CAR-CONS, and opening up the definition of EQUAL, to: T. Case 1.1. (IMPLIES (AND (EQUAL (CONS Z (CONS (CONS W C) (CONS X D))) (LIST 'OR (CONS W C) X)) (EQUAL (CONS Z (CONS (CONS W C) (CONS X D))) (LIST 'NOT (CONS W C))) (EQUAL W 'EQUAL)) (NOT (TERMP C 'LIST 2))). However this further simplifies, applying CAR-CONS, and unfolding the function EQUAL, to: T. Q.E.D. [ 0.0 0.1 0.1 ] OR-TYPE-NOT-PROP-ATOMP (PROVE-LEMMA NOR-TYPE-NOT-PROP-ATOMP (REWRITE) (IMPLIES (NOR-TYPE EXP) (NOT (PROP-ATOMP EXP)))) WARNING: Note that the rewrite rule NOR-TYPE-NOT-PROP-ATOMP will be stored so as to apply only to terms with the nonrecursive function symbol PROP-ATOMP. This formula simplifies, rewriting with CAR-CONS, and expanding the functions F-NOT, F-OR, NOR-TYPE, NEG-ELEM-FORM, ARG1, ELEM-FORM, DEGREE, ATOMP, FORSOME, and PROP-ATOMP, to six new conjectures: Case 6. (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (PREDICATE (CAR EXP)) (EQUAL (CAR EXP) 'EQUAL)) (NOT (TERMP (CDR EXP) 'LIST 2))), which again simplifies, unfolding the definition of PREDICATE, to the conjecture: (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (EQUAL (CAR EXP) 'EQUAL)) (NOT (TERMP (CDR EXP) 'LIST 2))). Appealing to the lemma CAR-CDR-ELIM, we now replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), V by (CONS D X) to eliminate (CDR V) and (CAR V), X by (CONS V C) to eliminate (CAR X) and (CDR X), and C by (CONS X X1) to eliminate (CAR C) and (CDR C). This generates six new formulas: Case 6.6. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (EQUAL (CAR EXP) 'EQUAL)) (NOT (TERMP (CDR EXP) 'LIST 2))), which further simplifies, clearly, to: T. Case 6.5. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'NOT (LIST 'OR (CADAR X) (CADDAR X)))) (EQUAL Z 'EQUAL)) (NOT (TERMP X 'LIST 2))). This further simplifies, rewriting with CAR-NLISTP and CAR-CONS, and opening up the functions CDR, CAR, CONS, and EQUAL, to: T. Case 6.4. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'OR (CADR V) (CADDR V)))) (EQUAL Z 'EQUAL)) (NOT (TERMP (CONS V W) 'LIST 2))). However this further simplifies, rewriting with CDR-NLISTP and CAR-CONS, and opening up CAR, CDR, CONS, and EQUAL, to: T. Case 6.3. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'OR (CAR X) (CADR X)))) (EQUAL Z 'EQUAL)) (NOT (TERMP (CONS (CONS D X) W) 'LIST 2))). This further simplifies, applying the lemmas CAR-NLISTP, CDR-NLISTP, and CAR-CONS, and unfolding CAR, CONS, and EQUAL, to: T. Case 6.2. (IMPLIES (AND (NOT (LISTP C)) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'OR V (CAR C)))) (EQUAL Z 'EQUAL)) (NOT (TERMP (CONS (CONS D (CONS V C)) W) 'LIST 2))), which further simplifies, applying CAR-NLISTP and CAR-CONS, and opening up the definitions of CONS and EQUAL, to: T. Case 6.1. (IMPLIES (AND (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'OR V X))) (EQUAL Z 'EQUAL)) (NOT (TERMP (CONS (CONS D (CONS V (CONS X X1))) W) 'LIST 2))). But this further simplifies, rewriting with CAR-CONS, and unfolding EQUAL, to: T. Case 5. (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (PREDICATE (CAR EXP)) (NOT (EQUAL (CAR EXP) 'EQUAL))) (NOT (TERMP (CDR EXP) 'LIST (CADDAR EXP)))). Appealing to the lemma CAR-CDR-ELIM, we now replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), V by (CONS D X) to eliminate (CDR V) and (CAR V), X by (CONS V C) to eliminate (CAR X) and (CDR X), C by (CONS X X1) to eliminate (CAR C) and (CDR C), Z by (CONS Z1 C) to eliminate (CDR Z) and (CAR Z), C by (CONS V1 Z) to eliminate (CDR C) and (CAR C), Z by (CONS C W1) to eliminate (CAR Z) and (CDR Z), Z by (CONS X1 X) to eliminate (CDR Z) and (CAR Z), X by (CONS Z1 Z) to eliminate (CDR X) and (CAR X), Z by (CONS X V1) to eliminate (CAR Z) and (CDR Z), Z by (CONS C V) to eliminate (CDR Z) and (CAR Z), V by (CONS X1 Z) to eliminate (CDR V) and (CAR V), Z by (CONS V Z1) to eliminate (CAR Z) and (CDR Z), Z by (CONS D X) to eliminate (CDR Z) and (CAR Z), X by (CONS C Z) to eliminate (CDR X) and (CAR X), Z by (CONS X X1) to eliminate (CAR Z) and (CDR Z), Z by (CONS W V) to eliminate (CDR Z) and (CAR Z), V by (CONS D Z) to eliminate (CDR V) and (CAR V), and Z by (CONS V C) to eliminate (CAR Z) and (CDR Z). The result is 21 new formulas: Case 5.21. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (PREDICATE (CAR EXP)) (NOT (EQUAL (CAR EXP) 'EQUAL))) (NOT (TERMP (CDR EXP) 'LIST (CADDAR EXP)))), which further simplifies, trivially, to: T. Case 5.20. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'NOT (LIST 'OR (CADAR X) (CADDAR X)))) (PREDICATE Z) (NOT (EQUAL Z 'EQUAL))) (NOT (TERMP X 'LIST (CADDR Z)))). But this further simplifies, rewriting with CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up the definitions of CDR, CAR, and CONS, to: T. Case 5.19. (IMPLIES (AND (NOT (LISTP V)) (NOT (LISTP X)) (EQUAL (CONS (CONS W V) X) (LIST 'NOT (LIST 'OR (CADAR X) (CADDAR X)))) (PREDICATE (CONS W V))) (NOT (TERMP X 'LIST (CADR V)))). This further simplifies, rewriting with CAR-NLISTP and CAR-CONS, and unfolding CDR, CAR, and CONS, to: T. Case 5.18. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP X)) (EQUAL (CONS (CONS W (CONS D Z)) X) (LIST 'NOT (LIST 'OR (CADAR X) (CADDAR X)))) (PREDICATE (CONS W (CONS D Z)))) (NOT (TERMP X 'LIST (CAR Z)))). However this further simplifies, rewriting with CAR-NLISTP and CAR-CONS, and unfolding the definitions of CDR, CAR, and CONS, to: T. Case 5.17. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS (CONS W (CONS D (CONS V C))) X) (LIST 'NOT (LIST 'OR (CADAR X) (CADDAR X)))) (PREDICATE (CONS W (CONS D (CONS V C))))) (NOT (TERMP X 'LIST V))). This further simplifies, rewriting with the lemmas CAR-NLISTP and CAR-CONS, and expanding CDR, CAR, and CONS, to: T. Case 5.16. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP V)) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'OR (CADR V) (CADDR V)))) (PREDICATE Z) (NOT (EQUAL Z 'EQUAL))) (NOT (TERMP (CONS V W) 'LIST (CADDR Z)))), which further simplifies, rewriting with CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the definitions of CAR, CDR, and CONS, to: T. Case 5.15. (IMPLIES (AND (NOT (LISTP X)) (NOT (LISTP V)) (EQUAL (CONS (CONS D X) (CONS V W)) (LIST 'NOT (LIST 'OR (CADR V) (CADDR V)))) (PREDICATE (CONS D X))) (NOT (TERMP (CONS V W) 'LIST (CADR X)))). However this further simplifies, rewriting with CDR-NLISTP and CAR-CONS, and opening up the definitions of CAR, CDR, and CONS, to: T. Case 5.14. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP V)) (EQUAL (CONS (CONS D (CONS C Z)) (CONS V W)) (LIST 'NOT (LIST 'OR (CADR V) (CADDR V)))) (PREDICATE (CONS D (CONS C Z)))) (NOT (TERMP (CONS V W) 'LIST (CAR Z)))). But this further simplifies, applying CDR-NLISTP and CAR-CONS, and unfolding the definitions of CAR, CDR, and CONS, to: T. Case 5.13. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS (CONS D (CONS C (CONS X X1))) (CONS V W)) (LIST 'NOT (LIST 'OR (CADR V) (CADDR V)))) (PREDICATE (CONS D (CONS C (CONS X X1))))) (NOT (TERMP (CONS V W) 'LIST X))). However this further simplifies, applying CDR-NLISTP and CAR-CONS, and unfolding CAR, CDR, and CONS, to: T. Case 5.12. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'OR (CAR X) (CADR X)))) (PREDICATE Z) (NOT (EQUAL Z 'EQUAL))) (NOT (TERMP (CONS (CONS D X) W) 'LIST (CADDR Z)))). This further simplifies, rewriting with CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the functions CAR and CONS, to: T. Case 5.11. (IMPLIES (AND (NOT (LISTP V)) (NOT (LISTP X)) (EQUAL (CONS (CONS C V) (CONS (CONS D X) W)) (LIST 'NOT (LIST 'OR (CAR X) (CADR X)))) (PREDICATE (CONS C V))) (NOT (TERMP (CONS (CONS D X) W) 'LIST (CADR V)))). However this further simplifies, applying CAR-NLISTP, CDR-NLISTP, and CAR-CONS, and unfolding the definitions of CAR and CONS, to: T. Case 5.10. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP X)) (EQUAL (CONS (CONS C (CONS X1 Z)) (CONS (CONS D X) W)) (LIST 'NOT (LIST 'OR (CAR X) (CADR X)))) (PREDICATE (CONS C (CONS X1 Z)))) (NOT (TERMP (CONS (CONS D X) W) 'LIST (CAR Z)))). However this further simplifies, applying CAR-NLISTP, CDR-NLISTP, and CAR-CONS, and expanding the definitions of CAR and CONS, to: T. Case 5.9. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS (CONS C (CONS X1 (CONS V Z1))) (CONS (CONS D X) W)) (LIST 'NOT (LIST 'OR (CAR X) (CADR X)))) (PREDICATE (CONS C (CONS X1 (CONS V Z1))))) (NOT (TERMP (CONS (CONS D X) W) 'LIST V))). This further simplifies, rewriting with CAR-NLISTP, CDR-NLISTP, and CAR-CONS, and unfolding the definitions of CAR and CONS, to: T. Case 5.8. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP C)) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'OR V (CAR C)))) (PREDICATE Z) (NOT (EQUAL Z 'EQUAL))) (NOT (TERMP (CONS (CONS D (CONS V C)) W) 'LIST (CADDR Z)))). This further simplifies, applying the lemmas CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and expanding the definition of CONS, to: T. Case 5.7. (IMPLIES (AND (NOT (LISTP X)) (NOT (LISTP C)) (EQUAL (CONS (CONS X1 X) (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'OR V (CAR C)))) (PREDICATE (CONS X1 X))) (NOT (TERMP (CONS (CONS D (CONS V C)) W) 'LIST (CADR X)))), which further simplifies, applying CAR-NLISTP and CAR-CONS, and unfolding the function CONS, to: T. Case 5.6. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP C)) (EQUAL (CONS (CONS X1 (CONS Z1 Z)) (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'OR V (CAR C)))) (PREDICATE (CONS X1 (CONS Z1 Z)))) (NOT (TERMP (CONS (CONS D (CONS V C)) W) 'LIST (CAR Z)))). This further simplifies, applying CAR-NLISTP and CAR-CONS, and unfolding the definition of CONS, to: T. Case 5.5. (IMPLIES (AND (NOT (LISTP C)) (EQUAL (CONS (CONS X1 (CONS Z1 (CONS X V1))) (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'OR V (CAR C)))) (PREDICATE (CONS X1 (CONS Z1 (CONS X V1))))) (NOT (TERMP (CONS (CONS D (CONS V C)) W) 'LIST X))). However this further simplifies, applying CAR-NLISTP and CAR-CONS, and opening up the function CONS, to: T. Case 5.4. (IMPLIES (AND (NOT (LISTP Z)) (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'OR V X))) (PREDICATE Z) (NOT (EQUAL Z 'EQUAL))) (NOT (TERMP (CONS (CONS D (CONS V (CONS X X1))) W) 'LIST (CADDR Z)))). However this further simplifies, appealing to the lemmas CAR-CONS, CDR-CONS, and CONS-EQUAL, and expanding the definition of PREDICATE, to: T. Case 5.3. (IMPLIES (AND (NOT (LISTP C)) (EQUAL (CONS (CONS Z1 C) (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'OR V X))) (PREDICATE (CONS Z1 C))) (NOT (TERMP (CONS (CONS D (CONS V (CONS X X1))) W) 'LIST (CADR C)))), which further simplifies, appealing to the lemma CAR-CONS, to: T. Case 5.2. (IMPLIES (AND (NOT (LISTP Z)) (EQUAL (CONS (CONS Z1 (CONS V1 Z)) (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'OR V X))) (PREDICATE (CONS Z1 (CONS V1 Z)))) (NOT (TERMP (CONS (CONS D (CONS V (CONS X X1))) W) 'LIST (CAR Z)))), which further simplifies, applying CAR-CONS, to: T. Case 5.1. (IMPLIES (AND (EQUAL (CONS (CONS Z1 (CONS V1 (CONS C W1))) (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'OR V X))) (PREDICATE (CONS Z1 (CONS V1 (CONS C W1))))) (NOT (TERMP (CONS (CONS D (CONS V (CONS X X1))) W) 'LIST C))). This further simplifies, applying CAR-CONS, to: T. Case 4. (IMPLIES (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (NOT (EQUAL EXP (LIST 'FORSOME (CADR EXP) (CADDR EXP))))). Appealing to the lemma CAR-CDR-ELIM, we now replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), V by (CONS D X) to eliminate (CDR V) and (CAR V), X by (CONS V C) to eliminate (CAR X) and (CDR X), C by (CONS X X1) to eliminate (CAR C) and (CDR C), W by (CONS C Z1) to eliminate (CAR W) and (CDR W), W by (CONS X X1) to eliminate (CAR W) and (CDR W), W by (CONS V C) to eliminate (CAR W) and (CDR W), and W by (CONS X D) to eliminate (CAR W) and (CDR W). The result is ten new formulas: Case 4.10. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP))))) (NOT (EQUAL EXP (LIST 'FORSOME (CADR EXP) (CADDR EXP))))), which further simplifies, obviously, to: T. Case 4.9. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'NOT (LIST 'OR (CADAR X) (CADDAR X))))) (NOT (EQUAL (CONS Z X) (LIST 'FORSOME (CAR X) (CADR X))))). This further simplifies, rewriting with CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding CDR, CAR, and CONS, to: T. Case 4.8. (IMPLIES (AND (NOT (LISTP W)) (NOT (LISTP V)) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'OR (CADR V) (CADDR V))))) (NOT (EQUAL (CONS Z (CONS V W)) (LIST 'FORSOME V (CAR W))))). This further simplifies, appealing to the lemmas CAR-NLISTP, CDR-NLISTP, and CAR-CONS, and opening up CONS, CAR, CDR, and EQUAL, to: T. Case 4.7. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'NOT (LIST 'OR (CADR V) (CADDR V))))) (NOT (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'FORSOME V X)))), which further simplifies, rewriting with CDR-NLISTP and CAR-CONS, and opening up the functions CAR, CDR, CONS, and EQUAL, to: T. Case 4.6. (IMPLIES (AND (NOT (LISTP W)) (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'OR (CAR X) (CADR X))))) (NOT (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'FORSOME (CONS D X) (CAR W))))). This further simplifies, applying CAR-NLISTP, CDR-NLISTP, and CAR-CONS, and opening up the definitions of CONS, CAR, and EQUAL, to: T. Case 4.5. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS D X) (CONS V C))) (LIST 'NOT (LIST 'OR (CAR X) (CADR X))))) (NOT (EQUAL (CONS Z (CONS (CONS D X) (CONS V C))) (LIST 'FORSOME (CONS D X) V)))). However this further simplifies, rewriting with CAR-NLISTP, CDR-NLISTP, and CAR-CONS, and unfolding the definitions of CAR, CONS, and EQUAL, to: T. Case 4.4. (IMPLIES (AND (NOT (LISTP W)) (NOT (LISTP C)) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'OR V (CAR C))))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'FORSOME (CONS D (CONS V C)) (CAR W))))). But this further simplifies, appealing to the lemmas CAR-NLISTP and CAR-CONS, and opening up CONS and EQUAL, to: T. Case 4.3. (IMPLIES (AND (NOT (LISTP C)) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) (CONS X X1))) (LIST 'NOT (LIST 'OR V (CAR C))))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V C)) (CONS X X1))) (LIST 'FORSOME (CONS D (CONS V C)) X)))), which further simplifies, rewriting with CAR-NLISTP and CAR-CONS, and expanding CONS and EQUAL, to: T. Case 4.2. (IMPLIES (AND (NOT (LISTP W)) (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'OR V X)))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'FORSOME (CONS D (CONS V (CONS X X1))) (CAR W))))). However this further simplifies, applying CAR-NLISTP and CAR-CONS, and opening up CONS and EQUAL, to: T. Case 4.1. (IMPLIES (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) (CONS C Z1))) (LIST 'NOT (LIST 'OR V X))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) (CONS C Z1))) (LIST 'FORSOME (CONS D (CONS V (CONS X X1))) C)))). This further simplifies, rewriting with the lemma CAR-CONS, and unfolding EQUAL, to: T. Case 3. (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EQUAL (CADR EXP) (LIST 'FORSOME (CADADR EXP) (CADDADR EXP))))). Applying the lemma CAR-CDR-ELIM, replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), V by (CONS D X) to eliminate (CDR V) and (CAR V), X by (CONS V C) to eliminate (CAR X) and (CDR X), and C by (CONS X X1) to eliminate (CAR C) and (CDR C). We thus obtain the following six new formulas: Case 3.6. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EQUAL (CADR EXP) (LIST 'FORSOME (CADADR EXP) (CADDADR EXP))))). This further simplifies, clearly, to: T. Case 3.5. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'NOT (LIST 'OR (CADAR X) (CADDAR X)))) (EQUAL (CONS Z X) (LIST 'NOT (CAR X)))) (NOT (EQUAL (CAR X) (LIST 'FORSOME (CADAR X) (CADDAR X))))). However this further simplifies, applying CAR-NLISTP, and opening up the definitions of CONS, CDR, CAR, and EQUAL, to: T. Case 3.4. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'OR (CADR V) (CADDR V)))) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT V))) (NOT (EQUAL V (LIST 'FORSOME (CADR V) (CADDR V))))). This further simplifies, obviously, to: T. Case 3.3. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'OR (CAR X) (CADR X)))) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (CONS D X)))) (NOT (EQUAL (CONS D X) (LIST 'FORSOME (CAR X) (CADR X))))). This further simplifies, applying CAR-NLISTP, CDR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and expanding the definitions of CAR, CONS, EQUAL, and CDR, to: T. Case 3.2. (IMPLIES (AND (NOT (LISTP C)) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'OR V (CAR C)))) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (CONS D (CONS V C))))) (NOT (EQUAL (CONS D (CONS V C)) (LIST 'FORSOME V (CAR C))))). This further simplifies, applying the lemmas CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up CONS and EQUAL, to: T. Case 3.1. (IMPLIES (AND (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'OR V X))) (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (CONS D (CONS V (CONS X X1)))))) (NOT (EQUAL (CONS D (CONS V (CONS X X1))) (LIST 'FORSOME V X)))), which further simplifies, applying CAR-CONS and CONS-EQUAL, and unfolding the function EQUAL, to: T. Case 2. (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (PREDICATE (CAADR EXP)) (NOT (EQUAL (CAADR EXP) 'EQUAL))) (NOT (TERMP (CDADR EXP) 'LIST (CADDAADR EXP)))). Appealing to the lemma CAR-CDR-ELIM, we now replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), V by (CONS D X) to eliminate (CDR V) and (CAR V), X by (CONS V C) to eliminate (CAR X) and (CDR X), C by (CONS X X1) to eliminate (CAR C) and (CDR C), D by (CONS Z1 C) to eliminate (CDR D) and (CAR D), C by (CONS V1 D) to eliminate (CDR C) and (CAR C), D by (CONS C W1) to eliminate (CAR D) and (CDR D), D by (CONS X1 X) to eliminate (CDR D) and (CAR D), X by (CONS Z1 D) to eliminate (CDR X) and (CAR X), D by (CONS X V1) to eliminate (CAR D) and (CDR D), D by (CONS C V) to eliminate (CDR D) and (CAR D), V by (CONS X1 D) to eliminate (CDR V) and (CAR V), and D by (CONS V Z1) to eliminate (CAR D) and (CDR D). This generates 15 new formulas: Case 2.15. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (PREDICATE (CAADR EXP)) (NOT (EQUAL (CAADR EXP) 'EQUAL))) (NOT (TERMP (CDADR EXP) 'LIST (CADDAADR EXP)))), which further simplifies, trivially, to: T. Case 2.14. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'NOT (LIST 'OR (CADAR X) (CADDAR X)))) (EQUAL (CONS Z X) (LIST 'NOT (CAR X))) (PREDICATE (CAAR X)) (NOT (EQUAL (CAAR X) 'EQUAL))) (NOT (TERMP (CDAR X) 'LIST (CADDAAR X)))). But this further simplifies, applying the lemma CAR-NLISTP, and unfolding CONS, CDR, CAR, and EQUAL, to: T. Case 2.13. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'OR (CADR V) (CADDR V)))) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT V)) (PREDICATE (CAR V)) (NOT (EQUAL (CAR V) 'EQUAL))) (NOT (TERMP (CDR V) 'LIST (CADDAR V)))), which further simplifies, applying CDR-NLISTP, CAR-CONS, and CDR-CONS, and opening up the definitions of CAR, CDR, CONS, and EQUAL, to: T. Case 2.12. (IMPLIES (AND (NOT (LISTP D)) (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'OR (CAR X) (CADR X)))) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (CONS D X))) (PREDICATE D) (NOT (EQUAL D 'EQUAL))) (NOT (TERMP X 'LIST (CADDR D)))). This further simplifies, appealing to the lemmas CAR-NLISTP, CDR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and opening up the definitions of CAR, CONS, EQUAL, and CDR, to: T. Case 2.11. (IMPLIES (AND (NOT (LISTP V)) (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS (CONS C V) X) W)) (LIST 'NOT (LIST 'OR (CAR X) (CADR X)))) (EQUAL (CONS Z (CONS (CONS (CONS C V) X) W)) (LIST 'NOT (CONS (CONS C V) X))) (PREDICATE (CONS C V))) (NOT (TERMP X 'LIST (CADR V)))), which further simplifies, rewriting with CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CDR-CONS, and opening up the functions CAR, CONS, EQUAL, and CDR, to: T. Case 2.10. (IMPLIES (AND (NOT (LISTP D)) (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS (CONS C (CONS X1 D)) X) W)) (LIST 'NOT (LIST 'OR (CAR X) (CADR X)))) (EQUAL (CONS Z (CONS (CONS (CONS C (CONS X1 D)) X) W)) (LIST 'NOT (CONS (CONS C (CONS X1 D)) X))) (PREDICATE (CONS C (CONS X1 D)))) (NOT (TERMP X 'LIST (CAR D)))). However this further simplifies, applying the lemmas CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CDR-CONS, and unfolding the functions CAR, CONS, EQUAL, and CDR, to: T. Case 2.9. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS (CONS C (CONS X1 (CONS V Z1))) X) W)) (LIST 'NOT (LIST 'OR (CAR X) (CADR X)))) (EQUAL (CONS Z (CONS (CONS (CONS C (CONS X1 (CONS V Z1))) X) W)) (LIST 'NOT (CONS (CONS C (CONS X1 (CONS V Z1))) X))) (PREDICATE (CONS C (CONS X1 (CONS V Z1))))) (NOT (TERMP X 'LIST V))), which further simplifies, rewriting with CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CDR-CONS, and expanding the definitions of CAR, CONS, EQUAL, and CDR, to: T. Case 2.8. (IMPLIES (AND (NOT (LISTP D)) (NOT (LISTP C)) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'OR V (CAR C)))) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (CONS D (CONS V C)))) (PREDICATE D) (NOT (EQUAL D 'EQUAL))) (NOT (TERMP (CONS V C) 'LIST (CADDR D)))). This further simplifies, rewriting with CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding the definitions of CONS and EQUAL, to: T. Case 2.7. (IMPLIES (AND (NOT (LISTP X)) (NOT (LISTP C)) (EQUAL (CONS Z (CONS (CONS (CONS X1 X) (CONS V C)) W)) (LIST 'NOT (LIST 'OR V (CAR C)))) (EQUAL (CONS Z (CONS (CONS (CONS X1 X) (CONS V C)) W)) (LIST 'NOT (CONS (CONS X1 X) (CONS V C)))) (PREDICATE (CONS X1 X))) (NOT (TERMP (CONS V C) 'LIST (CADR X)))). But this further simplifies, applying CAR-NLISTP, CAR-CONS, and CDR-CONS, and expanding the functions CONS and EQUAL, to: T. Case 2.6. (IMPLIES (AND (NOT (LISTP D)) (NOT (LISTP C)) (EQUAL (CONS Z (CONS (CONS (CONS X1 (CONS Z1 D)) (CONS V C)) W)) (LIST 'NOT (LIST 'OR V (CAR C)))) (EQUAL (CONS Z (CONS (CONS (CONS X1 (CONS Z1 D)) (CONS V C)) W)) (LIST 'NOT (CONS (CONS X1 (CONS Z1 D)) (CONS V C)))) (PREDICATE (CONS X1 (CONS Z1 D)))) (NOT (TERMP (CONS V C) 'LIST (CAR D)))). This further simplifies, rewriting with CAR-NLISTP, CAR-CONS, and CDR-CONS, and opening up the definitions of CONS and EQUAL, to: T. Case 2.5. (IMPLIES (AND (NOT (LISTP C)) (EQUAL (CONS Z (CONS (CONS (CONS X1 (CONS Z1 (CONS X V1))) (CONS V C)) W)) (LIST 'NOT (LIST 'OR V (CAR C)))) (EQUAL (CONS Z (CONS (CONS (CONS X1 (CONS Z1 (CONS X V1))) (CONS V C)) W)) (LIST 'NOT (CONS (CONS X1 (CONS Z1 (CONS X V1))) (CONS V C)))) (PREDICATE (CONS X1 (CONS Z1 (CONS X V1))))) (NOT (TERMP (CONS V C) 'LIST X))). This further simplifies, applying the lemmas CAR-NLISTP, CAR-CONS, and CDR-CONS, and expanding the functions CONS and EQUAL, to: T. Case 2.4. (IMPLIES (AND (NOT (LISTP D)) (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'OR V X))) (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (CONS D (CONS V (CONS X X1))))) (PREDICATE D) (NOT (EQUAL D 'EQUAL))) (NOT (TERMP (CONS V (CONS X X1)) 'LIST (CADDR D)))), which further simplifies, rewriting with CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding the definitions of EQUAL and PREDICATE, to: T. Case 2.3. (IMPLIES (AND (NOT (LISTP C)) (EQUAL (CONS Z (CONS (CONS (CONS Z1 C) (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'OR V X))) (EQUAL (CONS Z (CONS (CONS (CONS Z1 C) (CONS V (CONS X X1))) W)) (LIST 'NOT (CONS (CONS Z1 C) (CONS V (CONS X X1))))) (PREDICATE (CONS Z1 C))) (NOT (TERMP (CONS V (CONS X X1)) 'LIST (CADR C)))). But this further simplifies, applying CAR-CONS and CDR-CONS, and unfolding the definition of EQUAL, to: T. Case 2.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL (CONS Z (CONS (CONS (CONS Z1 (CONS V1 D)) (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'OR V X))) (EQUAL (CONS Z (CONS (CONS (CONS Z1 (CONS V1 D)) (CONS V (CONS X X1))) W)) (LIST 'NOT (CONS (CONS Z1 (CONS V1 D)) (CONS V (CONS X X1))))) (PREDICATE (CONS Z1 (CONS V1 D)))) (NOT (TERMP (CONS V (CONS X X1)) 'LIST (CAR D)))). This further simplifies, rewriting with CAR-CONS and CDR-CONS, and unfolding EQUAL, to: T. Case 2.1. (IMPLIES (AND (EQUAL (CONS Z (CONS (CONS (CONS Z1 (CONS V1 (CONS C W1))) (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'OR V X))) (EQUAL (CONS Z (CONS (CONS (CONS Z1 (CONS V1 (CONS C W1))) (CONS V (CONS X X1))) W)) (LIST 'NOT (CONS (CONS Z1 (CONS V1 (CONS C W1))) (CONS V (CONS X X1))))) (PREDICATE (CONS Z1 (CONS V1 (CONS C W1))))) (NOT (TERMP (CONS V (CONS X X1)) 'LIST C))). However this further simplifies, rewriting with CAR-CONS and CDR-CONS, and opening up EQUAL, to: T. Case 1. (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (PREDICATE (CAADR EXP)) (EQUAL (CAADR EXP) 'EQUAL)) (NOT (TERMP (CDADR EXP) 'LIST 2))). However this again simplifies, applying CAR-CONS, and opening up PREDICATE, to: (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (EQUAL (CAADR EXP) 'EQUAL)) (NOT (TERMP (CDADR EXP) 'LIST 2))). Applying the lemma CAR-CDR-ELIM, replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), V by (CONS D X) to eliminate (CDR V) and (CAR V), X by (CONS V C) to eliminate (CAR X) and (CDR X), and C by (CONS X X1) to eliminate (CAR C) and (CDR C). We thus obtain the following six new goals: Case 1.6. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (EQUAL (CAADR EXP) 'EQUAL)) (NOT (TERMP (CDADR EXP) 'LIST 2))). This further simplifies, clearly, to: T. Case 1.5. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'NOT (LIST 'OR (CADAR X) (CADDAR X)))) (EQUAL (CONS Z X) (LIST 'NOT (CAR X))) (EQUAL (CAAR X) 'EQUAL)) (NOT (TERMP (CDAR X) 'LIST 2))). But this further simplifies, rewriting with the lemma CAR-NLISTP, and expanding CONS, CDR, CAR, and EQUAL, to: T. Case 1.4. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'OR (CADR V) (CADDR V)))) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT V)) (EQUAL (CAR V) 'EQUAL)) (NOT (TERMP (CDR V) 'LIST 2))), which further simplifies, rewriting with CDR-NLISTP, CAR-CONS, and CDR-CONS, and unfolding CAR, CDR, CONS, and EQUAL, to: T. Case 1.3. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'OR (CAR X) (CADR X)))) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (CONS D X))) (EQUAL D 'EQUAL)) (NOT (TERMP X 'LIST 2))). But this further simplifies, rewriting with CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CDR-CONS, and unfolding the functions CAR, CONS, EQUAL, and CDR, to: T. Case 1.2. (IMPLIES (AND (NOT (LISTP C)) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'OR V (CAR C)))) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (CONS D (CONS V C)))) (EQUAL D 'EQUAL)) (NOT (TERMP (CONS V C) 'LIST 2))). However this further simplifies, applying the lemmas CAR-NLISTP, CAR-CONS, and CDR-CONS, and unfolding the definitions of CONS and EQUAL, to: T. Case 1.1. (IMPLIES (AND (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'OR V X))) (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (CONS D (CONS V (CONS X X1))))) (EQUAL D 'EQUAL)) (NOT (TERMP (CONS V (CONS X X1)) 'LIST 2))), which further simplifies, rewriting with CAR-CONS and CDR-CONS, and opening up EQUAL, to: T. Q.E.D. [ 0.0 0.2 0.3 ] NOR-TYPE-NOT-PROP-ATOMP (DEFN LIST-COUNT (LIST) (IF (NLISTP LIST) 0 (PLUS (ADD1 (COUNT (CAR LIST))) (LIST-COUNT (CDR LIST))))) Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP establish that the measure (COUNT LIST) decreases according to the well-founded relation LESSP in each recursive call. Hence, LIST-COUNT is accepted under the definitional principle. Note that: (NUMBERP (LIST-COUNT LIST)) is a theorem. [ 0.0 0.0 0.0 ] LIST-COUNT (DEFN NEG-LIST (EXP LIST) (IF (NLISTP LIST) F (OR (NEG EXP (CAR LIST)) (NEG-LIST EXP (CDR LIST))))) Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP inform us that the measure (COUNT LIST) decreases according to the well-founded relation LESSP in each recursive call. Hence, NEG-LIST is accepted under the principle of definition. Note that: (OR (FALSEP (NEG-LIST EXP LIST)) (TRUEP (NEG-LIST EXP LIST))) is a theorem. [ 0.0 0.0 0.0 ] NEG-LIST (PROVE-LEMMA LESSP-LIST-COUNT (REWRITE) (IMPLIES (LISTP FLIST) (LESSP (LIST-COUNT (CDR FLIST)) (LIST-COUNT FLIST)))) WARNING: Note that the proposed lemma LESSP-LIST-COUNT is to be stored as zero type prescription rules, zero compound recognizer rules, one linear rule, and zero replacement rules. This formula simplifies, applying SUB1-ADD1, and opening up the functions PLUS, LIST-COUNT, and LESSP, to: (IMPLIES (AND (LISTP FLIST) (NOT (EQUAL (LIST-COUNT (CDR FLIST)) 0))) (LESSP (SUB1 (LIST-COUNT (CDR FLIST))) (PLUS (COUNT (CAR FLIST)) (LIST-COUNT (CDR FLIST))))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LESSP-LIST-COUNT (PROVE-LEMMA OR-TYPE-LIST-COUNT (REWRITE) (IMPLIES (AND (OR-TYPE (CAR FLIST)) (LISTP FLIST)) (LESSP (LIST-COUNT (CONS (CADAR FLIST) (CONS (CADDAR FLIST) (CDR FLIST)))) (LIST-COUNT FLIST)))) WARNING: Note that the proposed lemma OR-TYPE-LIST-COUNT is to be stored as zero type prescription rules, zero compound recognizer rules, one linear rule, and zero replacement rules. This conjecture simplifies, rewriting with SUB1-ADD1, CDR-CONS, and CAR-CONS, and opening up F-OR, OR-TYPE, PLUS, LIST-COUNT, and LESSP, to: (IMPLIES (AND (EQUAL (CAR FLIST) (LIST 'OR (CADAR FLIST) (CADDAR FLIST))) (LISTP FLIST)) (LESSP (PLUS (COUNT (CADAR FLIST)) (ADD1 (PLUS (COUNT (CADDAR FLIST)) (LIST-COUNT (CDR FLIST))))) (PLUS (COUNT (CAR FLIST)) (LIST-COUNT (CDR FLIST))))). Appealing to the lemma CAR-CDR-ELIM, we now replace FLIST by (CONS X Z) to eliminate (CAR FLIST) and (CDR FLIST), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), and D by (CONS V C) to eliminate (CAR D) and (CDR D). The result is four new formulas: Case 4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'OR (CADR X) (CADDR X)))) (LESSP (PLUS (COUNT (CADR X)) (ADD1 (PLUS (COUNT (CADDR X)) (LIST-COUNT Z)))) (PLUS (COUNT X) (LIST-COUNT Z)))), which further simplifies, obviously, to: T. Case 3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'OR (CAR V) (CADR V)))) (LESSP (PLUS (COUNT (CAR V)) (ADD1 (PLUS (COUNT (CADR V)) (LIST-COUNT Z)))) (PLUS (COUNT (CONS W V)) (LIST-COUNT Z)))). But this further simplifies, rewriting with CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the definitions of CAR and CONS, to: T. Case 2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL (CONS W (CONS X D)) (LIST 'OR X (CAR D)))) (LESSP (PLUS (COUNT X) (ADD1 (PLUS (COUNT (CAR D)) (LIST-COUNT Z)))) (PLUS (COUNT (CONS W (CONS X D))) (LIST-COUNT Z)))). But this further simplifies, applying the lemmas CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding CONS, to: T. Case 1. (IMPLIES (EQUAL (CONS W (CONS X (CONS V C))) (LIST 'OR X V)) (LESSP (PLUS (COUNT X) (ADD1 (PLUS (COUNT V) (LIST-COUNT Z)))) (PLUS (COUNT (CONS W (CONS X (CONS V C)))) (LIST-COUNT Z)))), which further simplifies, applying CAR-CONS, CDR-CONS, CONS-EQUAL, COUNT-CONS, and SUB1-ADD1, and opening up COUNT, PLUS, and LESSP, to: (IMPLIES (AND (EQUAL W 'OR) (EQUAL C NIL) (NOT (EQUAL (PLUS (COUNT X) (ADD1 (PLUS (COUNT V) (LIST-COUNT Z)))) 0))) (LESSP (SUB1 (PLUS (COUNT X) (ADD1 (PLUS (COUNT V) (LIST-COUNT Z))))) (PLUS (PLUS 164 (ADD1 (PLUS (COUNT X) (ADD1 (PLUS (COUNT V) 231))))) (LIST-COUNT Z)))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.1 0.0 ] OR-TYPE-LIST-COUNT (PROVE-LEMMA NOR-TYPE-LIST-COUNT1 (REWRITE) (IMPLIES (AND (LISTP FLIST) (NOR-TYPE (CAR FLIST))) (LESSP (LIST-COUNT (CONS (LIST 'NOT (CADADAR FLIST)) (CDR FLIST))) (LIST-COUNT FLIST)))) WARNING: Note that the proposed lemma NOR-TYPE-LIST-COUNT1 is to be stored as zero type prescription rules, zero compound recognizer rules, one linear rule, and zero replacement rules. This conjecture simplifies, appealing to the lemmas SUB1-ADD1, CDR-CONS, COUNT-CONS, and CAR-CONS, and opening up F-NOT, F-OR, NOR-TYPE, PLUS, COUNT, LIST-COUNT, and LESSP, to two new formulas: Case 2. (IMPLIES (AND (LISTP FLIST) (EQUAL (CAR FLIST) (LIST 'NOT (LIST 'OR (CADADAR FLIST) (CADDADAR FLIST))))) (NOT (EQUAL (PLUS (COUNT (CAR FLIST)) (LIST-COUNT (CDR FLIST))) 0))). Applying the lemma CAR-CDR-ELIM, replace FLIST by (CONS X Z) to eliminate (CAR FLIST) and (CDR FLIST), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), X by (CONS C V) to eliminate (CDR X) and (CAR X), V by (CONS X X1) to eliminate (CAR V) and (CDR V), and X1 by (CONS V Z1) to eliminate (CAR X1) and (CDR X1). We would thus like to prove the following six new formulas: Case 2.6. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'NOT (LIST 'OR (CADADR X) (CADDADR X))))) (NOT (EQUAL (PLUS (COUNT X) (LIST-COUNT Z)) 0))). This further simplifies, clearly, to: T. Case 2.5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'NOT (LIST 'OR (CADAR V) (CADDAR V))))) (NOT (EQUAL (PLUS (COUNT (CONS W V)) (LIST-COUNT Z)) 0))). This further simplifies, applying CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the definitions of CDR, CAR, and CONS, to: T. Case 2.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS W (CONS X D)) (LIST 'NOT (LIST 'OR (CADR X) (CADDR X))))) (NOT (EQUAL (PLUS (COUNT (CONS W (CONS X D))) (LIST-COUNT Z)) 0))). This further simplifies, appealing to the lemmas CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up the definitions of CAR, CDR, and CONS, to: T. Case 2.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W (CONS (CONS C V) D)) (LIST 'NOT (LIST 'OR (CAR V) (CADR V))))) (NOT (EQUAL (PLUS (COUNT (CONS W (CONS (CONS C V) D))) (LIST-COUNT Z)) 0))), which further simplifies, applying CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the functions CAR and CONS, to: T. Case 2.2. (IMPLIES (AND (NOT (LISTP X1)) (EQUAL (CONS W (CONS (CONS C (CONS X X1)) D)) (LIST 'NOT (LIST 'OR X (CAR X1))))) (NOT (EQUAL (PLUS (COUNT (CONS W (CONS (CONS C (CONS X X1)) D))) (LIST-COUNT Z)) 0))). However this further simplifies, appealing to the lemmas CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and expanding the definition of CONS, to: T. Case 2.1. (IMPLIES (EQUAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) (LIST 'NOT (LIST 'OR X V))) (NOT (EQUAL (PLUS (COUNT (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D))) (LIST-COUNT Z)) 0))), which further simplifies, rewriting with CAR-CONS, CDR-CONS, CONS-EQUAL, COUNT-CONS, and SUB1-ADD1, and unfolding COUNT and PLUS, to: T. Case 1. (IMPLIES (AND (LISTP FLIST) (EQUAL (CAR FLIST) (LIST 'NOT (LIST 'OR (CADADAR FLIST) (CADDADAR FLIST))))) (LESSP (PLUS (PLUS 245 (ADD1 (PLUS (COUNT (CADADAR FLIST)) 231))) (LIST-COUNT (CDR FLIST))) (SUB1 (PLUS (COUNT (CAR FLIST)) (LIST-COUNT (CDR FLIST)))))). Appealing to the lemma CAR-CDR-ELIM, we now replace FLIST by (CONS X Z) to eliminate (CAR FLIST) and (CDR FLIST), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), X by (CONS C V) to eliminate (CDR X) and (CAR X), V by (CONS X X1) to eliminate (CAR V) and (CDR V), and X1 by (CONS V Z1) to eliminate (CAR X1) and (CDR X1). This generates six new formulas: Case 1.6. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'NOT (LIST 'OR (CADADR X) (CADDADR X))))) (LESSP (PLUS (PLUS 245 (ADD1 (PLUS (COUNT (CADADR X)) 231))) (LIST-COUNT Z)) (SUB1 (PLUS (COUNT X) (LIST-COUNT Z))))), which further simplifies, trivially, to: T. Case 1.5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'NOT (LIST 'OR (CADAR V) (CADDAR V))))) (LESSP (PLUS (PLUS 245 (ADD1 (PLUS (COUNT (CADAR V)) 231))) (LIST-COUNT Z)) (SUB1 (PLUS (COUNT (CONS W V)) (LIST-COUNT Z))))). However this further simplifies, applying CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the definitions of CDR, CAR, and CONS, to: T. Case 1.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS W (CONS X D)) (LIST 'NOT (LIST 'OR (CADR X) (CADDR X))))) (LESSP (PLUS (PLUS 245 (ADD1 (PLUS (COUNT (CADR X)) 231))) (LIST-COUNT Z)) (SUB1 (PLUS (COUNT (CONS W (CONS X D))) (LIST-COUNT Z))))). However this further simplifies, appealing to the lemmas CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding CAR, CDR, and CONS, to: T. Case 1.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W (CONS (CONS C V) D)) (LIST 'NOT (LIST 'OR (CAR V) (CADR V))))) (LESSP (PLUS (PLUS 245 (ADD1 (PLUS (COUNT (CAR V)) 231))) (LIST-COUNT Z)) (SUB1 (PLUS (COUNT (CONS W (CONS (CONS C V) D))) (LIST-COUNT Z))))), which further simplifies, rewriting with the lemmas CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the definitions of CAR and CONS, to: T. Case 1.2. (IMPLIES (AND (NOT (LISTP X1)) (EQUAL (CONS W (CONS (CONS C (CONS X X1)) D)) (LIST 'NOT (LIST 'OR X (CAR X1))))) (LESSP (PLUS (PLUS 245 (ADD1 (PLUS (COUNT X) 231))) (LIST-COUNT Z)) (SUB1 (PLUS (COUNT (CONS W (CONS (CONS C (CONS X X1)) D))) (LIST-COUNT Z))))), which further simplifies, applying CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding the function CONS, to: T. Case 1.1. (IMPLIES (EQUAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) (LIST 'NOT (LIST 'OR X V))) (LESSP (PLUS (PLUS 245 (ADD1 (PLUS (COUNT X) 231))) (LIST-COUNT Z)) (SUB1 (PLUS (COUNT (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D))) (LIST-COUNT Z))))). However this further simplifies, applying the lemmas CAR-CONS, CDR-CONS, CONS-EQUAL, COUNT-CONS, and SUB1-ADD1, and unfolding the definitions of COUNT and PLUS, to: (IMPLIES (AND (EQUAL W 'NOT) (EQUAL C 'OR) (EQUAL Z1 NIL) (EQUAL D NIL)) (LESSP (PLUS (PLUS 245 (ADD1 (PLUS (COUNT X) 231))) (LIST-COUNT Z)) (PLUS (PLUS 245 (ADD1 (ADD1 (PLUS (PLUS 164 (ADD1 (PLUS (COUNT X) (ADD1 (PLUS (COUNT V) 231))))) 231)))) (LIST-COUNT Z)))). But this again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.1 0.1 ] NOR-TYPE-LIST-COUNT1 (PROVE-LEMMA NOR-TYPE-LIST-COUNT2 (REWRITE) (IMPLIES (AND (LISTP FLIST) (NOR-TYPE (CAR FLIST))) (LESSP (LIST-COUNT (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST))) (LIST-COUNT FLIST)))) WARNING: Note that the proposed lemma NOR-TYPE-LIST-COUNT2 is to be stored as zero type prescription rules, zero compound recognizer rules, one linear rule, and zero replacement rules. This simplifies, applying SUB1-ADD1, CDR-CONS, COUNT-CONS, and CAR-CONS, and unfolding F-NOT, F-OR, NOR-TYPE, PLUS, COUNT, LIST-COUNT, and LESSP, to the following two new goals: Case 2. (IMPLIES (AND (LISTP FLIST) (EQUAL (CAR FLIST) (LIST 'NOT (LIST 'OR (CADADAR FLIST) (CADDADAR FLIST))))) (NOT (EQUAL (PLUS (COUNT (CAR FLIST)) (LIST-COUNT (CDR FLIST))) 0))). Appealing to the lemma CAR-CDR-ELIM, we now replace FLIST by (CONS X Z) to eliminate (CAR FLIST) and (CDR FLIST), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), X by (CONS C V) to eliminate (CDR X) and (CAR X), V by (CONS X X1) to eliminate (CAR V) and (CDR V), and X1 by (CONS V Z1) to eliminate (CAR X1) and (CDR X1). We must thus prove six new formulas: Case 2.6. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'NOT (LIST 'OR (CADADR X) (CADDADR X))))) (NOT (EQUAL (PLUS (COUNT X) (LIST-COUNT Z)) 0))), which further simplifies, clearly, to: T. Case 2.5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'NOT (LIST 'OR (CADAR V) (CADDAR V))))) (NOT (EQUAL (PLUS (COUNT (CONS W V)) (LIST-COUNT Z)) 0))). However this further simplifies, applying CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the functions CDR, CAR, and CONS, to: T. Case 2.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS W (CONS X D)) (LIST 'NOT (LIST 'OR (CADR X) (CADDR X))))) (NOT (EQUAL (PLUS (COUNT (CONS W (CONS X D))) (LIST-COUNT Z)) 0))). However this further simplifies, applying the lemmas CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the definitions of CAR, CDR, and CONS, to: T. Case 2.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W (CONS (CONS C V) D)) (LIST 'NOT (LIST 'OR (CAR V) (CADR V))))) (NOT (EQUAL (PLUS (COUNT (CONS W (CONS (CONS C V) D))) (LIST-COUNT Z)) 0))), which further simplifies, applying the lemmas CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up the definitions of CAR and CONS, to: T. Case 2.2. (IMPLIES (AND (NOT (LISTP X1)) (EQUAL (CONS W (CONS (CONS C (CONS X X1)) D)) (LIST 'NOT (LIST 'OR X (CAR X1))))) (NOT (EQUAL (PLUS (COUNT (CONS W (CONS (CONS C (CONS X X1)) D))) (LIST-COUNT Z)) 0))), which further simplifies, applying CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and opening up the definition of CONS, to: T. Case 2.1. (IMPLIES (EQUAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) (LIST 'NOT (LIST 'OR X V))) (NOT (EQUAL (PLUS (COUNT (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D))) (LIST-COUNT Z)) 0))). However this further simplifies, appealing to the lemmas CAR-CONS, CDR-CONS, CONS-EQUAL, COUNT-CONS, and SUB1-ADD1, and opening up the definitions of COUNT and PLUS, to: T. Case 1. (IMPLIES (AND (LISTP FLIST) (EQUAL (CAR FLIST) (LIST 'NOT (LIST 'OR (CADADAR FLIST) (CADDADAR FLIST))))) (LESSP (PLUS (PLUS 245 (ADD1 (PLUS (COUNT (CADDADAR FLIST)) 231))) (LIST-COUNT (CDR FLIST))) (SUB1 (PLUS (COUNT (CAR FLIST)) (LIST-COUNT (CDR FLIST)))))). Applying the lemma CAR-CDR-ELIM, replace FLIST by (CONS X Z) to eliminate (CAR FLIST) and (CDR FLIST), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), X by (CONS C V) to eliminate (CDR X) and (CAR X), V by (CONS X X1) to eliminate (CAR V) and (CDR V), and X1 by (CONS V Z1) to eliminate (CAR X1) and (CDR X1). This produces the following six new conjectures: Case 1.6. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'NOT (LIST 'OR (CADADR X) (CADDADR X))))) (LESSP (PLUS (PLUS 245 (ADD1 (PLUS (COUNT (CADDADR X)) 231))) (LIST-COUNT Z)) (SUB1 (PLUS (COUNT X) (LIST-COUNT Z))))). This further simplifies, obviously, to: T. Case 1.5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'NOT (LIST 'OR (CADAR V) (CADDAR V))))) (LESSP (PLUS (PLUS 245 (ADD1 (PLUS (COUNT (CADDAR V)) 231))) (LIST-COUNT Z)) (SUB1 (PLUS (COUNT (CONS W V)) (LIST-COUNT Z))))). This further simplifies, rewriting with CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the functions CDR, CAR, and CONS, to: T. Case 1.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS W (CONS X D)) (LIST 'NOT (LIST 'OR (CADR X) (CADDR X))))) (LESSP (PLUS (PLUS 245 (ADD1 (PLUS (COUNT (CADDR X)) 231))) (LIST-COUNT Z)) (SUB1 (PLUS (COUNT (CONS W (CONS X D))) (LIST-COUNT Z))))). This further simplifies, rewriting with CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up the definitions of CAR, CDR, and CONS, to: T. Case 1.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W (CONS (CONS C V) D)) (LIST 'NOT (LIST 'OR (CAR V) (CADR V))))) (LESSP (PLUS (PLUS 245 (ADD1 (PLUS (COUNT (CADR V)) 231))) (LIST-COUNT Z)) (SUB1 (PLUS (COUNT (CONS W (CONS (CONS C V) D))) (LIST-COUNT Z))))). But this further simplifies, appealing to the lemmas CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding CAR and CONS, to: T. Case 1.2. (IMPLIES (AND (NOT (LISTP X1)) (EQUAL (CONS W (CONS (CONS C (CONS X X1)) D)) (LIST 'NOT (LIST 'OR X (CAR X1))))) (LESSP (PLUS (PLUS 245 (ADD1 (PLUS (COUNT (CAR X1)) 231))) (LIST-COUNT Z)) (SUB1 (PLUS (COUNT (CONS W (CONS (CONS C (CONS X X1)) D))) (LIST-COUNT Z))))), which further simplifies, rewriting with the lemmas CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding CONS, to: T. Case 1.1. (IMPLIES (EQUAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) (LIST 'NOT (LIST 'OR X V))) (LESSP (PLUS (PLUS 245 (ADD1 (PLUS (COUNT V) 231))) (LIST-COUNT Z)) (SUB1 (PLUS (COUNT (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D))) (LIST-COUNT Z))))), which further simplifies, applying CAR-CONS, CDR-CONS, CONS-EQUAL, COUNT-CONS, and SUB1-ADD1, and opening up the definitions of COUNT and PLUS, to: (IMPLIES (AND (EQUAL W 'NOT) (EQUAL C 'OR) (EQUAL Z1 NIL) (EQUAL D NIL)) (LESSP (PLUS (PLUS 245 (ADD1 (PLUS (COUNT V) 231))) (LIST-COUNT Z)) (PLUS (PLUS 245 (ADD1 (ADD1 (PLUS (PLUS 164 (ADD1 (PLUS (COUNT X) (ADD1 (PLUS (COUNT V) 231))))) 231)))) (LIST-COUNT Z)))), which again simplifies, using linear arithmetic, to: T. Q.E.D. [ 0.0 0.1 0.1 ] NOR-TYPE-LIST-COUNT2 (PROVE-LEMMA DBLE-NEG-LIST-COUNT (REWRITE) (IMPLIES (AND (LISTP FLIST) (DBLE-NEG-TYPE (CAR FLIST))) (LESSP (LIST-COUNT (CONS (CADADAR FLIST) (CDR FLIST))) (LIST-COUNT FLIST)))) WARNING: Note that the proposed lemma DBLE-NEG-LIST-COUNT is to be stored as zero type prescription rules, zero compound recognizer rules, one linear rule, and zero replacement rules. This formula simplifies, rewriting with SUB1-ADD1, CDR-CONS, and CAR-CONS, and opening up the functions F-NOT, DBLE-NEG-TYPE, PLUS, LIST-COUNT, and LESSP, to the new formula: (IMPLIES (AND (LISTP FLIST) (EQUAL (CAR FLIST) (LIST 'NOT (LIST 'NOT (CADADAR FLIST))))) (LESSP (PLUS (COUNT (CADADAR FLIST)) (LIST-COUNT (CDR FLIST))) (PLUS (COUNT (CAR FLIST)) (LIST-COUNT (CDR FLIST))))), which again simplifies, using linear arithmetic and rewriting with CDR-LESSP, CDR-LESSEQP, and CAR-LESSEQP, to: T. Q.E.D. [ 0.0 0.0 0.0 ] DBLE-NEG-LIST-COUNT (TOGGLE G0230 PROP-ATOMP T) [ 0.0 0.0 0.0 ] G0230 (TOGGLE G0237 OR-TYPE T) [ 0.0 0.0 0.0 ] G0237 (TOGGLE G0238 NOR-TYPE T) [ 0.0 0.0 0.0 ] G0238 (TOGGLE G0239 DBLE-NEG-TYPE T) [ 0.0 0.0 0.0 ] G0239 (TOGGLE G0240 LIST-COUNT T) [ 0.0 0.0 0.0 ] G0240 (DEFN TAUTOLOGYP1 (FLIST AUXLIST) (IF (NLISTP FLIST) F (IF (PROP-ATOMP (CAR FLIST)) (OR (NEG-LIST (CAR FLIST) AUXLIST) (TAUTOLOGYP1 (CDR FLIST) (CONS (CAR FLIST) AUXLIST))) (IF (OR-TYPE (CAR FLIST)) (TAUTOLOGYP1 (CONS (ARG1 (CAR FLIST)) (CONS (ARG2 (CAR FLIST)) (CDR FLIST))) AUXLIST) (IF (NOR-TYPE (CAR FLIST)) (AND (TAUTOLOGYP1 (CONS (F-NOT (ARG1 (ARG1 (CAR FLIST)))) (CDR FLIST)) AUXLIST) (TAUTOLOGYP1 (CONS (F-NOT (ARG2 (ARG1 (CAR FLIST)))) (CDR FLIST)) AUXLIST)) (IF (DBLE-NEG-TYPE (CAR FLIST)) (TAUTOLOGYP1 (CONS (ARG1 (ARG1 (CAR FLIST))) (CDR FLIST)) AUXLIST) F))))) ((LESSP (LIST-COUNT FLIST)))) Linear arithmetic, the lemmas LESSP-LIST-COUNT, OR-TYPE-NOT-PROP-ATOMP, OR-TYPE-LIST-COUNT, NOR-TYPE-NOT-PROP-ATOMP, NOR-TYPE-LIST-COUNT2, NOR-TYPE-LIST-COUNT1, DBLE-NEG-NOT-PROP-ATOMP, and DBLE-NEG-LIST-COUNT, and the definitions of NLISTP, ARG2, ARG1, and F-NOT inform us that the measure (LIST-COUNT FLIST) decreases according to the well-founded relation LESSP in each recursive call. Hence, TAUTOLOGYP1 is accepted under the principle of definition. From the definition we can conclude that: (OR (FALSEP (TAUTOLOGYP1 FLIST AUXLIST)) (TRUEP (TAUTOLOGYP1 FLIST AUXLIST))) is a theorem. [ 0.0 0.0 0.0 ] TAUTOLOGYP1 (PROVE-LEMMA FORM-LIST-APPEND (REWRITE) (IMPLIES (AND (FORM-LIST X) (FORM-LIST Y)) (FORM-LIST (APPEND X Y))) ((INDUCT (APPEND X Y)) (DISABLE FORMULA))) This formula can be simplified, using the abbreviations IMPLIES, NOT, OR, and AND, to the following two new conjectures: Case 2. (IMPLIES (AND (LISTP X) (IMPLIES (AND (FORM-LIST (CDR X)) (FORM-LIST Y)) (FORM-LIST (APPEND (CDR X) Y))) (FORM-LIST X) (FORM-LIST Y)) (FORM-LIST (APPEND X Y))). This simplifies, rewriting with CDR-CONS and CAR-CONS, and unfolding the functions AND, IMPLIES, FORM-LIST, and APPEND, to: T. Case 1. (IMPLIES (AND (NOT (LISTP X)) (FORM-LIST X) (FORM-LIST Y)) (FORM-LIST (APPEND X Y))), which simplifies, expanding the definitions of FORM-LIST and APPEND, to: T. Q.E.D. [ 0.0 0.0 0.0 ] FORM-LIST-APPEND (DEFN NEG-PROOF (EXP1 EXP2) (IF (EQUAL EXP1 (F-NOT EXP2)) (PROP-AXIOM-PROOF EXP2) (COMMUT-PROOF EXP2 EXP1 (PROP-AXIOM-PROOF EXP1)))) From the definition we can conclude that (LISTP (NEG-PROOF EXP1 EXP2)) is a theorem. [ 0.0 0.0 0.0 ] NEG-PROOF (PROVE-LEMMA NEG-PROOF-PROVES (REWRITE) (IMPLIES (AND (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (NEG EXP1 EXP2) (EQUAL CONCL (F-OR EXP1 EXP2))) (PROVES (NEG-PROOF EXP1 EXP2) CONCL))) This formula can be simplified, using the abbreviations AND, IMPLIES, and F-OR, to the new conjecture: (IMPLIES (AND (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (NEG EXP1 EXP2) (EQUAL CONCL (LIST 'OR EXP1 EXP2))) (PROVES (NEG-PROOF EXP1 EXP2) CONCL)), which simplifies, applying PROP-AXIOM-PROVES, and unfolding the definitions of F-NOT, NEG, NEG-PROOF, and F-OR, to the following two new formulas: Case 2. (IMPLIES (AND (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (EQUAL EXP2 (LIST 'NOT EXP1)) (NOT (EQUAL EXP1 (LIST 'NOT EXP2)))) (PROVES (COMMUT-PROOF EXP2 EXP1 (PROP-AXIOM-PROOF EXP1)) (LIST 'OR EXP1 EXP2))). This again simplifies, applying the lemmas FORMULA-NOT-REDUC, FORMULA-OR-REDUC, PROP-AXIOM-PROVES, and COMMUT-PROOF-PROVES, and expanding the definitions of F-NOT and F-OR, to: T. Case 1. (IMPLIES (AND (FORMULA EXP1 T 0) (FORMULA EXP2 T 0) (EQUAL EXP2 (LIST 'NOT EXP1)) (EQUAL EXP1 (LIST 'NOT EXP2))) (PROVES (PROP-AXIOM-PROOF EXP2) (LIST 'OR EXP1 EXP2))), which again simplifies, rewriting with FORMULA-NOT-REDUC, to: T. Q.E.D. [ 0.0 0.1 0.0 ] NEG-PROOF-PROVES (TOGGLE G0245 NEG-PROOF T) [ 0.0 0.0 0.0 ] G0245 (PROVE-LEMMA NEG-LIST-REDUC (REWRITE) (EQUAL (NEG-LIST EXP FLIST) (OR (MEMBER (F-NOT EXP) FLIST) (AND (EQUAL EXP (F-NOT (CADR EXP))) (MEMBER (CADR EXP) FLIST))))) This formula can be simplified, using the abbreviation F-NOT, to: (EQUAL (NEG-LIST EXP FLIST) (OR (MEMBER (LIST 'NOT EXP) FLIST) (AND (EQUAL EXP (LIST 'NOT (CADR EXP))) (MEMBER (CADR EXP) FLIST)))), which simplifies, expanding the functions AND and OR, to three new formulas: Case 3. (IMPLIES (AND (NOT (MEMBER (LIST 'NOT EXP) FLIST)) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (EQUAL (NEG-LIST EXP FLIST) (MEMBER (CADR EXP) FLIST))). Applying the lemma CAR-CDR-ELIM, replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP) and X by (CONS V W) to eliminate (CAR X) and (CDR X). We would thus like to prove the following three new goals: Case 3.3. (IMPLIES (AND (NOT (LISTP EXP)) (NOT (MEMBER (LIST 'NOT EXP) FLIST)) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (EQUAL (NEG-LIST EXP FLIST) (MEMBER (CADR EXP) FLIST))). This further simplifies, trivially, to: T. Case 3.2. (IMPLIES (AND (NOT (LISTP X)) (NOT (MEMBER (LIST 'NOT (CONS Z X)) FLIST)) (EQUAL (CONS Z X) (LIST 'NOT (CAR X)))) (EQUAL (NEG-LIST (CONS Z X) FLIST) (MEMBER (CAR X) FLIST))). This further simplifies, rewriting with CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up the definitions of CONS and CAR, to: T. Case 3.1. (IMPLIES (AND (NOT (MEMBER (LIST 'NOT (CONS Z (CONS V W))) FLIST)) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT V))) (EQUAL (NEG-LIST (CONS Z (CONS V W)) FLIST) (MEMBER V FLIST))). This further simplifies, applying the lemmas CAR-CONS, CDR-CONS, and CONS-EQUAL, to: (IMPLIES (AND (NOT (MEMBER (LIST 'NOT (LIST 'NOT V)) FLIST)) (EQUAL Z 'NOT) (EQUAL W NIL)) (EQUAL (NEG-LIST (LIST 'NOT V) FLIST) (MEMBER V FLIST))). This again simplifies, obviously, to: (IMPLIES (NOT (MEMBER (LIST 'NOT (LIST 'NOT V)) FLIST)) (EQUAL (NEG-LIST (LIST 'NOT V) FLIST) (MEMBER V FLIST))), 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 (NEG-LIST EXP FLIST) (OR (MEMBER (F-NOT EXP) FLIST) (AND (EQUAL EXP (F-NOT (CADR EXP))) (MEMBER (CADR EXP) FLIST)))), named *1. Let us appeal to the induction principle. 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 (NLISTP FLIST) (p EXP FLIST)) (IMPLIES (AND (NOT (NLISTP FLIST)) (p EXP (CDR FLIST))) (p EXP FLIST))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP establish that the measure (COUNT FLIST) 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 (NLISTP FLIST) (EQUAL (NEG-LIST EXP FLIST) (OR (MEMBER (F-NOT EXP) FLIST) (AND (EQUAL EXP (F-NOT (CADR EXP))) (MEMBER (CADR EXP) FLIST))))), which simplifies, unfolding NLISTP, NEG-LIST, F-NOT, MEMBER, AND, OR, and EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP FLIST)) (EQUAL (NEG-LIST EXP (CDR FLIST)) (OR (MEMBER (F-NOT EXP) (CDR FLIST)) (AND (EQUAL EXP (F-NOT (CADR EXP))) (MEMBER (CADR EXP) (CDR FLIST)))))) (EQUAL (NEG-LIST EXP FLIST) (OR (MEMBER (F-NOT EXP) FLIST) (AND (EQUAL EXP (F-NOT (CADR EXP))) (MEMBER (CADR EXP) FLIST))))), which simplifies, rewriting with CAR-CONS, and opening up NLISTP, F-NOT, AND, OR, NEG-LIST, NEG, and MEMBER, to the following eight new formulas: Case 1.8. (IMPLIES (AND (LISTP FLIST) (NOT (MEMBER (F-NOT EXP) (CDR FLIST))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (EQUAL (NEG-LIST EXP (CDR FLIST)) (MEMBER (CADR EXP) (CDR FLIST))) (MEMBER (LIST 'NOT EXP) FLIST) (NOT (EQUAL EXP (LIST 'NOT (CAR FLIST)))) (NOT (EQUAL (CAR FLIST) (LIST 'NOT EXP)))) (EQUAL (NEG-LIST EXP (CDR FLIST)) T)). This again simplifies, rewriting with CAR-CONS, to: (IMPLIES (AND (LISTP FLIST) (NOT (MEMBER (F-NOT EXP) (CDR FLIST))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (NOT (MEMBER (CADR EXP) (CDR FLIST))) (MEMBER (LIST 'NOT EXP) FLIST) (NOT (EQUAL EXP (LIST 'NOT (CAR FLIST)))) (NOT (EQUAL (CAR FLIST) (LIST 'NOT EXP)))) (NEG-LIST EXP (CDR FLIST))), which further simplifies, opening up F-NOT and MEMBER, to: T. Case 1.7. (IMPLIES (AND (LISTP FLIST) (NOT (MEMBER (F-NOT EXP) (CDR FLIST))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (EQUAL (NEG-LIST EXP (CDR FLIST)) (MEMBER (CADR EXP) (CDR FLIST))) (EQUAL (CADR EXP) (CAR FLIST)) (NOT (EQUAL EXP (LIST 'NOT (CAR FLIST)))) (NOT (EQUAL (CAR FLIST) (LIST 'NOT EXP)))) (EQUAL (NEG-LIST EXP (CDR FLIST)) T)), which again simplifies, trivially, to: T. Case 1.6. (IMPLIES (AND (LISTP FLIST) (NOT (MEMBER (F-NOT EXP) (CDR FLIST))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (EQUAL (NEG-LIST EXP (CDR FLIST)) (MEMBER (CADR EXP) (CDR FLIST))) (NOT (MEMBER (LIST 'NOT EXP) FLIST)) (NOT (EQUAL (CADR EXP) (CAR FLIST))) (EQUAL (CAR FLIST) (LIST 'NOT EXP))) (EQUAL T (NEG-LIST EXP (CDR FLIST)))). This again simplifies, opening up MEMBER, to: T. Case 1.5. (IMPLIES (AND (LISTP FLIST) (NOT (MEMBER (F-NOT EXP) (CDR FLIST))) (EQUAL EXP (LIST 'NOT (CADR EXP))) (EQUAL (NEG-LIST EXP (CDR FLIST)) (MEMBER (CADR EXP) (CDR FLIST))) (NOT (MEMBER (LIST 'NOT EXP) FLIST)) (NOT (EQUAL (CADR EXP) (CAR FLIST))) (EQUAL EXP (LIST 'NOT (CAR FLIST)))) (EQUAL T (NEG-LIST EXP (CDR FLIST)))), which again simplifies, applying CDR-CONS and CAR-CONS, and unfolding F-NOT and MEMBER, to: T. Case 1.4. (IMPLIES (AND (LISTP FLIST) (NOT (MEMBER (F-NOT EXP) (CDR FLIST))) (NOT (EQUAL EXP (LIST 'NOT (CADR EXP)))) (EQUAL (NEG-LIST EXP (CDR FLIST)) F) (NOT (EQUAL EXP (LIST 'NOT (CAR FLIST))))) (EQUAL (EQUAL (CAR FLIST) (LIST 'NOT EXP)) (MEMBER (LIST 'NOT EXP) FLIST))). This again simplifies, obviously, to the following two new goals: Case 1.4.2. (IMPLIES (AND (LISTP FLIST) (NOT (MEMBER (F-NOT EXP) (CDR FLIST))) (NOT (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (NEG-LIST EXP (CDR FLIST))) (NOT (EQUAL EXP (LIST 'NOT (CAR FLIST)))) (NOT (EQUAL (CAR FLIST) (LIST 'NOT EXP)))) (NOT (MEMBER (LIST 'NOT EXP) FLIST))). However this further simplifies, opening up the definitions of F-NOT and MEMBER, to: T. Case 1.4.1. (IMPLIES (AND (LISTP FLIST) (NOT (MEMBER (F-NOT EXP) (CDR FLIST))) (NOT (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (NEG-LIST EXP (CDR FLIST))) (NOT (EQUAL EXP (LIST 'NOT (CAR FLIST)))) (EQUAL (CAR FLIST) (LIST 'NOT EXP))) (EQUAL (MEMBER (LIST 'NOT EXP) FLIST) T)), which again simplifies, opening up the definitions of MEMBER and EQUAL, to: T. Case 1.3. (IMPLIES (AND (LISTP FLIST) (NOT (MEMBER (F-NOT EXP) (CDR FLIST))) (NOT (EQUAL EXP (LIST 'NOT (CADR EXP)))) (EQUAL (NEG-LIST EXP (CDR FLIST)) F) (EQUAL EXP (LIST 'NOT (CAR FLIST)))) (EQUAL T (MEMBER (LIST 'NOT EXP) FLIST))), which again simplifies, rewriting with CDR-CONS and CAR-CONS, and expanding F-NOT, to: T. Case 1.2. (IMPLIES (AND (LISTP FLIST) (MEMBER (F-NOT EXP) (CDR FLIST)) (EQUAL (NEG-LIST EXP (CDR FLIST)) T) (NOT (MEMBER (LIST 'NOT EXP) FLIST)) (NOT (EQUAL (CADR EXP) (CAR FLIST)))) (MEMBER (CADR EXP) (CDR FLIST))). This again simplifies, trivially, to: (IMPLIES (AND (LISTP FLIST) (MEMBER (F-NOT EXP) (CDR FLIST)) (NEG-LIST EXP (CDR FLIST)) (NOT (MEMBER (LIST 'NOT EXP) FLIST)) (NOT (EQUAL (CADR EXP) (CAR FLIST)))) (MEMBER (CADR EXP) (CDR FLIST))), which further simplifies, unfolding the definitions of F-NOT and MEMBER, to: T. Case 1.1. (IMPLIES (AND (LISTP FLIST) (MEMBER (F-NOT EXP) (CDR FLIST)) (EQUAL (NEG-LIST EXP (CDR FLIST)) T) (NOT (MEMBER (LIST 'NOT EXP) FLIST))) (EQUAL EXP (LIST 'NOT (CADR EXP)))), which again simplifies, clearly, to the new goal: (IMPLIES (AND (LISTP FLIST) (MEMBER (F-NOT EXP) (CDR FLIST)) (NEG-LIST EXP (CDR FLIST)) (NOT (MEMBER (LIST 'NOT EXP) FLIST))) (EQUAL EXP (LIST 'NOT (CADR EXP)))), which further simplifies, opening up F-NOT and MEMBER, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.1 0.0 ] NEG-LIST-REDUC (DEFN NEG-LIST-PROOF (EXP FLIST) (IF (MEMBER (F-NOT EXP) FLIST) (M2-PROOF EXP (F-NOT EXP) (CONS EXP FLIST) (NEG-PROOF EXP (F-NOT EXP))) (M2-PROOF EXP (CADR EXP) (CONS EXP FLIST) (NEG-PROOF EXP (CADR EXP))))) Observe that: (OR (LITATOM (NEG-LIST-PROOF EXP FLIST)) (LISTP (NEG-LIST-PROOF EXP FLIST))) is a theorem. [ 0.0 0.0 0.0 ] NEG-LIST-PROOF (PROVE-LEMMA NEG-LIST-PROOF-PROVES (REWRITE) (IMPLIES (AND (FORMULA EXP T 0) (FORM-LIST FLIST) (NEG-LIST EXP FLIST) (EQUAL CONCL (MAKE-DISJUNCT (CONS EXP FLIST)))) (PROVES (NEG-LIST-PROOF EXP FLIST) CONCL)) ((DISABLE NEG-LIST))) This formula simplifies, applying NEG-LIST-REDUC, CAR-CONS, and CDR-CONS, and expanding the functions F-NOT, NEG-LIST-PROOF, F-OR, and MAKE-DISJUNCT, to six new formulas: Case 6. (IMPLIES (AND (FORMULA EXP T 0) (FORM-LIST FLIST) (MEMBER (LIST 'NOT EXP) FLIST) (NOT (LISTP FLIST))) (PROVES (M2-PROOF EXP (LIST 'NOT EXP) (CONS EXP FLIST) (NEG-PROOF EXP (LIST 'NOT EXP))) EXP)), which again simplifies, unfolding FORM-LIST and MEMBER, to: T. Case 5. (IMPLIES (AND (FORMULA EXP T 0) (FORM-LIST FLIST) (MEMBER (LIST 'NOT EXP) FLIST) (LISTP FLIST)) (PROVES (M2-PROOF EXP (LIST 'NOT EXP) (CONS EXP FLIST) (NEG-PROOF EXP (LIST 'NOT EXP))) (LIST 'OR EXP (MAKE-DISJUNCT FLIST)))), which again simplifies, rewriting with the lemmas NEG-PROOF-PROVES, FORMULA-NOT-REDUC, FORMULA-OR-REDUC, FORMLIST-FORMULA-MAKE-DISJ, CDR-CONS, CAR-CONS, and M2-PROOF-PROVES1, and expanding the functions F-NOT, NEG, MEMBER, MAKE-DISJUNCT, and F-OR, to: T. Case 4. (IMPLIES (AND (FORMULA EXP T 0) (FORM-LIST FLIST) (EQUAL EXP (LIST 'NOT (CADR EXP))) (MEMBER (CADR EXP) FLIST) (NOT (LISTP FLIST)) (NOT (MEMBER (LIST 'NOT EXP) FLIST))) (PROVES (M2-PROOF EXP (CADR EXP) (CONS EXP FLIST) (NEG-PROOF EXP (CADR EXP))) EXP)), which again simplifies, opening up the definitions of FORM-LIST and MEMBER, to: T. Case 3. (IMPLIES (AND (FORMULA EXP T 0) (FORM-LIST FLIST) (EQUAL EXP (LIST 'NOT (CADR EXP))) (MEMBER (CADR EXP) FLIST) (NOT (LISTP FLIST)) (MEMBER (LIST 'NOT EXP) FLIST)) (PROVES (M2-PROOF EXP (LIST 'NOT EXP) (CONS EXP FLIST) (NEG-PROOF EXP (LIST 'NOT EXP))) EXP)), which again simplifies, expanding FORM-LIST and MEMBER, to: T. Case 2. (IMPLIES (AND (FORMULA EXP T 0) (FORM-LIST FLIST) (EQUAL EXP (LIST 'NOT (CADR EXP))) (MEMBER (CADR EXP) FLIST) (LISTP FLIST) (NOT (MEMBER (LIST 'NOT EXP) FLIST))) (PROVES (M2-PROOF EXP (CADR EXP) (CONS EXP FLIST) (NEG-PROOF EXP (CADR EXP))) (LIST 'OR EXP (MAKE-DISJUNCT FLIST)))). Applying the lemma CAR-CDR-ELIM, replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP) and X by (CONS V W) to eliminate (CAR X) and (CDR X). We thus obtain the following three new goals: Case 2.3. (IMPLIES (AND (NOT (LISTP EXP)) (FORMULA EXP T 0) (FORM-LIST FLIST) (EQUAL EXP (LIST 'NOT (CADR EXP))) (MEMBER (CADR EXP) FLIST) (LISTP FLIST) (NOT (MEMBER (LIST 'NOT EXP) FLIST))) (PROVES (M2-PROOF EXP (CADR EXP) (CONS EXP FLIST) (NEG-PROOF EXP (CADR EXP))) (LIST 'OR EXP (MAKE-DISJUNCT FLIST)))). This further simplifies, trivially, to: T. Case 2.2. (IMPLIES (AND (NOT (LISTP X)) (FORMULA (CONS Z X) T 0) (FORM-LIST FLIST) (EQUAL (CONS Z X) (LIST 'NOT (CAR X))) (MEMBER (CAR X) FLIST) (LISTP FLIST) (NOT (MEMBER (LIST 'NOT (CONS Z X)) FLIST))) (PROVES (M2-PROOF (CONS Z X) (CAR X) (CONS (CONS Z X) FLIST) (NEG-PROOF (CONS Z X) (CAR X))) (LIST 'OR (CONS Z X) (MAKE-DISJUNCT FLIST)))). But this further simplifies, applying CAR-NLISTP, and opening up the functions CONS and FORMULA, to: T. Case 2.1. (IMPLIES (AND (FORMULA (CONS Z (CONS V W)) T 0) (FORM-LIST FLIST) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT V)) (MEMBER V FLIST) (LISTP FLIST) (NOT (MEMBER (LIST 'NOT (CONS Z (CONS V W))) FLIST))) (PROVES (M2-PROOF (CONS Z (CONS V W)) V (CONS (CONS Z (CONS V W)) FLIST) (NEG-PROOF (CONS Z (CONS V W)) V)) (LIST 'OR (CONS Z (CONS V W)) (MAKE-DISJUNCT FLIST)))). But this further simplifies, applying FORMULA-NOT-REDUC, CAR-CONS, CDR-CONS, CONS-EQUAL, NEG-PROOF-PROVES, FORMULA-OR-REDUC, FORMLIST-FORMULA-MAKE-DISJ, and M2-PROOF-PROVES1, and expanding the functions F-NOT, NEG, MEMBER, MAKE-DISJUNCT, and F-OR, to: T. Case 1. (IMPLIES (AND (FORMULA EXP T 0) (FORM-LIST FLIST) (EQUAL EXP (LIST 'NOT (CADR EXP))) (MEMBER (CADR EXP) FLIST) (LISTP FLIST) (MEMBER (LIST 'NOT EXP) FLIST)) (PROVES (M2-PROOF EXP (LIST 'NOT EXP) (CONS EXP FLIST) (NEG-PROOF EXP (LIST 'NOT EXP))) (LIST 'OR EXP (MAKE-DISJUNCT FLIST)))). This again simplifies, applying NEG-PROOF-PROVES, FORMULA-NOT-REDUC, FORMULA-OR-REDUC, FORMLIST-FORMULA-MAKE-DISJ, CDR-CONS, CAR-CONS, and M2-PROOF-PROVES1, and unfolding the definitions of F-NOT, NEG, MEMBER, MAKE-DISJUNCT, and F-OR, to: T. Q.E.D. [ 0.0 0.3 0.0 ] NEG-LIST-PROOF-PROVES (TOGGLE G0256 NEG-LIST-PROOF T) [ 0.0 0.0 0.0 ] G0256 (PROVE-LEMMA SUBSET-IDENT (REWRITE) (SUBSET X X)) 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 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 the following two new formulas: Case 2. (IMPLIES (AND (LISTP X) (SUBSET (CDR X) (CDR X))) (SUBSET X X)). This simplifies, expanding the functions SUBSET and MEMBER, to the new goal: (IMPLIES (AND (LISTP X) (SUBSET (CDR X) (CDR X))) (SUBSET (CDR X) X)). Applying the lemma CAR-CDR-ELIM, replace X by (CONS V Z) to eliminate (CDR X) and (CAR X). This produces: (IMPLIES (SUBSET Z Z) (SUBSET Z (CONS V Z))), which further simplifies, rewriting with SUBSET-CONS, to: T. Case 1. (IMPLIES (NOT (LISTP X)) (SUBSET X X)). This simplifies, unfolding the function SUBSET, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] SUBSET-IDENT (PROVE-LEMMA SUBSET-CAR (REWRITE) (SUBSET X (CONS Y X))) This formula simplifies, applying SUBSET-IDENT and SUBSET-CONS, to: T. Q.E.D. [ 0.0 0.0 0.0 ] SUBSET-CAR (PROVE-LEMMA SUBSET-APPEND (REWRITE) (SUBSET (CONS EXP LIST2) (APPEND (CONS EXP LIST1) LIST2))) This formula simplifies, applying the lemmas CDR-CONS and CAR-CONS, and expanding the definitions of APPEND, MEMBER, and SUBSET, to the formula: (SUBSET LIST2 (CONS EXP (APPEND LIST1 LIST2))). Name the above subgoal *1. Perhaps we can 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 LIST1) (p LIST2 EXP (CDR LIST1))) (p LIST2 EXP LIST1)) (IMPLIES (NOT (LISTP LIST1)) (p LIST2 EXP LIST1))). Linear arithmetic and the lemma CDR-LESSP can be used to prove that the measure (COUNT LIST1) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme produces two new formulas: Case 2. (IMPLIES (AND (LISTP LIST1) (SUBSET LIST2 (CONS EXP (APPEND (CDR LIST1) LIST2)))) (SUBSET LIST2 (CONS EXP (APPEND LIST1 LIST2)))), which simplifies, opening up APPEND, to the goal: (IMPLIES (AND (LISTP LIST1) (SUBSET LIST2 (CONS EXP (APPEND (CDR LIST1) LIST2)))) (SUBSET LIST2 (CONS EXP (CONS (CAR LIST1) (APPEND (CDR LIST1) LIST2))))). Appealing to the lemma CAR-CDR-ELIM, we now replace LIST1 by (CONS Z X) to eliminate (CDR LIST1) and (CAR LIST1). We must thus prove: (IMPLIES (SUBSET LIST2 (CONS EXP (APPEND X LIST2))) (SUBSET LIST2 (CONS EXP (CONS Z (APPEND X LIST2))))). We will try to prove the above formula by generalizing it, replacing (APPEND X LIST2) by Y. The result is: (IMPLIES (SUBSET LIST2 (CONS EXP Y)) (SUBSET LIST2 (CONS EXP (CONS Z Y)))). Give the above formula the name *1.1. Case 1. (IMPLIES (NOT (LISTP LIST1)) (SUBSET LIST2 (CONS EXP (APPEND LIST1 LIST2)))). This simplifies, appealing to the lemma SUBSET-CAR, and opening up the definition of APPEND, to: T. So let us turn our attention to: (IMPLIES (SUBSET LIST2 (CONS EXP Y)) (SUBSET LIST2 (CONS EXP (CONS Z Y)))), which we named *1.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 LIST2) (p (CDR LIST2) EXP Z Y)) (p LIST2 EXP Z Y)) (IMPLIES (NOT (LISTP LIST2)) (p LIST2 EXP Z Y))). Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT LIST2) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates the following three new conjectures: Case 3. (IMPLIES (AND (LISTP LIST2) (NOT (SUBSET (CDR LIST2) (CONS EXP Y))) (SUBSET LIST2 (CONS EXP Y))) (SUBSET LIST2 (CONS EXP (CONS Z Y)))). This simplifies, rewriting with CDR-CONS and CAR-CONS, and expanding SUBSET and MEMBER, to: T. Case 2. (IMPLIES (AND (LISTP LIST2) (SUBSET (CDR LIST2) (CONS EXP (CONS Z Y))) (SUBSET LIST2 (CONS EXP Y))) (SUBSET LIST2 (CONS EXP (CONS Z Y)))), which simplifies, applying CDR-CONS and CAR-CONS, and expanding SUBSET and MEMBER, to: T. Case 1. (IMPLIES (AND (NOT (LISTP LIST2)) (SUBSET LIST2 (CONS EXP Y))) (SUBSET LIST2 (CONS EXP (CONS Z Y)))). This simplifies, rewriting with SUBSET-CONS, and opening up SUBSET, 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 ] SUBSET-APPEND (PROVE-LEMMA NLISTP-NEG-LIST (REWRITE) (IMPLIES (NLISTP LIST) (NOT (NEG-LIST EXP LIST)))) This conjecture can be simplified, using the abbreviations NOT, NLISTP, and IMPLIES, to: (IMPLIES (NOT (LISTP LIST)) (NOT (NEG-LIST EXP LIST))). This simplifies, rewriting with NEG-LIST-REDUC, and expanding F-NOT and MEMBER, to: T. Q.E.D. [ 0.0 0.0 0.0 ] NLISTP-NEG-LIST (DEFN PROP-ATOM-PROOF1 (FLIST1 FLIST2) (M-PROOF (CONS (CAR FLIST1) FLIST2) (APPEND FLIST1 FLIST2) (NEG-LIST-PROOF (CAR FLIST1) FLIST2))) From the definition we can conclude that: (OR (LITATOM (PROP-ATOM-PROOF1 FLIST1 FLIST2)) (LISTP (PROP-ATOM-PROOF1 FLIST1 FLIST2))) is a theorem. [ 0.0 0.0 0.0 ] PROP-ATOM-PROOF1 (PROVE-LEMMA PROP-ATOM-PROOF1-PROVES (REWRITE) (IMPLIES (AND (FORM-LIST FLIST1) (LISTP FLIST1) (FORM-LIST FLIST2) (NEG-LIST (CAR FLIST1) FLIST2) (EQUAL CONCL (MAKE-DISJUNCT (APPEND FLIST1 FLIST2)))) (PROVES (PROP-ATOM-PROOF1 FLIST1 FLIST2) CONCL)) ((DISABLE NEG-LIST-REDUC) (USE (SUBSET-APPEND (EXP (CAR FLIST1)) (LIST1 (CDR FLIST1)) (LIST2 FLIST2))))) This formula simplifies, applying CONS-CAR-CDR, CDR-CONS, CAR-CONS, NEG-LIST-PROOF-PROVES, FORM-LIST-APPEND, and M-PROOF-PROVES1, and opening up the definitions of APPEND, MEMBER, SUBSET, FORM-LIST, PROP-ATOM-PROOF1, F-OR, and MAKE-DISJUNCT, to: T. Q.E.D. [ 0.0 0.1 0.0 ] PROP-ATOM-PROOF1-PROVES (TOGGLE G0259 PROP-ATOM-PROOF1 T) [ 0.0 0.0 0.0 ] G0259 (PROVE-LEMMA SUBSET-APPEND-CAR (REWRITE) (SUBSET (APPEND LIST1 (CONS EXP LIST2)) (APPEND (CONS EXP LIST1) LIST2))) This simplifies, rewriting with CDR-CONS and CAR-CONS, and expanding APPEND, to the conjecture: (SUBSET (APPEND LIST1 (CONS EXP LIST2)) (CONS EXP (APPEND LIST1 LIST2))). Give the above formula the name *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 LIST1) (p (CDR LIST1) EXP LIST2)) (p LIST1 EXP LIST2)) (IMPLIES (NOT (LISTP LIST1)) (p LIST1 EXP LIST2))). Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT LIST1) 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 LIST1) (SUBSET (APPEND (CDR LIST1) (CONS EXP LIST2)) (CONS EXP (APPEND (CDR LIST1) LIST2)))) (SUBSET (APPEND LIST1 (CONS EXP LIST2)) (CONS EXP (APPEND LIST1 LIST2)))). This simplifies, appealing to the lemmas CDR-CONS and CAR-CONS, and expanding the functions APPEND, MEMBER, and SUBSET, to the new goal: (IMPLIES (AND (LISTP LIST1) (SUBSET (APPEND (CDR LIST1) (CONS EXP LIST2)) (CONS EXP (APPEND (CDR LIST1) LIST2)))) (SUBSET (APPEND (CDR LIST1) (CONS EXP LIST2)) (CONS EXP (CONS (CAR LIST1) (APPEND (CDR LIST1) LIST2))))). Applying the lemma CAR-CDR-ELIM, replace LIST1 by (CONS Z X) to eliminate (CDR LIST1) and (CAR LIST1). We thus obtain: (IMPLIES (SUBSET (APPEND X (CONS EXP LIST2)) (CONS EXP (APPEND X LIST2))) (SUBSET (APPEND X (CONS EXP LIST2)) (CONS EXP (CONS Z (APPEND X LIST2))))), which we generalize by replacing (APPEND X LIST2) by Y and: (APPEND X (CONS EXP LIST2)) by A. We restrict the new variables by recalling the type restriction lemma noted when APPEND was introduced. We thus obtain: (IMPLIES (AND (LISTP A) (SUBSET A (CONS EXP Y))) (SUBSET A (CONS EXP (CONS Z Y)))), which we will name *1.1. Case 1. (IMPLIES (NOT (LISTP LIST1)) (SUBSET (APPEND LIST1 (CONS EXP LIST2)) (CONS EXP (APPEND LIST1 LIST2)))). This simplifies, applying SUBSET-IDENT, and opening up APPEND, to: T. So let us turn our attention to: (IMPLIES (AND (LISTP A) (SUBSET A (CONS EXP Y))) (SUBSET A (CONS EXP (CONS Z Y)))), which we named *1.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 (AND (LISTP A) (p (CDR A) EXP Z Y)) (p A EXP Z Y)) (IMPLIES (NOT (LISTP A)) (p A EXP Z Y))). 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 generates three new conjectures: Case 3. (IMPLIES (AND (NOT (LISTP (CDR A))) (LISTP A) (SUBSET A (CONS EXP Y))) (SUBSET A (CONS EXP (CONS Z Y)))), which simplifies, applying CDR-CONS, CAR-CONS, and SUBSET-CONS, and unfolding SUBSET and MEMBER, to: (IMPLIES (AND (NOT (LISTP (CDR A))) (LISTP A) (EQUAL (CAR A) EXP) (SUBSET (CDR A) (CONS EXP Y))) (SUBSET (CDR A) (CONS EXP (CONS Z Y)))), which again simplifies, appealing to the lemma SUBSET-CONS, and opening up the definition of SUBSET, to: T. Case 2. (IMPLIES (AND (NOT (SUBSET (CDR A) (CONS EXP Y))) (LISTP A) (SUBSET A (CONS EXP Y))) (SUBSET A (CONS EXP (CONS Z Y)))), which simplifies, applying CDR-CONS and CAR-CONS, and unfolding SUBSET and MEMBER, to: T. Case 1. (IMPLIES (AND (SUBSET (CDR A) (CONS EXP (CONS Z Y))) (LISTP A) (SUBSET A (CONS EXP Y))) (SUBSET A (CONS EXP (CONS Z Y)))). This simplifies, appealing to the lemmas CDR-CONS and CAR-CONS, and expanding the definitions of SUBSET and MEMBER, to: T. That finishes the proof of *1.1, which, consequently, also finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] SUBSET-APPEND-CAR (PROVE-LEMMA FORM-LIST-APPEND-CAR (REWRITE) (IMPLIES (AND (FORM-LIST (CONS EXP LIST1)) (FORM-LIST LIST2)) (FORM-LIST (APPEND LIST1 (CONS EXP LIST2))))) This simplifies, rewriting with CDR-CONS, CAR-CONS, and FORM-LIST-APPEND, and opening up FORM-LIST, to: T. Q.E.D. [ 0.0 0.0 0.0 ] FORM-LIST-APPEND-CAR (DEFN PROP-ATOM-PROOF2 (FLIST1 FLIST2 PF) (M-PROOF (APPEND (CDR FLIST1) (CONS (CAR FLIST1) FLIST2)) (APPEND FLIST1 FLIST2) PF)) Note that: (OR (OR (LITATOM (PROP-ATOM-PROOF2 FLIST1 FLIST2 PF)) (LISTP (PROP-ATOM-PROOF2 FLIST1 FLIST2 PF))) (EQUAL (PROP-ATOM-PROOF2 FLIST1 FLIST2 PF) PF)) is a theorem. [ 0.0 0.0 0.0 ] PROP-ATOM-PROOF2 (PROVE-LEMMA PROP-ATOM-PROOF2-PROVES (REWRITE) (IMPLIES (AND (FORM-LIST FLIST1) (LISTP FLIST1) (FORM-LIST FLIST2) (PROVES PF (MAKE-DISJUNCT (APPEND (CDR FLIST1) (CONS (CAR FLIST1) FLIST2)))) (EQUAL CONCL (MAKE-DISJUNCT (APPEND FLIST1 FLIST2)))) (PROVES (PROP-ATOM-PROOF2 FLIST1 FLIST2 PF) CONCL)) ((USE (SUBSET-APPEND-CAR (LIST1 (CDR FLIST1)) (EXP (CAR FLIST1)) (LIST2 FLIST2))))) This conjecture simplifies, rewriting with CONS-CAR-CDR, CAR-CONS, CDR-CONS, FORM-LIST-APPEND, FORM-LIST-APPEND-CAR, and M-PROOF-PROVES1, and unfolding the functions APPEND, FORM-LIST, PROP-ATOM-PROOF2, F-OR, and MAKE-DISJUNCT, to: T. Q.E.D. [ 0.0 0.1 0.0 ] PROP-ATOM-PROOF2-PROVES (TOGGLE G0258 PROP-ATOM-PROOF2 T) [ 0.0 0.0 0.0 ] G0258 (DEFN CANCEL-PROOF (A B PF1 PF2) (CONTRAC-PROOF B (CUT-PROOF A B B PF2 (RT-EXPAN-PROOF (F-NOT A) B PF1)))) From the definition we can conclude that: (LISTP (CANCEL-PROOF A B PF1 PF2)) is a theorem. [ 0.0 0.0 0.0 ] CANCEL-PROOF (PROVE-LEMMA CANCEL-PROOF-PROVES (REWRITE) (IMPLIES (AND (PROVES PF1 (F-NOT A)) (PROVES PF2 (F-OR A B)) (FORMULA A T 0) (FORMULA B T 0)) (PROVES (CANCEL-PROOF A B PF1 PF2) B))) This formula can be simplified, using the abbreviations AND, IMPLIES, F-OR, and F-NOT, to: (IMPLIES (AND (PROVES PF1 (LIST 'NOT A)) (PROVES PF2 (LIST 'OR A B)) (FORMULA A T 0) (FORMULA B T 0)) (PROVES (CANCEL-PROOF A B PF1 PF2) B)), which simplifies, rewriting with the lemmas CUT-PROOF-PROVES, RT-EXPAN-PROOF-PROVES, and CONTRAC-PROOF-PROVES, and expanding the functions F-NOT, CANCEL-PROOF, and F-OR, to: T. Q.E.D. [ 0.0 0.1 0.0 ] CANCEL-PROOF-PROVES (TOGGLE G0255 CANCEL-PROOF T) [ 0.0 0.0 0.0 ] G0255 (DEFN NLISTP-NOR-TYPE-PROOF (A B PF1 PF2) (CANCEL-PROOF B (F-NOT (F-OR A B)) PF2 (CANCEL-PROOF A (F-OR B (F-NOT (F-OR A B))) PF1 (M-PROOF (LIST (F-NOT (F-OR A B)) A B) (LIST A B (F-NOT (F-OR A B))) (PROP-AXIOM-PROOF (F-OR A B)))))) Note that (LISTP (NLISTP-NOR-TYPE-PROOF A B PF1 PF2)) is a theorem. [ 0.0 0.0 0.0 ] NLISTP-NOR-TYPE-PROOF (PROVE-LEMMA NLISTP-NOR-TYPE-PROOF-PROVES (REWRITE) (IMPLIES (AND (FORMULA A T 0) (FORMULA B T 0) (PROVES PF1 (F-NOT A)) (PROVES PF2 (F-NOT B)) (EQUAL CONCL (F-NOT (F-OR A B)))) (PROVES (NLISTP-NOR-TYPE-PROOF A B PF1 PF2) CONCL))) This formula can be simplified, using the abbreviations AND, IMPLIES, F-OR, and F-NOT, to the new formula: (IMPLIES (AND (FORMULA A T 0) (FORMULA B T 0) (PROVES PF1 (LIST 'NOT A)) (PROVES PF2 (LIST 'NOT B)) (EQUAL CONCL (LIST 'NOT (LIST 'OR A B)))) (PROVES (NLISTP-NOR-TYPE-PROOF A B PF1 PF2) CONCL)), which simplifies, applying CANCEL-PROOF-PROVES, PROP-AXIOM-PROVES, SUBSET-CONS, SUBSET-CAR, CAR-CONS, FORMULA-OR-REDUC, FORMULA-NOT-REDUC, CDR-CONS, and M-PROOF-PROVES1, and unfolding the definitions of F-NOT, F-OR, NLISTP-NOR-TYPE-PROOF, LISTP, MAKE-DISJUNCT, SUBSET, MEMBER, and FORM-LIST, to: T. Q.E.D. [ 0.0 2.5 0.0 ] NLISTP-NOR-TYPE-PROOF-PROVES (DEFN LISTP-NOR-TYPE-PROOF (A B C PF1 PF2) (M-PROOF (LIST (F-NOT (F-OR A B)) C C) (LIST (F-NOT (F-OR A B)) C) (RT-ASSOC-PROOF (F-NOT (F-OR A B)) C C (CUT-PROOF B (F-OR (F-NOT (F-OR A B)) C) C (RT-ASSOC-PROOF B (F-NOT (F-OR A B)) C (CUT-PROOF A (F-OR B (F-NOT (F-OR A B))) C (M-PROOF (LIST (F-NOT (F-OR A B)) A B) (LIST A B (F-NOT (F-OR A B))) (PROP-AXIOM-PROOF (F-OR A B))) PF1)) PF2)))) From the definition we can conclude that: (OR (LITATOM (LISTP-NOR-TYPE-PROOF A B C PF1 PF2)) (LISTP (LISTP-NOR-TYPE-PROOF A B C PF1 PF2))) is a theorem. [ 0.0 0.0 0.0 ] LISTP-NOR-TYPE-PROOF (PROVE-LEMMA LISTP-NOR-TYPE-PROOF-PROVES (REWRITE) (IMPLIES (AND (FORMULA A T 0) (FORMULA B T 0) (FORMULA C T 0) (PROVES PF1 (F-OR (F-NOT A) C)) (PROVES PF2 (F-OR (F-NOT B) C)) (EQUAL CONCL (F-OR (F-NOT (F-OR A B)) C))) (PROVES (LISTP-NOR-TYPE-PROOF A B C PF1 PF2) CONCL))) This conjecture can be simplified, using the abbreviations AND, IMPLIES, F-NOT, and F-OR, to: (IMPLIES (AND (FORMULA A T 0) (FORMULA B T 0) (FORMULA C T 0) (PROVES PF1 (LIST 'OR (LIST 'NOT A) C)) (PROVES PF2 (LIST 'OR (LIST 'NOT B) C)) (EQUAL CONCL (LIST 'OR (LIST 'NOT (LIST 'OR A B)) C))) (PROVES (LISTP-NOR-TYPE-PROOF A B C PF1 PF2) CONCL)). This simplifies, rewriting with RT-ASSOC-PROOF-PROVES, M-PROOF-PROVES1, SUBSET-CAR, PROP-AXIOM-PROVES, CUT-PROOF-PROVES, SUBSET-CONS, SUBSET-IDENT, CAR-CONS, FORMULA-OR-REDUC, FORMULA-NOT-REDUC, and CDR-CONS, and opening up the definitions of F-NOT, F-OR, LISTP-NOR-TYPE-PROOF, LISTP, MAKE-DISJUNCT, SUBSET, MEMBER, and FORM-LIST, to: T. Q.E.D. [ 0.0 7.0 0.0 ] LISTP-NOR-TYPE-PROOF-PROVES (TOGGLE G0242 M-PROOF-PROVES T) [ 0.0 0.0 0.0 ] G0242 (TOGGLE G0243 NLISTP-NOR-TYPE-PROOF T) [ 0.0 0.0 0.0 ] G0243 (TOGGLE G0244 LISTP-NOR-TYPE-PROOF T) [ 0.0 0.0 0.0 ] G0244 (DEFN NOR-TYPE-PROOF (A B CLIST PF1 PF2) (IF (NLISTP CLIST) (NLISTP-NOR-TYPE-PROOF A B PF1 PF2) (LISTP-NOR-TYPE-PROOF A B (MAKE-DISJUNCT CLIST) PF1 PF2))) From the definition we can conclude that: (OR (LITATOM (NOR-TYPE-PROOF A B CLIST PF1 PF2)) (LISTP (NOR-TYPE-PROOF A B CLIST PF1 PF2))) is a theorem. [ 0.0 0.0 0.0 ] NOR-TYPE-PROOF (TOGGLE G0292 NOR-TYPE NIL) [ 0.0 0.0 0.0 ] G0292 (PROVE-LEMMA NOR-TYPE-PROOF-PROVES (REWRITE) (IMPLIES (AND (NOR-TYPE EXP) (FORMULA EXP T 0) (FORM-LIST CLIST) (PROVES PF1 (MAKE-DISJUNCT (CONS (F-NOT (CADADR EXP)) CLIST))) (PROVES PF2 (MAKE-DISJUNCT (CONS (F-NOT (CADDADR EXP)) CLIST))) (EQUAL CONCL (MAKE-DISJUNCT (CONS EXP CLIST)))) (PROVES (NOR-TYPE-PROOF (CADADR EXP) (CADDADR EXP) CLIST PF1 PF2) CONCL))) This formula can be simplified, using the abbreviations AND, IMPLIES, and F-NOT, to: (IMPLIES (AND (NOR-TYPE EXP) (FORMULA EXP T 0) (FORM-LIST CLIST) (PROVES PF1 (MAKE-DISJUNCT (CONS (LIST 'NOT (CADADR EXP)) CLIST))) (PROVES PF2 (MAKE-DISJUNCT (CONS (LIST 'NOT (CADDADR EXP)) CLIST))) (EQUAL CONCL (MAKE-DISJUNCT (CONS EXP CLIST)))) (PROVES (NOR-TYPE-PROOF (CADADR EXP) (CADDADR EXP) CLIST PF1 PF2) CONCL)), which simplifies, rewriting with CAR-CONS and CDR-CONS, and unfolding the definitions of F-NOT, F-OR, NOR-TYPE, MAKE-DISJUNCT, and NOR-TYPE-PROOF, to the following two new conjectures: Case 2. (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (FORMULA EXP T 0) (FORM-LIST CLIST) (NOT (LISTP CLIST)) (PROVES PF1 (LIST 'NOT (CADADR EXP))) (PROVES PF2 (LIST 'NOT (CADDADR EXP)))) (PROVES (NLISTP-NOR-TYPE-PROOF (CADADR EXP) (CADDADR EXP) PF1 PF2) EXP)). But this again simplifies, unfolding the definition of FORM-LIST, to the goal: (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (FORMULA EXP T 0) (NOT (LISTP CLIST)) (PROVES PF1 (LIST 'NOT (CADADR EXP))) (PROVES PF2 (LIST 'NOT (CADDADR EXP)))) (PROVES (NLISTP-NOR-TYPE-PROOF (CADADR EXP) (CADDADR EXP) PF1 PF2) EXP)). Appealing to the lemma CAR-CDR-ELIM, we now replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), V by (CONS D X) to eliminate (CDR V) and (CAR V), X by (CONS V C) to eliminate (CAR X) and (CDR X), and C by (CONS X X1) to eliminate (CAR C) and (CDR C). We must thus prove six new conjectures: Case 2.6. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (FORMULA EXP T 0) (NOT (LISTP CLIST)) (PROVES PF1 (LIST 'NOT (CADADR EXP))) (PROVES PF2 (LIST 'NOT (CADDADR EXP)))) (PROVES (NLISTP-NOR-TYPE-PROOF (CADADR EXP) (CADDADR EXP) PF1 PF2) EXP)), which further simplifies, clearly, to: T. Case 2.5. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'NOT (LIST 'OR (CADAR X) (CADDAR X)))) (FORMULA (CONS Z X) T 0) (NOT (LISTP CLIST)) (PROVES PF1 (LIST 'NOT (CADAR X))) (PROVES PF2 (LIST 'NOT (CADDAR X)))) (PROVES (NLISTP-NOR-TYPE-PROOF (CADAR X) (CADDAR X) PF1 PF2) (CONS Z X))). However this further simplifies, rewriting with CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the definitions of CDR, CAR, and CONS, to: T. Case 2.4. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'OR (CADR V) (CADDR V)))) (FORMULA (CONS Z (CONS V W)) T 0) (NOT (LISTP CLIST)) (PROVES PF1 (LIST 'NOT (CADR V))) (PROVES PF2 (LIST 'NOT (CADDR V)))) (PROVES (NLISTP-NOR-TYPE-PROOF (CADR V) (CADDR V) PF1 PF2) (CONS Z (CONS V W)))). But this further simplifies, applying CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up the definitions of CAR, CDR, and CONS, to: T. Case 2.3. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'OR (CAR X) (CADR X)))) (FORMULA (CONS Z (CONS (CONS D X) W)) T 0) (NOT (LISTP CLIST)) (PROVES PF1 (LIST 'NOT (CAR X))) (PROVES PF2 (LIST 'NOT (CADR X)))) (PROVES (NLISTP-NOR-TYPE-PROOF (CAR X) (CADR X) PF1 PF2) (CONS Z (CONS (CONS D X) W)))). This further simplifies, applying CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding CAR and CONS, to: T. Case 2.2. (IMPLIES (AND (NOT (LISTP C)) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'OR V (CAR C)))) (FORMULA (CONS Z (CONS (CONS D (CONS V C)) W)) T 0) (NOT (LISTP CLIST)) (PROVES PF1 (LIST 'NOT V)) (PROVES PF2 (LIST 'NOT (CAR C)))) (PROVES (NLISTP-NOR-TYPE-PROOF V (CAR C) PF1 PF2) (CONS Z (CONS (CONS D (CONS V C)) W)))). But this further simplifies, rewriting with the lemmas CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and expanding CONS, to: T. Case 2.1. (IMPLIES (AND (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'OR V X))) (FORMULA (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) T 0) (NOT (LISTP CLIST)) (PROVES PF1 (LIST 'NOT V)) (PROVES PF2 (LIST 'NOT X))) (PROVES (NLISTP-NOR-TYPE-PROOF V X PF1 PF2) (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)))), which further simplifies, applying the lemmas CAR-CONS, CDR-CONS, CONS-EQUAL, FORMULA-OR-REDUC, FORMULA-NOT-REDUC, and NLISTP-NOR-TYPE-PROOF-PROVES, and opening up the functions F-OR and F-NOT, to: T. Case 1. (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (FORMULA EXP T 0) (FORM-LIST CLIST) (LISTP CLIST) (PROVES PF1 (LIST 'OR (LIST 'NOT (CADADR EXP)) (MAKE-DISJUNCT CLIST))) (PROVES PF2 (LIST 'OR (LIST 'NOT (CADDADR EXP)) (MAKE-DISJUNCT CLIST)))) (PROVES (LISTP-NOR-TYPE-PROOF (CADADR EXP) (CADDADR EXP) (MAKE-DISJUNCT CLIST) PF1 PF2) (LIST 'OR EXP (MAKE-DISJUNCT CLIST)))). Applying the lemma CAR-CDR-ELIM, replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), V by (CONS D X) to eliminate (CDR V) and (CAR V), X by (CONS V C) to eliminate (CAR X) and (CDR X), and C by (CONS X X1) to eliminate (CAR C) and (CDR C). We thus obtain the following six new conjectures: Case 1.6. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))) (FORMULA EXP T 0) (FORM-LIST CLIST) (LISTP CLIST) (PROVES PF1 (LIST 'OR (LIST 'NOT (CADADR EXP)) (MAKE-DISJUNCT CLIST))) (PROVES PF2 (LIST 'OR (LIST 'NOT (CADDADR EXP)) (MAKE-DISJUNCT CLIST)))) (PROVES (LISTP-NOR-TYPE-PROOF (CADADR EXP) (CADDADR EXP) (MAKE-DISJUNCT CLIST) PF1 PF2) (LIST 'OR EXP (MAKE-DISJUNCT CLIST)))). This further simplifies, trivially, to: T. Case 1.5. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'NOT (LIST 'OR (CADAR X) (CADDAR X)))) (FORMULA (CONS Z X) T 0) (FORM-LIST CLIST) (LISTP CLIST) (PROVES PF1 (LIST 'OR (LIST 'NOT (CADAR X)) (MAKE-DISJUNCT CLIST))) (PROVES PF2 (LIST 'OR (LIST 'NOT (CADDAR X)) (MAKE-DISJUNCT CLIST)))) (PROVES (LISTP-NOR-TYPE-PROOF (CADAR X) (CADDAR X) (MAKE-DISJUNCT CLIST) PF1 PF2) (LIST 'OR (CONS Z X) (MAKE-DISJUNCT CLIST)))). But this further simplifies, applying CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up the functions CDR, CAR, and CONS, to: T. Case 1.4. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'OR (CADR V) (CADDR V)))) (FORMULA (CONS Z (CONS V W)) T 0) (FORM-LIST CLIST) (LISTP CLIST) (PROVES PF1 (LIST 'OR (LIST 'NOT (CADR V)) (MAKE-DISJUNCT CLIST))) (PROVES PF2 (LIST 'OR (LIST 'NOT (CADDR V)) (MAKE-DISJUNCT CLIST)))) (PROVES (LISTP-NOR-TYPE-PROOF (CADR V) (CADDR V) (MAKE-DISJUNCT CLIST) PF1 PF2) (LIST 'OR (CONS Z (CONS V W)) (MAKE-DISJUNCT CLIST)))). This further simplifies, rewriting with CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the functions CAR, CDR, and CONS, to: T. Case 1.3. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'OR (CAR X) (CADR X)))) (FORMULA (CONS Z (CONS (CONS D X) W)) T 0) (FORM-LIST CLIST) (LISTP CLIST) (PROVES PF1 (LIST 'OR (LIST 'NOT (CAR X)) (MAKE-DISJUNCT CLIST))) (PROVES PF2 (LIST 'OR (LIST 'NOT (CADR X)) (MAKE-DISJUNCT CLIST)))) (PROVES (LISTP-NOR-TYPE-PROOF (CAR X) (CADR X) (MAKE-DISJUNCT CLIST) PF1 PF2) (LIST 'OR (CONS Z (CONS (CONS D X) W)) (MAKE-DISJUNCT CLIST)))). This further simplifies, rewriting with CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up CAR and CONS, to: T. Case 1.2. (IMPLIES (AND (NOT (LISTP C)) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'OR V (CAR C)))) (FORMULA (CONS Z (CONS (CONS D (CONS V C)) W)) T 0) (FORM-LIST CLIST) (LISTP CLIST) (PROVES PF1 (LIST 'OR (LIST 'NOT V) (MAKE-DISJUNCT CLIST))) (PROVES PF2 (LIST 'OR (LIST 'NOT (CAR C)) (MAKE-DISJUNCT CLIST)))) (PROVES (LISTP-NOR-TYPE-PROOF V (CAR C) (MAKE-DISJUNCT CLIST) PF1 PF2) (LIST 'OR (CONS Z (CONS (CONS D (CONS V C)) W)) (MAKE-DISJUNCT CLIST)))). This further simplifies, applying CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding the definition of CONS, to: T. Case 1.1. (IMPLIES (AND (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'OR V X))) (FORMULA (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) T 0) (FORM-LIST CLIST) (LISTP CLIST) (PROVES PF1 (LIST 'OR (LIST 'NOT V) (MAKE-DISJUNCT CLIST))) (PROVES PF2 (LIST 'OR (LIST 'NOT X) (MAKE-DISJUNCT CLIST)))) (PROVES (LISTP-NOR-TYPE-PROOF V X (MAKE-DISJUNCT CLIST) PF1 PF2) (LIST 'OR (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (MAKE-DISJUNCT CLIST)))). However this further simplifies, applying the lemmas CAR-CONS, CDR-CONS, CONS-EQUAL, FORMULA-OR-REDUC, FORMULA-NOT-REDUC, FORMLIST-FORMULA-MAKE-DISJ, and LISTP-NOR-TYPE-PROOF-PROVES, and unfolding the functions F-OR and F-NOT, to: T. Q.E.D. [ 0.0 0.4 0.1 ] NOR-TYPE-PROOF-PROVES (DEFN NLISTP-DBLE-NEG-PROOF (A PF) (CONTRAC-PROOF (F-NOT (F-NOT A)) (CUT-PROOF A (F-NOT (F-NOT A)) (F-NOT (F-NOT A)) (RT-EXPAN-PROOF A (F-NOT (F-NOT A)) PF) (COMMUT-PROOF (F-NOT (F-NOT A)) (F-NOT A) (PROP-AXIOM-PROOF (F-NOT A)))))) Observe that (LISTP (NLISTP-DBLE-NEG-PROOF A PF)) is a theorem. [ 0.0 0.0 0.0 ] NLISTP-DBLE-NEG-PROOF (TOGGLE G0248 NOR-TYPE-PROOF T) [ 0.0 0.0 0.0 ] G0248 (PROVE-LEMMA NLISTP-DBLE-NEG-PROOF-PROVES (REWRITE) (IMPLIES (AND (FORMULA A T 0) (PROVES PF A) (EQUAL CONCL (F-NOT (F-NOT A)))) (PROVES (NLISTP-DBLE-NEG-PROOF A PF) CONCL))) This formula can be simplified, using the abbreviations AND, IMPLIES, and F-NOT, to: (IMPLIES (AND (FORMULA A T 0) (PROVES PF A) (EQUAL CONCL (LIST 'NOT (LIST 'NOT A)))) (PROVES (NLISTP-DBLE-NEG-PROOF A PF) CONCL)), which simplifies, applying PROVES-IS-FORMULA, CUT-PROOF-PROVES, FORMULA-NOT-REDUC, RT-EXPAN-PROOF-PROVES, FORMULA-OR-REDUC, PROP-AXIOM-PROVES, COMMUT-PROOF-PROVES, and CONTRAC-PROOF-PROVES, and opening up the definitions of F-NOT, NLISTP-DBLE-NEG-PROOF, and F-OR, to: T. Q.E.D. [ 0.0 0.1 0.0 ] NLISTP-DBLE-NEG-PROOF-PROVES (TOGGLE G0249 NLISTP-DBLE-NEG-PROOF T) [ 0.0 0.0 0.0 ] G0249 (DEFN LISTP-DBLE-NEG-PROOF (A C PF) (COMMUT-PROOF C (F-NOT (F-NOT A)) (CUT-PROOF A C (F-NOT (F-NOT A)) PF (COMMUT-PROOF (F-NOT (F-NOT A)) (F-NOT A) (PROP-AXIOM-PROOF (F-NOT A)))))) From the definition we can conclude that: (LISTP (LISTP-DBLE-NEG-PROOF A C PF)) is a theorem. [ 0.0 0.0 0.0 ] LISTP-DBLE-NEG-PROOF (PROVE-LEMMA LISTP-DBLE-NEG-PROOF-PROVES (REWRITE) (IMPLIES (AND (FORMULA A T 0) (FORMULA C T 0) (PROVES PF (F-OR A C)) (EQUAL CONCL (F-OR (F-NOT (F-NOT A)) C))) (PROVES (LISTP-DBLE-NEG-PROOF A C PF) CONCL))) This formula can be simplified, using the abbreviations AND, IMPLIES, F-NOT, and F-OR, to: (IMPLIES (AND (FORMULA A T 0) (FORMULA C T 0) (PROVES PF (LIST 'OR A C)) (EQUAL CONCL (LIST 'OR (LIST 'NOT (LIST 'NOT A)) C))) (PROVES (LISTP-DBLE-NEG-PROOF A C PF) CONCL)), which simplifies, applying the lemmas CUT-PROOF-PROVES, FORMULA-OR-REDUC, PROP-AXIOM-PROVES, FORMULA-NOT-REDUC, and COMMUT-PROOF-PROVES, and unfolding the definitions of F-NOT, LISTP-DBLE-NEG-PROOF, and F-OR, to: T. Q.E.D. [ 0.0 0.3 0.0 ] LISTP-DBLE-NEG-PROOF-PROVES (TOGGLE G0203 LISTP-DBLE-NEG-PROOF T) [ 0.0 0.0 0.0 ] G0203 (DEFN DBLE-NEG-TYPE-PROOF (A CLIST PF) (IF (NLISTP CLIST) (NLISTP-DBLE-NEG-PROOF A PF) (LISTP-DBLE-NEG-PROOF A (MAKE-DISJUNCT CLIST) PF))) Note that (LISTP (DBLE-NEG-TYPE-PROOF A CLIST PF)) is a theorem. [ 0.0 0.0 0.0 ] DBLE-NEG-TYPE-PROOF (TOGGLE G0252 DBLE-NEG-TYPE NIL) [ 0.0 0.0 0.0 ] G0252 (PROVE-LEMMA DBLE-NEG-TYPE-PROOF-PROVES (REWRITE) (IMPLIES (AND (DBLE-NEG-TYPE EXP) (FORMULA EXP T 0) (FORM-LIST CLIST) (PROVES PF (MAKE-DISJUNCT (CONS (CADADR EXP) CLIST))) (EQUAL CONCL (MAKE-DISJUNCT (CONS EXP CLIST)))) (PROVES (DBLE-NEG-TYPE-PROOF (CADADR EXP) CLIST PF) CONCL))) This conjecture simplifies, rewriting with CAR-CONS, CDR-CONS, PROVES-IS-FORMULA, and NLISTP-DBLE-NEG-PROOF-PROVES, and unfolding F-NOT, DBLE-NEG-TYPE, F-OR, MAKE-DISJUNCT, and DBLE-NEG-TYPE-PROOF, to the new goal: (IMPLIES (AND (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP)))) (FORMULA EXP T 0) (FORM-LIST CLIST) (LISTP CLIST) (PROVES PF (LIST 'OR (CADADR EXP) (MAKE-DISJUNCT CLIST)))) (PROVES (LISTP-DBLE-NEG-PROOF (CADADR EXP) (MAKE-DISJUNCT CLIST) PF) (LIST 'OR EXP (MAKE-DISJUNCT CLIST)))). Applying the lemma CAR-CDR-ELIM, replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), V by (CONS D X) to eliminate (CDR V) and (CAR V), and X by (CONS V C) to eliminate (CAR X) and (CDR X). We thus obtain the following five new formulas: Case 5. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP)))) (FORMULA EXP T 0) (FORM-LIST CLIST) (LISTP CLIST) (PROVES PF (LIST 'OR (CADADR EXP) (MAKE-DISJUNCT CLIST)))) (PROVES (LISTP-DBLE-NEG-PROOF (CADADR EXP) (MAKE-DISJUNCT CLIST) PF) (LIST 'OR EXP (MAKE-DISJUNCT CLIST)))). This further simplifies, obviously, to: T. Case 4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'NOT (LIST 'NOT (CADAR X)))) (FORMULA (CONS Z X) T 0) (FORM-LIST CLIST) (LISTP CLIST) (PROVES PF (LIST 'OR (CADAR X) (MAKE-DISJUNCT CLIST)))) (PROVES (LISTP-DBLE-NEG-PROOF (CADAR X) (MAKE-DISJUNCT CLIST) PF) (LIST 'OR (CONS Z X) (MAKE-DISJUNCT CLIST)))). This further simplifies, applying CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding CDR, CAR, and CONS, to: T. Case 3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'NOT (CADR V)))) (FORMULA (CONS Z (CONS V W)) T 0) (FORM-LIST CLIST) (LISTP CLIST) (PROVES PF (LIST 'OR (CADR V) (MAKE-DISJUNCT CLIST)))) (PROVES (LISTP-DBLE-NEG-PROOF (CADR V) (MAKE-DISJUNCT CLIST) PF) (LIST 'OR (CONS Z (CONS V W)) (MAKE-DISJUNCT CLIST)))). This further simplifies, rewriting with the lemmas CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the definitions of CAR and CONS, to: T. Case 2. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'NOT (CAR X)))) (FORMULA (CONS Z (CONS (CONS D X) W)) T 0) (FORM-LIST CLIST) (LISTP CLIST) (PROVES PF (LIST 'OR (CAR X) (MAKE-DISJUNCT CLIST)))) (PROVES (LISTP-DBLE-NEG-PROOF (CAR X) (MAKE-DISJUNCT CLIST) PF) (LIST 'OR (CONS Z (CONS (CONS D X) W)) (MAKE-DISJUNCT CLIST)))), which further simplifies, applying CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding CONS and CAR, to: T. Case 1. (IMPLIES (AND (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'NOT V))) (FORMULA (CONS Z (CONS (CONS D (CONS V C)) W)) T 0) (FORM-LIST CLIST) (LISTP CLIST) (PROVES PF (LIST 'OR V (MAKE-DISJUNCT CLIST)))) (PROVES (LISTP-DBLE-NEG-PROOF V (MAKE-DISJUNCT CLIST) PF) (LIST 'OR (CONS Z (CONS (CONS D (CONS V C)) W)) (MAKE-DISJUNCT CLIST)))). This further simplifies, applying CAR-CONS, CDR-CONS, CONS-EQUAL, FORMULA-NOT-REDUC, FORMLIST-FORMULA-MAKE-DISJ, and LISTP-DBLE-NEG-PROOF-PROVES, and opening up the functions F-NOT and F-OR, to: T. Q.E.D. [ 0.0 0.1 0.0 ] DBLE-NEG-TYPE-PROOF-PROVES (DEFN OR-TYPE-PROOF (A B CLIST PF) (IF (NLISTP CLIST) PF (ASSOC-PROOF A B (MAKE-DISJUNCT CLIST) PF))) Observe that: (OR (LISTP (OR-TYPE-PROOF A B CLIST PF)) (EQUAL (OR-TYPE-PROOF A B CLIST PF) PF)) is a theorem. [ 0.0 0.0 0.0 ] OR-TYPE-PROOF (TOGGLE G0260 OR-TYPE NIL) [ 0.0 0.0 0.0 ] G0260 (PROVE-LEMMA OR-TYPE-PROOF-PROVES (REWRITE) (IMPLIES (AND (OR-TYPE (CAR FLIST1)) (FORM-LIST FLIST1) (LISTP FLIST1) (FORM-LIST FLIST2) (PROVES PF (MAKE-DISJUNCT (APPEND (CONS (CADAR FLIST1) (CONS (CADDAR FLIST1) (CDR FLIST1))) FLIST2))) (EQUAL CONCL (MAKE-DISJUNCT (APPEND FLIST1 FLIST2)))) (PROVES (OR-TYPE-PROOF (CADAR FLIST1) (CADDAR FLIST1) (APPEND (CDR FLIST1) FLIST2) PF) CONCL))) This simplifies, rewriting with CDR-CONS, CAR-CONS, and ASSOC-PROOF-PROVES, and unfolding F-OR, OR-TYPE, FORM-LIST, APPEND, MAKE-DISJUNCT, and OR-TYPE-PROOF, to: (IMPLIES (AND (EQUAL (CAR FLIST1) (LIST 'OR (CADAR FLIST1) (CADDAR FLIST1))) (FORMULA (CAR FLIST1) T 0) (FORM-LIST (CDR FLIST1)) (LISTP FLIST1) (FORM-LIST FLIST2) (NOT (LISTP (APPEND (CDR FLIST1) FLIST2))) (PROVES PF (LIST 'OR (CADAR FLIST1) (CADDAR FLIST1)))) (PROVES PF (CAR FLIST1))). This again simplifies, obviously, to: T. Q.E.D. [ 0.0 0.1 0.0 ] OR-TYPE-PROOF-PROVES (TOGGLE G0271 OR-TYPE-PROOF T) [ 0.0 0.0 0.0 ] G0271 (PROVE-LEMMA OR-TYPE-FORM-LIST (REWRITE) (IMPLIES (AND (OR-TYPE (CAR FLIST)) (FORM-LIST FLIST) (LISTP FLIST)) (FORM-LIST (CONS (CADAR FLIST) (CONS (CADDAR FLIST) (CDR FLIST)))))) This conjecture simplifies, rewriting with CDR-CONS and CAR-CONS, and opening up F-OR, OR-TYPE, and FORM-LIST, to two new conjectures: Case 2. (IMPLIES (AND (EQUAL (CAR FLIST) (LIST 'OR (CADAR FLIST) (CADDAR FLIST))) (FORMULA (CAR FLIST) T 0) (FORM-LIST (CDR FLIST)) (LISTP FLIST)) (FORMULA (CADAR FLIST) T 0)). Applying the lemma CAR-CDR-ELIM, replace FLIST by (CONS X Z) to eliminate (CAR FLIST) and (CDR FLIST), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), and D by (CONS V C) to eliminate (CAR D) and (CDR D). We would thus like to prove the following four new goals: Case 2.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'OR (CADR X) (CADDR X))) (FORMULA X T 0) (FORM-LIST Z)) (FORMULA (CADR X) T 0)). This further simplifies, trivially, to: T. Case 2.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'OR (CAR V) (CADR V))) (FORMULA (CONS W V) T 0) (FORM-LIST Z)) (FORMULA (CAR V) T 0)). However this further simplifies, applying CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up the functions CAR and CONS, to: T. Case 2.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL (CONS W (CONS X D)) (LIST 'OR X (CAR D))) (FORMULA (CONS W (CONS X D)) T 0) (FORM-LIST Z)) (FORMULA X T 0)). But this further simplifies, rewriting with CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding the definition of CONS, to: T. Case 2.1. (IMPLIES (AND (EQUAL (CONS W (CONS X (CONS V C))) (LIST 'OR X V)) (FORMULA (CONS W (CONS X (CONS V C))) T 0) (FORM-LIST Z)) (FORMULA X T 0)). This further simplifies, rewriting with CAR-CONS, CDR-CONS, CONS-EQUAL, and FORMULA-OR-REDUC, to: T. Case 1. (IMPLIES (AND (EQUAL (CAR FLIST) (LIST 'OR (CADAR FLIST) (CADDAR FLIST))) (FORMULA (CAR FLIST) T 0) (FORM-LIST (CDR FLIST)) (LISTP FLIST)) (FORMULA (CADDAR FLIST) T 0)). Appealing to the lemma CAR-CDR-ELIM, we now replace FLIST by (CONS X Z) to eliminate (CAR FLIST) and (CDR FLIST), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), and D by (CONS V C) to eliminate (CAR D) and (CDR D). This generates four new conjectures: Case 1.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'OR (CADR X) (CADDR X))) (FORMULA X T 0) (FORM-LIST Z)) (FORMULA (CADDR X) T 0)), which further simplifies, obviously, to: T. Case 1.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'OR (CAR V) (CADR V))) (FORMULA (CONS W V) T 0) (FORM-LIST Z)) (FORMULA (CADR V) T 0)). This further simplifies, applying CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up CAR and CONS, to: T. Case 1.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL (CONS W (CONS X D)) (LIST 'OR X (CAR D))) (FORMULA (CONS W (CONS X D)) T 0) (FORM-LIST Z)) (FORMULA (CAR D) T 0)). This further simplifies, rewriting with CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and expanding the function CONS, to: T. Case 1.1. (IMPLIES (AND (EQUAL (CONS W (CONS X (CONS V C))) (LIST 'OR X V)) (FORMULA (CONS W (CONS X (CONS V C))) T 0) (FORM-LIST Z)) (FORMULA V T 0)). This further simplifies, rewriting with CAR-CONS, CDR-CONS, CONS-EQUAL, and FORMULA-OR-REDUC, to: T. Q.E.D. [ 0.0 0.1 0.0 ] OR-TYPE-FORM-LIST (PROVE-LEMMA NOR-TYPE-FORM-LIST (REWRITE) (IMPLIES (AND (NOR-TYPE (CAR FLIST)) (FORM-LIST FLIST) (LISTP FLIST)) (FORM-LIST (CONS (LIST 'NOT (CADADAR FLIST)) (CDR FLIST))))) This conjecture simplifies, appealing to the lemmas CDR-CONS, FORMULA-NOT-REDUC, and CAR-CONS, and opening up F-NOT, F-OR, NOR-TYPE, and FORM-LIST, to the formula: (IMPLIES (AND (EQUAL (CAR FLIST) (LIST 'NOT (LIST 'OR (CADADAR FLIST) (CADDADAR FLIST)))) (FORMULA (CAR FLIST) T 0) (FORM-LIST (CDR FLIST)) (LISTP FLIST)) (FORMULA (CADADAR FLIST) T 0)). Appealing to the lemma CAR-CDR-ELIM, we now replace FLIST by (CONS X Z) to eliminate (CAR FLIST) and (CDR FLIST), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), X by (CONS C V) to eliminate (CDR X) and (CAR X), V by (CONS X X1) to eliminate (CAR V) and (CDR V), and X1 by (CONS V Z1) to eliminate (CAR X1) and (CDR X1). This generates six new goals: Case 6. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'NOT (LIST 'OR (CADADR X) (CADDADR X)))) (FORMULA X T 0) (FORM-LIST Z)) (FORMULA (CADADR X) T 0)), which further simplifies, clearly, to: T. Case 5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'NOT (LIST 'OR (CADAR V) (CADDAR V)))) (FORMULA (CONS W V) T 0) (FORM-LIST Z)) (FORMULA (CADAR V) T 0)). This further simplifies, applying CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the definitions of CDR, CAR, and CONS, to: T. Case 4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS W (CONS X D)) (LIST 'NOT (LIST 'OR (CADR X) (CADDR X)))) (FORMULA (CONS W (CONS X D)) T 0) (FORM-LIST Z)) (FORMULA (CADR X) T 0)). This further simplifies, appealing to the lemmas CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up the definitions of CAR, CDR, and CONS, to: T. Case 3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W (CONS (CONS C V) D)) (LIST 'NOT (LIST 'OR (CAR V) (CADR V)))) (FORMULA (CONS W (CONS (CONS C V) D)) T 0) (FORM-LIST Z)) (FORMULA (CAR V) T 0)), which further simplifies, applying CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the functions CAR and CONS, to: T. Case 2. (IMPLIES (AND (NOT (LISTP X1)) (EQUAL (CONS W (CONS (CONS C (CONS X X1)) D)) (LIST 'NOT (LIST 'OR X (CAR X1)))) (FORMULA (CONS W (CONS (CONS C (CONS X X1)) D)) T 0) (FORM-LIST Z)) (FORMULA X T 0)). However this further simplifies, appealing to the lemmas CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and expanding the definition of CONS, to: T. Case 1. (IMPLIES (AND (EQUAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) (LIST 'NOT (LIST 'OR X V))) (FORMULA (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) T 0) (FORM-LIST Z)) (FORMULA X T 0)), which further simplifies, rewriting with CAR-CONS, CDR-CONS, CONS-EQUAL, FORMULA-OR-REDUC, and FORMULA-NOT-REDUC, to: T. Q.E.D. [ 0.0 0.0 0.0 ] NOR-TYPE-FORM-LIST (PROVE-LEMMA NOR-TYPE-FORM-LIST2 (REWRITE) (IMPLIES (AND (NOR-TYPE (CAR FLIST)) (FORM-LIST FLIST) (LISTP FLIST)) (FORM-LIST (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST))))) This simplifies, applying CDR-CONS, FORMULA-NOT-REDUC, and CAR-CONS, and unfolding F-NOT, F-OR, NOR-TYPE, and FORM-LIST, to: (IMPLIES (AND (EQUAL (CAR FLIST) (LIST 'NOT (LIST 'OR (CADADAR FLIST) (CADDADAR FLIST)))) (FORMULA (CAR FLIST) T 0) (FORM-LIST (CDR FLIST)) (LISTP FLIST)) (FORMULA (CADDADAR FLIST) T 0)). Applying the lemma CAR-CDR-ELIM, replace FLIST by (CONS X Z) to eliminate (CAR FLIST) and (CDR FLIST), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), X by (CONS C V) to eliminate (CDR X) and (CAR X), V by (CONS X X1) to eliminate (CAR V) and (CDR V), and X1 by (CONS V Z1) to eliminate (CAR X1) and (CDR X1). This produces the following six new conjectures: Case 6. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'NOT (LIST 'OR (CADADR X) (CADDADR X)))) (FORMULA X T 0) (FORM-LIST Z)) (FORMULA (CADDADR X) T 0)). This further simplifies, clearly, to: T. Case 5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'NOT (LIST 'OR (CADAR V) (CADDAR V)))) (FORMULA (CONS W V) T 0) (FORM-LIST Z)) (FORMULA (CADDAR V) T 0)). However this further simplifies, applying CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the functions CDR, CAR, and CONS, to: T. Case 4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS W (CONS X D)) (LIST 'NOT (LIST 'OR (CADR X) (CADDR X)))) (FORMULA (CONS W (CONS X D)) T 0) (FORM-LIST Z)) (FORMULA (CADDR X) T 0)). However this further simplifies, applying the lemmas CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the definitions of CAR, CDR, and CONS, to: T. Case 3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W (CONS (CONS C V) D)) (LIST 'NOT (LIST 'OR (CAR V) (CADR V)))) (FORMULA (CONS W (CONS (CONS C V) D)) T 0) (FORM-LIST Z)) (FORMULA (CADR V) T 0)), which further simplifies, applying the lemmas CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up the definitions of CAR and CONS, to: T. Case 2. (IMPLIES (AND (NOT (LISTP X1)) (EQUAL (CONS W (CONS (CONS C (CONS X X1)) D)) (LIST 'NOT (LIST 'OR X (CAR X1)))) (FORMULA (CONS W (CONS (CONS C (CONS X X1)) D)) T 0) (FORM-LIST Z)) (FORMULA (CAR X1) T 0)), which further simplifies, applying CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and opening up the definition of CONS, to: T. Case 1. (IMPLIES (AND (EQUAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) (LIST 'NOT (LIST 'OR X V))) (FORMULA (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) T 0) (FORM-LIST Z)) (FORMULA V T 0)). However this further simplifies, appealing to the lemmas CAR-CONS, CDR-CONS, CONS-EQUAL, FORMULA-OR-REDUC, and FORMULA-NOT-REDUC, to: T. Q.E.D. [ 0.0 0.1 0.0 ] NOR-TYPE-FORM-LIST2 (PROVE-LEMMA DBLE-NEG-TYPE-FORM-LIST (REWRITE) (IMPLIES (AND (DBLE-NEG-TYPE (CAR FLIST)) (FORM-LIST FLIST) (LISTP FLIST)) (FORM-LIST (CONS (CADADAR FLIST) (CDR FLIST))))) This formula simplifies, rewriting with CDR-CONS and CAR-CONS, and opening up the functions F-NOT, DBLE-NEG-TYPE, and FORM-LIST, to the new formula: (IMPLIES (AND (EQUAL (CAR FLIST) (LIST 'NOT (LIST 'NOT (CADADAR FLIST)))) (FORMULA (CAR FLIST) T 0) (FORM-LIST (CDR FLIST)) (LISTP FLIST)) (FORMULA (CADADAR FLIST) T 0)). Applying the lemma CAR-CDR-ELIM, replace FLIST by (CONS X Z) to eliminate (CAR FLIST) and (CDR FLIST), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), X by (CONS C V) to eliminate (CDR X) and (CAR X), and V by (CONS X X1) to eliminate (CAR V) and (CDR V). This produces the following five new formulas: Case 5. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'NOT (LIST 'NOT (CADADR X)))) (FORMULA X T 0) (FORM-LIST Z)) (FORMULA (CADADR X) T 0)). This further simplifies, clearly, to: T. Case 4. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'NOT (LIST 'NOT (CADAR V)))) (FORMULA (CONS W V) T 0) (FORM-LIST Z)) (FORMULA (CADAR V) T 0)). But this further simplifies, appealing to the lemmas CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up the functions CDR, CAR, and CONS, to: T. Case 3. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS W (CONS X D)) (LIST 'NOT (LIST 'NOT (CADR X)))) (FORMULA (CONS W (CONS X D)) T 0) (FORM-LIST Z)) (FORMULA (CADR X) T 0)), which further simplifies, applying CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the functions CAR and CONS, to: T. Case 2. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W (CONS (CONS C V) D)) (LIST 'NOT (LIST 'NOT (CAR V)))) (FORMULA (CONS W (CONS (CONS C V) D)) T 0) (FORM-LIST Z)) (FORMULA (CAR V) T 0)). But this further simplifies, rewriting with CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding CONS and CAR, to: T. Case 1. (IMPLIES (AND (EQUAL (CONS W (CONS (CONS C (CONS X X1)) D)) (LIST 'NOT (LIST 'NOT X))) (FORMULA (CONS W (CONS (CONS C (CONS X X1)) D)) T 0) (FORM-LIST Z)) (FORMULA X T 0)). This further simplifies, rewriting with the lemmas CAR-CONS, CDR-CONS, CONS-EQUAL, and FORMULA-NOT-REDUC, to: T. Q.E.D. [ 0.0 0.1 0.0 ] DBLE-NEG-TYPE-FORM-LIST (TOGGLE G0272 OR-TYPE T) [ 0.0 0.0 0.0 ] G0272 (TOGGLE G0273 NOR-TYPE T) [ 0.0 0.0 0.0 ] G0273 (TOGGLE G0274 DBLE-NEG-TYPE T) [ 0.0 0.0 0.0 ] G0274 (TOGGLE G0254 DBLE-NEG-TYPE-PROOF T) [ 0.0 0.0 0.0 ] G0254 (DEFN TAUT-PROOF1 (FLIST AUXLIST) (IF (NLISTP FLIST) NIL (IF (PROP-ATOMP (CAR FLIST)) (IF (NEG-LIST (CAR FLIST) AUXLIST) (PROP-ATOM-PROOF1 FLIST AUXLIST) (PROP-ATOM-PROOF2 FLIST AUXLIST (TAUT-PROOF1 (CDR FLIST) (CONS (CAR FLIST) AUXLIST)))) (IF (OR-TYPE (CAR FLIST)) (OR-TYPE-PROOF (ARG1 (CAR FLIST)) (ARG2 (CAR FLIST)) (APPEND (CDR FLIST) AUXLIST) (TAUT-PROOF1 (CONS (ARG1 (CAR FLIST)) (CONS (ARG2 (CAR FLIST)) (CDR FLIST))) AUXLIST)) (IF (NOR-TYPE (CAR FLIST)) (NOR-TYPE-PROOF (ARG1 (ARG1 (CAR FLIST))) (ARG2 (ARG1 (CAR FLIST))) (APPEND (CDR FLIST) AUXLIST) (TAUT-PROOF1 (CONS (F-NOT (ARG1 (ARG1 (CAR FLIST)))) (CDR FLIST)) AUXLIST) (TAUT-PROOF1 (CONS (F-NOT (ARG2 (ARG1 (CAR FLIST)))) (CDR FLIST)) AUXLIST)) (IF (DBLE-NEG-TYPE (CAR FLIST)) (DBLE-NEG-TYPE-PROOF (ARG1 (ARG1 (CAR FLIST))) (APPEND (CDR FLIST) AUXLIST) (TAUT-PROOF1 (CONS (ARG1 (ARG1 (CAR FLIST))) (CDR FLIST)) AUXLIST)) NIL))))) ((LESSP (LIST-COUNT FLIST)))) Linear arithmetic, the lemmas NEG-LIST-REDUC, LESSP-LIST-COUNT, OR-TYPE-NOT-PROP-ATOMP, OR-TYPE-LIST-COUNT, NOR-TYPE-NOT-PROP-ATOMP, NOR-TYPE-LIST-COUNT2, NOR-TYPE-LIST-COUNT1, DBLE-NEG-NOT-PROP-ATOMP, and DBLE-NEG-LIST-COUNT, and the definitions of F-NOT, NLISTP, ARG2, and ARG1 inform us that the measure (LIST-COUNT FLIST) decreases according to the well-founded relation LESSP in each recursive call. Hence, TAUT-PROOF1 is accepted under the definitional principle. Note that: (OR (LITATOM (TAUT-PROOF1 FLIST AUXLIST)) (LISTP (TAUT-PROOF1 FLIST AUXLIST))) is a theorem. [ 0.0 0.0 0.0 ] TAUT-PROOF1 (PROVE-LEMMA TAUT-THM1 (REWRITE) (IMPLIES (AND (FORM-LIST FLIST) (FORM-LIST AUXLIST) (TAUTOLOGYP1 FLIST AUXLIST)) (PROVES (TAUT-PROOF1 FLIST AUXLIST) (MAKE-DISJUNCT (APPEND FLIST AUXLIST)))) ((DISABLE NEG-LIST-REDUC FORMULA) (INDUCT (TAUTOLOGYP1 FLIST AUXLIST)))) This formula can be simplified, using the abbreviations IMPLIES, NLISTP, NOT, OR, AND, F-NOT, ARG2, and ARG1, to the following six new formulas: Case 6. (IMPLIES (AND (NOT (LISTP FLIST)) (FORM-LIST FLIST) (FORM-LIST AUXLIST) (TAUTOLOGYP1 FLIST AUXLIST)) (PROVES (TAUT-PROOF1 FLIST AUXLIST) (MAKE-DISJUNCT (APPEND FLIST AUXLIST)))). This simplifies, expanding the definitions of FORM-LIST and TAUTOLOGYP1, to: T. Case 5. (IMPLIES (AND (LISTP FLIST) (PROP-ATOMP (CAR FLIST)) (IMPLIES (AND (FORM-LIST (CDR FLIST)) (FORM-LIST (CONS (CAR FLIST) AUXLIST)) (TAUTOLOGYP1 (CDR FLIST) (CONS (CAR FLIST) AUXLIST))) (PROVES (TAUT-PROOF1 (CDR FLIST) (CONS (CAR FLIST) AUXLIST)) (MAKE-DISJUNCT (APPEND (CDR FLIST) (CONS (CAR FLIST) AUXLIST))))) (FORM-LIST FLIST) (FORM-LIST AUXLIST) (TAUTOLOGYP1 FLIST AUXLIST)) (PROVES (TAUT-PROOF1 FLIST AUXLIST) (MAKE-DISJUNCT (APPEND FLIST AUXLIST)))). This simplifies, applying CDR-CONS, CAR-CONS, and PROP-ATOM-PROOF1-PROVES, and opening up the definitions of FORM-LIST, AND, IMPLIES, TAUTOLOGYP1, TAUT-PROOF1, APPEND, F-OR, and MAKE-DISJUNCT, to four new formulas: Case 5.4. (IMPLIES (AND (LISTP FLIST) (PROP-ATOMP (CAR FLIST)) (PROVES (TAUT-PROOF1 (CDR FLIST) (CONS (CAR FLIST) AUXLIST)) (MAKE-DISJUNCT (APPEND (CDR FLIST) (CONS (CAR FLIST) AUXLIST)))) (FORMULA (CAR FLIST) T 0) (FORM-LIST (CDR FLIST)) (FORM-LIST AUXLIST) (TAUTOLOGYP1 (CDR FLIST) (CONS (CAR FLIST) AUXLIST)) (NOT (LISTP (APPEND (CDR FLIST) AUXLIST))) (NOT (NEG-LIST (CAR FLIST) AUXLIST))) (PROVES (PROP-ATOM-PROOF2 FLIST AUXLIST (TAUT-PROOF1 (CDR FLIST) (CONS (CAR FLIST) AUXLIST))) (CAR FLIST))), which again simplifies, applying CDR-CONS, CAR-CONS, and PROP-ATOM-PROOF2-PROVES, and expanding the functions MAKE-DISJUNCT, APPEND, and FORM-LIST, to: T. Case 5.3. (IMPLIES (AND (LISTP FLIST) (PROP-ATOMP (CAR FLIST)) (PROVES (TAUT-PROOF1 (CDR FLIST) (CONS (CAR FLIST) AUXLIST)) (MAKE-DISJUNCT (APPEND (CDR FLIST) (CONS (CAR FLIST) AUXLIST)))) (FORMULA (CAR FLIST) T 0) (FORM-LIST (CDR FLIST)) (FORM-LIST AUXLIST) (TAUTOLOGYP1 (CDR FLIST) (CONS (CAR FLIST) AUXLIST)) (NOT (LISTP (APPEND (CDR FLIST) AUXLIST))) (NEG-LIST (CAR FLIST) AUXLIST)) (PROVES (PROP-ATOM-PROOF1 FLIST AUXLIST) (CAR FLIST))). But this again simplifies, applying CDR-CONS, CAR-CONS, and PROP-ATOM-PROOF1-PROVES, and unfolding the definitions of MAKE-DISJUNCT, APPEND, and FORM-LIST, to: T. Case 5.2. (IMPLIES (AND (LISTP FLIST) (PROP-ATOMP (CAR FLIST)) (PROVES (TAUT-PROOF1 (CDR FLIST) (CONS (CAR FLIST) AUXLIST)) (MAKE-DISJUNCT (APPEND (CDR FLIST) (CONS (CAR FLIST) AUXLIST)))) (FORMULA (CAR FLIST) T 0) (FORM-LIST (CDR FLIST)) (FORM-LIST AUXLIST) (TAUTOLOGYP1 (CDR FLIST) (CONS (CAR FLIST) AUXLIST)) (LISTP (APPEND (CDR FLIST) AUXLIST)) (NOT (NEG-LIST (CAR FLIST) AUXLIST))) (PROVES (PROP-ATOM-PROOF2 FLIST AUXLIST (TAUT-PROOF1 (CDR FLIST) (CONS (CAR FLIST) AUXLIST))) (LIST 'OR (CAR FLIST) (MAKE-DISJUNCT (APPEND (CDR FLIST) AUXLIST))))). This again simplifies, rewriting with CDR-CONS, CAR-CONS, and PROP-ATOM-PROOF2-PROVES, and opening up MAKE-DISJUNCT, F-OR, APPEND, and FORM-LIST, to: T. Case 5.1. (IMPLIES (AND (LISTP FLIST) (PROP-ATOMP (CAR FLIST)) (PROVES (TAUT-PROOF1 (CDR FLIST) (CONS (CAR FLIST) AUXLIST)) (MAKE-DISJUNCT (APPEND (CDR FLIST) (CONS (CAR FLIST) AUXLIST)))) (FORMULA (CAR FLIST) T 0) (FORM-LIST (CDR FLIST)) (FORM-LIST AUXLIST) (TAUTOLOGYP1 (CDR FLIST) (CONS (CAR FLIST) AUXLIST)) (LISTP (APPEND (CDR FLIST) AUXLIST)) (NEG-LIST (CAR FLIST) AUXLIST)) (PROVES (PROP-ATOM-PROOF1 FLIST AUXLIST) (LIST 'OR (CAR FLIST) (MAKE-DISJUNCT (APPEND (CDR FLIST) AUXLIST))))). But this again simplifies, applying the lemmas CDR-CONS, CAR-CONS, and PROP-ATOM-PROOF1-PROVES, and unfolding the functions MAKE-DISJUNCT, F-OR, APPEND, and FORM-LIST, to: T. Case 4. (IMPLIES (AND (LISTP FLIST) (NOT (PROP-ATOMP (CAR FLIST))) (OR-TYPE (CAR FLIST)) (IMPLIES (AND (FORM-LIST (CONS (CADAR FLIST) (CONS (CADDAR FLIST) (CDR FLIST)))) (FORM-LIST AUXLIST) (TAUTOLOGYP1 (CONS (CADAR FLIST) (CONS (CADDAR FLIST) (CDR FLIST))) AUXLIST)) (PROVES (TAUT-PROOF1 (CONS (CADAR FLIST) (CONS (CADDAR FLIST) (CDR FLIST))) AUXLIST) (MAKE-DISJUNCT (APPEND (CONS (CADAR FLIST) (CONS (CADDAR FLIST) (CDR FLIST))) AUXLIST)))) (FORM-LIST FLIST) (FORM-LIST AUXLIST) (TAUTOLOGYP1 FLIST AUXLIST)) (PROVES (TAUT-PROOF1 FLIST AUXLIST) (MAKE-DISJUNCT (APPEND FLIST AUXLIST)))), which simplifies, rewriting with the lemmas OR-TYPE-NOT-PROP-ATOMP, OR-TYPE-FORM-LIST, CDR-CONS, CAR-CONS, and OR-TYPE-PROOF-PROVES, and expanding the definitions of AND, APPEND, F-OR, MAKE-DISJUNCT, IMPLIES, FORM-LIST, ARG2, ARG1, TAUTOLOGYP1, and TAUT-PROOF1, to: T. Case 3. (IMPLIES (AND (LISTP FLIST) (NOT (PROP-ATOMP (CAR FLIST))) (NOT (OR-TYPE (CAR FLIST))) (NOR-TYPE (CAR FLIST)) (IMPLIES (AND (FORM-LIST (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST))) (FORM-LIST AUXLIST) (TAUTOLOGYP1 (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST)) AUXLIST)) (PROVES (TAUT-PROOF1 (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST)) AUXLIST) (MAKE-DISJUNCT (APPEND (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST)) AUXLIST)))) (IMPLIES (AND (FORM-LIST (CONS (LIST 'NOT (CADADAR FLIST)) (CDR FLIST))) (FORM-LIST AUXLIST) (TAUTOLOGYP1 (CONS (LIST 'NOT (CADADAR FLIST)) (CDR FLIST)) AUXLIST)) (PROVES (TAUT-PROOF1 (CONS (LIST 'NOT (CADADAR FLIST)) (CDR FLIST)) AUXLIST) (MAKE-DISJUNCT (APPEND (CONS (LIST 'NOT (CADADAR FLIST)) (CDR FLIST)) AUXLIST)))) (FORM-LIST FLIST) (FORM-LIST AUXLIST) (TAUTOLOGYP1 FLIST AUXLIST)) (PROVES (TAUT-PROOF1 FLIST AUXLIST) (MAKE-DISJUNCT (APPEND FLIST AUXLIST)))), which simplifies, applying the lemmas NOR-TYPE-NOT-PROP-ATOMP, NOR-TYPE-FORM-LIST2, CDR-CONS, CAR-CONS, NOR-TYPE-FORM-LIST, FORM-LIST-APPEND, and NOR-TYPE-PROOF-PROVES, and expanding the functions AND, APPEND, F-OR, MAKE-DISJUNCT, IMPLIES, FORM-LIST, F-NOT, ARG1, TAUTOLOGYP1, ARG2, and TAUT-PROOF1, to: T. Case 2. (IMPLIES (AND (LISTP FLIST) (NOT (PROP-ATOMP (CAR FLIST))) (NOT (OR-TYPE (CAR FLIST))) (NOT (NOR-TYPE (CAR FLIST))) (DBLE-NEG-TYPE (CAR FLIST)) (IMPLIES (AND (FORM-LIST (CONS (CADADAR FLIST) (CDR FLIST))) (FORM-LIST AUXLIST) (TAUTOLOGYP1 (CONS (CADADAR FLIST) (CDR FLIST)) AUXLIST)) (PROVES (TAUT-PROOF1 (CONS (CADADAR FLIST) (CDR FLIST)) AUXLIST) (MAKE-DISJUNCT (APPEND (CONS (CADADAR FLIST) (CDR FLIST)) AUXLIST)))) (FORM-LIST FLIST) (FORM-LIST AUXLIST) (TAUTOLOGYP1 FLIST AUXLIST)) (PROVES (TAUT-PROOF1 FLIST AUXLIST) (MAKE-DISJUNCT (APPEND FLIST AUXLIST)))), which simplifies, applying DBLE-NEG-NOT-PROP-ATOMP, DBLE-NEG-TYPE-FORM-LIST, CDR-CONS, CAR-CONS, FORM-LIST-APPEND, and DBLE-NEG-TYPE-PROOF-PROVES, and expanding the definitions of AND, APPEND, F-OR, MAKE-DISJUNCT, IMPLIES, FORM-LIST, ARG1, TAUTOLOGYP1, and TAUT-PROOF1, to: T. Case 1. (IMPLIES (AND (LISTP FLIST) (NOT (PROP-ATOMP (CAR FLIST))) (NOT (OR-TYPE (CAR FLIST))) (NOT (NOR-TYPE (CAR FLIST))) (NOT (DBLE-NEG-TYPE (CAR FLIST))) (FORM-LIST FLIST) (FORM-LIST AUXLIST) (TAUTOLOGYP1 FLIST AUXLIST)) (PROVES (TAUT-PROOF1 FLIST AUXLIST) (MAKE-DISJUNCT (APPEND FLIST AUXLIST)))). This simplifies, unfolding TAUTOLOGYP1, to: T. Q.E.D. [ 0.0 0.3 0.0 ] TAUT-THM1 (TOGGLE G0275 TAUT-PROOF1 T) [ 0.0 0.0 0.0 ] G0275 (PROVE-LEMMA TAUT-THM2 (REWRITE) (IMPLIES (AND (FORM-LIST FLIST) (FORM-LIST AUXLIST) (TAUTOLOGYP1 FLIST AUXLIST) (EQUAL CONCL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)))) (PROVES (TAUT-PROOF1 FLIST AUXLIST) CONCL)) ((USE (TAUT-THM1 (CONCL (MAKE-DISJUNCT (APPEND FLIST AUXLIST))))))) This conjecture simplifies, rewriting with TAUT-THM1, and unfolding AND and IMPLIES, to: T. Q.E.D. [ 0.0 0.0 0.0 ] TAUT-THM2 (PROVE-LEMMA LISTP-ELEM-FORM (REWRITE) (IMPLIES (NLISTP EXP) (NOT (ELEM-FORM EXP)))) WARNING: Note that the rewrite rule LISTP-ELEM-FORM will be stored so as to apply only to terms with the nonrecursive function symbol ELEM-FORM. This formula can be simplified, using the abbreviations NOT, NLISTP, and IMPLIES, to: (IMPLIES (NOT (LISTP EXP)) (NOT (ELEM-FORM EXP))), which simplifies, applying the lemmas CDR-NLISTP and CAR-NLISTP, and expanding the definitions of FORSOME, CDR, CAR, ATOMP, PREDICATE, and ELEM-FORM, to: T. Q.E.D. [ 0.0 0.0 0.0 ] LISTP-ELEM-FORM (DEFN EVAL (EXP ALIST) (IF (NLISTP EXP) F (IF (ELEM-FORM EXP) (MEMBER EXP ALIST) (IF (EQUAL (CAR EXP) 'NOT) (NOT (EVAL (CADR EXP) ALIST)) (IF (EQUAL (CAR EXP) 'OR) (OR (EVAL (CADR EXP) ALIST) (EVAL (CADDR EXP) ALIST)) F))))) Linear arithmetic, the lemmas CAR-LESSEQP, CDR-LESSEQP, CAR-CONS, and CDR-LESSP, and the definitions of ELEM-FORM, PREDICATE, ATOMP, FORSOME, EQUAL, and NLISTP inform us that the measure (COUNT EXP) decreases according to the well-founded relation LESSP in each recursive call. Hence, EVAL is accepted under the principle of definition. From the definition we can conclude that: (OR (FALSEP (EVAL EXP ALIST)) (TRUEP (EVAL EXP ALIST))) is a theorem. [ 0.0 0.0 0.0 ] EVAL (PROVE-LEMMA ELEM-FORM-EVAL (REWRITE) (IMPLIES (ELEM-FORM EXP) (EQUAL (EVAL EXP ALIST) (MEMBER EXP ALIST)))) This formula simplifies, expanding the functions FORSOME, ATOMP, DEGREE, ELEM-FORM, PREDICATE, and EVAL, to two new conjectures: Case 2. (IMPLIES (AND (PREDICATE (CAR EXP)) (EQUAL (CAR EXP) 'EQUAL) (TERMP (CDR EXP) 'LIST 2) (NOT (LISTP EXP))) (EQUAL F (MEMBER EXP ALIST))), which again simplifies, appealing to the lemma CAR-NLISTP, and expanding PREDICATE and EQUAL, to: T. Case 1. (IMPLIES (AND (PREDICATE (CAR EXP)) (NOT (EQUAL (CAR EXP) 'EQUAL)) (TERMP (CDR EXP) 'LIST (CADDAR EXP)) (NOT (LISTP EXP))) (EQUAL F (MEMBER EXP ALIST))), which again simplifies, appealing to the lemma CAR-NLISTP, and unfolding the definition of PREDICATE, to: T. Q.E.D. [ 0.0 0.0 0.0 ] ELEM-FORM-EVAL (PROVE-LEMMA NLISTP-EVAL (REWRITE) (IMPLIES (NLISTP EXP) (NOT (EVAL EXP ALIST)))) This conjecture can be simplified, using the abbreviations NOT, NLISTP, and IMPLIES, to: (IMPLIES (NOT (LISTP EXP)) (NOT (EVAL EXP ALIST))). This simplifies, unfolding the definition of EVAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] NLISTP-EVAL (PROVE-LEMMA NOT-EVAL (REWRITE) (IMPLIES (AND (LISTP EXP) (EQUAL (CAR EXP) 'NOT)) (EQUAL (EVAL EXP ALIST) (NOT (EVAL (CADR EXP) ALIST))))) This conjecture simplifies, rewriting with the lemma CAR-CONS, and unfolding the functions ELEM-FORM, PREDICATE, ATOMP, FORSOME, EQUAL, EVAL, and NOT, to: T. Q.E.D. [ 0.0 0.1 0.0 ] NOT-EVAL (PROVE-LEMMA OR-EVAL (REWRITE) (IMPLIES (AND (LISTP EXP) (EQUAL (CAR EXP) 'OR)) (EQUAL (EVAL EXP ALIST) (OR (EVAL (CADR EXP) ALIST) (EVAL (CADDR EXP) ALIST))))) This simplifies, applying CAR-CONS, and unfolding the functions ELEM-FORM, PREDICATE, ATOMP, FORSOME, EQUAL, EVAL, and OR, to: T. Q.E.D. [ 0.0 0.1 0.0 ] OR-EVAL (PROVE-LEMMA MEMBER-EVAL (REWRITE) (IMPLIES (AND (MEMBER EXP FLIST) (EVAL EXP ALIST)) (EVAL (MAKE-DISJUNCT FLIST) ALIST))) WARNING: Note that MEMBER-EVAL contains the free variable EXP which will be chosen by instantiating the hypothesis (MEMBER EXP FLIST). Give the conjecture the name *1. We will appeal to induction. There are three plausible inductions. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (NLISTP FLIST) (p FLIST ALIST EXP)) (IMPLIES (AND (NOT (NLISTP FLIST)) (EQUAL EXP (CAR FLIST))) (p FLIST ALIST EXP)) (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (EQUAL EXP (CAR FLIST))) (p (CDR FLIST) ALIST EXP)) (p FLIST ALIST EXP))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP establish that the measure (COUNT FLIST) 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 (NLISTP FLIST) (MEMBER EXP FLIST) (EVAL EXP ALIST)) (EVAL (MAKE-DISJUNCT FLIST) ALIST)). This simplifies, opening up NLISTP and MEMBER, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP FLIST)) (EQUAL EXP (CAR FLIST)) (MEMBER EXP FLIST) (EVAL EXP ALIST)) (EVAL (MAKE-DISJUNCT FLIST) ALIST)). This simplifies, opening up the definitions of NLISTP, MEMBER, MAKE-DISJUNCT, and F-OR, to: (IMPLIES (AND (LISTP FLIST) (EVAL (CAR FLIST) ALIST) (LISTP (CDR FLIST))) (EVAL (LIST 'OR (CAR FLIST) (MAKE-DISJUNCT (CDR FLIST))) ALIST)), which again simplifies, applying CAR-CONS, CDR-CONS, and OR-EVAL, and opening up EQUAL, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (EQUAL EXP (CAR FLIST))) (NOT (MEMBER EXP (CDR FLIST))) (MEMBER EXP FLIST) (EVAL EXP ALIST)) (EVAL (MAKE-DISJUNCT FLIST) ALIST)). This simplifies, unfolding the functions NLISTP and MEMBER, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (EQUAL EXP (CAR FLIST))) (EVAL (MAKE-DISJUNCT (CDR FLIST)) ALIST) (MEMBER EXP FLIST) (EVAL EXP ALIST)) (EVAL (MAKE-DISJUNCT FLIST) ALIST)). This simplifies, opening up NLISTP, MEMBER, MAKE-DISJUNCT, and F-OR, to the following two new goals: Case 1.2. (IMPLIES (AND (LISTP FLIST) (NOT (EQUAL EXP (CAR FLIST))) (EVAL (MAKE-DISJUNCT (CDR FLIST)) ALIST) (MEMBER EXP (CDR FLIST)) (EVAL EXP ALIST) (NOT (LISTP (CDR FLIST)))) (EVAL (CAR FLIST) ALIST)). But this further simplifies, appealing to the lemma NLISTP-EVAL, and opening up the function MAKE-DISJUNCT, to: T. Case 1.1. (IMPLIES (AND (LISTP FLIST) (NOT (EQUAL EXP (CAR FLIST))) (EVAL (MAKE-DISJUNCT (CDR FLIST)) ALIST) (MEMBER EXP (CDR FLIST)) (EVAL EXP ALIST) (LISTP (CDR FLIST))) (EVAL (LIST 'OR (CAR FLIST) (MAKE-DISJUNCT (CDR FLIST))) ALIST)), which again simplifies, appealing to the lemmas CAR-CONS, CDR-CONS, and OR-EVAL, and expanding EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.4 0.0 ] MEMBER-EVAL (PROVE-LEMMA EVAL-ELEM-FORM (REWRITE) (IMPLIES (AND (ELEM-FORM EXP) (MEMBER EXP LIST) (MEMBER EXP ALIST) (EQUAL CONCL (MAKE-DISJUNCT LIST))) (EVAL CONCL ALIST)) ((INDUCT (MEMBER EXP LIST)) (DISABLE EVAL ELEM-FORM))) WARNING: Note that EVAL-ELEM-FORM contains the free variables LIST and EXP which will be chosen by instantiating the hypotheses (ELEM-FORM EXP) and (MEMBER EXP LIST). This conjecture can be simplified, using the abbreviations IMPLIES, NLISTP, NOT, OR, and AND, to three new conjectures: Case 3. (IMPLIES (AND (NOT (LISTP LIST)) (ELEM-FORM EXP) (MEMBER EXP LIST) (MEMBER EXP ALIST) (EQUAL CONCL (MAKE-DISJUNCT LIST))) (EVAL CONCL ALIST)), which simplifies, expanding the definition of MEMBER, to: T. Case 2. (IMPLIES (AND (LISTP LIST) (EQUAL EXP (CAR LIST)) (ELEM-FORM EXP) (MEMBER EXP LIST) (MEMBER EXP ALIST) (EQUAL CONCL (MAKE-DISJUNCT LIST))) (EVAL CONCL ALIST)), which simplifies, unfolding the function MEMBER, to the conjecture: (IMPLIES (AND (LISTP LIST) (ELEM-FORM (CAR LIST)) (MEMBER (CAR LIST) ALIST)) (EVAL (MAKE-DISJUNCT LIST) ALIST)). Appealing to the lemma CAR-CDR-ELIM, we now replace LIST by (CONS X Z) to eliminate (CAR LIST) and (CDR LIST). The result is the conjecture: (IMPLIES (AND (ELEM-FORM X) (MEMBER X ALIST)) (EVAL (MAKE-DISJUNCT (CONS X Z)) ALIST)). This further simplifies, applying CAR-CONS and CDR-CONS, and expanding the functions F-OR and MAKE-DISJUNCT, to the following two new goals: Case 2.2. (IMPLIES (AND (ELEM-FORM X) (MEMBER X ALIST) (NOT (LISTP Z))) (EVAL X ALIST)). This again simplifies, applying ELEM-FORM-EVAL, to: T. Case 2.1. (IMPLIES (AND (ELEM-FORM X) (MEMBER X ALIST) (LISTP Z)) (EVAL (LIST 'OR X (MAKE-DISJUNCT Z)) ALIST)). This again simplifies, rewriting with CAR-CONS, CDR-CONS, ELEM-FORM-EVAL, and OR-EVAL, and opening up EQUAL, to: T. Case 1. (IMPLIES (AND (LISTP LIST) (NOT (EQUAL EXP (CAR LIST))) (IMPLIES (AND (ELEM-FORM EXP) (MEMBER EXP (CDR LIST)) (MEMBER EXP ALIST) (EQUAL CONCL (MAKE-DISJUNCT (CDR LIST)))) (EVAL CONCL ALIST)) (ELEM-FORM EXP) (MEMBER EXP LIST) (MEMBER EXP ALIST) (EQUAL CONCL (MAKE-DISJUNCT LIST))) (EVAL CONCL ALIST)). This simplifies, rewriting with CAR-CONS, CDR-CONS, ELEM-FORM-EVAL, MEMBER-EVAL, and OR-EVAL, and opening up the definitions of F-OR, MAKE-DISJUNCT, AND, IMPLIES, MEMBER, and EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EVAL-ELEM-FORM (TOGGLE G0278 OR-TYPE NIL) [ 0.0 0.0 0.0 ] G0278 (TOGGLE G0279 NOR-TYPE NIL) [ 0.0 0.0 0.0 ] G0279 (TOGGLE G0280 DBLE-NEG-TYPE NIL) [ 0.0 0.0 0.0 ] G0280 (TOGGLE G0281 PROP-ATOMP NIL) [ 0.0 0.0 0.0 ] G0281 (PROVE-LEMMA MEMBER-APPEND (REWRITE) (EQUAL (MEMBER EXP (APPEND FLIST1 FLIST2)) (OR (MEMBER EXP FLIST1) (MEMBER EXP FLIST2)))) This simplifies, opening up the function OR, to two new conjectures: Case 2. (IMPLIES (NOT (MEMBER EXP FLIST1)) (EQUAL (MEMBER EXP (APPEND FLIST1 FLIST2)) (MEMBER EXP FLIST2))), which we will name *1. Case 1. (IMPLIES (MEMBER EXP FLIST1) (EQUAL (MEMBER EXP (APPEND FLIST1 FLIST2)) T)). This again simplifies, trivially, to the new formula: (IMPLIES (MEMBER EXP FLIST1) (MEMBER EXP (APPEND FLIST1 FLIST2))), 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 (MEMBER EXP (APPEND FLIST1 FLIST2)) (OR (MEMBER EXP FLIST1) (MEMBER EXP FLIST2))). We named this *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 (AND (LISTP FLIST1) (p EXP (CDR FLIST1) FLIST2)) (p EXP FLIST1 FLIST2)) (IMPLIES (NOT (LISTP FLIST1)) (p EXP FLIST1 FLIST2))). Linear arithmetic and the lemma CDR-LESSP inform us that the measure (COUNT FLIST1) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates two new conjectures: Case 2. (IMPLIES (AND (LISTP FLIST1) (EQUAL (MEMBER EXP (APPEND (CDR FLIST1) FLIST2)) (OR (MEMBER EXP (CDR FLIST1)) (MEMBER EXP FLIST2)))) (EQUAL (MEMBER EXP (APPEND FLIST1 FLIST2)) (OR (MEMBER EXP FLIST1) (MEMBER EXP FLIST2)))), which simplifies, applying CDR-CONS and CAR-CONS, and unfolding OR, APPEND, MEMBER, and EQUAL, to: T. Case 1. (IMPLIES (NOT (LISTP FLIST1)) (EQUAL (MEMBER EXP (APPEND FLIST1 FLIST2)) (OR (MEMBER EXP FLIST1) (MEMBER EXP FLIST2)))). This simplifies, expanding the functions APPEND, MEMBER, and OR, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] MEMBER-APPEND (PROVE-LEMMA EVAL-NEG-ELEM-FORM (REWRITE) (IMPLIES (AND (MEMBER EXP LIST) (MEMBER (F-NOT EXP) LIST) (EQUAL CONCL (MAKE-DISJUNCT LIST))) (EVAL CONCL ALIST)) ((DISABLE ELEM-FORM EVAL))) WARNING: Note that EVAL-NEG-ELEM-FORM contains the free variables LIST and EXP which will be chosen by instantiating the hypothesis (MEMBER EXP LIST). This formula can be simplified, using the abbreviations AND, IMPLIES, and F-NOT, to the new formula: (IMPLIES (AND (MEMBER EXP LIST) (MEMBER (LIST 'NOT EXP) LIST) (EQUAL CONCL (MAKE-DISJUNCT LIST))) (EVAL CONCL ALIST)), which simplifies, trivially, to the new goal: (IMPLIES (AND (MEMBER EXP LIST) (MEMBER (LIST 'NOT EXP) LIST)) (EVAL (MAKE-DISJUNCT LIST) ALIST)), which we will name *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 (NLISTP LIST) (p LIST ALIST EXP)) (IMPLIES (AND (NOT (NLISTP LIST)) (EQUAL EXP (CAR LIST))) (p LIST ALIST EXP)) (IMPLIES (AND (NOT (NLISTP LIST)) (NOT (EQUAL EXP (CAR LIST))) (p (CDR LIST) ALIST EXP)) (p LIST ALIST EXP))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP can be used to prove that the measure (COUNT LIST) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme leads to five new formulas: Case 5. (IMPLIES (AND (NLISTP LIST) (MEMBER EXP LIST) (MEMBER (LIST 'NOT EXP) LIST)) (EVAL (MAKE-DISJUNCT LIST) ALIST)), which simplifies, opening up NLISTP and MEMBER, to: T. Case 4. (IMPLIES (AND (NOT (NLISTP LIST)) (EQUAL EXP (CAR LIST)) (MEMBER EXP LIST) (MEMBER (LIST 'NOT EXP) LIST)) (EVAL (MAKE-DISJUNCT LIST) ALIST)), which simplifies, unfolding the functions NLISTP, MEMBER, MAKE-DISJUNCT, and F-OR, to two new formulas: Case 4.2. (IMPLIES (AND (LISTP LIST) (MEMBER (LIST 'NOT (CAR LIST)) LIST) (NOT (LISTP (CDR LIST)))) (EVAL (CAR LIST) ALIST)). Applying the lemma CAR-CDR-ELIM, replace LIST by (CONS X Z) to eliminate (CAR LIST) and (CDR LIST). We would thus like to prove the new goal: (IMPLIES (AND (MEMBER (LIST 'NOT X) (CONS X Z)) (NOT (LISTP Z))) (EVAL X ALIST)), which further simplifies, applying the lemmas CDR-CONS and CAR-CONS, and unfolding MEMBER, to: T. Case 4.1. (IMPLIES (AND (LISTP LIST) (MEMBER (LIST 'NOT (CAR LIST)) LIST) (LISTP (CDR LIST))) (EVAL (LIST 'OR (CAR LIST) (MAKE-DISJUNCT (CDR LIST))) ALIST)), which again simplifies, applying CAR-CONS, CDR-CONS, and OR-EVAL, and expanding the function EQUAL, to: (IMPLIES (AND (LISTP LIST) (MEMBER (LIST 'NOT (CAR LIST)) LIST) (LISTP (CDR LIST)) (NOT (EVAL (CAR LIST) ALIST))) (EVAL (MAKE-DISJUNCT (CDR LIST)) ALIST)). Applying the lemma CAR-CDR-ELIM, replace LIST by (CONS X Z) to eliminate (CAR LIST) and (CDR LIST). This produces the new conjecture: (IMPLIES (AND (MEMBER (LIST 'NOT X) (CONS X Z)) (LISTP Z) (NOT (EVAL X ALIST))) (EVAL (MAKE-DISJUNCT Z) ALIST)), which further simplifies, applying CDR-CONS, CAR-CONS, NOT-EVAL, and MEMBER-EVAL, and unfolding MEMBER and EQUAL, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP LIST)) (NOT (EQUAL EXP (CAR LIST))) (NOT (MEMBER EXP (CDR LIST))) (MEMBER EXP LIST) (MEMBER (LIST 'NOT EXP) LIST)) (EVAL (MAKE-DISJUNCT LIST) ALIST)). This simplifies, expanding the functions NLISTP and MEMBER, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP LIST)) (NOT (EQUAL EXP (CAR LIST))) (NOT (MEMBER (LIST 'NOT EXP) (CDR LIST))) (MEMBER EXP LIST) (MEMBER (LIST 'NOT EXP) LIST)) (EVAL (MAKE-DISJUNCT LIST) ALIST)). This simplifies, expanding the definitions of NLISTP, MEMBER, MAKE-DISJUNCT, and F-OR, to the following two new conjectures: Case 2.2. (IMPLIES (AND (LISTP LIST) (NOT (EQUAL EXP (CAR LIST))) (NOT (MEMBER (LIST 'NOT EXP) (CDR LIST))) (MEMBER EXP (CDR LIST)) (EQUAL (LIST 'NOT EXP) (CAR LIST)) (NOT (LISTP (CDR LIST)))) (EVAL (CAR LIST) ALIST)). This further simplifies, expanding the definition of MEMBER, to: T. Case 2.1. (IMPLIES (AND (LISTP LIST) (NOT (EQUAL EXP (CAR LIST))) (NOT (MEMBER (LIST 'NOT EXP) (CDR LIST))) (MEMBER EXP (CDR LIST)) (EQUAL (LIST 'NOT EXP) (CAR LIST)) (LISTP (CDR LIST))) (EVAL (LIST 'OR (CAR LIST) (MAKE-DISJUNCT (CDR LIST))) ALIST)), which again simplifies, rewriting with the lemmas CAR-CONS, CDR-CONS, and OR-EVAL, and expanding EQUAL, to: (IMPLIES (AND (LISTP LIST) (NOT (EQUAL EXP (CAR LIST))) (NOT (MEMBER (LIST 'NOT EXP) (CDR LIST))) (MEMBER EXP (CDR LIST)) (EQUAL (LIST 'NOT EXP) (CAR LIST)) (LISTP (CDR LIST)) (NOT (EVAL (CAR LIST) ALIST))) (EVAL (MAKE-DISJUNCT (CDR LIST)) ALIST)). This further simplifies, clearly, to: (IMPLIES (AND (LISTP LIST) (NOT (EQUAL EXP (CAR LIST))) (NOT (MEMBER (CAR LIST) (CDR LIST))) (MEMBER EXP (CDR LIST)) (EQUAL (LIST 'NOT EXP) (CAR LIST)) (LISTP (CDR LIST)) (NOT (EVAL (CAR LIST) ALIST))) (EVAL (MAKE-DISJUNCT (CDR LIST)) ALIST)). Applying the lemma CAR-CDR-ELIM, replace LIST by (CONS X Z) to eliminate (CAR LIST) and (CDR LIST). We would thus like to prove the new conjecture: (IMPLIES (AND (NOT (EQUAL EXP X)) (NOT (MEMBER X Z)) (MEMBER EXP Z) (EQUAL (LIST 'NOT EXP) X) (LISTP Z) (NOT (EVAL X ALIST))) (EVAL (MAKE-DISJUNCT Z) ALIST)), which further simplifies, rewriting with the lemmas CAR-CONS, CDR-CONS, NOT-EVAL, and MEMBER-EVAL, and opening up the function EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP LIST)) (NOT (EQUAL EXP (CAR LIST))) (EVAL (MAKE-DISJUNCT (CDR LIST)) ALIST) (MEMBER EXP LIST) (MEMBER (LIST 'NOT EXP) LIST)) (EVAL (MAKE-DISJUNCT LIST) ALIST)), which simplifies, unfolding the functions NLISTP, MEMBER, MAKE-DISJUNCT, and F-OR, to four new formulas: Case 1.4. (IMPLIES (AND (LISTP LIST) (NOT (EQUAL EXP (CAR LIST))) (EVAL (MAKE-DISJUNCT (CDR LIST)) ALIST) (MEMBER EXP (CDR LIST)) (EQUAL (LIST 'NOT EXP) (CAR LIST)) (NOT (LISTP (CDR LIST)))) (EVAL (CAR LIST) ALIST)), which further simplifies, rewriting with the lemma NLISTP-EVAL, and unfolding the function MAKE-DISJUNCT, to: T. Case 1.3. (IMPLIES (AND (LISTP LIST) (NOT (EQUAL EXP (CAR LIST))) (EVAL (MAKE-DISJUNCT (CDR LIST)) ALIST) (MEMBER EXP (CDR LIST)) (EQUAL (LIST 'NOT EXP) (CAR LIST)) (LISTP (CDR LIST))) (EVAL (LIST 'OR (CAR LIST) (MAKE-DISJUNCT (CDR LIST))) ALIST)), which again simplifies, applying CAR-CONS, CDR-CONS, and OR-EVAL, and expanding the function EQUAL, to: T. Case 1.2. (IMPLIES (AND (LISTP LIST) (NOT (EQUAL EXP (CAR LIST))) (EVAL (MAKE-DISJUNCT (CDR LIST)) ALIST) (MEMBER EXP (CDR LIST)) (MEMBER (LIST 'NOT EXP) (CDR LIST)) (NOT (LISTP (CDR LIST)))) (EVAL (CAR LIST) ALIST)). This further simplifies, rewriting with NLISTP-EVAL, and opening up MAKE-DISJUNCT, to: T. Case 1.1. (IMPLIES (AND (LISTP LIST) (NOT (EQUAL EXP (CAR LIST))) (EVAL (MAKE-DISJUNCT (CDR LIST)) ALIST) (MEMBER EXP (CDR LIST)) (MEMBER (LIST 'NOT EXP) (CDR LIST)) (LISTP (CDR LIST))) (EVAL (LIST 'OR (CAR LIST) (MAKE-DISJUNCT (CDR LIST))) ALIST)). This again simplifies, applying CAR-CONS, CDR-CONS, and OR-EVAL, and opening up the function EQUAL, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.3 0.0 ] EVAL-NEG-ELEM-FORM (PROVE-LEMMA EVAL-MAKE-DISJUNCT (REWRITE) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND LIST1 LIST2)) ALIST) (OR (EVAL (MAKE-DISJUNCT LIST1) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST)))) This simplifies, opening up the function OR, to two new goals: Case 2. (IMPLIES (NOT (EVAL (MAKE-DISJUNCT LIST1) ALIST)) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND LIST1 LIST2)) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST))), which we will name *1. Case 1. (IMPLIES (EVAL (MAKE-DISJUNCT LIST1) ALIST) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND LIST1 LIST2)) ALIST) T)). This again simplifies, trivially, to: (IMPLIES (EVAL (MAKE-DISJUNCT LIST1) ALIST) (EVAL (MAKE-DISJUNCT (APPEND LIST1 LIST2)) ALIST)), which we would normally push and work on later by induction. But if we must use induction to prove the input conjecture, we prefer to induct on the original formulation of the problem. Thus we will disregard all that we have previously done, give the name *1 to the original input, and work on it. So now let us return to: (EQUAL (EVAL (MAKE-DISJUNCT (APPEND LIST1 LIST2)) ALIST) (OR (EVAL (MAKE-DISJUNCT LIST1) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST))). We named this *1. We will try to prove it by induction. The recursive terms in the conjecture suggest three inductions. They merge into two likely candidate inductions. However, only one is unflawed. We will induct according to the following scheme: (AND (IMPLIES (AND (LISTP LIST1) (p (CDR LIST1) LIST2 ALIST)) (p LIST1 LIST2 ALIST)) (IMPLIES (NOT (LISTP LIST1)) (p LIST1 LIST2 ALIST))). Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT LIST1) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme leads to two new formulas: Case 2. (IMPLIES (AND (LISTP LIST1) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) (OR (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST)))) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND LIST1 LIST2)) ALIST) (OR (EVAL (MAKE-DISJUNCT LIST1) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST)))), which simplifies, applying CAR-CONS and CDR-CONS, and unfolding OR, APPEND, F-OR, and MAKE-DISJUNCT, to the following 16 new goals: Case 2.16. (IMPLIES (AND (LISTP LIST1) (NOT (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST)) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST)) (LISTP (CDR LIST1)) (NOT (EVAL (LIST 'OR (CAR LIST1) (MAKE-DISJUNCT (CDR LIST1))) ALIST)) (NOT (LISTP (APPEND (CDR LIST1) LIST2)))) (EQUAL (EVAL (CAR LIST1) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST))). But this again simplifies, applying the lemmas NLISTP-EVAL, CAR-CONS, CDR-CONS, and OR-EVAL, and expanding MAKE-DISJUNCT and EQUAL, to: T. Case 2.15. (IMPLIES (AND (LISTP LIST1) (NOT (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST)) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST)) (NOT (LISTP (CDR LIST1))) (NOT (EVAL (CAR LIST1) ALIST)) (NOT (LISTP (APPEND (CDR LIST1) LIST2)))) (EQUAL (EVAL (CAR LIST1) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST))), which again simplifies, applying NLISTP-EVAL, and expanding the functions MAKE-DISJUNCT and EQUAL, to: T. Case 2.14. (IMPLIES (AND (LISTP LIST1) (NOT (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST)) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST)) (LISTP (CDR LIST1)) (NOT (EVAL (LIST 'OR (CAR LIST1) (MAKE-DISJUNCT (CDR LIST1))) ALIST)) (LISTP (APPEND (CDR LIST1) LIST2))) (EQUAL (EVAL (LIST 'OR (CAR LIST1) (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2))) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST))). This again simplifies, applying CAR-CONS, CDR-CONS, and OR-EVAL, and expanding the function EQUAL, to: T. Case 2.13. (IMPLIES (AND (LISTP LIST1) (NOT (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST)) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST)) (NOT (LISTP (CDR LIST1))) (NOT (EVAL (CAR LIST1) ALIST)) (LISTP (APPEND (CDR LIST1) LIST2))) (EQUAL (EVAL (LIST 'OR (CAR LIST1) (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2))) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST))). But this again simplifies, applying CAR-CONS, CDR-CONS, and OR-EVAL, and opening up the definition of EQUAL, to: T. Case 2.12. (IMPLIES (AND (LISTP LIST1) (NOT (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST)) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST)) (LISTP (CDR LIST1)) (EVAL (LIST 'OR (CAR LIST1) (MAKE-DISJUNCT (CDR LIST1))) ALIST) (NOT (LISTP (APPEND (CDR LIST1) LIST2)))) (EQUAL (EVAL (CAR LIST1) ALIST) T)). This again simplifies, appealing to the lemmas NLISTP-EVAL, CAR-CONS, CDR-CONS, and OR-EVAL, and unfolding the definitions of MAKE-DISJUNCT and EQUAL, to: T. Case 2.11. (IMPLIES (AND (LISTP LIST1) (NOT (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST)) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST)) (NOT (LISTP (CDR LIST1))) (EVAL (CAR LIST1) ALIST) (NOT (LISTP (APPEND (CDR LIST1) LIST2)))) (EQUAL (EVAL (CAR LIST1) ALIST) T)), which again simplifies, clearly, to: T. Case 2.10. (IMPLIES (AND (LISTP LIST1) (NOT (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST)) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST)) (LISTP (CDR LIST1)) (EVAL (LIST 'OR (CAR LIST1) (MAKE-DISJUNCT (CDR LIST1))) ALIST) (LISTP (APPEND (CDR LIST1) LIST2))) (EQUAL (EVAL (LIST 'OR (CAR LIST1) (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2))) ALIST) T)). But this again simplifies, applying CAR-CONS, CDR-CONS, and OR-EVAL, and unfolding the function EQUAL, to: T. Case 2.9. (IMPLIES (AND (LISTP LIST1) (NOT (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST)) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST)) (NOT (LISTP (CDR LIST1))) (EVAL (CAR LIST1) ALIST) (LISTP (APPEND (CDR LIST1) LIST2))) (EQUAL (EVAL (LIST 'OR (CAR LIST1) (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2))) ALIST) T)). However this again simplifies, rewriting with the lemmas CAR-CONS, CDR-CONS, and OR-EVAL, and opening up the definition of EQUAL, to: T. Case 2.8. (IMPLIES (AND (LISTP LIST1) (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) T) (LISTP (CDR LIST1)) (NOT (EVAL (LIST 'OR (CAR LIST1) (MAKE-DISJUNCT (CDR LIST1))) ALIST)) (NOT (LISTP (APPEND (CDR LIST1) LIST2)))) (EQUAL (EVAL (CAR LIST1) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST))), which again simplifies, rewriting with NLISTP-EVAL, and unfolding the definitions of MAKE-DISJUNCT and EQUAL, to: T. Case 2.7. (IMPLIES (AND (LISTP LIST1) (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) T) (NOT (LISTP (CDR LIST1))) (NOT (EVAL (CAR LIST1) ALIST)) (NOT (LISTP (APPEND (CDR LIST1) LIST2)))) (EQUAL (EVAL (CAR LIST1) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST))). But this again simplifies, applying the lemma NLISTP-EVAL, and opening up the definitions of MAKE-DISJUNCT and EQUAL, to: T. Case 2.6. (IMPLIES (AND (LISTP LIST1) (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) T) (LISTP (CDR LIST1)) (NOT (EVAL (LIST 'OR (CAR LIST1) (MAKE-DISJUNCT (CDR LIST1))) ALIST)) (LISTP (APPEND (CDR LIST1) LIST2))) (EQUAL (EVAL (LIST 'OR (CAR LIST1) (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2))) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST))), which again simplifies, rewriting with CAR-CONS, CDR-CONS, and OR-EVAL, and unfolding the definition of EQUAL, to: T. Case 2.5. (IMPLIES (AND (LISTP LIST1) (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) T) (NOT (LISTP (CDR LIST1))) (NOT (EVAL (CAR LIST1) ALIST)) (LISTP (APPEND (CDR LIST1) LIST2))) (EQUAL (EVAL (LIST 'OR (CAR LIST1) (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2))) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST))). This again simplifies, rewriting with the lemmas CAR-CONS, CDR-CONS, and OR-EVAL, and unfolding the definition of EQUAL, to the goal: (IMPLIES (AND (LISTP LIST1) (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST) (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) (NOT (LISTP (CDR LIST1))) (NOT (EVAL (CAR LIST1) ALIST)) (LISTP (APPEND (CDR LIST1) LIST2))) (EVAL (MAKE-DISJUNCT LIST2) ALIST)). This further simplifies, applying NLISTP-EVAL, and expanding MAKE-DISJUNCT, to: T. Case 2.4. (IMPLIES (AND (LISTP LIST1) (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) T) (LISTP (CDR LIST1)) (EVAL (LIST 'OR (CAR LIST1) (MAKE-DISJUNCT (CDR LIST1))) ALIST) (NOT (LISTP (APPEND (CDR LIST1) LIST2)))) (EQUAL (EVAL (CAR LIST1) ALIST) T)). This again simplifies, rewriting with NLISTP-EVAL, and unfolding MAKE-DISJUNCT and EQUAL, to: T. Case 2.3. (IMPLIES (AND (LISTP LIST1) (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) T) (NOT (LISTP (CDR LIST1))) (EVAL (CAR LIST1) ALIST) (NOT (LISTP (APPEND (CDR LIST1) LIST2)))) (EQUAL (EVAL (CAR LIST1) ALIST) T)). This again simplifies, trivially, to: T. Case 2.2. (IMPLIES (AND (LISTP LIST1) (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) T) (LISTP (CDR LIST1)) (EVAL (LIST 'OR (CAR LIST1) (MAKE-DISJUNCT (CDR LIST1))) ALIST) (LISTP (APPEND (CDR LIST1) LIST2))) (EQUAL (EVAL (LIST 'OR (CAR LIST1) (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2))) ALIST) T)). This again simplifies, applying CAR-CONS, CDR-CONS, and OR-EVAL, and expanding the definition of EQUAL, to: T. Case 2.1. (IMPLIES (AND (LISTP LIST1) (EVAL (MAKE-DISJUNCT (CDR LIST1)) ALIST) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2)) ALIST) T) (NOT (LISTP (CDR LIST1))) (EVAL (CAR LIST1) ALIST) (LISTP (APPEND (CDR LIST1) LIST2))) (EQUAL (EVAL (LIST 'OR (CAR LIST1) (MAKE-DISJUNCT (APPEND (CDR LIST1) LIST2))) ALIST) T)). This again simplifies, rewriting with CAR-CONS, CDR-CONS, and OR-EVAL, and unfolding the function EQUAL, to: T. Case 1. (IMPLIES (NOT (LISTP LIST1)) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND LIST1 LIST2)) ALIST) (OR (EVAL (MAKE-DISJUNCT LIST1) ALIST) (EVAL (MAKE-DISJUNCT LIST2) ALIST)))). This simplifies, rewriting with NLISTP-EVAL, and expanding APPEND, MAKE-DISJUNCT, and OR, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 2.0 0.1 ] EVAL-MAKE-DISJUNCT (PROVE-LEMMA NEG-LIST-EVAL (REWRITE) (IMPLIES (AND (LISTP FLIST1) (NEG-LIST (CAR FLIST1) FLIST2) (EQUAL CONCL (MAKE-DISJUNCT (APPEND FLIST1 FLIST2)))) (EVAL CONCL ALIST))) WARNING: Note that NEG-LIST-EVAL contains the free variables FLIST2 and FLIST1 which will be chosen by instantiating the hypotheses (LISTP FLIST1) and: (NEG-LIST (CAR FLIST1) FLIST2). This conjecture simplifies, applying NEG-LIST-REDUC and EVAL-MAKE-DISJUNCT, and opening up the definition of F-NOT, to two new formulas: Case 2. (IMPLIES (AND (LISTP FLIST1) (MEMBER (LIST 'NOT (CAR FLIST1)) FLIST2) (NOT (EVAL (MAKE-DISJUNCT FLIST1) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). Applying the lemma CAR-CDR-ELIM, replace FLIST1 by (CONS X Z) to eliminate (CAR FLIST1) and (CDR FLIST1). We would thus like to prove the new conjecture: (IMPLIES (AND (MEMBER (LIST 'NOT X) FLIST2) (NOT (EVAL (MAKE-DISJUNCT (CONS X Z)) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)), which further simplifies, rewriting with CAR-CONS, CDR-CONS, NOT-EVAL, and MEMBER-EVAL, and unfolding F-OR, MAKE-DISJUNCT, and EQUAL, to: (IMPLIES (AND (MEMBER (LIST 'NOT X) FLIST2) (LISTP Z) (NOT (EVAL (LIST 'OR X (MAKE-DISJUNCT Z)) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)), which again simplifies, rewriting with the lemmas CAR-CONS, CDR-CONS, OR-EVAL, NOT-EVAL, and MEMBER-EVAL, and opening up the definition of EQUAL, to: T. Case 1. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (CADAR FLIST1))) (MEMBER (CADAR FLIST1) FLIST2) (NOT (EVAL (MAKE-DISJUNCT FLIST1) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). Applying the lemma CAR-CDR-ELIM, replace FLIST1 by (CONS X Z) to eliminate (CAR FLIST1) and (CDR FLIST1), X by (CONS W V) to eliminate (CDR X) and (CAR X), and V by (CONS X D) to eliminate (CAR V) and (CDR V). We thus obtain the following three new formulas: Case 1.3. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'NOT (CADR X))) (MEMBER (CADR X) FLIST2) (NOT (EVAL (MAKE-DISJUNCT (CONS X Z)) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This further simplifies, clearly, to: T. Case 1.2. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'NOT (CAR V))) (MEMBER (CAR V) FLIST2) (NOT (EVAL (MAKE-DISJUNCT (CONS (CONS W V) Z)) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). However this further simplifies, rewriting with CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding CONS and CAR, to: T. Case 1.1. (IMPLIES (AND (EQUAL (CONS W (CONS X D)) (LIST 'NOT X)) (MEMBER X FLIST2) (NOT (EVAL (MAKE-DISJUNCT (CONS (CONS W (CONS X D)) Z)) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). However this further simplifies, applying CAR-CONS, CDR-CONS, and CONS-EQUAL, and opening up the definitions of F-OR and MAKE-DISJUNCT, to the following two new goals: Case 1.1.2. (IMPLIES (AND (EQUAL W 'NOT) (EQUAL D NIL) (MEMBER X FLIST2) (NOT (LISTP Z)) (NOT (EVAL (LIST 'NOT X) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This again simplifies, appealing to the lemmas CAR-CONS, CDR-CONS, NOT-EVAL, and MEMBER-EVAL, and unfolding the definition of EQUAL, to: T. Case 1.1.1. (IMPLIES (AND (EQUAL W 'NOT) (EQUAL D NIL) (MEMBER X FLIST2) (LISTP Z) (NOT (EVAL (LIST 'OR (LIST 'NOT X) (MAKE-DISJUNCT Z)) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)), which again simplifies, rewriting with CAR-CONS, CDR-CONS, NOT-EVAL, OR-EVAL, and MEMBER-EVAL, and opening up EQUAL, to: T. Q.E.D. [ 0.0 0.9 0.0 ] NEG-LIST-EVAL (PROVE-LEMMA EVAL-PROP-ATOMP (REWRITE) (IMPLIES (AND (LISTP FLIST1) (EVAL (MAKE-DISJUNCT (APPEND (CDR FLIST1) (CONS (CAR FLIST1) FLIST2))) ALIST)) (EVAL (MAKE-DISJUNCT (APPEND FLIST1 FLIST2)) ALIST)) ((INDUCT (APPEND FLIST FLIST2)))) This conjecture can be simplified, using the abbreviations EVAL-MAKE-DISJUNCT, AND, IMPLIES, and OR, to the formula: (IMPLIES (AND (NOT (LISTP FLIST)) (LISTP FLIST1) (EVAL (MAKE-DISJUNCT (APPEND (CDR FLIST1) (CONS (CAR FLIST1) FLIST2))) ALIST) (NOT (EVAL (MAKE-DISJUNCT FLIST1) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This simplifies, applying CAR-CONS, CDR-CONS, EVAL-MAKE-DISJUNCT, and NLISTP-EVAL, and opening up the functions F-OR and MAKE-DISJUNCT, to five new conjectures: Case 5. (IMPLIES (AND (NOT (LISTP FLIST)) (LISTP FLIST1) (EVAL (MAKE-DISJUNCT (CDR FLIST1)) ALIST) (NOT (LISTP (CDR FLIST1))) (NOT (EVAL (CAR FLIST1) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)), which again simplifies, rewriting with NLISTP-EVAL, and opening up MAKE-DISJUNCT, to: T. Case 4. (IMPLIES (AND (NOT (LISTP FLIST)) (LISTP FLIST1) (EVAL (MAKE-DISJUNCT (CDR FLIST1)) ALIST) (LISTP (CDR FLIST1)) (NOT (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT (CDR FLIST1))) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). But this again simplifies, rewriting with CAR-CONS, CDR-CONS, and OR-EVAL, and opening up the function EQUAL, to: T. Case 3. (IMPLIES (AND (NOT (LISTP FLIST)) (LISTP FLIST1) (NOT (LISTP FLIST2)) (EVAL (CAR FLIST1) ALIST) (LISTP (CDR FLIST1))) (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT (CDR FLIST1))) ALIST)). However this again simplifies, rewriting with the lemmas CAR-CONS, CDR-CONS, and OR-EVAL, and expanding the function EQUAL, to: T. Case 2. (IMPLIES (AND (NOT (LISTP FLIST)) (LISTP FLIST1) (LISTP FLIST2) (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST) (NOT (LISTP (CDR FLIST1))) (NOT (EVAL (CAR FLIST1) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)), which again simplifies, applying CAR-CONS, CDR-CONS, and OR-EVAL, and opening up the definition of EQUAL, to: T. Case 1. (IMPLIES (AND (NOT (LISTP FLIST)) (LISTP FLIST1) (LISTP FLIST2) (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST) (LISTP (CDR FLIST1)) (NOT (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT (CDR FLIST1))) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). But this again simplifies, rewriting with CAR-CONS, CDR-CONS, and OR-EVAL, and unfolding the definition of EQUAL, to: T. Q.E.D. [ 0.0 0.5 0.0 ] EVAL-PROP-ATOMP (TOGGLE G1253 EVAL T) [ 0.0 0.0 0.0 ] G1253 (PROVE-LEMMA EVAL-OR-TYPE (REWRITE) (IMPLIES (AND (LISTP FLIST1) (OR-TYPE (CAR FLIST1))) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND FLIST1 FLIST2)) ALIST) (EVAL (MAKE-DISJUNCT (APPEND (CONS (CADAR FLIST1) (CONS (CADDAR FLIST1) (CDR FLIST1))) FLIST2)) ALIST)))) WARNING: the previously added lemma, EVAL-MAKE-DISJUNCT, could be applied whenever the newly proposed EVAL-OR-TYPE could! This formula simplifies, applying CAR-CONS, CDR-CONS, and OR-EVAL, and unfolding the definitions of F-OR, OR-TYPE, APPEND, MAKE-DISJUNCT, and EQUAL, to four new conjectures: Case 4. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'OR (CADAR FLIST1) (CADDAR FLIST1))) (NOT (EVAL (CADAR FLIST1) ALIST)) (LISTP (APPEND (CDR FLIST1) FLIST2))) (EQUAL (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT (APPEND (CDR FLIST1) FLIST2))) ALIST) (EVAL (LIST 'OR (CADDAR FLIST1) (MAKE-DISJUNCT (APPEND (CDR FLIST1) FLIST2))) ALIST))), which again simplifies, applying the lemmas CAR-CONS, CDR-CONS, EVAL-MAKE-DISJUNCT, and OR-EVAL, and opening up the definition of EQUAL, to two new formulas: Case 4.2. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'OR (CADAR FLIST1) (CADDAR FLIST1))) (NOT (EVAL (CADAR FLIST1) ALIST)) (LISTP (APPEND (CDR FLIST1) FLIST2)) (NOT (EVAL (CADDAR FLIST1) ALIST)) (NOT (EVAL (MAKE-DISJUNCT (CDR FLIST1)) ALIST)) (EVAL (CAR FLIST1) ALIST)) (EQUAL T (EVAL (MAKE-DISJUNCT FLIST2) ALIST))), which again simplifies, obviously, to: (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'OR (CADAR FLIST1) (CADDAR FLIST1))) (NOT (EVAL (CADAR FLIST1) ALIST)) (LISTP (APPEND (CDR FLIST1) FLIST2)) (NOT (EVAL (CADDAR FLIST1) ALIST)) (NOT (EVAL (MAKE-DISJUNCT (CDR FLIST1)) ALIST)) (EVAL (CAR FLIST1) ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). Applying the lemma CAR-CDR-ELIM, replace FLIST1 by (CONS X Z) to eliminate (CAR FLIST1) and (CDR FLIST1), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), and D by (CONS V C) to eliminate (CAR D) and (CDR D). We thus obtain the following four new conjectures: Case 4.2.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'OR (CADR X) (CADDR X))) (NOT (EVAL (CADR X) ALIST)) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CADDR X) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (EVAL X ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This further simplifies, clearly, to: T. Case 4.2.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'OR (CAR V) (CADR V))) (NOT (EVAL (CAR V) ALIST)) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CADR V) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (EVAL (CONS W V) ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). However this further simplifies, appealing to the lemmas CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the definitions of CAR and CONS, to: T. Case 4.2.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL (CONS W (CONS X D)) (LIST 'OR X (CAR D))) (NOT (EVAL X ALIST)) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CAR D) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (EVAL (CONS W (CONS X D)) ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)), which further simplifies, rewriting with CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding the function CONS, to: T. Case 4.2.1. (IMPLIES (AND (EQUAL (CONS W (CONS X (CONS V C))) (LIST 'OR X V)) (NOT (EVAL X ALIST)) (LISTP (APPEND Z FLIST2)) (NOT (EVAL V ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (EVAL (CONS W (CONS X (CONS V C))) ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). However this further simplifies, rewriting with the lemmas CAR-CONS, CDR-CONS, CONS-EQUAL, and OR-EVAL, and expanding the definition of EQUAL, to: T. Case 4.1. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'OR (CADAR FLIST1) (CADDAR FLIST1))) (NOT (EVAL (CADAR FLIST1) ALIST)) (LISTP (APPEND (CDR FLIST1) FLIST2)) (EVAL (CADDAR FLIST1) ALIST) (NOT (EVAL (CAR FLIST1) ALIST)) (NOT (EVAL (MAKE-DISJUNCT (CDR FLIST1)) ALIST))) (EQUAL (EVAL (MAKE-DISJUNCT FLIST2) ALIST) T)), which again simplifies, obviously, to: (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'OR (CADAR FLIST1) (CADDAR FLIST1))) (NOT (EVAL (CADAR FLIST1) ALIST)) (LISTP (APPEND (CDR FLIST1) FLIST2)) (EVAL (CADDAR FLIST1) ALIST) (NOT (EVAL (CAR FLIST1) ALIST)) (NOT (EVAL (MAKE-DISJUNCT (CDR FLIST1)) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). Applying the lemma CAR-CDR-ELIM, replace FLIST1 by (CONS X Z) to eliminate (CAR FLIST1) and (CDR FLIST1), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), and D by (CONS V C) to eliminate (CAR D) and (CDR D). We would thus like to prove the following four new goals: Case 4.1.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'OR (CADR X) (CADDR X))) (NOT (EVAL (CADR X) ALIST)) (LISTP (APPEND Z FLIST2)) (EVAL (CADDR X) ALIST) (NOT (EVAL X ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This further simplifies, trivially, to: T. Case 4.1.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'OR (CAR V) (CADR V))) (NOT (EVAL (CAR V) ALIST)) (LISTP (APPEND Z FLIST2)) (EVAL (CADR V) ALIST) (NOT (EVAL (CONS W V) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This further simplifies, rewriting with CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the definitions of CAR and CONS, to: T. Case 4.1.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL (CONS W (CONS X D)) (LIST 'OR X (CAR D))) (NOT (EVAL X ALIST)) (LISTP (APPEND Z FLIST2)) (EVAL (CAR D) ALIST) (NOT (EVAL (CONS W (CONS X D)) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This further simplifies, applying CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and expanding the function CONS, to: T. Case 4.1.1. (IMPLIES (AND (EQUAL (CONS W (CONS X (CONS V C))) (LIST 'OR X V)) (NOT (EVAL X ALIST)) (LISTP (APPEND Z FLIST2)) (EVAL V ALIST) (NOT (EVAL (CONS W (CONS X (CONS V C))) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This further simplifies, applying CAR-CONS, CDR-CONS, CONS-EQUAL, and OR-EVAL, and unfolding the definition of EQUAL, to: T. Case 3. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'OR (CADAR FLIST1) (CADDAR FLIST1))) (NOT (EVAL (CADAR FLIST1) ALIST)) (NOT (LISTP (APPEND (CDR FLIST1) FLIST2)))) (EQUAL (EVAL (CAR FLIST1) ALIST) (EVAL (CADDAR FLIST1) ALIST))). Appealing to the lemma CAR-CDR-ELIM, we now replace FLIST1 by (CONS X Z) to eliminate (CAR FLIST1) and (CDR FLIST1), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), and D by (CONS V C) to eliminate (CAR D) and (CDR D). This generates four new formulas: Case 3.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'OR (CADR X) (CADDR X))) (NOT (EVAL (CADR X) ALIST)) (NOT (LISTP (APPEND Z FLIST2)))) (EQUAL (EVAL X ALIST) (EVAL (CADDR X) ALIST))), which further simplifies, clearly, to: T. Case 3.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'OR (CAR V) (CADR V))) (NOT (EVAL (CAR V) ALIST)) (NOT (LISTP (APPEND Z FLIST2)))) (EQUAL (EVAL (CONS W V) ALIST) (EVAL (CADR V) ALIST))). This further simplifies, applying CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding CAR and CONS, to: T. Case 3.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL (CONS W (CONS X D)) (LIST 'OR X (CAR D))) (NOT (EVAL X ALIST)) (NOT (LISTP (APPEND Z FLIST2)))) (EQUAL (EVAL (CONS W (CONS X D)) ALIST) (EVAL (CAR D) ALIST))). However this further simplifies, applying CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding CONS, to: T. Case 3.1. (IMPLIES (AND (EQUAL (CONS W (CONS X (CONS V C))) (LIST 'OR X V)) (NOT (EVAL X ALIST)) (NOT (LISTP (APPEND Z FLIST2)))) (EQUAL (EVAL (CONS W (CONS X (CONS V C))) ALIST) (EVAL V ALIST))). This further simplifies, rewriting with the lemmas CAR-CONS, CDR-CONS, CONS-EQUAL, and OR-EVAL, and opening up the function EQUAL, to: T. Case 2. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'OR (CADAR FLIST1) (CADDAR FLIST1))) (EVAL (CADAR FLIST1) ALIST) (NOT (LISTP (APPEND (CDR FLIST1) FLIST2)))) (EQUAL (EVAL (CAR FLIST1) ALIST) T)), which again simplifies, clearly, to the new goal: (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'OR (CADAR FLIST1) (CADDAR FLIST1))) (EVAL (CADAR FLIST1) ALIST) (NOT (LISTP (APPEND (CDR FLIST1) FLIST2)))) (EVAL (CAR FLIST1) ALIST)). Applying the lemma CAR-CDR-ELIM, replace FLIST1 by (CONS X Z) to eliminate (CAR FLIST1) and (CDR FLIST1), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), and D by (CONS V C) to eliminate (CAR D) and (CDR D). We thus obtain the following four new goals: Case 2.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'OR (CADR X) (CADDR X))) (EVAL (CADR X) ALIST) (NOT (LISTP (APPEND Z FLIST2)))) (EVAL X ALIST)). This further simplifies, trivially, to: T. Case 2.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'OR (CAR V) (CADR V))) (EVAL (CAR V) ALIST) (NOT (LISTP (APPEND Z FLIST2)))) (EVAL (CONS W V) ALIST)). However this further simplifies, applying CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the functions CAR and CONS, to: T. Case 2.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL (CONS W (CONS X D)) (LIST 'OR X (CAR D))) (EVAL X ALIST) (NOT (LISTP (APPEND Z FLIST2)))) (EVAL (CONS W (CONS X D)) ALIST)). This further simplifies, applying CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and opening up the function CONS, to: T. Case 2.1. (IMPLIES (AND (EQUAL (CONS W (CONS X (CONS V C))) (LIST 'OR X V)) (EVAL X ALIST) (NOT (LISTP (APPEND Z FLIST2)))) (EVAL (CONS W (CONS X (CONS V C))) ALIST)). However this further simplifies, rewriting with the lemmas CAR-CONS, CDR-CONS, CONS-EQUAL, and OR-EVAL, and opening up EQUAL, to: T. Case 1. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'OR (CADAR FLIST1) (CADDAR FLIST1))) (EVAL (CADAR FLIST1) ALIST) (LISTP (APPEND (CDR FLIST1) FLIST2))) (EQUAL (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT (APPEND (CDR FLIST1) FLIST2))) ALIST) T)), which again simplifies, rewriting with the lemmas CAR-CONS, CDR-CONS, EVAL-MAKE-DISJUNCT, and OR-EVAL, and expanding EQUAL, to the conjecture: (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'OR (CADAR FLIST1) (CADDAR FLIST1))) (EVAL (CADAR FLIST1) ALIST) (LISTP (APPEND (CDR FLIST1) FLIST2)) (NOT (EVAL (CAR FLIST1) ALIST)) (NOT (EVAL (MAKE-DISJUNCT (CDR FLIST1)) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). Appealing to the lemma CAR-CDR-ELIM, we now replace FLIST1 by (CONS X Z) to eliminate (CAR FLIST1) and (CDR FLIST1), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), and D by (CONS V C) to eliminate (CAR D) and (CDR D). This generates four new goals: Case 1.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'OR (CADR X) (CADDR X))) (EVAL (CADR X) ALIST) (LISTP (APPEND Z FLIST2)) (NOT (EVAL X ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)), which further simplifies, obviously, to: T. Case 1.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'OR (CAR V) (CADR V))) (EVAL (CAR V) ALIST) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CONS W V) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This further simplifies, applying the lemmas CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the functions CAR and CONS, to: T. Case 1.2. (IMPLIES (AND (NOT (LISTP D)) (EQUAL (CONS W (CONS X D)) (LIST 'OR X (CAR D))) (EVAL X ALIST) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CONS W (CONS X D)) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)), which further simplifies, applying CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding the function CONS, to: T. Case 1.1. (IMPLIES (AND (EQUAL (CONS W (CONS X (CONS V C))) (LIST 'OR X V)) (EVAL X ALIST) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CONS W (CONS X (CONS V C))) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). But this further simplifies, rewriting with CAR-CONS, CDR-CONS, CONS-EQUAL, and OR-EVAL, and expanding the function EQUAL, to: T. Q.E.D. [ 0.0 0.3 0.2 ] EVAL-OR-TYPE (PROVE-LEMMA EVAL-NOR-TYPE (REWRITE) (IMPLIES (AND (LISTP FLIST1) (NOR-TYPE (CAR FLIST1))) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND FLIST1 FLIST2)) ALIST) (AND (EVAL (MAKE-DISJUNCT (APPEND (CONS (F-NOT (CADADAR FLIST1)) (CDR FLIST1)) FLIST2)) ALIST) (EVAL (MAKE-DISJUNCT (APPEND (CONS (F-NOT (CADDADAR FLIST1)) (CDR FLIST1)) FLIST2)) ALIST))))) WARNING: the previously added lemma, EVAL-MAKE-DISJUNCT, could be applied whenever the newly proposed EVAL-NOR-TYPE could! This conjecture can be simplified, using the abbreviations AND, IMPLIES, and F-NOT, to: (IMPLIES (AND (LISTP FLIST1) (NOR-TYPE (CAR FLIST1))) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND FLIST1 FLIST2)) ALIST) (AND (EVAL (MAKE-DISJUNCT (APPEND (CONS (LIST 'NOT (CADADAR FLIST1)) (CDR FLIST1)) FLIST2)) ALIST) (EVAL (MAKE-DISJUNCT (APPEND (CONS (LIST 'NOT (CADDADAR FLIST1)) (CDR FLIST1)) FLIST2)) ALIST)))). This simplifies, rewriting with CAR-CONS and CDR-CONS, and opening up the definitions of F-NOT, F-OR, NOR-TYPE, APPEND, MAKE-DISJUNCT, and AND, to four new formulas: Case 4. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'OR (CADADAR FLIST1) (CADDADAR FLIST1)))) (LISTP (APPEND (CDR FLIST1) FLIST2)) (NOT (EVAL (LIST 'OR (LIST 'NOT (CADADAR FLIST1)) (MAKE-DISJUNCT (APPEND (CDR FLIST1) FLIST2))) ALIST))) (EQUAL (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT (APPEND (CDR FLIST1) FLIST2))) ALIST) F)), which again simplifies, appealing to the lemmas CAR-CONS, CDR-CONS, NOT-EVAL, EVAL-MAKE-DISJUNCT, and OR-EVAL, and unfolding EQUAL, to the goal: (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'OR (CADADAR FLIST1) (CADDADAR FLIST1)))) (LISTP (APPEND (CDR FLIST1) FLIST2)) (EVAL (CADADAR FLIST1) ALIST) (NOT (EVAL (MAKE-DISJUNCT (CDR FLIST1)) ALIST)) (NOT (EVAL (MAKE-DISJUNCT FLIST2) ALIST))) (NOT (EVAL (CAR FLIST1) ALIST))). Appealing to the lemma CAR-CDR-ELIM, we now replace FLIST1 by (CONS X Z) to eliminate (CAR FLIST1) and (CDR FLIST1), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), X by (CONS C V) to eliminate (CDR X) and (CAR X), V by (CONS X X1) to eliminate (CAR V) and (CDR V), and X1 by (CONS V Z1) to eliminate (CAR X1) and (CDR X1). We must thus prove six new goals: Case 4.6. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'NOT (LIST 'OR (CADADR X) (CADDADR X)))) (LISTP (APPEND Z FLIST2)) (EVAL (CADADR X) ALIST) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (NOT (EVAL (MAKE-DISJUNCT FLIST2) ALIST))) (NOT (EVAL X ALIST))), which further simplifies, clearly, to: T. Case 4.5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'NOT (LIST 'OR (CADAR V) (CADDAR V)))) (LISTP (APPEND Z FLIST2)) (EVAL (CADAR V) ALIST) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (NOT (EVAL (MAKE-DISJUNCT FLIST2) ALIST))) (NOT (EVAL (CONS W V) ALIST))). But this further simplifies, rewriting with CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding CDR, CAR, and CONS, to: T. Case 4.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS W (CONS X D)) (LIST 'NOT (LIST 'OR (CADR X) (CADDR X)))) (LISTP (APPEND Z FLIST2)) (EVAL (CADR X) ALIST) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (NOT (EVAL (MAKE-DISJUNCT FLIST2) ALIST))) (NOT (EVAL (CONS W (CONS X D)) ALIST))). However this further simplifies, applying CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up CAR, CDR, and CONS, to: T. Case 4.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W (CONS (CONS C V) D)) (LIST 'NOT (LIST 'OR (CAR V) (CADR V)))) (LISTP (APPEND Z FLIST2)) (EVAL (CAR V) ALIST) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (NOT (EVAL (MAKE-DISJUNCT FLIST2) ALIST))) (NOT (EVAL (CONS W (CONS (CONS C V) D)) ALIST))). However this further simplifies, applying CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up the functions CAR and CONS, to: T. Case 4.2. (IMPLIES (AND (NOT (LISTP X1)) (EQUAL (CONS W (CONS (CONS C (CONS X X1)) D)) (LIST 'NOT (LIST 'OR X (CAR X1)))) (LISTP (APPEND Z FLIST2)) (EVAL X ALIST) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (NOT (EVAL (MAKE-DISJUNCT FLIST2) ALIST))) (NOT (EVAL (CONS W (CONS (CONS C (CONS X X1)) D)) ALIST))). This further simplifies, rewriting with the lemmas CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and opening up the definition of CONS, to: T. Case 4.1. (IMPLIES (AND (EQUAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) (LIST 'NOT (LIST 'OR X V))) (LISTP (APPEND Z FLIST2)) (EVAL X ALIST) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (NOT (EVAL (MAKE-DISJUNCT FLIST2) ALIST))) (NOT (EVAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) ALIST))), which further simplifies, applying CAR-CONS, CDR-CONS, CONS-EQUAL, OR-EVAL, and NOT-EVAL, and unfolding the function EQUAL, to: T. Case 3. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'OR (CADADAR FLIST1) (CADDADAR FLIST1)))) (LISTP (APPEND (CDR FLIST1) FLIST2)) (EVAL (LIST 'OR (LIST 'NOT (CADADAR FLIST1)) (MAKE-DISJUNCT (APPEND (CDR FLIST1) FLIST2))) ALIST)) (EQUAL (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT (APPEND (CDR FLIST1) FLIST2))) ALIST) (EVAL (LIST 'OR (LIST 'NOT (CADDADAR FLIST1)) (MAKE-DISJUNCT (APPEND (CDR FLIST1) FLIST2))) ALIST))). However this again simplifies, applying CAR-CONS, CDR-CONS, NOT-EVAL, EVAL-MAKE-DISJUNCT, and OR-EVAL, and unfolding the function EQUAL, to the following two new conjectures: Case 3.2. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'OR (CADADAR FLIST1) (CADDADAR FLIST1)))) (LISTP (APPEND (CDR FLIST1) FLIST2)) (NOT (EVAL (CADADAR FLIST1) ALIST)) (NOT (EVAL (CADDADAR FLIST1) ALIST)) (NOT (EVAL (CAR FLIST1) ALIST)) (NOT (EVAL (MAKE-DISJUNCT (CDR FLIST1)) ALIST))) (EQUAL (EVAL (MAKE-DISJUNCT FLIST2) ALIST) T)). This again simplifies, trivially, to: (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'OR (CADADAR FLIST1) (CADDADAR FLIST1)))) (LISTP (APPEND (CDR FLIST1) FLIST2)) (NOT (EVAL (CADADAR FLIST1) ALIST)) (NOT (EVAL (CADDADAR FLIST1) ALIST)) (NOT (EVAL (CAR FLIST1) ALIST)) (NOT (EVAL (MAKE-DISJUNCT (CDR FLIST1)) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). Applying the lemma CAR-CDR-ELIM, replace FLIST1 by (CONS X Z) to eliminate (CAR FLIST1) and (CDR FLIST1), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), X by (CONS C V) to eliminate (CDR X) and (CAR X), V by (CONS X X1) to eliminate (CAR V) and (CDR V), and X1 by (CONS V Z1) to eliminate (CAR X1) and (CDR X1). We would thus like to prove the following six new goals: Case 3.2.6. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'NOT (LIST 'OR (CADADR X) (CADDADR X)))) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CADADR X) ALIST)) (NOT (EVAL (CADDADR X) ALIST)) (NOT (EVAL X ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This further simplifies, trivially, to: T. Case 3.2.5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'NOT (LIST 'OR (CADAR V) (CADDAR V)))) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CADAR V) ALIST)) (NOT (EVAL (CADDAR V) ALIST)) (NOT (EVAL (CONS W V) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). But this further simplifies, rewriting with CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up CDR, CAR, and CONS, to: T. Case 3.2.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS W (CONS X D)) (LIST 'NOT (LIST 'OR (CADR X) (CADDR X)))) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CADR X) ALIST)) (NOT (EVAL (CADDR X) ALIST)) (NOT (EVAL (CONS W (CONS X D)) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This further simplifies, applying CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding CAR, CDR, and CONS, to: T. Case 3.2.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W (CONS (CONS C V) D)) (LIST 'NOT (LIST 'OR (CAR V) (CADR V)))) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CAR V) ALIST)) (NOT (EVAL (CADR V) ALIST)) (NOT (EVAL (CONS W (CONS (CONS C V) D)) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). But this further simplifies, applying CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the functions CAR and CONS, to: T. Case 3.2.2. (IMPLIES (AND (NOT (LISTP X1)) (EQUAL (CONS W (CONS (CONS C (CONS X X1)) D)) (LIST 'NOT (LIST 'OR X (CAR X1)))) (LISTP (APPEND Z FLIST2)) (NOT (EVAL X ALIST)) (NOT (EVAL (CAR X1) ALIST)) (NOT (EVAL (CONS W (CONS (CONS C (CONS X X1)) D)) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). However this further simplifies, rewriting with CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding CONS, to: T. Case 3.2.1. (IMPLIES (AND (EQUAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) (LIST 'NOT (LIST 'OR X V))) (LISTP (APPEND Z FLIST2)) (NOT (EVAL X ALIST)) (NOT (EVAL V ALIST)) (NOT (EVAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This further simplifies, rewriting with CAR-CONS, CDR-CONS, CONS-EQUAL, OR-EVAL, and NOT-EVAL, and opening up the function EQUAL, to: T. Case 3.1. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'OR (CADADAR FLIST1) (CADDADAR FLIST1)))) (LISTP (APPEND (CDR FLIST1) FLIST2)) (NOT (EVAL (CADADAR FLIST1) ALIST)) (EVAL (CADDADAR FLIST1) ALIST) (NOT (EVAL (MAKE-DISJUNCT (CDR FLIST1)) ALIST)) (EVAL (CAR FLIST1) ALIST)) (EQUAL T (EVAL (MAKE-DISJUNCT FLIST2) ALIST))). This again simplifies, trivially, to the new goal: (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'OR (CADADAR FLIST1) (CADDADAR FLIST1)))) (LISTP (APPEND (CDR FLIST1) FLIST2)) (NOT (EVAL (CADADAR FLIST1) ALIST)) (EVAL (CADDADAR FLIST1) ALIST) (NOT (EVAL (MAKE-DISJUNCT (CDR FLIST1)) ALIST)) (EVAL (CAR FLIST1) ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). Applying the lemma CAR-CDR-ELIM, replace FLIST1 by (CONS X Z) to eliminate (CAR FLIST1) and (CDR FLIST1), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), X by (CONS C V) to eliminate (CDR X) and (CAR X), V by (CONS X X1) to eliminate (CAR V) and (CDR V), and X1 by (CONS V Z1) to eliminate (CAR X1) and (CDR X1). We would thus like to prove the following six new formulas: Case 3.1.6. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'NOT (LIST 'OR (CADADR X) (CADDADR X)))) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CADADR X) ALIST)) (EVAL (CADDADR X) ALIST) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (EVAL X ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This further simplifies, clearly, to: T. Case 3.1.5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'NOT (LIST 'OR (CADAR V) (CADDAR V)))) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CADAR V) ALIST)) (EVAL (CADDAR V) ALIST) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (EVAL (CONS W V) ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). However this further simplifies, rewriting with CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up the functions CDR, CAR, and CONS, to: T. Case 3.1.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS W (CONS X D)) (LIST 'NOT (LIST 'OR (CADR X) (CADDR X)))) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CADR X) ALIST)) (EVAL (CADDR X) ALIST) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (EVAL (CONS W (CONS X D)) ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This further simplifies, appealing to the lemmas CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up the definitions of CAR, CDR, and CONS, to: T. Case 3.1.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W (CONS (CONS C V) D)) (LIST 'NOT (LIST 'OR (CAR V) (CADR V)))) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CAR V) ALIST)) (EVAL (CADR V) ALIST) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (EVAL (CONS W (CONS (CONS C V) D)) ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)), which further simplifies, applying the lemmas CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the definitions of CAR and CONS, to: T. Case 3.1.2. (IMPLIES (AND (NOT (LISTP X1)) (EQUAL (CONS W (CONS (CONS C (CONS X X1)) D)) (LIST 'NOT (LIST 'OR X (CAR X1)))) (LISTP (APPEND Z FLIST2)) (NOT (EVAL X ALIST)) (EVAL (CAR X1) ALIST) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (EVAL (CONS W (CONS (CONS C (CONS X X1)) D)) ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)), which further simplifies, rewriting with CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding the function CONS, to: T. Case 3.1.1. (IMPLIES (AND (EQUAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) (LIST 'NOT (LIST 'OR X V))) (LISTP (APPEND Z FLIST2)) (NOT (EVAL X ALIST)) (EVAL V ALIST) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (EVAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This further simplifies, applying the lemmas CAR-CONS, CDR-CONS, CONS-EQUAL, OR-EVAL, and NOT-EVAL, and opening up EQUAL, to: T. Case 2. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'OR (CADADAR FLIST1) (CADDADAR FLIST1)))) (NOT (LISTP (APPEND (CDR FLIST1) FLIST2))) (NOT (EVAL (LIST 'NOT (CADADAR FLIST1)) ALIST))) (EQUAL (EVAL (CAR FLIST1) ALIST) F)), which again simplifies, rewriting with the lemmas CAR-CONS, CDR-CONS, and NOT-EVAL, and expanding EQUAL, to: (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'OR (CADADAR FLIST1) (CADDADAR FLIST1)))) (NOT (LISTP (APPEND (CDR FLIST1) FLIST2))) (EVAL (CADADAR FLIST1) ALIST)) (NOT (EVAL (CAR FLIST1) ALIST))). Appealing to the lemma CAR-CDR-ELIM, we now replace FLIST1 by (CONS X Z) to eliminate (CAR FLIST1) and (CDR FLIST1), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), X by (CONS C V) to eliminate (CDR X) and (CAR X), V by (CONS X X1) to eliminate (CAR V) and (CDR V), and X1 by (CONS V Z1) to eliminate (CAR X1) and (CDR X1). The result is six new formulas: Case 2.6. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'NOT (LIST 'OR (CADADR X) (CADDADR X)))) (NOT (LISTP (APPEND Z FLIST2))) (EVAL (CADADR X) ALIST)) (NOT (EVAL X ALIST))), which further simplifies, trivially, to: T. Case 2.5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'NOT (LIST 'OR (CADAR V) (CADDAR V)))) (NOT (LISTP (APPEND Z FLIST2))) (EVAL (CADAR V) ALIST)) (NOT (EVAL (CONS W V) ALIST))). But this further simplifies, applying CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the definitions of CDR, CAR, and CONS, to: T. Case 2.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS W (CONS X D)) (LIST 'NOT (LIST 'OR (CADR X) (CADDR X)))) (NOT (LISTP (APPEND Z FLIST2))) (EVAL (CADR X) ALIST)) (NOT (EVAL (CONS W (CONS X D)) ALIST))). However this further simplifies, applying CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the definitions of CAR, CDR, and CONS, to: T. Case 2.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W (CONS (CONS C V) D)) (LIST 'NOT (LIST 'OR (CAR V) (CADR V)))) (NOT (LISTP (APPEND Z FLIST2))) (EVAL (CAR V) ALIST)) (NOT (EVAL (CONS W (CONS (CONS C V) D)) ALIST))). This further simplifies, applying CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the definitions of CAR and CONS, to: T. Case 2.2. (IMPLIES (AND (NOT (LISTP X1)) (EQUAL (CONS W (CONS (CONS C (CONS X X1)) D)) (LIST 'NOT (LIST 'OR X (CAR X1)))) (NOT (LISTP (APPEND Z FLIST2))) (EVAL X ALIST)) (NOT (EVAL (CONS W (CONS (CONS C (CONS X X1)) D)) ALIST))). This further simplifies, rewriting with CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and expanding the function CONS, to: T. Case 2.1. (IMPLIES (AND (EQUAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) (LIST 'NOT (LIST 'OR X V))) (NOT (LISTP (APPEND Z FLIST2))) (EVAL X ALIST)) (NOT (EVAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) ALIST))). But this further simplifies, applying CAR-CONS, CDR-CONS, CONS-EQUAL, OR-EVAL, and NOT-EVAL, and unfolding EQUAL, to: T. Case 1. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'OR (CADADAR FLIST1) (CADDADAR FLIST1)))) (NOT (LISTP (APPEND (CDR FLIST1) FLIST2))) (EVAL (LIST 'NOT (CADADAR FLIST1)) ALIST)) (EQUAL (EVAL (CAR FLIST1) ALIST) (EVAL (LIST 'NOT (CADDADAR FLIST1)) ALIST))). However this again simplifies, applying the lemmas CAR-CONS, CDR-CONS, and NOT-EVAL, and expanding EQUAL, to two new formulas: Case 1.2. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'OR (CADADAR FLIST1) (CADDADAR FLIST1)))) (NOT (LISTP (APPEND (CDR FLIST1) FLIST2))) (NOT (EVAL (CADADAR FLIST1) ALIST)) (NOT (EVAL (CADDADAR FLIST1) ALIST))) (EQUAL (EVAL (CAR FLIST1) ALIST) T)), which again simplifies, obviously, to: (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'OR (CADADAR FLIST1) (CADDADAR FLIST1)))) (NOT (LISTP (APPEND (CDR FLIST1) FLIST2))) (NOT (EVAL (CADADAR FLIST1) ALIST)) (NOT (EVAL (CADDADAR FLIST1) ALIST))) (EVAL (CAR FLIST1) ALIST)). Applying the lemma CAR-CDR-ELIM, replace FLIST1 by (CONS X Z) to eliminate (CAR FLIST1) and (CDR FLIST1), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), X by (CONS C V) to eliminate (CDR X) and (CAR X), V by (CONS X X1) to eliminate (CAR V) and (CDR V), and X1 by (CONS V Z1) to eliminate (CAR X1) and (CDR X1). This produces the following six new conjectures: Case 1.2.6. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'NOT (LIST 'OR (CADADR X) (CADDADR X)))) (NOT (LISTP (APPEND Z FLIST2))) (NOT (EVAL (CADADR X) ALIST)) (NOT (EVAL (CADDADR X) ALIST))) (EVAL X ALIST)). This further simplifies, obviously, to: T. Case 1.2.5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'NOT (LIST 'OR (CADAR V) (CADDAR V)))) (NOT (LISTP (APPEND Z FLIST2))) (NOT (EVAL (CADAR V) ALIST)) (NOT (EVAL (CADDAR V) ALIST))) (EVAL (CONS W V) ALIST)). This further simplifies, applying CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up CDR, CAR, and CONS, to: T. Case 1.2.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS W (CONS X D)) (LIST 'NOT (LIST 'OR (CADR X) (CADDR X)))) (NOT (LISTP (APPEND Z FLIST2))) (NOT (EVAL (CADR X) ALIST)) (NOT (EVAL (CADDR X) ALIST))) (EVAL (CONS W (CONS X D)) ALIST)). However this further simplifies, rewriting with CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the definitions of CAR, CDR, and CONS, to: T. Case 1.2.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W (CONS (CONS C V) D)) (LIST 'NOT (LIST 'OR (CAR V) (CADR V)))) (NOT (LISTP (APPEND Z FLIST2))) (NOT (EVAL (CAR V) ALIST)) (NOT (EVAL (CADR V) ALIST))) (EVAL (CONS W (CONS (CONS C V) D)) ALIST)). But this further simplifies, rewriting with the lemmas CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding CAR and CONS, to: T. Case 1.2.2. (IMPLIES (AND (NOT (LISTP X1)) (EQUAL (CONS W (CONS (CONS C (CONS X X1)) D)) (LIST 'NOT (LIST 'OR X (CAR X1)))) (NOT (LISTP (APPEND Z FLIST2))) (NOT (EVAL X ALIST)) (NOT (EVAL (CAR X1) ALIST))) (EVAL (CONS W (CONS (CONS C (CONS X X1)) D)) ALIST)), which further simplifies, rewriting with CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and expanding the definition of CONS, to: T. Case 1.2.1. (IMPLIES (AND (EQUAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) (LIST 'NOT (LIST 'OR X V))) (NOT (LISTP (APPEND Z FLIST2))) (NOT (EVAL X ALIST)) (NOT (EVAL V ALIST))) (EVAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) ALIST)). But this further simplifies, rewriting with CAR-CONS, CDR-CONS, CONS-EQUAL, OR-EVAL, and NOT-EVAL, and unfolding the definition of EQUAL, to: T. Case 1.1. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'OR (CADADAR FLIST1) (CADDADAR FLIST1)))) (NOT (LISTP (APPEND (CDR FLIST1) FLIST2))) (NOT (EVAL (CADADAR FLIST1) ALIST)) (EVAL (CADDADAR FLIST1) ALIST)) (EQUAL (EVAL (CAR FLIST1) ALIST) F)). This again simplifies, trivially, to: (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'OR (CADADAR FLIST1) (CADDADAR FLIST1)))) (NOT (LISTP (APPEND (CDR FLIST1) FLIST2))) (NOT (EVAL (CADADAR FLIST1) ALIST)) (EVAL (CADDADAR FLIST1) ALIST)) (NOT (EVAL (CAR FLIST1) ALIST))). Applying the lemma CAR-CDR-ELIM, replace FLIST1 by (CONS X Z) to eliminate (CAR FLIST1) and (CDR FLIST1), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), X by (CONS C V) to eliminate (CDR X) and (CAR X), V by (CONS X X1) to eliminate (CAR V) and (CDR V), and X1 by (CONS V Z1) to eliminate (CAR X1) and (CDR X1). We would thus like to prove the following six new conjectures: Case 1.1.6. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'NOT (LIST 'OR (CADADR X) (CADDADR X)))) (NOT (LISTP (APPEND Z FLIST2))) (NOT (EVAL (CADADR X) ALIST)) (EVAL (CADDADR X) ALIST)) (NOT (EVAL X ALIST))). This further simplifies, trivially, to: T. Case 1.1.5. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'NOT (LIST 'OR (CADAR V) (CADDAR V)))) (NOT (LISTP (APPEND Z FLIST2))) (NOT (EVAL (CADAR V) ALIST)) (EVAL (CADDAR V) ALIST)) (NOT (EVAL (CONS W V) ALIST))). But this further simplifies, appealing to the lemmas CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the functions CDR, CAR, and CONS, to: T. Case 1.1.4. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS W (CONS X D)) (LIST 'NOT (LIST 'OR (CADR X) (CADDR X)))) (NOT (LISTP (APPEND Z FLIST2))) (NOT (EVAL (CADR X) ALIST)) (EVAL (CADDR X) ALIST)) (NOT (EVAL (CONS W (CONS X D)) ALIST))), which further simplifies, applying the lemmas CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and expanding the definitions of CAR, CDR, and CONS, to: T. Case 1.1.3. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W (CONS (CONS C V) D)) (LIST 'NOT (LIST 'OR (CAR V) (CADR V)))) (NOT (LISTP (APPEND Z FLIST2))) (NOT (EVAL (CAR V) ALIST)) (EVAL (CADR V) ALIST)) (NOT (EVAL (CONS W (CONS (CONS C V) D)) ALIST))), which further simplifies, rewriting with CAR-NLISTP, CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding CAR and CONS, to: T. Case 1.1.2. (IMPLIES (AND (NOT (LISTP X1)) (EQUAL (CONS W (CONS (CONS C (CONS X X1)) D)) (LIST 'NOT (LIST 'OR X (CAR X1)))) (NOT (LISTP (APPEND Z FLIST2))) (NOT (EVAL X ALIST)) (EVAL (CAR X1) ALIST)) (NOT (EVAL (CONS W (CONS (CONS C (CONS X X1)) D)) ALIST))). But this further simplifies, rewriting with CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and expanding the function CONS, to: T. Case 1.1.1. (IMPLIES (AND (EQUAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) (LIST 'NOT (LIST 'OR X V))) (NOT (LISTP (APPEND Z FLIST2))) (NOT (EVAL X ALIST)) (EVAL V ALIST)) (NOT (EVAL (CONS W (CONS (CONS C (CONS X (CONS V Z1))) D)) ALIST))). But this further simplifies, applying the lemmas CAR-CONS, CDR-CONS, CONS-EQUAL, OR-EVAL, and NOT-EVAL, and expanding the function EQUAL, to: T. Q.E.D. [ 0.0 0.6 0.1 ] EVAL-NOR-TYPE (PROVE-LEMMA EVAL-DBLE-NEG-TYPE (REWRITE) (IMPLIES (AND (LISTP FLIST1) (DBLE-NEG-TYPE (CAR FLIST1))) (EQUAL (EVAL (MAKE-DISJUNCT (APPEND FLIST1 FLIST2)) ALIST) (EVAL (MAKE-DISJUNCT (APPEND (CONS (CADADAR FLIST1) (CDR FLIST1)) FLIST2)) ALIST)))) WARNING: the previously added lemma, EVAL-MAKE-DISJUNCT, could be applied whenever the newly proposed EVAL-DBLE-NEG-TYPE could! This simplifies, applying CAR-CONS and CDR-CONS, and unfolding F-NOT, DBLE-NEG-TYPE, APPEND, F-OR, and MAKE-DISJUNCT, to the following two new goals: Case 2. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'NOT (CADADAR FLIST1)))) (NOT (LISTP (APPEND (CDR FLIST1) FLIST2)))) (EQUAL (EVAL (CAR FLIST1) ALIST) (EVAL (CADADAR FLIST1) ALIST))). Appealing to the lemma CAR-CDR-ELIM, we now replace FLIST1 by (CONS X Z) to eliminate (CAR FLIST1) and (CDR FLIST1), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), X by (CONS C V) to eliminate (CDR X) and (CAR X), and V by (CONS X X1) to eliminate (CAR V) and (CDR V). We must thus prove five new formulas: Case 2.5. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'NOT (LIST 'NOT (CADADR X)))) (NOT (LISTP (APPEND Z FLIST2)))) (EQUAL (EVAL X ALIST) (EVAL (CADADR X) ALIST))), which further simplifies, clearly, to: T. Case 2.4. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'NOT (LIST 'NOT (CADAR V)))) (NOT (LISTP (APPEND Z FLIST2)))) (EQUAL (EVAL (CONS W V) ALIST) (EVAL (CADAR V) ALIST))). However this further simplifies, applying CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the functions CDR, CAR, and CONS, to: T. Case 2.3. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS W (CONS X D)) (LIST 'NOT (LIST 'NOT (CADR X)))) (NOT (LISTP (APPEND Z FLIST2)))) (EQUAL (EVAL (CONS W (CONS X D)) ALIST) (EVAL (CADR X) ALIST))). However this further simplifies, applying the lemmas CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the definitions of CAR and CONS, to: T. Case 2.2. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W (CONS (CONS C V) D)) (LIST 'NOT (LIST 'NOT (CAR V)))) (NOT (LISTP (APPEND Z FLIST2)))) (EQUAL (EVAL (CONS W (CONS (CONS C V) D)) ALIST) (EVAL (CAR V) ALIST))), which further simplifies, applying the lemmas CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up the definitions of CONS and CAR, to: T. Case 2.1. (IMPLIES (AND (EQUAL (CONS W (CONS (CONS C (CONS X X1)) D)) (LIST 'NOT (LIST 'NOT X))) (NOT (LISTP (APPEND Z FLIST2)))) (EQUAL (EVAL (CONS W (CONS (CONS C (CONS X X1)) D)) ALIST) (EVAL X ALIST))), which further simplifies, applying CAR-CONS, CDR-CONS, CONS-EQUAL, and NOT-EVAL, and opening up the definition of EQUAL, to: T. Case 1. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'NOT (CADADAR FLIST1)))) (LISTP (APPEND (CDR FLIST1) FLIST2))) (EQUAL (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT (APPEND (CDR FLIST1) FLIST2))) ALIST) (EVAL (LIST 'OR (CADADAR FLIST1) (MAKE-DISJUNCT (APPEND (CDR FLIST1) FLIST2))) ALIST))). However this again simplifies, appealing to the lemmas CAR-CONS, CDR-CONS, EVAL-MAKE-DISJUNCT, and OR-EVAL, and opening up the definition of EQUAL, to two new conjectures: Case 1.2. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'NOT (CADADAR FLIST1)))) (LISTP (APPEND (CDR FLIST1) FLIST2)) (NOT (EVAL (CADADAR FLIST1) ALIST)) (NOT (EVAL (MAKE-DISJUNCT (CDR FLIST1)) ALIST)) (EVAL (CAR FLIST1) ALIST)) (EQUAL T (EVAL (MAKE-DISJUNCT FLIST2) ALIST))), which again simplifies, clearly, to: (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'NOT (CADADAR FLIST1)))) (LISTP (APPEND (CDR FLIST1) FLIST2)) (NOT (EVAL (CADADAR FLIST1) ALIST)) (NOT (EVAL (MAKE-DISJUNCT (CDR FLIST1)) ALIST)) (EVAL (CAR FLIST1) ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). Applying the lemma CAR-CDR-ELIM, replace FLIST1 by (CONS X Z) to eliminate (CAR FLIST1) and (CDR FLIST1), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), X by (CONS C V) to eliminate (CDR X) and (CAR X), and V by (CONS X X1) to eliminate (CAR V) and (CDR V). This produces the following five new conjectures: Case 1.2.5. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'NOT (LIST 'NOT (CADADR X)))) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CADADR X) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (EVAL X ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This further simplifies, trivially, to: T. Case 1.2.4. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'NOT (LIST 'NOT (CADAR V)))) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CADAR V) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (EVAL (CONS W V) ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This further simplifies, rewriting with CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up the definitions of CDR, CAR, and CONS, to: T. Case 1.2.3. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS W (CONS X D)) (LIST 'NOT (LIST 'NOT (CADR X)))) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CADR X) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (EVAL (CONS W (CONS X D)) ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). But this further simplifies, appealing to the lemmas CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding CAR and CONS, to: T. Case 1.2.2. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W (CONS (CONS C V) D)) (LIST 'NOT (LIST 'NOT (CAR V)))) (LISTP (APPEND Z FLIST2)) (NOT (EVAL (CAR V) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (EVAL (CONS W (CONS (CONS C V) D)) ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)), which further simplifies, rewriting with the lemmas CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding CONS and CAR, to: T. Case 1.2.1. (IMPLIES (AND (EQUAL (CONS W (CONS (CONS C (CONS X X1)) D)) (LIST 'NOT (LIST 'NOT X))) (LISTP (APPEND Z FLIST2)) (NOT (EVAL X ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST)) (EVAL (CONS W (CONS (CONS C (CONS X X1)) D)) ALIST)) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)), which further simplifies, applying CAR-CONS, CDR-CONS, CONS-EQUAL, and NOT-EVAL, and opening up the definition of EQUAL, to: T. Case 1.1. (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'NOT (CADADAR FLIST1)))) (LISTP (APPEND (CDR FLIST1) FLIST2)) (EVAL (CADADAR FLIST1) ALIST) (NOT (EVAL (CAR FLIST1) ALIST)) (NOT (EVAL (MAKE-DISJUNCT (CDR FLIST1)) ALIST))) (EQUAL (EVAL (MAKE-DISJUNCT FLIST2) ALIST) T)). This again simplifies, obviously, to the new conjecture: (IMPLIES (AND (LISTP FLIST1) (EQUAL (CAR FLIST1) (LIST 'NOT (LIST 'NOT (CADADAR FLIST1)))) (LISTP (APPEND (CDR FLIST1) FLIST2)) (EVAL (CADADAR FLIST1) ALIST) (NOT (EVAL (CAR FLIST1) ALIST)) (NOT (EVAL (MAKE-DISJUNCT (CDR FLIST1)) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). Applying the lemma CAR-CDR-ELIM, replace FLIST1 by (CONS X Z) to eliminate (CAR FLIST1) and (CDR FLIST1), X by (CONS W V) to eliminate (CDR X) and (CAR X), V by (CONS X D) to eliminate (CAR V) and (CDR V), X by (CONS C V) to eliminate (CDR X) and (CAR X), and V by (CONS X X1) to eliminate (CAR V) and (CDR V). This produces the following five new conjectures: Case 1.1.5. (IMPLIES (AND (NOT (LISTP X)) (EQUAL X (LIST 'NOT (LIST 'NOT (CADADR X)))) (LISTP (APPEND Z FLIST2)) (EVAL (CADADR X) ALIST) (NOT (EVAL X ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This further simplifies, trivially, to: T. Case 1.1.4. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W V) (LIST 'NOT (LIST 'NOT (CADAR V)))) (LISTP (APPEND Z FLIST2)) (EVAL (CADAR V) ALIST) (NOT (EVAL (CONS W V) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). However this further simplifies, applying CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the definitions of CDR, CAR, and CONS, to: T. Case 1.1.3. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS W (CONS X D)) (LIST 'NOT (LIST 'NOT (CADR X)))) (LISTP (APPEND Z FLIST2)) (EVAL (CADR X) ALIST) (NOT (EVAL (CONS W (CONS X D)) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). But this further simplifies, rewriting with CDR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding the functions CAR and CONS, to: T. Case 1.1.2. (IMPLIES (AND (NOT (LISTP V)) (EQUAL (CONS W (CONS (CONS C V) D)) (LIST 'NOT (LIST 'NOT (CAR V)))) (LISTP (APPEND Z FLIST2)) (EVAL (CAR V) ALIST) (NOT (EVAL (CONS W (CONS (CONS C V) D)) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). This further simplifies, rewriting with CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and unfolding CONS and CAR, to: T. Case 1.1.1. (IMPLIES (AND (EQUAL (CONS W (CONS (CONS C (CONS X X1)) D)) (LIST 'NOT (LIST 'NOT X))) (LISTP (APPEND Z FLIST2)) (EVAL X ALIST) (NOT (EVAL (CONS W (CONS (CONS C (CONS X X1)) D)) ALIST)) (NOT (EVAL (MAKE-DISJUNCT Z) ALIST))) (EVAL (MAKE-DISJUNCT FLIST2) ALIST)). But this further simplifies, applying the lemmas CAR-CONS, CDR-CONS, CONS-EQUAL, and NOT-EVAL, and opening up the function EQUAL, to: T. Q.E.D. [ 0.0 0.2 0.0 ] EVAL-DBLE-NEG-TYPE (PROVE-LEMMA TAUT-EVAL (REWRITE) (IMPLIES (TAUTOLOGYP1 FLIST AUXLIST) (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) ALIST)) ((DISABLE EVAL EVAL-MAKE-DISJUNCT ELEM-FORM PROP-ATOMP OR-TYPE NOR-TYPE DBLE-NEG-TYPE APPEND NEG-LIST-REDUC) (INDUCT (TAUTOLOGYP1 FLIST AUXLIST)))) This conjecture can be simplified, using the abbreviations IMPLIES, NLISTP, NOT, OR, AND, F-NOT, ARG2, and ARG1, to six new goals: Case 6. (IMPLIES (AND (NOT (LISTP FLIST)) (TAUTOLOGYP1 FLIST AUXLIST)) (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) ALIST)), which simplifies, opening up TAUTOLOGYP1, to: T. Case 5. (IMPLIES (AND (LISTP FLIST) (PROP-ATOMP (CAR FLIST)) (IMPLIES (TAUTOLOGYP1 (CDR FLIST) (CONS (CAR FLIST) AUXLIST)) (EVAL (MAKE-DISJUNCT (APPEND (CDR FLIST) (CONS (CAR FLIST) AUXLIST))) ALIST)) (TAUTOLOGYP1 FLIST AUXLIST)) (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) ALIST)), which simplifies, rewriting with NEG-LIST-EVAL and EVAL-PROP-ATOMP, and opening up IMPLIES and TAUTOLOGYP1, to: T. Case 4. (IMPLIES (AND (LISTP FLIST) (NOT (PROP-ATOMP (CAR FLIST))) (OR-TYPE (CAR FLIST)) (IMPLIES (TAUTOLOGYP1 (CONS (CADAR FLIST) (CONS (CADDAR FLIST) (CDR FLIST))) AUXLIST) (EVAL (MAKE-DISJUNCT (APPEND (CONS (CADAR FLIST) (CONS (CADDAR FLIST) (CDR FLIST))) AUXLIST)) ALIST)) (TAUTOLOGYP1 FLIST AUXLIST)) (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) ALIST)). This simplifies, rewriting with OR-TYPE-NOT-PROP-ATOMP and EVAL-OR-TYPE, and unfolding the functions IMPLIES, ARG2, ARG1, and TAUTOLOGYP1, to: T. Case 3. (IMPLIES (AND (LISTP FLIST) (NOT (PROP-ATOMP (CAR FLIST))) (NOT (OR-TYPE (CAR FLIST))) (NOR-TYPE (CAR FLIST)) (IMPLIES (TAUTOLOGYP1 (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST)) AUXLIST) (EVAL (MAKE-DISJUNCT (APPEND (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST)) AUXLIST)) ALIST)) (IMPLIES (TAUTOLOGYP1 (CONS (LIST 'NOT (CADADAR FLIST)) (CDR FLIST)) AUXLIST) (EVAL (MAKE-DISJUNCT (APPEND (CONS (LIST 'NOT (CADADAR FLIST)) (CDR FLIST)) AUXLIST)) ALIST)) (TAUTOLOGYP1 FLIST AUXLIST)) (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) ALIST)), which simplifies, applying NOR-TYPE-NOT-PROP-ATOMP and EVAL-NOR-TYPE, and opening up the functions IMPLIES, F-NOT, ARG1, TAUTOLOGYP1, and ARG2, to: T. Case 2. (IMPLIES (AND (LISTP FLIST) (NOT (PROP-ATOMP (CAR FLIST))) (NOT (OR-TYPE (CAR FLIST))) (NOT (NOR-TYPE (CAR FLIST))) (DBLE-NEG-TYPE (CAR FLIST)) (IMPLIES (TAUTOLOGYP1 (CONS (CADADAR FLIST) (CDR FLIST)) AUXLIST) (EVAL (MAKE-DISJUNCT (APPEND (CONS (CADADAR FLIST) (CDR FLIST)) AUXLIST)) ALIST)) (TAUTOLOGYP1 FLIST AUXLIST)) (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) ALIST)). This simplifies, rewriting with DBLE-NEG-NOT-PROP-ATOMP and EVAL-DBLE-NEG-TYPE, and expanding IMPLIES, ARG1, and TAUTOLOGYP1, to: T. Case 1. (IMPLIES (AND (LISTP FLIST) (NOT (PROP-ATOMP (CAR FLIST))) (NOT (OR-TYPE (CAR FLIST))) (NOT (NOR-TYPE (CAR FLIST))) (NOT (DBLE-NEG-TYPE (CAR FLIST))) (TAUTOLOGYP1 FLIST AUXLIST)) (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) ALIST)), which simplifies, opening up the definition of TAUTOLOGYP1, to: T. Q.E.D. [ 0.0 0.1 0.0 ] TAUT-EVAL (PROVE-LEMMA NOT-EVAL-PROP-ATOMP (REWRITE) (IMPLIES (AND (LISTP FLIST1) (NOT (EVAL (MAKE-DISJUNCT (APPEND (CDR FLIST1) (CONS (CAR FLIST1) FLIST2))) ALIST))) (NOT (EVAL (MAKE-DISJUNCT (APPEND FLIST1 FLIST2)) ALIST))) ((INDUCT (APPEND FLIST1 FLIST2)))) This formula can be simplified, using the abbreviations EVAL-MAKE-DISJUNCT, IMPLIES, NOT, OR, and AND, to the following two new formulas: Case 2. (IMPLIES (AND (LISTP FLIST1) (IMPLIES (AND (LISTP (CDR FLIST1)) (NOT (EVAL (MAKE-DISJUNCT (APPEND (CDDR FLIST1) (CONS (CADR FLIST1) FLIST2))) ALIST))) (NOT (EVAL (MAKE-DISJUNCT (APPEND (CDR FLIST1) FLIST2)) ALIST))) (NOT (EVAL (MAKE-DISJUNCT (CDR FLIST1)) ALIST)) (NOT (EVAL (MAKE-DISJUNCT (CONS (CAR FLIST1) FLIST2)) ALIST))) (NOT (EVAL (MAKE-DISJUNCT (APPEND FLIST1 FLIST2)) ALIST))). This simplifies, appealing to the lemmas CAR-CONS, CDR-CONS, EVAL-MAKE-DISJUNCT, OR-EVAL, and NLISTP-EVAL, and unfolding the definitions of F-OR, MAKE-DISJUNCT, NOT, AND, APPEND, IMPLIES, and EQUAL, to the following 23 new goals: Case 2.23. (IMPLIES (AND (LISTP FLIST1) (NOT (EVAL (MAKE-DISJUNCT (CONS (CADR FLIST1) (APPEND (CDDR FLIST1) FLIST2))) ALIST)) (NOT (LISTP (CDR FLIST1))) (NOT (EVAL NIL ALIST)) (LISTP FLIST2) (NOT (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST))) (NOT (EVAL (CAR FLIST1) ALIST))). This again simplifies, rewriting with CAR-NLISTP, CDR-NLISTP, CAR-CONS, CDR-CONS, NLISTP-EVAL, and OR-EVAL, and expanding the definitions of LISTP, APPEND, F-OR, MAKE-DISJUNCT, and EQUAL, to: T. Case 2.22. (IMPLIES (AND (LISTP FLIST1) (NOT (EVAL (MAKE-DISJUNCT (CONS (CADR FLIST1) (APPEND (CDDR FLIST1) FLIST2))) ALIST)) (NOT (LISTP (CDR FLIST1))) (NOT (EVAL NIL ALIST)) (LISTP FLIST2) (NOT (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST))) (NOT (EVAL (MAKE-DISJUNCT FLIST2) ALIST))). But this again simplifies, appealing to the lemmas CAR-NLISTP, CDR-NLISTP, CAR-CONS, CDR-CONS, NLISTP-EVAL, and OR-EVAL, and unfolding the functions LISTP, APPEND, F-OR, MAKE-DISJUNCT, and EQUAL, to: T. Case 2.21. (IMPLIES (AND (LISTP FLIST1) (NOT (EVAL (MAKE-DISJUNCT (CONS (CADR FLIST1) (APPEND (CDDR FLIST1) FLIST2))) ALIST)) (LISTP (CDR FLIST1)) (LISTP (CDDR FLIST1)) (NOT (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1))) ALIST)) (NOT (LISTP FLIST2)) (NOT (EVAL (CAR FLIST1) ALIST)) (NOT (LISTP (APPEND (CDDR FLIST1) FLIST2)))) (NOT (EVAL (CADR FLIST1) ALIST))), which again simplifies, rewriting with CAR-CONS and CDR-CONS, and unfolding the function MAKE-DISJUNCT, to: T. Case 2.20. (IMPLIES (AND (LISTP FLIST1) (NOT (EVAL (MAKE-DISJUNCT (CONS (CADR FLIST1) (APPEND (CDDR FLIST1) FLIST2))) ALIST)) (LISTP (CDR FLIST1)) (LISTP (CDDR FLIST1)) (NOT (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1))) ALIST)) (NOT (LISTP FLIST2)) (NOT (EVAL (CAR FLIST1) ALIST)) (LISTP (APPEND (CDDR FLIST1) FLIST2))) (NOT (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (APPEND (CDDR FLIST1) FLIST2))) ALIST))). This again simplifies, applying CAR-CONS, CDR-CONS, NLISTP-EVAL, EVAL-MAKE-DISJUNCT, and OR-EVAL, and expanding the functions F-OR, MAKE-DISJUNCT, and EQUAL, to: T. Case 2.19. (IMPLIES (AND (LISTP FLIST1) (NOT (EVAL (MAKE-DISJUNCT (CONS (CADR FLIST1) (APPEND (CDDR FLIST1) FLIST2))) ALIST)) (LISTP (CDR FLIST1)) (LISTP (CDDR FLIST1)) (NOT (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1))) ALIST)) (LISTP FLIST2) (NOT (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST))) (NOT (EVAL (CAR FLIST1) ALIST))). But this again simplifies, rewriting with CAR-CONS, CDR-CONS, EVAL-MAKE-DISJUNCT, and OR-EVAL, and unfolding F-OR, MAKE-DISJUNCT, and EQUAL, to: T. Case 2.18. (IMPLIES (AND (LISTP FLIST1) (NOT (EVAL (MAKE-DISJUNCT (CONS (CADR FLIST1) (APPEND (CDDR FLIST1) FLIST2))) ALIST)) (LISTP (CDR FLIST1)) (LISTP (CDDR FLIST1)) (NOT (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1))) ALIST)) (LISTP FLIST2) (NOT (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST))) (NOT (EVAL (CADR FLIST1) ALIST))). However this again simplifies, rewriting with CAR-CONS, CDR-CONS, and OR-EVAL, and expanding the definitions of F-OR, MAKE-DISJUNCT, and EQUAL, to: T. Case 2.17. (IMPLIES (AND (LISTP FLIST1) (NOT (EVAL (MAKE-DISJUNCT (CONS (CADR FLIST1) (APPEND (CDDR FLIST1) FLIST2))) ALIST)) (LISTP (CDR FLIST1)) (LISTP (CDDR FLIST1)) (NOT (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1))) ALIST)) (LISTP FLIST2) (NOT (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST))) (NOT (EVAL (MAKE-DISJUNCT (CDDR FLIST1)) ALIST))). However this again simplifies, applying the lemmas CAR-CONS, CDR-CONS, EVAL-MAKE-DISJUNCT, and OR-EVAL, and unfolding the definitions of F-OR, MAKE-DISJUNCT, and EQUAL, to: T. Case 2.16. (IMPLIES (AND (LISTP FLIST1) (NOT (EVAL (MAKE-DISJUNCT (CONS (CADR FLIST1) (APPEND (CDDR FLIST1) FLIST2))) ALIST)) (LISTP (CDR FLIST1)) (LISTP (CDDR FLIST1)) (NOT (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1))) ALIST)) (LISTP FLIST2) (NOT (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST))) (NOT (EVAL (MAKE-DISJUNCT FLIST2) ALIST))), which again simplifies, rewriting with the lemmas CAR-CONS, CDR-CONS, EVAL-MAKE-DISJUNCT, OR-EVAL, and EVAL-PROP-ATOMP, and unfolding the functions F-OR, MAKE-DISJUNCT, and EQUAL, to: T. Case 2.15. (IMPLIES (AND (LISTP FLIST1) (NOT (EVAL (MAKE-DISJUNCT (CONS (CADR FLIST1) (APPEND (CDDR FLIST1) FLIST2))) ALIST)) (LISTP (CDR FLIST1)) (NOT (LISTP (CDDR FLIST1))) (NOT (EVAL (CADR FLIST1) ALIST)) (LISTP FLIST2) (NOT (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST))) (NOT (EVAL (CAR FLIST1) ALIST))), which again simplifies, rewriting with CAR-CONS, CDR-CONS, and OR-EVAL, and opening up the definitions of APPEND, F-OR, MAKE-DISJUNCT, and EQUAL, to: T. Case 2.14. (IMPLIES (AND (LISTP FLIST1) (NOT (EVAL (MAKE-DISJUNCT (CONS (CADR FLIST1) (APPEND (CDDR FLIST1) FLIST2))) ALIST)) (LISTP (CDR FLIST1)) (NOT (LISTP (CDDR FLIST1))) (NOT (EVAL (CADR FLIST1) ALIST)) (LISTP FLIST2) (NOT (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST))) (NOT (EVAL (MAKE-DISJUNCT FLIST2) ALIST))). This again simplifies, appealing to the lemmas CAR-CONS, CDR-CONS, and OR-EVAL, and opening up the functions APPEND, F-OR, MAKE-DISJUNCT, and EQUAL, to: T. Case 2.13. (IMPLIES (AND (LISTP FLIST1) (LISTP FLIST2) (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST) (LISTP (CDR FLIST1)) (LISTP (CDDR FLIST1)) (NOT (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1))) ALIST)) (NOT (EVAL (CAR FLIST1) ALIST)) (NOT (EVAL (MAKE-DISJUNCT FLIST2) ALIST))) (NOT (EVAL (CADR FLIST1) ALIST))), which again simplifies, applying CAR-CONS, CDR-CONS, and OR-EVAL, and opening up the definition of EQUAL, to: T. Case 2.12. (IMPLIES (AND (LISTP FLIST1) (LISTP FLIST2) (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST) (LISTP (CDR FLIST1)) (LISTP (CDDR FLIST1)) (NOT (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1))) ALIST)) (NOT (EVAL (CAR FLIST1) ALIST)) (NOT (EVAL (MAKE-DISJUNCT FLIST2) ALIST))) (NOT (EVAL (MAKE-DISJUNCT (CDDR FLIST1)) ALIST))). But this again simplifies, applying CAR-CONS, CDR-CONS, and OR-EVAL, and expanding EQUAL, to: T. Case 2.11. (IMPLIES (AND (LISTP FLIST1) (NOT (LISTP FLIST2)) (EVAL (CADR FLIST1) ALIST) (LISTP (CDR FLIST1)) (LISTP (CDDR FLIST1)) (NOT (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1))) ALIST)) (NOT (EVAL (CAR FLIST1) ALIST))) (NOT (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (APPEND (CDDR FLIST1) FLIST2))) ALIST))). This again simplifies, rewriting with CAR-CONS, CDR-CONS, and OR-EVAL, and expanding the function EQUAL, to: T. Case 2.10. (IMPLIES (AND (LISTP FLIST1) (NOT (LISTP FLIST2)) (EVAL (CADR FLIST1) ALIST) (LISTP (CDR FLIST1)) (LISTP (CDDR FLIST1)) (NOT (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1))) ALIST)) (NOT (EVAL (CAR FLIST1) ALIST))) (LISTP (APPEND (CDDR FLIST1) FLIST2))). But this again simplifies, rewriting with CAR-CONS, CDR-CONS, and OR-EVAL, and opening up EQUAL, to: T. Case 2.9. (IMPLIES (AND (LISTP FLIST1) (EVAL (MAKE-DISJUNCT (CDDR FLIST1)) ALIST) (NOT (LISTP (CDR FLIST1))) (NOT (EVAL NIL ALIST)) (LISTP FLIST2) (NOT (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST))) (NOT (EVAL (CAR FLIST1) ALIST))). This again simplifies, rewriting with CDR-NLISTP and NLISTP-EVAL, and opening up the definition of MAKE-DISJUNCT, to: T. Case 2.8. (IMPLIES (AND (LISTP FLIST1) (EVAL (MAKE-DISJUNCT (CDDR FLIST1)) ALIST) (NOT (LISTP (CDR FLIST1))) (NOT (EVAL NIL ALIST)) (LISTP FLIST2) (NOT (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST))) (NOT (EVAL (MAKE-DISJUNCT FLIST2) ALIST))). However this again simplifies, applying the lemmas CDR-NLISTP and NLISTP-EVAL, and opening up MAKE-DISJUNCT, to: T. Case 2.7. (IMPLIES (AND (LISTP FLIST1) (EVAL (MAKE-DISJUNCT (CDDR FLIST1)) ALIST) (LISTP (CDR FLIST1)) (LISTP (CDDR FLIST1)) (NOT (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1))) ALIST)) (NOT (LISTP FLIST2)) (NOT (EVAL (CAR FLIST1) ALIST)) (NOT (LISTP (APPEND (CDDR FLIST1) FLIST2)))) (NOT (EVAL (CADR FLIST1) ALIST))), which again simplifies, rewriting with CAR-CONS, CDR-CONS, and OR-EVAL, and expanding the function EQUAL, to: T. Case 2.6. (IMPLIES (AND (LISTP FLIST1) (EVAL (MAKE-DISJUNCT (CDDR FLIST1)) ALIST) (LISTP (CDR FLIST1)) (LISTP (CDDR FLIST1)) (NOT (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1))) ALIST)) (NOT (LISTP FLIST2)) (NOT (EVAL (CAR FLIST1) ALIST)) (LISTP (APPEND (CDDR FLIST1) FLIST2))) (NOT (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (APPEND (CDDR FLIST1) FLIST2))) ALIST))). However this again simplifies, applying the lemmas CAR-CONS, CDR-CONS, and OR-EVAL, and unfolding the function EQUAL, to: T. Case 2.5. (IMPLIES (AND (LISTP FLIST1) (EVAL (MAKE-DISJUNCT (CDDR FLIST1)) ALIST) (LISTP (CDR FLIST1)) (LISTP (CDDR FLIST1)) (NOT (EVAL (LIST 'OR (CADR FLIST1) (MAKE-DISJUNCT (CDDR FLIST1))) ALIST)) (LISTP FLIST2)) (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST)), which again simplifies, applying the lemmas CAR-CONS, CDR-CONS, and OR-EVAL, and unfolding the function EQUAL, to: T. Case 2.4. (IMPLIES (AND (LISTP FLIST1) (EVAL (MAKE-DISJUNCT (CDDR FLIST1)) ALIST) (LISTP (CDR FLIST1)) (NOT (LISTP (CDDR FLIST1))) (NOT (EVAL (CADR FLIST1) ALIST)) (LISTP FLIST2) (NOT (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST))) (NOT (EVAL (CAR FLIST1) ALIST))), which again simplifies, rewriting with NLISTP-EVAL, and expanding the function MAKE-DISJUNCT, to: T. Case 2.3. (IMPLIES (AND (LISTP FLIST1) (EVAL (MAKE-DISJUNCT (CDDR FLIST1)) ALIST) (LISTP (CDR FLIST1)) (NOT (LISTP (CDDR FLIST1))) (NOT (EVAL (CADR FLIST1) ALIST)) (LISTP FLIST2) (NOT (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST))) (NOT (EVAL (MAKE-DISJUNCT FLIST2) ALIST))). This again simplifies, appealing to the lemma NLISTP-EVAL, and expanding the function MAKE-DISJUNCT, to: T. Case 2.2. (IMPLIES (AND (LISTP FLIST1) (NOT (LISTP (CDR FLIST1))) (LISTP FLIST2) (NOT (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST))) (NOT (EVAL (CAR FLIST1) ALIST))), which again simplifies, appealing to the lemmas CAR-CONS, CDR-CONS, and OR-EVAL, and unfolding EQUAL, to: T. Case 2.1. (IMPLIES (AND (LISTP FLIST1) (NOT (LISTP (CDR FLIST1))) (LISTP FLIST2) (NOT (EVAL (LIST 'OR (CAR FLIST1) (MAKE-DISJUNCT FLIST2)) ALIST))) (NOT (EVAL (MAKE-DISJUNCT FLIST2) ALIST))), which again simplifies, rewriting with CAR-CONS, CDR-CONS, and OR-EVAL, and expanding EQUAL, to: T. Case 1. T. This simplifies, clearly, to: T. Q.E.D. [ 0.0 1.0 0.0 ] NOT-EVAL-PROP-ATOMP (PROVE-LEMMA PROP-ATOMP-REDUC (REWRITE) (EQUAL (PROP-ATOMP EXP) (OR (ELEM-FORM EXP) (AND (EQUAL EXP (F-NOT (CADR EXP))) (ELEM-FORM (CADR EXP))))) ((DISABLE ELEM-FORM))) WARNING: Note that the rewrite rule PROP-ATOMP-REDUC will be stored so as to apply only to terms with the nonrecursive function symbol PROP-ATOMP. This conjecture can be simplified, using the abbreviation F-NOT, to: (EQUAL (PROP-ATOMP EXP) (OR (ELEM-FORM EXP) (AND (EQUAL EXP (LIST 'NOT (CADR EXP))) (ELEM-FORM (CADR EXP))))). This simplifies, opening up NEG-ELEM-FORM, F-NOT, ARG1, PROP-ATOMP, AND, and OR, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PROP-ATOMP-REDUC (TOGGLE G0263 ELEM-FORM T) [ 0.0 0.0 0.0 ] G0263 (TOGGLE G0264 PROP-ATOMP T) [ 0.0 0.0 0.0 ] G0264 (DEFN PROP-ATOMP-LIST (LIST) (IF (NLISTP LIST) T (AND (PROP-ATOMP (CAR LIST)) (PROP-ATOMP-LIST (CDR LIST))))) Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP inform us that the measure (COUNT LIST) decreases according to the well-founded relation LESSP in each recursive call. Hence, PROP-ATOMP-LIST is accepted under the definitional principle. Observe that: (OR (FALSEP (PROP-ATOMP-LIST LIST)) (TRUEP (PROP-ATOMP-LIST LIST))) is a theorem. [ 0.0 0.0 0.0 ] PROP-ATOMP-LIST (DEFN FALSIFY (LIST) (IF (NLISTP LIST) NIL (IF (EQUAL (CAR LIST) (F-NOT (CADAR LIST))) (CONS (CADAR LIST) (FALSIFY (CDR LIST))) (FALSIFY (CDR LIST))))) Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definitions of F-NOT and NLISTP inform us that the measure (COUNT LIST) decreases according to the well-founded relation LESSP in each recursive call. Hence, FALSIFY is accepted under the principle of definition. Note that: (OR (LITATOM (FALSIFY LIST)) (LISTP (FALSIFY LIST))) is a theorem. [ 0.0 0.0 0.0 ] FALSIFY (PROVE-LEMMA FALSIFY-STEP (REWRITE) (IMPLIES (NOT (MEMBER (F-NOT EXP) AUXLIST)) (NOT (MEMBER EXP (FALSIFY AUXLIST))))) This formula can be simplified, using the abbreviations NOT, IMPLIES, and F-NOT, to the new conjecture: (IMPLIES (NOT (MEMBER (LIST 'NOT EXP) AUXLIST)) (NOT (MEMBER EXP (FALSIFY AUXLIST)))), which we will name *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 (NLISTP AUXLIST) (p EXP AUXLIST)) (IMPLIES (AND (NOT (NLISTP AUXLIST)) (EQUAL (LIST 'NOT EXP) (CAR AUXLIST))) (p EXP AUXLIST)) (IMPLIES (AND (NOT (NLISTP AUXLIST)) (NOT (EQUAL (LIST 'NOT EXP) (CAR AUXLIST))) (p EXP (CDR AUXLIST))) (p EXP AUXLIST))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP inform us that the measure (COUNT AUXLIST) 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 formulas: Case 4. (IMPLIES (AND (NLISTP AUXLIST) (NOT (MEMBER (LIST 'NOT EXP) AUXLIST))) (NOT (MEMBER EXP (FALSIFY AUXLIST)))). This simplifies, opening up the definitions of NLISTP, MEMBER, FALSIFY, and LISTP, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP AUXLIST)) (EQUAL (LIST 'NOT EXP) (CAR AUXLIST)) (NOT (MEMBER (LIST 'NOT EXP) AUXLIST))) (NOT (MEMBER EXP (FALSIFY AUXLIST)))). This simplifies, opening up the definitions of NLISTP and MEMBER, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP AUXLIST)) (NOT (EQUAL (LIST 'NOT EXP) (CAR AUXLIST))) (MEMBER (LIST 'NOT EXP) (CDR AUXLIST)) (NOT (MEMBER (LIST 'NOT EXP) AUXLIST))) (NOT (MEMBER EXP (FALSIFY AUXLIST)))). This simplifies, opening up the definitions of NLISTP and MEMBER, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP AUXLIST)) (NOT (EQUAL (LIST 'NOT EXP) (CAR AUXLIST))) (NOT (MEMBER EXP (FALSIFY (CDR AUXLIST)))) (NOT (MEMBER (LIST 'NOT EXP) AUXLIST))) (NOT (MEMBER EXP (FALSIFY AUXLIST)))). This simplifies, opening up the definitions of NLISTP, MEMBER, FALSIFY, and F-NOT, to the new goal: (IMPLIES (AND (LISTP AUXLIST) (NOT (EQUAL (LIST 'NOT EXP) (CAR AUXLIST))) (NOT (MEMBER EXP (FALSIFY (CDR AUXLIST)))) (NOT (MEMBER (LIST 'NOT EXP) (CDR AUXLIST))) (EQUAL (CAR AUXLIST) (LIST 'NOT (CADAR AUXLIST)))) (NOT (MEMBER EXP (CONS (CADAR AUXLIST) (FALSIFY (CDR AUXLIST)))))), which again simplifies, rewriting with the lemmas CAR-CONS and CDR-CONS, and opening up the function MEMBER, to the goal: (IMPLIES (AND (LISTP AUXLIST) (NOT (EQUAL (LIST 'NOT EXP) (CAR AUXLIST))) (NOT (MEMBER EXP (FALSIFY (CDR AUXLIST)))) (NOT (MEMBER (LIST 'NOT EXP) (CDR AUXLIST))) (EQUAL (CAR AUXLIST) (LIST 'NOT (CADAR AUXLIST)))) (NOT (EQUAL EXP (CADAR AUXLIST)))). This again simplifies, clearly, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] FALSIFY-STEP (PROVE-LEMMA PROP-ATOMP-AUXLIST (REWRITE) (IMPLIES (AND (PROP-ATOMP EXP) (NOT (NEG-LIST EXP AUXLIST)) (PROP-ATOMP-LIST AUXLIST)) (NOT (EVAL EXP (FALSIFY (CONS EXP AUXLIST))))) ((DISABLE FORMULA ELEM-FORM))) This conjecture can be simplified, using the abbreviations F-NOT, NEG-LIST-REDUC, NOT, AND, and IMPLIES, to: (IMPLIES (AND (PROP-ATOMP EXP) (NOT (MEMBER (LIST 'NOT EXP) AUXLIST)) (NOT (IF (EQUAL EXP (LIST 'NOT (CADR EXP))) (MEMBER (CADR EXP) AUXLIST) F)) (PROP-ATOMP-LIST AUXLIST)) (NOT (EVAL EXP (FALSIFY (CONS EXP AUXLIST))))). This simplifies, rewriting with the lemmas PROP-ATOMP-REDUC, CDR-CONS, CAR-CONS, FALSIFY-STEP, and ELEM-FORM-EVAL, and opening up the functions F-NOT and FALSIFY, to the following three new goals: Case 3. (IMPLIES (AND (ELEM-FORM EXP) (NOT (MEMBER (LIST 'NOT EXP) AUXLIST)) (NOT (MEMBER (CADR EXP) AUXLIST)) (PROP-ATOMP-LIST AUXLIST) (NOT (EQUAL EXP (LIST 'NOT (CADR EXP))))) (NOT (MEMBER EXP (FALSIFY AUXLIST)))). However this again simplifies, rewriting with FALSIFY-STEP, and expanding the function F-NOT, to: T. Case 2. (IMPLIES (AND (ELEM-FORM EXP) (NOT (MEMBER (LIST 'NOT EXP) AUXLIST)) (NOT (MEMBER (CADR EXP) AUXLIST)) (PROP-ATOMP-LIST AUXLIST) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (MEMBER EXP (CONS (CADR EXP) (FALSIFY AUXLIST))))). However this again simplifies, applying the lemmas FALSIFY-STEP, CDR-CONS, and CAR-CONS, and unfolding the functions F-NOT and MEMBER, to: (IMPLIES (AND (ELEM-FORM EXP) (NOT (MEMBER (LIST 'NOT EXP) AUXLIST)) (NOT (MEMBER (CADR EXP) AUXLIST)) (PROP-ATOMP-LIST AUXLIST) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EQUAL EXP (CADR EXP)))). This again simplifies, obviously, to: T. Case 1. (IMPLIES (AND (EQUAL EXP (LIST 'NOT (CADR EXP))) (ELEM-FORM (CADR EXP)) (NOT (MEMBER (LIST 'NOT EXP) AUXLIST)) (NOT (MEMBER (CADR EXP) AUXLIST)) (PROP-ATOMP-LIST AUXLIST)) (NOT (EVAL EXP (CONS (CADR EXP) (FALSIFY AUXLIST))))). Appealing to the lemma CAR-CDR-ELIM, we now replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP) and X by (CONS V W) to eliminate (CAR X) and (CDR X). We must thus prove three new conjectures: Case 1.3. (IMPLIES (AND (NOT (LISTP EXP)) (EQUAL EXP (LIST 'NOT (CADR EXP))) (ELEM-FORM (CADR EXP)) (NOT (MEMBER (LIST 'NOT EXP) AUXLIST)) (NOT (MEMBER (CADR EXP) AUXLIST)) (PROP-ATOMP-LIST AUXLIST)) (NOT (EVAL EXP (CONS (CADR EXP) (FALSIFY AUXLIST))))), which further simplifies, clearly, to: T. Case 1.2. (IMPLIES (AND (NOT (LISTP X)) (EQUAL (CONS Z X) (LIST 'NOT (CAR X))) (ELEM-FORM (CAR X)) (NOT (MEMBER (LIST 'NOT (CONS Z X)) AUXLIST)) (NOT (MEMBER (CAR X) AUXLIST)) (PROP-ATOMP-LIST AUXLIST)) (NOT (EVAL (CONS Z X) (CONS (CAR X) (FALSIFY AUXLIST))))). But this further simplifies, applying CAR-NLISTP, CAR-CONS, and CONS-EQUAL, and opening up the definitions of CONS and CAR, to: T. Case 1.1. (IMPLIES (AND (EQUAL (CONS Z (CONS V W)) (LIST 'NOT V)) (ELEM-FORM V) (NOT (MEMBER (LIST 'NOT (CONS Z (CONS V W))) AUXLIST)) (NOT (MEMBER V AUXLIST)) (PROP-ATOMP-LIST AUXLIST)) (NOT (EVAL (CONS Z (CONS V W)) (CONS V (FALSIFY AUXLIST))))). But this further simplifies, rewriting with CAR-CONS, CDR-CONS, CONS-EQUAL, ELEM-FORM-EVAL, and NOT-EVAL, and unfolding the definitions of EQUAL and MEMBER, to: T. Q.E.D. [ 0.0 0.1 0.0 ] PROP-ATOMP-AUXLIST (PROVE-LEMMA PROP-ATOMP-AUXLIST2 (REWRITE) (IMPLIES (AND (NOT (NEG-LIST EXP AUXLIST)) (PROP-ATOMP-LIST AUXLIST) (PROP-ATOMP EXP) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY ALIST)))) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY (CONS EXP ALIST))))) ((DISABLE FORMULA-NOT-REDUC ELEM-FORM FORMULA PROP-ATOMP NEG-LIST-REDUC) (INDUCT (MAKE-DISJUNCT AUXLIST)))) This conjecture can be simplified, using the abbreviations IMPLIES, NLISTP, NOT, OR, and AND, to three new formulas: Case 3. (IMPLIES (AND (NOT (LISTP AUXLIST)) (NOT (NEG-LIST EXP AUXLIST)) (PROP-ATOMP-LIST AUXLIST) (PROP-ATOMP EXP) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY ALIST)))) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY (CONS EXP ALIST))))), which simplifies, appealing to the lemmas NLISTP-NEG-LIST, PROP-ATOMP-REDUC, NLISTP-EVAL, CDR-CONS, and CAR-CONS, and unfolding PROP-ATOMP-LIST, F-NOT, MAKE-DISJUNCT, and FALSIFY, to: T. Case 2. (IMPLIES (AND (LISTP AUXLIST) (NOT (LISTP (CDR AUXLIST))) (NOT (NEG-LIST EXP AUXLIST)) (PROP-ATOMP-LIST AUXLIST) (PROP-ATOMP EXP) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY ALIST)))) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY (CONS EXP ALIST))))), which simplifies, appealing to the lemmas NLISTP-NEG-LIST, PROP-ATOMP-REDUC, ELEM-FORM-EVAL, CDR-CONS, and CAR-CONS, and opening up the functions NEG, F-NOT, NEG-LIST, PROP-ATOMP-LIST, MAKE-DISJUNCT, FALSIFY, and MEMBER, to four new conjectures: Case 2.4. (IMPLIES (AND (LISTP AUXLIST) (NOT (LISTP (CDR AUXLIST))) (NOT (EQUAL EXP (LIST 'NOT (CAR AUXLIST)))) (NOT (EQUAL (CAR AUXLIST) (LIST 'NOT EXP))) (ELEM-FORM (CAR AUXLIST)) (ELEM-FORM EXP) (NOT (MEMBER (CAR AUXLIST) (FALSIFY ALIST))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (MEMBER (CAR AUXLIST) (CONS (CADR EXP) (FALSIFY ALIST))))), which again simplifies, applying the lemmas CAR-CONS and CDR-CONS, and expanding the function MEMBER, to: (IMPLIES (AND (LISTP AUXLIST) (NOT (LISTP (CDR AUXLIST))) (NOT (EQUAL EXP (LIST 'NOT (CAR AUXLIST)))) (NOT (EQUAL (CAR AUXLIST) (LIST 'NOT EXP))) (ELEM-FORM (CAR AUXLIST)) (ELEM-FORM EXP) (NOT (MEMBER (CAR AUXLIST) (FALSIFY ALIST))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EQUAL (CAR AUXLIST) (CADR EXP)))). This again simplifies, appealing to the lemma CAR-CONS, to: T. Case 2.3. (IMPLIES (AND (LISTP AUXLIST) (NOT (LISTP (CDR AUXLIST))) (NOT (EQUAL EXP (LIST 'NOT (CAR AUXLIST)))) (NOT (EQUAL (CAR AUXLIST) (LIST 'NOT EXP))) (ELEM-FORM (CAR AUXLIST)) (EQUAL EXP (LIST 'NOT (CADR EXP))) (ELEM-FORM (CADR EXP)) (NOT (MEMBER (CAR AUXLIST) (FALSIFY ALIST)))) (NOT (EQUAL (CAR AUXLIST) (CADR EXP)))), which again simplifies, rewriting with CAR-CONS, to: T. Case 2.2. (IMPLIES (AND (LISTP AUXLIST) (NOT (LISTP (CDR AUXLIST))) (NOT (EQUAL EXP (LIST 'NOT (CAR AUXLIST)))) (NOT (EQUAL (CAR AUXLIST) (LIST 'NOT EXP))) (EQUAL (CAR AUXLIST) (LIST 'NOT (CADAR AUXLIST))) (ELEM-FORM (CADAR AUXLIST)) (ELEM-FORM EXP) (NOT (EVAL (CAR AUXLIST) (FALSIFY ALIST))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EVAL (CAR AUXLIST) (CONS (CADR EXP) (FALSIFY ALIST))))). Appealing to the lemma CAR-CDR-ELIM, we now replace AUXLIST by (CONS Z X) to eliminate (CDR AUXLIST) and (CAR AUXLIST), Z by (CONS W V) to eliminate (CDR Z) and (CAR Z), and V by (CONS Z D) to eliminate (CAR V) and (CDR V). This generates three new goals: Case 2.2.3. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP X)) (NOT (EQUAL EXP (LIST 'NOT Z))) (NOT (EQUAL Z (LIST 'NOT EXP))) (EQUAL Z (LIST 'NOT (CADR Z))) (ELEM-FORM (CADR Z)) (ELEM-FORM EXP) (NOT (EVAL Z (FALSIFY ALIST))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EVAL Z (CONS (CADR EXP) (FALSIFY ALIST))))), which further simplifies, trivially, to: T. Case 2.2.2. (IMPLIES (AND (NOT (LISTP V)) (NOT (LISTP X)) (NOT (EQUAL EXP (LIST 'NOT (CONS W V)))) (NOT (EQUAL (CONS W V) (LIST 'NOT EXP))) (EQUAL (CONS W V) (LIST 'NOT (CAR V))) (ELEM-FORM (CAR V)) (ELEM-FORM EXP) (NOT (EVAL (CONS W V) (FALSIFY ALIST))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EVAL (CONS W V) (CONS (CADR EXP) (FALSIFY ALIST))))). However this further simplifies, applying CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and expanding CONS, CAR, EQUAL, and CDR, to: T. Case 2.2.1. (IMPLIES (AND (NOT (LISTP X)) (NOT (EQUAL EXP (LIST 'NOT (CONS W (CONS Z D))))) (NOT (EQUAL (CONS W (CONS Z D)) (LIST 'NOT EXP))) (EQUAL (CONS W (CONS Z D)) (LIST 'NOT Z)) (ELEM-FORM Z) (ELEM-FORM EXP) (NOT (EVAL (CONS W (CONS Z D)) (FALSIFY ALIST))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EVAL (CONS W (CONS Z D)) (CONS (CADR EXP) (FALSIFY ALIST))))). This further simplifies, applying CAR-CONS, CDR-CONS, CONS-EQUAL, ELEM-FORM-EVAL, and NOT-EVAL, and unfolding EQUAL and MEMBER, to: T. Case 2.1. (IMPLIES (AND (LISTP AUXLIST) (NOT (LISTP (CDR AUXLIST))) (NOT (EQUAL EXP (LIST 'NOT (CAR AUXLIST)))) (NOT (EQUAL (CAR AUXLIST) (LIST 'NOT EXP))) (EQUAL (CAR AUXLIST) (LIST 'NOT (CADAR AUXLIST))) (ELEM-FORM (CADAR AUXLIST)) (EQUAL EXP (LIST 'NOT (CADR EXP))) (ELEM-FORM (CADR EXP)) (NOT (EVAL (CAR AUXLIST) (FALSIFY ALIST)))) (NOT (EVAL (CAR AUXLIST) (CONS (CADR EXP) (FALSIFY ALIST))))). Appealing to the lemma CAR-CDR-ELIM, we now replace AUXLIST by (CONS Z X) to eliminate (CDR AUXLIST) and (CAR AUXLIST), Z by (CONS W V) to eliminate (CDR Z) and (CAR Z), and V by (CONS Z D) to eliminate (CAR V) and (CDR V). We must thus prove three new formulas: Case 2.1.3. (IMPLIES (AND (NOT (LISTP Z)) (NOT (LISTP X)) (NOT (EQUAL EXP (LIST 'NOT Z))) (NOT (EQUAL Z (LIST 'NOT EXP))) (EQUAL Z (LIST 'NOT (CADR Z))) (ELEM-FORM (CADR Z)) (EQUAL EXP (LIST 'NOT (CADR EXP))) (ELEM-FORM (CADR EXP)) (NOT (EVAL Z (FALSIFY ALIST)))) (NOT (EVAL Z (CONS (CADR EXP) (FALSIFY ALIST))))), which further simplifies, trivially, to: T. Case 2.1.2. (IMPLIES (AND (NOT (LISTP V)) (NOT (LISTP X)) (NOT (EQUAL EXP (LIST 'NOT (CONS W V)))) (NOT (EQUAL (CONS W V) (LIST 'NOT EXP))) (EQUAL (CONS W V) (LIST 'NOT (CAR V))) (ELEM-FORM (CAR V)) (EQUAL EXP (LIST 'NOT (CADR EXP))) (ELEM-FORM (CADR EXP)) (NOT (EVAL (CONS W V) (FALSIFY ALIST)))) (NOT (EVAL (CONS W V) (CONS (CADR EXP) (FALSIFY ALIST))))). This further simplifies, rewriting with CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and opening up the definitions of CONS, CAR, EQUAL, and CDR, to: T. Case 2.1.1. (IMPLIES (AND (NOT (LISTP X)) (NOT (EQUAL EXP (LIST 'NOT (CONS W (CONS Z D))))) (NOT (EQUAL (CONS W (CONS Z D)) (LIST 'NOT EXP))) (EQUAL (CONS W (CONS Z D)) (LIST 'NOT Z)) (ELEM-FORM Z) (EQUAL EXP (LIST 'NOT (CADR EXP))) (ELEM-FORM (CADR EXP)) (NOT (EVAL (CONS W (CONS Z D)) (FALSIFY ALIST)))) (NOT (EVAL (CONS W (CONS Z D)) (CONS (CADR EXP) (FALSIFY ALIST))))). This further simplifies, applying the lemmas CAR-CONS, CDR-CONS, CONS-EQUAL, ELEM-FORM-EVAL, and NOT-EVAL, and expanding the functions EQUAL and MEMBER, to: T. Case 1. (IMPLIES (AND (LISTP AUXLIST) (LISTP (CDR AUXLIST)) (IMPLIES (AND (NOT (NEG-LIST EXP (CDR AUXLIST))) (PROP-ATOMP-LIST (CDR AUXLIST)) (PROP-ATOMP EXP) (NOT (EVAL (MAKE-DISJUNCT (CDR AUXLIST)) (FALSIFY ALIST)))) (NOT (EVAL (MAKE-DISJUNCT (CDR AUXLIST)) (FALSIFY (CONS EXP ALIST))))) (NOT (NEG-LIST EXP AUXLIST)) (PROP-ATOMP-LIST AUXLIST) (PROP-ATOMP EXP) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY ALIST)))) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY (CONS EXP ALIST))))), which simplifies, rewriting with PROP-ATOMP-REDUC, CDR-CONS, CAR-CONS, OR-EVAL, and ELEM-FORM-EVAL, and unfolding the definitions of NOT, F-NOT, AND, FALSIFY, IMPLIES, NEG, NEG-LIST, PROP-ATOMP-LIST, F-OR, MAKE-DISJUNCT, EQUAL, and MEMBER, to the following four new goals: Case 1.4. (IMPLIES (AND (LISTP AUXLIST) (LISTP (CDR AUXLIST)) (NOT (EVAL (MAKE-DISJUNCT (CDR AUXLIST)) (CONS (CADR EXP) (FALSIFY ALIST)))) (NOT (EQUAL EXP (LIST 'NOT (CAR AUXLIST)))) (NOT (EQUAL (CAR AUXLIST) (LIST 'NOT EXP))) (NOT (NEG-LIST EXP (CDR AUXLIST))) (EQUAL (CAR AUXLIST) (LIST 'NOT (CADAR AUXLIST))) (ELEM-FORM (CADAR AUXLIST)) (PROP-ATOMP-LIST (CDR AUXLIST)) (ELEM-FORM EXP) (NOT (EVAL (CAR AUXLIST) (FALSIFY ALIST))) (NOT (EVAL (MAKE-DISJUNCT (CDR AUXLIST)) (FALSIFY ALIST))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EVAL (CAR AUXLIST) (CONS (CADR EXP) (FALSIFY ALIST))))). Appealing to the lemma CAR-CDR-ELIM, we now replace AUXLIST by (CONS Z X) to eliminate (CDR AUXLIST) and (CAR AUXLIST), Z by (CONS W V) to eliminate (CDR Z) and (CAR Z), and V by (CONS Z D) to eliminate (CAR V) and (CDR V). We must thus prove three new conjectures: Case 1.4.3. (IMPLIES (AND (NOT (LISTP Z)) (LISTP X) (NOT (EVAL (MAKE-DISJUNCT X) (CONS (CADR EXP) (FALSIFY ALIST)))) (NOT (EQUAL EXP (LIST 'NOT Z))) (NOT (EQUAL Z (LIST 'NOT EXP))) (NOT (NEG-LIST EXP X)) (EQUAL Z (LIST 'NOT (CADR Z))) (ELEM-FORM (CADR Z)) (PROP-ATOMP-LIST X) (ELEM-FORM EXP) (NOT (EVAL Z (FALSIFY ALIST))) (NOT (EVAL (MAKE-DISJUNCT X) (FALSIFY ALIST))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EVAL Z (CONS (CADR EXP) (FALSIFY ALIST))))), which further simplifies, obviously, to: T. Case 1.4.2. (IMPLIES (AND (NOT (LISTP V)) (LISTP X) (NOT (EVAL (MAKE-DISJUNCT X) (CONS (CADR EXP) (FALSIFY ALIST)))) (NOT (EQUAL EXP (LIST 'NOT (CONS W V)))) (NOT (EQUAL (CONS W V) (LIST 'NOT EXP))) (NOT (NEG-LIST EXP X)) (EQUAL (CONS W V) (LIST 'NOT (CAR V))) (ELEM-FORM (CAR V)) (PROP-ATOMP-LIST X) (ELEM-FORM EXP) (NOT (EVAL (CONS W V) (FALSIFY ALIST))) (NOT (EVAL (MAKE-DISJUNCT X) (FALSIFY ALIST))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EVAL (CONS W V) (CONS (CADR EXP) (FALSIFY ALIST))))). However this further simplifies, rewriting with CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and unfolding CONS, CAR, EQUAL, and CDR, to: T. Case 1.4.1. (IMPLIES (AND (LISTP X) (NOT (EVAL (MAKE-DISJUNCT X) (CONS (CADR EXP) (FALSIFY ALIST)))) (NOT (EQUAL EXP (LIST 'NOT (CONS W (CONS Z D))))) (NOT (EQUAL (CONS W (CONS Z D)) (LIST 'NOT EXP))) (NOT (NEG-LIST EXP X)) (EQUAL (CONS W (CONS Z D)) (LIST 'NOT Z)) (ELEM-FORM Z) (PROP-ATOMP-LIST X) (ELEM-FORM EXP) (NOT (EVAL (CONS W (CONS Z D)) (FALSIFY ALIST))) (NOT (EVAL (MAKE-DISJUNCT X) (FALSIFY ALIST))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EVAL (CONS W (CONS Z D)) (CONS (CADR EXP) (FALSIFY ALIST))))). However this further simplifies, rewriting with CAR-CONS, CDR-CONS, CONS-EQUAL, ELEM-FORM-EVAL, and NOT-EVAL, and opening up the definitions of EQUAL and MEMBER, to: T. Case 1.3. (IMPLIES (AND (LISTP AUXLIST) (LISTP (CDR AUXLIST)) (NOT (EVAL (MAKE-DISJUNCT (CDR AUXLIST)) (CONS (CADR EXP) (FALSIFY ALIST)))) (NOT (EQUAL EXP (LIST 'NOT (CAR AUXLIST)))) (NOT (EQUAL (CAR AUXLIST) (LIST 'NOT EXP))) (NOT (NEG-LIST EXP (CDR AUXLIST))) (EQUAL (CAR AUXLIST) (LIST 'NOT (CADAR AUXLIST))) (ELEM-FORM (CADAR AUXLIST)) (PROP-ATOMP-LIST (CDR AUXLIST)) (EQUAL EXP (LIST 'NOT (CADR EXP))) (ELEM-FORM (CADR EXP)) (NOT (EVAL (CAR AUXLIST) (FALSIFY ALIST))) (NOT (EVAL (MAKE-DISJUNCT (CDR AUXLIST)) (FALSIFY ALIST)))) (NOT (EVAL (CAR AUXLIST) (CONS (CADR EXP) (FALSIFY ALIST))))). Appealing to the lemma CAR-CDR-ELIM, we now replace AUXLIST by (CONS Z X) to eliminate (CDR AUXLIST) and (CAR AUXLIST), Z by (CONS W V) to eliminate (CDR Z) and (CAR Z), and V by (CONS Z D) to eliminate (CAR V) and (CDR V). The result is three new formulas: Case 1.3.3. (IMPLIES (AND (NOT (LISTP Z)) (LISTP X) (NOT (EVAL (MAKE-DISJUNCT X) (CONS (CADR EXP) (FALSIFY ALIST)))) (NOT (EQUAL EXP (LIST 'NOT Z))) (NOT (EQUAL Z (LIST 'NOT EXP))) (NOT (NEG-LIST EXP X)) (EQUAL Z (LIST 'NOT (CADR Z))) (ELEM-FORM (CADR Z)) (PROP-ATOMP-LIST X) (EQUAL EXP (LIST 'NOT (CADR EXP))) (ELEM-FORM (CADR EXP)) (NOT (EVAL Z (FALSIFY ALIST))) (NOT (EVAL (MAKE-DISJUNCT X) (FALSIFY ALIST)))) (NOT (EVAL Z (CONS (CADR EXP) (FALSIFY ALIST))))), which further simplifies, trivially, to: T. Case 1.3.2. (IMPLIES (AND (NOT (LISTP V)) (LISTP X) (NOT (EVAL (MAKE-DISJUNCT X) (CONS (CADR EXP) (FALSIFY ALIST)))) (NOT (EQUAL EXP (LIST 'NOT (CONS W V)))) (NOT (EQUAL (CONS W V) (LIST 'NOT EXP))) (NOT (NEG-LIST EXP X)) (EQUAL (CONS W V) (LIST 'NOT (CAR V))) (ELEM-FORM (CAR V)) (PROP-ATOMP-LIST X) (EQUAL EXP (LIST 'NOT (CADR EXP))) (ELEM-FORM (CADR EXP)) (NOT (EVAL (CONS W V) (FALSIFY ALIST))) (NOT (EVAL (MAKE-DISJUNCT X) (FALSIFY ALIST)))) (NOT (EVAL (CONS W V) (CONS (CADR EXP) (FALSIFY ALIST))))). But this further simplifies, applying CAR-NLISTP, CAR-CONS, CDR-CONS, and CONS-EQUAL, and opening up the functions CONS, CAR, EQUAL, and CDR, to: T. Case 1.3.1. (IMPLIES (AND (LISTP X) (NOT (EVAL (MAKE-DISJUNCT X) (CONS (CADR EXP) (FALSIFY ALIST)))) (NOT (EQUAL EXP (LIST 'NOT (CONS W (CONS Z D))))) (NOT (EQUAL (CONS W (CONS Z D)) (LIST 'NOT EXP))) (NOT (NEG-LIST EXP X)) (EQUAL (CONS W (CONS Z D)) (LIST 'NOT Z)) (ELEM-FORM Z) (PROP-ATOMP-LIST X) (EQUAL EXP (LIST 'NOT (CADR EXP))) (ELEM-FORM (CADR EXP)) (NOT (EVAL (CONS W (CONS Z D)) (FALSIFY ALIST))) (NOT (EVAL (MAKE-DISJUNCT X) (FALSIFY ALIST)))) (NOT (EVAL (CONS W (CONS Z D)) (CONS (CADR EXP) (FALSIFY ALIST))))). But this further simplifies, applying CAR-CONS, CDR-CONS, CONS-EQUAL, ELEM-FORM-EVAL, and NOT-EVAL, and unfolding EQUAL and MEMBER, to: T. Case 1.2. (IMPLIES (AND (LISTP AUXLIST) (LISTP (CDR AUXLIST)) (NOT (EVAL (MAKE-DISJUNCT (CDR AUXLIST)) (CONS (CADR EXP) (FALSIFY ALIST)))) (NOT (EQUAL EXP (LIST 'NOT (CAR AUXLIST)))) (NOT (EQUAL (CAR AUXLIST) (LIST 'NOT EXP))) (NOT (NEG-LIST EXP (CDR AUXLIST))) (ELEM-FORM (CAR AUXLIST)) (PROP-ATOMP-LIST (CDR AUXLIST)) (ELEM-FORM EXP) (NOT (MEMBER (CAR AUXLIST) (FALSIFY ALIST))) (NOT (EVAL (MAKE-DISJUNCT (CDR AUXLIST)) (FALSIFY ALIST))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (MEMBER (CAR AUXLIST) (CONS (CADR EXP) (FALSIFY ALIST))))). However this again simplifies, rewriting with CAR-CONS and CDR-CONS, and expanding the function MEMBER, to the new formula: (IMPLIES (AND (LISTP AUXLIST) (LISTP (CDR AUXLIST)) (NOT (EVAL (MAKE-DISJUNCT (CDR AUXLIST)) (CONS (CADR EXP) (FALSIFY ALIST)))) (NOT (EQUAL EXP (LIST 'NOT (CAR AUXLIST)))) (NOT (EQUAL (CAR AUXLIST) (LIST 'NOT EXP))) (NOT (NEG-LIST EXP (CDR AUXLIST))) (ELEM-FORM (CAR AUXLIST)) (PROP-ATOMP-LIST (CDR AUXLIST)) (ELEM-FORM EXP) (NOT (MEMBER (CAR AUXLIST) (FALSIFY ALIST))) (NOT (EVAL (MAKE-DISJUNCT (CDR AUXLIST)) (FALSIFY ALIST))) (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EQUAL (CAR AUXLIST) (CADR EXP)))), which again simplifies, rewriting with CAR-CONS, to: T. Case 1.1. (IMPLIES (AND (LISTP AUXLIST) (LISTP (CDR AUXLIST)) (NOT (EVAL (MAKE-DISJUNCT (CDR AUXLIST)) (CONS (CADR EXP) (FALSIFY ALIST)))) (NOT (EQUAL EXP (LIST 'NOT (CAR AUXLIST)))) (NOT (EQUAL (CAR AUXLIST) (LIST 'NOT EXP))) (NOT (NEG-LIST EXP (CDR AUXLIST))) (ELEM-FORM (CAR AUXLIST)) (PROP-ATOMP-LIST (CDR AUXLIST)) (EQUAL EXP (LIST 'NOT (CADR EXP))) (ELEM-FORM (CADR EXP)) (NOT (MEMBER (CAR AUXLIST) (FALSIFY ALIST))) (NOT (EVAL (MAKE-DISJUNCT (CDR AUXLIST)) (FALSIFY ALIST)))) (NOT (EQUAL (CAR AUXLIST) (CADR EXP)))). But this again simplifies, rewriting with CAR-CONS, to: T. Q.E.D. [ 0.0 0.4 0.1 ] PROP-ATOMP-AUXLIST2 (PROVE-LEMMA PROP-ATOMP-FALSIFY (REWRITE) (IMPLIES (AND (PROP-ATOMP EXP) (NOT (NEG-LIST EXP AUXLIST)) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST)))) (NOT (EVAL (MAKE-DISJUNCT (CONS EXP AUXLIST)) (FALSIFY (CONS EXP AUXLIST))))) ((DISABLE ELEM-FORM PROP-ATOMP PROP-ATOMP-REDUC PROP-ATOMP-LIST NEG-LIST-REDUC NEG-LIST FORMULA FALSIFY))) This formula simplifies, applying CAR-CONS and CDR-CONS, and expanding the functions F-OR and MAKE-DISJUNCT, to two new goals: Case 2. (IMPLIES (AND (PROP-ATOMP EXP) (NOT (NEG-LIST EXP AUXLIST)) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (NOT (LISTP AUXLIST))) (NOT (EVAL EXP (FALSIFY (CONS EXP AUXLIST))))), which again simplifies, applying the lemmas NLISTP-NEG-LIST, NLISTP-EVAL, and PROP-ATOMP-AUXLIST, and expanding the function MAKE-DISJUNCT, to: T. Case 1. (IMPLIES (AND (PROP-ATOMP EXP) (NOT (NEG-LIST EXP AUXLIST)) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (LISTP AUXLIST)) (NOT (EVAL (LIST 'OR EXP (MAKE-DISJUNCT AUXLIST)) (FALSIFY (CONS EXP AUXLIST))))), which again simplifies, rewriting with the lemmas CAR-CONS, CDR-CONS, PROP-ATOMP-AUXLIST, PROP-ATOMP-AUXLIST2, and OR-EVAL, and opening up the definition of EQUAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] PROP-ATOMP-FALSIFY (TOGGLE G0268 PROP-ATOMP NIL) [ 0.0 0.0 0.0 ] G0268 (TOGGLE G0269 ELEM-FORM NIL) [ 0.0 0.0 0.0 ] G0269 (TOGGLE G0204 ATOMP T) [ 0.0 0.0 0.0 ] G0204 (PROVE-LEMMA FORMULA-CASES1 NIL (IMPLIES (FORMULA EXP T 0) (OR (PROP-ATOMP EXP) (OR-TYPE EXP) (NOR-TYPE EXP) (DBLE-NEG-TYPE EXP)))) This conjecture can be simplified, using the abbreviations FORSOME, ELEM-FORM, PROP-ATOMP, OR, and IMPLIES, to: (IMPLIES (AND (FORMULA EXP T 0) (NOT (ATOMP EXP)) (NOT (EQUAL EXP (LIST 'FORSOME (CADR EXP) (CADDR EXP)))) (NOT (NEG-ELEM-FORM EXP)) (NOT (OR-TYPE EXP)) (NOT (NOR-TYPE EXP))) (DBLE-NEG-TYPE EXP)). This simplifies, opening up ELEM-FORM, FORSOME, ARG1, F-NOT, NEG-ELEM-FORM, F-OR, OR-TYPE, NOR-TYPE, and DBLE-NEG-TYPE, to the following two new goals: Case 2. (IMPLIES (AND (FORMULA EXP T 0) (NOT (ATOMP EXP)) (NOT (EQUAL EXP (LIST 'FORSOME (CADR EXP) (CADDR EXP)))) (NOT (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP)))) (NOT (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))))) (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP))))). Appealing to the lemma CAR-CDR-ELIM, we now replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), W by (CONS X D) to eliminate (CAR W) and (CDR W), V by (CONS C W) to eliminate (CDR V) and (CAR V), W by (CONS V X1) to eliminate (CAR W) and (CDR W), X1 by (CONS W Z1) to eliminate (CAR X1) and (CDR X1), V by (CONS D X) to eliminate (CDR V) and (CAR V), X by (CONS V C) to eliminate (CAR X) and (CDR X), and C by (CONS X X1) to eliminate (CAR C) and (CDR C). We must thus prove ten new goals: Case 2.10. (IMPLIES (AND (NOT (LISTP EXP)) (FORMULA EXP T 0) (NOT (ATOMP EXP)) (NOT (EQUAL EXP (LIST 'FORSOME (CADR EXP) (CADDR EXP)))) (NOT (EQUAL EXP (LIST 'NOT (CADR EXP)))) (NOT (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP)))) (NOT (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))))) (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP))))), which further simplifies, opening up the functions EQUAL and FORMULA, to: T. Case 2.9. (IMPLIES (AND (NOT (LISTP X)) (FORMULA (CONS Z X) T 0) (NOT (ATOMP (CONS Z X))) (NOT (EQUAL (CONS Z X) (LIST 'FORSOME (CAR X) (CADR X)))) (NOT (EQUAL (CONS Z X) (LIST 'NOT (CAR X)))) (NOT (EQUAL (CONS Z X) (LIST 'OR (CAR X) (CADR X)))) (NOT (EQUAL (CONS Z X) (LIST 'NOT (LIST 'OR (CADAR X) (CADDAR X)))))) (EQUAL (CONS Z X) (LIST 'NOT (LIST 'NOT (CADAR X))))), which further simplifies, applying the lemmas CAR-NLISTP, CDR-CONS, and CAR-CONS, and unfolding the functions VARIABLE, EQUAL, FORMULA, and NUMBERP, to: T. Case 2.8. (IMPLIES (AND (NOT (LISTP V)) (NOT (LISTP W)) (FORMULA (CONS Z (CONS V W)) T 0) (NOT (ATOMP (CONS Z (CONS V W)))) (NOT (EQUAL (CONS Z (CONS V W)) (LIST 'FORSOME V (CAR W)))) (NOT (EQUAL (CONS Z (CONS V W)) (LIST 'NOT V))) (NOT (EQUAL (CONS Z (CONS V W)) (LIST 'OR V (CAR W)))) (NOT (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'OR (CADR V) (CADDR V)))))) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'NOT (CADR V))))), which further simplifies, applying the lemmas CDR-CONS and CAR-CONS, and unfolding the functions EQUAL, FORMULA, SUB1, and NUMBERP, to: T. Case 2.7. (IMPLIES (AND (NOT (LISTP X)) (NOT (LISTP W)) (FORMULA (CONS Z (CONS (CONS D X) W)) T 0) (NOT (ATOMP (CONS Z (CONS (CONS D X) W)))) (NOT (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'FORSOME (CONS D X) (CAR W)))) (NOT (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (CONS D X)))) (NOT (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'OR (CONS D X) (CAR W)))) (NOT (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'OR (CAR X) (CADR X)))))) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'NOT (CAR X))))), which further simplifies, rewriting with CDR-CONS, CAR-CONS, and CAR-NLISTP, and expanding the functions EQUAL, FORMULA, SUB1, NUMBERP, VARIABLE, CAR, and CONS, to: T. Case 2.6. (IMPLIES (AND (NOT (LISTP C)) (NOT (LISTP W)) (FORMULA (CONS Z (CONS (CONS D (CONS V C)) W)) T 0) (NOT (ATOMP (CONS Z (CONS (CONS D (CONS V C)) W)))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'FORSOME (CONS D (CONS V C)) (CAR W)))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (CONS D (CONS V C))))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'OR (CONS D (CONS V C)) (CAR W)))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'OR V (CAR C)))))) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'NOT V)))). This further simplifies, appealing to the lemmas CDR-CONS and CAR-CONS, and expanding the functions EQUAL, FORMULA, SUB1, NUMBERP, CAR, and CONS, to: T. Case 2.5. (IMPLIES (AND (NOT (LISTP W)) (FORMULA (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) T 0) (NOT (ATOMP (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'FORSOME (CONS D (CONS V (CONS X X1))) (CAR W)))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (CONS D (CONS V (CONS X X1)))))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'OR (CONS D (CONS V (CONS X X1))) (CAR W)))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'OR V X))))) (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'NOT V)))), which further simplifies, appealing to the lemmas CDR-CONS and CAR-CONS, and unfolding EQUAL, FORMULA, SUB1, NUMBERP, CAR, and CONS, to: T. Case 2.4. (IMPLIES (AND (NOT (LISTP V)) (FORMULA (CONS Z (CONS V (CONS X D))) T 0) (NOT (ATOMP (CONS Z (CONS V (CONS X D))))) (NOT (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'FORSOME V X))) (NOT (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'NOT V))) (NOT (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'OR V X))) (NOT (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'NOT (LIST 'OR (CADR V) (CADDR V)))))) (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'NOT (LIST 'NOT (CADR V))))), which further simplifies, rewriting with CDR-CONS and CAR-CONS, and expanding EQUAL, FORMULA, SUB1, and NUMBERP, to: T. Case 2.3. (IMPLIES (AND (NOT (LISTP W)) (FORMULA (CONS Z (CONS (CONS C W) (CONS X D))) T 0) (NOT (ATOMP (CONS Z (CONS (CONS C W) (CONS X D))))) (NOT (EQUAL (CONS Z (CONS (CONS C W) (CONS X D))) (LIST 'FORSOME (CONS C W) X))) (NOT (EQUAL (CONS Z (CONS (CONS C W) (CONS X D))) (LIST 'NOT (CONS C W)))) (NOT (EQUAL (CONS Z (CONS (CONS C W) (CONS X D))) (LIST 'OR (CONS C W) X))) (NOT (EQUAL (CONS Z (CONS (CONS C W) (CONS X D))) (LIST 'NOT (LIST 'OR (CAR W) (CADR W)))))) (EQUAL (CONS Z (CONS (CONS C W) (CONS X D))) (LIST 'NOT (LIST 'NOT (CAR W))))). However this further simplifies, applying CDR-CONS, CAR-CONS, and CAR-NLISTP, and opening up the functions EQUAL, FORMULA, SUB1, NUMBERP, and VARIABLE, to: T. Case 2.2. (IMPLIES (AND (NOT (LISTP X1)) (FORMULA (CONS Z (CONS (CONS C (CONS V X1)) (CONS X D))) T 0) (NOT (ATOMP (CONS Z (CONS (CONS C (CONS V X1)) (CONS X D))))) (NOT (EQUAL (CONS Z (CONS (CONS C (CONS V X1)) (CONS X D))) (LIST 'FORSOME (CONS C (CONS V X1)) X))) (NOT (EQUAL (CONS Z (CONS (CONS C (CONS V X1)) (CONS X D))) (LIST 'NOT (CONS C (CONS V X1))))) (NOT (EQUAL (CONS Z (CONS (CONS C (CONS V X1)) (CONS X D))) (LIST 'OR (CONS C (CONS V X1)) X))) (NOT (EQUAL (CONS Z (CONS (CONS C (CONS V X1)) (CONS X D))) (LIST 'NOT (LIST 'OR V (CAR X1)))))) (EQUAL (CONS Z (CONS (CONS C (CONS V X1)) (CONS X D))) (LIST 'NOT (LIST 'NOT V)))). However this further simplifies, applying CDR-CONS and CAR-CONS, and unfolding EQUAL, FORMULA, SUB1, and NUMBERP, to: T. Case 2.1. (IMPLIES (AND (FORMULA (CONS Z (CONS (CONS C (CONS V (CONS W Z1))) (CONS X D))) T 0) (NOT (ATOMP (CONS Z (CONS (CONS C (CONS V (CONS W Z1))) (CONS X D))))) (NOT (EQUAL (CONS Z (CONS (CONS C (CONS V (CONS W Z1))) (CONS X D))) (LIST 'FORSOME (CONS C (CONS V (CONS W Z1))) X))) (NOT (EQUAL (CONS Z (CONS (CONS C (CONS V (CONS W Z1))) (CONS X D))) (LIST 'NOT (CONS C (CONS V (CONS W Z1)))))) (NOT (EQUAL (CONS Z (CONS (CONS C (CONS V (CONS W Z1))) (CONS X D))) (LIST 'OR (CONS C (CONS V (CONS W Z1))) X))) (NOT (EQUAL (CONS Z (CONS (CONS C (CONS V (CONS W Z1))) (CONS X D))) (LIST 'NOT (LIST 'OR V W))))) (EQUAL (CONS Z (CONS (CONS C (CONS V (CONS W Z1))) (CONS X D))) (LIST 'NOT (LIST 'NOT V)))). This further simplifies, rewriting with CDR-CONS and CAR-CONS, and opening up the definitions of EQUAL, FORMULA, SUB1, and NUMBERP, to: T. Case 1. (IMPLIES (AND (FORMULA EXP T 0) (NOT (ATOMP EXP)) (NOT (EQUAL EXP (LIST 'FORSOME (CADR EXP) (CADDR EXP)))) (NOT (ATOMP (CADR EXP))) (NOT (EQUAL (CADR EXP) (LIST 'FORSOME (CADADR EXP) (CADDADR EXP)))) (NOT (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP)))) (NOT (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))))) (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP))))). Appealing to the lemma CAR-CDR-ELIM, we now replace EXP by (CONS Z X) to eliminate (CDR EXP) and (CAR EXP), X by (CONS V W) to eliminate (CAR X) and (CDR X), W by (CONS X D) to eliminate (CAR W) and (CDR W), V by (CONS C W) to eliminate (CDR V) and (CAR V), W by (CONS V X1) to eliminate (CAR W) and (CDR W), X1 by (CONS W Z1) to eliminate (CAR X1) and (CDR X1), V by (CONS D X) to eliminate (CDR V) and (CAR V), X by (CONS V C) to eliminate (CAR X) and (CDR X), and C by (CONS X X1) to eliminate (CAR C) and (CDR C). The result is ten new goals: Case 1.10. (IMPLIES (AND (NOT (LISTP EXP)) (FORMULA EXP T 0) (NOT (ATOMP EXP)) (NOT (EQUAL EXP (LIST 'FORSOME (CADR EXP) (CADDR EXP)))) (NOT (ATOMP (CADR EXP))) (NOT (EQUAL (CADR EXP) (LIST 'FORSOME (CADADR EXP) (CADDADR EXP)))) (NOT (EQUAL EXP (LIST 'OR (CADR EXP) (CADDR EXP)))) (NOT (EQUAL EXP (LIST 'NOT (LIST 'OR (CADADR EXP) (CADDADR EXP)))))) (EQUAL EXP (LIST 'NOT (LIST 'NOT (CADADR EXP))))), which further simplifies, expanding the functions EQUAL and FORMULA, to: T. Case 1.9. (IMPLIES (AND (NOT (LISTP X)) (FORMULA (CONS Z X) T 0) (NOT (ATOMP (CONS Z X))) (NOT (EQUAL (CONS Z X) (LIST 'FORSOME (CAR X) (CADR X)))) (NOT (ATOMP (CAR X))) (NOT (EQUAL (CAR X) (LIST 'FORSOME (CADAR X) (CADDAR X)))) (NOT (EQUAL (CONS Z X) (LIST 'OR (CAR X) (CADR X)))) (NOT (EQUAL (CONS Z X) (LIST 'NOT (LIST 'OR (CADAR X) (CADDAR X)))))) (EQUAL (CONS Z X) (LIST 'NOT (LIST 'NOT (CADAR X))))), which further simplifies, applying CAR-NLISTP, CDR-CONS, and CAR-CONS, and opening up the definitions of VARIABLE, EQUAL, FORMULA, and NUMBERP, to: T. Case 1.8. (IMPLIES (AND (NOT (LISTP V)) (NOT (LISTP W)) (FORMULA (CONS Z (CONS V W)) T 0) (NOT (ATOMP (CONS Z (CONS V W)))) (NOT (EQUAL (CONS Z (CONS V W)) (LIST 'FORSOME V (CAR W)))) (NOT (ATOMP V)) (NOT (EQUAL V (LIST 'FORSOME (CADR V) (CADDR V)))) (NOT (EQUAL (CONS Z (CONS V W)) (LIST 'OR V (CAR W)))) (NOT (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'OR (CADR V) (CADDR V)))))) (EQUAL (CONS Z (CONS V W)) (LIST 'NOT (LIST 'NOT (CADR V))))). However this further simplifies, applying CDR-CONS and CAR-CONS, and expanding the definitions of EQUAL, FORMULA, SUB1, and NUMBERP, to: T. Case 1.7. (IMPLIES (AND (NOT (LISTP X)) (NOT (LISTP W)) (FORMULA (CONS Z (CONS (CONS D X) W)) T 0) (NOT (ATOMP (CONS Z (CONS (CONS D X) W)))) (NOT (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'FORSOME (CONS D X) (CAR W)))) (NOT (ATOMP (CONS D X))) (NOT (EQUAL (CONS D X) (LIST 'FORSOME (CAR X) (CADR X)))) (NOT (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'OR (CONS D X) (CAR W)))) (NOT (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'OR (CAR X) (CADR X)))))) (EQUAL (CONS Z (CONS (CONS D X) W)) (LIST 'NOT (LIST 'NOT (CAR X))))). However this further simplifies, rewriting with CDR-CONS, CAR-CONS, and CAR-NLISTP, and expanding EQUAL, FORMULA, SUB1, NUMBERP, and VARIABLE, to: T. Case 1.6. (IMPLIES (AND (NOT (LISTP C)) (NOT (LISTP W)) (FORMULA (CONS Z (CONS (CONS D (CONS V C)) W)) T 0) (NOT (ATOMP (CONS Z (CONS (CONS D (CONS V C)) W)))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'FORSOME (CONS D (CONS V C)) (CAR W)))) (NOT (ATOMP (CONS D (CONS V C)))) (NOT (EQUAL (CONS D (CONS V C)) (LIST 'FORSOME V (CAR C)))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'OR (CONS D (CONS V C)) (CAR W)))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'OR V (CAR C)))))) (EQUAL (CONS Z (CONS (CONS D (CONS V C)) W)) (LIST 'NOT (LIST 'NOT V)))). However this further simplifies, rewriting with CDR-CONS and CAR-CONS, and opening up the functions EQUAL, FORMULA, SUB1, NUMBERP, CAR, and CONS, to: T. Case 1.5. (IMPLIES (AND (NOT (LISTP W)) (FORMULA (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) T 0) (NOT (ATOMP (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'FORSOME (CONS D (CONS V (CONS X X1))) (CAR W)))) (NOT (ATOMP (CONS D (CONS V (CONS X X1))))) (NOT (EQUAL (CONS D (CONS V (CONS X X1))) (LIST 'FORSOME V X))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'OR (CONS D (CONS V (CONS X X1))) (CAR W)))) (NOT (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'OR V X))))) (EQUAL (CONS Z (CONS (CONS D (CONS V (CONS X X1))) W)) (LIST 'NOT (LIST 'NOT V)))). But this further simplifies, rewriting with CDR-CONS and CAR-CONS, and unfolding the functions EQUAL, FORMULA, SUB1, NUMBERP, CAR, and CONS, to: T. Case 1.4. (IMPLIES (AND (NOT (LISTP V)) (FORMULA (CONS Z (CONS V (CONS X D))) T 0) (NOT (ATOMP (CONS Z (CONS V (CONS X D))))) (NOT (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'FORSOME V X))) (NOT (ATOMP V)) (NOT (EQUAL V (LIST 'FORSOME (CADR V) (CADDR V)))) (NOT (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'OR V X))) (NOT (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'NOT (LIST 'OR (CADR V) (CADDR V)))))) (EQUAL (CONS Z (CONS V (CONS X D))) (LIST 'NOT (LIST 'NOT (CADR V))))). But this further simplifies, rewriting with CDR-CONS and CAR-CONS, and unfolding the definitions of EQUAL, FORMULA, SUB1, and NUMBERP, to: T. Case 1.3. (IMPLIES (AND (NOT (LISTP W)) (FORMULA (CONS Z (CONS (CONS C W) (CONS X D))) T 0) (NOT (ATOMP (CONS Z (CONS (CONS C W) (CONS X D))))) (NOT (EQUAL (CONS Z (CONS (CONS C W) (CONS X D))) (LIST 'FORSOME (CONS C W) X))) (NOT (ATOMP (CONS C W))) (NOT (EQUAL (CONS C W) (LIST 'FORSOME (CAR W) (CADR W)))) (NOT (EQUAL (CONS Z (CONS (CONS C W) (CONS X D))) (LIST 'OR (CONS C W) X))) (NOT (EQUAL (CONS Z (CONS (CONS C W) (CONS X D))) (LIST 'NOT (LIST 'OR (CAR W) (CADR W)))))) (EQUAL (CONS Z (CONS (CONS C W) (CONS X D))) (LIST 'NOT (LIST 'NOT (CAR W))))). But this further simplifies, rewriting with CDR-CONS, CAR-CONS, and CAR-NLISTP, and unfolding the functions EQUAL, FORMULA, SUB1, NUMBERP, and VARIABLE, to: T. Case 1.2. (IMPLIES (AND (NOT (LISTP X1)) (FORMULA (CONS Z (CONS (CONS C (CONS V X1)) (CONS X D))) T 0) (NOT (ATOMP (CONS Z (CONS (CONS C (CONS V X1)) (CONS X D))))) (NOT (EQUAL (CONS Z (CONS (CONS C (CONS V X1)) (CONS X D))) (LIST 'FORSOME (CONS C (CONS V X1)) X))) (NOT (ATOMP (CONS C (CONS V X1)))) (NOT (EQUAL (CONS C (CONS V X1)) (LIST 'FORSOME V (CAR X1)))) (NOT (EQUAL (CONS Z (CONS (CONS C (CONS V X1)) (CONS X D))) (LIST 'OR (CONS C (CONS V X1)) X))) (NOT (EQUAL (CONS Z (CONS (CONS C (CONS V X1)) (CONS X D))) (LIST 'NOT (LIST 'OR V (CAR X1)))))) (EQUAL (CONS Z (CONS (CONS C (CONS V X1)) (CONS X D))) (LIST 'NOT (LIST 'NOT V)))). This further simplifies, applying CDR-CONS and CAR-CONS, and opening up EQUAL, FORMULA, SUB1, NUMBERP, CAR, and CONS, to: T. Case 1.1. (IMPLIES (AND (FORMULA (CONS Z (CONS (CONS C (CONS V (CONS W Z1))) (CONS X D))) T 0) (NOT (ATOMP (CONS Z (CONS (CONS C (CONS V (CONS W Z1))) (CONS X D))))) (NOT (EQUAL (CONS Z (CONS (CONS C (CONS V (CONS W Z1))) (CONS X D))) (LIST 'FORSOME (CONS C (CONS V (CONS W Z1))) X))) (NOT (ATOMP (CONS C (CONS V (CONS W Z1))))) (NOT (EQUAL (CONS C (CONS V (CONS W Z1))) (LIST 'FORSOME V W))) (NOT (EQUAL (CONS Z (CONS (CONS C (CONS V (CONS W Z1))) (CONS X D))) (LIST 'OR (CONS C (CONS V (CONS W Z1))) X))) (NOT (EQUAL (CONS Z (CONS (CONS C (CONS V (CONS W Z1))) (CONS X D))) (LIST 'NOT (LIST 'OR V W))))) (EQUAL (CONS Z (CONS (CONS C (CONS V (CONS W Z1))) (CONS X D))) (LIST 'NOT (LIST 'NOT V)))). However this further simplifies, appealing to the lemmas CDR-CONS and CAR-CONS, and opening up the functions EQUAL, FORMULA, SUB1, and NUMBERP, to: T. Q.E.D. [ 0.0 0.5 0.1 ] FORMULA-CASES1 (TOGGLE G0205 ATOMP NIL) [ 0.0 0.0 0.0 ] G0205 (TOGGLE G0296 PROP-ATOMP T) [ 0.0 0.0 0.0 ] G0296 (TOGGLE G0297 OR-TYPE T) [ 0.0 0.0 0.0 ] G0297 (TOGGLE G0298 NOR-TYPE T) [ 0.0 0.0 0.0 ] G0298 (TOGGLE G0299 DBLE-NEG-TYPE T) [ 0.0 0.0 0.0 ] G0299 (PROVE-LEMMA FORMULA-CASES (REWRITE) (IMPLIES (AND (NOT (DBLE-NEG-TYPE EXP)) (NOT (NOR-TYPE EXP)) (NOT (OR-TYPE EXP)) (NOT (PROP-ATOMP EXP))) (NOT (FORMULA EXP T 0))) ((DISABLE FORMULA PROP-ATOMP-REDUC) (USE (FORMULA-CASES1)))) This conjecture simplifies, expanding the definitions of OR and IMPLIES, to: T. Q.E.D. [ 0.0 0.0 0.0 ] FORMULA-CASES (DEFN FALSIFY-TAUT (FLIST AUXLIST) (IF (NLISTP FLIST) (FALSIFY AUXLIST) (IF (PROP-ATOMP (CAR FLIST)) (IF (NEG-LIST (CAR FLIST) AUXLIST) F (FALSIFY-TAUT (CDR FLIST) (CONS (CAR FLIST) AUXLIST))) (IF (OR-TYPE (CAR FLIST)) (FALSIFY-TAUT (CONS (CADAR FLIST) (CONS (CADDAR FLIST) (CDR FLIST))) AUXLIST) (IF (NOR-TYPE (CAR FLIST)) (IF (FALSIFY-TAUT (CONS (F-NOT (CADDADAR FLIST)) (CDR FLIST)) AUXLIST) (FALSIFY-TAUT (CONS (F-NOT (CADDADAR FLIST)) (CDR FLIST)) AUXLIST) (FALSIFY-TAUT (CONS (F-NOT (CADADAR FLIST)) (CDR FLIST)) AUXLIST)) (IF (DBLE-NEG-TYPE (CAR FLIST)) (FALSIFY-TAUT (CONS (CADADAR FLIST) (CDR FLIST)) AUXLIST) NIL))))) ((LESSP (LIST-COUNT FLIST)))) Linear arithmetic, the lemmas CAR-CONS, NEG-LIST-REDUC, PROP-ATOMP-REDUC, LESSP-LIST-COUNT, OR-TYPE-LIST-COUNT, NOR-TYPE-LIST-COUNT2, NOR-TYPE-LIST-COUNT1, and DBLE-NEG-LIST-COUNT, and the definitions of F-NOT, ELEM-FORM, DEGREE, ATOMP, FORSOME, and NLISTP establish that the measure (LIST-COUNT FLIST) decreases according to the well-founded relation LESSP in each recursive call. Hence, FALSIFY-TAUT is accepted under the principle of definition. Observe that: (OR (FALSEP (FALSIFY-TAUT FLIST AUXLIST)) (LITATOM (FALSIFY-TAUT FLIST AUXLIST)) (LISTP (FALSIFY-TAUT FLIST AUXLIST))) is a theorem. [ 0.0 0.3 0.0 ] FALSIFY-TAUT (PROVE-LEMMA APPEND-NLISTP (REWRITE) (IMPLIES (NLISTP X) (EQUAL (APPEND X Y) Y))) This formula can be simplified, using the abbreviations NLISTP and IMPLIES, to the new conjecture: (IMPLIES (NOT (LISTP X)) (EQUAL (APPEND X Y) Y)), which simplifies, opening up APPEND, to: T. Q.E.D. [ 0.0 0.0 0.0 ] APPEND-NLISTP (PROVE-LEMMA NOT-FALSIFY-TAUT (REWRITE) (EQUAL (TAUTOLOGYP1 FLIST AUXLIST) (NOT (FALSIFY-TAUT FLIST AUXLIST))) ((INDUCT (TAUTOLOGYP1 FLIST AUXLIST)) (DISABLE NEG-LIST NEG-LIST-REDUC FORMULA PROP-ATOMP-REDUC))) This formula can be simplified, using the abbreviations NLISTP, NOT, OR, AND, F-NOT, ARG2, and ARG1, to the following six new goals: Case 6. (IMPLIES (NOT (LISTP FLIST)) (EQUAL (TAUTOLOGYP1 FLIST AUXLIST) (NOT (FALSIFY-TAUT FLIST AUXLIST)))). This simplifies, opening up the definitions of TAUTOLOGYP1, FALSIFY-TAUT, NOT, and EQUAL, to: T. Case 5. (IMPLIES (AND (LISTP FLIST) (PROP-ATOMP (CAR FLIST)) (EQUAL (TAUTOLOGYP1 (CDR FLIST) (CONS (CAR FLIST) AUXLIST)) (NOT (FALSIFY-TAUT (CDR FLIST) (CONS (CAR FLIST) AUXLIST))))) (EQUAL (TAUTOLOGYP1 FLIST AUXLIST) (NOT (FALSIFY-TAUT FLIST AUXLIST)))). This simplifies, expanding NOT, TAUTOLOGYP1, FALSIFY-TAUT, and EQUAL, to: T. Case 4. (IMPLIES (AND (LISTP FLIST) (NOT (PROP-ATOMP (CAR FLIST))) (OR-TYPE (CAR FLIST)) (EQUAL (TAUTOLOGYP1 (CONS (CADAR FLIST) (CONS (CADDAR FLIST) (CDR FLIST))) AUXLIST) (NOT (FALSIFY-TAUT (CONS (CADAR FLIST) (CONS (CADDAR FLIST) (CDR FLIST))) AUXLIST)))) (EQUAL (TAUTOLOGYP1 FLIST AUXLIST) (NOT (FALSIFY-TAUT FLIST AUXLIST)))). This simplifies, rewriting with OR-TYPE-NOT-PROP-ATOMP, and unfolding NOT, ARG2, ARG1, TAUTOLOGYP1, FALSIFY-TAUT, and EQUAL, to: T. Case 3. (IMPLIES (AND (LISTP FLIST) (NOT (PROP-ATOMP (CAR FLIST))) (NOT (OR-TYPE (CAR FLIST))) (NOR-TYPE (CAR FLIST)) (EQUAL (TAUTOLOGYP1 (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST)) AUXLIST) (NOT (FALSIFY-TAUT (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST)) AUXLIST))) (EQUAL (TAUTOLOGYP1 (CONS (LIST 'NOT (CADADAR FLIST)) (CDR FLIST)) AUXLIST) (NOT (FALSIFY-TAUT (CONS (LIST 'NOT (CADADAR FLIST)) (CDR FLIST)) AUXLIST)))) (EQUAL (TAUTOLOGYP1 FLIST AUXLIST) (NOT (FALSIFY-TAUT FLIST AUXLIST)))), which simplifies, applying NOR-TYPE-NOT-PROP-ATOMP, and expanding the functions NOT, ARG2, F-NOT, ARG1, TAUTOLOGYP1, FALSIFY-TAUT, and EQUAL, to: T. Case 2. (IMPLIES (AND (LISTP FLIST) (NOT (PROP-ATOMP (CAR FLIST))) (NOT (OR-TYPE (CAR FLIST))) (NOT (NOR-TYPE (CAR FLIST))) (DBLE-NEG-TYPE (CAR FLIST)) (EQUAL (TAUTOLOGYP1 (CONS (CADADAR FLIST) (CDR FLIST)) AUXLIST) (NOT (FALSIFY-TAUT (CONS (CADADAR FLIST) (CDR FLIST)) AUXLIST)))) (EQUAL (TAUTOLOGYP1 FLIST AUXLIST) (NOT (FALSIFY-TAUT FLIST AUXLIST)))). This simplifies, applying the lemma DBLE-NEG-NOT-PROP-ATOMP, and expanding the definitions of NOT, ARG1, TAUTOLOGYP1, FALSIFY-TAUT, and EQUAL, to: T. Case 1. (IMPLIES (AND (LISTP FLIST) (NOT (PROP-ATOMP (CAR FLIST))) (NOT (OR-TYPE (CAR FLIST))) (NOT (NOR-TYPE (CAR FLIST))) (NOT (DBLE-NEG-TYPE (CAR FLIST)))) (EQUAL (TAUTOLOGYP1 FLIST AUXLIST) (NOT (FALSIFY-TAUT FLIST AUXLIST)))). This simplifies, expanding TAUTOLOGYP1, FALSIFY-TAUT, NOT, and EQUAL, to: T. Q.E.D. [ 0.0 0.1 0.0 ] NOT-FALSIFY-TAUT (PROVE-LEMMA NOT-TAUT-FALSE (REWRITE) (IMPLIES (AND (FORM-LIST FLIST) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (NOT (TAUTOLOGYP1 FLIST AUXLIST))) (NOT (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) (FALSIFY-TAUT FLIST AUXLIST)))) ((INDUCT (FALSIFY-TAUT FLIST AUXLIST)) (DISABLE NEG-LIST EVAL-MAKE-DISJUNCT NEG-LIST-REDUC PROP-ATOMP-REDUC FORMULA FALSIFY APPEND NOR-TYPE))) This formula can be simplified, using the abbreviations NOT-FALSIFY-TAUT, IMPLIES, NLISTP, NOT, OR, AND, and F-NOT, to the following eight new conjectures: Case 8. (IMPLIES (AND (NOT (LISTP FLIST)) (FORM-LIST FLIST) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (FALSIFY-TAUT FLIST AUXLIST)) (NOT (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) (FALSIFY-TAUT FLIST AUXLIST)))). This simplifies, rewriting with APPEND-NLISTP, and opening up FORM-LIST and FALSIFY-TAUT, to: T. Case 7. (IMPLIES (AND (LISTP FLIST) (PROP-ATOMP (CAR FLIST)) (NEG-LIST (CAR FLIST) AUXLIST) (FORM-LIST FLIST) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (FALSIFY-TAUT FLIST AUXLIST)) (NOT (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) (FALSIFY-TAUT FLIST AUXLIST)))), which simplifies, unfolding the definition of FALSIFY-TAUT, to: T. Case 6. (IMPLIES (AND (LISTP FLIST) (PROP-ATOMP (CAR FLIST)) (NOT (NEG-LIST (CAR FLIST) AUXLIST)) (IMPLIES (AND (FORM-LIST (CDR FLIST)) (PROP-ATOMP-LIST (CONS (CAR FLIST) AUXLIST)) (NOT (EVAL (MAKE-DISJUNCT (CONS (CAR FLIST) AUXLIST)) (FALSIFY (CONS (CAR FLIST) AUXLIST)))) (NOT (TAUTOLOGYP1 (CDR FLIST) (CONS (CAR FLIST) AUXLIST)))) (NOT (EVAL (MAKE-DISJUNCT (APPEND (CDR FLIST) (CONS (CAR FLIST) AUXLIST))) (FALSIFY-TAUT (CDR FLIST) (CONS (CAR FLIST) AUXLIST))))) (FORM-LIST FLIST) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (FALSIFY-TAUT FLIST AUXLIST)) (NOT (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) (FALSIFY-TAUT FLIST AUXLIST)))), which simplifies, applying CDR-CONS, CAR-CONS, NOT-FALSIFY-TAUT, NLISTP-EVAL, NLISTP-NEG-LIST, and NOT-EVAL-PROP-ATOMP, and unfolding PROP-ATOMP-LIST, F-OR, MAKE-DISJUNCT, NOT, AND, IMPLIES, FORM-LIST, and FALSIFY-TAUT, to the following two new formulas: Case 6.2. (IMPLIES (AND (LISTP FLIST) (PROP-ATOMP (CAR FLIST)) (NOT (NEG-LIST (CAR FLIST) AUXLIST)) (NOT (LISTP AUXLIST)) (EVAL (CAR FLIST) (FALSIFY (CONS (CAR FLIST) AUXLIST))) (FORMULA (CAR FLIST) T 0) (FORM-LIST (CDR FLIST)) (FALSIFY-TAUT (CDR FLIST) (CONS (CAR FLIST) AUXLIST))) (NOT (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) (FALSIFY-TAUT (CDR FLIST) (CONS (CAR FLIST) AUXLIST))))). This again simplifies, rewriting with NLISTP-NEG-LIST and PROP-ATOMP-AUXLIST, and unfolding the definition of PROP-ATOMP-LIST, to: T. Case 6.1. (IMPLIES (AND (LISTP FLIST) (PROP-ATOMP (CAR FLIST)) (NOT (NEG-LIST (CAR FLIST) AUXLIST)) (LISTP AUXLIST) (EVAL (LIST 'OR (CAR FLIST) (MAKE-DISJUNCT AUXLIST)) (FALSIFY (CONS (CAR FLIST) AUXLIST))) (FORMULA (CAR FLIST) T 0) (FORM-LIST (CDR FLIST)) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (FALSIFY-TAUT (CDR FLIST) (CONS (CAR FLIST) AUXLIST))) (NOT (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) (FALSIFY-TAUT (CDR FLIST) (CONS (CAR FLIST) AUXLIST))))). This again simplifies, applying CAR-CONS, CDR-CONS, PROP-ATOMP-AUXLIST, PROP-ATOMP-AUXLIST2, and OR-EVAL, and opening up the function EQUAL, to: T. Case 5. (IMPLIES (AND (LISTP FLIST) (NOT (PROP-ATOMP (CAR FLIST))) (OR-TYPE (CAR FLIST)) (IMPLIES (AND (FORM-LIST (CONS (CADAR FLIST) (CONS (CADDAR FLIST) (CDR FLIST)))) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (NOT (TAUTOLOGYP1 (CONS (CADAR FLIST) (CONS (CADDAR FLIST) (CDR FLIST))) AUXLIST))) (NOT (EVAL (MAKE-DISJUNCT (APPEND (CONS (CADAR FLIST) (CONS (CADDAR FLIST) (CDR FLIST))) AUXLIST)) (FALSIFY-TAUT (CONS (CADAR FLIST) (CONS (CADDAR FLIST) (CDR FLIST))) AUXLIST)))) (FORM-LIST FLIST) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (FALSIFY-TAUT FLIST AUXLIST)) (NOT (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) (FALSIFY-TAUT FLIST AUXLIST)))). This simplifies, applying the lemmas OR-TYPE-NOT-PROP-ATOMP, OR-TYPE-FORM-LIST, NOT-FALSIFY-TAUT, and EVAL-OR-TYPE, and unfolding NOT, AND, IMPLIES, FORM-LIST, and FALSIFY-TAUT, to: T. Case 4. (IMPLIES (AND (LISTP FLIST) (NOT (PROP-ATOMP (CAR FLIST))) (NOT (OR-TYPE (CAR FLIST))) (NOR-TYPE (CAR FLIST)) (FALSIFY-TAUT (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST)) AUXLIST) (IMPLIES (AND (FORM-LIST (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST))) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (NOT (TAUTOLOGYP1 (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST)) AUXLIST))) (NOT (EVAL (MAKE-DISJUNCT (APPEND (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST)) AUXLIST)) (FALSIFY-TAUT (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST)) AUXLIST)))) (FORM-LIST FLIST) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (FALSIFY-TAUT FLIST AUXLIST)) (NOT (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) (FALSIFY-TAUT FLIST AUXLIST)))). This simplifies, rewriting with NOR-TYPE-NOT-PROP-ATOMP, NOR-TYPE-FORM-LIST2, NOT-FALSIFY-TAUT, and EVAL-NOR-TYPE, and expanding the definitions of NOT, AND, IMPLIES, FORM-LIST, F-NOT, and FALSIFY-TAUT, to: T. Case 3. (IMPLIES (AND (LISTP FLIST) (NOT (PROP-ATOMP (CAR FLIST))) (NOT (OR-TYPE (CAR FLIST))) (NOR-TYPE (CAR FLIST)) (NOT (FALSIFY-TAUT (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST)) AUXLIST)) (IMPLIES (AND (FORM-LIST (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST))) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (NOT (TAUTOLOGYP1 (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST)) AUXLIST))) (NOT (EVAL (MAKE-DISJUNCT (APPEND (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST)) AUXLIST)) (FALSIFY-TAUT (CONS (LIST 'NOT (CADDADAR FLIST)) (CDR FLIST)) AUXLIST)))) (IMPLIES (AND (FORM-LIST (CONS (LIST 'NOT (CADADAR FLIST)) (CDR FLIST))) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (NOT (TAUTOLOGYP1 (CONS (LIST 'NOT (CADADAR FLIST)) (CDR FLIST)) AUXLIST))) (NOT (EVAL (MAKE-DISJUNCT (APPEND (CONS (LIST 'NOT (CADADAR FLIST)) (CDR FLIST)) AUXLIST)) (FALSIFY-TAUT (CONS (LIST 'NOT (CADADAR FLIST)) (CDR FLIST)) AUXLIST)))) (FORM-LIST FLIST) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (FALSIFY-TAUT FLIST AUXLIST)) (NOT (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) (FALSIFY-TAUT FLIST AUXLIST)))), which simplifies, applying the lemmas NOR-TYPE-NOT-PROP-ATOMP, NOR-TYPE-FORM-LIST2, NOT-FALSIFY-TAUT, TAUT-EVAL, NOR-TYPE-FORM-LIST, and EVAL-NOR-TYPE, and opening up NOT, AND, IMPLIES, FORM-LIST, F-NOT, and FALSIFY-TAUT, to: T. Case 2. (IMPLIES (AND (LISTP FLIST) (NOT (PROP-ATOMP (CAR FLIST))) (NOT (OR-TYPE (CAR FLIST))) (NOT (NOR-TYPE (CAR FLIST))) (DBLE-NEG-TYPE (CAR FLIST)) (IMPLIES (AND (FORM-LIST (CONS (CADADAR FLIST) (CDR FLIST))) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (NOT (TAUTOLOGYP1 (CONS (CADADAR FLIST) (CDR FLIST)) AUXLIST))) (NOT (EVAL (MAKE-DISJUNCT (APPEND (CONS (CADADAR FLIST) (CDR FLIST)) AUXLIST)) (FALSIFY-TAUT (CONS (CADADAR FLIST) (CDR FLIST)) AUXLIST)))) (FORM-LIST FLIST) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (FALSIFY-TAUT FLIST AUXLIST)) (NOT (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) (FALSIFY-TAUT FLIST AUXLIST)))), which simplifies, applying DBLE-NEG-NOT-PROP-ATOMP, DBLE-NEG-TYPE-FORM-LIST, NOT-FALSIFY-TAUT, and EVAL-DBLE-NEG-TYPE, and expanding NOT, AND, IMPLIES, FORM-LIST, and FALSIFY-TAUT, to: T. Case 1. (IMPLIES (AND (LISTP FLIST) (NOT (PROP-ATOMP (CAR FLIST))) (NOT (OR-TYPE (CAR FLIST))) (NOT (NOR-TYPE (CAR FLIST))) (NOT (DBLE-NEG-TYPE (CAR FLIST))) (FORM-LIST FLIST) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (FALSIFY-TAUT FLIST AUXLIST)) (NOT (EVAL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)) (FALSIFY-TAUT FLIST AUXLIST)))). This simplifies, rewriting with the lemma FORMULA-CASES, and expanding the function FORM-LIST, to: T. Q.E.D. [ 0.0 1.1 0.1 ] NOT-TAUT-FALSE (DEFN TAUTOLOGYP (FLIST) (TAUTOLOGYP1 FLIST NIL)) Observe that (OR (FALSEP (TAUTOLOGYP FLIST)) (TRUEP (TAUTOLOGYP FLIST))) is a theorem. [ 0.0 0.0 0.0 ] TAUTOLOGYP (DEFN TAUT-PROOF (FLIST) (TAUT-PROOF1 FLIST NIL)) Observe that (OR (LITATOM (TAUT-PROOF FLIST)) (LISTP (TAUT-PROOF FLIST))) is a theorem. [ 0.0 0.0 0.0 ] TAUT-PROOF (TOGGLE G0300 APPEND NIL) [ 0.0 0.0 0.0 ] G0300 (PROVE-LEMMA FORM-LIST-APPEND-NIL (REWRITE) (EQUAL (MAKE-DISJUNCT (APPEND FLIST NIL)) (MAKE-DISJUNCT FLIST))) 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 FLIST) (p (CDR FLIST))) (p FLIST)) (IMPLIES (NOT (LISTP FLIST)) (p FLIST))). Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT FLIST) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates two new conjectures: Case 2. (IMPLIES (AND (LISTP FLIST) (EQUAL (MAKE-DISJUNCT (APPEND (CDR FLIST) NIL)) (MAKE-DISJUNCT (CDR FLIST)))) (EQUAL (MAKE-DISJUNCT (APPEND FLIST NIL)) (MAKE-DISJUNCT FLIST))), which simplifies, applying CAR-CONS and CDR-CONS, and opening up APPEND, F-OR, and MAKE-DISJUNCT, to the following two new goals: Case 2.2. (IMPLIES (AND (LISTP FLIST) (EQUAL (MAKE-DISJUNCT (APPEND (CDR FLIST) NIL)) (MAKE-DISJUNCT (CDR FLIST))) (NOT (LISTP (CDR FLIST))) (LISTP (APPEND (CDR FLIST) NIL))) (EQUAL (LIST 'OR (CAR FLIST) (MAKE-DISJUNCT (CDR FLIST))) (CAR FLIST))). This again simplifies, trivially, to: (IMPLIES (AND (LISTP FLIST) (EQUAL (MAKE-DISJUNCT (APPEND (CDR FLIST) NIL)) (MAKE-DISJUNCT (CDR FLIST))) (NOT (LISTP (CDR FLIST)))) (NOT (LISTP (APPEND (CDR FLIST) NIL)))), which further simplifies, appealing to the lemma APPEND-NLISTP, and opening up MAKE-DISJUNCT, EQUAL, and LISTP, to: T. Case 2.1. (IMPLIES (AND (LISTP FLIST) (EQUAL (MAKE-DISJUNCT (APPEND (CDR FLIST) NIL)) (MAKE-DISJUNCT (CDR FLIST))) (LISTP (CDR FLIST)) (NOT (LISTP (APPEND (CDR FLIST) NIL)))) (EQUAL (CAR FLIST) (LIST 'OR (CAR FLIST) (MAKE-DISJUNCT (CDR FLIST))))), which again simplifies, expanding the definitions of MAKE-DISJUNCT and CONS, to the formula: (IMPLIES (AND (LISTP FLIST) (EQUAL NIL (MAKE-DISJUNCT (CDR FLIST))) (LISTP (CDR FLIST))) (LISTP (APPEND (CDR FLIST) NIL))). Appealing to the lemma CAR-CDR-ELIM, we now replace FLIST by (CONS Z X) to eliminate (CDR FLIST) and (CAR FLIST). The result is the goal: (IMPLIES (AND (EQUAL NIL (MAKE-DISJUNCT X)) (LISTP X)) (LISTP (APPEND X NIL))). Name the above subgoal *1.1. Case 1. (IMPLIES (NOT (LISTP FLIST)) (EQUAL (MAKE-DISJUNCT (APPEND FLIST NIL)) (MAKE-DISJUNCT FLIST))). This simplifies, applying APPEND-NLISTP, and unfolding the definitions of MAKE-DISJUNCT and EQUAL, to: T. So let us turn our attention to: (IMPLIES (AND (EQUAL NIL (MAKE-DISJUNCT X)) (LISTP X)) (LISTP (APPEND X NIL))), which is formula *1.1 above. We will try to 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 (NLISTP X) (p X)) (IMPLIES (AND (NOT (NLISTP X)) (NLISTP (CDR X))) (p X)) (IMPLIES (AND (NOT (NLISTP X)) (NOT (NLISTP (CDR X))) (p (CDR X))) (p X))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP establish that the measure (COUNT X) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme leads to five new formulas: Case 5. (IMPLIES (AND (NLISTP X) (EQUAL NIL (MAKE-DISJUNCT X)) (LISTP X)) (LISTP (APPEND X NIL))), which simplifies, expanding the definition of NLISTP, to: T. Case 4. (IMPLIES (AND (NOT (NLISTP X)) (NLISTP (CDR X)) (EQUAL NIL (MAKE-DISJUNCT X)) (LISTP X)) (LISTP (APPEND X NIL))), which simplifies, opening up NLISTP, MAKE-DISJUNCT, and APPEND, to: T. Case 3. (IMPLIES (AND (NOT (NLISTP X)) (NOT (NLISTP (CDR X))) (NOT (EQUAL NIL (MAKE-DISJUNCT (CDR X)))) (EQUAL NIL (MAKE-DISJUNCT X)) (LISTP X)) (LISTP (APPEND X NIL))), which simplifies, expanding NLISTP, MAKE-DISJUNCT, and F-OR, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP X)) (NOT (NLISTP (CDR X))) (NOT (LISTP (CDR X))) (EQUAL NIL (MAKE-DISJUNCT X)) (LISTP X)) (LISTP (APPEND X NIL))), which simplifies, unfolding NLISTP, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP X)) (NOT (NLISTP (CDR X))) (LISTP (APPEND (CDR X) NIL)) (EQUAL NIL (MAKE-DISJUNCT X)) (LISTP X)) (LISTP (APPEND X NIL))), which simplifies, expanding NLISTP, MAKE-DISJUNCT, and F-OR, 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 ] FORM-LIST-APPEND-NIL (PROVE-LEMMA TAUTOLOGY-THEOREM (REWRITE) (IMPLIES (AND (FORM-LIST FLIST) (TAUTOLOGYP FLIST) (EQUAL CONCL (MAKE-DISJUNCT FLIST))) (PROVES (TAUT-PROOF FLIST) CONCL)) ((DISABLE TAUT-PROOF1 TAUTOLOGYP1 FORMULA NOT-FALSIFY-TAUT))) This formula can be simplified, using the abbreviations AND, IMPLIES, TAUT-PROOF, and TAUTOLOGYP, to the new conjecture: (IMPLIES (AND (FORM-LIST FLIST) (TAUTOLOGYP1 FLIST NIL) (EQUAL CONCL (MAKE-DISJUNCT FLIST))) (PROVES (TAUT-PROOF1 FLIST NIL) CONCL)), which simplifies, applying FORM-LIST-APPEND-NIL and TAUT-THM2, and unfolding the function FORM-LIST, to: T. Q.E.D. [ 0.0 0.0 0.0 ] TAUTOLOGY-THEOREM (PROVE-LEMMA TAUT-EVAL2 (REWRITE) (IMPLIES (AND (TAUTOLOGYP1 FLIST AUXLIST) (EQUAL CONCL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)))) (EVAL CONCL ALIST)) ((DISABLE TAUTOLOGYP1 NOT-FALSIFY-TAUT))) WARNING: Note that TAUT-EVAL2 contains the free variables AUXLIST and FLIST which will be chosen by instantiating the hypothesis: (TAUTOLOGYP1 FLIST AUXLIST). This formula simplifies, applying TAUT-EVAL, to: T. Q.E.D. [ 0.0 0.0 0.0 ] TAUT-EVAL2 (PROVE-LEMMA TAUTOLOGIES-ARE-TRUE (REWRITE) (IMPLIES (AND (FORM-LIST FLIST) (TAUTOLOGYP FLIST)) (EVAL (MAKE-DISJUNCT FLIST) ALIST)) ((DISABLE FORMULA TAUTOLOGYP1 NOT-FALSIFY-TAUT))) This formula can be simplified, using the abbreviations AND, IMPLIES, and TAUTOLOGYP, to: (IMPLIES (AND (FORM-LIST FLIST) (TAUTOLOGYP1 FLIST NIL)) (EVAL (MAKE-DISJUNCT FLIST) ALIST)), which simplifies, rewriting with the lemmas FORM-LIST-APPEND-NIL and TAUT-EVAL2, to: T. Q.E.D. [ 0.0 0.0 0.0 ] TAUTOLOGIES-ARE-TRUE (PROVE-LEMMA NOT-TAUT-FALSIFY2 (REWRITE) (IMPLIES (AND (FORM-LIST FLIST) (PROP-ATOMP-LIST AUXLIST) (NOT (EVAL (MAKE-DISJUNCT AUXLIST) (FALSIFY AUXLIST))) (NOT (TAUTOLOGYP1 FLIST AUXLIST)) (EQUAL CONCL (MAKE-DISJUNCT (APPEND FLIST AUXLIST)))) (NOT (EVAL CONCL (FALSIFY-TAUT FLIST AUXLIST)))) ((DISABLE TAUTOLOGYP1 NOT-FALSIFY-TAUT FORMULA))) This simplifies, applying the lemma NOT-TAUT-FALSE, to: T. Q.E.D. [ 0.0 0.0 0.0 ] NOT-TAUT-FALSIFY2 (PROVE-LEMMA TRUTHS-ARE-TAUTOLOGIES (REWRITE) (IMPLIES (AND (FORM-LIST FLIST) (NOT (TAUTOLOGYP FLIST))) (NOT (EVAL (MAKE-DISJUNCT FLIST) (FALSIFY-TAUT FLIST NIL)))) ((DISABLE TAUTOLOGYP1 NOT-FALSIFY-TAUT FORMULA))) This conjecture can be simplified, using the abbreviations NOT, AND, IMPLIES, and TAUTOLOGYP, to the goal: (IMPLIES (AND (FORM-LIST FLIST) (NOT (TAUTOLOGYP1 FLIST NIL))) (NOT (EVAL (MAKE-DISJUNCT FLIST) (FALSIFY-TAUT FLIST NIL)))). This simplifies, rewriting with FORM-LIST-APPEND-NIL and NOT-TAUT-FALSIFY2, and unfolding EVAL, FALSIFY, MAKE-DISJUNCT, and PROP-ATOMP-LIST, to: T. Q.E.D. [ 0.0 0.0 0.0 ] TRUTHS-ARE-TAUTOLOGIES (TOGGLE G2439 TRUTHS-ARE-TAUTOLOGIES T) [ 0.0 0.0 0.0 ] G2439 (TOGGLE G2440 NOT-TAUT-FALSIFY2 T) [ 0.0 0.0 0.0 ] G2440 (TOGGLE G2441 TAUTOLOGIES-ARE-TRUE T) [ 0.0 0.0 0.0 ] G2441 (TOGGLE G2442 TAUT-EVAL2 T) [ 0.0 0.0 0.0 ] G2442 (TOGGLE G2443 FORM-LIST-APPEND-NIL T) [ 0.0 0.0 0.0 ] G2443 (TOGGLE G2444 TAUT-PROOF T) [ 0.0 0.0 0.0 ] G2444 (TOGGLE G2445 NOT-TAUT-FALSE T) [ 0.0 0.0 0.0 ] G2445 (TOGGLE G2446 NOT-FALSIFY-TAUT T) [ 0.0 0.0 0.0 ] G2446 (TOGGLE G2447 APPEND-NLISTP T) [ 0.0 0.0 0.0 ] G2447 (TOGGLE G2448 FALSIFY-TAUT T) [ 0.0 0.0 0.0 ] G2448 (TOGGLE G2449 FORMULA-CASES T) [ 0.0 0.0 0.0 ] G2449 (TOGGLE G2450 FORMULA-CASES1 T) [ 0.0 0.0 0.0 ] G2450 (TOGGLE G2451 PROP-ATOMP-FALSIFY T) [ 0.0 0.0 0.0 ] G2451 (TOGGLE G2453 PROP-ATOMP-AUXLIST T) [ 0.0 0.0 0.0 ] G2453 (TOGGLE G2454 PROP-ATOMP-LIST T) [ 0.0 0.0 0.0 ] G2454 (TOGGLE G2455 FALSIFY-STEP T) [ 0.0 0.0 0.0 ] G2455 (TOGGLE G2456 FALSIFY T) [ 0.0 0.0 0.0 ] G2456 (TOGGLE G2457 NOT-EVAL-PROP-ATOMP T) [ 0.0 0.0 0.0 ] G2457 (TOGGLE G2458 TAUT-EVAL T) [ 0.0 0.0 0.0 ] G2458 (TOGGLE G2459 EVAL-DBLE-NEG-TYPE T) [ 0.0 0.0 0.0 ] G2459 (TOGGLE G2460 EVAL-NOR-TYPE T) [ 0.0 0.0 0.0 ] G2460 (TOGGLE G2461 EVAL-OR-TYPE T) [ 0.0 0.0 0.0 ] G2461 (TOGGLE G2463 EVAL-PROP-ATOMP T) [ 0.0 0.0 0.0 ] G2463 (TOGGLE G2464 NEG-LIST-EVAL T) [ 0.0 0.0 0.0 ] G2464 (TOGGLE G2465 EVAL-NEG-ELEM-FORM T) [ 0.0 0.0 0.0 ] G2465 (TOGGLE G2471 ELEM-FORM-EVAL T) [ 0.0 0.0 0.0 ] G2471 (TOGGLE G2472 EVAL T) [ 0.0 0.0 0.0 ] G2472 (PROVE-LEMMA EVAL-TAUTOLOGYP (REWRITE) (IMPLIES (AND (FORM-LIST FLIST) (EVAL (MAKE-DISJUNCT FLIST) (FALSIFY-TAUT FLIST NIL))) (TAUTOLOGYP FLIST)) ((DISABLE TAUTOLOGYP FORM-LIST FALSIFY-TAUT) (USE (TRUTHS-ARE-TAUTOLOGIES)))) WARNING: Note that the rewrite rule EVAL-TAUTOLOGYP will be stored so as to apply only to terms with the nonrecursive function symbol TAUTOLOGYP. This conjecture simplifies, opening up NOT, AND, and IMPLIES, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EVAL-TAUTOLOGYP (DEFN LIS-NOT (FLIST) (IF (NLISTP FLIST) NIL (CONS (F-NOT (CAR FLIST)) (LIS-NOT (CDR FLIST))))) Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP inform us that the measure (COUNT FLIST) decreases according to the well-founded relation LESSP in each recursive call. Hence, LIS-NOT is accepted under the definitional principle. Observe that: (OR (LITATOM (LIS-NOT FLIST)) (LISTP (LIS-NOT FLIST))) is a theorem. [ 0.0 0.0 0.0 ] LIS-NOT (DEFN TAUT-CONSEQ (FLIST EXP) (TAUTOLOGYP (APPEND (LIS-NOT FLIST) (CONS EXP NIL)))) Observe that: (OR (FALSEP (TAUT-CONSEQ FLIST EXP)) (TRUEP (TAUT-CONSEQ FLIST EXP))) is a theorem. [ 0.0 0.0 0.0 ] TAUT-CONSEQ (DEFN TAUTCONSEQ-PROOF (FLIST EXP PFLIST) (LIST-DETACH-PROOF FLIST EXP PFLIST (TAUT-PROOF (APPEND (LIS-NOT FLIST) (CONS EXP NIL))))) Note that: (OR (LITATOM (TAUTCONSEQ-PROOF FLIST EXP PFLIST)) (LISTP (TAUTCONSEQ-PROOF FLIST EXP PFLIST))) is a theorem. [ 0.0 0.0 0.0 ] TAUTCONSEQ-PROOF (PROVE-LEMMA LIST-IMPLIES-REDUC (REWRITE) (EQUAL (LIST-IMPLIES FLIST EXP) (MAKE-DISJUNCT (APPEND (LIS-NOT FLIST) (CONS EXP NIL))))) Call the conjecture *1. We will try to 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 (NLISTP FLIST) (p FLIST EXP)) (IMPLIES (AND (NOT (NLISTP FLIST)) (NLISTP (CDR FLIST))) (p FLIST EXP)) (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (p (CDR FLIST) EXP)) (p FLIST EXP))). Linear arithmetic, the lemmas CDR-LESSEQP and CDR-LESSP, and the definition of NLISTP inform us that the measure (COUNT FLIST) decreases according to the well-founded relation LESSP in each induction step of the scheme. The above induction scheme generates three new goals: Case 3. (IMPLIES (NLISTP FLIST) (EQUAL (LIST-IMPLIES FLIST EXP) (MAKE-DISJUNCT (APPEND (LIS-NOT FLIST) (LIST EXP))))), which simplifies, appealing to the lemmas CAR-CONS and CDR-CONS, and unfolding NLISTP, LIST-IMPLIES, LIS-NOT, LISTP, APPEND, and MAKE-DISJUNCT, to: T. Case 2. (IMPLIES (AND (NOT (NLISTP FLIST)) (NLISTP (CDR FLIST))) (EQUAL (LIST-IMPLIES FLIST EXP) (MAKE-DISJUNCT (APPEND (LIS-NOT FLIST) (LIST EXP))))), which simplifies, rewriting with the lemmas CDR-CONS, CAR-CONS, and CONS-EQUAL, and expanding the functions NLISTP, LIST-IMPLIES, F-OR, F-NOT, F-IMPLIES, LIS-NOT, APPEND, MAKE-DISJUNCT, and EQUAL, to the goal: (IMPLIES (AND (LISTP FLIST) (NOT (LISTP (CDR FLIST)))) (EQUAL EXP (MAKE-DISJUNCT (APPEND (LIS-NOT (CDR FLIST)) (LIST EXP))))). But this further simplifies, applying CAR-CONS and CDR-CONS, and unfolding LIS-NOT, LISTP, APPEND, and MAKE-DISJUNCT, to: T. Case 1. (IMPLIES (AND (NOT (NLISTP FLIST)) (NOT (NLISTP (CDR FLIST))) (EQUAL (LIST-IMPLIES (CDR FLIST) EXP) (MAKE-DISJUNCT (APPEND (LIS-NOT (CDR FLIST)) (LIST EXP))))) (EQUAL (LIST-IMPLIES FLIST EXP) (MAKE-DISJUNCT (APPEND (LIS-NOT FLIST) (LIST EXP))))). This simplifies, applying CDR-CONS and CAR-CONS, and opening up the functions NLISTP, LIST-IMPLIES, F-OR, F-NOT, F-IMPLIES, LIS-NOT, APPEND, and MAKE-DISJUNCT, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] LIST-IMPLIES-REDUC (PROVE-LEMMA APPEND-EXP-FORM-LIST (REWRITE) (IMPLIES (AND (FORM-LIST FLIST) (FORMULA EXP T 0)) (FORM-LIST (APPEND (LIS-NOT FLIST) (CONS EXP NIL)))) ((DISABLE FORMULA))) Give the conjecture the name *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 (AND (LISTP FLIST) (p (CDR FLIST) EXP)) (p FLIST EXP)) (IMPLIES (NOT (LISTP FLIST)) (p FLIST EXP))). Linear arithmetic and the lemma CDR-LESSP establish that the measure (COUNT FLIST) 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 (LISTP FLIST) (NOT (FORM-LIST (CDR FLIST))) (FORM-LIST FLIST) (FORMULA EXP T 0)) (FORM-LIST (APPEND (LIS-NOT FLIST) (LIST EXP)))), which simplifies, opening up FORM-LIST, to: T. Case 2. (IMPLIES (AND (LISTP FLIST) (FORM-LIST (APPEND (LIS-NOT (CDR FLIST)) (LIST EXP))) (FORM-LIST FLIST) (FORMULA EXP T 0)) (FORM-LIST (APPEND (LIS-NOT FLIST) (LIST EXP)))), which simplifies, rewriting with CDR-CONS, CAR-CONS, and FORMULA-NOT-REDUC, and expanding the functions FORM-LIST, LIS-NOT, F-NOT, and APPEND, to: T. Case 1. (IMPLIES (AND (NOT (LISTP FLIST)) (FORM-LIST FLIST) (FORMULA EXP T 0)) (FORM-LIST (APPEND (LIS-NOT FLIST) (LIST EXP)))). This simplifies, applying CDR-CONS and CAR-CONS, and opening up the definitions of FORM-LIST, LIS-NOT, LISTP, and APPEND, to: T. That finishes the proof of *1. Q.E.D. [ 0.0 0.0 0.0 ] APPEND-EXP-FORM-LIST (PROVE-LEMMA TAUT-CONSEQ-PROVES (REWRITE) (IMPLIES (AND (FORM-LIST FLIST) (FORMULA EXP T 0) (TAUT-CONSEQ FLIST EXP) (PROVES-LIST PFLIST FLIST)) (PROVES (TAUTCONSEQ-PROOF FLIST EXP PFLIST) EXP))) This formula can be simplified, using the abbreviations AND, IMPLIES, TAUTOLOGYP, and TAUT-CONSEQ, to: (IMPLIES (AND (FORM-LIST FLIST) (FORMULA EXP T 0) (TAUTOLOGYP1 (APPEND (LIS-NOT FLIST) (LIST EXP)) NIL) (PROVES-LIST PFLIST FLIST)) (PROVES (TAUTCONSEQ-PROOF FLIST EXP PFLIST) EXP)), which simplifies, applying TAUTOLOGY-THEOREM, APPEND-EXP-FORM-LIST, LIST-IMPLIES-REDUC, and DETACH-RULE-CORR, and opening up the functions TAUTCONSEQ-PROOF and TAUTOLOGYP, to: T. Q.E.D. [ 0.0 0.1 0.0 ] TAUT-CONSEQ-PROVES (TOGGLE G0276 TAUTCONSEQ-PROOF T) [ 0.0 0.0 0.0 ] G0276 (PROVE-LEMMA EVAL-TAUTCONSEQ (REWRITE) (IMPLIES (AND (FORM-LIST FLIST) (FORMULA EXP T 0) (EVAL (MAKE-DISJUNCT (APPEND (LIS-NOT FLIST) (CONS EXP NIL))) (FALSIFY-TAUT (APPEND (LIS-NOT FLIST) (CONS EXP NIL)) NIL))) (TAUT-CONSEQ FLIST EXP)) ((DISABLE TAUTOLOGYP APPEND FORMULA LIS-NOT FORM-LIST))) WARNING: Note that the rewrite rule EVAL-TAUTCONSEQ will be stored so as to apply only to terms with the nonrecursive function symbol TAUT-CONSEQ. This conjecture can be simplified, using the abbreviations AND, IMPLIES, and TAUT-CONSEQ, to: (IMPLIES (AND (FORM-LIST FLIST) (FORMULA EXP T 0) (EVAL (MAKE-DISJUNCT (APPEND (LIS-NOT FLIST) (LIST EXP))) (FALSIFY-TAUT (APPEND (LIS-NOT FLIST) (LIST EXP)) NIL))) (TAUTOLOGYP (APPEND (LIS-NOT FLIST) (LIST EXP)))). This simplifies, applying CAR-CONS, CDR-CONS, EVAL-MAKE-DISJUNCT, APPEND-EXP-FORM-LIST, and EVAL-TAUTOLOGYP, and expanding LISTP and MAKE-DISJUNCT, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EVAL-TAUTCONSEQ (TOGGLE G0277 TAUT-CONSEQ T) [ 0.0 0.0 0.0 ] G0277 (TOGGLE G0282 FALSIFY-TAUT T) [ 0.0 0.0 0.0 ] G0282 (TOGGLE G0295 FORMULA T) [ 0.0 0.0 0.0 ] G0295 (PROVE-LEMMA EVAL-TAUTCONSEQ-PROOF-PROVES (REWRITE) (IMPLIES (AND (EVAL (MAKE-DISJUNCT (APPEND (LIS-NOT FLIST) (CONS EXP NIL))) (FALSIFY-TAUT (APPEND (LIS-NOT FLIST) (CONS EXP NIL)) NIL)) (PROVES-LIST PFLIST FLIST) (FORM-LIST FLIST) (FORMULA EXP T 0)) (PROVES (TAUTCONSEQ-PROOF FLIST EXP PFLIST) EXP))) This formula simplifies, applying the lemmas CAR-CONS, CDR-CONS, EVAL-MAKE-DISJUNCT, EVAL-TAUTCONSEQ, and TAUT-CONSEQ-PROVES, and unfolding the functions LISTP and MAKE-DISJUNCT, to: T. Q.E.D. [ 0.0 0.0 0.0 ] EVAL-TAUTCONSEQ-PROOF-PROVES (TOGGLE G0283 TAUT-CONSEQ-PROVES T) [ 0.0 0.0 0.0 ] G0283 (DEFN F-IFF-REDUC-PROOF (A B PF1 PF2) (TAUTCONSEQ-PROOF (LIST (F-IFF A B) A) B (LIST PF1 PF2))) From the definition we can conclude that: (OR (LITATOM (F-IFF-REDUC-PROOF A B PF1 PF2)) (LISTP (F-IFF-REDUC-PROOF A B PF1 PF2))) is a theorem. [ 0.0 0.0 0.0 ] F-IFF-REDUC-PROOF