Exemplo n.º 1
0
    def test_identity_walker_simple(self):
        def walk_and_to_or(formula, args, **kwargs):
            return Or(args)

        def walk_or_to_and(formula, args, **kwargs):
            return And(args)

        walker = IdentityDagWalker(env=get_env())

        walker.set_function(walk_and_to_or, op.AND)
        walker.set_function(walk_or_to_and, op.OR)

        x, y, z = Symbol('x'), Symbol('y'), Symbol('z')

        cnf = And(Or(x, y, z), Or(z, Not(y)))
        fake_dnf = Or(And(x, y, z), And(z, Not(y)))
        result = walker.walk(cnf)
        self.assertEqual(result, fake_dnf)

        alternation = Or(cnf, Not(cnf))
        expected = And(fake_dnf, Not(fake_dnf))
        result = walker.walk(alternation)
        self.assertEqual(result, expected)
Exemplo n.º 2
0
    def test_identity_walker_simple(self):
        def walk_and_to_or(formula, args, **kwargs):
            return Or(args)

        def walk_or_to_and(formula, args, **kwargs):
            return And(args)

        walker = IdentityDagWalker(env=get_env())

        walker.set_function(walk_and_to_or, op.AND)
        walker.set_function(walk_or_to_and, op.OR)

        x, y, z = Symbol("x"), Symbol("y"), Symbol("z")

        cnf = And(Or(x, y, z), Or(z, Not(y)))
        fake_dnf = Or(And(x, y, z), And(z, Not(y)))
        result = walker.walk(cnf)
        self.assertEqual(result, fake_dnf)

        alternation = Or(cnf, Not(cnf))
        expected = And(fake_dnf, Not(fake_dnf))
        result = walker.walk(alternation)
        self.assertEqual(result, expected)