PROGN.html -- ACL2 Version 6.3

## PROGN

evaluate some events

    Major Section:  EVENTS

    Example Form:
    (progn (defun foo (x) x)
           (defmacro my-defun (&rest args)
             (cons 'defun args))
           (my-defun bar (x) (foo x)))

    General form:
    (progn event1 event2 ... eventk)

where `k` >= 0 and each `eventi` is a legal embedded event form (see embedded-event-form). These events are evaluated in sequence. A utility is provided to assist in debugging failures of such execution; see redo-flat.

NOTE: If the `eventi` above are not all legal embedded event forms (see embedded-event-form), consider using `er-progn` or (with great care!) `progn!` instead.

For a related event form that does allow introduction of constraints and `local` events, see encapsulate.

ACL2 does not allow the use of `progn` in definitions. Instead, the macro `er-progn` can be used for sequencing state-oriented operations; see er-progn and see state. If you are using single-threaded objects (see stobj) you may wish to define a version of `er-progn` that cascades the object through successive changes. ACL2's `pprogn` is the `state` analogue of such a macro.

If your goal is simply to execute a sequence of top-level forms, for example a sequence of definitions, consider using `ld` instead; see ld.