1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
(UNSET-WATERFALL-PARALLELISM)
(ASSIGN SCRIPT-MODE T)
T
(SET-LD-PROMPT T STATE)
T
ACL2 !>>(SET-INHIBITED-SUMMARY-TYPES '(TIME STEPS))
(TIME STEPS)
ACL2 !>>(SET-INHIBIT-OUTPUT-LST '(PROOF-TREE))
(PROOF-TREE)
ACL2 !>>(SET-GUARD-CHECKING NIL)
Masking guard violations but still checking guards except for self-
recursive calls. To avoid guard checking entirely, :SET-GUARD-CHECKING
:NONE. See :DOC set-guard-checking.
ACL2 >>(SET-GAG-MODE NIL)
<state>
ACL2 >>(INCLUDE-BOOK "m1")
Summary
Form: ( INCLUDE-BOOK "m1" ...)
Rules: NIL
"m1.lisp"
ACL2 >>(IN-PACKAGE "M1")
"M1"
M1 >>'(END OF SETUP)
(END OF SETUP)
M1 >>(DEFUN G (N A)
(IF (ZP N) A (G (- N 1) (* N A))))
The admission of G is trivial, using the relation O< (which is known
to be well-founded on the domain recognized by O-P) and the measure
(ACL2-COUNT N). We observe that the type of G is described by the
theorem (OR (ACL2-NUMBERP (G N A)) (EQUAL (G N A) A)). We used primitive
type reasoning.
Summary
Form: ( DEFUN G ...)
Rules: ((:FAKE-RUNE-FOR-TYPE-SET NIL))
G
M1 >>(DEFCONST *G*
'((PUSH 1)
(STORE 1)
(LOAD 0)
(IFLE 10)
(LOAD 0)
(LOAD 1)
(MUL)
(STORE 1)
(LOAD 0)
(PUSH 1)
(SUB)
(STORE 0)
(GOTO -10)
(LOAD 1)
(HALT)))
Summary
Form: ( DEFCONST *G* ...)
Rules: NIL
*G*
M1 >>(DEFUN G-SCHED-LOOP (N)
(IF (ZP N)
(REPEAT 0 4)
(APPEND (REPEAT 0 11)
(G-SCHED-LOOP (- N 1)))))
The admission of G-SCHED-LOOP is trivial, using the relation O< (which
is known to be well-founded on the domain recognized by O-P) and the
measure (ACL2-COUNT N). We observe that the type of G-SCHED-LOOP is
described by the theorem (TRUE-LISTP (G-SCHED-LOOP N)). We used the
:type-prescription rules BINARY-APPEND, REPEAT and ACL2::TRUE-LISTP-APPEND.
Summary
Form: ( DEFUN G-SCHED-LOOP ...)
Rules: ((:TYPE-PRESCRIPTION BINARY-APPEND)
(:TYPE-PRESCRIPTION REPEAT)
(:TYPE-PRESCRIPTION ACL2::TRUE-LISTP-APPEND))
G-SCHED-LOOP
M1 >>(DEFUN G-SCHED (N)
(APPEND (REPEAT 0 2) (G-SCHED-LOOP N)))
Since G-SCHED is non-recursive, its admission is trivial. We observe
that the type of G-SCHED is described by the theorem
(TRUE-LISTP (G-SCHED N)). We used the :type-prescription rules G-SCHED-LOOP
and ACL2::TRUE-LISTP-APPEND.
Summary
Form: ( DEFUN G-SCHED ...)
Rules: ((:TYPE-PRESCRIPTION G-SCHED-LOOP)
(:TYPE-PRESCRIPTION ACL2::TRUE-LISTP-APPEND))
G-SCHED
M1 >>(DEFUN RUN-G (N)
(TOP (STACK (RUN (G-SCHED N)
(MAKE-STATE 0 (LIST N 0) NIL *G*)))))
Since RUN-G is non-recursive, its admission is trivial. We could deduce
no constraints on the type of RUN-G.
Summary
Form: ( DEFUN RUN-G ...)
Rules: NIL
RUN-G
M1 >>(RUN-G 5)
120
M1 >>(RUN-G 1000)
402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
M1 >>(LEN (G-SCHED 1000))
11006
M1 >>'(END OF DEMO 1)
(END OF DEMO 1)
M1 >>(INCLUDE-BOOK "compile")
Summary
Form: ( INCLUDE-BOOK "compile" ...)
Rules: NIL
"compile.lisp"
M1 >>(COMPILE '(N)
'((A = 1)
(WHILE (N > 0)
(A = (N * A))
(N = (N - 1)))
(RETURN A)))
((PUSH 1)
(STORE 1)
(LOAD 0)
(IFLE 10)
(LOAD 0)
(LOAD 1)
(MUL)
(STORE 1)
(LOAD 0)
(PUSH 1)
(SUB)
(STORE 0)
(GOTO -10)
(LOAD 1)
(RETURN))
M1 >>'(END OF DEMO 2)
(END OF DEMO 2)
M1 >>'(THE END)
(THE END)
M1 >>Bye.
|