- ALG_COVER_EXISTS_UNIQUE
 - 
|- !l. alg_cover_set l ==> !s. ?!x. MEM x l /\ alg_embed x s
 - ALG_COVER_HEAD
 - 
|- !l. alg_cover_set l ==> !f. f o alg_cover l = algebra_embed (FILTER f l)
 - ALG_COVER_SET_BASIC
 - 
|- ~alg_cover_set [] /\ alg_cover_set [[]] /\ alg_cover_set [[T]; [F]]
 - ALG_COVER_SET_CASES
 - 
|- !P.
     P [[]] /\
     (!l1 l2.
        alg_cover_set l1 /\ alg_cover_set l2 /\
        alg_cover_set (APPEND (MAP (CONS T) l1) (MAP (CONS F) l2)) ==>
        P (APPEND (MAP (CONS T) l1) (MAP (CONS F) l2))) ==>
     !l. alg_cover_set l ==> P l
 - ALG_COVER_SET_CASES_THM
 - 
|- !l.
     alg_cover_set l =
     (l = [[]]) \/
     ?l1 l2.
       alg_cover_set l1 /\ alg_cover_set l2 /\
       (l = APPEND (MAP (CONS T) l1) (MAP (CONS F) l2))
 - ALG_COVER_SET_INDUCTION
 - 
|- !P.
     P [[]] /\
     (!l1 l2.
        alg_cover_set l1 /\ alg_cover_set l2 /\ P l1 /\ P l2 /\
        alg_cover_set (APPEND (MAP (CONS T) l1) (MAP (CONS F) l2)) ==>
        P (APPEND (MAP (CONS T) l1) (MAP (CONS F) l2))) ==>
     !l. alg_cover_set l ==> P l
 - ALG_COVER_STEP
 - 
|- !l1 l2 h t.
     alg_cover_set l1 /\ alg_cover_set l2 ==>
     (alg_cover (APPEND (MAP (CONS T) l1) (MAP (CONS F) l2)) (SCONS h t) =
      (if h then T::alg_cover l1 t else F::alg_cover l2 t))
 - ALG_COVER_TAIL_MEASURABLE
 - 
|- !l.
     alg_cover_set l ==>
     !q.
       measurable (q o (\x. SDROP (LENGTH (alg_cover l x)) x)) = measurable q
 - ALG_COVER_TAIL_PROB
 - 
|- !l.
     alg_cover_set l ==>
     !q.
       measurable q ==>
       (prob (q o (\x. SDROP (LENGTH (alg_cover l x)) x)) = prob q)
 - ALG_COVER_TAIL_STEP
 - 
|- !l1 l2 q.
     alg_cover_set l1 /\ alg_cover_set l2 ==>
     (q o
      (\x.
         SDROP
           (LENGTH (alg_cover (APPEND (MAP (CONS T) l1) (MAP (CONS F) l2)) x))
           x) =
      (\x. SHD x = T) INTER
      q o (\x. SDROP (LENGTH (alg_cover l1 x)) x) o STL UNION
      (\x. SHD x = F) INTER q o (\x. SDROP (LENGTH (alg_cover l2 x)) x) o STL)
 - ALG_COVER_UNIQUE
 - 
|- !l x s. alg_cover_set l /\ MEM x l /\ alg_embed x s ==> (alg_cover l s = x)
 - ALG_COVER_UNIV
 - 
|- alg_cover [[]] = K []
 - ALG_COVER_WELL_DEFINED
 - 
|- !l x.
     alg_cover_set l ==> MEM (alg_cover l x) l /\ alg_embed (alg_cover l x) x
 - BIND_STEP
 - 
|- !f. BIND SDEST (\k. f o SCONS k) = f
 - INDEP_BIND
 - 
|- !f g. indep f /\ (!x. indep (g x)) ==> indep (BIND f g)
 - INDEP_BIND_SDEST
 - 
|- !f. (!x. indep (f x)) ==> indep (BIND SDEST f)
 - INDEP_INDEP_SET
 - 
|- !f p q. indep f /\ measurable q ==> indep_set (p o FST o f) (q o SND o f)
 - INDEP_INDEP_SET_LEMMA
 - 
|- !l.
     alg_cover_set l ==>
     !q.
       measurable q ==>
       !x.
         MEM x l ==>
         (prob
            (alg_embed x INTER q o (\x. SDROP (LENGTH (alg_cover l x)) x)) =
          (1 / 2) pow LENGTH x * prob q)
 - INDEP_MEASURABLE1
 - 
|- !f p. indep f ==> measurable (p o FST o f)
 - INDEP_MEASURABLE2
 - 
|- !f q. indep f /\ measurable q ==> measurable (q o SND o f)
 - INDEP_PROB
 - 
|- !f p q.
     indep f /\ measurable q ==>
     (prob (p o FST o f INTER q o SND o f) = prob (p o FST o f) * prob q)
 - INDEP_SDEST
 - 
|- indep SDEST
 - INDEP_SET_BASIC
 - 
|- !p. measurable p ==> indep_set {} p /\ indep_set UNIV p
 - INDEP_SET_DISJOINT_DECOMP
 - 
|- !p q r.
     indep_set p r /\ indep_set q r /\ (p INTER q = {}) ==>
     indep_set (p UNION q) r
 - INDEP_SET_LIST
 - 
|- !q l.
     alg_sorted l /\ alg_prefixfree l /\ measurable q /\
     (!x. MEM x l ==> indep_set (alg_embed x) q) ==>
     indep_set (algebra_embed l) q
 - INDEP_SET_SYM
 - 
|- !p q. indep_set p q = indep_set p q
 - INDEP_UNIT
 - 
|- !x. indep (UNIT x)
 - MAP_CONS_TL_FILTER
 - 
|- !l b.
     ~MEM [] l ==>
     (MAP (CONS b) (MAP TL (FILTER (\x. HD x = b) l)) =
      FILTER (\x. HD x = b) l)
 - PROB_INDEP_BOUND
 - 
|- !f n.
     indep f ==>
     (prob (\s. FST (f s) < SUC n) =
      prob (\s. FST (f s) < n) + prob (\s. FST (f s) = n))