Theory bag

Parents

Contents

Type operators

(none)

Constants

Definitions

BAG_ALL_DISTINCTBAG_CARDBAG_CARD_RELnBAG_CHOICE_DEFBAG_DELETEBAG_DIFFBAG_DISJOINTBAG_EVERYBAG_FILTER_DEFBAG_GEN_PROD_defBAG_GEN_SUM_defBAG_IMAGE_DEFBAG_INBAG_INNBAG_INSERTBAG_INTERBAG_MERGEBAG_OF_SETBAG_REST_DEFBAG_UNIONBIG_BAG_UNION_defEL_BAGEMPTY_BAGFINITE_BAGITBAG_curried_defITBAG_tupled_primitive_defPSUB_BAGSET_OF_BAGSING_BAGSUB_BAGbag_size_defdominates_defmlt1_def

Theorems

ASSOC_BAG_UNIONBAG_ALL_DISTINCT_BAG_INNBAG_ALL_DISTINCT_BAG_MERGEBAG_ALL_DISTINCT_BAG_OF_SETBAG_ALL_DISTINCT_BAG_UNIONBAG_ALL_DISTINCT_DELETEBAG_ALL_DISTINCT_DIFFBAG_ALL_DISTINCT_EXTENSIONBAG_ALL_DISTINCT_SETBAG_ALL_DISTINCT_SUB_BAGBAG_ALL_DISTINCT_THMBAG_CARD_BAG_INNBAG_CARD_BAG_OF_SETBAG_CARD_DIFFBAG_CARD_EMPTYBAG_CARD_EQ_CARD_SET_OF_BAGBAG_CARD_THMBAG_CARD_UNIONBAG_CHOICE_SINGBAG_DECOMPOSEBAG_DELETE_11BAG_DELETE_BAG_INBAG_DELETE_BAG_IN_downBAG_DELETE_BAG_IN_upBAG_DELETE_EMPTYBAG_DELETE_INSERTBAG_DELETE_PSUB_BAGBAG_DELETE_SINGBAG_DELETE_TWICEBAG_DELETE_commutesBAG_DELETE_concreteBAG_DIFF_2LBAG_DIFF_2RBAG_DIFF_EMPTYBAG_DIFF_EMPTY_simpleBAG_DIFF_EQ_EMPTYBAG_DIFF_INSERTBAG_DIFF_INSERT_SUB_BAGBAG_DIFF_INSERT_sameBAG_DIFF_UNION_eliminateBAG_DISJOINT_BAG_INBAG_DISJOINT_BAG_INSERTBAG_DISJOINT_BAG_UNIONBAG_DISJOINT_DIFFBAG_DISJOINT_EMPTYBAG_DISJOINT_FOLDR_BAG_UNIONBAG_DISJOINT_SUB_BAGBAG_DISJOINT_SYMBAG_EVERY_MERGEBAG_EVERY_SETBAG_EVERY_THMBAG_EVERY_UNIONBAG_EXTENSIONBAG_FILTER_BAG_INSERTBAG_FILTER_BAG_OF_SETBAG_FILTER_BAG_UNIONBAG_FILTER_EMPTYBAG_FILTER_EQ_EMPTYBAG_FILTER_FILTERBAG_FILTER_SPLITBAG_FILTER_SUB_BAGBAG_GEN_PROD_ALL_ONESBAG_GEN_PROD_EMPTYBAG_GEN_PROD_EQ_0BAG_GEN_PROD_EQ_1BAG_GEN_PROD_POSITIVEBAG_GEN_PROD_RECBAG_GEN_PROD_TAILRECBAG_GEN_PROD_UNIONBAG_GEN_PROD_UNION_LEMBAG_GEN_SUM_EMPTYBAG_GEN_SUM_RECBAG_GEN_SUM_TAILRECBAG_IMAGE_BAG_OF_SET_ITSET_BAG_INSERTBAG_IMAGE_COMPOSEBAG_IMAGE_CONGBAG_IMAGE_EMPTYBAG_IMAGE_EQ_EMPTYBAG_IMAGE_FINITEBAG_IMAGE_FINITE_IBAG_IMAGE_FINITE_INSERTBAG_IMAGE_FINITE_RESTRICTED_IBAG_IMAGE_FINITE_UNIONBAG_INN_0BAG_INN_BAG_DELETEBAG_INN_BAG_FILTERBAG_INN_BAG_INSERTBAG_INN_BAG_INSERT_STRONGBAG_INN_BAG_MERGEBAG_INN_BAG_UNIONBAG_INN_EMPTY_BAGBAG_INN_LESSBAG_INSERT_CHOICE_RESTBAG_INSERT_DIFFBAG_INSERT_EQUALBAG_INSERT_EQ_MERGE_DIFFBAG_INSERT_EQ_UNIONBAG_INSERT_NOT_EMPTYBAG_INSERT_ONE_ONEBAG_INSERT_SUB_BAG_EBAG_INSERT_UNIONBAG_INSERT_commutesBAG_INTER_FINITEBAG_INTER_SUB_BAGBAG_IN_BAG_DELETEBAG_IN_BAG_DIFF_ALL_DISTINCTBAG_IN_BAG_FILTERBAG_IN_BAG_IMAGE_IMPBAG_IN_BAG_INSERTBAG_IN_BAG_MERGEBAG_IN_BAG_OF_SETBAG_IN_BAG_UNIONBAG_IN_BIG_BAG_UNIONBAG_IN_DIFF_EBAG_IN_DIFF_IBAG_IN_DIVIDESBAG_IN_FINITE_BAG_IMAGEBAG_IN_unibagBAG_LESS_ADDBAG_MEMBER_NOT_EMPTYBAG_MERGE_BAG_INSERTBAG_MERGE_CARDBAG_MERGE_ELBAG_SUB_BAG_INSERTBAG_MERGE_EMPTYBAG_MERGE_EQ_EMPTYBAG_MERGE_IDEMBAG_MERGE_SUB_BAG_UNIONBAG_NOT_LESS_EMPTYBAG_OF_EMPTYBAG_OF_SET_BAG_DIFF_DIFFBAG_OF_SET_DIFFBAG_OF_SET_DISJOINT_UNIONBAG_OF_SET_EQ_EMPTY_BAGBAG_OF_SET_EQ_INSERTBAG_OF_SET_IMAGE_INJBAG_OF_SET_INJBAG_OF_SET_INSERTBAG_OF_SET_INSERT_NON_ELEMENTBAG_OF_SET_UNIONBAG_REST_SINGBAG_SIZE_EMPTYBAG_SIZE_INSERTBAG_UNION_DIFFBAG_UNION_DIFF_eliminateBAG_UNION_EMPTYBAG_UNION_EQ_LCANCEL1BAG_UNION_EQ_LEFTBAG_UNION_EQ_RCANCEL1BAG_UNION_INSERTBAG_UNION_LEFT_CANCELBAG_UNION_RIGHT_CANCELBAG_casesBCARD_0BCARD_SUCBIG_BAG_UNION_DELETEBIG_BAG_UNION_EMPTYBIG_BAG_UNION_EQ_ELEMENTBIG_BAG_UNION_EQ_EMPTY_BAGBIG_BAG_UNION_INSERTBIG_BAG_UNION_ITSET_BAG_UNIONBIG_BAG_UNION_UNIONCOMMUTING_ITBAG_INSERTCOMMUTING_ITBAG_RECURSESCOMM_BAG_UNIONC_BAG_INSERT_ONE_ONEEL_BAG_11EL_BAG_BAG_INSERTEL_BAG_INSERT_squeezeEL_BAG_SUB_BAGEMPTY_BAG_altFINITE_BAG_DIFFFINITE_BAG_DIFF_dualFINITE_BAG_FILTERFINITE_BAG_INDUCTFINITE_BAG_INSERTFINITE_BAG_MERGEFINITE_BAG_OF_SETFINITE_BAG_THMFINITE_BAG_UNIONFINITE_BIG_BAG_UNIONFINITE_EL_BAGFINITE_EMPTY_BAGFINITE_SET_OF_BAGFINITE_SUB_BAGFINITE_SUB_BAGSIN_SET_OF_BAGIN_SET_OF_BAG_NONZEROITBAG_EMPTYITBAG_INDITBAG_INSERTITBAG_SINGITBAG_THMITSET_BAG_INSERT_BAG_UNION_BAG_IMAGE_BAG_OF_SETMONOID_BAG_UNION_EMPTY_BAGNOT_BAG_INNOT_IN_BAG_DIFFNOT_IN_EMPTY_BAGNOT_IN_SUB_BAG_INSERTNOT_mlt_EMPTYPSUB_BAG_ANTISYMPSUB_BAG_CARDPSUB_BAG_IRREFLPSUB_BAG_NOT_EQPSUB_BAG_RESTPSUB_BAG_SUB_BAGPSUB_BAG_TRANSSET_BAG_ISET_OF_BAG_DIFF_SUBSET_downSET_OF_BAG_DIFF_SUBSET_upSET_OF_BAG_EQ_EMPTYSET_OF_BAG_EQ_INSERTSET_OF_BAG_IMAGESET_OF_BAG_INSERTSET_OF_BAG_MERGESET_OF_BAG_SINGSET_OF_BAG_SING_CARDSET_OF_BAG_UNIONSET_OF_EL_BAGSET_OF_EMPTYSET_OF_SINGLETON_BAGSING_BAG_THMSING_EL_BAGSTRONG_FINITE_BAG_INDUCTSUB_BAG_ALL_DISTINCTSUB_BAG_ANTISYMSUB_BAG_BAG_DIFFSUB_BAG_BAG_INSUB_BAG_CARDSUB_BAG_DIFFSUB_BAG_DIFF_EQSUB_BAG_DIFF_simpleSUB_BAG_EL_BAGSUB_BAG_EMPTYSUB_BAG_EXISTSSUB_BAG_INSERTSUB_BAG_INSERT_ISUB_BAG_LEQSUB_BAG_PSUB_BAGSUB_BAG_REFLSUB_BAG_RESTSUB_BAG_SETSUB_BAG_SINGSUB_BAG_TRANSSUB_BAG_UNIONSUB_BAG_UNION_DIFFSUB_BAG_UNION_MONOSUB_BAG_UNION_downSUB_BAG_UNION_eliminateTC_mlt1_FINITE_BAGTC_mlt1_UNION1_ITC_mlt1_UNION2_IWF_mlt1bdominates_BAG_DIFFdominates_DIFFdominates_EMPTYdominates_SUBSETmlt1_INSERT_CANCELmlt1_all_accessiblemltLT_SING0mlt_INSERT_CANCELmlt_INSERT_CANCEL_Imlt_NOT_REFLmlt_UNION_CANCEL_EQNmlt_UNION_EMPTY_EQNmlt_UNION_LCANCELmlt_UNION_LCANCEL_Imlt_UNION_RCANCELmlt_UNION_RCANCEL_Imlt_dominates_thm1mlt_dominates_thm2move_BAG_UNION_over_equnibag_ALL_DISTINCTunibag_DECOMPOSEunibag_EL_MERGE_casesunibag_EQ_BAG_INSERTunibag_FINITEunibag_INSERTunibag_SUB_BAGunibag_UNIONunibag_thm

Definitions

⊢ ∀b. BAG_ALL_DISTINCT b ⇔ ∀e. b e ≤ 1
BAG_CARD
⊢ ∀b. FINITE_BAG b ⇒ BAG_CARD_RELn b (BAG_CARD b)
⊢ ∀b n.
    BAG_CARD_RELn b n ⇔
    ∀P. P {||} 0 ∧ (∀b n. P b n ⇒ ∀e. P (BAG_INSERT e b) (SUC n)) ⇒ P b n
BAG_CHOICE_DEF
⊢ ∀b. b ≠ {||} ⇒ BAG_CHOICE b ⋲ b
⊢ ∀b0 e b. BAG_DELETE b0 e b ⇔ b0 = BAG_INSERT e b
⊢ ∀b1 b2. b1 − b2 = (λx. b1 x − b2 x)
⊢ ∀b1 b2. BAG_DISJOINT b1 b2 ⇔ DISJOINT (SET_OF_BAG b1) (SET_OF_BAG b2)
⊢ ∀P b. BAG_EVERY P b ⇔ ∀e. e ⋲ b ⇒ P e
⊢ ∀P b. BAG_FILTER P b = (λe. if P e then b e else 0)
⊢ ∀bag n. BAG_GEN_PROD bag n = ITBAG $* bag n
⊢ ∀bag n. BAG_GEN_SUM bag n = ITBAG $+ bag n
⊢ ∀f b.
    BAG_IMAGE f b =
    (λe.
         (let
            sb = BAG_FILTER (λe0. f e0 = e) b
          in
            if FINITE_BAG sb then BAG_CARD sb else 1))
⊢ ∀e b. e ⋲ b ⇔ BAG_INN e 1 b
⊢ ∀e n b. BAG_INN e n b ⇔ b e ≥ n
⊢ ∀e b. BAG_INSERT e b = (λx. if x = e then b e + 1 else b x)
⊢ ∀b1 b2. BAG_INTER b1 b2 = (λx. if b1 x < b2 x then b1 x else b2 x)
⊢ ∀b1 b2. BAG_MERGE b1 b2 = (λx. if b1 x < b2 x then b2 x else b1 x)
⊢ ∀P. BAG_OF_SET P = (λx. if x ∈ P then 1 else 0)
⊢ ∀b. BAG_REST b = b − EL_BAG (BAG_CHOICE b)
⊢ ∀b c. b ⊎ c = (λx. b x + c x)
⊢ ∀sob. BIG_BAG_UNION sob = (λx. ∑ (λb. b x) sob)
⊢ ∀e. EL_BAG e = {|e|}
⊢ {||} = K 0
⊢ ∀b. FINITE_BAG b ⇔ ∀P. P {||} ∧ (∀b. P b ⇒ ∀e. P (BAG_INSERT e b)) ⇒ P b
ITBAG_curried_def
⊢ ∀f x x0. ITBAG f x x0 = ITBAG_tupled f (x,x0)
ITBAG_tupled_primitive_def
⊢ ∀f. ITBAG_tupled f =
      WFREC
        (@R. WF R ∧
             ∀acc b.
               FINITE_BAG b ∧ b ≠ {||} ⇒
               R (BAG_REST b,f (BAG_CHOICE b) acc) (b,acc))
        (λITBAG_tupled a.
             case a of
               (b,acc) =>
                 I
                   (if FINITE_BAG b then
                      if b = {||} then acc
                      else ITBAG_tupled (BAG_REST b,f (BAG_CHOICE b) acc)
                    else ARB))
⊢ ∀b1 b2. b1 < b2 ⇔ b1 ≤ b2 ∧ b1 ≠ b2
⊢ ∀b. SET_OF_BAG b = (λx. x ⋲ b)
⊢ ∀b. SING_BAG b ⇔ ∃x. b = {|x|}
⊢ ∀b1 b2. b1 ≤ b2 ⇔ ∀x n. BAG_INN x n b1 ⇒ BAG_INN x n b2
⊢ ∀eltsize b. bag_size eltsize b = ITBAG (λe acc. 1 + eltsize e + acc) b 0
⊢ ∀R s1 s2. dominates R s1 s2 ⇔ ∀x. x ∈ s1 ⇒ ∃y. y ∈ s2 ∧ R x y
⊢ ∀r b1 b2.
    mlt1 r b1 b2 ⇔
    FINITE_BAG b1 ∧ FINITE_BAG b2 ∧
    ∃e rep res. b1 = rep ⊎ res ∧ b2 = res ⊎ {|e|} ∧ ∀e'. e' ⋲ rep ⇒ r e' e

Theorems

⊢ ∀b1 b2 b3. b1 ⊎ (b2 ⊎ b3) = b1 ⊎ b2 ⊎ b3
⊢ ∀b n e. BAG_ALL_DISTINCT b ⇒ (BAG_INN e n b ⇔ n = 0 ∨ n = 1 ∧ e ⋲ b)
⊢ ∀b1 b2.
    BAG_ALL_DISTINCT (BAG_MERGE b1 b2) ⇔
    BAG_ALL_DISTINCT b1 ∧ BAG_ALL_DISTINCT b2
⊢ BAG_ALL_DISTINCT (BAG_OF_SET s)
⊢ ∀b1 b2.
    BAG_ALL_DISTINCT (b1 ⊎ b2) ⇔
    BAG_ALL_DISTINCT b1 ∧ BAG_ALL_DISTINCT b2 ∧ BAG_DISJOINT b1 b2
⊢ BAG_ALL_DISTINCT b ⇔ ∀e. e ⋲ b ⇒ ¬(e ⋲ b − {|e|})
⊢ ∀b1 b2. BAG_ALL_DISTINCT b1 ⇒ BAG_ALL_DISTINCT (b1 − b2)
⊢ ∀b1 b2.
    BAG_ALL_DISTINCT b1 ∧ BAG_ALL_DISTINCT b2 ⇒
    (b1 = b2 ⇔ ∀x. x ⋲ b1 ⇔ x ⋲ b2)
⊢ BAG_ALL_DISTINCT b ⇔ unibag b = b
⊢ ∀s t. s ≤ t ∧ BAG_ALL_DISTINCT t ⇒ BAG_ALL_DISTINCT s
⊢ BAG_ALL_DISTINCT {||} ∧
  ∀e b. BAG_ALL_DISTINCT (BAG_INSERT e b) ⇔ ¬(e ⋲ b) ∧ BAG_ALL_DISTINCT b
⊢ ∀b. FINITE_BAG b ⇒ ∀n e. BAG_INN e n b ⇒ n ≤ BAG_CARD b
⊢ ∀s. FINITE s ⇒ BAG_CARD (BAG_OF_SET s) = CARD s
⊢ ∀b. FINITE_BAG b ⇒ ∀c. c ≤ b ⇒ BAG_CARD (b − c) = BAG_CARD b − BAG_CARD c
⊢ BAG_CARD {||} = 0
⊢ ∀b. FINITE_BAG b ⇒
      (∀e. e ⋲ b ⇒ b e = 1) ⇒
      BAG_CARD b = CARD (SET_OF_BAG b)
⊢ BAG_CARD {||} = 0 ∧
  ∀b. FINITE_BAG b ⇒ ∀e. BAG_CARD (BAG_INSERT e b) = BAG_CARD b + 1
⊢ ∀b1 b2.
    FINITE_BAG b1 ∧ FINITE_BAG b2 ⇒
    BAG_CARD (b1 ⊎ b2) = BAG_CARD b1 + BAG_CARD b2
⊢ BAG_CHOICE {|x|} = x
⊢ ∀e b. e ⋲ b ⇒ ∃b'. b = BAG_INSERT e b'
⊢ ∀b0 e1 e2 b1 b2.
    BAG_DELETE b0 e1 b1 ∧ BAG_DELETE b0 e2 b2 ⇒ (e1 = e2 ⇔ b1 = b2)
⊢ ∀b0 b e. BAG_DELETE b0 e b ⇒ e ⋲ b0
⊢ ∀b0 b e1 e2. BAG_DELETE b0 e1 b ∧ e1 ≠ e2 ∧ e2 ⋲ b0 ⇒ e2 ⋲ b
⊢ ∀b0 b e. BAG_DELETE b0 e b ⇒ ∀e'. e' ⋲ b ⇒ e' ⋲ b0
⊢ ∀e b. ¬BAG_DELETE {||} e b
⊢ ∀x y b1 b2.
    BAG_DELETE (BAG_INSERT x b1) y b2 ⇒
    x = y ∧ b1 = b2 ∨ (∃b3. BAG_DELETE b1 y b3) ∧ x ≠ y
⊢ ∀b0 e b. BAG_DELETE b0 e b ⇒ b < b0
⊢ ∀b e. BAG_DELETE b e {||} ⇒ SING_BAG b
⊢ ∀b0 e1 e2 b1 b2.
    BAG_DELETE b0 e1 b1 ∧ BAG_DELETE b0 e2 b2 ∧ b1 ≠ b2 ⇒
    ∃b. BAG_DELETE b1 e2 b ∧ BAG_DELETE b2 e1 b
⊢ ∀b0 b1 b2 e1 e2.
    BAG_DELETE b0 e1 b1 ∧ BAG_DELETE b1 e2 b2 ⇒
    ∃b'. BAG_DELETE b0 e2 b' ∧ BAG_DELETE b' e1 b2
⊢ ∀b0 b e.
    BAG_DELETE b0 e b ⇔
    b0 e > 0 ∧ b = (λx. if x = e then b0 e − 1 else b0 x)
⊢ ∀X Y Z. X − Y − Z = X − (Y ⊎ Z)
⊢ ∀A B C. C ≤ B ⇒ A − (B − C) = A ⊎ C − B
⊢ (∀b. b − b = {||}) ∧ (∀b. b − {||} = b) ∧ (∀b. {||} − b = {||}) ∧
  ∀b1 b2. b1 ≤ b2 ⇒ b1 − b2 = {||}
⊢ (∀b. b − b = {||}) ∧ (∀b. b − {||} = b) ∧ ∀b. {||} − b = {||}
⊢ b − c = {||} ⇔ b ≤ c
⊢ ∀x b1 b2. ¬(x ⋲ b1) ⇒ BAG_INSERT x b2 − b1 = BAG_INSERT x (b2 − b1)
⊢ c ≤ b ⇒ BAG_INSERT e b − c = BAG_INSERT e (b − c)
⊢ ∀x b1 b2. BAG_INSERT x b1 − BAG_INSERT x b2 = b1 − b2
⊢ ∀b1 b2 b3.
    b1 ⊎ b2 − (b1 ⊎ b3) = b2 − b3 ∧ b1 ⊎ b2 − (b3 ⊎ b1) = b2 − b3 ∧
    b2 ⊎ b1 − (b1 ⊎ b3) = b2 − b3 ∧ b2 ⊎ b1 − (b3 ⊎ b1) = b2 − b3
⊢ ∀b1 b2. BAG_DISJOINT b1 b2 ⇔ ∀e. ¬(e ⋲ b1) ∨ ¬(e ⋲ b2)
⊢ (∀b1 b2 e1.
     BAG_DISJOINT (BAG_INSERT e1 b1) b2 ⇔ ¬(e1 ⋲ b2) ∧ BAG_DISJOINT b1 b2) ∧
  ∀b1 b2 e2.
    BAG_DISJOINT b1 (BAG_INSERT e2 b2) ⇔ ¬(e2 ⋲ b1) ∧ BAG_DISJOINT b1 b2
⊢ (BAG_DISJOINT b1 (b2 ⊎ b3) ⇔ BAG_DISJOINT b1 b2 ∧ BAG_DISJOINT b1 b3) ∧
  (BAG_DISJOINT (b1 ⊎ b2) b3 ⇔ BAG_DISJOINT b1 b3 ∧ BAG_DISJOINT b2 b3)
⊢ ∀B1 B2. BAG_DISJOINT (B1 − B2) (B2 − B1)
⊢ ∀b. BAG_DISJOINT b {||} ∧ BAG_DISJOINT {||} b
⊢ ∀ls b0 b1.
    BAG_DISJOINT b1 (FOLDR $⊎ b0 ls) ⇔ EVERY (BAG_DISJOINT b1) (b0::ls)
⊢ ∀b1 b2 b3. b1 ≤ b2 ∧ BAG_DISJOINT b2 b3 ⇒ BAG_DISJOINT b1 b3
⊢ ∀b1 b2. BAG_DISJOINT b1 b2 ⇔ BAG_DISJOINT b2 b1
⊢ BAG_EVERY P (BAG_MERGE b1 b2) ⇔ BAG_EVERY P b1 ∧ BAG_EVERY P b2
⊢ BAG_EVERY P b ⇔ SET_OF_BAG b ⊆ {x | P x}
⊢ (∀P. BAG_EVERY P {||}) ∧
  ∀P e b. BAG_EVERY P (BAG_INSERT e b) ⇔ P e ∧ BAG_EVERY P b
⊢ BAG_EVERY P (b1 ⊎ b2) ⇔ BAG_EVERY P b1 ∧ BAG_EVERY P b2
⊢ ∀b1 b2. b1 = b2 ⇔ ∀n e. BAG_INN e n b1 ⇔ BAG_INN e n b2
⊢ BAG_FILTER P (BAG_INSERT e b) =
  if P e then BAG_INSERT e (BAG_FILTER P b) else BAG_FILTER P b
⊢ ∀P s. BAG_FILTER P (BAG_OF_SET s) = BAG_OF_SET (s ∩ {x | P x})
⊢ BAG_FILTER P (b1 ⊎ b2) = BAG_FILTER P b1 ⊎ BAG_FILTER P b2
⊢ BAG_FILTER P {||} = {||}
⊢ BAG_FILTER P b = {||} ⇔ BAG_EVERY ($¬ ∘ P) b
⊢ BAG_FILTER P (BAG_FILTER Q b) = BAG_FILTER (λa. P a ∧ Q a) b
⊢ ∀s b. BAG_FILTER s b ⊎ BAG_FILTER (COMPL s) b = b
⊢ ∀P b. BAG_FILTER P b ≤ b
⊢ ∀b. FINITE_BAG b ⇒ BAG_GEN_PROD b 1 = 1 ⇒ ∀x. x ⋲ b ⇒ x = 1
⊢ ∀n. BAG_GEN_PROD {||} n = n
⊢ ∀b. FINITE_BAG b ⇒ ∀e. BAG_GEN_PROD b e = 0 ⇔ 0 ⋲ b ∨ e = 0
⊢ ∀b. FINITE_BAG b ⇒ ∀e. BAG_GEN_PROD b e = 1 ⇒ e = 1
⊢ ∀b. FINITE_BAG b ⇒ (∀x. x ⋲ b ⇒ 0 < x) ⇒ 0 < BAG_GEN_PROD b 1
⊢ ∀b. FINITE_BAG b ⇒
      ∀x a. BAG_GEN_PROD (BAG_INSERT x b) a = x * BAG_GEN_PROD b a
⊢ ∀b. FINITE_BAG b ⇒
      ∀x a. BAG_GEN_PROD (BAG_INSERT x b) a = BAG_GEN_PROD b (x * a)
⊢ ∀b1 b2.
    FINITE_BAG b1 ∧ FINITE_BAG b2 ⇒
    BAG_GEN_PROD (b1 ⊎ b2) 1 = BAG_GEN_PROD b1 1 * BAG_GEN_PROD b2 1
⊢ ∀b1.
    FINITE_BAG b1 ⇒
    ∀b2 a b.
      FINITE_BAG b2 ⇒
      BAG_GEN_PROD (b1 ⊎ b2) (a * b) =
      BAG_GEN_PROD b1 a * BAG_GEN_PROD b2 b
⊢ ∀n. BAG_GEN_SUM {||} n = n
⊢ ∀b. FINITE_BAG b ⇒
      ∀x a. BAG_GEN_SUM (BAG_INSERT x b) a = x + BAG_GEN_SUM b a
⊢ ∀b. FINITE_BAG b ⇒
      ∀x a. BAG_GEN_SUM (BAG_INSERT x b) a = BAG_GEN_SUM b (x + a)
⊢ ∀f s.
    FINITE s ⇒
    BAG_IMAGE f (BAG_OF_SET s) = ITSET (λx b. BAG_INSERT (f x) b) s {||}
⊢ ∀f g b. FINITE_BAG b ⇒ BAG_IMAGE (f ∘ g) b = BAG_IMAGE f (BAG_IMAGE g b)
⊢ ∀f1 b1 f2 b2.
    b1 = b2 ∧ (∀x. x ⋲ b1 ⇒ f1 x = f2 x) ⇒
    BAG_IMAGE f1 b1 = BAG_IMAGE f2 b2
⊢ ∀f. BAG_IMAGE f {||} = {||}
⊢ FINITE_BAG b ⇒ (BAG_IMAGE f b = {||} ⇔ b = {||})
⊢ ∀b. FINITE_BAG b ⇒ FINITE_BAG (BAG_IMAGE f b)
⊢ ∀b. FINITE_BAG b ⇒ BAG_IMAGE I b = b
⊢ ∀b f e.
    FINITE_BAG b ⇒
    BAG_IMAGE f (BAG_INSERT e b) = BAG_INSERT (f e) (BAG_IMAGE f b)
⊢ ∀b. FINITE_BAG b ∧ BAG_EVERY (λe. f e = e) b ⇒ BAG_IMAGE f b = b
⊢ ∀b1 b2 f.
    FINITE_BAG b1 ∧ FINITE_BAG b2 ⇒
    BAG_IMAGE f (b1 ⊎ b2) = BAG_IMAGE f b1 ⊎ BAG_IMAGE f b2
⊢ ∀b e. BAG_INN e 0 b
⊢ ∀b n e. BAG_INN e n b ∧ n > 0 ⇒ ∃b'. BAG_DELETE b e b'
⊢ BAG_INN e n (BAG_FILTER P b) ⇔ n = 0 ∨ P e ∧ BAG_INN e n b
⊢ ∀b e1 e2.
    BAG_INN e1 n (BAG_INSERT e2 b) ⇔
    BAG_INN e1 (n − 1) b ∧ e1 = e2 ∨ BAG_INN e1 n b
⊢ ∀b n e1 e2.
    BAG_INN e1 n (BAG_INSERT e2 b) ⇔
    BAG_INN e1 (n − 1) b ∧ e1 = e2 ∨ BAG_INN e1 n b ∧ e1 ≠ e2
⊢ ∀n e b1 b2.
    BAG_INN e n (BAG_MERGE b1 b2) ⇔ BAG_INN e n b1 ∨ BAG_INN e n b2
⊢ ∀n e b1 b2.
    BAG_INN e n (b1 ⊎ b2) ⇔
    ∃m1 m2. n = m1 + m2 ∧ BAG_INN e m1 b1 ∧ BAG_INN e m2 b2
⊢ ∀e n. BAG_INN e n {||} ⇔ n = 0
⊢ ∀b e n m. BAG_INN e n b ∧ m < n ⇒ BAG_INN e m b
⊢ ∀b. b ≠ {||} ⇒ b = BAG_INSERT (BAG_CHOICE b) (BAG_REST b)
⊢ ∀x b. BAG_INSERT x b ≠ b
⊢ BAG_INSERT a M = BAG_INSERT b N ⇔
  M = N ∧ a = b ∨ ∃k. M = BAG_INSERT b k ∧ N = BAG_INSERT a k
⊢ ∀a b c e.
    BAG_INSERT e a = BAG_MERGE b c ⇒
    BAG_MERGE b c = BAG_INSERT e (BAG_MERGE (b − {|e|}) (c − {|e|}))
⊢ ∀e b1 b2 b. BAG_INSERT e b = b1 ⊎ b2 ⇒ e ⋲ b1 ∨ e ⋲ b2
⊢ ∀x b. BAG_INSERT x b ≠ {||}
⊢ ∀b1 b2 x. BAG_INSERT x b1 = BAG_INSERT x b2 ⇔ b1 = b2
⊢ BAG_INSERT e b ≤ c ⇒ e ⋲ c ∧ b ≤ c
⊢ ∀b e. BAG_INSERT e b = EL_BAG e ⊎ b
⊢ ∀b e1 e2.
    BAG_INSERT e1 (BAG_INSERT e2 b) = BAG_INSERT e2 (BAG_INSERT e1 b)
⊢ FINITE_BAG b1 ∨ FINITE_BAG b2 ⇒ FINITE_BAG (BAG_INTER b1 b2)
⊢ BAG_INTER b1 b2 ≤ b1 ∧ BAG_INTER b1 b2 ≤ b2
⊢ ∀b e. e ⋲ b ⇒ ∃b'. BAG_DELETE b e b'
⊢ ∀b1 b2 e. BAG_ALL_DISTINCT b1 ⇒ (e ⋲ b1 − b2 ⇔ e ⋲ b1 ∧ ¬(e ⋲ b2))
⊢ e ⋲ BAG_FILTER P b ⇔ P e ∧ e ⋲ b
⊢ ∀x f b. x ⋲ BAG_IMAGE f b ⇒ ∃y. y ⋲ b ∧ f y = x
⊢ ∀b e1 e2. e1 ⋲ BAG_INSERT e2 b ⇔ e1 = e2 ∨ e1 ⋲ b
⊢ ∀e b1 b2. e ⋲ BAG_MERGE b1 b2 ⇔ e ⋲ b1 ∨ e ⋲ b2
⊢ ∀P p. p ⋲ BAG_OF_SET P ⇔ p ∈ P
⊢ ∀b1 b2 e. e ⋲ b1 ⊎ b2 ⇔ e ⋲ b1 ∨ e ⋲ b2
⊢ FINITE P ⇒ (e ⋲ BIG_BAG_UNION P ⇔ ∃b. e ⋲ b ∧ b ∈ P)
⊢ e ⋲ b1 − b2 ⇒ e ⋲ b1
⊢ e ⋲ b1 ∧ ¬(e ⋲ b2) ⇒ e ⋲ b1 − b2
⊢ ∀b x a. FINITE_BAG b ∧ x ⋲ b ⇒ divides x (BAG_GEN_PROD b a)
⊢ FINITE_BAG b ⇒ (x ⋲ BAG_IMAGE f b ⇔ ∃y. f y = x ∧ y ⋲ b)
⊢ ∀e b. e ⋲ unibag b ⇔ e ⋲ b
⊢ mlt1 r N (M0 ⊎ {|a|}) ⇒
  (∃M. mlt1 r M M0 ∧ N = M ⊎ {|a|}) ∨
  ∃KK. (∀b. b ⋲ KK ⇒ r b a) ∧ N = M0 ⊎ KK
⊢ ∀b. (∃x. x ⋲ b) ⇔ b ≠ {||}
⊢ ∀e a b.
    (a e ≤ b e ⇒
     BAG_MERGE a (BAG_INSERT e b) = BAG_INSERT e (BAG_MERGE a b)) ∧
    (b e < a e ⇒ BAG_MERGE a (BAG_INSERT e b) = BAG_MERGE a b) ∧
    (a e < b e ⇒ BAG_MERGE (BAG_INSERT e a) b = BAG_MERGE a b) ∧
    (b e ≤ a e ⇒
     BAG_MERGE (BAG_INSERT e a) b = BAG_INSERT e (BAG_MERGE a b)) ∧
    (a e = b e ⇒
     BAG_MERGE (BAG_INSERT e a) (BAG_INSERT e b) =
     BAG_INSERT e (BAG_MERGE a b))
⊢ ∀a b.
    FINITE_BAG a ∧ FINITE_BAG b ⇒
    BAG_CARD (BAG_MERGE a b) ≤ BAG_CARD a + BAG_CARD b
⊢ ∀A b. BAG_MERGE {|A|} b ≤ BAG_INSERT A b
⊢ ∀b. BAG_MERGE {||} b = b ∧ BAG_MERGE b {||} = b
⊢ ∀a b. BAG_MERGE a b = {||} ⇔ a = {||} ∧ b = {||}
⊢ ∀b. BAG_MERGE b b = b
⊢ ∀s t. BAG_MERGE s t ≤ s ⊎ t
⊢ ¬mlt1 r b {||}
⊢ SET_OF_BAG {||} = ∅
⊢ ∀b s. BAG_OF_SET s − b = BAG_OF_SET (s DIFF SET_OF_BAG b)
⊢ ∀b b'. BAG_OF_SET (b DIFF b') = BAG_FILTER (COMPL b') (BAG_OF_SET b)
⊢ ∀s1 s2.
    DISJOINT s1 s2 ⇒ BAG_OF_SET (s1 ∪ s2) = BAG_OF_SET s1 ⊎ BAG_OF_SET s2
⊢ BAG_OF_SET s = {||} ⇔ s = ∅
⊢ ∀e b s. BAG_INSERT e b = BAG_OF_SET s ⇒ ∃s'. s = e INSERT s'
⊢ ∀f s.
    (∀x y. x ∈ s ∧ y ∈ s ∧ f x = f y ⇒ x = y) ⇒
    BAG_OF_SET (IMAGE f s) = BAG_IMAGE f (BAG_OF_SET s)
⊢ ∀s1 s2. BAG_OF_SET s1 = BAG_OF_SET s2 ⇔ s1 = s2
⊢ ∀e s. BAG_OF_SET (e INSERT s) = BAG_MERGE {|e|} (BAG_OF_SET s)
⊢ ∀e s. e ∉ s ⇒ BAG_OF_SET (e INSERT s) = BAG_INSERT e (BAG_OF_SET s)
⊢ ∀b b'. BAG_OF_SET (b ∪ b') = BAG_MERGE (BAG_OF_SET b) (BAG_OF_SET b')
⊢ BAG_REST {|x|} = {||}
⊢ bag_size eltsize {||} = 0
⊢ FINITE_BAG b ⇒
  bag_size eltsize (BAG_INSERT e b) = 1 + eltsize e + bag_size eltsize b
⊢ ∀X Y Z. Z ≤ Y ⇒ X ⊎ (Y − Z) = X ⊎ Y − Z ∧ Y − Z ⊎ X = X ⊎ Y − Z
⊢ b ⊎ c − c = b ∧ c ⊎ b − c = b
⊢ (∀b. b ⊎ {||} = b) ∧ (∀b. {||} ⊎ b = b) ∧
  ∀b1 b2. b1 ⊎ b2 = {||} ⇔ b1 = {||} ∧ b2 = {||}
⊢ b = b ⊎ c ⇔ c = {||}
⊢ ∀b c d. b ⊎ c = b ⊎ d ⇒ c = d
⊢ b = c ⊎ b ⇔ c = {||}
⊢ ∀e b1 b2.
    BAG_INSERT e b1 ⊎ b2 = BAG_INSERT e (b1 ⊎ b2) ∧
    b1 ⊎ BAG_INSERT e b2 = BAG_INSERT e (b1 ⊎ b2)
⊢ ∀b b1 b2. b ⊎ b1 = b ⊎ b2 ⇔ b1 = b2
⊢ ∀b b1 b2. b1 ⊎ b = b2 ⊎ b ⇔ b1 = b2
⊢ ∀b. b = {||} ∨ ∃b0 e. b = BAG_INSERT e b0
⊢ ∀b. FINITE_BAG b ⇒ (BAG_CARD b = 0 ⇔ b = {||})
⊢ ∀b. FINITE_BAG b ⇒
      ∀n. BAG_CARD b = SUC n ⇔ ∃b0 e. b = BAG_INSERT e b0 ∧ BAG_CARD b0 = n
⊢ FINITE sob ⇒
  BIG_BAG_UNION (sob DELETE b) =
  if b ∈ sob then BIG_BAG_UNION sob − b else BIG_BAG_UNION sob
⊢ BIG_BAG_UNION ∅ = {||}
⊢ FINITE sob ∧ b ∈ sob ⇒
  (BIG_BAG_UNION sob = b ⇔ ∀b'. b' ∈ sob ⇒ b' = b ∨ b' = {||})
⊢ ∀sob. FINITE sob ⇒ (BIG_BAG_UNION sob = {||} ⇔ ∀b. b ∈ sob ⇒ b = {||})
⊢ FINITE sob ⇒
  BIG_BAG_UNION (b INSERT sob) = b ⊎ BIG_BAG_UNION (sob DELETE b)
⊢ ∀sob. FINITE sob ⇒ BIG_BAG_UNION sob = ITSET $⊎ sob {||}
⊢ FINITE s1 ∧ FINITE s2 ⇒
  BIG_BAG_UNION (s1 ∪ s2) =
  BIG_BAG_UNION s1 ⊎ BIG_BAG_UNION s2 − BIG_BAG_UNION (s1 ∩ s2)
⊢ ∀f b.
    (∀x y z. f x (f y z) = f y (f x z)) ∧ FINITE_BAG b ⇒
    ∀x a. ITBAG f (BAG_INSERT x b) a = ITBAG f b (f x a)
⊢ ∀f e b a.
    (∀x y z. f x (f y z) = f y (f x z)) ∧ FINITE_BAG b ⇒
    ITBAG f (BAG_INSERT e b) a = f e (ITBAG f b a)
⊢ ∀b1 b2. b1 ⊎ b2 = b2 ⊎ b1
⊢ ∀x y b. BAG_INSERT x b = BAG_INSERT y b ⇔ x = y
⊢ ∀x y. EL_BAG x = EL_BAG y ⇒ x = y
⊢ {|x|} = BAG_INSERT y b ⇔ x = y ∧ b = {||}
⊢ ∀x b y. EL_BAG x = BAG_INSERT y b ⇒ x = y ∧ b = {||}
⊢ {|x|} ≤ b ⇔ x ⋲ b
⊢ {||} = (λx. 0)
⊢ ∀b1. FINITE_BAG b1 ⇒ ∀b2. FINITE_BAG (b1 − b2)
⊢ ∀b1. FINITE_BAG b1 ⇒ ∀b2. FINITE_BAG (b2 − b1) ⇒ FINITE_BAG b2
⊢ ∀b. FINITE_BAG b ⇒ FINITE_BAG (BAG_FILTER P b)
⊢ ∀P. P {||} ∧ (∀b. P b ⇒ ∀e. P (BAG_INSERT e b)) ⇒ ∀b. FINITE_BAG b ⇒ P b
⊢ ∀b. FINITE_BAG b ⇒ ∀e. FINITE_BAG (BAG_INSERT e b)
⊢ ∀a b. FINITE_BAG (BAG_MERGE a b) ⇔ FINITE_BAG a ∧ FINITE_BAG b
⊢ ∀s. FINITE_BAG (BAG_OF_SET s) ⇔ FINITE s
⊢ FINITE_BAG {||} ∧ ∀e b. FINITE_BAG (BAG_INSERT e b) ⇔ FINITE_BAG b
⊢ ∀b1 b2. FINITE_BAG (b1 ⊎ b2) ⇔ FINITE_BAG b1 ∧ FINITE_BAG b2
⊢ ∀sob.
    FINITE sob ∧ (∀b. b ∈ sob ⇒ FINITE_BAG b) ⇒
    FINITE_BAG (BIG_BAG_UNION sob)
⊢ FINITE_BAG (EL_BAG e)
⊢ FINITE_BAG {||}
⊢ ∀b. FINITE (SET_OF_BAG b) ⇔ FINITE_BAG b
⊢ ∀b1. FINITE_BAG b1 ⇒ ∀b2. b2 ≤ b1 ⇒ FINITE_BAG b2
⊢ ∀b. FINITE_BAG b ⇒ FINITE {s | s ≤ b}
⊢ ∀x b. x ∈ SET_OF_BAG b ⇔ x ⋲ b
⊢ ∀b x. x ∈ SET_OF_BAG b ⇔ b x ≠ 0
⊢ ∀f acc. ITBAG f {||} acc = acc
⊢ ∀P. (∀b acc.
         (FINITE_BAG b ∧ b ≠ {||} ⇒ P (BAG_REST b) (f (BAG_CHOICE b) acc)) ⇒
         P b acc) ⇒
      ∀v v1. P v v1
⊢ ∀f acc.
    FINITE_BAG b ⇒
    ITBAG f (BAG_INSERT x b) acc =
    ITBAG f (BAG_REST (BAG_INSERT x b))
      (f (BAG_CHOICE (BAG_INSERT x b)) acc)
⊢ ITBAG f {|x|} a = f x a
⊢ ∀b f acc.
    FINITE_BAG b ⇒
    ITBAG f b acc =
    if b = {||} then acc else ITBAG f (BAG_REST b) (f (BAG_CHOICE b) acc)
⊢ ∀f s.
    FINITE s ⇒
    ∀a. ITSET (λx b. BAG_INSERT (f x) b) s a =
        a ⊎ BAG_IMAGE f (BAG_OF_SET s)
⊢ MONOID $⊎ {||}
⊢ ∀b x. b x = 0 ⇔ ¬(x ⋲ b)
⊢ ∀x b1 b2. ¬(x ⋲ b1) ⇒ b1 − BAG_INSERT x b2 = b1 − b2
⊢ ∀x. ¬(x ⋲ {||})
⊢ ∀b1 b2 e. ¬(e ⋲ b1) ⇒ (b1 ≤ BAG_INSERT e b2 ⇔ b1 ≤ b2)
⊢ ¬mlt R b {||}
⊢ ∀b1 b2. ¬(b1 < b2 ∧ b2 < b1)
⊢ ∀b1 b2. FINITE_BAG b2 ∧ b1 < b2 ⇒ BAG_CARD b1 < BAG_CARD b2
⊢ ∀b. ¬(b < b)
⊢ ∀b1 b2. b1 < b2 ⇒ b1 ≠ b2
⊢ ∀b. b ≠ {||} ⇒ BAG_REST b < b
⊢ ∀b1 b2. b1 < b2 ⇒ b1 ≤ b2
⊢ ∀b1 b2 b3. b1 < b2 ∧ b2 < b3 ⇒ b1 < b3
⊢ ∀s. SET_OF_BAG (BAG_OF_SET s) = s
⊢ ∀b1 b2. SET_OF_BAG b1 DIFF SET_OF_BAG b2 ⊆ SET_OF_BAG (b1 − b2)
⊢ ∀b1 b2. SET_OF_BAG (b1 − b2) ⊆ SET_OF_BAG b1
⊢ ∀b. (∅ = SET_OF_BAG b ⇔ b = {||}) ∧ (SET_OF_BAG b = ∅ ⇔ b = {||})
⊢ ∀b e s.
    e INSERT s = SET_OF_BAG b ⇔
    ∃b0 eb.
      b = eb ⊎ b0 ∧ s = SET_OF_BAG b0 ∧ (∀e'. e' ⋲ eb ⇒ e' = e) ∧
      (e ∉ s ⇒ e ⋲ eb)
⊢ SET_OF_BAG (BAG_IMAGE f b) = IMAGE f (SET_OF_BAG b)
⊢ ∀e b. SET_OF_BAG (BAG_INSERT e b) = e INSERT SET_OF_BAG b
⊢ ∀b1 b2. SET_OF_BAG (BAG_MERGE b1 b2) = SET_OF_BAG b1 ∪ SET_OF_BAG b2
⊢ ∀b e. SET_OF_BAG b = {e} ⇔ ∃n. 0 < n ∧ b = (λx. if x = e then n else 0)
⊢ ∀b e. SET_OF_BAG b = {e} ⇒ BAG_CARD b = b e
⊢ ∀b1 b2. SET_OF_BAG (b1 ⊎ b2) = SET_OF_BAG b1 ∪ SET_OF_BAG b2
⊢ ∀e. SET_OF_BAG (EL_BAG e) = {e}
⊢ BAG_OF_SET ∅ = {||}
⊢ ∀e. SET_OF_BAG {|e|} = {e}
⊢ ∀e. SING_BAG {|e|}
⊢ ∀e. SING_BAG (EL_BAG e)
⊢ ∀P. P {||} ∧ (∀b. FINITE_BAG b ∧ P b ⇒ ∀e. P (BAG_INSERT e b)) ⇒
      ∀b. FINITE_BAG b ⇒ P b
⊢ ∀b1 b2. BAG_ALL_DISTINCT b1 ⇒ (b1 ≤ b2 ⇔ ∀x. x ⋲ b1 ⇒ x ⋲ b2)
⊢ ∀b1 b2. b1 ≤ b2 ∧ b2 ≤ b1 ⇒ b1 = b2
⊢ ∀X Y Y' Z W. X − Y ≤ Z − W ⇒ X − (Y ⊎ Y') ≤ Z − (W ⊎ Y')
⊢ ∀x b1 b2. BAG_INSERT x b1 ≤ b2 ⇒ x ⋲ b2
⊢ ∀b1 b2. FINITE_BAG b2 ∧ b1 ≤ b2 ⇒ BAG_CARD b1 ≤ BAG_CARD b2
⊢ (∀b1 b2. b1 ≤ b2 ⇒ ∀b3. b1 − b3 ≤ b2) ∧
  ∀b1 b2 b3 b4. b2 ≤ b1 ⇒ b4 ≤ b3 ⇒ (b1 − b2 ≤ b3 − b4 ⇔ b1 ⊎ b4 ≤ b2 ⊎ b3)
⊢ ∀b1 b2. b1 ≤ b2 ⇒ b2 = b1 ⊎ (b2 − b1)
⊢ b − c ≤ b
⊢ ∀e b. EL_BAG e ≤ b ⇔ e ⋲ b
⊢ (∀b. {||} ≤ b) ∧ ∀b. b ≤ {||} ⇔ b = {||}
⊢ ∀b1 b2. b1 ≤ b2 ⇔ ∃b. b2 = b1 ⊎ b
⊢ ∀e b1 b2. BAG_INSERT e b1 ≤ BAG_INSERT e b2 ⇔ b1 ≤ b2
⊢ ∀b c e. b ≤ c ⇒ b ≤ BAG_INSERT e c
⊢ b1 ≤ b2 ⇔ ∀x. b1 x ≤ b2 x
⊢ ∀b1 b2. (b1 ≤ b2 ⇔ b1 < b2) ∨ b1 = b2
⊢ ∀b. b ≤ b
⊢ ∀b. BAG_REST b ≤ b
⊢ ∀b1 b2. b1 ≤ b2 ⇒ SET_OF_BAG b1 ⊆ SET_OF_BAG b2
⊢ b ≤ {|e|} ⇔ b = {||} ∨ b = {|e|}
⊢ ∀b1 b2 b3. b1 ≤ b2 ∧ b2 ≤ b3 ⇒ b1 ≤ b3
⊢ (∀b1 b2. b1 ≤ b2 ⇒ ∀b. b1 ≤ b2 ⊎ b) ∧
  (∀b1 b2. b1 ≤ b2 ⇒ ∀b. b1 ≤ b ⊎ b2) ∧
  (∀b1 b2 b3. b1 ≤ b2 ⊎ b3 ⇒ ∀b. b1 ≤ b2 ⊎ b ⊎ b3) ∧
  (∀b1 b2 b3. b1 ≤ b2 ⊎ b3 ⇒ ∀b. b1 ≤ b ⊎ b2 ⊎ b3) ∧
  (∀b1 b2 b3. b1 ≤ b3 ⊎ b2 ⇒ ∀b. b1 ≤ b3 ⊎ (b2 ⊎ b)) ∧
  (∀b1 b2 b3. b1 ≤ b3 ⊎ b2 ⇒ ∀b. b1 ≤ b3 ⊎ (b ⊎ b2)) ∧
  (∀b1 b2 b3 b4. b1 ≤ b3 ⇒ b2 ≤ b4 ⇒ b1 ⊎ b2 ≤ b3 ⊎ b4) ∧
  (∀b1 b2 b3 b4. b1 ≤ b4 ⇒ b2 ≤ b3 ⇒ b1 ⊎ b2 ≤ b3 ⊎ b4) ∧
  (∀b1 b2 b3 b4 b5. b1 ≤ b3 ⊎ b5 ⇒ b2 ≤ b4 ⇒ b1 ⊎ b2 ≤ b3 ⊎ b4 ⊎ b5) ∧
  (∀b1 b2 b3 b4 b5. b1 ≤ b4 ⊎ b5 ⇒ b2 ≤ b3 ⇒ b1 ⊎ b2 ≤ b3 ⊎ b4 ⊎ b5) ∧
  (∀b1 b2 b3 b4 b5. b2 ≤ b3 ⊎ b5 ⇒ b1 ≤ b4 ⇒ b1 ⊎ b2 ≤ b3 ⊎ b4 ⊎ b5) ∧
  (∀b1 b2 b3 b4 b5. b2 ≤ b4 ⊎ b5 ⇒ b1 ≤ b3 ⇒ b1 ⊎ b2 ≤ b3 ⊎ b4 ⊎ b5) ∧
  (∀b1 b2 b3 b4 b5. b1 ≤ b5 ⊎ b3 ⇒ b2 ≤ b4 ⇒ b2 ⊎ b1 ≤ b5 ⊎ (b3 ⊎ b4)) ∧
  (∀b1 b2 b3 b4 b5. b1 ≤ b5 ⊎ b4 ⇒ b2 ≤ b3 ⇒ b2 ⊎ b1 ≤ b5 ⊎ (b3 ⊎ b4)) ∧
  (∀b1 b2 b3 b4 b5. b2 ≤ b5 ⊎ b3 ⇒ b1 ≤ b4 ⇒ b2 ⊎ b1 ≤ b5 ⊎ (b3 ⊎ b4)) ∧
  (∀b1 b2 b3 b4 b5. b2 ≤ b5 ⊎ b4 ⇒ b1 ≤ b3 ⇒ b2 ⊎ b1 ≤ b5 ⊎ (b3 ⊎ b4)) ∧
  (∀b1 b2 b3 b4 b5. b1 ⊎ b2 ≤ b4 ⇒ b3 ≤ b5 ⇒ b1 ⊎ b3 ⊎ b2 ≤ b4 ⊎ b5) ∧
  (∀b1 b2 b3 b4 b5. b1 ⊎ b2 ≤ b5 ⇒ b3 ≤ b4 ⇒ b1 ⊎ b3 ⊎ b2 ≤ b4 ⊎ b5) ∧
  (∀b1 b2 b3 b4 b5. b3 ⊎ b2 ≤ b4 ⇒ b1 ≤ b5 ⇒ b1 ⊎ b3 ⊎ b2 ≤ b4 ⊎ b5) ∧
  (∀b1 b2 b3 b4 b5. b3 ⊎ b2 ≤ b5 ⇒ b1 ≤ b4 ⇒ b1 ⊎ b3 ⊎ b2 ≤ b4 ⊎ b5) ∧
  (∀b1 b2 b3 b4 b5. b2 ⊎ b1 ≤ b4 ⇒ b3 ≤ b5 ⇒ b2 ⊎ (b1 ⊎ b3) ≤ b5 ⊎ b4) ∧
  (∀b1 b2 b3 b4 b5. b2 ⊎ b1 ≤ b5 ⇒ b3 ≤ b4 ⇒ b2 ⊎ (b1 ⊎ b3) ≤ b5 ⊎ b4) ∧
  (∀b1 b2 b3 b4 b5. b2 ⊎ b3 ≤ b4 ⇒ b1 ≤ b5 ⇒ b2 ⊎ (b1 ⊎ b3) ≤ b5 ⊎ b4) ∧
  ∀b1 b2 b3 b4 b5. b2 ⊎ b3 ≤ b5 ⇒ b1 ≤ b4 ⇒ b2 ⊎ (b1 ⊎ b3) ≤ b5 ⊎ b4
⊢ ∀b1 b2 b3. b1 ≤ b3 ⇒ (b2 ≤ b3 − b1 ⇔ b1 ⊎ b2 ≤ b3)
⊢ (∀x y. x ≤ x ⊎ y) ∧ ∀x y. x ≤ y ⊎ x
⊢ ∀b1 b2 b3. b1 ⊎ b2 ≤ b3 ⇒ b1 ≤ b3 ∧ b2 ≤ b3
⊢ ∀b1 b2 b3.
    (b1 ⊎ b2 ≤ b1 ⊎ b3 ⇔ b2 ≤ b3) ∧ (b1 ⊎ b2 ≤ b3 ⊎ b1 ⇔ b2 ≤ b3) ∧
    (b2 ⊎ b1 ≤ b1 ⊎ b3 ⇔ b2 ≤ b3) ∧ (b2 ⊎ b1 ≤ b3 ⊎ b1 ⇔ b2 ≤ b3)
⊢ ∀b1 b2. mlt R b1 b2 ⇒ FINITE_BAG b1 ∧ FINITE_BAG b2
⊢ ∀b2 b1. FINITE_BAG b2 ∧ FINITE_BAG b1 ∧ b1 ≠ {||} ⇒ mlt R b2 (b1 ⊎ b2)
⊢ ∀b2 b1. FINITE_BAG b2 ∧ FINITE_BAG b1 ∧ b2 ≠ {||} ⇒ mlt R b1 (b1 ⊎ b2)
⊢ WF R ⇒ WF (mlt1 R)
⊢ WF R ∧ transitive R ∧ bdominates R x y ∧ FINITE_BAG i ∧ i ≤ x ∧ i ≤ y ⇒
  bdominates R (x − i) (y − i)
⊢ WF R ∧ transitive R ∧ dominates R x y ∧ FINITE i ∧ i ⊆ x ∧ i ⊆ y ⇒
  dominates R (x DIFF i) (y DIFF i)
⊢ dominates R ∅ b
⊢ transitive R ∧ FINITE Y ∧ dominates R Y X ∧ X ⊆ Y ∧ X ≠ ∅ ⇒
  ∃x. x ∈ X ∧ R x x
⊢ WF R ⇒ (mlt1 R (BAG_INSERT e a) (BAG_INSERT e b) ⇔ mlt1 R a b)
⊢ WF R ⇒ ∀M. WFP (mlt1 R) M
⊢ mlt $< {|0|} b ⇔ FINITE_BAG b ∧ b ≠ {|0|} ∧ b ≠ {||}
⊢ transitive R ∧ WF R ⇒
  (mlt R (BAG_INSERT e a) (BAG_INSERT e b) ⇔ mlt R a b)
⊢ ∀a b. mlt R a b ⇒ mlt R (BAG_INSERT e a) (BAG_INSERT e b)
⊢ WF R ⇒ ¬mlt R a a
⊢ WF R ⇒
  (mlt R b1 (b1 ⊎ b2) ⇔ FINITE_BAG b1 ∧ FINITE_BAG b2 ∧ b2 ≠ {||}) ∧
  (mlt R b1 (b2 ⊎ b1) ⇔ FINITE_BAG b1 ∧ FINITE_BAG b2 ∧ b2 ≠ {||})
⊢ T
⊢ WF R ∧ transitive R ⇒ (mlt R (c ⊎ a) (c ⊎ b) ⇔ mlt R a b ∧ FINITE_BAG c)
⊢ mlt R a b ∧ FINITE_BAG c ⇒ mlt R (c ⊎ a) (c ⊎ b)
⊢ WF R ∧ transitive R ⇒ (mlt R (a ⊎ c) (b ⊎ c) ⇔ mlt R a b ∧ FINITE_BAG c)
⊢ mlt R a b ∧ FINITE_BAG c ⇒ mlt R (a ⊎ c) (b ⊎ c)
⊢ transitive R ⇒
  ∀b1 b2.
    mlt R b1 b2 ⇔
    FINITE_BAG b1 ∧ FINITE_BAG b2 ∧
    ∃x y. x ≠ {||} ∧ x ≤ b2 ∧ b1 = b2 − x ⊎ y ∧ bdominates R y x
⊢ WF R ∧ transitive R ⇒
  ∀b1 b2.
    mlt R b1 b2 ⇔
    FINITE_BAG b1 ∧ FINITE_BAG b2 ∧
    ∃x y.
      x ≠ {||} ∧ x ≤ b2 ∧ BAG_DISJOINT x y ∧ b1 = b2 − x ⊎ y ∧
      bdominates R y x
⊢ ∀X Y Z. X ⊎ Y = Z ⇒ X = Z − Y
⊢ ∀b. BAG_ALL_DISTINCT (unibag b)
⊢ unibag g ≠ g ⇒ ∃A g0. g = {|A; A|} ⊎ g0
⊢ ∀e b.
    (e ⋲ b ⇒ BAG_MERGE {|e|} (unibag b) = unibag b) ∧
    (¬(e ⋲ b) ⇒ BAG_MERGE {|e|} (unibag b) = BAG_INSERT e (unibag b))
⊢ ∀e b b'. unibag b = BAG_INSERT e b' ⇒ ∃c. b' = unibag c
⊢ ∀b. FINITE_BAG (unibag b) ⇔ FINITE_BAG b
⊢ ∀a b. unibag (BAG_INSERT a b) = BAG_MERGE {|a|} (unibag b)
⊢ ∀b. unibag b ≤ b
⊢ ∀a b. unibag (a ⊎ b) = BAG_MERGE (unibag a) (unibag b)
⊢ (∀P. BAG_OF_SET P = (λx. if x ∈ P then 1 else 0)) ∧
  ∀b. SET_OF_BAG b = (λx. x ⋲ b)