Compat.disjuncts : term -> term list

SYNOPSIS
Iteratively breaks apart a disjunction.

DESCRIBE
Found in the hol88 library. disjuncts (--`t1 \/ ... \/ tn`--) returns [(--`t1`--),...,(--`tn`--)]. The argument term may be any tree of disjunctions, it need not have the form (--`t1 \/ (t2 \/ ( ... \/ tn)...)`--). A term that is not a disjunction is simply returned as the sole element of a list. Note that
   disjuncts(list_mk_disj([(--`t1`--),...,(--`tn`--)]))
will not return [(--`t1`--),...,(--`tn`--)] if any of t1,...,tn are disjunctions.

FAILURE
Never fails. Unless, of course, you have not loaded the hol88 library.

EXAMPLE
  - list_mk_disj [(--`a \/ b`--),(--`c \/ d`--),(--`e \/ f`--)];
  (--`(a \/ b) \/ (c \/ d) \/ e \/ f`--) : term

  - disjuncts it;
  [(--`a`--),(--`b`--),(--`c`--),(--`d`--),(--`e`--),(--`f`--)] : term list

  - list_mk_disj it;
  (--`a \/ b \/ c \/ d \/ e \/ f`--) : term

  - disjuncts (--`1`--);
  [(--`1`--)] : term list

COMMENTS
disjuncts is not in hol90. There, somewhat misleadingly, it is called strip_disj, in order to be consistent with all the other strip_ routines. Because disjuncts splits both the left and right sides of a disjunction, this operation is not the inverse of list_mk_disj. It may be useful to introduce list_dest_disj for splitting only the right tails of a disjunction.

SEEALSO  list_mk_disj,   dest_disj

HOL  Kananaskis 0