Exemplo n.º 1
0
def orComm():
    A = Var("a")
    B = Var("b")
    p1 = premise(Or(A, B))

    return orE(
        p1, arrowI(assume(A), orIR(assumed(A), Or(B, A)), Arrow(A, Or(B, A))),
        arrowI(assume(B), orIL(assumed(B), Or(B, A)), Arrow(B, Or(B, A))),
        Or(B, A))
Exemplo n.º 2
0
def forall_comm():
    return forallI(
        assume(Var("a")),
        forallI(
            assume(Var("b")),
            forallE(
                forallE(premise(parse("FA x. FA y. P(x, y)")), "b",
                        parse("FA y. P(b, y)")), "a", parse("P(b, a)")),
            parse("FA x. P(x, a)")), parse("FA y. FA x. P(x, y)"))
Exemplo n.º 3
0
def Q3_3():
	clear()
	A = Var("A")
	B = Var("B")
	p1 = premise(Or(Not(A), Not(B)))
	end = Not(And(A,B))
	A_B = And(A,B)
	
	return orE(p1, arrowI(assume(Not(A)), notI(arrowI(assume(A_B), notE(andEL(assumed(A_B), A), assumed(Not(A)), false()), Arrow(A_B, false())), Not(A_B)), Arrow(Not(A), Not(A_B))), arrowI(assume(Not(B)), notI(arrowI(assume(A_B), notE(andER(assumed(A_B), B), assumed(Not(B)), false()), Arrow(A_B, false())), Not(A_B)), Arrow(Not(B), Not(A_B))), end)
Exemplo n.º 4
0
def contra():
    return arrowI(
        assume(parse("EX x. P(x)")),
        arrowE(
            existsE(
                assumed(parse("EX x. P(x)")), "a",
                arrowI(assume(parse("P(a)")), assumed(parse("P(a)")),
                       Arrow(parse("P(a)"), parse("P(a)"))), parse("P(a)")),
            forallE(premise(parse("FA x. (P(x)->Q)")), "a", parse("P(a)->Q")),
            Var("Q")), Arrow(parse("EX x. P(x)"), Var("Q")))
Exemplo n.º 5
0
def DM3():
    return forallI(
        assume(Var("a")),
        notI(
            arrowI(
                assume(parse("P(a)")),
                notE(existsI(assumed(parse("P(a)")), "a", parse("EX x. P(x)")),
                     premise(Not(parse("EX x. P(x)"))), false()),
                Arrow(parse("P(a)"), false())), Not(parse("P(a)"))),
        parse("FA x. ~P(x)"))
Exemplo n.º 6
0
def disSyl():
    A = Var("a")
    B = Var("b")
    p1 = premise(Or(A, B))
    p2 = premise(Not(B))

    return orE(
        p1, arrowI(assume(A), assumed(A), Arrow(A, A)),
        arrowI(assume(B), FE(notE(assumed(B), p2, false()), A), Arrow(B, A)),
        A)
Exemplo n.º 7
0
def doubleNeg(p, a):
    l1 = LEM(Or(a, Not(a)))
    l2 = assume(a)
    l3 = assumed(a)
    l4 = arrowI(l2, l3, Arrow(a, a))
    l5 = assume(Not(a))
    l6 = assumed(Not(a))
    l7 = notE(l6, p, false())
    l8 = FE(l7, a)
    l9 = arrowI(l5, l8, Arrow(Not(a), a))
    l10 = orE(l1, l4, l9, a)
    return l10
Exemplo n.º 8
0
def DM2():
    return notI(
        arrowI(
            assume(parse("FA x. P(x)")),
            notE(
                forallE(assumed(parse("FA x. P(x)")), "a", parse("P(a)")),
                existsE(
                    premise(parse("EX x. ~P(x)")), "a",
                    arrowI(assume(Not(parse("P(a)"))),
                           assumed(Not(parse("P(a)"))),
                           Arrow(Not(parse("P(a)")), Not(parse("P(a)")))),
                    Not(parse("P(a)"))), false()),
            (Arrow(parse("FA x. P(x)"), false()))), Not(parse("FA x. P(x)")))
Exemplo n.º 9
0
def forall_comm():
    return forallI(
        assume(Var("c")),
        forallI(
            assume(Var("d")),
            forallE(
                forallE(
                    premise(parse("FA x. FA y. P(x, y)")),
                    "d",
                    parse("FA y. P(d, y)"),
                ),
                "c",
                parse("P(d, c)"),
            ), parse("FA x. P(x, c)")), parse("FA y. FA x. P(x, y)"))
Exemplo n.º 10
0
def example():
    clear()
    p1 = premise(parse("EX x. FA y. P(x,y)"))
    a1 = assume(parse("FA y. P(u,y)"))

    a2 = assume(Var("v"))
    l1 = assumed(parse("FA y. P(u,y)"))
    l2 = forallE(l1, "v", parse("P(u,v)"))
    l3 = existsI(l2, "u", parse("EX x. P(x,v)"))
    l4 = forallI(a2, l3, parse("FA y. EX x. P(x,y)"))

    l5 = arrowI(a1, l4, parse("(FA y. P(u,y)) -> (FA y. EX x. P(x,y))"))
    l6 = existsE(p1, "u", l5, parse("FA y. EX x. P(x,y)"))
    return l6
Exemplo n.º 11
0
def ren_forall():
    return forallI(assume(Var("x")),
                   forallE(
                       premise(parse("FA x. P(x)")),
                       "x",
                       parse("P(x)"),
                   ), parse("FA z. P(z)"))
Exemplo n.º 12
0
def contra():
    return arrowI(
        assume(parse("EX x.P(x)")),
        existsE(
            assumed(parse("EX x.P(x)")), "c",
            forallE(premise(parse("FA x.P(x) -> Q")), "c", parse("P(c) -> Q")),
            parse("Q")), parse("(EX x.P(x)) -> Q"))
Exemplo n.º 13
0
def Q3_1():
	clear()
	A = Var("A")
	B = Var("B")
	p1 = premise(Or(A, B))

	return orE(p1, arrowI(assume(A), orIR(assumed(A), Or(B, A)), Arrow(A, Or(B, A))), arrowI(assume(B), orIL(assumed(B), Or(B, A)), Arrow(B, Or(B, A))), Or(B, A))
Exemplo n.º 14
0
def exists_comm():
    return existsE(
        premise(parse("EX x. EX y. P(x,y)")), "c",
        arrowI(
            assume(parse("EX y. P(c,y)")),
            existsE(
                assumed(parse("EX y. P(c,y)")), "d",
                arrowI(
                    assume(parse("P(c,d)")),
                    existsI(
                        existsI(assumed(parse("P(c,d)")), "c",
                                parse("EX x. P(x,d)")), "d",
                        parse("EX y. EX x. P(x,y)")),
                    parse("P(c,d) -> EX y. EX x. P(x,y)")),
                parse("EX y. EX x. P(x,y)")),
            parse("(EX y. P(c,y)) -> EX y. EX x. P(x,y)")),
        parse("EX y. EX x. P(x,y)"))
Exemplo n.º 15
0
def Q3_2():
	clear()
	A = Var("A")
	B = Var("B")
	p1 = premise(Or(A, B))
	p2 = premise(Not(B))

	return orE(p1, Arrow(A,A), arrowI(assume(B), FE(notE(assumed(B), p2, false()), A), Arrow(B, A)), A)
Exemplo n.º 16
0
def DM2():
    return notI(
        arrowI(
            assume(parse("FA x. P(x)")),
            notE(
                forallE(assumed(parse("FA x. P(x)")), "c", parse("P(c)")),
                existsE(
                    premise(parse("EX x. ~P(x)")), "d",
                    arrowI(
                        assume(parse("~P(d)")),
                        FE(
                            notE(
                                forallE(assumed(parse("FA x. P(x)")), "d",
                                        parse("P(d)")),
                                assumed(parse("~P(d)")), false()),
                            parse("~P(c)")), parse("~P(d) -> ~P(c)")),
                    parse("~P(c)")), false()),
            Arrow(parse("FA x. P(x)"), false())), parse("~FA x. P(x)"))
Exemplo n.º 17
0
def DL2(p1):
    a = Var("a")
    b = Var("b")

    return doubleNeg(
        notI(
            arrowI(
                assume(Not(b)),
                notE(orIR(assumed(Not(b)), Or(Not(a), Not(b))), p1, false()),
                Arrow(Not(b), false())), Not(Not(b))), b)
Exemplo n.º 18
0
def DM2():
    a = Var("a")
    b = Var("b")
    prem = premise(Not(And(a, b)))  #The original premise, ~(A && B)
    d1 = premise(
        Not(Or(Not(a), Not(b)))
    )  #d1 is the phrase required to run DL1 and DL2. I ran it as a premise, but it is assumed, NOT a premise

    return doubleNeg(
        notI(
            arrowI(assume(Not(Or(Not(a), Not(b)))),
                   notE(andI(DL1(d1), DL2(d1), And(a, b)), prem, false()),
                   Arrow(Not(Or(Not(a), Not(b))), false())),
            Not(Not(Or(Not(a), Not(b))))), Or(Not(a), Not(b)))
Exemplo n.º 19
0
def DM1():
    A = Var("a")
    B = Var("b")
    p1 = premise(Or(Not(A), Not(B)))
    end = Not(And(A, B))
    A_B = And(A, B)
    #I condensed parts of the proofs so I could substitute in things that made sense to me, otherwise I was going nuts

    return orE(
        p1,
        arrowI(
            assume(Not(A)),
            notI(
                arrowI(assume(A_B),
                       notE(andEL(assumed(A_B), A), assumed(Not(A)), false()),
                       Arrow(A_B, false())), Not(A_B)),
            Arrow(Not(A), Not(A_B))),
        arrowI(
            assume(Not(B)),
            notI(
                arrowI(assume(A_B),
                       notE(andER(assumed(A_B), B), assumed(Not(B)), false()),
                       Arrow(A_B, false())), Not(A_B)),
            Arrow(Not(B), Not(A_B))), end)
Exemplo n.º 20
0
def arrTrans():
    a = Var("A")
    b = Var("B")
    c = Var("C")

    p1 = premise(Arrow(a, b))
    p2 = premise(Arrow(b, c))

    a1 = assume(a)

    return arrowI(a1, \
                  arrowE(arrowE(assumed(a), \
                                p1, \
                                b), \
                         p2, \
                         c), \
                  Arrow(a,c))
Exemplo n.º 21
0
def ren_exists():
    return existsE(
        premise(parse("EX x. P(x)")), "c",
        arrowI(assume(parse("P(c)")),
               existsI(assumed(parse("P(c)")), "c", parse("EX z. P(z)")),
               parse("P(c) -> EX z. P(z)")), parse("EX z. P(z)"))