Applies a conversion to every top-level disjunct in a term.
DESCRIBE
The term EVERY_DISJ_CONV c t takes the conversion c and applies
this to every top-level disjunct within term t. A top-level
disjunct is a sub-term that can be reached from the root of the term
by breaking apart only disjunctions. The terms affected by c are
those that would be returned by a call to strip_disj c. In
particular, if the term as a whole is not a disjunction, then the
conversion will be applied to the whole term.
FAILURE
Fails if the conversion argument fails when applied to any of the
top-level disjuncts in the term.
EXAMPLE
- EVERY_DISJ_CONV BETA_CONV
(Term`(\x. x /\ p) q \/ (\x. x) r \/ (\y. s /\ y) u`);
> val it =
|- (\x. x /\ p) q \/ (\x. x) r \/ (\y. s /\ y) u = q /\ p \/ r \/ s /\ u
: thm
USES
Useful for applying a conversion to all of the ``significant''
sub-terms within a term without having to worry about the exact
structure of its disjunctive skeleton.