(NOTE-LIB "c-predefined1") Nqthm-1992 mods: (PC-NQTHM-1992) Loading ./mg/c-predefined1.lib Finished loading ./mg/c-predefined1.lib Loading ./mg/c-predefined1.lisp Finished loading ./mg/c-predefined1.lisp (#./mg/c-predefined1.lib #./mg/c-predefined1.lisp) (PROVE-LEMMA MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS (REWRITE) (IMPLIES (AND (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST)) (AND (BOOLEAN-IDENTIFIERP (CAR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)) (INT-IDENTIFIERP (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)) (INT-IDENTIFIERP (CADDR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))) ((INSTRUCTIONS PROMOTE SPLIT (REWRITE SIGNATURES-MATCH-PRESERVES-BOOLEAN-IDENTIFIERP (($ALIST1 NAME-ALIST))) (REWRITE SIGNATURES-MATCH-SYMMETRIC) (REWRITE OK-MG-STATEP-ALIST-PLISTP) (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS)) (REWRITE SIGNATURES-MATCH-PRESERVES-INT-IDENTIFIERP (($ALIST1 NAME-ALIST))) (REWRITE SIGNATURES-MATCH-SYMMETRIC) (REWRITE OK-MG-STATEP-ALIST-PLISTP) (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS)) (REWRITE SIGNATURES-MATCH-PRESERVES-INT-IDENTIFIERP (($ALIST1 NAME-ALIST))) (REWRITE SIGNATURES-MATCH-SYMMETRIC) (REWRITE OK-MG-STATEP-ALIST-PLISTP) (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS))))) WARNING: Note that MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS contains the free variables PROC-LIST, NAME-ALIST, and R-COND-LIST which will be chosen by instantiating the hypothesis: (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST). WARNING: Note that MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS contains the free variables PROC-LIST, NAME-ALIST, and R-COND-LIST which will be chosen by instantiating the hypothesis: (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST). WARNING: Note that MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS contains the free variables PROC-LIST, NAME-ALIST, and R-COND-LIST which will be chosen by instantiating the hypothesis: (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST). WARNING: Note that the proposed lemma: MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and three replacement rules. *** Entering proof-checker *** PROMOTE SPLIT Creating 3 new subgoals, (MAIN . 1), (MAIN . 2), and (MAIN . 3). The proof of the current goal, MAIN, has been completed. However, the following subgoals of MAIN remain to be proved: (MAIN . 1), (MAIN . 2), and (MAIN . 3). Now proving (MAIN . 1). : (REWRITE SIGNATURES-MATCH-PRESERVES-BOOLEAN-IDENTIFIERP (($ALIST1 NAME-ALIST))) Rewriting with SIGNATURES-MATCH-PRESERVES-BOOLEAN-IDENTIFIERP. Creating 2 new subgoals, ((MAIN . 1) . 1) and ((MAIN . 1) . 2). The proof of the current goal, (MAIN . 1), has been completed. However, the following subgoals of (MAIN . 1) remain to be proved: ((MAIN . 1) . 1) and ((MAIN . 1) . 2). Now proving ((MAIN . 1) . 1). (REWRITE SIGNATURES-MATCH-SYMMETRIC) Rewriting with SIGNATURES-MATCH-SYMMETRIC. Creating 1 new subgoal, (((MAIN . 1) . 1) . 1). The proof of the current goal, ((MAIN . 1) . 1), has been completed. However, the following subgoal of ((MAIN . 1) . 1) remains to be proved: (((MAIN . 1) . 1) . 1). Now proving (((MAIN . 1) . 1) . 1). (REWRITE OK-MG-STATEP-ALIST-PLISTP) Rewriting with OK-MG-STATEP-ALIST-PLISTP. The current goal, (((MAIN . 1) . 1) . 1), has been proved, and has no dependents. Now proving ((MAIN . 1) . 2). : (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS)) ***** Now entering the theorem prover *****: This simplifies, opening up the definitions of OK-PREDEFINED-PROC-CALL, PREDEFINED-PROCP, OK-MG-INTEGER-LE-ARGS, OK-PREDEFINED-PROC-ARGS, EQUAL, and OK-MG-STATEMENT, to: T. Q.E.D. The current goal, ((MAIN . 1) . 2), has been proved, and has no dependents. Now proving (MAIN . 2). (REWRITE SIGNATURES-MATCH-PRESERVES-INT-IDENTIFIERP (($ALIST1 NAME-ALIST))) Rewriting with SIGNATURES-MATCH-PRESERVES-INT-IDENTIFIERP. Creating 2 new subgoals, ((MAIN . 2) . 1) and ((MAIN . 2) . 2). The proof of the current goal, (MAIN . 2), has been completed. However, the following subgoals of (MAIN . 2) remain to be proved: ((MAIN . 2) . 1) and ((MAIN . 2) . 2). Now proving ((MAIN . 2) . 1). (REWRITE SIGNATURES-MATCH-SYMMETRIC) Rewriting with SIGNATURES-MATCH-SYMMETRIC. Creating 1 new subgoal, (((MAIN . 2) . 1) . 1). The proof of the current goal, ((MAIN . 2) . 1), has been completed. However, the following subgoal of ((MAIN . 2) . 1) remains to be proved: (((MAIN . 2) . 1) . 1). Now proving (((MAIN . 2) . 1) . 1). (REWRITE OK-MG-STATEP-ALIST-PLISTP) Rewriting with OK-MG-STATEP-ALIST-PLISTP. The current goal, (((MAIN . 2) . 1) . 1), has been proved, and has no dependents. Now proving ((MAIN . 2) . 2). : (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS)) ***** Now entering the theorem prover *****: This simplifies, expanding the functions OK-PREDEFINED-PROC-CALL, PREDEFINED-PROCP, OK-MG-INTEGER-LE-ARGS, OK-PREDEFINED-PROC-ARGS, EQUAL, and OK-MG-STATEMENT, to: T. Q.E.D. The current goal, ((MAIN . 2) . 2), has been proved, and has no dependents. Now proving (MAIN . 3). (REWRITE SIGNATURES-MATCH-PRESERVES-INT-IDENTIFIERP (($ALIST1 NAME-ALIST))) Rewriting with SIGNATURES-MATCH-PRESERVES-INT-IDENTIFIERP. Creating 2 new subgoals, ((MAIN . 3) . 1) and ((MAIN . 3) . 2). The proof of the current goal, (MAIN . 3), has been completed. However, the following subgoals of (MAIN . 3) remain to be proved: ((MAIN . 3) . 1) and ((MAIN . 3) . 2). Now proving ((MAIN . 3) . 1). (REWRITE SIGNATURES-MATCH-SYMMETRIC) Rewriting with SIGNATURES-MATCH-SYMMETRIC. Creating 1 new subgoal, (((MAIN . 3) . 1) . 1). The proof of the current goal, ((MAIN . 3) . 1), has been completed. However, the following subgoal of ((MAIN . 3) . 1) remains to be proved: (((MAIN . 3) . 1) . 1). Now proving (((MAIN . 3) . 1) . 1). (REWRITE OK-MG-STATEP-ALIST-PLISTP) Rewriting with OK-MG-STATEP-ALIST-PLISTP. The current goal, (((MAIN . 3) . 1) . 1), has been proved, and has no dependents. Now proving ((MAIN . 3) . 2). : (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS)) ***** Now entering the theorem prover *****: This formula simplifies, expanding OK-PREDEFINED-PROC-CALL, PREDEFINED-PROCP, OK-MG-INTEGER-LE-ARGS, OK-PREDEFINED-PROC-ARGS, EQUAL, and OK-MG-STATEMENT, to: T. Q.E.D. The current goal, ((MAIN . 3) . 2), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 0.3 0.0 0.0 ] MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS (PROVE-LEMMA MG-INTEGER-LE-ARGS-DEFINEDP (REWRITE) (IMPLIES (AND (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST)) (AND (DEFINEDP (CAR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)) (DEFINEDP (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)) (DEFINEDP (CADDR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))) ((INSTRUCTIONS PROMOTE SPLIT (REWRITE SIMPLE-IDENTIFIERP-IMPLIES-DEFINEDP) (REWRITE SIGNATURES-MATCH-PRESERVES-SIMPLE-IDENTIFIERP (($ALIST1 NAME-ALIST))) (REWRITE SIGNATURES-MATCH-SYMMETRIC) (REWRITE OK-MG-STATEP-ALIST-PLISTP) (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS SIMPLE-IDENTIFIERP)) (REWRITE SIMPLE-IDENTIFIERP-IMPLIES-DEFINEDP) (REWRITE SIGNATURES-MATCH-PRESERVES-SIMPLE-IDENTIFIERP (($ALIST1 NAME-ALIST))) (REWRITE SIGNATURES-MATCH-SYMMETRIC) (REWRITE OK-MG-STATEP-ALIST-PLISTP) (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS SIMPLE-IDENTIFIERP)) (REWRITE SIMPLE-IDENTIFIERP-IMPLIES-DEFINEDP) (REWRITE SIGNATURES-MATCH-PRESERVES-SIMPLE-IDENTIFIERP (($ALIST1 NAME-ALIST))) (REWRITE SIGNATURES-MATCH-SYMMETRIC) (REWRITE OK-MG-STATEP-ALIST-PLISTP) (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS SIMPLE-IDENTIFIERP))))) WARNING: Note that MG-INTEGER-LE-ARGS-DEFINEDP contains the free variables PROC-LIST, NAME-ALIST, and R-COND-LIST which will be chosen by instantiating the hypothesis (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST). WARNING: Note that MG-INTEGER-LE-ARGS-DEFINEDP contains the free variables PROC-LIST, NAME-ALIST, and R-COND-LIST which will be chosen by instantiating the hypothesis (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST). WARNING: Note that MG-INTEGER-LE-ARGS-DEFINEDP contains the free variables PROC-LIST, NAME-ALIST, and R-COND-LIST which will be chosen by instantiating the hypothesis (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST). WARNING: Note that the proposed lemma MG-INTEGER-LE-ARGS-DEFINEDP is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and three replacement rules. *** Entering proof-checker *** PROMOTE SPLIT Creating 3 new subgoals, (MAIN . 1), (MAIN . 2), and (MAIN . 3). The proof of the current goal, MAIN, has been completed. However, the following subgoals of MAIN remain to be proved: (MAIN . 1), (MAIN . 2), and (MAIN . 3). Now proving (MAIN . 1). (REWRITE SIMPLE-IDENTIFIERP-IMPLIES-DEFINEDP) Rewriting with SIMPLE-IDENTIFIERP-IMPLIES-DEFINEDP. Creating 1 new subgoal, ((MAIN . 1) . 1). The proof of the current goal, (MAIN . 1), has been completed. However, the following subgoal of (MAIN . 1) remains to be proved: ((MAIN . 1) . 1). Now proving ((MAIN . 1) . 1). : (REWRITE SIGNATURES-MATCH-PRESERVES-SIMPLE-IDENTIFIERP (($ALIST1 NAME-ALIST))) Rewriting with SIGNATURES-MATCH-PRESERVES-SIMPLE-IDENTIFIERP. Creating 2 new subgoals, (((MAIN . 1) . 1) . 1) and (((MAIN . 1) . 1) . 2). The proof of the current goal, ((MAIN . 1) . 1), has been completed. However, the following subgoals of ((MAIN . 1) . 1) remain to be proved: (((MAIN . 1) . 1) . 1) and (((MAIN . 1) . 1) . 2). Now proving (((MAIN . 1) . 1) . 1). (REWRITE SIGNATURES-MATCH-SYMMETRIC) Rewriting with SIGNATURES-MATCH-SYMMETRIC. Creating 1 new subgoal, ((((MAIN . 1) . 1) . 1) . 1). The proof of the current goal, (((MAIN . 1) . 1) . 1), has been completed. However, the following subgoal of (((MAIN . 1) . 1) . 1) remains to be proved: ((((MAIN . 1) . 1) . 1) . 1). Now proving ((((MAIN . 1) . 1) . 1) . 1). (REWRITE OK-MG-STATEP-ALIST-PLISTP) Rewriting with OK-MG-STATEP-ALIST-PLISTP. The current goal, ((((MAIN . 1) . 1) . 1) . 1), has been proved, and has no dependents. Now proving (((MAIN . 1) . 1) . 2). : (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS SIMPLE-IDENTIFIERP)) ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations SIMPLE-IDENTIFIERP, AND, and IMPLIES, to the new goal: (IMPLIES (AND (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (NOT (BOOLEAN-IDENTIFIERP (CAR (CALL-ACTUALS STMT)) NAME-ALIST)) (NOT (INT-IDENTIFIERP (CAR (CALL-ACTUALS STMT)) NAME-ALIST))) (CHARACTER-IDENTIFIERP (CAR (CALL-ACTUALS STMT)) NAME-ALIST)), which simplifies, opening up the functions OK-PREDEFINED-PROC-CALL, PREDEFINED-PROCP, OK-MG-INTEGER-LE-ARGS, OK-PREDEFINED-PROC-ARGS, EQUAL, and OK-MG-STATEMENT, to: T. Q.E.D. The current goal, (((MAIN . 1) . 1) . 2), has been proved, and has no dependents. Now proving (MAIN . 2). (REWRITE SIMPLE-IDENTIFIERP-IMPLIES-DEFINEDP) Rewriting with SIMPLE-IDENTIFIERP-IMPLIES-DEFINEDP. Creating 1 new subgoal, ((MAIN . 2) . 1). The proof of the current goal, (MAIN . 2), has been completed. However, the following subgoal of (MAIN . 2) remains to be proved: ((MAIN . 2) . 1). Now proving ((MAIN . 2) . 1). : (REWRITE SIGNATURES-MATCH-PRESERVES-SIMPLE-IDENTIFIERP (($ALIST1 NAME-ALIST))) Rewriting with SIGNATURES-MATCH-PRESERVES-SIMPLE-IDENTIFIERP. Creating 2 new subgoals, (((MAIN . 2) . 1) . 1) and (((MAIN . 2) . 1) . 2). The proof of the current goal, ((MAIN . 2) . 1), has been completed. However, the following subgoals of ((MAIN . 2) . 1) remain to be proved: (((MAIN . 2) . 1) . 1) and (((MAIN . 2) . 1) . 2). Now proving (((MAIN . 2) . 1) . 1). (REWRITE SIGNATURES-MATCH-SYMMETRIC) Rewriting with SIGNATURES-MATCH-SYMMETRIC. Creating 1 new subgoal, ((((MAIN . 2) . 1) . 1) . 1). The proof of the current goal, (((MAIN . 2) . 1) . 1), has been completed. However, the following subgoal of (((MAIN . 2) . 1) . 1) remains to be proved: ((((MAIN . 2) . 1) . 1) . 1). Now proving ((((MAIN . 2) . 1) . 1) . 1). (REWRITE OK-MG-STATEP-ALIST-PLISTP) Rewriting with OK-MG-STATEP-ALIST-PLISTP. The current goal, ((((MAIN . 2) . 1) . 1) . 1), has been proved, and has no dependents. Now proving (((MAIN . 2) . 1) . 2). : (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS SIMPLE-IDENTIFIERP)) ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations SIMPLE-IDENTIFIERP, AND, and IMPLIES, to: (IMPLIES (AND (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (NOT (BOOLEAN-IDENTIFIERP (CADR (CALL-ACTUALS STMT)) NAME-ALIST)) (NOT (INT-IDENTIFIERP (CADR (CALL-ACTUALS STMT)) NAME-ALIST))) (CHARACTER-IDENTIFIERP (CADR (CALL-ACTUALS STMT)) NAME-ALIST)), which simplifies, opening up the definitions of OK-PREDEFINED-PROC-CALL, PREDEFINED-PROCP, OK-MG-INTEGER-LE-ARGS, OK-PREDEFINED-PROC-ARGS, EQUAL, and OK-MG-STATEMENT, to: T. Q.E.D. The current goal, (((MAIN . 2) . 1) . 2), has been proved, and has no dependents. Now proving (MAIN . 3). (REWRITE SIMPLE-IDENTIFIERP-IMPLIES-DEFINEDP) Rewriting with SIMPLE-IDENTIFIERP-IMPLIES-DEFINEDP. Creating 1 new subgoal, ((MAIN . 3) . 1). The proof of the current goal, (MAIN . 3), has been completed. However, the following subgoal of (MAIN . 3) remains to be proved: ((MAIN . 3) . 1). Now proving ((MAIN . 3) . 1). : (REWRITE SIGNATURES-MATCH-PRESERVES-SIMPLE-IDENTIFIERP (($ALIST1 NAME-ALIST))) Rewriting with SIGNATURES-MATCH-PRESERVES-SIMPLE-IDENTIFIERP. Creating 2 new subgoals, (((MAIN . 3) . 1) . 1) and (((MAIN . 3) . 1) . 2). The proof of the current goal, ((MAIN . 3) . 1), has been completed. However, the following subgoals of ((MAIN . 3) . 1) remain to be proved: (((MAIN . 3) . 1) . 1) and (((MAIN . 3) . 1) . 2). Now proving (((MAIN . 3) . 1) . 1). (REWRITE SIGNATURES-MATCH-SYMMETRIC) Rewriting with SIGNATURES-MATCH-SYMMETRIC. Creating 1 new subgoal, ((((MAIN . 3) . 1) . 1) . 1). The proof of the current goal, (((MAIN . 3) . 1) . 1), has been completed. However, the following subgoal of (((MAIN . 3) . 1) . 1) remains to be proved: ((((MAIN . 3) . 1) . 1) . 1). Now proving ((((MAIN . 3) . 1) . 1) . 1). (REWRITE OK-MG-STATEP-ALIST-PLISTP) Rewriting with OK-MG-STATEP-ALIST-PLISTP. The current goal, ((((MAIN . 3) . 1) . 1) . 1), has been proved, and has no dependents. Now proving (((MAIN . 3) . 1) . 2). : (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS SIMPLE-IDENTIFIERP)) ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations SIMPLE-IDENTIFIERP, AND, and IMPLIES, to: (IMPLIES (AND (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (NOT (BOOLEAN-IDENTIFIERP (CADDR (CALL-ACTUALS STMT)) NAME-ALIST)) (NOT (INT-IDENTIFIERP (CADDR (CALL-ACTUALS STMT)) NAME-ALIST))) (CHARACTER-IDENTIFIERP (CADDR (CALL-ACTUALS STMT)) NAME-ALIST)), which simplifies, opening up the definitions of OK-PREDEFINED-PROC-CALL, PREDEFINED-PROCP, OK-MG-INTEGER-LE-ARGS, OK-PREDEFINED-PROC-ARGS, EQUAL, and OK-MG-STATEMENT, to: T. Q.E.D. The current goal, (((MAIN . 3) . 1) . 2), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 0.5 0.0 0.0 ] MG-INTEGER-LE-ARGS-DEFINEDP (PROVE-LEMMA MG-INTEGER-LE-STEPS-1-3 (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE)) (EQUAL (P-STEP (P-STEP (P-STEP (MAP-DOWN MG-STATE PROC-LIST CTRL-STK TEMP-STK (TAG 'PC (CONS SUBR (LENGTH (CODE CINFO)))) T-COND-LIST)))) (P-STATE (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3))) CTRL-STK (PUSH (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (PUSH (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (PUSH (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)))) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((INSTRUCTIONS PROMOTE (DIVE 1 1 1) X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) UP (S LEMMAS) (REWRITE GET-LENGTH-CAR) S (= (CALL-NAME STMT) 'MG-INTEGER-LE 0) S (S LEMMAS) UP X UP X (DIVE 1) (S LEMMAS) X (DIVE 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) UP (REWRITE RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX) UP S (S LEMMAS) X (S LEMMAS) UP X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) UP (S LEMMAS) (REWRITE GET-LENGTH-PLUS) S (= (CALL-NAME STMT) 'MG-INTEGER-LE 0) S (S LEMMAS) UP X UP X (DIVE 1) X (S LEMMAS) (DIVE 1 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) UP UP (REWRITE RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2) UP S (S LEMMAS) X (S LEMMAS) UP X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) UP (S LEMMAS) (REWRITE GET-LENGTH-PLUS) S (= (CALL-NAME STMT) 'MG-INTEGER-LE 0) S (S LEMMAS) UP X UP X (DIVE 1) X (S LEMMAS) (DIVE 1 1 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) UP UP UP (REWRITE RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2) UP S (S LEMMAS) X (S LEMMAS) UP S PROVE (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) PROVE (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP)))) WARNING: Note that MG-INTEGER-LE-STEPS-1-3 contains the free variables CODE2, NAME-ALIST, R-COND-LIST, STMT, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST), and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). *** Entering proof-checker *** PROMOTE (DIVE 1 1 1) X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) Rewriting with TRANSLATE-DEF-BODY-REWRITE. UP (S LEMMAS) (REWRITE GET-LENGTH-CAR) Rewriting with GET-LENGTH-CAR. S (= (CALL-NAME STMT) (QUOTE MG-INTEGER-LE) 0) S (S LEMMAS) UP X UP X (DIVE 1) (S LEMMAS) X (DIVE 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) Rewriting with MAP-DOWN-VALUES-PRESERVES-LENGTH. Creating 1 new subgoal, (MAIN . 1). UP (REWRITE RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX) Rewriting with RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX. UP S (S LEMMAS) X (S LEMMAS) UP X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) Rewriting with TRANSLATE-DEF-BODY-REWRITE. UP (S LEMMAS) (REWRITE GET-LENGTH-PLUS) Rewriting with GET-LENGTH-PLUS. S (= (CALL-NAME STMT) (QUOTE MG-INTEGER-LE) 0) S (S LEMMAS) UP X UP X (DIVE 1) X (S LEMMAS) (DIVE 1 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) Rewriting with MAP-DOWN-VALUES-PRESERVES-LENGTH. Creating 1 new subgoal, (MAIN . 2). UP UP (REWRITE RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2) **WARNING**: The following variables occur free in the lemma: RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2 but were not explicitly substituted for: CTRL-STK, TEMP-STK, PROC-LIST, and STMT. Rewriting with RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2. Creating 1 new subgoal, (MAIN . 3). UP S (S LEMMAS) X (S LEMMAS) UP X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) Rewriting with TRANSLATE-DEF-BODY-REWRITE. UP (S LEMMAS) (REWRITE GET-LENGTH-PLUS) Rewriting with GET-LENGTH-PLUS. S (= (CALL-NAME STMT) (QUOTE MG-INTEGER-LE) 0) S (S LEMMAS) UP X UP X (DIVE 1) X (S LEMMAS) (DIVE 1 1 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) Rewriting with MAP-DOWN-VALUES-PRESERVES-LENGTH. Creating 1 new subgoal, (MAIN . 4). UP UP UP (REWRITE RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2) **WARNING**: The following variables occur free in the lemma: RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2 but were not explicitly substituted for: CTRL-STK, TEMP-STK, PROC-LIST, and STMT. Rewriting with RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2. Creating 1 new subgoal, (MAIN . 5). UP S (S LEMMAS) X (S LEMMAS) UP S The proof of the current goal, MAIN, has been completed. However, the following subgoals of MAIN remain to be proved: (MAIN . 5), (MAIN . 4), (MAIN . 3), (MAIN . 2), and (MAIN . 1). Now proving (MAIN . 5). PROVE ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, and NORMAL, to the new formula: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (LESSP (ADD1 (ADD1 (LENGTH TEMP-STK))) (PLUS (PREDEFINED-PROC-CALL-TEMP-STK-REQUIREMENT (CALL-NAME STMT)) (LENGTH TEMP-STK)))), which simplifies, applying PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, and SUB1-ADD1, and unfolding the functions OK-MG-DEF-PLISTP, MG-INTEGER-LE-CALL-SEQUENCE, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, PREDEFINED-PROC-CALL-TEMP-STK-REQUIREMENT, and LESSP, to the following three new goals: Case 3. (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP1 PROC-LIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE CINFO) (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADDR (CALL-ACTUALS STMT))) (CONS '(CALL MG-INTEGER-LE) CODE2)))))) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-EQ)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-EQ)) (NOT (EQUAL SUBR 'MG-INTEGER-LE)) (NOT (EQUAL SUBR 'MG-INTEGER-UNARY-MINUS)) (NOT (EQUAL SUBR 'MG-INTEGER-ADD)) (NOT (EQUAL SUBR 'MG-INTEGER-SUBTRACT)) (NOT (EQUAL SUBR 'MG-BOOLEAN-OR)) (NOT (EQUAL SUBR 'MG-BOOLEAN-AND)) (NOT (EQUAL SUBR 'MG-BOOLEAN-NOT)) (NOT (EQUAL SUBR 'MG-INDEX-ARRAY)) (NOT (EQUAL SUBR 'MG-ARRAY-ELEMENT-ASSIGNMENT)) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (NOT (EQUAL (PLUS 3 (LENGTH TEMP-STK)) 0))). However this again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP1 PROC-LIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE CINFO) (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADDR (CALL-ACTUALS STMT))) (CONS '(CALL MG-INTEGER-LE) CODE2)))))) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-EQ)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-EQ)) (NOT (EQUAL SUBR 'MG-INTEGER-LE)) (NOT (EQUAL SUBR 'MG-INTEGER-UNARY-MINUS)) (NOT (EQUAL SUBR 'MG-INTEGER-ADD)) (NOT (EQUAL SUBR 'MG-INTEGER-SUBTRACT)) (NOT (EQUAL SUBR 'MG-BOOLEAN-OR)) (NOT (EQUAL SUBR 'MG-BOOLEAN-AND)) (NOT (EQUAL SUBR 'MG-BOOLEAN-NOT)) (NOT (EQUAL SUBR 'MG-INDEX-ARRAY)) (NOT (EQUAL SUBR 'MG-ARRAY-ELEMENT-ASSIGNMENT)) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (NOT (EQUAL (SUB1 (PLUS 3 (LENGTH TEMP-STK))) 0))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP1 PROC-LIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE CINFO) (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADDR (CALL-ACTUALS STMT))) (CONS '(CALL MG-INTEGER-LE) CODE2)))))) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-EQ)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-EQ)) (NOT (EQUAL SUBR 'MG-INTEGER-LE)) (NOT (EQUAL SUBR 'MG-INTEGER-UNARY-MINUS)) (NOT (EQUAL SUBR 'MG-INTEGER-ADD)) (NOT (EQUAL SUBR 'MG-INTEGER-SUBTRACT)) (NOT (EQUAL SUBR 'MG-BOOLEAN-OR)) (NOT (EQUAL SUBR 'MG-BOOLEAN-AND)) (NOT (EQUAL SUBR 'MG-BOOLEAN-NOT)) (NOT (EQUAL SUBR 'MG-INDEX-ARRAY)) (NOT (EQUAL SUBR 'MG-ARRAY-ELEMENT-ASSIGNMENT)) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (LESSP (LENGTH TEMP-STK) (SUB1 (SUB1 (PLUS 3 (LENGTH TEMP-STK)))))), which again simplifies, using linear arithmetic, to: T. Q.E.D. The current goal, (MAIN . 5), has been proved, and has no dependents. Now proving (MAIN . 4). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (MAIN . 4), has been proved, and has no dependents. Now proving (MAIN . 3). PROVE ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (LESSP (ADD1 (LENGTH TEMP-STK)) (PLUS (PREDEFINED-PROC-CALL-TEMP-STK-REQUIREMENT (CALL-NAME STMT)) (LENGTH TEMP-STK)))), which simplifies, applying the lemmas PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, and SUB1-ADD1, and unfolding the definitions of OK-MG-DEF-PLISTP, MG-INTEGER-LE-CALL-SEQUENCE, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, PREDEFINED-PROC-CALL-TEMP-STK-REQUIREMENT, and LESSP, to two new formulas: Case 2. (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP1 PROC-LIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE CINFO) (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADDR (CALL-ACTUALS STMT))) (CONS '(CALL MG-INTEGER-LE) CODE2)))))) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-EQ)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-EQ)) (NOT (EQUAL SUBR 'MG-INTEGER-LE)) (NOT (EQUAL SUBR 'MG-INTEGER-UNARY-MINUS)) (NOT (EQUAL SUBR 'MG-INTEGER-ADD)) (NOT (EQUAL SUBR 'MG-INTEGER-SUBTRACT)) (NOT (EQUAL SUBR 'MG-BOOLEAN-OR)) (NOT (EQUAL SUBR 'MG-BOOLEAN-AND)) (NOT (EQUAL SUBR 'MG-BOOLEAN-NOT)) (NOT (EQUAL SUBR 'MG-INDEX-ARRAY)) (NOT (EQUAL SUBR 'MG-ARRAY-ELEMENT-ASSIGNMENT)) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (NOT (EQUAL (PLUS 3 (LENGTH TEMP-STK)) 0))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP1 PROC-LIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE CINFO) (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADDR (CALL-ACTUALS STMT))) (CONS '(CALL MG-INTEGER-LE) CODE2)))))) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-EQ)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-EQ)) (NOT (EQUAL SUBR 'MG-INTEGER-LE)) (NOT (EQUAL SUBR 'MG-INTEGER-UNARY-MINUS)) (NOT (EQUAL SUBR 'MG-INTEGER-ADD)) (NOT (EQUAL SUBR 'MG-INTEGER-SUBTRACT)) (NOT (EQUAL SUBR 'MG-BOOLEAN-OR)) (NOT (EQUAL SUBR 'MG-BOOLEAN-AND)) (NOT (EQUAL SUBR 'MG-BOOLEAN-NOT)) (NOT (EQUAL SUBR 'MG-INDEX-ARRAY)) (NOT (EQUAL SUBR 'MG-ARRAY-ELEMENT-ASSIGNMENT)) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (LESSP (LENGTH TEMP-STK) (SUB1 (PLUS 3 (LENGTH TEMP-STK))))), which again simplifies, using linear arithmetic, to: T. Q.E.D. The current goal, (MAIN . 3), has been proved, and has no dependents. Now proving (MAIN . 2). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (MAIN . 2), has been proved, and has no dependents. Now proving (MAIN . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (MAIN . 1), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 0.6 0.1 0.1 ] MG-INTEGER-LE-STEPS-1-3 (PROVE-LEMMA MG-INTEGER-LE-STEP-4 (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE)) (EQUAL (P-STEP (P-STATE (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3))) CTRL-STK (PUSH (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (PUSH (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (PUSH (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)))) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)) (P-STATE (TAG 'PC '(MG-INTEGER-LE . 0)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((INSTRUCTIONS PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) UP (S LEMMAS) (REWRITE GET-LENGTH-PLUS) S (= (CALL-NAME STMT) 'MG-INTEGER-LE 0) S (S LEMMAS) UP (S LEMMAS) UP X (S LEMMAS) (DIVE 1) X (S LEMMAS) (S-PROP P-CTRL-STK-SIZE) (S LEMMAS) (S-PROP P-FRAME-SIZE) (S LEMMAS) (DIVE 1) (REWRITE RESOURCES-ADEQUATE-CTRL-STK-NOT-MAX) UP S UP S (S LEMMAS) UP S PROVE PROVE))) WARNING: Note that MG-INTEGER-LE-STEP-4 contains the free variables CODE2, NAME-ALIST, R-COND-LIST, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). WARNING: the previously added lemma, P-STEP-EXPANSION, could be applied whenever the newly proposed MG-INTEGER-LE-STEP-4 could! *** Entering proof-checker *** PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) Rewriting with TRANSLATE-DEF-BODY-REWRITE. UP (S LEMMAS) (REWRITE GET-LENGTH-PLUS) Rewriting with GET-LENGTH-PLUS. S (= (CALL-NAME STMT) (QUOTE MG-INTEGER-LE) 0) S (S LEMMAS) UP (S LEMMAS) UP X (S LEMMAS) (DIVE 1) X (S LEMMAS) (S-PROP P-CTRL-STK-SIZE) (S LEMMAS) (S-PROP P-FRAME-SIZE) (S LEMMAS) (DIVE 1) (REWRITE RESOURCES-ADEQUATE-CTRL-STK-NOT-MAX) **WARNING**: The following variables occur free in the lemma: RESOURCES-ADEQUATE-CTRL-STK-NOT-MAX but were not explicitly substituted for: TEMP-STK, PROC-LIST, and STMT. Rewriting with RESOURCES-ADEQUATE-CTRL-STK-NOT-MAX. Creating 1 new subgoal, (MAIN . 1). UP S UP S (S LEMMAS) UP S PROVE ***** Now entering the theorem prover *****: This conjecture can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, and NORMAL, to the conjecture: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (EQUAL (PUSH (P-FRAME (APPEND (PAIRLIST '(ANS X Y) (REVERSE (LIST (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))))) NIL) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK))). This simplifies, rewriting with PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, CAR-CONS, CDR-CONS, PLISTP-CONS, and APPEND-PLISTP-NIL-LEMMA, and expanding OK-MG-DEF-PLISTP, MG-INTEGER-LE-CALL-SEQUENCE, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, REVERSE, PAIRLIST, and PLISTP, to: T. Q.E.D. The proof of the current goal, MAIN, has been completed. However, the following subgoal of MAIN remains to be proved: (MAIN . 1). Now proving (MAIN . 1). PROVE ***** Now entering the theorem prover *****: This conjecture can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, PREDEFINED-PROC-CALL-P-FRAME-SIZE, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (NOT (LESSP (ADD1 (ADD1 (PREDEFINED-PROC-CALL-BINDINGS-COUNT (CALL-NAME STMT)))) 5))). This simplifies, rewriting with PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, and ASSOCIATIVITY-OF-APPEND, and unfolding the definitions of OK-MG-DEF-PLISTP, MG-INTEGER-LE-CALL-SEQUENCE, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, PREDEFINED-PROC-CALL-BINDINGS-COUNT, ADD1, and LESSP, to: T. Q.E.D. The current goal, (MAIN . 1), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 0.3 0.2 0.0 ] MG-INTEGER-LE-STEP-4 (PROVE-LEMMA MG-INTEGER-LE-STEP-5 (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE)) (EQUAL (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-LE . 0)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)) (P-STATE (TAG 'PC '(MG-INTEGER-LE . 1)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((ENABLE UNLABEL P-STEP P-INS-OKP P-INS-STEP MAP-DOWN-VALUES-PRESERVES-LENGTH RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX OK-MG-STATEP-MG-ALIST-MG-ALISTP P-STEP1))) WARNING: Note that MG-INTEGER-LE-STEP-5 contains the free variables CODE2, NAME-ALIST, R-COND-LIST, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). WARNING: the previously added lemma, P-STEP-EXPANSION, could be applied whenever the newly proposed MG-INTEGER-LE-STEP-5 could! This conjecture can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, MG-WORD-SIZE, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (EQUAL (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-LE . 0)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) 32 'RUN)) (P-STATE (TAG 'PC '(MG-INTEGER-LE . 1)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) 32 'RUN))). This simplifies, using linear arithmetic, applying PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, SPECIAL-CONDITIONS-MG-COND-TO-P-NAT, P-PROG-SEGMENT-P-STATE, ASSOC-MG-INTEGER-LE-TRANSLATE-PROC-LIST, P-PC-P-STATE, P-INS-STEP-EXPANSION, P-CTRL-STK-P-STATE, VALUE-EXPANSION2, VALUE-EXPANSION3, BINDINGS-FRAME, TOP-PUSH, P-DATA-SEGMENT-P-STATE, P-MAX-CTRL-STK-SIZE-P-STATE, P-WORD-SIZE-P-STATE, P-INS-OKP-EXPANSION, P-TEMP-STK-P-STATE, OK-MG-STATEP-MG-ALIST-MG-ALISTP, MAP-DOWN-VALUES-PRESERVES-LENGTH, P-MAX-TEMP-STK-SIZE-P-STATE, RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2, and P-STEP-EXPANSION, and unfolding the functions OK-MG-DEF-PLISTP, MG-INTEGER-LE-CALL-SEQUENCE, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, TAG, CONS, UNLABEL, GET, PROGRAM-BODY, P-CURRENT-PROGRAM, AREA-NAME, MG-INTEGER-LE-TRANSLATION, DEFINITION, OFFSET, P-CURRENT-INSTRUCTION, P-PUSH-LOCAL-STEP, ADD1-ADDR, ADD1-P-PC, LOCAL-VAR-VALUE, P-PUSH-LOCAL-OKP, PREDEFINED-PROC-CALL-TEMP-STK-REQUIREMENT, PACK, and P-STEP1, to: T. Q.E.D. [ 0.0 0.1 0.0 ] MG-INTEGER-LE-STEP-5 (PROVE-LEMMA MG-INTEGER-LE-STEP-6 (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE)) (EQUAL (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-LE . 1)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)) (P-STATE (TAG 'PC '(MG-INTEGER-LE . 2)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (RGET (UNTAG (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((INSTRUCTIONS PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1) X UP X (DIVE 1) X (S LEMMAS) PUSH UP S (S LEMMAS) X (S LEMMAS) (DIVE 3 1) (REWRITE APPEND-DOESNT-AFFECT-RGET-COROLLARY) UP UP UP S (DIVE 2) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) UP (REWRITE MG-VAR-OK-TEMP-STK-INDEX (($LST (MG-ALIST MG-STATE)))) (REWRITE MG-INTEGER-LE-ARGS-DEFINEDP) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (CLAIM (LESSP (LENGTH TEMP-STK) (MG-MAX-TEMP-STK-SIZE))) (CLAIM (SIMPLE-IDENTIFIERP (CADDR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)) 0) SPLIT (DIVE 2 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) UP UP (REWRITE SIMPLE-IDENTIFIER-MAPPING-3 (($MG-ALIST (MG-ALIST MG-STATE)))) (REWRITE MG-INTEGER-LE-ARGS-DEFINEDP) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE SIMPLE-IDENTIFIER-MAPPING-2) (DIVE 1) (REWRITE SIMPLE-IDENTIFIER-MAPPING-2) TOP S (REWRITE SIMPLE-IDENTIFIER-MAPPING-2) (DIVE 1) (REWRITE SIMPLE-IDENTIFIER-MAPPING-2) UP S (CONTRADICT 17) (REWRITE INT-IDENTIFIERP-SIMPLE) (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS)))) WARNING: Note that MG-INTEGER-LE-STEP-6 contains the free variables CODE2, NAME-ALIST, R-COND-LIST, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). WARNING: the previously added lemma, P-STEP-EXPANSION, could be applied whenever the newly proposed MG-INTEGER-LE-STEP-6 could! *** Entering proof-checker *** PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1) X UP X (DIVE 1) X (S LEMMAS) PUSH Creating 1 new subgoal, (MAIN . 1). UP S (S LEMMAS) X (S LEMMAS) (DIVE 3 1) (REWRITE APPEND-DOESNT-AFFECT-RGET-COROLLARY) Rewriting with APPEND-DOESNT-AFFECT-RGET-COROLLARY. Creating 1 new subgoal, (MAIN . 2). UP UP UP S The proof of the current goal, MAIN, has been completed. However, the following subgoals of MAIN remain to be proved: (MAIN . 2) and (MAIN . 1). Now proving (MAIN . 2). (DIVE 2) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) Rewriting with MAP-DOWN-VALUES-PRESERVES-LENGTH. Creating 1 new subgoal, ((MAIN . 2) . 1). UP (REWRITE MG-VAR-OK-TEMP-STK-INDEX (($LST (MG-ALIST MG-STATE)))) Rewriting with MG-VAR-OK-TEMP-STK-INDEX. Creating 1 new subgoal, ((MAIN . 2) . 2). The proof of the current goal, (MAIN . 2), has been completed. However, the following subgoals of (MAIN . 2) remain to be proved: ((MAIN . 2) . 2) and ((MAIN . 2) . 1). Now proving ((MAIN . 2) . 2). (REWRITE MG-INTEGER-LE-ARGS-DEFINEDP) Rewriting with MG-INTEGER-LE-ARGS-DEFINEDP. The current goal, ((MAIN . 2) . 2), has been proved, and has no dependents. Now proving ((MAIN . 2) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, ((MAIN . 2) . 1), has been proved, and has no dependents. Now proving (MAIN . 1). (CLAIM (LESSP (LENGTH TEMP-STK) (MG-MAX-TEMP-STK-SIZE))) ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, and NORMAL, to the new goal: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (LESSP (LENGTH TEMP-STK) (MG-MAX-TEMP-STK-SIZE))), which simplifies, using linear arithmetic, rewriting with the lemmas PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, and RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2, and unfolding the functions OK-MG-DEF-PLISTP, MG-INTEGER-LE-CALL-SEQUENCE, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, and PREDEFINED-PROC-CALL-TEMP-STK-REQUIREMENT, to: T. Q.E.D. : (CLAIM (SIMPLE-IDENTIFIERP (CADDR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)) 0) Creating one new subgoal, ((MAIN . 1) . 1). SPLIT Creating 5 new subgoals, ((MAIN . 1) . 2), ((MAIN . 1) . 3), ((MAIN . 1) . 4), ((MAIN . 1) . 5), and ((MAIN . 1) . 6). The proof of the current goal, (MAIN . 1), has been completed. However, the following subgoals of (MAIN . 1) remain to be proved: ((MAIN . 1) . 2), ((MAIN . 1) . 3), ((MAIN . 1) . 4), ((MAIN . 1) . 5), ((MAIN . 1) . 6), and ((MAIN . 1) . 1). Now proving ((MAIN . 1) . 2). (DIVE 2 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) Rewriting with MAP-DOWN-VALUES-PRESERVES-LENGTH. Creating 1 new subgoal, (((MAIN . 1) . 2) . 1). UP UP (REWRITE SIMPLE-IDENTIFIER-MAPPING-3 (($MG-ALIST (MG-ALIST MG-STATE)))) Rewriting with SIMPLE-IDENTIFIER-MAPPING-3. Creating 1 new subgoal, (((MAIN . 1) . 2) . 2). The proof of the current goal, ((MAIN . 1) . 2), has been completed. However, the following subgoals of ((MAIN . 1) . 2) remain to be proved: (((MAIN . 1) . 2) . 2) and (((MAIN . 1) . 2) . 1). Now proving (((MAIN . 1) . 2) . 2). (REWRITE MG-INTEGER-LE-ARGS-DEFINEDP) Rewriting with MG-INTEGER-LE-ARGS-DEFINEDP. The current goal, (((MAIN . 1) . 2) . 2), has been proved, and has no dependents. Now proving (((MAIN . 1) . 2) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (((MAIN . 1) . 2) . 1), has been proved, and has no dependents. Now proving ((MAIN . 1) . 3). (REWRITE SIMPLE-IDENTIFIER-MAPPING-2) Rewriting with SIMPLE-IDENTIFIER-MAPPING-2. The current goal, ((MAIN . 1) . 3), has been proved, and has no dependents. Now proving ((MAIN . 1) . 4). (DIVE 1) (REWRITE SIMPLE-IDENTIFIER-MAPPING-2) Rewriting with SIMPLE-IDENTIFIER-MAPPING-2. TOP S The current goal, ((MAIN . 1) . 4), has been proved, and has no dependents. Now proving ((MAIN . 1) . 5). (REWRITE SIMPLE-IDENTIFIER-MAPPING-2) Rewriting with SIMPLE-IDENTIFIER-MAPPING-2. The current goal, ((MAIN . 1) . 5), has been proved, and has no dependents. Now proving ((MAIN . 1) . 6). (DIVE 1) (REWRITE SIMPLE-IDENTIFIER-MAPPING-2) Rewriting with SIMPLE-IDENTIFIER-MAPPING-2. UP S The current goal, ((MAIN . 1) . 6), has been proved, and has no dependents. Now proving ((MAIN . 1) . 1). (CONTRADICT 17) (REWRITE INT-IDENTIFIERP-SIMPLE) Rewriting with INT-IDENTIFIERP-SIMPLE. Creating 1 new subgoal, (((MAIN . 1) . 1) . 1). The proof of the current goal, ((MAIN . 1) . 1), has been completed. However, the following subgoal of ((MAIN . 1) . 1) remains to be proved: (((MAIN . 1) . 1) . 1). Now proving (((MAIN . 1) . 1) . 1). (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, (((MAIN . 1) . 1) . 1), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 0.6 0.1 0.0 ] MG-INTEGER-LE-STEP-6 (PROVE-LEMMA MG-INTEGER-LE-STEP-7 (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE)) (EQUAL (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-LE . 2)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (RGET (UNTAG (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)) (P-STATE (TAG 'PC '(MG-INTEGER-LE . 3)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (PUSH (RGET (UNTAG (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((ENABLE UNLABEL P-STEP P-INS-OKP P-INS-STEP MAP-DOWN-VALUES-PRESERVES-LENGTH RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX OK-MG-STATEP-MG-ALIST-MG-ALISTP P-STEP1))) WARNING: Note that MG-INTEGER-LE-STEP-7 contains the free variables CODE2, NAME-ALIST, R-COND-LIST, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). WARNING: the previously added lemma, P-STEP-EXPANSION, could be applied whenever the newly proposed MG-INTEGER-LE-STEP-7 could! This conjecture can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, MG-WORD-SIZE, and NORMAL, to the formula: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (EQUAL (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-LE . 2)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (RGET (UNTAG (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) 32 'RUN)) (P-STATE (TAG 'PC '(MG-INTEGER-LE . 3)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (PUSH (RGET (UNTAG (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) 32 'RUN))). This simplifies, using linear arithmetic, applying PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, INT-IDENTIFIERP-SIMPLE, MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS, OK-MG-STATEP-MG-ALIST-MG-ALISTP, RGET-REWRITE1, SPECIAL-CONDITIONS-MG-COND-TO-P-NAT, P-PROG-SEGMENT-P-STATE, ASSOC-MG-INTEGER-LE-TRANSLATE-PROC-LIST, P-PC-P-STATE, P-INS-STEP-EXPANSION, P-CTRL-STK-P-STATE, VALUE-EXPANSION2, VALUE-EXPANSION3, BINDINGS-FRAME, TOP-PUSH, P-DATA-SEGMENT-P-STATE, P-MAX-CTRL-STK-SIZE-P-STATE, P-WORD-SIZE-P-STATE, P-INS-OKP-EXPANSION, P-TEMP-STK-P-STATE, MAP-DOWN-VALUES-PRESERVES-LENGTH, LENGTH-PUSH, P-MAX-TEMP-STK-SIZE-P-STATE, RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2, and P-STEP-EXPANSION, and opening up the functions OK-MG-DEF-PLISTP, MG-INTEGER-LE-CALL-SEQUENCE, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, TAG, CONS, UNLABEL, GET, PROGRAM-BODY, P-CURRENT-PROGRAM, AREA-NAME, MG-INTEGER-LE-TRANSLATION, DEFINITION, OFFSET, P-CURRENT-INSTRUCTION, P-PUSH-LOCAL-STEP, ADD1-ADDR, ADD1-P-PC, LOCAL-VAR-VALUE, P-PUSH-LOCAL-OKP, PREDEFINED-PROC-CALL-TEMP-STK-REQUIREMENT, PACK, and P-STEP1, to: T. Q.E.D. [ 0.0 0.1 0.0 ] MG-INTEGER-LE-STEP-7 (PROVE-LEMMA MG-INTEGER-LE-STEP-8 (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE)) (EQUAL (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-LE . 3)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (PUSH (RGET (UNTAG (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)) (P-STATE (TAG 'PC '(MG-INTEGER-LE . 4)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (RGET (UNTAG (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (PUSH (RGET (UNTAG (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((INSTRUCTIONS PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1) X UP X (S LEMMAS) (DIVE 1) X (S LEMMAS) PUSH UP S (S LEMMAS) (DIVE 3 1) (REWRITE APPEND-DOESNT-AFFECT-RGET-COROLLARY) (REWRITE APPEND-DOESNT-AFFECT-RGET-COROLLARY) UP UP UP S (DIVE 2) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) UP (REWRITE MG-VAR-OK-TEMP-STK-INDEX (($LST (MG-ALIST MG-STATE)))) (REWRITE MG-INTEGER-LE-ARGS-DEFINEDP) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (S LEMMAS) (DIVE 2 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) UP UP (REWRITE SIMPLE-IDENTIFIER-MAPPING-3 (($MG-ALIST (MG-ALIST MG-STATE)))) (REWRITE MG-INTEGER-LE-ARGS-DEFINEDP) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) BASH))) WARNING: Note that MG-INTEGER-LE-STEP-8 contains the free variables CODE2, NAME-ALIST, R-COND-LIST, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). WARNING: the previously added lemma, P-STEP-EXPANSION, could be applied whenever the newly proposed MG-INTEGER-LE-STEP-8 could! *** Entering proof-checker *** PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1) X UP X (S LEMMAS) (DIVE 1) X (S LEMMAS) PUSH Creating 1 new subgoal, (MAIN . 1). UP S (S LEMMAS) (DIVE 3 1) (REWRITE APPEND-DOESNT-AFFECT-RGET-COROLLARY) Rewriting with APPEND-DOESNT-AFFECT-RGET-COROLLARY. Creating 1 new subgoal, (MAIN . 2). (REWRITE APPEND-DOESNT-AFFECT-RGET-COROLLARY) Rewriting with APPEND-DOESNT-AFFECT-RGET-COROLLARY. Creating 1 new subgoal, (MAIN . 3). UP UP UP S The proof of the current goal, MAIN, has been completed. However, the following subgoals of MAIN remain to be proved: (MAIN . 3), (MAIN . 2), and (MAIN . 1). Now proving (MAIN . 3). (DIVE 2) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) Rewriting with MAP-DOWN-VALUES-PRESERVES-LENGTH. Creating 1 new subgoal, ((MAIN . 3) . 1). UP (REWRITE MG-VAR-OK-TEMP-STK-INDEX (($LST (MG-ALIST MG-STATE)))) Rewriting with MG-VAR-OK-TEMP-STK-INDEX. Creating 1 new subgoal, ((MAIN . 3) . 2). The proof of the current goal, (MAIN . 3), has been completed. However, the following subgoals of (MAIN . 3) remain to be proved: ((MAIN . 3) . 2) and ((MAIN . 3) . 1). Now proving ((MAIN . 3) . 2). (REWRITE MG-INTEGER-LE-ARGS-DEFINEDP) Rewriting with MG-INTEGER-LE-ARGS-DEFINEDP. The current goal, ((MAIN . 3) . 2), has been proved, and has no dependents. Now proving ((MAIN . 3) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, ((MAIN . 3) . 1), has been proved, and has no dependents. Now proving (MAIN . 2). (S LEMMAS) (DIVE 2 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) Rewriting with MAP-DOWN-VALUES-PRESERVES-LENGTH. Creating 1 new subgoal, ((MAIN . 2) . 1). UP UP (REWRITE SIMPLE-IDENTIFIER-MAPPING-3 (($MG-ALIST (MG-ALIST MG-STATE)))) Rewriting with SIMPLE-IDENTIFIER-MAPPING-3. Creating 1 new subgoal, ((MAIN . 2) . 2). The proof of the current goal, (MAIN . 2), has been completed. However, the following subgoals of (MAIN . 2) remain to be proved: ((MAIN . 2) . 2) and ((MAIN . 2) . 1). Now proving ((MAIN . 2) . 2). (REWRITE MG-INTEGER-LE-ARGS-DEFINEDP) Rewriting with MG-INTEGER-LE-ARGS-DEFINEDP. The current goal, ((MAIN . 2) . 2), has been proved, and has no dependents. Now proving ((MAIN . 2) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, ((MAIN . 2) . 1), has been proved, and has no dependents. Now proving (MAIN . 1). BASH ***** Now entering the theorem prover's rewriter - simplifier ***** The current goal has been proved, without the creation of new subgoals. The goal has been simplified using OK-MG-DEF-PLISTP, MG-INTEGER-LE-CALL-SEQUENCE EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, CDR, CAR, LISTP, MEMBER, RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2 PREDEFINED-PROC-CALL-TEMP-STK-REQUIREMENT, ZERO, INT-IDENTIFIERP-SIMPLE, MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS SIMPLE-IDENTIFIER-MAPPING-2, OK-MG-STATEP-MG-ALIST-MG-ALISTP, MAP-DOWN-VALUES-PRESERVES-LENGTH SUB1-PRESERVES-LESSP, MG-INTEGER-LE-ARGS-DEFINEDP, SIMPLE-IDENTIFIER-MAPPING-3, SUB1-ADD1, LESSP, PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, and NORMAL. The current goal, (MAIN . 1), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 0.4 0.1 0.0 ] MG-INTEGER-LE-STEP-8 (PROVE-LEMMA MG-INTEGER-LE-STEP-9 (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE)) (EQUAL (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-LE . 4)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (RGET (UNTAG (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (PUSH (RGET (UNTAG (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)) (P-STATE (TAG 'PC '(MG-INTEGER-LE . 5)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (TAG 'BOOL (IF (ILESSP (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADDR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) 'T 'F)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((INSTRUCTIONS PROMOTE (DIVE 1) (DIVE 1 3 2 1) (REWRITE RGET-REWRITE1) UP UP (DIVE 1) (REWRITE RGET-REWRITE1) UP UP UP X (S LEMMAS) (DIVE 1) X UP X (DIVE 1) X (S LEMMAS) PUSH UP S (S LEMMAS) X (S LEMMAS) UP PROVE BASH (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE INT-IDENTIFIERP-SIMPLE) (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE INT-IDENTIFIERP-SIMPLE) (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS)))) WARNING: Note that MG-INTEGER-LE-STEP-9 contains the free variables CODE2, NAME-ALIST, R-COND-LIST, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). WARNING: the previously added lemma, P-STEP-EXPANSION, could be applied whenever the newly proposed MG-INTEGER-LE-STEP-9 could! *** Entering proof-checker *** PROMOTE (DIVE 1) (DIVE 1 3 2 1) (REWRITE RGET-REWRITE1) Rewriting with RGET-REWRITE1. Creating 2 new subgoals, (MAIN . 1) and (MAIN . 2). UP UP (DIVE 1) (REWRITE RGET-REWRITE1) Rewriting with RGET-REWRITE1. Creating 2 new subgoals, (MAIN . 3) and (MAIN . 4). UP UP UP X (S LEMMAS) (DIVE 1) X UP X (DIVE 1) X (S LEMMAS) PUSH Creating 1 new subgoal, (MAIN . 5). UP S (S LEMMAS) X (S LEMMAS) UP PROVE ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, MG-WORD-SIZE, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (EQUAL (P-STATE (TAG 'PC '(MG-INTEGER-LE . 5)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (TAG 'BOOL (IF (ILESSP (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADDR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) 'T 'F)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) 32 'RUN) (P-STATE (TAG 'PC '(MG-INTEGER-LE . 5)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (TAG 'BOOL (IF (ILESSP (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADDR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) 'T 'F)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) 32 'RUN))), which simplifies, trivially, to: T. Q.E.D. The proof of the current goal, MAIN, has been completed. However, the following subgoals of MAIN remain to be proved: (MAIN . 5), (MAIN . 3), (MAIN . 4), (MAIN . 1), and (MAIN . 2). Now proving (MAIN . 5). BASH ***** Now entering the theorem prover's rewriter - simplifier ***** The current goal has been proved, without the creation of new subgoals. The goal has been simplified using OK-MG-DEF-PLISTP, MG-INTEGER-LE-CALL-SEQUENCE EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, CDR, CAR, LISTP, MEMBER, INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES OK-MG-STATEP-MG-ALIST-MG-ALISTP, MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS, INT-LITERALS-MAPPING, INT-LITERALP-MAPPING, INT-LITERALP-VALUE-SMALL, PREDEFINED-PROCEDURE-LIST USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, and NORMAL. The current goal, (MAIN . 5), has been proved, and has no dependents. Now proving (MAIN . 3). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (MAIN . 3), has been proved, and has no dependents. Now proving (MAIN . 4). (REWRITE INT-IDENTIFIERP-SIMPLE) Rewriting with INT-IDENTIFIERP-SIMPLE. Creating 1 new subgoal, ((MAIN . 4) . 1). The proof of the current goal, (MAIN . 4), has been completed. However, the following subgoal of (MAIN . 4) remains to be proved: ((MAIN . 4) . 1). Now proving ((MAIN . 4) . 1). (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, ((MAIN . 4) . 1), has been proved, and has no dependents. Now proving (MAIN . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (MAIN . 1), has been proved, and has no dependents. Now proving (MAIN . 2). (REWRITE INT-IDENTIFIERP-SIMPLE) Rewriting with INT-IDENTIFIERP-SIMPLE. Creating 1 new subgoal, ((MAIN . 2) . 1). The proof of the current goal, (MAIN . 2), has been completed. However, the following subgoal of (MAIN . 2) remains to be proved: ((MAIN . 2) . 1). Now proving ((MAIN . 2) . 1). (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, ((MAIN . 2) . 1), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 1.0 0.2 0.0 ] MG-INTEGER-LE-STEP-9 (PROVE-LEMMA MG-INTEGER-LE-STEP-10 (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE) (MEMBER LT-VALUE '(T F))) (EQUAL (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-LE . 5)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (TAG 'BOOL LT-VALUE) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)) (P-STATE (TAG 'PC '(MG-INTEGER-LE . 6)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (TAG 'BOOL (NOT-BOOL LT-VALUE)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((INSTRUCTIONS PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1) X UP X (S LEMMAS) (DIVE 1) X (S LEMMAS) (= * T ((ENABLE TAG))) UP S (S LEMMAS) UP S))) WARNING: Note that MG-INTEGER-LE-STEP-10 contains the free variables CODE2, NAME-ALIST, R-COND-LIST, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). WARNING: the previously added lemma, P-STEP-EXPANSION, could be applied whenever the newly proposed MG-INTEGER-LE-STEP-10 could! *** Entering proof-checker *** PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1) X UP X (S LEMMAS) (DIVE 1) X (S LEMMAS) (= * T ((ENABLE TAG))) ***** Now entering the theorem prover *****: This conjecture can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, and NORMAL, to the goal: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (MEMBER LT-VALUE '(T F))) (EQUAL (IF (EQUAL LT-VALUE 'T) T (EQUAL LT-VALUE 'F)) T)). This simplifies, rewriting with the lemmas PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, and ASSOCIATIVITY-OF-APPEND, and expanding the definitions of OK-MG-DEF-PLISTP, MG-INTEGER-LE-CALL-SEQUENCE, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, and MEMBER, to: T. Q.E.D. UP S (S LEMMAS) UP S The current goal, MAIN, has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 0.3 0.1 0.0 ] MG-INTEGER-LE-STEP-10 (PROVE-LEMMA MG-INTEGER-LE-STEP-11 (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE)) (EQUAL (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-LE . 6)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (TAG 'BOOL (NOT-BOOL LT-VALUE)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)) (P-STATE (TAG 'PC '(MG-INTEGER-LE . 7)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (PUSH (TAG 'BOOL (NOT-BOOL LT-VALUE)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((ENABLE UNLABEL P-STEP P-INS-OKP P-INS-STEP MAP-DOWN-VALUES-PRESERVES-LENGTH RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX OK-MG-STATEP-MG-ALIST-MG-ALISTP P-STEP1))) WARNING: Note that MG-INTEGER-LE-STEP-11 contains the free variables CODE2, NAME-ALIST, R-COND-LIST, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). WARNING: the previously added lemma, P-STEP-EXPANSION, could be applied whenever the newly proposed MG-INTEGER-LE-STEP-11 could! This conjecture can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, MG-WORD-SIZE, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (EQUAL (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-LE . 6)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (TAG 'BOOL (NOT-BOOL LT-VALUE)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) 32 'RUN)) (P-STATE (TAG 'PC '(MG-INTEGER-LE . 7)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (PUSH (TAG 'BOOL (NOT-BOOL LT-VALUE)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) 32 'RUN))). This simplifies, using linear arithmetic, applying the lemmas PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, SPECIAL-CONDITIONS-MG-COND-TO-P-NAT, P-PROG-SEGMENT-P-STATE, ASSOC-MG-INTEGER-LE-TRANSLATE-PROC-LIST, P-PC-P-STATE, P-INS-STEP-EXPANSION, P-CTRL-STK-P-STATE, VALUE-EXPANSION3, BINDINGS-FRAME, TOP-PUSH, P-DATA-SEGMENT-P-STATE, P-MAX-CTRL-STK-SIZE-P-STATE, P-WORD-SIZE-P-STATE, P-INS-OKP-EXPANSION, P-TEMP-STK-P-STATE, OK-MG-STATEP-MG-ALIST-MG-ALISTP, MAP-DOWN-VALUES-PRESERVES-LENGTH, LENGTH-PUSH, P-MAX-TEMP-STK-SIZE-P-STATE, RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2, and P-STEP-EXPANSION, and unfolding OK-MG-DEF-PLISTP, MG-INTEGER-LE-CALL-SEQUENCE, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, TAG, CONS, UNLABEL, GET, PROGRAM-BODY, P-CURRENT-PROGRAM, AREA-NAME, MG-INTEGER-LE-TRANSLATION, DEFINITION, OFFSET, P-CURRENT-INSTRUCTION, P-PUSH-LOCAL-STEP, ADD1-ADDR, ADD1-P-PC, LOCAL-VAR-VALUE, P-PUSH-LOCAL-OKP, PREDEFINED-PROC-CALL-TEMP-STK-REQUIREMENT, PACK, and P-STEP1, to: T. Q.E.D. [ 0.0 0.1 0.0 ] MG-INTEGER-LE-STEP-11 (PROVE-LEMMA MG-INTEGER-LE-STEP-12 (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE)) (EQUAL (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-LE . 7)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (PUSH (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (PUSH (TAG 'BOOL (NOT-BOOL LT-VALUE)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)) (P-STATE (TAG 'PC '(MG-INTEGER-LE . 8)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (RPUT (TAG 'BOOL (NOT-BOOL LT-VALUE)) (UNTAG (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((INSTRUCTIONS PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1) X UP X (S LEMMAS) (DIVE 1) X (S LEMMAS) PUSH UP S (S LEMMAS) TOP S (CLAIM (LESSP (LENGTH TEMP-STK) (MG-MAX-TEMP-STK-SIZE))) (CLAIM (SIMPLE-IDENTIFIERP (CAR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)) 0) SPLIT (DIVE 2) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) UP (REWRITE MG-VAR-OK-TEMP-STK-INDEX (($LST (MG-ALIST MG-STATE)))) (REWRITE MG-INTEGER-LE-ARGS-DEFINEDP) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE SIMPLE-IDENTIFIER-MAPPING-2) (DIVE 1) (REWRITE SIMPLE-IDENTIFIER-MAPPING-2) UP S (REWRITE SIMPLE-IDENTIFIER-MAPPING-2) (DIVE 1) (REWRITE SIMPLE-IDENTIFIER-MAPPING-2) UP S (CONTRADICT 17) X (DIVE 1) (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) TOP S))) WARNING: Note that MG-INTEGER-LE-STEP-12 contains the free variables CODE2, NAME-ALIST, R-COND-LIST, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). WARNING: the previously added lemma, P-STEP-EXPANSION, could be applied whenever the newly proposed MG-INTEGER-LE-STEP-12 could! *** Entering proof-checker *** PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1) X UP X (S LEMMAS) (DIVE 1) X (S LEMMAS) PUSH Creating 1 new subgoal, (MAIN . 1). UP S (S LEMMAS) TOP S The proof of the current goal, MAIN, has been completed. However, the following subgoal of MAIN remains to be proved: (MAIN . 1). Now proving (MAIN . 1). (CLAIM (LESSP (LENGTH TEMP-STK) (MG-MAX-TEMP-STK-SIZE))) ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, and NORMAL, to the new goal: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (LESSP (LENGTH TEMP-STK) (MG-MAX-TEMP-STK-SIZE))), which simplifies, using linear arithmetic, rewriting with the lemmas PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, and RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2, and unfolding the functions OK-MG-DEF-PLISTP, MG-INTEGER-LE-CALL-SEQUENCE, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, and PREDEFINED-PROC-CALL-TEMP-STK-REQUIREMENT, to: T. Q.E.D. (CLAIM (SIMPLE-IDENTIFIERP (CAR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)) 0) Creating one new subgoal, ((MAIN . 1) . 1). SPLIT Creating 5 new subgoals, ((MAIN . 1) . 2), ((MAIN . 1) . 3), ((MAIN . 1) . 4), ((MAIN . 1) . 5), and ((MAIN . 1) . 6). The proof of the current goal, (MAIN . 1), has been completed. However, the following subgoals of (MAIN . 1) remain to be proved: ((MAIN . 1) . 2), ((MAIN . 1) . 3), ((MAIN . 1) . 4), ((MAIN . 1) . 5), ((MAIN . 1) . 6), and ((MAIN . 1) . 1). Now proving ((MAIN . 1) . 2). (DIVE 2) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) Rewriting with MAP-DOWN-VALUES-PRESERVES-LENGTH. Creating 1 new subgoal, (((MAIN . 1) . 2) . 1). UP (REWRITE MG-VAR-OK-TEMP-STK-INDEX (($LST (MG-ALIST MG-STATE)))) Rewriting with MG-VAR-OK-TEMP-STK-INDEX. Creating 1 new subgoal, (((MAIN . 1) . 2) . 2). The proof of the current goal, ((MAIN . 1) . 2), has been completed. However, the following subgoals of ((MAIN . 1) . 2) remain to be proved: (((MAIN . 1) . 2) . 2) and (((MAIN . 1) . 2) . 1). Now proving (((MAIN . 1) . 2) . 2). (REWRITE MG-INTEGER-LE-ARGS-DEFINEDP) Rewriting with MG-INTEGER-LE-ARGS-DEFINEDP. The current goal, (((MAIN . 1) . 2) . 2), has been proved, and has no dependents. Now proving (((MAIN . 1) . 2) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (((MAIN . 1) . 2) . 1), has been proved, and has no dependents. Now proving ((MAIN . 1) . 3). (REWRITE SIMPLE-IDENTIFIER-MAPPING-2) Rewriting with SIMPLE-IDENTIFIER-MAPPING-2. The current goal, ((MAIN . 1) . 3), has been proved, and has no dependents. Now proving ((MAIN . 1) . 4). (DIVE 1) (REWRITE SIMPLE-IDENTIFIER-MAPPING-2) Rewriting with SIMPLE-IDENTIFIER-MAPPING-2. UP S The current goal, ((MAIN . 1) . 4), has been proved, and has no dependents. Now proving ((MAIN . 1) . 5). (REWRITE SIMPLE-IDENTIFIER-MAPPING-2) Rewriting with SIMPLE-IDENTIFIER-MAPPING-2. The current goal, ((MAIN . 1) . 5), has been proved, and has no dependents. Now proving ((MAIN . 1) . 6). (DIVE 1) (REWRITE SIMPLE-IDENTIFIER-MAPPING-2) Rewriting with SIMPLE-IDENTIFIER-MAPPING-2. UP S The current goal, ((MAIN . 1) . 6), has been proved, and has no dependents. Now proving ((MAIN . 1) . 1). (CONTRADICT 17) X (DIVE 1) (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. TOP S The current goal, ((MAIN . 1) . 1), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 0.6 0.1 0.0 ] MG-INTEGER-LE-STEP-12 (PROVE-LEMMA MG-INTEGER-LE-STEP-13-TRUE-CASE (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE) (ILESSP (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADDR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))))) (EQUAL (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-LE . 8)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (RPUT (TAG 'BOOL (NOT-BOOL 'T)) (UNTAG (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)) (P-STATE (TAG 'PC (CONS SUBR (IF (NORMAL (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (LENGTH (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST))) (FIND-LABEL (FETCH-LABEL (CC (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (LABEL-ALIST (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST))) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2))))) CTRL-STK (MAP-DOWN-VALUES (MG-ALIST (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((INSTRUCTIONS PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1) X UP X (S LEMMAS) X (S LEMMAS) UP (S LEMMAS) S (= (CALL-NAME STMT) 'MG-INTEGER-LE 0) S SPLIT (PROVE (ENABLE MG-MEANING-PREDEFINED-PROC-CALL)) (DIVE 2 1 1) X (= (CALL-NAME STMT) 'MG-INTEGER-LE 0) S UP S UP (REWRITE SET-ALIST-VALUE-DEPOSIT-TEMP-RELATION) UP (S-PROP NOT-BOOL) (DEMOTE 16) (DIVE 1) (REWRITE MG-TO-P-SIMPLE-LITERALP-PRESERVES-UNTAG-ILESSP) UP PROMOTE S DROP (PROVE (ENABLE MG-TO-P-SIMPLE-LITERAL INT-LITERALP BOOLEAN-LITERALP TAG UNTAG LENGTH-PLISTP)) (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) X (DIVE 1) (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) TOP S (DIVE 2) (REWRITE SIGNATURES-MATCH-PRESERVES-GET-M-TYPE (($ALIST2 NAME-ALIST))) (= * 'BOOLEAN-MG 0) UP (S LEMMAS) (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS BOOLEAN-IDENTIFIERP)) (PROVE (ENABLE MG-MEANING-PREDEFINED-PROC-CALL))))) WARNING: Note that MG-INTEGER-LE-STEP-13-TRUE-CASE contains the free variables CODE2, NAME-ALIST, R-COND-LIST, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). WARNING: the previously added lemma, P-STEP-EXPANSION, could be applied whenever the newly proposed MG-INTEGER-LE-STEP-13-TRUE-CASE could! *** Entering proof-checker *** PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1) X UP X (S LEMMAS) X (S LEMMAS) UP (S LEMMAS) S (= (CALL-NAME STMT) (QUOTE MG-INTEGER-LE) 0) S SPLIT Creating 3 new subgoals, (MAIN . 1), (MAIN . 2), and (MAIN . 3). The proof of the current goal, MAIN, has been completed. However, the following subgoals of MAIN remain to be proved: (MAIN . 1), (MAIN . 2), and (MAIN . 3). Now proving (MAIN . 1). (PROVE (ENABLE MG-MEANING-PREDEFINED-PROC-CALL)) ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (ILESSP (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADDR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) (EQUAL (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4))) (TAG 'PC (CONS SUBR (IF (EQUAL (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) 'NORMAL) (PLUS (LENGTH (CODE CINFO)) (LENGTH (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADDR (CALL-ACTUALS STMT))) '((CALL MG-INTEGER-LE))))))) (FIND-LABEL (CDR (ASSOC (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) (LABEL-ALIST CINFO))) (APPEND (CODE CINFO) (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADDR (CALL-ACTUALS STMT))) (CONS '(CALL MG-INTEGER-LE) CODE2)))))))))) (EQUAL (RPUT (TAG 'BOOL (NOT-BOOL 'T)) (UNTAG (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (MAP-DOWN-VALUES (MG-ALIST (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (EQUAL (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST) (MG-COND-TO-P-NAT (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) T-COND-LIST))), which simplifies, rewriting with PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES, OK-MG-STATEP-MG-ALIST-MG-ALISTP, MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS, INT-LITERALP-MAPPING, CC-MG-STATE, CDR-CONS, MG-ALIST-MG-STATE, and SPECIAL-CONDITIONS-MG-COND-TO-P-NAT, and unfolding OK-MG-DEF-PLISTP, MG-INTEGER-LE-CALL-SEQUENCE, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, MG-MEANING-MG-INTEGER-LE, M-VALUE, GET-M-VALUE, ILEQ, MG-BOOL, MG-MEANING-PREDEFINED-PROC-CALL, LENGTH, ADD1, NOT-BOOL, and TAG, to: T. Q.E.D. The current goal, (MAIN . 1), has been proved, and has no dependents. Now proving (MAIN . 2). (DIVE 2 1 1) X (= (CALL-NAME STMT) (QUOTE MG-INTEGER-LE) 0) S UP S UP (REWRITE SET-ALIST-VALUE-DEPOSIT-TEMP-RELATION) Rewriting with SET-ALIST-VALUE-DEPOSIT-TEMP-RELATION. Creating 3 new subgoals, ((MAIN . 2) . 1), ((MAIN . 2) . 2), and ((MAIN . 2) . 3). UP (S-PROP NOT-BOOL) (DEMOTE 16) (DIVE 1) (REWRITE MG-TO-P-SIMPLE-LITERALP-PRESERVES-UNTAG-ILESSP) Rewriting with MG-TO-P-SIMPLE-LITERALP-PRESERVES-UNTAG-ILESSP. Creating 2 new subgoals, ((MAIN . 2) . 4) and ((MAIN . 2) . 5). UP PROMOTE S DROP : (PROVE (ENABLE MG-TO-P-SIMPLE-LITERAL INT-LITERALP BOOLEAN-LITERALP TAG UNTAG LENGTH-PLISTP)) ***** Now entering the theorem prover *****: This conjecture can be simplified, using the abbreviations UNTAG and TAG, to the goal: (EQUAL (RPUT '(BOOL F) (CADR (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (RPUT (MG-TO-P-SIMPLE-LITERAL (MG-BOOL F)) (CADR (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK))). This simplifies, opening up the functions MG-BOOL and MG-TO-P-SIMPLE-LITERAL, to: T. Q.E.D. The proof of the current goal, (MAIN . 2), has been completed. However, the following subgoals of (MAIN . 2) remain to be proved: ((MAIN . 2) . 4), ((MAIN . 2) . 5), ((MAIN . 2) . 1), ((MAIN . 2) . 2), and ((MAIN . 2) . 3). Now proving ((MAIN . 2) . 4). (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) Rewriting with INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES. Creating 2 new subgoals, (((MAIN . 2) . 4) . 1) and (((MAIN . 2) . 4) . 2). The proof of the current goal, ((MAIN . 2) . 4), has been completed. However, the following subgoals of ((MAIN . 2) . 4) remain to be proved: (((MAIN . 2) . 4) . 1) and (((MAIN . 2) . 4) . 2). Now proving (((MAIN . 2) . 4) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (((MAIN . 2) . 4) . 1), has been proved, and has no dependents. Now proving (((MAIN . 2) . 4) . 2). (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, (((MAIN . 2) . 4) . 2), has been proved, and has no dependents. Now proving ((MAIN . 2) . 5). (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) Rewriting with INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES. Creating 2 new subgoals, (((MAIN . 2) . 5) . 1) and (((MAIN . 2) . 5) . 2). The proof of the current goal, ((MAIN . 2) . 5), has been completed. However, the following subgoals of ((MAIN . 2) . 5) remain to be proved: (((MAIN . 2) . 5) . 1) and (((MAIN . 2) . 5) . 2). Now proving (((MAIN . 2) . 5) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (((MAIN . 2) . 5) . 1), has been proved, and has no dependents. Now proving (((MAIN . 2) . 5) . 2). (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, (((MAIN . 2) . 5) . 2), has been proved, and has no dependents. Now proving ((MAIN . 2) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, ((MAIN . 2) . 1), has been proved, and has no dependents. Now proving ((MAIN . 2) . 2). X (DIVE 1) (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. TOP S The current goal, ((MAIN . 2) . 2), has been proved, and has no dependents. Now proving ((MAIN . 2) . 3). (DIVE 2) (REWRITE SIGNATURES-MATCH-PRESERVES-GET-M-TYPE (($ALIST2 NAME-ALIST))) Rewriting with SIGNATURES-MATCH-PRESERVES-GET-M-TYPE. (= * (QUOTE BOOLEAN-MG) 0) Creating 1 new subgoal, (((MAIN . 2) . 3) . 1). UP (S LEMMAS) The proof of the current goal, ((MAIN . 2) . 3), has been completed. However, the following subgoal of ((MAIN . 2) . 3) remains to be proved: (((MAIN . 2) . 3) . 1). Now proving (((MAIN . 2) . 3) . 1). : (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS BOOLEAN-IDENTIFIERP)) ***** Now entering the theorem prover *****: This conjecture can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (ILESSP (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADDR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) (EQUAL (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4))) (TAG 'PC (CONS SUBR (IF (EQUAL (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) 'NORMAL) (PLUS (LENGTH (CODE CINFO)) (LENGTH (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADDR (CALL-ACTUALS STMT))) '((CALL MG-INTEGER-LE))))))) (FIND-LABEL (CDR (ASSOC (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) (LABEL-ALIST CINFO))) (APPEND (CODE CINFO) (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADDR (CALL-ACTUALS STMT))) (CONS '(CALL MG-INTEGER-LE) CODE2))))))))))) (EQUAL (CADR (ASSOC (CAR (CALL-ACTUALS STMT)) NAME-ALIST)) 'BOOLEAN-MG)). This simplifies, unfolding OK-PREDEFINED-PROC-CALL, PREDEFINED-PROCP, OK-MG-INTEGER-LE-ARGS, GET-M-TYPE, M-TYPE, IDENTIFIERP, BOOLEAN-IDENTIFIERP, OK-PREDEFINED-PROC-ARGS, EQUAL, and OK-MG-STATEMENT, to: T. Q.E.D. The current goal, (((MAIN . 2) . 3) . 1), has been proved, and has no dependents. Now proving (MAIN . 3). (PROVE (ENABLE MG-MEANING-PREDEFINED-PROC-CALL)) ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (ILESSP (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADDR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))))) (EQUAL (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4))) (TAG 'PC (CONS SUBR (IF (EQUAL (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) 'NORMAL) (PLUS (LENGTH (CODE CINFO)) (LENGTH (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADDR (CALL-ACTUALS STMT))) '((CALL MG-INTEGER-LE))))))) (FIND-LABEL (CDR (ASSOC (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) (LABEL-ALIST CINFO))) (APPEND (CODE CINFO) (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADDR (CALL-ACTUALS STMT))) (CONS '(CALL MG-INTEGER-LE) CODE2))))))))))), which simplifies, rewriting with PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES, OK-MG-STATEP-MG-ALIST-MG-ALISTP, MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS, INT-LITERALP-MAPPING, CC-MG-STATE, and CDR-CONS, and expanding the definitions of OK-MG-DEF-PLISTP, MG-INTEGER-LE-CALL-SEQUENCE, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, MG-MEANING-MG-INTEGER-LE, M-VALUE, GET-M-VALUE, ILEQ, MG-BOOL, MG-MEANING-PREDEFINED-PROC-CALL, LENGTH, and ADD1, to: T. Q.E.D. The current goal, (MAIN . 3), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 0.6 0.3 0.1 ] MG-INTEGER-LE-STEP-13-TRUE-CASE (PROVE-LEMMA MG-INTEGER-LE-STEP-13-FALSE-CASE (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE) (NOT (ILESSP (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADDR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))))) (EQUAL (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-LE . 8)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'Y (VALUE (CADDR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4)))) CTRL-STK) (RPUT (TAG 'BOOL (NOT-BOOL 'F)) (UNTAG (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)) (P-STATE (TAG 'PC (CONS SUBR (IF (NORMAL (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (LENGTH (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST))) (FIND-LABEL (FETCH-LABEL (CC (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (LABEL-ALIST (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST))) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2))))) CTRL-STK (MAP-DOWN-VALUES (MG-ALIST (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((INSTRUCTIONS PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1) X UP X (S LEMMAS) X (S LEMMAS) UP (S LEMMAS) S (= (CALL-NAME STMT) 'MG-INTEGER-LE 0) S SPLIT (PROVE (ENABLE MG-MEANING-PREDEFINED-PROC-CALL)) (DIVE 2 1 1) X (= (CALL-NAME STMT) 'MG-INTEGER-LE 0) S UP S UP (REWRITE SET-ALIST-VALUE-DEPOSIT-TEMP-RELATION) UP (S-PROP NOT-BOOL) (DEMOTE 16) (DIVE 1 1) (REWRITE MG-TO-P-SIMPLE-LITERALP-PRESERVES-UNTAG-ILESSP) TOP PROMOTE S DROP (PROVE (ENABLE MG-TO-P-SIMPLE-LITERAL INT-LITERALP BOOLEAN-LITERALP TAG UNTAG LENGTH-PLISTP)) (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) X (DIVE 1) (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) TOP S (DIVE 2) (REWRITE SIGNATURES-MATCH-PRESERVES-GET-M-TYPE (($ALIST2 NAME-ALIST))) (= * 'BOOLEAN-MG 0) TOP (S LEMMAS) (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS BOOLEAN-IDENTIFIERP)) (PROVE (ENABLE MG-MEANING-PREDEFINED-PROC-CALL))))) WARNING: Note that MG-INTEGER-LE-STEP-13-FALSE-CASE contains the free variables CODE2, NAME-ALIST, R-COND-LIST, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). WARNING: the previously added lemma, P-STEP-EXPANSION, could be applied whenever the newly proposed MG-INTEGER-LE-STEP-13-FALSE-CASE could! *** Entering proof-checker *** PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1) X UP X (S LEMMAS) X (S LEMMAS) UP (S LEMMAS) S (= (CALL-NAME STMT) (QUOTE MG-INTEGER-LE) 0) S SPLIT Creating 3 new subgoals, (MAIN . 1), (MAIN . 2), and (MAIN . 3). The proof of the current goal, MAIN, has been completed. However, the following subgoals of MAIN remain to be proved: (MAIN . 1), (MAIN . 2), and (MAIN . 3). Now proving (MAIN . 1). (PROVE (ENABLE MG-MEANING-PREDEFINED-PROC-CALL)) ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (NOT (ILESSP (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADDR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))))) (EQUAL (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4))) (TAG 'PC (CONS SUBR (IF (EQUAL (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) 'NORMAL) (PLUS (LENGTH (CODE CINFO)) (LENGTH (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADDR (CALL-ACTUALS STMT))) '((CALL MG-INTEGER-LE))))))) (FIND-LABEL (CDR (ASSOC (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) (LABEL-ALIST CINFO))) (APPEND (CODE CINFO) (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADDR (CALL-ACTUALS STMT))) (CONS '(CALL MG-INTEGER-LE) CODE2)))))))))) (EQUAL (RPUT (TAG 'BOOL (NOT-BOOL 'F)) (UNTAG (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (MAP-DOWN-VALUES (MG-ALIST (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (EQUAL (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST) (MG-COND-TO-P-NAT (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) T-COND-LIST))), which simplifies, rewriting with PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES, OK-MG-STATEP-MG-ALIST-MG-ALISTP, MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS, INT-LITERALP-MAPPING, CC-MG-STATE, CDR-CONS, MG-ALIST-MG-STATE, and SPECIAL-CONDITIONS-MG-COND-TO-P-NAT, and expanding the definitions of OK-MG-DEF-PLISTP, MG-INTEGER-LE-CALL-SEQUENCE, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, MG-MEANING-MG-INTEGER-LE, M-VALUE, GET-M-VALUE, ILEQ, MG-BOOL, MG-MEANING-PREDEFINED-PROC-CALL, LENGTH, ADD1, NOT-BOOL, and TAG, to: T. Q.E.D. The current goal, (MAIN . 1), has been proved, and has no dependents. Now proving (MAIN . 2). (DIVE 2 1 1) X (= (CALL-NAME STMT) (QUOTE MG-INTEGER-LE) 0) S UP S UP (REWRITE SET-ALIST-VALUE-DEPOSIT-TEMP-RELATION) Rewriting with SET-ALIST-VALUE-DEPOSIT-TEMP-RELATION. Creating 3 new subgoals, ((MAIN . 2) . 1), ((MAIN . 2) . 2), and ((MAIN . 2) . 3). UP (S-PROP NOT-BOOL) (DEMOTE 16) (DIVE 1 1) (REWRITE MG-TO-P-SIMPLE-LITERALP-PRESERVES-UNTAG-ILESSP) Rewriting with MG-TO-P-SIMPLE-LITERALP-PRESERVES-UNTAG-ILESSP. Creating 2 new subgoals, ((MAIN . 2) . 4) and ((MAIN . 2) . 5). TOP PROMOTE S DROP : (PROVE (ENABLE MG-TO-P-SIMPLE-LITERAL INT-LITERALP BOOLEAN-LITERALP TAG UNTAG LENGTH-PLISTP)) ***** Now entering the theorem prover *****: This conjecture can be simplified, using the abbreviations UNTAG and TAG, to the goal: (EQUAL (RPUT '(BOOL T) (CADR (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (RPUT (MG-TO-P-SIMPLE-LITERAL (MG-BOOL T)) (CADR (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK))). This simplifies, opening up the functions MG-BOOL and MG-TO-P-SIMPLE-LITERAL, to: T. Q.E.D. The proof of the current goal, (MAIN . 2), has been completed. However, the following subgoals of (MAIN . 2) remain to be proved: ((MAIN . 2) . 4), ((MAIN . 2) . 5), ((MAIN . 2) . 1), ((MAIN . 2) . 2), and ((MAIN . 2) . 3). Now proving ((MAIN . 2) . 4). (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) Rewriting with INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES. Creating 2 new subgoals, (((MAIN . 2) . 4) . 1) and (((MAIN . 2) . 4) . 2). The proof of the current goal, ((MAIN . 2) . 4), has been completed. However, the following subgoals of ((MAIN . 2) . 4) remain to be proved: (((MAIN . 2) . 4) . 1) and (((MAIN . 2) . 4) . 2). Now proving (((MAIN . 2) . 4) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (((MAIN . 2) . 4) . 1), has been proved, and has no dependents. Now proving (((MAIN . 2) . 4) . 2). (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, (((MAIN . 2) . 4) . 2), has been proved, and has no dependents. Now proving ((MAIN . 2) . 5). (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) Rewriting with INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES. Creating 2 new subgoals, (((MAIN . 2) . 5) . 1) and (((MAIN . 2) . 5) . 2). The proof of the current goal, ((MAIN . 2) . 5), has been completed. However, the following subgoals of ((MAIN . 2) . 5) remain to be proved: (((MAIN . 2) . 5) . 1) and (((MAIN . 2) . 5) . 2). Now proving (((MAIN . 2) . 5) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (((MAIN . 2) . 5) . 1), has been proved, and has no dependents. Now proving (((MAIN . 2) . 5) . 2). (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, (((MAIN . 2) . 5) . 2), has been proved, and has no dependents. Now proving ((MAIN . 2) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, ((MAIN . 2) . 1), has been proved, and has no dependents. Now proving ((MAIN . 2) . 2). X (DIVE 1) (REWRITE MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. TOP S The current goal, ((MAIN . 2) . 2), has been proved, and has no dependents. Now proving ((MAIN . 2) . 3). (DIVE 2) (REWRITE SIGNATURES-MATCH-PRESERVES-GET-M-TYPE (($ALIST2 NAME-ALIST))) Rewriting with SIGNATURES-MATCH-PRESERVES-GET-M-TYPE. (= * (QUOTE BOOLEAN-MG) 0) Creating 1 new subgoal, (((MAIN . 2) . 3) . 1). TOP (S LEMMAS) The proof of the current goal, ((MAIN . 2) . 3), has been completed. However, the following subgoal of ((MAIN . 2) . 3) remains to be proved: (((MAIN . 2) . 3) . 1). Now proving (((MAIN . 2) . 3) . 1). : (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS BOOLEAN-IDENTIFIERP)) ***** Now entering the theorem prover *****: This conjecture can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, and NORMAL, to the goal: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (NOT (ILESSP (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADDR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))))) (EQUAL (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4))) (TAG 'PC (CONS SUBR (IF (EQUAL (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) 'NORMAL) (PLUS (LENGTH (CODE CINFO)) (LENGTH (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADDR (CALL-ACTUALS STMT))) '((CALL MG-INTEGER-LE))))))) (FIND-LABEL (CDR (ASSOC (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) (LABEL-ALIST CINFO))) (APPEND (CODE CINFO) (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADDR (CALL-ACTUALS STMT))) (CONS '(CALL MG-INTEGER-LE) CODE2))))))))))) (EQUAL (CADR (ASSOC (CAR (CALL-ACTUALS STMT)) NAME-ALIST)) 'BOOLEAN-MG)). This simplifies, expanding the definitions of OK-PREDEFINED-PROC-CALL, PREDEFINED-PROCP, OK-MG-INTEGER-LE-ARGS, GET-M-TYPE, M-TYPE, IDENTIFIERP, BOOLEAN-IDENTIFIERP, OK-PREDEFINED-PROC-ARGS, EQUAL, and OK-MG-STATEMENT, to: T. Q.E.D. The current goal, (((MAIN . 2) . 3) . 1), has been proved, and has no dependents. Now proving (MAIN . 3). (PROVE (ENABLE MG-MEANING-PREDEFINED-PROC-CALL)) ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, and NORMAL, to the new formula: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (NOT (ILESSP (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADDR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))))) (EQUAL (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4))) (TAG 'PC (CONS SUBR (IF (EQUAL (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) 'NORMAL) (PLUS (LENGTH (CODE CINFO)) (LENGTH (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADDR (CALL-ACTUALS STMT))) '((CALL MG-INTEGER-LE))))))) (FIND-LABEL (CDR (ASSOC (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) (LABEL-ALIST CINFO))) (APPEND (CODE CINFO) (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADDR (CALL-ACTUALS STMT))) (CONS '(CALL MG-INTEGER-LE) CODE2))))))))))), which simplifies, rewriting with the lemmas PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES, OK-MG-STATEP-MG-ALIST-MG-ALISTP, MG-INTEGER-LE-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS, INT-LITERALP-MAPPING, CC-MG-STATE, and CDR-CONS, and expanding the functions OK-MG-DEF-PLISTP, MG-INTEGER-LE-CALL-SEQUENCE, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, MG-MEANING-MG-INTEGER-LE, M-VALUE, GET-M-VALUE, ILEQ, MG-BOOL, MG-MEANING-PREDEFINED-PROC-CALL, LENGTH, and ADD1, to: T. Q.E.D. The current goal, (MAIN . 3), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 0.6 0.3 0.2 ] MG-INTEGER-LE-STEP-13-FALSE-CASE (PROVE-LEMMA MG-INTEGER-LE-EXACT-TIME-LEMMA (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-LE) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE)) (EQUAL (P (MAP-DOWN MG-STATE PROC-LIST CTRL-STK TEMP-STK (TAG 'PC (CONS SUBR (LENGTH (CODE CINFO)))) T-COND-LIST) (CLOCK STMT PROC-LIST MG-STATE N)) (P-STATE (TAG 'PC (CONS SUBR (IF (NORMAL (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (LENGTH (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST))) (FIND-LABEL (FETCH-LABEL (CC (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (LABEL-ALIST (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST))) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2))))) CTRL-STK (MAP-DOWN-VALUES (MG-ALIST (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((INSTRUCTIONS PROMOTE (DIVE 1 2) X (= (CAR STMT) 'PREDEFINED-PROC-CALL-MG 0) S X (= (CALL-NAME STMT) 'MG-INTEGER-LE 0) S UP (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-0-UNWINDING-LEMMA) (DIVE 1 1 1 1 1 1 1 1 1 1) (REWRITE MG-INTEGER-LE-STEPS-1-3) UP (REWRITE MG-INTEGER-LE-STEP-4) UP (REWRITE MG-INTEGER-LE-STEP-5) UP (REWRITE MG-INTEGER-LE-STEP-6) UP (REWRITE MG-INTEGER-LE-STEP-7) UP (REWRITE MG-INTEGER-LE-STEP-8) UP (REWRITE MG-INTEGER-LE-STEP-9) UP (CLAIM (ILESSP (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADDR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) 0) S-PROP (REWRITE MG-INTEGER-LE-STEP-10) UP (REWRITE MG-INTEGER-LE-STEP-11) UP (REWRITE MG-INTEGER-LE-STEP-12) UP (REWRITE MG-INTEGER-LE-STEP-13-TRUE-CASE) UP S-PROP S S-PROP (REWRITE MG-INTEGER-LE-STEP-10) UP (REWRITE MG-INTEGER-LE-STEP-11) UP (REWRITE MG-INTEGER-LE-STEP-12) UP (REWRITE MG-INTEGER-LE-STEP-13-FALSE-CASE) UP S-PROP X))) WARNING: Note that MG-INTEGER-LE-EXACT-TIME-LEMMA contains the free variables CODE2, NAME-ALIST, and R-COND-LIST which will be chosen by instantiating the hypotheses (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). *** Entering proof-checker *** PROMOTE (DIVE 1 2) X (= (CAR STMT) (QUOTE PREDEFINED-PROC-CALL-MG) 0) S X (= (CALL-NAME STMT) (QUOTE MG-INTEGER-LE) 0) S UP (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-0-UNWINDING-LEMMA) Rewriting with P-0-UNWINDING-LEMMA. (DIVE 1 1 1 1 1 1 1 1 1 1) (REWRITE MG-INTEGER-LE-STEPS-1-3) Rewriting with MG-INTEGER-LE-STEPS-1-3. UP (REWRITE MG-INTEGER-LE-STEP-4) Rewriting with MG-INTEGER-LE-STEP-4. UP (REWRITE MG-INTEGER-LE-STEP-5) Rewriting with MG-INTEGER-LE-STEP-5. UP (REWRITE MG-INTEGER-LE-STEP-6) Rewriting with MG-INTEGER-LE-STEP-6. UP (REWRITE MG-INTEGER-LE-STEP-7) Rewriting with MG-INTEGER-LE-STEP-7. UP (REWRITE MG-INTEGER-LE-STEP-8) Rewriting with MG-INTEGER-LE-STEP-8. UP (REWRITE MG-INTEGER-LE-STEP-9) Rewriting with MG-INTEGER-LE-STEP-9. UP : (CLAIM (ILESSP (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADDR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) 0) Creating one new subgoal, (MAIN . 1). S-PROP (REWRITE MG-INTEGER-LE-STEP-10) **WARNING**: The following variables occur free in the lemma MG-INTEGER-LE-STEP-10 but were not explicitly substituted for: CODE2, NAME-ALIST, R-COND-LIST, and N. Rewriting with MG-INTEGER-LE-STEP-10. Creating 1 new subgoal, (MAIN . 2). UP (REWRITE MG-INTEGER-LE-STEP-11) Rewriting with MG-INTEGER-LE-STEP-11. UP (REWRITE MG-INTEGER-LE-STEP-12) Rewriting with MG-INTEGER-LE-STEP-12. UP (REWRITE MG-INTEGER-LE-STEP-13-TRUE-CASE) Rewriting with MG-INTEGER-LE-STEP-13-TRUE-CASE. UP S-PROP The proof of the current goal, MAIN, has been completed. However, the following subgoals of MAIN remain to be proved: (MAIN . 2) and (MAIN . 1). Now proving (MAIN . 2). S The current goal, (MAIN . 2), has been proved, and has no dependents. Now proving (MAIN . 1). S-PROP (REWRITE MG-INTEGER-LE-STEP-10) **WARNING**: The following variables occur free in the lemma MG-INTEGER-LE-STEP-10 but were not explicitly substituted for: CODE2, NAME-ALIST, R-COND-LIST, and N. Rewriting with MG-INTEGER-LE-STEP-10. Creating 1 new subgoal, ((MAIN . 1) . 1). UP (REWRITE MG-INTEGER-LE-STEP-11) Rewriting with MG-INTEGER-LE-STEP-11. UP (REWRITE MG-INTEGER-LE-STEP-12) Rewriting with MG-INTEGER-LE-STEP-12. UP (REWRITE MG-INTEGER-LE-STEP-13-FALSE-CASE) Rewriting with MG-INTEGER-LE-STEP-13-FALSE-CASE. UP S-PROP The proof of the current goal, (MAIN . 1), has been completed. However, the following subgoal of (MAIN . 1) remains to be proved: ((MAIN . 1) . 1). Now proving ((MAIN . 1) . 1). X The current goal, ((MAIN . 1) . 1), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 2.0 0.0 0.0 ] MG-INTEGER-LE-EXACT-TIME-LEMMA (PROVE-LEMMA MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT (REWRITE) (IMPLIES (AND (SMALL-INTEGERP X N) (NOT (EQUAL X (MINUS (EXP 2 (SUB1 N)))))) (SMALL-INTEGERP (INEGATE X) N)) ((ENABLE SMALL-INTEGERP INEGATE INTEGERP ILESSP))) This conjecture can be simplified, using the abbreviations NOT, SMALL-INTEGERP, AND, and IMPLIES, to: (IMPLIES (AND (INTEGERP X) (NOT (ILESSP X (MINUS (EXP 2 (SUB1 N))))) (ILESSP X (EXP 2 (SUB1 N))) (NOT (EQUAL X (MINUS (EXP 2 (SUB1 N)))))) (SMALL-INTEGERP (INEGATE X) N)). This simplifies, rewriting with the lemma NEGATIVE-GUTS-MINUS, and opening up the functions INTEGERP, ILESSP, INEGATE, and SMALL-INTEGERP, to the following three new goals: Case 3. (IMPLIES (AND (NOT (NEGATIVEP X)) (NUMBERP X) (LESSP X (EXP 2 (SUB1 N))) (NOT (EQUAL X 0))) (SMALL-INTEGERP (MINUS X) N)). However this again simplifies, rewriting with NEGATIVE-GUTS-MINUS, and expanding the functions ILESSP, INTEGERP, and SMALL-INTEGERP, to the new conjecture: (IMPLIES (AND (NUMBERP X) (LESSP X (EXP 2 (SUB1 N))) (NOT (EQUAL X 0))) (NOT (LESSP (EXP 2 (SUB1 N)) X))), which again simplifies, using linear arithmetic, to: T. Case 2. (IMPLIES (AND (NOT (NEGATIVEP X)) (NUMBERP X) (LESSP X (EXP 2 (SUB1 N))) (EQUAL X 0)) (SMALL-INTEGERP 0 N)), which again simplifies, unfolding the functions NEGATIVEP, NUMBERP, EQUAL, LESSP, ILESSP, INTEGERP, and SMALL-INTEGERP, to: T. Case 1. (IMPLIES (AND (NEGATIVEP X) (NOT (EQUAL (NEGATIVE-GUTS X) 0)) (NOT (LESSP (EXP 2 (SUB1 N)) (NEGATIVE-GUTS X))) (NOT (EQUAL X (MINUS (EXP 2 (SUB1 N)))))) (LESSP (NEGATIVE-GUTS X) (EXP 2 (SUB1 N)))), which again simplifies, using linear arithmetic, to: (IMPLIES (AND (EQUAL (EXP 2 (SUB1 N)) (NEGATIVE-GUTS X)) (NEGATIVEP X) (NOT (EQUAL (NEGATIVE-GUTS X) 0)) (NOT (LESSP (NEGATIVE-GUTS X) (NEGATIVE-GUTS X))) (NOT (EQUAL X (MINUS (NEGATIVE-GUTS X))))) (LESSP (NEGATIVE-GUTS X) (NEGATIVE-GUTS X))). But this again simplifies, rewriting with MINUS-NEGATIVE-GUTS, to: T. Q.E.D. [ 0.0 0.0 0.0 ] MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT (PROVE-LEMMA MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS (REWRITE) (IMPLIES (AND (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST)) (AND (INT-IDENTIFIERP (CAR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)) (INT-IDENTIFIERP (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))) ((INSTRUCTIONS PROMOTE SPLIT (REWRITE SIGNATURES-MATCH-PRESERVES-INT-IDENTIFIERP (($ALIST1 NAME-ALIST))) (REWRITE SIGNATURES-MATCH-SYMMETRIC) (REWRITE OK-MG-STATEP-ALIST-PLISTP) (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS)) (REWRITE SIGNATURES-MATCH-PRESERVES-INT-IDENTIFIERP (($ALIST1 NAME-ALIST))) (REWRITE SIGNATURES-MATCH-SYMMETRIC) (REWRITE OK-MG-STATEP-ALIST-PLISTP) (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS))))) WARNING: Note that MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS contains the free variables PROC-LIST, NAME-ALIST, and R-COND-LIST which will be chosen by instantiating the hypothesis: (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST). WARNING: Note that MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS contains the free variables PROC-LIST, NAME-ALIST, and R-COND-LIST which will be chosen by instantiating the hypothesis: (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST). WARNING: Note that the proposed lemma: MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. *** Entering proof-checker *** PROMOTE SPLIT Creating 2 new subgoals, (MAIN . 1) and (MAIN . 2). The proof of the current goal, MAIN, has been completed. However, the following subgoals of MAIN remain to be proved: (MAIN . 1) and (MAIN . 2). Now proving (MAIN . 1). (REWRITE SIGNATURES-MATCH-PRESERVES-INT-IDENTIFIERP (($ALIST1 NAME-ALIST))) Rewriting with SIGNATURES-MATCH-PRESERVES-INT-IDENTIFIERP. Creating 2 new subgoals, ((MAIN . 1) . 1) and ((MAIN . 1) . 2). The proof of the current goal, (MAIN . 1), has been completed. However, the following subgoals of (MAIN . 1) remain to be proved: ((MAIN . 1) . 1) and ((MAIN . 1) . 2). Now proving ((MAIN . 1) . 1). (REWRITE SIGNATURES-MATCH-SYMMETRIC) Rewriting with SIGNATURES-MATCH-SYMMETRIC. Creating 1 new subgoal, (((MAIN . 1) . 1) . 1). The proof of the current goal, ((MAIN . 1) . 1), has been completed. However, the following subgoal of ((MAIN . 1) . 1) remains to be proved: (((MAIN . 1) . 1) . 1). Now proving (((MAIN . 1) . 1) . 1). (REWRITE OK-MG-STATEP-ALIST-PLISTP) Rewriting with OK-MG-STATEP-ALIST-PLISTP. The current goal, (((MAIN . 1) . 1) . 1), has been proved, and has no dependents. Now proving ((MAIN . 1) . 2). : (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS)) ***** Now entering the theorem prover *****: This simplifies, opening up the definitions of OK-PREDEFINED-PROC-CALL, PREDEFINED-PROCP, OK-MG-INTEGER-UNARY-MINUS-ARGS, OK-PREDEFINED-PROC-ARGS, EQUAL, and OK-MG-STATEMENT, to: T. Q.E.D. The current goal, ((MAIN . 1) . 2), has been proved, and has no dependents. Now proving (MAIN . 2). (REWRITE SIGNATURES-MATCH-PRESERVES-INT-IDENTIFIERP (($ALIST1 NAME-ALIST))) Rewriting with SIGNATURES-MATCH-PRESERVES-INT-IDENTIFIERP. Creating 2 new subgoals, ((MAIN . 2) . 1) and ((MAIN . 2) . 2). The proof of the current goal, (MAIN . 2), has been completed. However, the following subgoals of (MAIN . 2) remain to be proved: ((MAIN . 2) . 1) and ((MAIN . 2) . 2). Now proving ((MAIN . 2) . 1). (REWRITE SIGNATURES-MATCH-SYMMETRIC) Rewriting with SIGNATURES-MATCH-SYMMETRIC. Creating 1 new subgoal, (((MAIN . 2) . 1) . 1). The proof of the current goal, ((MAIN . 2) . 1), has been completed. However, the following subgoal of ((MAIN . 2) . 1) remains to be proved: (((MAIN . 2) . 1) . 1). Now proving (((MAIN . 2) . 1) . 1). (REWRITE OK-MG-STATEP-ALIST-PLISTP) Rewriting with OK-MG-STATEP-ALIST-PLISTP. The current goal, (((MAIN . 2) . 1) . 1), has been proved, and has no dependents. Now proving ((MAIN . 2) . 2). : (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS)) ***** Now entering the theorem prover *****: This simplifies, expanding the functions OK-PREDEFINED-PROC-CALL, PREDEFINED-PROCP, OK-MG-INTEGER-UNARY-MINUS-ARGS, OK-PREDEFINED-PROC-ARGS, EQUAL, and OK-MG-STATEMENT, to: T. Q.E.D. The current goal, ((MAIN . 2) . 2), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 0.2 0.0 0.0 ] MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS (PROVE-LEMMA MG-INTEGER-UNARY-MINUS-ARGS-DEFINEDP (REWRITE) (IMPLIES (AND (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST)) (AND (DEFINEDP (CAR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)) (DEFINEDP (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))) ((INSTRUCTIONS PROMOTE SPLIT (REWRITE SIMPLE-IDENTIFIERP-IMPLIES-DEFINEDP) (REWRITE SIGNATURES-MATCH-PRESERVES-SIMPLE-IDENTIFIERP (($ALIST1 NAME-ALIST))) (REWRITE SIGNATURES-MATCH-SYMMETRIC) (REWRITE OK-MG-STATEP-ALIST-PLISTP) (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS SIMPLE-IDENTIFIERP)) (REWRITE SIMPLE-IDENTIFIERP-IMPLIES-DEFINEDP) (REWRITE SIGNATURES-MATCH-PRESERVES-SIMPLE-IDENTIFIERP (($ALIST1 NAME-ALIST))) (REWRITE SIGNATURES-MATCH-SYMMETRIC) (REWRITE OK-MG-STATEP-ALIST-PLISTP) (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS SIMPLE-IDENTIFIERP))))) WARNING: Note that MG-INTEGER-UNARY-MINUS-ARGS-DEFINEDP contains the free variables PROC-LIST, NAME-ALIST, and R-COND-LIST which will be chosen by instantiating the hypothesis: (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST). WARNING: Note that MG-INTEGER-UNARY-MINUS-ARGS-DEFINEDP contains the free variables PROC-LIST, NAME-ALIST, and R-COND-LIST which will be chosen by instantiating the hypothesis: (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST). WARNING: Note that the proposed lemma MG-INTEGER-UNARY-MINUS-ARGS-DEFINEDP is to be stored as zero type prescription rules, zero compound recognizer rules, zero linear rules, and two replacement rules. *** Entering proof-checker *** PROMOTE SPLIT Creating 2 new subgoals, (MAIN . 1) and (MAIN . 2). The proof of the current goal, MAIN, has been completed. However, the following subgoals of MAIN remain to be proved: (MAIN . 1) and (MAIN . 2). Now proving (MAIN . 1). (REWRITE SIMPLE-IDENTIFIERP-IMPLIES-DEFINEDP) Rewriting with SIMPLE-IDENTIFIERP-IMPLIES-DEFINEDP. Creating 1 new subgoal, ((MAIN . 1) . 1). The proof of the current goal, (MAIN . 1), has been completed. However, the following subgoal of (MAIN . 1) remains to be proved: ((MAIN . 1) . 1). Now proving ((MAIN . 1) . 1). : (REWRITE SIGNATURES-MATCH-PRESERVES-SIMPLE-IDENTIFIERP (($ALIST1 NAME-ALIST))) Rewriting with SIGNATURES-MATCH-PRESERVES-SIMPLE-IDENTIFIERP. Creating 2 new subgoals, (((MAIN . 1) . 1) . 1) and (((MAIN . 1) . 1) . 2). The proof of the current goal, ((MAIN . 1) . 1), has been completed. However, the following subgoals of ((MAIN . 1) . 1) remain to be proved: (((MAIN . 1) . 1) . 1) and (((MAIN . 1) . 1) . 2). Now proving (((MAIN . 1) . 1) . 1). (REWRITE SIGNATURES-MATCH-SYMMETRIC) Rewriting with SIGNATURES-MATCH-SYMMETRIC. Creating 1 new subgoal, ((((MAIN . 1) . 1) . 1) . 1). The proof of the current goal, (((MAIN . 1) . 1) . 1), has been completed. However, the following subgoal of (((MAIN . 1) . 1) . 1) remains to be proved: ((((MAIN . 1) . 1) . 1) . 1). Now proving ((((MAIN . 1) . 1) . 1) . 1). (REWRITE OK-MG-STATEP-ALIST-PLISTP) Rewriting with OK-MG-STATEP-ALIST-PLISTP. The current goal, ((((MAIN . 1) . 1) . 1) . 1), has been proved, and has no dependents. Now proving (((MAIN . 1) . 1) . 2). : (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS SIMPLE-IDENTIFIERP)) ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations SIMPLE-IDENTIFIERP, AND, and IMPLIES, to the new goal: (IMPLIES (AND (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (NOT (BOOLEAN-IDENTIFIERP (CAR (CALL-ACTUALS STMT)) NAME-ALIST)) (NOT (INT-IDENTIFIERP (CAR (CALL-ACTUALS STMT)) NAME-ALIST))) (CHARACTER-IDENTIFIERP (CAR (CALL-ACTUALS STMT)) NAME-ALIST)), which simplifies, opening up the functions OK-PREDEFINED-PROC-CALL, PREDEFINED-PROCP, OK-MG-INTEGER-UNARY-MINUS-ARGS, OK-PREDEFINED-PROC-ARGS, EQUAL, and OK-MG-STATEMENT, to: T. Q.E.D. The current goal, (((MAIN . 1) . 1) . 2), has been proved, and has no dependents. Now proving (MAIN . 2). (REWRITE SIMPLE-IDENTIFIERP-IMPLIES-DEFINEDP) Rewriting with SIMPLE-IDENTIFIERP-IMPLIES-DEFINEDP. Creating 1 new subgoal, ((MAIN . 2) . 1). The proof of the current goal, (MAIN . 2), has been completed. However, the following subgoal of (MAIN . 2) remains to be proved: ((MAIN . 2) . 1). Now proving ((MAIN . 2) . 1). : (REWRITE SIGNATURES-MATCH-PRESERVES-SIMPLE-IDENTIFIERP (($ALIST1 NAME-ALIST))) Rewriting with SIGNATURES-MATCH-PRESERVES-SIMPLE-IDENTIFIERP. Creating 2 new subgoals, (((MAIN . 2) . 1) . 1) and (((MAIN . 2) . 1) . 2). The proof of the current goal, ((MAIN . 2) . 1), has been completed. However, the following subgoals of ((MAIN . 2) . 1) remain to be proved: (((MAIN . 2) . 1) . 1) and (((MAIN . 2) . 1) . 2). Now proving (((MAIN . 2) . 1) . 1). (REWRITE SIGNATURES-MATCH-SYMMETRIC) Rewriting with SIGNATURES-MATCH-SYMMETRIC. Creating 1 new subgoal, ((((MAIN . 2) . 1) . 1) . 1). The proof of the current goal, (((MAIN . 2) . 1) . 1), has been completed. However, the following subgoal of (((MAIN . 2) . 1) . 1) remains to be proved: ((((MAIN . 2) . 1) . 1) . 1). Now proving ((((MAIN . 2) . 1) . 1) . 1). (REWRITE OK-MG-STATEP-ALIST-PLISTP) Rewriting with OK-MG-STATEP-ALIST-PLISTP. The current goal, ((((MAIN . 2) . 1) . 1) . 1), has been proved, and has no dependents. Now proving (((MAIN . 2) . 1) . 2). : (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS SIMPLE-IDENTIFIERP)) ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations SIMPLE-IDENTIFIERP, AND, and IMPLIES, to: (IMPLIES (AND (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (NOT (BOOLEAN-IDENTIFIERP (CADR (CALL-ACTUALS STMT)) NAME-ALIST)) (NOT (INT-IDENTIFIERP (CADR (CALL-ACTUALS STMT)) NAME-ALIST))) (CHARACTER-IDENTIFIERP (CADR (CALL-ACTUALS STMT)) NAME-ALIST)), which simplifies, opening up the definitions of OK-PREDEFINED-PROC-CALL, PREDEFINED-PROCP, OK-MG-INTEGER-UNARY-MINUS-ARGS, OK-PREDEFINED-PROC-ARGS, EQUAL, and OK-MG-STATEMENT, to: T. Q.E.D. The current goal, (((MAIN . 2) . 1) . 2), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 0.2 0.0 0.0 ] MG-INTEGER-UNARY-MINUS-ARGS-DEFINEDP (PROVE-LEMMA MG-INTEGER-UNARY-MINUS-STEPS-1-2 (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE)) (EQUAL (P-STEP (P-STEP (MAP-DOWN MG-STATE PROC-LIST CTRL-STK TEMP-STK (TAG 'PC (CONS SUBR (LENGTH (CODE CINFO)))) T-COND-LIST))) (P-STATE (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 2))) CTRL-STK (PUSH (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (PUSH (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((INSTRUCTIONS PROMOTE (DIVE 1 1) X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) UP (S LEMMAS) (REWRITE GET-LENGTH-CAR) S (= (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS 0) S (S LEMMAS) UP X UP X (DIVE 1) X (DIVE 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) UP (REWRITE RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX) UP S X (S LEMMAS) UP X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) UP (S LEMMAS) (REWRITE GET-LENGTH-PLUS) S (= (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS 0) S (S LEMMAS) UP X UP X (DIVE 1) (S LEMMAS) X (S LEMMAS) (DIVE 1 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) UP UP (REWRITE RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2) UP S X (S LEMMAS) UP S PROVE (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP)))) WARNING: Note that MG-INTEGER-UNARY-MINUS-STEPS-1-2 contains the free variables CODE2, NAME-ALIST, R-COND-LIST, STMT, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST), and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). *** Entering proof-checker *** PROMOTE (DIVE 1 1) X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) Rewriting with TRANSLATE-DEF-BODY-REWRITE. UP (S LEMMAS) (REWRITE GET-LENGTH-CAR) Rewriting with GET-LENGTH-CAR. S (= (CALL-NAME STMT) (QUOTE MG-INTEGER-UNARY-MINUS) 0) S (S LEMMAS) UP X UP X (DIVE 1) X (DIVE 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) Rewriting with MAP-DOWN-VALUES-PRESERVES-LENGTH. Creating 1 new subgoal, (MAIN . 1). UP (REWRITE RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX) Rewriting with RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX. UP S X (S LEMMAS) UP X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) Rewriting with TRANSLATE-DEF-BODY-REWRITE. UP (S LEMMAS) (REWRITE GET-LENGTH-PLUS) Rewriting with GET-LENGTH-PLUS. S (= (CALL-NAME STMT) (QUOTE MG-INTEGER-UNARY-MINUS) 0) S (S LEMMAS) UP X UP X (DIVE 1) (S LEMMAS) X (S LEMMAS) (DIVE 1 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) Rewriting with MAP-DOWN-VALUES-PRESERVES-LENGTH. Creating 1 new subgoal, (MAIN . 2). UP UP (REWRITE RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2) **WARNING**: The following variables occur free in the lemma: RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2 but were not explicitly substituted for: CTRL-STK, TEMP-STK, PROC-LIST, and STMT. Rewriting with RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2. Creating 1 new subgoal, (MAIN . 3). UP S X (S LEMMAS) UP S The proof of the current goal, MAIN, has been completed. However, the following subgoals of MAIN remain to be proved: (MAIN . 3), (MAIN . 2), and (MAIN . 1). Now proving (MAIN . 3). PROVE ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (LESSP (ADD1 (LENGTH TEMP-STK)) (PLUS (PREDEFINED-PROC-CALL-TEMP-STK-REQUIREMENT (CALL-NAME STMT)) (LENGTH TEMP-STK)))), which simplifies, applying the lemmas PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, and SUB1-ADD1, and unfolding the definitions of OK-MG-DEF-PLISTP, MG-INTEGER-UNARY-MINUS-CALL-SEQUENCE, FETCH-LABEL, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, PREDEFINED-PROC-CALL-TEMP-STK-REQUIREMENT, and LESSP, to two new formulas: Case 2. (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP1 PROC-LIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE CINFO) (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS '(CALL MG-INTEGER-UNARY-MINUS) (CONS '(PUSH-GLOBAL C-C) (CONS '(SUB1-NAT) (CONS (LIST 'TEST-NAT-AND-JUMP 'ZERO (CDR (ASSOC 'ROUTINEERROR (LABEL-ALIST CINFO)))) CODE2)))))))) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-EQ)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-EQ)) (NOT (EQUAL SUBR 'MG-INTEGER-LE)) (NOT (EQUAL SUBR 'MG-INTEGER-UNARY-MINUS)) (NOT (EQUAL SUBR 'MG-INTEGER-ADD)) (NOT (EQUAL SUBR 'MG-INTEGER-SUBTRACT)) (NOT (EQUAL SUBR 'MG-BOOLEAN-OR)) (NOT (EQUAL SUBR 'MG-BOOLEAN-AND)) (NOT (EQUAL SUBR 'MG-BOOLEAN-NOT)) (NOT (EQUAL SUBR 'MG-INDEX-ARRAY)) (NOT (EQUAL SUBR 'MG-ARRAY-ELEMENT-ASSIGNMENT)) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (NOT (EQUAL (PLUS 2 (LENGTH TEMP-STK)) 0))), which again simplifies, using linear arithmetic, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP1 PROC-LIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE CINFO) (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS '(CALL MG-INTEGER-UNARY-MINUS) (CONS '(PUSH-GLOBAL C-C) (CONS '(SUB1-NAT) (CONS (LIST 'TEST-NAT-AND-JUMP 'ZERO (CDR (ASSOC 'ROUTINEERROR (LABEL-ALIST CINFO)))) CODE2)))))))) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-EQ)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-EQ)) (NOT (EQUAL SUBR 'MG-INTEGER-LE)) (NOT (EQUAL SUBR 'MG-INTEGER-UNARY-MINUS)) (NOT (EQUAL SUBR 'MG-INTEGER-ADD)) (NOT (EQUAL SUBR 'MG-INTEGER-SUBTRACT)) (NOT (EQUAL SUBR 'MG-BOOLEAN-OR)) (NOT (EQUAL SUBR 'MG-BOOLEAN-AND)) (NOT (EQUAL SUBR 'MG-BOOLEAN-NOT)) (NOT (EQUAL SUBR 'MG-INDEX-ARRAY)) (NOT (EQUAL SUBR 'MG-ARRAY-ELEMENT-ASSIGNMENT)) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (LESSP (LENGTH TEMP-STK) (SUB1 (PLUS 2 (LENGTH TEMP-STK))))), which again simplifies, using linear arithmetic, to: T. Q.E.D. The current goal, (MAIN . 3), has been proved, and has no dependents. Now proving (MAIN . 2). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (MAIN . 2), has been proved, and has no dependents. Now proving (MAIN . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (MAIN . 1), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 0.4 0.1 0.0 ] MG-INTEGER-UNARY-MINUS-STEPS-1-2 (PROVE-LEMMA MG-INTEGER-UNARY-MINUS-STEP-3 (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE)) (EQUAL (P-STEP (P-STATE (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 2))) CTRL-STK (PUSH (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (PUSH (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)) (P-STATE (TAG 'PC '(MG-INTEGER-UNARY-MINUS . 0)) (PUSH (P-FRAME (CONS (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) '((MIN-INT INT -2147483648) (TEMP-X INT 0)))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3)))) CTRL-STK) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((INSTRUCTIONS PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) UP (S LEMMAS) (REWRITE GET-LENGTH-PLUS) S (= (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS 0) S (S LEMMAS) UP X UP X (DIVE 1) (S LEMMAS) X (S LEMMAS) (S-PROP P-CTRL-STK-SIZE) (S LEMMAS) (S-PROP P-FRAME-SIZE) (S LEMMAS) (DIVE 1) (REWRITE RESOURCES-ADEQUATE-CTRL-STK-NOT-MAX) UP UP S X UP (S LEMMAS) PROVE PROVE))) WARNING: Note that MG-INTEGER-UNARY-MINUS-STEP-3 contains the free variables CODE2, NAME-ALIST, R-COND-LIST, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). WARNING: the previously added lemma, P-STEP-EXPANSION, could be applied whenever the newly proposed MG-INTEGER-UNARY-MINUS-STEP-3 could! *** Entering proof-checker *** PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) Rewriting with TRANSLATE-DEF-BODY-REWRITE. UP (S LEMMAS) (REWRITE GET-LENGTH-PLUS) Rewriting with GET-LENGTH-PLUS. S (= (CALL-NAME STMT) (QUOTE MG-INTEGER-UNARY-MINUS) 0) S (S LEMMAS) UP X UP X (DIVE 1) (S LEMMAS) X (S LEMMAS) (S-PROP P-CTRL-STK-SIZE) (S LEMMAS) (S-PROP P-FRAME-SIZE) (S LEMMAS) (DIVE 1) (REWRITE RESOURCES-ADEQUATE-CTRL-STK-NOT-MAX) **WARNING**: The following variables occur free in the lemma: RESOURCES-ADEQUATE-CTRL-STK-NOT-MAX but were not explicitly substituted for: TEMP-STK, PROC-LIST, and STMT. Rewriting with RESOURCES-ADEQUATE-CTRL-STK-NOT-MAX. Creating 1 new subgoal, (MAIN . 1). UP UP S X UP (S LEMMAS) PROVE ***** Now entering the theorem prover *****: This conjecture can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, and NORMAL, to the conjecture: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (EQUAL (PUSH (P-FRAME (APPEND (PAIRLIST '(ANS X) (REVERSE (LIST (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))))) '((MIN-INT INT -2147483648) (TEMP-X INT 0))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3)))) CTRL-STK) (PUSH (P-FRAME (CONS (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) '((MIN-INT INT -2147483648) (TEMP-X INT 0)))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3)))) CTRL-STK))). This simplifies, appealing to the lemmas PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, CAR-CONS, and CDR-CONS, and opening up the definitions of OK-MG-DEF-PLISTP, MG-INTEGER-UNARY-MINUS-CALL-SEQUENCE, FETCH-LABEL, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, REVERSE, PAIRLIST, and APPEND, to: T. Q.E.D. The proof of the current goal, MAIN, has been completed. However, the following subgoal of MAIN remains to be proved: (MAIN . 1). Now proving (MAIN . 1). PROVE ***** Now entering the theorem prover *****: This conjecture can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, PREDEFINED-PROC-CALL-P-FRAME-SIZE, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (NOT (LESSP (ADD1 (ADD1 (PREDEFINED-PROC-CALL-BINDINGS-COUNT (CALL-NAME STMT)))) 6))). This simplifies, rewriting with PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, and ASSOCIATIVITY-OF-APPEND, and unfolding the definitions of OK-MG-DEF-PLISTP, MG-INTEGER-UNARY-MINUS-CALL-SEQUENCE, FETCH-LABEL, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, PREDEFINED-PROC-CALL-BINDINGS-COUNT, ADD1, and LESSP, to: T. Q.E.D. The current goal, (MAIN . 1), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 0.3 0.3 0.0 ] MG-INTEGER-UNARY-MINUS-STEP-3 (PROVE-LEMMA MG-INTEGER-UNARY-MINUS-STEPS-4-8 (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE)) (EQUAL (P-STEP (P-STEP (P-STEP (P-STEP (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-UNARY-MINUS . 0)) (PUSH (P-FRAME (CONS (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) '((MIN-INT INT -2147483648) (TEMP-X INT 0)))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3)))) CTRL-STK) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)))))) (P-STATE (TAG 'PC '(MG-INTEGER-UNARY-MINUS . 5)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) '(MIN-INT INT -2147483648) (CONS 'TEMP-X (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3)))) CTRL-STK) (PUSH (TAG 'BOOL (IF (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG '(INT -2147483648))) 'T 'F)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((ENABLE UNLABEL P-STEP P-INS-OKP P-INS-STEP MAP-DOWN-VALUES-PRESERVES-LENGTH RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX OK-MG-STATEP-MG-ALIST-MG-ALISTP P-STEP1 RGET-REWRITE1 APPEND-DOESNT-AFFECT-RGET-COROLLARY MG-VAR-OK-TEMP-STK-INDEX SIMPLE-IDENTIFIERP))) WARNING: Note that MG-INTEGER-UNARY-MINUS-STEPS-4-8 contains the free variables CODE2, NAME-ALIST, R-COND-LIST, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). This formula can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, UNTAG-CONS, MG-WORD-SIZE, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL)) (EQUAL (P-STEP (P-STEP (P-STEP (P-STEP (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-UNARY-MINUS . 0)) (PUSH (P-FRAME (CONS (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) '((MIN-INT INT -2147483648) (TEMP-X INT 0)))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3)))) CTRL-STK) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) 32 'RUN)))))) (P-STATE (TAG 'PC '(MG-INTEGER-UNARY-MINUS . 5)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) '(MIN-INT INT -2147483648) (CONS 'TEMP-X (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3)))) CTRL-STK) (PUSH (TAG 'BOOL (IF (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) -2147483648) 'T 'F)) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) 32 'RUN))), which simplifies, using linear arithmetic, rewriting with the lemmas PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, SPECIAL-CONDITIONS-MG-COND-TO-P-NAT, P-PROG-SEGMENT-P-STATE, ASSOC-MG-INTEGER-UNARY-MINUS-TRANSLATE-PROC-LIST, P-PC-P-STATE, P-INS-STEP-EXPANSION, P-CTRL-STK-P-STATE, VALUE-EXPANSION2, VALUE-EXPANSION3, BINDINGS-FRAME, TOP-PUSH, P-DATA-SEGMENT-P-STATE, P-MAX-CTRL-STK-SIZE-P-STATE, P-WORD-SIZE-P-STATE, P-INS-OKP-EXPANSION, P-TEMP-STK-P-STATE, OK-MG-STATEP-MG-ALIST-MG-ALISTP, MAP-DOWN-VALUES-PRESERVES-LENGTH, P-MAX-TEMP-STK-SIZE-P-STATE, RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2, P-STEP-EXPANSION, MG-VAR-OK-TEMP-STK-INDEX, INT-IDENTIFIERP-SIMPLE, MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS, RGET-REWRITE1, APPEND-DOESNT-AFFECT-RGET-COROLLARY, POP-PUSH, MG-INTEGER-UNARY-MINUS-ARGS-DEFINEDP, ARRAY-IDENTIFIER-NAT-P-OBJECTP, LENGTH-PUSH, SIMPLE-IDENTIFIER-MAPPING-3, RET-PC-FRAME, CDR-CONS, CAR-CONS, PUT-ASSOC-EXPANSION, INT-LITERALP-MAPPING, TOP1-PUSH, INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES, INT-LITERALS-MAPPING, CAR-CDR-PUSH, CAR-TAG, and P-STATE-EQUAL, and expanding the functions OK-MG-DEF-PLISTP, MG-INTEGER-UNARY-MINUS-CALL-SEQUENCE, FETCH-LABEL, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, TAG, CONS, UNLABEL, GET, PROGRAM-BODY, P-CURRENT-PROGRAM, AREA-NAME, MG-INTEGER-UNARY-MINUS-TRANSLATION, DEFINITION, OFFSET, P-CURRENT-INSTRUCTION, P-PUSH-LOCAL-STEP, ADD1-ADDR, ADD1-P-PC, LOCAL-VAR-VALUE, P-PUSH-LOCAL-OKP, PREDEFINED-PROC-CALL-TEMP-STK-REQUIREMENT, PACK, P-STEP1, P-FETCH-TEMP-STK-STEP, P-FETCH-TEMP-STK-OKP, MG-WORD-SIZE, P-SET-LOCAL-STEP, PUT-VALUE, PUT-ASSOC, SET-LOCAL-VAR-VALUE, P-SET-LOCAL-OKP, P-EQ-STEP, UNTAG, BOOL, P-EQ-OKP, and TYPE, to two new formulas: Case 2. (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP1 PROC-LIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE CINFO) (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS '(CALL MG-INTEGER-UNARY-MINUS) (CONS '(PUSH-GLOBAL C-C) (CONS '(SUB1-NAT) (CONS (LIST 'TEST-NAT-AND-JUMP 'ZERO (CDR (ASSOC 'ROUTINEERROR (LABEL-ALIST CINFO)))) CODE2)))))))) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-EQ)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-EQ)) (NOT (EQUAL SUBR 'MG-INTEGER-LE)) (NOT (EQUAL SUBR 'MG-INTEGER-UNARY-MINUS)) (NOT (EQUAL SUBR 'MG-INTEGER-ADD)) (NOT (EQUAL SUBR 'MG-INTEGER-SUBTRACT)) (NOT (EQUAL SUBR 'MG-BOOLEAN-OR)) (NOT (EQUAL SUBR 'MG-BOOLEAN-AND)) (NOT (EQUAL SUBR 'MG-BOOLEAN-NOT)) (NOT (EQUAL SUBR 'MG-INDEX-ARRAY)) (NOT (EQUAL SUBR 'MG-ARRAY-ELEMENT-ASSIGNMENT)) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (NOT (EQUAL (UNTAG (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))) -2147483648))) (EQUAL (PUSH '(BOOL F) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (PUSH (TAG 'BOOL 'F) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)))), which again simplifies, opening up the definition of TAG, to: T. Case 1. (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP1 PROC-LIST PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE CINFO) (CONS (LIST 'PUSH-LOCAL (CAR (CALL-ACTUALS STMT))) (CONS (LIST 'PUSH-LOCAL (CADR (CALL-ACTUALS STMT))) (CONS '(CALL MG-INTEGER-UNARY-MINUS) (CONS '(PUSH-GLOBAL C-C) (CONS '(SUB1-NAT) (CONS (LIST 'TEST-NAT-AND-JUMP 'ZERO (CDR (ASSOC 'ROUTINEERROR (LABEL-ALIST CINFO)))) CODE2)))))))) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-ASSIGNMENT)) (NOT (EQUAL SUBR 'MG-SIMPLE-VARIABLE-EQ)) (NOT (EQUAL SUBR 'MG-SIMPLE-CONSTANT-EQ)) (NOT (EQUAL SUBR 'MG-INTEGER-LE)) (NOT (EQUAL SUBR 'MG-INTEGER-UNARY-MINUS)) (NOT (EQUAL SUBR 'MG-INTEGER-ADD)) (NOT (EQUAL SUBR 'MG-INTEGER-SUBTRACT)) (NOT (EQUAL SUBR 'MG-BOOLEAN-OR)) (NOT (EQUAL SUBR 'MG-BOOLEAN-AND)) (NOT (EQUAL SUBR 'MG-BOOLEAN-NOT)) (NOT (EQUAL SUBR 'MG-INDEX-ARRAY)) (NOT (EQUAL SUBR 'MG-ARRAY-ELEMENT-ASSIGNMENT)) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (EQUAL (UNTAG (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))) -2147483648)) (EQUAL (PUSH '(BOOL T) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (PUSH (TAG 'BOOL 'T) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)))), which again simplifies, unfolding the function TAG, to: T. Q.E.D. [ 0.0 0.3 0.0 ] MG-INTEGER-UNARY-MINUS-STEPS-4-8 (PROVE-LEMMA MG-INTEGER-UNARY-MINUS-STEPS-9-13-ERROR-CASE (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE) (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG '(INT -2147483648)))) (EQUAL (P-STEP (P-STEP (P-STEP (P-STEP (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-UNARY-MINUS . 5)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) '(MIN-INT INT -2147483648) (CONS 'TEMP-X (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3)))) CTRL-STK) (PUSH (TAG 'BOOL 'T) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)))))) (P-STATE (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3))) CTRL-STK (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C '(NAT 1))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((ENABLE UNLABEL P-STEP P-INS-OKP P-INS-STEP MAP-DOWN-VALUES-PRESERVES-LENGTH RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX OK-MG-STATEP-MG-ALIST-MG-ALISTP P-STEP1 RGET-REWRITE1 APPEND-DOESNT-AFFECT-RGET-COROLLARY MG-VAR-OK-TEMP-STK-INDEX SIMPLE-IDENTIFIERP))) WARNING: Note that MG-INTEGER-UNARY-MINUS-STEPS-9-13-ERROR-CASE contains the free variables CODE2, NAME-ALIST, R-COND-LIST, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). This formula can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, MG-WORD-SIZE, UNTAG-CONS, and NORMAL, to the new conjecture: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) -2147483648)) (EQUAL (P-STEP (P-STEP (P-STEP (P-STEP (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-UNARY-MINUS . 5)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) '(MIN-INT INT -2147483648) (CONS 'TEMP-X (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3)))) CTRL-STK) (PUSH (TAG 'BOOL 'T) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) 32 'RUN)))))) (P-STATE (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3))) CTRL-STK (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (TRANSLATE-PROC-LIST PROC-LIST) '((C-C (NAT 1))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) 32 'RUN))), which simplifies, using linear arithmetic, applying PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES, OK-MG-STATEP-MG-ALIST-MG-ALISTP, MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS, INT-LITERALP-MAPPING, SPECIAL-CONDITIONS-MG-COND-TO-P-NAT, P-PROG-SEGMENT-P-STATE, ASSOC-MG-INTEGER-UNARY-MINUS-TRANSLATE-PROC-LIST, P-PC-P-STATE, P-INS-STEP-EXPANSION, P-WORD-SIZE-P-STATE, P-MAX-TEMP-STK-SIZE-P-STATE, P-MAX-CTRL-STK-SIZE-P-STATE, P-DATA-SEGMENT-P-STATE, POP-PUSH, P-CTRL-STK-P-STATE, P-INS-OKP-EXPANSION, P-TEMP-STK-P-STATE, TOP-PUSH, BOOL-LITERAL-BOOL-OBJECTP, P-STEP-EXPANSION, MAP-DOWN-VALUES-PRESERVES-LENGTH, RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2, and RET-PC-FRAME, and opening up OK-MG-DEF-PLISTP, MG-INTEGER-UNARY-MINUS-CALL-SEQUENCE, FETCH-LABEL, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, TAG, CONS, UNLABEL, GET, PROGRAM-BODY, P-CURRENT-PROGRAM, AREA-NAME, MG-INTEGER-UNARY-MINUS-TRANSLATION, DEFINITION, OFFSET, P-CURRENT-INSTRUCTION, P-TEST-BOOL-AND-JUMP-STEP, ADD1-P-PC, ADD1-ADDR, P-TEST-AND-JUMP-STEP, P-TEST-BOOL-AND-JUMP-OKP, UNTAG, P-TEST-BOOLP, P-TEST-AND-JUMP-OKP, PACK, P-STEP1, P-PUSH-CONSTANT-STEP, UNABBREVIATE-CONSTANT, P-PUSH-CONSTANT-OKP, PREDEFINED-PROC-CALL-TEMP-STK-REQUIREMENT, P-POP-GLOBAL-STEP, DEPOSIT, P-POP-GLOBAL-OKP, P-JUMP-STEP, PC, P-JUMP-OKP, P-RET-STEP, and P-RET-OKP, to: T. Q.E.D. [ 0.0 0.3 0.0 ] MG-INTEGER-UNARY-MINUS-STEPS-9-13-ERROR-CASE (PROVE-LEMMA MG-INTEGER-UNARY-MINUS-STEPS-9-12-NONERROR-CASE (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE) (NOT (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG '(INT -2147483648))))) (EQUAL (P-STEP (P-STEP (P-STEP (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-UNARY-MINUS . 5)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) '(MIN-INT INT -2147483648) (CONS 'TEMP-X (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3)))) CTRL-STK) (PUSH (TAG 'BOOL 'F) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))))) (P-STATE (TAG 'PC '(MG-INTEGER-UNARY-MINUS . 12)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) '(MIN-INT INT -2147483648) (CONS 'TEMP-X (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3)))) CTRL-STK) (PUSH (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (PUSH (TAG 'INT (INEGATE (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((ENABLE UNLABEL P-STEP P-INS-OKP P-INS-STEP MAP-DOWN-VALUES-PRESERVES-LENGTH RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX OK-MG-STATEP-MG-ALIST-MG-ALISTP P-STEP1 RGET-REWRITE1 APPEND-DOESNT-AFFECT-RGET-COROLLARY MG-VAR-OK-TEMP-STK-INDEX SIMPLE-IDENTIFIERP))) WARNING: Note that MG-INTEGER-UNARY-MINUS-STEPS-9-12-NONERROR-CASE contains the free variables CODE2, NAME-ALIST, R-COND-LIST, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). This conjecture can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, MG-WORD-SIZE, UNTAG-CONS, and NORMAL, to the conjecture: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (NOT (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) -2147483648))) (EQUAL (P-STEP (P-STEP (P-STEP (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-UNARY-MINUS . 5)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) '(MIN-INT INT -2147483648) (CONS 'TEMP-X (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3)))) CTRL-STK) (PUSH (TAG 'BOOL 'F) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) 32 'RUN))))) (P-STATE (TAG 'PC '(MG-INTEGER-UNARY-MINUS . 12)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) '(MIN-INT INT -2147483648) (CONS 'TEMP-X (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3)))) CTRL-STK) (PUSH (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (PUSH (TAG 'INT (INEGATE (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) 32 'RUN))). This simplifies, using linear arithmetic, applying PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES, OK-MG-STATEP-MG-ALIST-MG-ALISTP, MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS, INT-LITERALP-MAPPING, SPECIAL-CONDITIONS-MG-COND-TO-P-NAT, P-PROG-SEGMENT-P-STATE, ASSOC-MG-INTEGER-UNARY-MINUS-TRANSLATE-PROC-LIST, P-PC-P-STATE, P-INS-STEP-EXPANSION, P-WORD-SIZE-P-STATE, P-MAX-TEMP-STK-SIZE-P-STATE, P-MAX-CTRL-STK-SIZE-P-STATE, P-DATA-SEGMENT-P-STATE, POP-PUSH, P-CTRL-STK-P-STATE, P-INS-OKP-EXPANSION, P-TEMP-STK-P-STATE, TOP-PUSH, BOOL-LITERAL-BOOL-OBJECTP, P-STEP-EXPANSION, VALUE-EXPANSION2, VALUE-EXPANSION3, BINDINGS-FRAME, MAP-DOWN-VALUES-PRESERVES-LENGTH, RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2, INT-LITERAL-INT-OBJECTP, INT-LITERALP-VALUE-SMALL, MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT, and LENGTH-PUSH, and expanding the functions OK-MG-DEF-PLISTP, MG-INTEGER-UNARY-MINUS-CALL-SEQUENCE, FETCH-LABEL, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, TAG, CONS, UNLABEL, GET, PROGRAM-BODY, P-CURRENT-PROGRAM, AREA-NAME, MG-INTEGER-UNARY-MINUS-TRANSLATION, DEFINITION, OFFSET, P-CURRENT-INSTRUCTION, P-TEST-BOOL-AND-JUMP-STEP, PC, P-TEST-AND-JUMP-STEP, P-TEST-BOOL-AND-JUMP-OKP, UNTAG, P-TEST-BOOLP, P-TEST-AND-JUMP-OKP, PACK, P-STEP1, P-PUSH-LOCAL-STEP, ADD1-ADDR, ADD1-P-PC, LOCAL-VAR-VALUE, P-PUSH-LOCAL-OKP, PREDEFINED-PROC-CALL-TEMP-STK-REQUIREMENT, P-NEG-INT-STEP, P-NEG-INT-OKP, MG-WORD-SIZE, MINUS, EXP, and SUB1, to: T. Q.E.D. [ 0.0 0.2 0.2 ] MG-INTEGER-UNARY-MINUS-STEPS-9-12-NONERROR-CASE (PROVE-LEMMA MG-INTEGER-UNARY-MINUS-STEPS-13-14-NONERROR-CASE (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE) (NOT (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG '(INT -2147483648))))) (EQUAL (P-STEP (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-UNARY-MINUS . 12)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) '(MIN-INT INT -2147483648) (CONS 'TEMP-X (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3)))) CTRL-STK) (PUSH (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (PUSH (TAG 'INT (INEGATE (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) (P-STATE (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3))) CTRL-STK (RPUT (TAG 'INT (INEGATE (UNTAG (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) (UNTAG (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((ENABLE UNLABEL P-STEP P-INS-OKP P-INS-STEP MAP-DOWN-VALUES-PRESERVES-LENGTH RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX OK-MG-STATEP-MG-ALIST-MG-ALISTP P-STEP1 RGET-REWRITE1 APPEND-DOESNT-AFFECT-RGET-COROLLARY MG-VAR-OK-TEMP-STK-INDEX SIMPLE-IDENTIFIERP))) WARNING: Note that MG-INTEGER-UNARY-MINUS-STEPS-13-14-NONERROR-CASE contains the free variables CODE2, NAME-ALIST, R-COND-LIST, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). This conjecture can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, MG-WORD-SIZE, UNTAG-CONS, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (NOT (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) -2147483648))) (EQUAL (P-STEP (P-STEP (P-STATE (TAG 'PC '(MG-INTEGER-UNARY-MINUS . 12)) (PUSH (P-FRAME (LIST (CONS 'ANS (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (CONS 'X (VALUE (CADR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) '(MIN-INT INT -2147483648) (CONS 'TEMP-X (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3)))) CTRL-STK) (PUSH (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK))) (PUSH (TAG 'INT (INEGATE (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) 32 'RUN))) (P-STATE (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3))) CTRL-STK (RPUT (TAG 'INT (INEGATE (UNTAG (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) (UNTAG (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) 32 'RUN))). This simplifies, using linear arithmetic, applying PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES, OK-MG-STATEP-MG-ALIST-MG-ALISTP, MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS, INT-LITERALP-MAPPING, SPECIAL-CONDITIONS-MG-COND-TO-P-NAT, P-PROG-SEGMENT-P-STATE, ASSOC-MG-INTEGER-UNARY-MINUS-TRANSLATE-PROC-LIST, P-PC-P-STATE, P-INS-STEP-EXPANSION, P-CTRL-STK-P-STATE, TOP1-PUSH, P-DATA-SEGMENT-P-STATE, P-MAX-CTRL-STK-SIZE-P-STATE, P-MAX-TEMP-STK-SIZE-P-STATE, P-INS-OKP-EXPANSION, P-TEMP-STK-P-STATE, POP-PUSH, TOP-PUSH, P-WORD-SIZE-P-STATE, RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX2, MG-INTEGER-UNARY-MINUS-ARGS-DEFINEDP, ARRAY-IDENTIFIER-NAT-P-OBJECTP, MAP-DOWN-VALUES-PRESERVES-LENGTH, MG-VAR-OK-TEMP-STK-INDEX, P-STEP-EXPANSION, and RET-PC-FRAME, and opening up the definitions of OK-MG-DEF-PLISTP, MG-INTEGER-UNARY-MINUS-CALL-SEQUENCE, FETCH-LABEL, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, TAG, CONS, UNLABEL, GET, PROGRAM-BODY, P-CURRENT-PROGRAM, AREA-NAME, MG-INTEGER-UNARY-MINUS-TRANSLATION, DEFINITION, OFFSET, P-CURRENT-INSTRUCTION, P-DEPOSIT-TEMP-STK-STEP, ADD1-ADDR, ADD1-P-PC, P-DEPOSIT-TEMP-STK-OKP, MG-WORD-SIZE, PREDEFINED-PROC-CALL-TEMP-STK-REQUIREMENT, PACK, P-STEP1, P-RET-STEP, and P-RET-OKP, to: T. Q.E.D. [ 0.0 0.3 0.0 ] MG-INTEGER-UNARY-MINUS-STEPS-13-14-NONERROR-CASE (PROVE-LEMMA MG-INTEGER-UNARY-MINUS-PUSH-C-C-EFFECT (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE)) (EQUAL (P-STEP (P-STATE (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 3))) CTRL-STK TEMP-STK (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C CC-VALUE)) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)) (P-STATE (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4))) CTRL-STK (PUSH CC-VALUE TEMP-STK) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C CC-VALUE)) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((INSTRUCTIONS PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) UP (S LEMMAS) (REWRITE GET-LENGTH-PLUS) S (= (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS 0) S (S LEMMAS) UP X UP X (DIVE 1) X (REWRITE RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX) UP S X (S LEMMAS) UP S))) WARNING: Note that MG-INTEGER-UNARY-MINUS-PUSH-C-C-EFFECT contains the free variables CODE2, T-COND-LIST, MG-STATE, NAME-ALIST, R-COND-LIST, STMT, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST), (OK-MG-STATEP MG-STATE R-COND-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). WARNING: the previously added lemma, P-STEP-EXPANSION, could be applied whenever the newly proposed MG-INTEGER-UNARY-MINUS-PUSH-C-C-EFFECT could! *** Entering proof-checker *** PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) Rewriting with TRANSLATE-DEF-BODY-REWRITE. UP (S LEMMAS) (REWRITE GET-LENGTH-PLUS) Rewriting with GET-LENGTH-PLUS. S (= (CALL-NAME STMT) (QUOTE MG-INTEGER-UNARY-MINUS) 0) S (S LEMMAS) UP X UP X (DIVE 1) X (REWRITE RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX) Rewriting with RESOURCES-ADEQUATE-TEMP-STK-NOT-MAX. UP S X (S LEMMAS) UP S The current goal, MAIN, has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 0.1 0.0 0.0 ] MG-INTEGER-UNARY-MINUS-PUSH-C-C-EFFECT (PROVE-LEMMA MG-INTEGER-UNARY-MINUS-SUB1-NAT-EFFECT (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (NORMAL MG-STATE) (MEMBER CC-VALUE (LIST '(NAT 1) '(NAT 2)))) (EQUAL (P-STEP (P-STATE (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 4))) CTRL-STK (PUSH CC-VALUE TEMP-STK) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C CC-VALUE)) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)) (P-STATE (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 5))) CTRL-STK (PUSH (TAG 'NAT (SUB1 (UNTAG CC-VALUE))) TEMP-STK) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C CC-VALUE)) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((INSTRUCTIONS PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) UP (S LEMMAS) S (= (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS 0) S (REWRITE GET-LENGTH-PLUS) (S LEMMAS) UP X UP X (DIVE 1) X (S LEMMAS) PUSH UP S X (S LEMMAS) UP S (PROVE (ENABLE TYPE SMALL-NATURALP))))) WARNING: Note that MG-INTEGER-UNARY-MINUS-SUB1-NAT-EFFECT contains the free variables CODE2, T-COND-LIST, MG-STATE, NAME-ALIST, R-COND-LIST, STMT, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST), (OK-MG-STATEP MG-STATE R-COND-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). WARNING: the previously added lemma, P-STEP-EXPANSION, could be applied whenever the newly proposed MG-INTEGER-UNARY-MINUS-SUB1-NAT-EFFECT could! *** Entering proof-checker *** PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) Rewriting with TRANSLATE-DEF-BODY-REWRITE. UP (S LEMMAS) S (= (CALL-NAME STMT) (QUOTE MG-INTEGER-UNARY-MINUS) 0) S (REWRITE GET-LENGTH-PLUS) Rewriting with GET-LENGTH-PLUS. (S LEMMAS) UP X UP X (DIVE 1) X (S LEMMAS) PUSH Creating 1 new subgoal, (MAIN . 1). UP S X (S LEMMAS) UP S The proof of the current goal, MAIN, has been completed. However, the following subgoal of MAIN remains to be proved: (MAIN . 1). Now proving (MAIN . 1). (PROVE (ENABLE TYPE SMALL-NATURALP)) ***** Now entering the theorem prover *****: This conjecture can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, TYPE, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (EQUAL (CC MG-STATE) 'NORMAL) (MEMBER CC-VALUE '((NAT 1) (NAT 2)))) (IF (EQUAL (CAR CC-VALUE) 'NAT) (IF (LISTP CC-VALUE) (IF (EQUAL (CDDR CC-VALUE) NIL) (IF (SMALL-NATURALP (UNTAG CC-VALUE) 32) (IF (EQUAL (UNTAG CC-VALUE) 0) F (NUMBERP (UNTAG CC-VALUE))) F) F) F) F)). This simplifies, applying PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, and ASSOCIATIVITY-OF-APPEND, and unfolding the functions OK-MG-DEF-PLISTP, MG-INTEGER-UNARY-MINUS-CALL-SEQUENCE, FETCH-LABEL, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, UNTAG, SMALL-NATURALP, and NUMBERP, to: T. Q.E.D. The current goal, (MAIN . 1), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 0.4 0.1 0.0 ] MG-INTEGER-UNARY-MINUS-SUB1-NAT-EFFECT (PROVE-LEMMA MG-INTEGER-UNARY-MINUS-STEP-16-ERROR (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE) (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG '(INT -2147483648)))) (EQUAL (P-STEP (P-STATE (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 5))) CTRL-STK (PUSH (TAG 'NAT (SUB1 (UNTAG '(NAT 1)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (TRANSLATE-PROC-LIST PROC-LIST) '((C-C (NAT 1))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)) (P-STATE (TAG 'PC (CONS SUBR (IF (NORMAL (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (LENGTH (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST))) (FIND-LABEL (FETCH-LABEL (CC (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (LABEL-ALIST (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST))) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2))))) CTRL-STK (MAP-DOWN-VALUES (MG-ALIST (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((INSTRUCTIONS PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) UP (S LEMMAS) (REWRITE GET-LENGTH-PLUS) S (= (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS 0) (S LEMMAS) UP X UP X (DIVE 1) X (S LEMMAS) X UP S X (S LEMMAS) UP S (= (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK))) (MG-STATE 'ROUTINEERROR (MG-ALIST MG-STATE) (MG-PSW MG-STATE)) 0) S SPLIT (PROVE (ENABLE MG-COND-TO-P-NAT CONDITION-INDEX)) (DIVE 1 2 2 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) TOP (DIVE 1 2 1) (REWRITE DEFINEDP-CAR-ASSOC) TOP (S LEMMAS) (REWRITE CAR-DEFINEDP-DEFINED-PROCP) (DIVE 1) (REWRITE PREDEFINED-PROC-CALL-MEANING-R-2) S X (= (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS 0) S (DIVE 1) (= * F 0) TOP S (DEMOTE 16) (DIVE 1 1) (REWRITE INT-LITERALP-MAPPING) TOP DROP (PROVE (ENABLE SMALL-INTEGERP INEGATE ILESSP)) (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS)))) WARNING: Note that MG-INTEGER-UNARY-MINUS-STEP-16-ERROR contains the free variables CODE2, T-COND-LIST, NAME-ALIST, R-COND-LIST, STMT, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST), and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). WARNING: the previously added lemma, P-STEP-EXPANSION, could be applied whenever the newly proposed MG-INTEGER-UNARY-MINUS-STEP-16-ERROR could! *** Entering proof-checker *** PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) Rewriting with TRANSLATE-DEF-BODY-REWRITE. UP (S LEMMAS) (REWRITE GET-LENGTH-PLUS) Rewriting with GET-LENGTH-PLUS. S (= (CALL-NAME STMT) (QUOTE MG-INTEGER-UNARY-MINUS) 0) (S LEMMAS) UP X UP X (DIVE 1) X (S LEMMAS) X UP S X (S LEMMAS) UP S : (= (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK))) (MG-STATE 'ROUTINEERROR (MG-ALIST MG-STATE) (MG-PSW MG-STATE)) 0) Creating 1 new subgoal, (MAIN . 1). S SPLIT Creating 2 new subgoals, (MAIN . 2) and (MAIN . 3). The proof of the current goal, MAIN, has been completed. However, the following subgoals of MAIN remain to be proved: (MAIN . 2), (MAIN . 3), and (MAIN . 1). Now proving (MAIN . 2). (PROVE (ENABLE MG-COND-TO-P-NAT CONDITION-INDEX)) ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, APPEND-CONS-REWRITE2, MG-COND-TO-P-NAT, TRANSLATE-PRESERVES-FIELDS, UNTAG-CONS, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) -2147483648) (EQUAL (TAG 'PC (CONS (CAR (ASSOC SUBR (TRANSLATE-PROC-LIST PROC-LIST))) (FIND-LABEL (CDR (ASSOC 'ROUTINEERROR (LABEL-ALIST CINFO))) (CDDDR (ASSOC SUBR (TRANSLATE-PROC-LIST PROC-LIST)))))) (TAG 'PC (CONS SUBR (FIND-LABEL (CDR (ASSOC 'ROUTINEERROR (LABEL-ALIST CINFO))) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)))))) (EQUAL '(1) (LIST (CONDITION-INDEX 'ROUTINEERROR T-COND-LIST)))), which simplifies, rewriting with the lemmas PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES, OK-MG-STATEP-MG-ALIST-MG-ALISTP, MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS, INT-LITERALP-MAPPING, MEMBER-CONS, ASSOC-USER-DEFINED-PROC2, CAR-TAG, CAR-CONS, and CONS-EQUAL, and unfolding the definitions of OK-MG-DEF-PLISTP, MG-INTEGER-UNARY-MINUS-CALL-SEQUENCE, FETCH-LABEL, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, PREDEFINED-PROCP, PREDEFINED-PROCEDURE-LIST, CONDITION-INDEX, and CONS, to: T. Q.E.D. The current goal, (MAIN . 2), has been proved, and has no dependents. Now proving (MAIN . 3). (DIVE 1 2 2 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) Rewriting with TRANSLATE-DEF-BODY-REWRITE. TOP (DIVE 1 2 1) (REWRITE DEFINEDP-CAR-ASSOC) Rewriting with DEFINEDP-CAR-ASSOC. Creating 1 new subgoal, ((MAIN . 3) . 1). TOP (S LEMMAS) The proof of the current goal, (MAIN . 3), has been completed. However, the following subgoal of (MAIN . 3) remains to be proved: ((MAIN . 3) . 1). Now proving ((MAIN . 3) . 1). (REWRITE CAR-DEFINEDP-DEFINED-PROCP) Rewriting with CAR-DEFINEDP-DEFINED-PROCP. The current goal, ((MAIN . 3) . 1), has been proved, and has no dependents. Now proving (MAIN . 1). (DIVE 1) (REWRITE PREDEFINED-PROC-CALL-MEANING-R-2) Rewriting with PREDEFINED-PROC-CALL-MEANING-R-2. S X (= (CALL-NAME STMT) (QUOTE MG-INTEGER-UNARY-MINUS) 0) S (DIVE 1) (= * F 0) Creating 1 new subgoal, ((MAIN . 1) . 1). TOP S The proof of the current goal, (MAIN . 1), has been completed. However, the following subgoal of (MAIN . 1) remains to be proved: ((MAIN . 1) . 1). Now proving ((MAIN . 1) . 1). (DEMOTE 16) (DIVE 1 1) (REWRITE INT-LITERALP-MAPPING) Rewriting with INT-LITERALP-MAPPING. Creating 1 new subgoal, (((MAIN . 1) . 1) . 1). TOP DROP (PROVE (ENABLE SMALL-INTEGERP INEGATE ILESSP)) ***** Now entering the theorem prover *****: This conjecture can be simplified, using the abbreviations IMPLIES and UNTAG-CONS, to the formula: (IMPLIES (EQUAL (UNTAG (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))) -2147483648) (EQUAL (SMALL-INTEGERP (INEGATE (UNTAG (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) 32) F)). This simplifies, unfolding the definitions of INEGATE, SMALL-INTEGERP, and EQUAL, to: T. Q.E.D. The proof of the current goal, ((MAIN . 1) . 1), has been completed. However, the following subgoal of ((MAIN . 1) . 1) remains to be proved: (((MAIN . 1) . 1) . 1). Now proving (((MAIN . 1) . 1) . 1). (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) Rewriting with INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES. Creating 2 new subgoals, ((((MAIN . 1) . 1) . 1) . 1) and: ((((MAIN . 1) . 1) . 1) . 2). The proof of the current goal, (((MAIN . 1) . 1) . 1), has been completed. However, the following subgoals of (((MAIN . 1) . 1) . 1) remain to be proved: ((((MAIN . 1) . 1) . 1) . 1) and ((((MAIN . 1) . 1) . 1) . 2). Now proving ((((MAIN . 1) . 1) . 1) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, ((((MAIN . 1) . 1) . 1) . 1), has been proved, and has no dependents. Now proving ((((MAIN . 1) . 1) . 1) . 2). (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, ((((MAIN . 1) . 1) . 1) . 2), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 0.4 0.3 0.0 ] MG-INTEGER-UNARY-MINUS-STEP-16-ERROR (PROVE-LEMMA MG-INTEGER-UNARY-MINUS-STEP-17-NONERROR (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE) (NOT (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG '(INT -2147483648))))) (EQUAL (P-STEP (P-STATE (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 5))) CTRL-STK (PUSH (TAG 'NAT (SUB1 (UNTAG (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST)))) (RPUT (TAG 'INT (INEGATE (UNTAG (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) (UNTAG (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN)) (P-STATE (TAG 'PC (CONS SUBR (IF (NORMAL (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (LENGTH (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST))) (FIND-LABEL (FETCH-LABEL (CC (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (LABEL-ALIST (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST))) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2))))) CTRL-STK (MAP-DOWN-VALUES (MG-ALIST (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((INSTRUCTIONS PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) UP (S LEMMAS) (REWRITE GET-LENGTH-PLUS) S (= (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS 0) S (S LEMMAS) UP X UP X (S LEMMAS) (DIVE 1) X (S LEMMAS) (= * T ((ENABLE SMALL-NATURALP MG-COND-TO-P-NAT CONDITION-INDEX UNTAG TAG))) UP S (S LEMMAS) (DIVE 1) (= * F ((ENABLE UNTAG MG-COND-TO-P-NAT CONDITION-INDEX))) UP S UP S (S LEMMAS) SPLIT (DIVE 2 1 1) X (= (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS 0) S (DIVE 1) (REWRITE MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT) TOP S (PROVE (ENABLE NORMAL)) (REWRITE INT-LITERALP-VALUE-SMALL) (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) (DEMOTE 16) (DIVE 1 1 1) (REWRITE INT-LITERALP-MAPPING) TOP (S LEMMAS) S (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) (DIVE 2 1 1) X (= (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS 0) S (DIVE 1) (REWRITE MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT) UP S UP UP S (REWRITE SET-ALIST-VALUE-DEPOSIT-TEMP-RELATION) UP (DIVE 2 1) (REWRITE SMALL-INTEGERP-MAPPING) TOP S (REWRITE MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT) S (REWRITE INT-LITERALP-VALUE-SMALL) (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) (DEMOTE 16) (DIVE 1 1 1) (REWRITE INT-LITERALP-MAPPING) TOP (S LEMMAS) S (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) X (DIVE 3 1) (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) TOP S (DIVE 2) (REWRITE SIGNATURES-MATCH-PRESERVES-GET-M-TYPE (($ALIST2 NAME-ALIST))) (= * 'INT-MG 0) UP (REWRITE OK-MG-VALUEP-INT-MG) (REWRITE MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT) S (REWRITE INT-LITERALP-VALUE-SMALL) (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) (DEMOTE 16) (S LEMMAS) (DIVE 1 1 1) (REWRITE INT-LITERALP-MAPPING) TOP S (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS INT-IDENTIFIERP)) (REWRITE INT-LITERALP-VALUE-SMALL) (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) (DEMOTE 16) (DIVE 1 1 1) (REWRITE INT-LITERALP-MAPPING) TOP (S LEMMAS) S (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) (PROVE (ENABLE MG-MEANING-PREDEFINED-PROC-CALL))))) WARNING: Note that MG-INTEGER-UNARY-MINUS-STEP-17-NONERROR contains the free variables CODE2, NAME-ALIST, R-COND-LIST, and N which will be chosen by instantiating the hypotheses (NOT (ZEROP N)), (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). WARNING: the previously added lemma, P-STEP-EXPANSION, could be applied whenever the newly proposed MG-INTEGER-UNARY-MINUS-STEP-17-NONERROR could! *** Entering proof-checker *** PROMOTE (DIVE 1) X (S LEMMAS) (DIVE 1 1 2) (REWRITE TRANSLATE-DEF-BODY-REWRITE) Rewriting with TRANSLATE-DEF-BODY-REWRITE. UP (S LEMMAS) (REWRITE GET-LENGTH-PLUS) Rewriting with GET-LENGTH-PLUS. S (= (CALL-NAME STMT) (QUOTE MG-INTEGER-UNARY-MINUS) 0) S (S LEMMAS) UP X UP X (S LEMMAS) (DIVE 1) X (S LEMMAS) (= * T ((ENABLE SMALL-NATURALP MG-COND-TO-P-NAT CONDITION-INDEX UNTAG TAG))) ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, MG-COND-TO-P-NAT, CAR-CONS, CDR-CONS, UNTAG, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (NOT (EQUAL (CADR (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) -2147483648))) (EQUAL (SMALL-NATURALP (SUB1 (CONDITION-INDEX (CC MG-STATE) T-COND-LIST)) 32) T)), which simplifies, appealing to the lemmas PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, and ASSOCIATIVITY-OF-APPEND, and unfolding the functions OK-MG-DEF-PLISTP, MG-INTEGER-UNARY-MINUS-CALL-SEQUENCE, FETCH-LABEL, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, CONDITION-INDEX, SUB1, and SMALL-NATURALP, to: T. Q.E.D. UP S (S LEMMAS) (DIVE 1) (= * F ((ENABLE UNTAG MG-COND-TO-P-NAT CONDITION-INDEX))) ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, MG-COND-TO-P-NAT, CAR-CONS, CDR-CONS, UNTAG, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (NOT (EQUAL (CADR (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) -2147483648))) (EQUAL (EQUAL (SUB1 (CONDITION-INDEX (CC MG-STATE) T-COND-LIST)) 0) F)), which simplifies, appealing to the lemmas PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, and ASSOCIATIVITY-OF-APPEND, and unfolding the functions OK-MG-DEF-PLISTP, MG-INTEGER-UNARY-MINUS-CALL-SEQUENCE, FETCH-LABEL, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, CONDITION-INDEX, and SUB1, to: T. Q.E.D. UP S UP S (S LEMMAS) SPLIT Creating 3 new subgoals, (MAIN . 1), (MAIN . 2), and (MAIN . 3). The proof of the current goal, MAIN, has been completed. However, the following subgoals of MAIN remain to be proved: (MAIN . 1), (MAIN . 2), and (MAIN . 3). Now proving (MAIN . 1). (DIVE 2 1 1) X (= (CALL-NAME STMT) (QUOTE MG-INTEGER-UNARY-MINUS) 0) S (DIVE 1) (REWRITE MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT) Rewriting with MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT. Creating 2 new subgoals, ((MAIN . 1) . 1) and ((MAIN . 1) . 2). TOP S (PROVE (ENABLE NORMAL)) ***** Now entering the theorem prover *****: This conjecture can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, SPECIAL-CONDITIONS-MG-COND-TO-P-NAT, UNTAG-CONS, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (NOT (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) -2147483648)) (EQUAL (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 6))) (TAG 'PC (CONS SUBR (IF (EQUAL (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) 'NORMAL) (PLUS (LENGTH (CODE CINFO)) (LENGTH (PREDEFINED-PROC-CALL-SEQUENCE STMT (LABEL-ALIST CINFO)))) (FIND-LABEL (CDR (ASSOC (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) (LABEL-ALIST CINFO))) (APPEND (CODE CINFO) (APPEND (PREDEFINED-PROC-CALL-SEQUENCE STMT (LABEL-ALIST CINFO)) CODE2))))))) (EQUAL (RPUT (TAG 'INT (INEGATE (UNTAG (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))))) (UNTAG (VALUE (CAR (CALL-ACTUALS STMT)) (BINDINGS (TOP CTRL-STK)))) (MAP-DOWN-VALUES (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK)) (MAP-DOWN-VALUES (MG-ALIST (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) (BINDINGS (TOP CTRL-STK)) TEMP-STK))) (EQUAL (MG-COND-TO-P-NAT (CC MG-STATE) T-COND-LIST) '(NAT 2))). This simplifies, applying PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES, OK-MG-STATEP-MG-ALIST-MG-ALISTP, MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS, INT-LITERALP-MAPPING, CDR-CONS, CAR-TAG, CAR-CONS, APPEND-CONS-REWRITE2, CONS-EQUAL, and SPECIAL-CONDITIONS-MG-COND-TO-P-NAT, and opening up OK-MG-DEF-PLISTP, MG-INTEGER-UNARY-MINUS-CALL-SEQUENCE, FETCH-LABEL, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, LENGTH, and ADD1, to: T. Q.E.D. The proof of the current goal, (MAIN . 1), has been completed. However, the following subgoals of (MAIN . 1) remain to be proved: ((MAIN . 1) . 1) and ((MAIN . 1) . 2). Now proving ((MAIN . 1) . 1). (REWRITE INT-LITERALP-VALUE-SMALL) Rewriting with INT-LITERALP-VALUE-SMALL. Creating 1 new subgoal, (((MAIN . 1) . 1) . 1). The proof of the current goal, ((MAIN . 1) . 1), has been completed. However, the following subgoal of ((MAIN . 1) . 1) remains to be proved: (((MAIN . 1) . 1) . 1). Now proving (((MAIN . 1) . 1) . 1). (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) Rewriting with INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES. Creating 2 new subgoals, ((((MAIN . 1) . 1) . 1) . 1) and: ((((MAIN . 1) . 1) . 1) . 2). The proof of the current goal, (((MAIN . 1) . 1) . 1), has been completed. However, the following subgoals of (((MAIN . 1) . 1) . 1) remain to be proved: ((((MAIN . 1) . 1) . 1) . 1) and ((((MAIN . 1) . 1) . 1) . 2). Now proving ((((MAIN . 1) . 1) . 1) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, ((((MAIN . 1) . 1) . 1) . 1), has been proved, and has no dependents. Now proving ((((MAIN . 1) . 1) . 1) . 2). (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, ((((MAIN . 1) . 1) . 1) . 2), has been proved, and has no dependents. Now proving ((MAIN . 1) . 2). (DEMOTE 16) (DIVE 1 1 1) (REWRITE INT-LITERALP-MAPPING) Rewriting with INT-LITERALP-MAPPING. Creating 1 new subgoal, (((MAIN . 1) . 2) . 1). TOP (S LEMMAS) S The proof of the current goal, ((MAIN . 1) . 2), has been completed. However, the following subgoal of ((MAIN . 1) . 2) remains to be proved: (((MAIN . 1) . 2) . 1). Now proving (((MAIN . 1) . 2) . 1). (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) Rewriting with INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES. Creating 2 new subgoals, ((((MAIN . 1) . 2) . 1) . 1) and: ((((MAIN . 1) . 2) . 1) . 2). The proof of the current goal, (((MAIN . 1) . 2) . 1), has been completed. However, the following subgoals of (((MAIN . 1) . 2) . 1) remain to be proved: ((((MAIN . 1) . 2) . 1) . 1) and ((((MAIN . 1) . 2) . 1) . 2). Now proving ((((MAIN . 1) . 2) . 1) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, ((((MAIN . 1) . 2) . 1) . 1), has been proved, and has no dependents. Now proving ((((MAIN . 1) . 2) . 1) . 2). (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, ((((MAIN . 1) . 2) . 1) . 2), has been proved, and has no dependents. Now proving (MAIN . 2). (DIVE 2 1 1) X (= (CALL-NAME STMT) (QUOTE MG-INTEGER-UNARY-MINUS) 0) S (DIVE 1) (REWRITE MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT) Rewriting with MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT. Creating 2 new subgoals, ((MAIN . 2) . 1) and ((MAIN . 2) . 2). UP S UP UP S (REWRITE SET-ALIST-VALUE-DEPOSIT-TEMP-RELATION) Rewriting with SET-ALIST-VALUE-DEPOSIT-TEMP-RELATION. Creating 3 new subgoals, ((MAIN . 2) . 3), ((MAIN . 2) . 4), and ((MAIN . 2) . 5). UP (DIVE 2 1) (REWRITE SMALL-INTEGERP-MAPPING) Rewriting with SMALL-INTEGERP-MAPPING. Creating 1 new subgoal, ((MAIN . 2) . 6). TOP S The proof of the current goal, (MAIN . 2), has been completed. However, the following subgoals of (MAIN . 2) remain to be proved: ((MAIN . 2) . 6), ((MAIN . 2) . 3), ((MAIN . 2) . 4), ((MAIN . 2) . 5), ((MAIN . 2) . 1), and ((MAIN . 2) . 2). Now proving ((MAIN . 2) . 6). (REWRITE MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT) Rewriting with MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT. Creating 2 new subgoals, (((MAIN . 2) . 6) . 1) and (((MAIN . 2) . 6) . 2). The proof of the current goal, ((MAIN . 2) . 6), has been completed. However, the following subgoals of ((MAIN . 2) . 6) remain to be proved: (((MAIN . 2) . 6) . 1) and (((MAIN . 2) . 6) . 2). Now proving (((MAIN . 2) . 6) . 1). S (REWRITE INT-LITERALP-VALUE-SMALL) Rewriting with INT-LITERALP-VALUE-SMALL. Creating 1 new subgoal, ((((MAIN . 2) . 6) . 1) . 1). The proof of the current goal, (((MAIN . 2) . 6) . 1), has been completed. However, the following subgoal of (((MAIN . 2) . 6) . 1) remains to be proved: ((((MAIN . 2) . 6) . 1) . 1). Now proving ((((MAIN . 2) . 6) . 1) . 1). (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) Rewriting with INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES. Creating 2 new subgoals, (((((MAIN . 2) . 6) . 1) . 1) . 1) and: (((((MAIN . 2) . 6) . 1) . 1) . 2). The proof of the current goal, ((((MAIN . 2) . 6) . 1) . 1), has been completed. However, the following subgoals of ((((MAIN . 2) . 6) . 1) . 1) remain to be proved: (((((MAIN . 2) . 6) . 1) . 1) . 1) and: (((((MAIN . 2) . 6) . 1) . 1) . 2). Now proving (((((MAIN . 2) . 6) . 1) . 1) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (((((MAIN . 2) . 6) . 1) . 1) . 1), has been proved, and has no dependents. Now proving (((((MAIN . 2) . 6) . 1) . 1) . 2). (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, (((((MAIN . 2) . 6) . 1) . 1) . 2), has been proved, and has no dependents. Now proving (((MAIN . 2) . 6) . 2). (DEMOTE 16) (DIVE 1 1 1) (REWRITE INT-LITERALP-MAPPING) Rewriting with INT-LITERALP-MAPPING. Creating 1 new subgoal, ((((MAIN . 2) . 6) . 2) . 1). TOP (S LEMMAS) S The proof of the current goal, (((MAIN . 2) . 6) . 2), has been completed. However, the following subgoal of (((MAIN . 2) . 6) . 2) remains to be proved: ((((MAIN . 2) . 6) . 2) . 1). Now proving ((((MAIN . 2) . 6) . 2) . 1). (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) Rewriting with INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES. Creating 2 new subgoals, (((((MAIN . 2) . 6) . 2) . 1) . 1) and: (((((MAIN . 2) . 6) . 2) . 1) . 2). The proof of the current goal, ((((MAIN . 2) . 6) . 2) . 1), has been completed. However, the following subgoals of ((((MAIN . 2) . 6) . 2) . 1) remain to be proved: (((((MAIN . 2) . 6) . 2) . 1) . 1) and: (((((MAIN . 2) . 6) . 2) . 1) . 2). Now proving (((((MAIN . 2) . 6) . 2) . 1) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (((((MAIN . 2) . 6) . 2) . 1) . 1), has been proved, and has no dependents. Now proving (((((MAIN . 2) . 6) . 2) . 1) . 2). (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, (((((MAIN . 2) . 6) . 2) . 1) . 2), has been proved, and has no dependents. Now proving ((MAIN . 2) . 3). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, ((MAIN . 2) . 3), has been proved, and has no dependents. Now proving ((MAIN . 2) . 4). X (DIVE 3 1) (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. TOP S The current goal, ((MAIN . 2) . 4), has been proved, and has no dependents. Now proving ((MAIN . 2) . 5). (DIVE 2) (REWRITE SIGNATURES-MATCH-PRESERVES-GET-M-TYPE (($ALIST2 NAME-ALIST))) Rewriting with SIGNATURES-MATCH-PRESERVES-GET-M-TYPE. (= * (QUOTE INT-MG) 0) Creating 1 new subgoal, (((MAIN . 2) . 5) . 1). UP (REWRITE OK-MG-VALUEP-INT-MG) Rewriting with OK-MG-VALUEP-INT-MG. (REWRITE MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT) Rewriting with MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT. Creating 2 new subgoals, (((MAIN . 2) . 5) . 2) and (((MAIN . 2) . 5) . 3). The proof of the current goal, ((MAIN . 2) . 5), has been completed. However, the following subgoals of ((MAIN . 2) . 5) remain to be proved: (((MAIN . 2) . 5) . 2), (((MAIN . 2) . 5) . 3), and (((MAIN . 2) . 5) . 1). Now proving (((MAIN . 2) . 5) . 2). S (REWRITE INT-LITERALP-VALUE-SMALL) Rewriting with INT-LITERALP-VALUE-SMALL. Creating 1 new subgoal, ((((MAIN . 2) . 5) . 2) . 1). The proof of the current goal, (((MAIN . 2) . 5) . 2), has been completed. However, the following subgoal of (((MAIN . 2) . 5) . 2) remains to be proved: ((((MAIN . 2) . 5) . 2) . 1). Now proving ((((MAIN . 2) . 5) . 2) . 1). (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) Rewriting with INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES. Creating 2 new subgoals, (((((MAIN . 2) . 5) . 2) . 1) . 1) and: (((((MAIN . 2) . 5) . 2) . 1) . 2). The proof of the current goal, ((((MAIN . 2) . 5) . 2) . 1), has been completed. However, the following subgoals of ((((MAIN . 2) . 5) . 2) . 1) remain to be proved: (((((MAIN . 2) . 5) . 2) . 1) . 1) and: (((((MAIN . 2) . 5) . 2) . 1) . 2). Now proving (((((MAIN . 2) . 5) . 2) . 1) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (((((MAIN . 2) . 5) . 2) . 1) . 1), has been proved, and has no dependents. Now proving (((((MAIN . 2) . 5) . 2) . 1) . 2). (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, (((((MAIN . 2) . 5) . 2) . 1) . 2), has been proved, and has no dependents. Now proving (((MAIN . 2) . 5) . 3). (DEMOTE 16) (S LEMMAS) (DIVE 1 1 1) (REWRITE INT-LITERALP-MAPPING) Rewriting with INT-LITERALP-MAPPING. Creating 1 new subgoal, ((((MAIN . 2) . 5) . 3) . 1). TOP S The proof of the current goal, (((MAIN . 2) . 5) . 3), has been completed. However, the following subgoal of (((MAIN . 2) . 5) . 3) remains to be proved: ((((MAIN . 2) . 5) . 3) . 1). Now proving ((((MAIN . 2) . 5) . 3) . 1). (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) Rewriting with INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES. Creating 2 new subgoals, (((((MAIN . 2) . 5) . 3) . 1) . 1) and: (((((MAIN . 2) . 5) . 3) . 1) . 2). The proof of the current goal, ((((MAIN . 2) . 5) . 3) . 1), has been completed. However, the following subgoals of ((((MAIN . 2) . 5) . 3) . 1) remain to be proved: (((((MAIN . 2) . 5) . 3) . 1) . 1) and: (((((MAIN . 2) . 5) . 3) . 1) . 2). Now proving (((((MAIN . 2) . 5) . 3) . 1) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (((((MAIN . 2) . 5) . 3) . 1) . 1), has been proved, and has no dependents. Now proving (((((MAIN . 2) . 5) . 3) . 1) . 2). (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, (((((MAIN . 2) . 5) . 3) . 1) . 2), has been proved, and has no dependents. Now proving (((MAIN . 2) . 5) . 1). : (PROVE (ENABLE OK-MG-STATEMENT OK-PREDEFINED-PROC-CALL OK-PREDEFINED-PROC-ARGS INT-IDENTIFIERP)) ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, UNTAG-CONS, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (NOT (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) -2147483648)) (EQUAL (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 6))) (TAG 'PC (CONS SUBR (IF (EQUAL (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) 'NORMAL) (PLUS (LENGTH (CODE CINFO)) (LENGTH (PREDEFINED-PROC-CALL-SEQUENCE STMT (LABEL-ALIST CINFO)))) (FIND-LABEL (CDR (ASSOC (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) (LABEL-ALIST CINFO))) (APPEND (CODE CINFO) (APPEND (PREDEFINED-PROC-CALL-SEQUENCE STMT (LABEL-ALIST CINFO)) CODE2)))))))) (EQUAL (CADR (ASSOC (CAR (CALL-ACTUALS STMT)) NAME-ALIST)) 'INT-MG)), which simplifies, unfolding the definitions of OK-PREDEFINED-PROC-CALL, PREDEFINED-PROCP, OK-MG-INTEGER-UNARY-MINUS-ARGS, GET-M-TYPE, M-TYPE, IDENTIFIERP, INT-IDENTIFIERP, OK-PREDEFINED-PROC-ARGS, EQUAL, and OK-MG-STATEMENT, to: T. Q.E.D. The current goal, (((MAIN . 2) . 5) . 1), has been proved, and has no dependents. Now proving ((MAIN . 2) . 1). (REWRITE INT-LITERALP-VALUE-SMALL) Rewriting with INT-LITERALP-VALUE-SMALL. Creating 1 new subgoal, (((MAIN . 2) . 1) . 1). The proof of the current goal, ((MAIN . 2) . 1), has been completed. However, the following subgoal of ((MAIN . 2) . 1) remains to be proved: (((MAIN . 2) . 1) . 1). Now proving (((MAIN . 2) . 1) . 1). (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) Rewriting with INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES. Creating 2 new subgoals, ((((MAIN . 2) . 1) . 1) . 1) and: ((((MAIN . 2) . 1) . 1) . 2). The proof of the current goal, (((MAIN . 2) . 1) . 1), has been completed. However, the following subgoals of (((MAIN . 2) . 1) . 1) remain to be proved: ((((MAIN . 2) . 1) . 1) . 1) and ((((MAIN . 2) . 1) . 1) . 2). Now proving ((((MAIN . 2) . 1) . 1) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, ((((MAIN . 2) . 1) . 1) . 1), has been proved, and has no dependents. Now proving ((((MAIN . 2) . 1) . 1) . 2). (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, ((((MAIN . 2) . 1) . 1) . 2), has been proved, and has no dependents. Now proving ((MAIN . 2) . 2). (DEMOTE 16) (DIVE 1 1 1) (REWRITE INT-LITERALP-MAPPING) Rewriting with INT-LITERALP-MAPPING. Creating 1 new subgoal, (((MAIN . 2) . 2) . 1). TOP (S LEMMAS) S The proof of the current goal, ((MAIN . 2) . 2), has been completed. However, the following subgoal of ((MAIN . 2) . 2) remains to be proved: (((MAIN . 2) . 2) . 1). Now proving (((MAIN . 2) . 2) . 1). (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) Rewriting with INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES. Creating 2 new subgoals, ((((MAIN . 2) . 2) . 1) . 1) and: ((((MAIN . 2) . 2) . 1) . 2). The proof of the current goal, (((MAIN . 2) . 2) . 1), has been completed. However, the following subgoals of (((MAIN . 2) . 2) . 1) remain to be proved: ((((MAIN . 2) . 2) . 1) . 1) and ((((MAIN . 2) . 2) . 1) . 2). Now proving ((((MAIN . 2) . 2) . 1) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, ((((MAIN . 2) . 2) . 1) . 1), has been proved, and has no dependents. Now proving ((((MAIN . 2) . 2) . 1) . 2). (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, ((((MAIN . 2) . 2) . 1) . 2), has been proved, and has no dependents. Now proving (MAIN . 3). (PROVE (ENABLE MG-MEANING-PREDEFINED-PROC-CALL)) ***** Now entering the theorem prover *****: This conjecture can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, UNTAG-CONS, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (NOT (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) -2147483648))) (EQUAL (TAG 'PC (CONS SUBR (PLUS (LENGTH (CODE CINFO)) 6))) (TAG 'PC (CONS SUBR (IF (EQUAL (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) 'NORMAL) (PLUS (LENGTH (CODE CINFO)) (LENGTH (PREDEFINED-PROC-CALL-SEQUENCE STMT (LABEL-ALIST CINFO)))) (FIND-LABEL (CDR (ASSOC (CC (MG-MEANING-PREDEFINED-PROC-CALL STMT MG-STATE)) (LABEL-ALIST CINFO))) (APPEND (CODE CINFO) (APPEND (PREDEFINED-PROC-CALL-SEQUENCE STMT (LABEL-ALIST CINFO)) CODE2)))))))). This simplifies, rewriting with PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES, OK-MG-STATEP-MG-ALIST-MG-ALISTP, MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS, INT-LITERALP-MAPPING, INT-LITERALP-VALUE-SMALL, MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT, CC-MG-STATE, and CDR-CONS, and opening up the definitions of OK-MG-DEF-PLISTP, MG-INTEGER-UNARY-MINUS-CALL-SEQUENCE, FETCH-LABEL, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, MG-MEANING-MG-INTEGER-UNARY-MINUS, M-VALUE, GET-M-VALUE, MG-WORD-SIZE, MINUS, EXP, SUB1, MG-MEANING-PREDEFINED-PROC-CALL, LENGTH, and ADD1, to: T. Q.E.D. The current goal, (MAIN . 3), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 1.5 0.5 0.2 ] MG-INTEGER-UNARY-MINUS-STEP-17-NONERROR (PROVE-LEMMA MG-INTEGER-UNARY-MINUS-EXACT-TIME-LEMMA (REWRITE) (IMPLIES (AND (NOT (ZEROP N)) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (USER-DEFINED-PROCP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (NORMAL MG-STATE)) (EQUAL (P (MAP-DOWN MG-STATE PROC-LIST CTRL-STK TEMP-STK (TAG 'PC (CONS SUBR (LENGTH (CODE CINFO)))) T-COND-LIST) (CLOCK STMT PROC-LIST MG-STATE N)) (P-STATE (TAG 'PC (CONS SUBR (IF (NORMAL (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (LENGTH (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST))) (FIND-LABEL (FETCH-LABEL (CC (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (LABEL-ALIST (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST))) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2))))) CTRL-STK (MAP-DOWN-VALUES (MG-ALIST (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (TRANSLATE-PROC-LIST PROC-LIST) (LIST (LIST 'C-C (MG-COND-TO-P-NAT (CC (MG-MEANING-R STMT PROC-LIST MG-STATE N (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) T-COND-LIST))) (MG-MAX-CTRL-STK-SIZE) (MG-MAX-TEMP-STK-SIZE) (MG-WORD-SIZE) 'RUN))) ((INSTRUCTIONS PROMOTE (DIVE 1 2) X (= (CAR STMT) 'PREDEFINED-PROC-CALL-MG 0) S X (= (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS 0) S S-PROP S (CLAIM (SMALL-INTEGERP (INEGATE (UNTAG (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) 32) 0) UP S-PROP (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-0-UNWINDING-LEMMA) (DIVE 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (REWRITE MG-INTEGER-UNARY-MINUS-STEPS-1-2) UP (REWRITE MG-INTEGER-UNARY-MINUS-STEP-3) UP UP UP UP UP (REWRITE MG-INTEGER-UNARY-MINUS-STEPS-4-8) (CLAIM (NOT (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG '(INT -2147483648)))) 0) S-PROP UP UP UP UP (REWRITE MG-INTEGER-UNARY-MINUS-STEPS-9-12-NONERROR-CASE) UP UP (REWRITE MG-INTEGER-UNARY-MINUS-STEPS-13-14-NONERROR-CASE) UP (REWRITE MG-INTEGER-UNARY-MINUS-PUSH-C-C-EFFECT) UP (REWRITE MG-INTEGER-UNARY-MINUS-SUB1-NAT-EFFECT) UP (REWRITE MG-INTEGER-UNARY-MINUS-STEP-17-NONERROR) UP S-PROP (DIVE 1 3 1) (REWRITE RPUT-PRESERVES-LENGTH) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) TOP S (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (DIVE 2) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) TOP (REWRITE MG-VAR-OK-TEMP-STK-INDEX (($LST (MG-ALIST MG-STATE)))) (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-DEFINEDP) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (PROVE (ENABLE MG-COND-TO-P-NAT CONDITION-INDEX)) (DIVE 1 3 1) (REWRITE RPUT-PRESERVES-LENGTH) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) TOP S (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (DIVE 2) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) TOP (REWRITE MG-VAR-OK-TEMP-STK-INDEX (($LST (MG-ALIST MG-STATE)))) (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-DEFINEDP) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) TOP (CONTRADICT 16) (DEMOTE 17) (DIVE 1 1) (REWRITE INT-LITERALP-MAPPING) TOP PROMOTE (DIVE 1 1 1) = TOP DROP (PROVE (ENABLE INEGATE ILESSP SMALL-INTEGERP)) (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) S UP (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-ADD1-3) (REWRITE P-0-UNWINDING-LEMMA) (DIVE 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (REWRITE MG-INTEGER-UNARY-MINUS-STEPS-1-2) UP (REWRITE MG-INTEGER-UNARY-MINUS-STEP-3) UP UP UP UP UP (REWRITE MG-INTEGER-UNARY-MINUS-STEPS-4-8) (CLAIM (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG '(INT -2147483648))) 0) S-PROP UP UP UP UP UP (REWRITE MG-INTEGER-UNARY-MINUS-STEPS-9-13-ERROR-CASE) UP (REWRITE MG-INTEGER-UNARY-MINUS-PUSH-C-C-EFFECT) UP (REWRITE MG-INTEGER-UNARY-MINUS-SUB1-NAT-EFFECT) UP (REWRITE MG-INTEGER-UNARY-MINUS-STEP-16-ERROR) UP S-PROP (DIVE 1 3 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) TOP S (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) X (DIVE 1 3 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) TOP S (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) TOP (CONTRADICT 16) (REWRITE MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT) (REWRITE INT-LITERALP-VALUE-SMALL) (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) (DEMOTE 17) (DIVE 1 1 1) (REWRITE INT-LITERALP-MAPPING) TOP DROP PROVE (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS)))) WARNING: Note that MG-INTEGER-UNARY-MINUS-EXACT-TIME-LEMMA contains the free variables CODE2, NAME-ALIST, and R-COND-LIST which will be chosen by instantiating the hypotheses: (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) and: (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)). *** Entering proof-checker *** PROMOTE (DIVE 1 2) X (= (CAR STMT) (QUOTE PREDEFINED-PROC-CALL-MG) 0) S X (= (CALL-NAME STMT) (QUOTE MG-INTEGER-UNARY-MINUS) 0) S S-PROP S : (CLAIM (SMALL-INTEGERP (INEGATE (UNTAG (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) 32) 0) Creating one new subgoal, (MAIN . 1). UP S-PROP (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-0-UNWINDING-LEMMA) Rewriting with P-0-UNWINDING-LEMMA. (DIVE 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (REWRITE MG-INTEGER-UNARY-MINUS-STEPS-1-2) Rewriting with MG-INTEGER-UNARY-MINUS-STEPS-1-2. UP (REWRITE MG-INTEGER-UNARY-MINUS-STEP-3) Rewriting with MG-INTEGER-UNARY-MINUS-STEP-3. UP UP UP UP UP (REWRITE MG-INTEGER-UNARY-MINUS-STEPS-4-8) Rewriting with MG-INTEGER-UNARY-MINUS-STEPS-4-8. : (CLAIM (NOT (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG '(INT -2147483648)))) 0) Creating one new subgoal, (MAIN . 2). S-PROP UP UP UP UP (REWRITE MG-INTEGER-UNARY-MINUS-STEPS-9-12-NONERROR-CASE) Rewriting with MG-INTEGER-UNARY-MINUS-STEPS-9-12-NONERROR-CASE. UP UP (REWRITE MG-INTEGER-UNARY-MINUS-STEPS-13-14-NONERROR-CASE) Rewriting with MG-INTEGER-UNARY-MINUS-STEPS-13-14-NONERROR-CASE. UP (REWRITE MG-INTEGER-UNARY-MINUS-PUSH-C-C-EFFECT) **WARNING**: The following variables occur free in the lemma: MG-INTEGER-UNARY-MINUS-PUSH-C-C-EFFECT but were not explicitly substituted for: CODE2, T-COND-LIST, MG-STATE, NAME-ALIST, R-COND-LIST, STMT, and N. Rewriting with MG-INTEGER-UNARY-MINUS-PUSH-C-C-EFFECT. Creating 1 new subgoal, (MAIN . 3). UP (REWRITE MG-INTEGER-UNARY-MINUS-SUB1-NAT-EFFECT) **WARNING**: The following variables occur free in the lemma: MG-INTEGER-UNARY-MINUS-SUB1-NAT-EFFECT but were not explicitly substituted for: CODE2, T-COND-LIST, MG-STATE, NAME-ALIST, R-COND-LIST, STMT, and N. Rewriting with MG-INTEGER-UNARY-MINUS-SUB1-NAT-EFFECT. Creating 2 new subgoals, (MAIN . 4) and (MAIN . 5). UP (REWRITE MG-INTEGER-UNARY-MINUS-STEP-17-NONERROR) Rewriting with MG-INTEGER-UNARY-MINUS-STEP-17-NONERROR. UP S-PROP The proof of the current goal, MAIN, has been completed. However, the following subgoals of MAIN remain to be proved: (MAIN . 4), (MAIN . 5), (MAIN . 3), (MAIN . 2), and (MAIN . 1). Now proving (MAIN . 4). (DIVE 1 3 1) (REWRITE RPUT-PRESERVES-LENGTH) Rewriting with RPUT-PRESERVES-LENGTH. Creating 1 new subgoal, ((MAIN . 4) . 1). (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) Rewriting with MAP-DOWN-VALUES-PRESERVES-LENGTH. Creating 1 new subgoal, ((MAIN . 4) . 2). TOP S The proof of the current goal, (MAIN . 4), has been completed. However, the following subgoals of (MAIN . 4) remain to be proved: ((MAIN . 4) . 2) and ((MAIN . 4) . 1). Now proving ((MAIN . 4) . 2). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, ((MAIN . 4) . 2), has been proved, and has no dependents. Now proving ((MAIN . 4) . 1). (DIVE 2) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) Rewriting with MAP-DOWN-VALUES-PRESERVES-LENGTH. Creating 1 new subgoal, (((MAIN . 4) . 1) . 1). TOP (REWRITE MG-VAR-OK-TEMP-STK-INDEX (($LST (MG-ALIST MG-STATE)))) Rewriting with MG-VAR-OK-TEMP-STK-INDEX. Creating 1 new subgoal, (((MAIN . 4) . 1) . 2). The proof of the current goal, ((MAIN . 4) . 1), has been completed. However, the following subgoals of ((MAIN . 4) . 1) remain to be proved: (((MAIN . 4) . 1) . 2) and (((MAIN . 4) . 1) . 1). Now proving (((MAIN . 4) . 1) . 2). (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-DEFINEDP) Rewriting with MG-INTEGER-UNARY-MINUS-ARGS-DEFINEDP. The current goal, (((MAIN . 4) . 1) . 2), has been proved, and has no dependents. Now proving (((MAIN . 4) . 1) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (((MAIN . 4) . 1) . 1), has been proved, and has no dependents. Now proving (MAIN . 5). (PROVE (ENABLE MG-COND-TO-P-NAT CONDITION-INDEX)) ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations PREDEFINED-PROCEDURE-LIST, USER-DEFINED-PROCP, ZEROP, NOT, AND, IMPLIES, MG-COND-TO-P-NAT, UNTAG-CONS, and NORMAL, to: (IMPLIES (AND (NOT (EQUAL N 0)) (NUMBERP N) (NOT (RESOURCES-INADEQUATEP STMT PROC-LIST (LIST (LENGTH TEMP-STK) (P-CTRL-STK-SIZE CTRL-STK)))) (EQUAL (CAR STMT) 'PREDEFINED-PROC-CALL-MG) (EQUAL (CALL-NAME STMT) 'MG-INTEGER-UNARY-MINUS) (OK-MG-STATEMENT STMT R-COND-LIST NAME-ALIST PROC-LIST) (OK-MG-DEF-PLISTP PROC-LIST) (OK-MG-STATEP MG-STATE R-COND-LIST) (EQUAL (CODE (TRANSLATE-DEF-BODY (ASSOC SUBR PROC-LIST) PROC-LIST)) (APPEND (CODE (TRANSLATE CINFO T-COND-LIST STMT PROC-LIST)) CODE2)) (NOT (MEMBER SUBR '(MG-SIMPLE-VARIABLE-ASSIGNMENT MG-SIMPLE-CONSTANT-ASSIGNMENT MG-SIMPLE-VARIABLE-EQ MG-SIMPLE-CONSTANT-EQ MG-INTEGER-LE MG-INTEGER-UNARY-MINUS MG-INTEGER-ADD MG-INTEGER-SUBTRACT MG-BOOLEAN-OR MG-BOOLEAN-AND MG-BOOLEAN-NOT MG-INDEX-ARRAY MG-ARRAY-ELEMENT-ASSIGNMENT))) (DEFINEDP SUBR PROC-LIST) (LISTP CTRL-STK) (ALL-CARS-UNIQUE (MG-ALIST MG-STATE)) (SIGNATURES-MATCH (MG-ALIST MG-STATE) NAME-ALIST) (MG-VARS-LIST-OK-IN-P-STATE (MG-ALIST MG-STATE) (BINDINGS (TOP CTRL-STK)) TEMP-STK) (NO-P-ALIASING (BINDINGS (TOP CTRL-STK)) (MG-ALIST MG-STATE)) (EQUAL (CC MG-STATE) 'NORMAL) (SMALL-INTEGERP (INEGATE (UNTAG (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) 32) (NOT (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) -2147483648))) (MEMBER (LIST 'NAT (CONDITION-INDEX (CC MG-STATE) T-COND-LIST)) '((NAT 1) (NAT 2)))), which simplifies, rewriting with the lemmas PREDEFINED-CALL-TRANSLATION-2, CODE-MAKE-CINFO, APPEND-NIL-LEMMA, APPEND-CONS-REWRITE, ASSOCIATIVITY-OF-APPEND, INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES, OK-MG-STATEP-MG-ALIST-MG-ALISTP, MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS, and INT-LITERALP-MAPPING, and opening up the definitions of OK-MG-DEF-PLISTP, MG-INTEGER-UNARY-MINUS-CALL-SEQUENCE, FETCH-LABEL, EQUAL, PREDEFINED-PROC-CALL-SEQUENCE, ADD-CODE, CDR, CAR, LISTP, MEMBER, CONDITION-INDEX, and CONS, to: T. Q.E.D. The current goal, (MAIN . 5), has been proved, and has no dependents. Now proving (MAIN . 3). (DIVE 1 3 1) (REWRITE RPUT-PRESERVES-LENGTH) Rewriting with RPUT-PRESERVES-LENGTH. Creating 1 new subgoal, ((MAIN . 3) . 1). (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) Rewriting with MAP-DOWN-VALUES-PRESERVES-LENGTH. Creating 1 new subgoal, ((MAIN . 3) . 2). TOP S The proof of the current goal, (MAIN . 3), has been completed. However, the following subgoals of (MAIN . 3) remain to be proved: ((MAIN . 3) . 2) and ((MAIN . 3) . 1). Now proving ((MAIN . 3) . 2). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, ((MAIN . 3) . 2), has been proved, and has no dependents. Now proving ((MAIN . 3) . 1). (DIVE 2) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) Rewriting with MAP-DOWN-VALUES-PRESERVES-LENGTH. Creating 1 new subgoal, (((MAIN . 3) . 1) . 1). TOP (REWRITE MG-VAR-OK-TEMP-STK-INDEX (($LST (MG-ALIST MG-STATE)))) Rewriting with MG-VAR-OK-TEMP-STK-INDEX. Creating 1 new subgoal, (((MAIN . 3) . 1) . 2). The proof of the current goal, ((MAIN . 3) . 1), has been completed. However, the following subgoals of ((MAIN . 3) . 1) remain to be proved: (((MAIN . 3) . 1) . 2) and (((MAIN . 3) . 1) . 1). Now proving (((MAIN . 3) . 1) . 2). (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-DEFINEDP) Rewriting with MG-INTEGER-UNARY-MINUS-ARGS-DEFINEDP. The current goal, (((MAIN . 3) . 1) . 2), has been proved, and has no dependents. Now proving (((MAIN . 3) . 1) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (((MAIN . 3) . 1) . 1), has been proved, and has no dependents. Now proving (MAIN . 2). TOP (CONTRADICT 16) (DEMOTE 17) (DIVE 1 1) (REWRITE INT-LITERALP-MAPPING) Rewriting with INT-LITERALP-MAPPING. Creating 1 new subgoal, ((MAIN . 2) . 1). TOP PROMOTE (DIVE 1 1 1) = TOP DROP (PROVE (ENABLE INEGATE ILESSP SMALL-INTEGERP)) ***** Now entering the theorem prover *****: This formula can be simplified, using the abbreviations SMALL-INTEGERP, NOT, and UNTAG-CONS, to: (IMPLIES (AND (INTEGERP (INEGATE -2147483648)) (NOT (ILESSP (INEGATE -2147483648) (MINUS (EXP 2 (SUB1 32)))))) (NOT (ILESSP (INEGATE -2147483648) (EXP 2 (SUB1 32))))), which simplifies, opening up INEGATE, INTEGERP, SUB1, EXP, MINUS, and ILESSP, to: T. Q.E.D. The proof of the current goal, (MAIN . 2), has been completed. However, the following subgoal of (MAIN . 2) remains to be proved: ((MAIN . 2) . 1). Now proving ((MAIN . 2) . 1). (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) Rewriting with INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES. Creating 2 new subgoals, (((MAIN . 2) . 1) . 1) and (((MAIN . 2) . 1) . 2). The proof of the current goal, ((MAIN . 2) . 1), has been completed. However, the following subgoals of ((MAIN . 2) . 1) remain to be proved: (((MAIN . 2) . 1) . 1) and (((MAIN . 2) . 1) . 2). Now proving (((MAIN . 2) . 1) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (((MAIN . 2) . 1) . 1), has been proved, and has no dependents. Now proving (((MAIN . 2) . 1) . 2). (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, (((MAIN . 2) . 1) . 2), has been proved, and has no dependents. Now proving (MAIN . 1). S UP (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-ADD1-3) Rewriting with P-ADD1-3. (REWRITE P-0-UNWINDING-LEMMA) Rewriting with P-0-UNWINDING-LEMMA. (DIVE 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (REWRITE MG-INTEGER-UNARY-MINUS-STEPS-1-2) Rewriting with MG-INTEGER-UNARY-MINUS-STEPS-1-2. UP (REWRITE MG-INTEGER-UNARY-MINUS-STEP-3) Rewriting with MG-INTEGER-UNARY-MINUS-STEP-3. UP UP UP UP UP (REWRITE MG-INTEGER-UNARY-MINUS-STEPS-4-8) Rewriting with MG-INTEGER-UNARY-MINUS-STEPS-4-8. : (CLAIM (EQUAL (UNTAG (MG-TO-P-SIMPLE-LITERAL (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE))))) (UNTAG '(INT -2147483648))) 0) Creating one new subgoal, ((MAIN . 1) . 1). S-PROP UP UP UP UP UP (REWRITE MG-INTEGER-UNARY-MINUS-STEPS-9-13-ERROR-CASE) Rewriting with MG-INTEGER-UNARY-MINUS-STEPS-9-13-ERROR-CASE. UP (REWRITE MG-INTEGER-UNARY-MINUS-PUSH-C-C-EFFECT) **WARNING**: The following variables occur free in the lemma: MG-INTEGER-UNARY-MINUS-PUSH-C-C-EFFECT but were not explicitly substituted for: CODE2, T-COND-LIST, MG-STATE, NAME-ALIST, R-COND-LIST, STMT, and N. Rewriting with MG-INTEGER-UNARY-MINUS-PUSH-C-C-EFFECT. Creating 1 new subgoal, ((MAIN . 1) . 2). UP (REWRITE MG-INTEGER-UNARY-MINUS-SUB1-NAT-EFFECT) **WARNING**: The following variables occur free in the lemma: MG-INTEGER-UNARY-MINUS-SUB1-NAT-EFFECT but were not explicitly substituted for: CODE2, T-COND-LIST, MG-STATE, NAME-ALIST, R-COND-LIST, STMT, and N. Rewriting with MG-INTEGER-UNARY-MINUS-SUB1-NAT-EFFECT. Creating 2 new subgoals, ((MAIN . 1) . 3) and ((MAIN . 1) . 4). UP (REWRITE MG-INTEGER-UNARY-MINUS-STEP-16-ERROR) Rewriting with MG-INTEGER-UNARY-MINUS-STEP-16-ERROR. UP S-PROP The proof of the current goal, (MAIN . 1), has been completed. However, the following subgoals of (MAIN . 1) remain to be proved: ((MAIN . 1) . 3), ((MAIN . 1) . 4), ((MAIN . 1) . 2), and ((MAIN . 1) . 1). Now proving ((MAIN . 1) . 3). (DIVE 1 3 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) Rewriting with MAP-DOWN-VALUES-PRESERVES-LENGTH. Creating 1 new subgoal, (((MAIN . 1) . 3) . 1). TOP S The proof of the current goal, ((MAIN . 1) . 3), has been completed. However, the following subgoal of ((MAIN . 1) . 3) remains to be proved: (((MAIN . 1) . 3) . 1). Now proving (((MAIN . 1) . 3) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (((MAIN . 1) . 3) . 1), has been proved, and has no dependents. Now proving ((MAIN . 1) . 4). X The current goal, ((MAIN . 1) . 4), has been proved, and has no dependents. Now proving ((MAIN . 1) . 2). (DIVE 1 3 1) (REWRITE MAP-DOWN-VALUES-PRESERVES-LENGTH) Rewriting with MAP-DOWN-VALUES-PRESERVES-LENGTH. Creating 1 new subgoal, (((MAIN . 1) . 2) . 1). TOP S The proof of the current goal, ((MAIN . 1) . 2), has been completed. However, the following subgoal of ((MAIN . 1) . 2) remains to be proved: (((MAIN . 1) . 2) . 1). Now proving (((MAIN . 1) . 2) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (((MAIN . 1) . 2) . 1), has been proved, and has no dependents. Now proving ((MAIN . 1) . 1). TOP (CONTRADICT 16) (REWRITE MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT) Rewriting with MIN-INT-ONLY-NON-NEGATABLE-SMALL-INT. Creating 2 new subgoals, (((MAIN . 1) . 1) . 1) and (((MAIN . 1) . 1) . 2). The proof of the current goal, ((MAIN . 1) . 1), has been completed. However, the following subgoals of ((MAIN . 1) . 1) remain to be proved: (((MAIN . 1) . 1) . 1) and (((MAIN . 1) . 1) . 2). Now proving (((MAIN . 1) . 1) . 1). (REWRITE INT-LITERALP-VALUE-SMALL) Rewriting with INT-LITERALP-VALUE-SMALL. Creating 1 new subgoal, ((((MAIN . 1) . 1) . 1) . 1). The proof of the current goal, (((MAIN . 1) . 1) . 1), has been completed. However, the following subgoal of (((MAIN . 1) . 1) . 1) remains to be proved: ((((MAIN . 1) . 1) . 1) . 1). Now proving ((((MAIN . 1) . 1) . 1) . 1). (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) Rewriting with INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES. Creating 2 new subgoals, (((((MAIN . 1) . 1) . 1) . 1) . 1) and: (((((MAIN . 1) . 1) . 1) . 1) . 2). The proof of the current goal, ((((MAIN . 1) . 1) . 1) . 1), has been completed. However, the following subgoals of ((((MAIN . 1) . 1) . 1) . 1) remain to be proved: (((((MAIN . 1) . 1) . 1) . 1) . 1) and: (((((MAIN . 1) . 1) . 1) . 1) . 2). Now proving (((((MAIN . 1) . 1) . 1) . 1) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (((((MAIN . 1) . 1) . 1) . 1) . 1), has been proved, and has no dependents. Now proving (((((MAIN . 1) . 1) . 1) . 1) . 2). (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, (((((MAIN . 1) . 1) . 1) . 1) . 2), has been proved, and has no dependents. Now proving (((MAIN . 1) . 1) . 2). (DEMOTE 17) (DIVE 1 1 1) (REWRITE INT-LITERALP-MAPPING) Rewriting with INT-LITERALP-MAPPING. Creating 1 new subgoal, ((((MAIN . 1) . 1) . 2) . 1). TOP DROP PROVE ***** Now entering the theorem prover *****: This conjecture can be simplified, using the abbreviations NOT, IMPLIES, and UNTAG-CONS, to: (IMPLIES (NOT (EQUAL (UNTAG (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))) -2147483648)) (NOT (EQUAL (UNTAG (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))) (MINUS (EXP 2 (SUB1 32)))))). This simplifies, appealing to the lemmas NEGATIVE-GUTS-MINUS and MINUS-EQUAL, and expanding NEGATIVE-GUTS, NUMBERP, SUB1, EXP, and MINUS, to the new goal: (IMPLIES (NOT (EQUAL (EXP 2 (SUB1 32)) 2147483648)) (NOT (EQUAL (UNTAG (CADDR (ASSOC (CADR (CALL-ACTUALS STMT)) (MG-ALIST MG-STATE)))) -2147483648))), which again simplifies, opening up the definitions of SUB1, EXP, and EQUAL, to: T. Q.E.D. The proof of the current goal, (((MAIN . 1) . 1) . 2), has been completed. However, the following subgoal of (((MAIN . 1) . 1) . 2) remains to be proved: ((((MAIN . 1) . 1) . 2) . 1). Now proving ((((MAIN . 1) . 1) . 2) . 1). (REWRITE INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES) Rewriting with INT-IDENTIFIERS-HAVE-INT-LITERAL-VALUES. Creating 2 new subgoals, (((((MAIN . 1) . 1) . 2) . 1) . 1) and: (((((MAIN . 1) . 1) . 2) . 1) . 2). The proof of the current goal, ((((MAIN . 1) . 1) . 2) . 1), has been completed. However, the following subgoals of ((((MAIN . 1) . 1) . 2) . 1) remain to be proved: (((((MAIN . 1) . 1) . 2) . 1) . 1) and: (((((MAIN . 1) . 1) . 2) . 1) . 2). Now proving (((((MAIN . 1) . 1) . 2) . 1) . 1). (REWRITE OK-MG-STATEP-MG-ALIST-MG-ALISTP) Rewriting with OK-MG-STATEP-MG-ALIST-MG-ALISTP. The current goal, (((((MAIN . 1) . 1) . 2) . 1) . 1), has been proved, and has no dependents. Now proving (((((MAIN . 1) . 1) . 2) . 1) . 2). (REWRITE MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS) Rewriting with MG-INTEGER-UNARY-MINUS-ARGS-HAVE-SIMPLE-MG-TYPE-REFPS. The current goal, (((((MAIN . 1) . 1) . 2) . 1) . 2), has been proved, and has no dependents. *!*!*!*!*!*!* All goals have been proved! *!*!*!*!*!*!* [ 3.3 0.1 0.0 ] MG-INTEGER-UNARY-MINUS-EXACT-TIME-LEMMA (MAKE-LIB "c-predefined2") Making the lib for "c-predefined2". Finished making the lib for "c-predefined2". (/stage/ftp/pub/boyer/pc-nqthm/pc-nqthm-1992/examples/mg/c-predefined2.lib /stage/ftp/pub/boyer/pc-nqthm/pc-nqthm-1992/examples/mg/c-predefined2.lisp)