Esempio n. 1
0
def test_parsing_binary_precedence():
    assert parse_formula("x & y | z -> m") == IfThen(
        Or(And(Var("x"), Var("y")), Var("z")), Var("m"))
    assert parse_formula("x | y -> m & z") == IfThen(Or(Var("x"), Var("y")),
                                                     And(Var("m"), Var("z")))
    assert parse_formula("[x | y] & z") == And(Or(Var("x"), Var("y")),
                                               Var("z"))
Esempio n. 2
0
def test_replace_variable_in_quantifiers():
    tree = ForAll(
        "x",
        Or(And(ForAll("b", Var("b")), Exists("b", Var("b"))), Exists("y", Var("b"))),
    )
    assert tree.replace_variable("b", Var("bbb")) == ForAll(
        "x",
        Or(And(ForAll("b", Var("b")), Exists("b", Var("b"))), Exists("y", Var("bbb"))),
    )
Esempio n. 3
0
def test_binary_operators_to_str():
    assert str(And(Or(Var("a"), Var("b")), Var("c"))) == "[a | b] & c"
    assert str(Or(And(Var("a"), Var("b")), Var("c"))) == "a & b | c"
    assert str(Or(Var("a"), Or(Var("b"), Var("c")))) == "a | b | c"
    assert str(And(Var("a"), And(Var("b"), Var("c")))) == "a & b & c"
Esempio n. 4
0
def test_not_to_str():
    assert str(Not(Var("x"))) == "~x"
    assert str(Not(Or(Var("x"), Var("y")))) == "~[x | y]"
Esempio n. 5
0
def test_or_to_str():
    assert str(Or(Var("a"), Var("b"))) == "a | b"
Esempio n. 6
0
def test_replace_variable_in_and_or():
    tree = And(Or(Var("x"), Var("y")), Var("z"))
    assert tree.replace_variable("x", Var("x'")) == And(
        Or(Var("x'"), Var("y")), Var("z")
    )
Esempio n. 7
0
def test_simplify_call_with_lambda_arg():
    # (LP.P(x))(Lx.x | a) -> x | a
    tree = Call(Lambda("P", Call(Var("P"), Var("x"))),
                Lambda("x", Or(Var("x"), Var("a"))))
    assert tree.simplify() == Or(Var("x"), Var("a"))
Esempio n. 8
0
def test_parsing_exists():
    assert parse_formula("Ex.x | y") == Exists("x", Or(Var("x"), Var("y")))
    assert parse_formula("E x.x | y") == Exists("x", Or(Var("x"), Var("y")))
    assert parse_formula("∃x.x | y") == Exists("x", Or(Var("x"), Var("y")))
Esempio n. 9
0
def test_parsing_negation():
    assert parse_formula("~a") == Not(Var("a"))
    assert parse_formula("~a | b") == Or(Not(Var("a")), Var("b"))
    assert parse_formula("~[a | b]") == Not(Or(Var("a"), Var("b")))
Esempio n. 10
0
def test_parsing_disjunction():
    assert parse_formula("b | b0") == Or(Var("b"), Var("b0"))
    assert parse_formula("a | b | c") == Or(Var("a"), Or(Var("b"), Var("c")))