Ejemplo n.º 1
0
    def test_at_most_zero_small(self):
        (a, _b, _c) = self.pos
        self.function = a

        cardinality = cardnet.at_most(self.function.support, 0)
        sat = expr.And(self.function, *cardinality).to_cnf().satisfy_one()
        self.assertIsNone(sat)
Ejemplo n.º 2
0
 def test_not_at_most_is_not_equivalent(self):
     at_most = expr.exprvar("at_most")
     cardinality = cardnet.at_most(self.function.support,
                                   len(self.pos) - 1,
                                   ~at_most)
     sat = expr.And(self.function, at_most, *cardinality).to_cnf().satisfy_one()
     self.assertIsNotNone(sat)
     self.assertEqual(sat.get(at_most), 1)
Ejemplo n.º 3
0
    def test_at_most_higher(self):
        cardinality = cardnet.at_most(self.function.support,
                                      len(self.pos) + 1)
        sat = expr.And(self.function, *cardinality).to_cnf().satisfy_one()
        self.assertIsNotNone(sat)

        solution = {x: sat.get(x) for x in self.pos}
        self.assertEqual(solution, {x: 1 for x in self.pos})
Ejemplo n.º 4
0
 def test_at_most_lower(self):
     cardinality = cardnet.at_most(self.function.support,
                                   len(self.pos) - 1)
     sat = expr.And(self.function, *cardinality).to_cnf().satisfy_one()
     self.assertIsNone(sat)
Ejemplo n.º 5
0
 def test_at_most_zero(self):
     cardinality = cardnet.at_most(self.function.support, 0)
     sat = expr.And(self.function, *cardinality).to_cnf().satisfy_one()
     self.assertIsNone(sat)
Ejemplo n.º 6
0
def at_most(inputs, p, equivalent=None):
    if p == 1: yield from at_most_one(inputs, equivalent)
    else: yield from cardnet.at_most(inputs, p, equivalent)