Returns mutually exclusive/inclusive clampings

        Returns
        -------
        (dict,dict)
            A tuple of 2 dictionaries.
            For each literal key, the first dict has as value the set of mutually exclusive clampings while
            the second dict has as value the set of mutually inclusive clampings.

def combinatorics(self):
        """
        Returns mutually exclusive/inclusive clampings

        Returns
        -------
        (dict,dict)
            A tuple of 2 dictionaries.
            For each literal key, the first dict has as value the set of mutually exclusive clampings while
            the second dict has as value the set of mutually inclusive clampings.
        """
        df = self.to_dataframe()
        literals = set((l for l in it.chain.from_iterable(self)))
        exclusive, inclusive = defaultdict(set), defaultdict(set)

        for l1, l2 in it.combinations(it.ifilter(lambda l: self.frequency(l) < 1., literals), 2):
            a1, a2 = df[l1.variable] == l1.signature, df[l2.variable] == l2.signature
            if (a1 != a2).all():
                exclusive[l1].add(l2)
                exclusive[l2].add(l1)

            if (a1 == a2).all():
                inclusive[l1].add(l2)
                inclusive[l2].add(l1)

        return exclusive, inclusive