THENC
op Conv.THENC : (conv -> conv -> conv)
Applies two conversions in sequence.
If the conversion c1
returns |- t = t'
when
applied to a term ``t``
, and c2
returns
|- t' = t''
when applied to ``t'``
, then the
composite conversion (c1 THENC c2) ``t``
returns
|- t = t''
. That is, (c1 THENC c2) ``t``
has
the effect of transforming the term ``t``
first with the
conversion c1
and then with the conversion
c2
.
THENC
also handles the possibility that either of its
arguments might return the UNCHANGED
exception. If the
first conversion returns UNCHANGED
when applied to its
argument, THENC
just returns the result of the second
conversion applied to the same initial term. If the second conversion
raises UNCHANGED
(and the first did not), then the result
will be the theorem returned by the first conversion. In this way,
unnecessary calls to TRANS
can be avoided.
(This refers to failure other than by raising
UNCHANGED
). (c1 THENC c2) ``t``
fails if
either the conversion c1
fails when applied to
``t``
, or if c1 ``t``
succeeds and returns
|- t = t'
but c2
fails when applied to
``t'``
. (c1 THENC c2) ``t``
may also fail if
either of c1
or c2
is not, in fact, a
conversion (i.e. a function that maps a term t
to a theorem
|- t = t'
).