anchor.diff:      Set = ?set:from_binary(Bitfield, 4),
       ?assertEqual(Bitfield, ?set:to_binary(Set)).
   
  +
   -ifdef(PROPER).
   prop_min() ->
  +    ?FORALL({ET, ST},
  +    ?SUCHTHAT({E, S}, {non_neg_integer(), non_neg_integer()}, S > 1),
  +    begin
  +        Elem = erlang:min(ET, ST),
  +        Size = erlang:max(ET, ST),
  +        Elem == ?set:min(?set:from_list([Elem], Size))
  +    end).
  +
  +prop_full() ->
  +    ?FORALL(Size, nat(),
  +    begin
  +        All = lists:seq(0, Size - 1),
  +        Set = ?set:from_list(All, Size),
  +        ?set:is_full(Set)
  +    end).
  +
  +prop_not_full() ->
       ?FORALL({Elem, Size},
  -    ?SUCHTHAT({E, S}, {nat(), nat()}, E < S andalso S > 1),
  -        Elem == ?set:min(?set:from_list([Elem], Size))).
  +    ?SUCHTHAT({E, S}, {nat(), nat()}, E < S),
  +    begin
  +        All = lists:seq(0, Size - 1),
  +        Not = lists:delete(Elem, All),
  +        Set = ?set:from_list(Not, Size),
  +        not ?set:is_full(Set)
  +    end).
   
   prop_min_test() ->
  -    proper:quickcheck(prop_min()).
  +    ?assertEqual(true, proper:quickcheck(prop_min())).
  +
  +prop_full_test() ->
  +    ?assertEqual(true, proper:quickcheck(prop_full())).
  +
  +prop_not_full_test() ->
  +    ?assertEqual(true, proper:quickcheck(prop_not_full())).
   
   -endif.
   -endif.
  
positive.code:          to_list/1,
           is_member/2,
           is_empty/1,
           insert/2,
           delete/2,
           intersection/2,
  
negative.code: 
  -record(pieceset, {
      size :: non_neg_integer(),
      csize :: non_neg_integer() | none,
      elements :: binary()}).
  
  -opaque pieceset() :: #pieceset{}.
  