stack <= bag
put(i): require size( b.elems ) < b.bound promise b' = << b. elems \uplus { i }, b.bound >> push(i): require length( s.items ) < s.limit promise s' = << s.items \. i, s.limit >> slide: Behavioral subtypes -- example