• bag - put, get

  • stack - push, pop, settop

  
  • bag - 〈 elems, bound 〉

  • stack - 〈 items, limit 〉

  
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