disjuncts : term -> term list

SYNOPSIS
Iteratively breaks apart a disjunction.

DESCRIPTION
If a term t is a disjunction p \/ q, then disjuncts t will recursively break down p and q into disjuncts and append the resulting lists. Otherwise it will return the singleton list [t]. So if t is of the form t1 \/ ... \/ tn with any reassociation, no ti itself being a disjunction, the list returned will be [t1; ...; tn]. But
   disjuncts(list_mk_disj([t1;...;tn]))
will not return [t1;...;tn] if any of t1,...,tn is a disjunction.

FAILURE CONDITIONS
Never fails, even if the term is not boolean.

EXAMPLE
  # list_mk_disj [`a \/ b`;`c \/ d`;`e \/ f`];;
  val it : term = `(a \/ b) \/ (c \/ d) \/ e \/ f`

  # disjuncts it;;
  val it : term list = [`a`; `b`; `c`; `d`; `e`; `f`]

  # disjuncts `1`;;
  val it : term list = [`1`]

COMMENTS
Because disjuncts splits both the left and right sides of a disjunction, this operation is not the inverse of list_mk_disj. You can also use splitlist dest_disj to split in a right-associated way only.

SEE ALSO
conjuncts, dest_disj, list_mk_disj.