` `

perform a generalization
Major Section: PROOF-CHECKER-COMMANDS

Example: (generalize ((and (true-listp x) (true-listp y)) 0) ((append x y) w)) General Form: (generalize &rest substitution)Generalize using the indicated substitution, which should be a non-empty list. Each element of that list should be a two-element list of the form

`(term variable)`

, where `term`

may use abbreviations.
The effect of the instruction is to replace each such term in the
current goal by the corresponding variable. This replacement is
carried out by a parallel substitution, outside-in in each
hypothesis and in the conclusion. More generally, actually, the
``variable'' (second) component of each pair may be `nil`

or a number,
which causes the system to generate a new name of the form `_`

or `_n`

,
with `n`

a natural number; more on this below. However, when a
variable is supplied, it must not occur in any goal of the current
proof-checker state.When the ``variable'' above is `nil`

, the system will treat it as the
variable `|_|`

if that variable does not occur in any goal of the
current proof-checker state. Otherwise it treats it as `|_0|`

, or
`|_1|`

, or `|_2|`

, and so on, until one of these is not among the
variables of the current proof-checker state. If the ``variable''
is a non-negative integer `n`

, then the system treats it as `|_n|`

unless that variable already occurs among the current goals, in
which case it increments n just as above until it obtains a new
variable.

**Remark:** The same variable may not occur as the variable component of
two different arguments (though `nil`

may occur arbitrarily many
times, as may a positive integer).