- ASSOC_BAG_UNION
-
|- !b1 b2 b3. BAG_UNION b1 (BAG_UNION b2 b3) = BAG_UNION (BAG_UNION b1 b2) b3
- BAG_CARD_BAG_INN
-
|- !b. FINITE_BAG b ==> !n e. BAG_INN e n b ==> n <= BAG_CARD b
- BAG_CARD_THM
-
|- (BAG_CARD {||} = 0) /\
!b. FINITE_BAG b ==> !e. BAG_CARD (BAG_INSERT e b) = BAG_CARD b + 1
- BAG_cases
-
|- !b. (b = {||}) \/ ?b0 e. b = BAG_INSERT e b0
- BAG_DELETE_11
-
|- !b0 e1 e2 b1 b2.
BAG_DELETE b0 e1 b1 /\ BAG_DELETE b0 e2 b2 ==> ((e1 = e2) = (b1 = b2))
- BAG_DELETE_BAG_IN
-
|- !b0 b e. BAG_DELETE b0 e b ==> BAG_IN e b0
- BAG_DELETE_BAG_IN_down
-
|- !b0 b e1 e2.
BAG_DELETE b0 e1 b /\ ~(e1 = e2) /\ BAG_IN e2 b0 ==> BAG_IN e2 b
- BAG_DELETE_BAG_IN_up
-
|- !b0 b e. BAG_DELETE b0 e b ==> !e'. BAG_IN e' b ==> BAG_IN e' b0
- BAG_DELETE_commutes
-
|- !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
- BAG_DELETE_concrete
-
|- !b0 b e.
BAG_DELETE b0 e b =
b0 e > 0 /\ (b = (\x. (if x = e then b0 e - 1 else b0 x)))
- BAG_DELETE_EMPTY
-
|- !e b. ~BAG_DELETE {||} e b
- BAG_DELETE_INSERT
-
|- !x y b1 b2.
BAG_DELETE (BAG_INSERT x b1) y b2 ==>
(x = y) /\ (b1 = b2) \/ (?b3. BAG_DELETE b1 y b3) /\ ~(x = y)
- BAG_DELETE_PSUB_BAG
-
|- !b0 e b. BAG_DELETE b0 e b ==> PSUB_BAG b b0
- BAG_DELETE_SING
-
|- !b e. BAG_DELETE b e {||} ==> SING_BAG b
- BAG_DELETE_TWICE
-
|- !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
- BAG_delta_eliminate
-
|- (!A BU BD X.
SUB_BAG X A ==>
(BAG_delta (A,BAG_DIFF (BAG_UNION A BU) BD) X =
BAG_DIFF (BAG_UNION X BU) BD)) /\
!A BU BD X.
SUB_BAG X A ==>
(BAG_delta (A,BAG_DIFF (BAG_UNION BU A) BD) X =
BAG_DIFF (BAG_UNION BU X) BD)
- BAG_DIFF_2L
-
|- !X Y Z. BAG_DIFF (BAG_DIFF X Y) Z = BAG_DIFF X (BAG_UNION Y Z)
- BAG_DIFF_2R
-
|- !A B C'.
SUB_BAG C' B ==>
(BAG_DIFF A (BAG_DIFF B C') = BAG_DIFF (BAG_UNION A C') B)
- BAG_DIFF_EMPTY
-
|- (!b. BAG_DIFF b b = {||}) /\ (!b. BAG_DIFF b {||} = b) /\
(!b. BAG_DIFF {||} b = {||}) /\
!b1 b2. SUB_BAG b1 b2 ==> (BAG_DIFF b1 b2 = {||})
- BAG_DIFF_INSERT
-
|- !x b1 b2.
~BAG_IN x b1 ==>
(BAG_DIFF (BAG_INSERT x b2) b1 = BAG_INSERT x (BAG_DIFF b2 b1))
- BAG_DIFF_INSERT_same
-
|- !x b1 b2. BAG_DIFF (BAG_INSERT x b1) (BAG_INSERT x b2) = BAG_DIFF b1 b2
- BAG_DIFF_UNION_eliminate
-
|- !b1 b2 b3.
(BAG_DIFF (BAG_UNION b1 b2) (BAG_UNION b1 b3) = BAG_DIFF b2 b3) /\
(BAG_DIFF (BAG_UNION b1 b2) (BAG_UNION b3 b1) = BAG_DIFF b2 b3) /\
(BAG_DIFF (BAG_UNION b2 b1) (BAG_UNION b1 b3) = BAG_DIFF b2 b3) /\
(BAG_DIFF (BAG_UNION b2 b1) (BAG_UNION b3 b1) = BAG_DIFF b2 b3)
- BAG_DISJOINT_DIFF
-
|- !B1 B2. BAG_DISJOINT (BAG_DIFF B1 B2) (BAG_DIFF B2 B1)
- BAG_DISJOINT_EMPTY
-
|- !b. BAG_DISJOINT b {||} /\ BAG_DISJOINT {||} b
- BAG_EXTENSION
-
|- !b1 b2. (b1 = b2) = !n e. BAG_INN e n b1 = BAG_INN e n b2
- BAG_IN_BAG_DELETE
-
|- !b e. BAG_IN e b ==> ?b'. BAG_DELETE b e b'
- BAG_IN_BAG_INSERT
-
|- !b e1 e2. BAG_IN e1 (BAG_INSERT e2 b) = (e1 = e2) \/ BAG_IN e1 b
- BAG_IN_BAG_UNION
-
|- !b1 b2 e. BAG_IN e (BAG_UNION b1 b2) = BAG_IN e b1 \/ BAG_IN e b2
- BAG_INN_0
-
|- !b e. BAG_INN e 0 b
- BAG_INN_BAG_DELETE
-
|- !b n e. BAG_INN e n b /\ n > 0 ==> ?b'. BAG_DELETE b e b'
- BAG_INN_BAG_INSERT
-
|- !b e1 e2.
BAG_INN e1 n (BAG_INSERT e2 b) =
BAG_INN e1 (n - 1) b /\ (e1 = e2) \/ BAG_INN e1 n b
- BAG_INN_BAG_UNION
-
|- !n e b1 b2.
BAG_INN e n (BAG_UNION b1 b2) =
?m1 m2. (n = m1 + m2) /\ BAG_INN e m1 b1 /\ BAG_INN e m2 b2
- BAG_INN_EMPTY_BAG
-
|- !e n. BAG_INN e n {||} = (n = 0)
- BAG_INN_LESS
-
|- !b e n m. BAG_INN e n b /\ m < n ==> BAG_INN e m b
- BAG_INSERT_commutes
-
|- !b e1 e2. BAG_INSERT e1 (BAG_INSERT e2 b) = BAG_INSERT e2 (BAG_INSERT e1 b)
- BAG_INSERT_DIFF
-
|- !x b. ~(BAG_INSERT x b = b)
- BAG_INSERT_EQ_UNION
-
|- !e b1 b2 b.
(BAG_INSERT e b = BAG_UNION b1 b2) ==> BAG_IN e b1 \/ BAG_IN e b2
- BAG_INSERT_NOT_EMPTY
-
|- !x b. ~(BAG_INSERT x b = {||})
- BAG_INSERT_ONE_ONE
-
|- !b1 b2 x. (BAG_INSERT x b1 = BAG_INSERT x b2) = (b1 = b2)
- BAG_INSERT_UNION
-
|- !b e. BAG_INSERT e b = BAG_UNION (EL_BAG e) b
- BAG_OF_EMPTY
-
|- SET_OF_BAG {||} = {}
- BAG_UNION_DIFF
-
|- !X Y Z.
SUB_BAG Z Y ==>
(BAG_UNION X (BAG_DIFF Y Z) = BAG_DIFF (BAG_UNION X Y) Z) /\
(BAG_UNION (BAG_DIFF Y Z) X = BAG_DIFF (BAG_UNION X Y) Z)
- BAG_UNION_EMPTY
-
|- (!b. BAG_UNION b {||} = b) /\ (!b. BAG_UNION {||} b = b) /\
!b1 b2. (BAG_UNION b1 b2 = {||}) = (b1 = {||}) /\ (b2 = {||})
- BAG_UNION_INSERT
-
|- !e b1 b2.
(BAG_UNION (BAG_INSERT e b1) b2 = BAG_INSERT e (BAG_UNION b1 b2)) /\
(BAG_UNION b1 (BAG_INSERT e b2) = BAG_INSERT e (BAG_UNION b1 b2))
- BAG_UNION_LEFT_CANCEL
-
|- !b b1 b2. (BAG_UNION b b1 = BAG_UNION b b2) = (b1 = b2)
- BCARD_0
-
|- !b. FINITE_BAG b ==> ((BAG_CARD b = 0) = (b = {||}))
- BCARD_SUC
-
|- !b.
FINITE_BAG b ==>
!n.
(BAG_CARD b = SUC n) =
?b0 e. (b = BAG_INSERT e b0) /\ (BAG_CARD b0 = n)
- C_BAG_INSERT_ONE_ONE
-
|- !x y b. (BAG_INSERT x b = BAG_INSERT y b) = (x = y)
- COMM_BAG_UNION
-
|- !b1 b2. BAG_UNION b1 b2 = BAG_UNION b2 b1
- EL_BAG_11
-
|- !x y. (EL_BAG x = EL_BAG y) ==> (x = y)
- EL_BAG_INSERT_squeeze
-
|- !x b y. (EL_BAG x = BAG_INSERT y b) ==> (x = y) /\ (b = {||})
- EMPTY_BAG_alt
-
|- {||} = (\x. 0)
- FINITE_BAG_DIFF
-
|- !b1. FINITE_BAG b1 ==> !b2. FINITE_BAG (BAG_DIFF b1 b2)
- FINITE_BAG_DIFF_dual
-
|- !b1. FINITE_BAG b1 ==> !b2. FINITE_BAG (BAG_DIFF b2 b1) ==> FINITE_BAG b2
- FINITE_BAG_INDUCT
-
|- !P.
P {||} /\ (!b. P b ==> !e. P (BAG_INSERT e b)) ==>
!b. FINITE_BAG b ==> P b
- FINITE_BAG_INSERT
-
|- !b. FINITE_BAG b ==> !e. FINITE_BAG (BAG_INSERT e b)
- FINITE_BAG_THM
-
|- FINITE_BAG {||} /\ !e b. FINITE_BAG (BAG_INSERT e b) = FINITE_BAG b
- FINITE_BAG_UNION
-
|- !b1 b2. FINITE_BAG (BAG_UNION b1 b2) = FINITE_BAG b1 /\ FINITE_BAG b2
- FINITE_EMPTY_BAG
-
|- FINITE_BAG {||}
- FINITE_SUB_BAG
-
|- !b1. FINITE_BAG b1 ==> !b2. SUB_BAG b2 b1 ==> FINITE_BAG b2
- IN_SET_OF_BAG
-
|- !x b. x IN SET_OF_BAG b = BAG_IN x b
- MEMBER_NOT_EMPTY
-
|- !b. (?x. BAG_IN x b) = ~(b = {||})
- move_BAG_UNION_over_eq
-
|- !X Y Z. (BAG_UNION X Y = Z) ==> (X = BAG_DIFF Z Y)
- NOT_IN_BAG_DIFF
-
|- !x b1 b2. ~BAG_IN x b1 ==> (BAG_DIFF b1 (BAG_INSERT x b2) = BAG_DIFF b1 b2)
- NOT_IN_EMPTY_BAG
-
|- !x. ~BAG_IN x {||}
- NOT_IN_SUB_BAG_INSERT
-
|- !b1 b2 e. ~BAG_IN e b1 ==> (SUB_BAG b1 (BAG_INSERT e b2) = SUB_BAG b1 b2)
- PSUB_BAG_ANTISYM
-
|- !b1 b2. ~(PSUB_BAG b1 b2 /\ PSUB_BAG b2 b1)
- PSUB_BAG_IRREFL
-
|- !b. ~PSUB_BAG b b
- PSUB_BAG_NOT_EQ
-
|- !b1 b2. PSUB_BAG b1 b2 ==> ~(b1 = b2)
- PSUB_BAG_SUB_BAG
-
|- !b1 b2. PSUB_BAG b1 b2 ==> SUB_BAG b1 b2
- PSUB_BAG_TRANS
-
|- !b1 b2 b3. PSUB_BAG b1 b2 /\ PSUB_BAG b2 b3 ==> PSUB_BAG b1 b3
- SET_BAG_I
-
|- !s. SET_OF_BAG (BAG_OF_SET s) = s
- SET_OF_BAG_DIFF_SUBSET_down
-
|- !b1 b2. SET_OF_BAG b1 DIFF SET_OF_BAG b2 SUBSET SET_OF_BAG (BAG_DIFF b1 b2)
- SET_OF_BAG_DIFF_SUBSET_up
-
|- !b1 b2. SET_OF_BAG (BAG_DIFF b1 b2) SUBSET SET_OF_BAG b1
- SET_OF_BAG_INSERT
-
|- !e b. SET_OF_BAG (BAG_INSERT e b) = e INSERT SET_OF_BAG b
- SET_OF_BAG_UNION
-
|- !b1 b2. SET_OF_BAG (BAG_UNION b1 b2) = SET_OF_BAG b1 UNION SET_OF_BAG b2
- SET_OF_EL_BAG
-
|- !e. SET_OF_BAG (EL_BAG e) = {e}
- SET_OF_EMPTY
-
|- BAG_OF_SET {} = {||}
- SING_BAG_THM
-
|- !e. SING_BAG {|e|}
- SING_EL_BAG
-
|- !e. SING_BAG (EL_BAG e)
- STRONG_FINITE_BAG_INDUCT
-
|- !P.
P {||} /\ (!b. FINITE_BAG b /\ P b ==> !e. P (BAG_INSERT e b)) ==>
!b. FINITE_BAG b ==> P b
- SUB_BAG_ANTISYM
-
|- !b1 b2. SUB_BAG b1 b2 /\ SUB_BAG b2 b1 ==> (b1 = b2)
- SUB_BAG_BAG_DIFF
-
|- !X Y Y' Z W'.
SUB_BAG (BAG_DIFF X Y) (BAG_DIFF Z W') ==>
SUB_BAG (BAG_DIFF X (BAG_UNION Y Y')) (BAG_DIFF Z (BAG_UNION W' Y'))
- SUB_BAG_BAG_IN
-
|- !x b1 b2. SUB_BAG (BAG_INSERT x b1) b2 ==> BAG_IN x b2
- SUB_BAG_delta
-
|- (!A B0 B. SUB_BAG B0 A ==> SUB_BAG B (BAG_delta (B0,B) A)) /\
!A B0 B. SUB_BAG A B0 ==> SUB_BAG (BAG_delta (B0,B) A) B
- SUB_BAG_DIFF
-
|- (!b1 b2. SUB_BAG b1 b2 ==> !b3. SUB_BAG (BAG_DIFF b1 b3) b2) /\
!b1 b2 b3 b4.
SUB_BAG b2 b1 ==>
SUB_BAG b4 b3 ==>
(SUB_BAG (BAG_DIFF b1 b2) (BAG_DIFF b3 b4) =
SUB_BAG (BAG_UNION b1 b4) (BAG_UNION b2 b3))
- SUB_BAG_EL_BAG
-
|- !e b. SUB_BAG (EL_BAG e) b = BAG_IN e b
- SUB_BAG_EMPTY
-
|- (!b. SUB_BAG {||} b) /\ !b. SUB_BAG b {||} = (b = {||})
- SUB_BAG_EXISTS
-
|- !b1 b2. SUB_BAG b1 b2 = ?b. b2 = BAG_UNION b1 b
- SUB_BAG_INSERT
-
|- !e b1 b2. SUB_BAG (BAG_INSERT e b1) (BAG_INSERT e b2) = SUB_BAG b1 b2
- SUB_BAG_LEQ
-
|- !b1 b2. SUB_BAG b1 b2 = !x. b1 x <= b2 x
- SUB_BAG_PSUB_BAG
-
|- !b1 b2. SUB_BAG b1 b2 = PSUB_BAG b1 b2 \/ (b1 = b2)
- SUB_BAG_REFL
-
|- !b. SUB_BAG b b
- SUB_BAG_SET
-
|- !b1 b2. SUB_BAG b1 b2 ==> SET_OF_BAG b1 SUBSET SET_OF_BAG b2
- SUB_BAG_TRANS
-
|- !b1 b2 b3. SUB_BAG b1 b2 /\ SUB_BAG b2 b3 ==> SUB_BAG b1 b3
- SUB_BAG_UNION
-
|- (!b1 b2. SUB_BAG b1 b2 ==> !b. SUB_BAG b1 (BAG_UNION b2 b)) /\
(!b1 b2. SUB_BAG b1 b2 ==> !b. SUB_BAG b1 (BAG_UNION b b2)) /\
(!b1 b2 b3.
SUB_BAG b1 (BAG_UNION b2 b3) ==>
!b. SUB_BAG b1 (BAG_UNION (BAG_UNION b2 b) b3)) /\
(!b1 b2 b3.
SUB_BAG b1 (BAG_UNION b2 b3) ==>
!b. SUB_BAG b1 (BAG_UNION (BAG_UNION b b2) b3)) /\
(!b1 b2 b3.
SUB_BAG b1 (BAG_UNION b3 b2) ==>
!b. SUB_BAG b1 (BAG_UNION b3 (BAG_UNION b2 b))) /\
(!b1 b2 b3.
SUB_BAG b1 (BAG_UNION b3 b2) ==>
!b. SUB_BAG b1 (BAG_UNION b3 (BAG_UNION b b2))) /\
(!b1 b2 b3 b4.
SUB_BAG b1 b3 ==>
SUB_BAG b2 b4 ==>
SUB_BAG (BAG_UNION b1 b2) (BAG_UNION b3 b4)) /\
(!b1 b2 b3 b4.
SUB_BAG b1 b4 ==>
SUB_BAG b2 b3 ==>
SUB_BAG (BAG_UNION b1 b2) (BAG_UNION b3 b4)) /\
(!b1 b2 b3 b4 b5.
SUB_BAG b1 (BAG_UNION b3 b5) ==>
SUB_BAG b2 b4 ==>
SUB_BAG (BAG_UNION b1 b2) (BAG_UNION (BAG_UNION b3 b4) b5)) /\
(!b1 b2 b3 b4 b5.
SUB_BAG b1 (BAG_UNION b4 b5) ==>
SUB_BAG b2 b3 ==>
SUB_BAG (BAG_UNION b1 b2) (BAG_UNION (BAG_UNION b3 b4) b5)) /\
(!b1 b2 b3 b4 b5.
SUB_BAG b2 (BAG_UNION b3 b5) ==>
SUB_BAG b1 b4 ==>
SUB_BAG (BAG_UNION b1 b2) (BAG_UNION (BAG_UNION b3 b4) b5)) /\
(!b1 b2 b3 b4 b5.
SUB_BAG b2 (BAG_UNION b4 b5) ==>
SUB_BAG b1 b3 ==>
SUB_BAG (BAG_UNION b1 b2) (BAG_UNION (BAG_UNION b3 b4) b5)) /\
(!b1 b2 b3 b4 b5.
SUB_BAG b1 (BAG_UNION b5 b3) ==>
SUB_BAG b2 b4 ==>
SUB_BAG (BAG_UNION b2 b1) (BAG_UNION b5 (BAG_UNION b3 b4))) /\
(!b1 b2 b3 b4 b5.
SUB_BAG b1 (BAG_UNION b5 b4) ==>
SUB_BAG b2 b3 ==>
SUB_BAG (BAG_UNION b2 b1) (BAG_UNION b5 (BAG_UNION b3 b4))) /\
(!b1 b2 b3 b4 b5.
SUB_BAG b2 (BAG_UNION b5 b3) ==>
SUB_BAG b1 b4 ==>
SUB_BAG (BAG_UNION b2 b1) (BAG_UNION b5 (BAG_UNION b3 b4))) /\
(!b1 b2 b3 b4 b5.
SUB_BAG b2 (BAG_UNION b5 b4) ==>
SUB_BAG b1 b3 ==>
SUB_BAG (BAG_UNION b2 b1) (BAG_UNION b5 (BAG_UNION b3 b4))) /\
(!b1 b2 b3 b4 b5.
SUB_BAG (BAG_UNION b1 b2) b4 ==>
SUB_BAG b3 b5 ==>
SUB_BAG (BAG_UNION (BAG_UNION b1 b3) b2) (BAG_UNION b4 b5)) /\
(!b1 b2 b3 b4 b5.
SUB_BAG (BAG_UNION b1 b2) b5 ==>
SUB_BAG b3 b4 ==>
SUB_BAG (BAG_UNION (BAG_UNION b1 b3) b2) (BAG_UNION b4 b5)) /\
(!b1 b2 b3 b4 b5.
SUB_BAG (BAG_UNION b3 b2) b4 ==>
SUB_BAG b1 b5 ==>
SUB_BAG (BAG_UNION (BAG_UNION b1 b3) b2) (BAG_UNION b4 b5)) /\
(!b1 b2 b3 b4 b5.
SUB_BAG (BAG_UNION b3 b2) b5 ==>
SUB_BAG b1 b4 ==>
SUB_BAG (BAG_UNION (BAG_UNION b1 b3) b2) (BAG_UNION b4 b5)) /\
(!b1 b2 b3 b4 b5.
SUB_BAG (BAG_UNION b2 b1) b4 ==>
SUB_BAG b3 b5 ==>
SUB_BAG (BAG_UNION b2 (BAG_UNION b1 b3)) (BAG_UNION b5 b4)) /\
(!b1 b2 b3 b4 b5.
SUB_BAG (BAG_UNION b2 b1) b5 ==>
SUB_BAG b3 b4 ==>
SUB_BAG (BAG_UNION b2 (BAG_UNION b1 b3)) (BAG_UNION b5 b4)) /\
(!b1 b2 b3 b4 b5.
SUB_BAG (BAG_UNION b2 b3) b4 ==>
SUB_BAG b1 b5 ==>
SUB_BAG (BAG_UNION b2 (BAG_UNION b1 b3)) (BAG_UNION b5 b4)) /\
!b1 b2 b3 b4 b5.
SUB_BAG (BAG_UNION b2 b3) b5 ==>
SUB_BAG b1 b4 ==>
SUB_BAG (BAG_UNION b2 (BAG_UNION b1 b3)) (BAG_UNION b5 b4)
- SUB_BAG_UNION_DIFF
-
|- !b1 b2 b3.
SUB_BAG b1 b3 ==>
(SUB_BAG b2 (BAG_DIFF b3 b1) = SUB_BAG (BAG_UNION b1 b2) b3)
- SUB_BAG_UNION_down
-
|- !b1 b2 b3. SUB_BAG (BAG_UNION b1 b2) b3 ==> SUB_BAG b1 b3 /\ SUB_BAG b2 b3
- SUB_BAG_UNION_eliminate
-
|- !b1 b2 b3.
(SUB_BAG (BAG_UNION b1 b2) (BAG_UNION b1 b3) = SUB_BAG b2 b3) /\
(SUB_BAG (BAG_UNION b1 b2) (BAG_UNION b3 b1) = SUB_BAG b2 b3) /\
(SUB_BAG (BAG_UNION b2 b1) (BAG_UNION b1 b3) = SUB_BAG b2 b3) /\
(SUB_BAG (BAG_UNION b2 b1) (BAG_UNION b3 b1) = SUB_BAG b2 b3)