
  [;1m-spec partition(SetFun, Set1, Set2) -> {Set3, Set4}[0m
  [;1m                   when[0m
  [;1m                       SetFun :: set_fun(),[0m
  [;1m                       Set1 :: a_set(),[0m
  [;1m                       Set2 :: a_set(),[0m
  [;1m                       Set3 :: a_set(),[0m
  [;1m                       Set4 :: a_set().[0m

  Returns a pair of sets that, regarded as constituting a set, forms
  a partition of [;;4mSet1[0m. If the result of applying [;;4mSetFun[0m to an
  element of [;;4mSet1[0m gives an element in [;;4mSet2[0m, the element belongs
  to [;;4mSet3[0m, otherwise the element belongs to [;;4mSet4[0m.

    1> R1 = sofs:relation([{1,a},{2,b},{3,c}]),
    S = sofs:set([2,4,6]),
    {R2,R3} = sofs:partition(1, R1, S),
    {sofs:to_external(R2),sofs:to_external(R3)}.
    {[{2,b}],[{1,a},{3,c}]}

  [;;4mpartition(F, S1, S2)[0m is equivalent to [;;4m{restriction(F, S1, S2),[0m
  [;;4mdrestriction(F, S1, S2)}[0m.
