kdrag.solvers.ljt.prove
- kdrag.solvers.ljt.prove(goal: BoolRef) tuple[bool, list]
Prove goal intuitionistically using Dyckhoff’s LJT calculus.
>>> a,b,c,d = smt.Bools('a b c d') >>> Not, Or, Implies, And = smt.Not, smt.Or, smt.Implies, smt.And >>> prove(smt.Not(a))[0] False >>> prove(a)[0] False >>> prove(smt.Implies(a, a))[0] True >>> prove(smt.Or(a, smt.Not(a)))[0] # excluded middle False >>> prove(smt.Not(Not(Or(a, Not(a)))))[0] True >>> prove(smt.Implies(a, Implies(b, a)))[0] True >>> prove(smt.Implies(And(a, b), And(b, a)))[0] True >>> prove(smt.Implies(And(a, b), a))[0] True >>> prove(smt.Implies(Implies(Implies(a, b), a), a))[0] # pierce's law False >>> prove(smt.Not(Not(Implies(Implies(Implies(a, b), a), a))))[0] True
- Parameters:
goal (BoolRef)
- Return type:
tuple[bool, list]