(self, *args)
return self.And(self.Or(*args),
                        self.AtMostOne(*args))
Encodes an exactly-one constraint on the boolean symbols.

        This using a quadratic encoding:
           A \\/ B \\/ C
           A -> !(B \\/ C)
           B -> !(C)
Encodes an exactly-one constraint on the boolean symbols.
Encodes an exactly - one constraint on the boolean symbols .
def ExactlyOne(self, *args):
        """ Encodes an exactly-one constraint on the boolean symbols.

        This using a quadratic encoding:
           A \\/ B \\/ C
           A -> !(B \\/ C)
           B -> !(C)
        """
        args = self._polymorph_args_to_tuple(args)
        return self.And(self.Or(*args),
                        self.AtMostOne(*args))
def ExactlyOne ( self , * args ) : args = self . _polymorph_args_to_tuple ( args ) return self . And ( self . Or ( * args ) , self . AtMostOne ( * args ) )