CURRENT-THEORY.html -- ACL2 Version 6.3

## CURRENT-THEORY

currently enabled rules as of logical name

    Major Section:  THEORIES

    Examples:
    (current-theory :here)
    (current-theory 'lemma3)

See logical-name.

    General Form:
    (current-theory logical-name)

Returns the current theory as it existed immediately after the introduction of `logical-name` provided it is evaluated in an environment in which the variable symbol WORLD is bound to the current ACL2 logical world, `(w state)`. Thus,

    ACL2 !>(current-theory :here)

will cause an (unbound variable) error while

    ACL2 !>(let ((world (w state))) (current-theory :here))

will return the current theory in world.

See theories and see logical-name for a discussion of theories in general and why the commonly used ``theory functions'' such as `current-theory` are really macros that expand into terms involving the variable `world`.

The theory returned by `current-theory` is in fact the theory selected by the `in-theory` event most recently preceding logical name, extended by the rules introduced up through `logical-name`.

You may experience a fencepost problem in deciding which logical name to use. `Deflabel` can always be used to mark unambiguously for future reference a particular point in the development of your theory. The order of events in the vicinity of an `encapsulate` is confusing. See encapsulate.

This ``function'' is actually a macro that expands to a term mentioning the single free variable `world`. When theory expressions are evaluated by `in-theory` or the `:``in-theory` hint, `world` is bound to the current ACL2 world.