-- --------------------------------------------------------------
-- Axioms for class BoundedBag
-- --------------------------------------------------------------


ax1	equal( remove(gen(MX), int e), 
                gen(MX)         	)

ax2  	equal( remove(add(BBag S, int e1), int e2)
  	        ,(e1==e2)
     	            ? (has(S,e) ? add(remove(S,e),e) : S)
    	            : add(remove(S,e2),e1))

ax2a	equal( remove(add_many(S, e, int c), e)
		, (c != 0)
		    ? add_many(S, e, int(int(c)-1))
		    : remove(S, e))

ax3  	has(gen(MX), e) == false

ax4  	has(add(S,e1),e2) == ( (e1==e2) ? true : has(S,e2) )

ax5  	empty(gen(MX)) == true

ax6  	empty(add(S,e)) == false

addCommutes	
   equal( add(add(S,e1),e2),
      	   add(add(S,e2),e1)	)

addRemCommute
   equal(remove(add(S,e),e),	(has(S,e) ? add(remove(S,e),e) : S))

sizeUp
   size(add(S,e)) == size(S)+1

Back