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
⊢ ∀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
⊢ ∀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 = {||}
⊢ ∀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 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 ∧ ¬(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 = {||}
⊢ ∀s t. BAG_MERGE s t ≤ s ⊎ t
⊢ ∀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_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 c d. b ⊎ c = b ⊎ d ⇒ c = d
⊢ ∀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
⊢ 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 = {||}
⊢ ∀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)
⊢ ∀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)
⊢ ∀b x. b x = 0 ⇔ ¬(x ⋲ b)
⊢ ∀x b1 b2. ¬(x ⋲ b1) ⇒ b1 − BAG_INSERT x b2 = b1 − b2
⊢ ∀b1 b2 e. ¬(e ⋲ b1) ⇒ (b1 ≤ BAG_INSERT e b2 ⇔ b1 ≤ b2)
⊢ ∀b1 b2. ¬(b1 < b2 ∧ b2 < b1)
⊢ ∀b1 b2. FINITE_BAG b2 ∧ b1 < b2 ⇒ BAG_CARD b1 < BAG_CARD b2
⊢ ∀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}
⊢ ∀e. SET_OF_BAG {|e|} = {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)
⊢ ∀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
⊢ ∀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 ∧ 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)
⊢ 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 b1 (b1 ⊎ b2) ⇔ FINITE_BAG b1 ∧ FINITE_BAG b2 ∧ b2 ≠ {||}) ∧
(mlt R b1 (b2 ⊎ b1) ⇔ FINITE_BAG b1 ∧ FINITE_BAG b2 ∧ b2 ≠ {||})
⊢ 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)
⊢ ∀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)