The Proof Tree Visualiser By David Alexander Supervisor: Rajeev Goré Summer Scholar, RSISE
What is it? ● A graphical interface for... – ...constructing proof trees , and... – ...visualising proof trees generated by automated provers . ● What kind of proof trees? – Proof trees in the tableau and sequent proof systems. 2/10
Background ● Propositional Logic ∧ ∨ → ↔ – Connectives: , , ¬, , – Theorems can be proven using resolution . ● Modal Logic ◻ means “necessarily p” – ◊p means “possibly p”; p ● (other interpretations also exist) – Example: ◻ (a b) ∧ → ¬ ◊ ¬b – A different approach is required for theorem- proving. 3/10
Background ● The Tableau Method – To prove/disprove a statement: ● Create a tree with the statement at the root. ● Choose an applicable tableau rule and use it to generate the child nodes. ● Repeat until a contradiction is found, or no more rules can be applied. ● Sequents are similar, but usually drawn with the root at the bottom. ● Very large proof trees can result – automated provers often used. 4/10
Sample Prover Output $ ./k.twb --trace --verbose <(echo "[] (<> ~ p0 v p0) v <> [] Falsum v <> ([] p0 & <> <> ~ p0) v <> ([] <> p0 & <> <> [] ~ p0) v <> (p0 & <> [] ~ p0) v <> (~ p0 & <> [] p0)") Proving: [] (<> ~ p0 v p0) v <> [] Falsum v <> ([] p0 & <> <> ~ p0) v <> ([] <> p0 & <> <> [] ~ p0) v <> (p0 & <> [] ~ p0) v <> (~ p0 & <> [] p0) Start Node: ((((((<> (([ ] p0) & (~ p0))) & ([ ] (<> Verum))) & ([ ] ((<> (~ p0)) v ([ ] ([ ] p0))))) & ([ ] ((<> ([ ] (~ p0))) v ([ ] ([ ] (<> p0)))))) & ([ ] ((~ p0) v ([ ] (<> p0))))) & ([ ] (p0 v ([ ] (<> (~ p0)))))) And ( 0 -> 1 ) ([ ] (p0 v ([ ] (<> (~ p0))))) ; (((((<> (([ ] p0) & (~ p0))) & ([ ] (<> Verum))) & ([ ] ((<> (~ p0)) v ([ ] ([ ] p0))))) & ([ ] ((<> ([ ] (~ p0))) v ([ ] ([ ] (<> p0)))))) & ([ ] ((~ p0) v ([ ] (<> p0))))) And ( 1 -> 2 ) ((((<> (([ ] p0) & (~ p0))) & ([ ] (<> Verum))) & ([ ] ((<> (~ p0)) v ([ ] ([ ] p0))))) & ([ ] ((<> ([ ] (~ p0))) v ([ ] ([ ] (<> p0)))))) ; ([ ] ((~ p0) v ([ ] (<> p0)))) ; ([ ] (p0 v ([ ] (<> (~ p0))))) And ( 2 -> 3 ) ([ ] ((~ p0) v ([ ] (<> p0)))) ; ([ ] ((<> ([ ] (~ p0))) v ([ ] ([ ] (<> p0))))) ; ([ ] (p0 v ([ ] (<> (~ p0))))) ; (((<> (([ ] p0) & (~ p0))) & ([ ] (<> Verum))) & ([ ] ((<> (~ p0)) v ([ ] ([ ] p0))))) And ( 3 -> 4 ) ((<> (([ ] p0) & (~ p0))) & ([ ] (<> Verum))) ; ([ ] ((~ p0) v ([ ] (<> p0)))) ; ([ ] ((<> (~ p0)) v ([ ] ([ ] p0)))) ; ([ ] ((<> ([ ] (~ p0))) v ([ ] ([ ] (<> p0))))) ; ([ ] (p0 v ([ ] (<> (~ p0))))) And ( 4 -> 5 ) (<> (([ ] p0) & (~ p0))) ; ([ ] (<> Verum)) ; ([ ] ((~ p0) v ([ ] (<> p0)))) ; ([ ] ((<> (~ p0)) v ([ ] ([ ] p0)))) ; ([ ] ((<> ([ ] (~ p0))) v ([ ] ([ ] (<> p0))))) ; ([ ] (p0 v ([ ] (<> (~ p0))))) K ( 5 -> 6 ) (<> Verum) ; ((~ p0) v ([ ] (<> p0))) ; ((<> (~ p0)) v ([ ] ([ ] p0))) ; ((<> ([ ] (~ p0))) v ([ ] ([ ] (<> p0)))) ; (p0 v ([ ] (<> (~ p0)))) ; (([ ] p0) & (~ p0)) ; And ( 6 -> 7 ) (~ p0) ; ((~ p0) v ([ ] (<> p0))) ; ((<> (~ p0)) v ([ ] ([ ] p0))) ; ((<> ([ ] (~ p0))) v ([ ] ([ ] (<> p0)))) ; (p0 v ([ ] (<> (~ p0)))) ; (<> Verum) ; ([ ] p0) ; Or ( 7 -> 8 ) ((<> (~ p0)) v ([ ] ([ ] p0))) ; ((<> ([ ] (~ p0))) v ([ ] ([ ] (<> p0)))) ; (p0 v ([ ] (<> (~ p0)))) ; ; (<> Verum) ; ([ ] p0) ; (~ p0) Or ( 8 -> 9 ) ((<> ([ ] (~ p0))) v ([ ] ([ ] (<> p0)))) ; (p0 v ([ ] (<> (~ p0)))) ; (<> Verum) ; (<> (~ p0)) ; ; ([ ] p0) ; (~ p0) Or ( 9 -> 10 ) (p0 v ([ ] (<> (~ p0)))) ; ; (<> Verum) ; (<> (~ p0)) ; (<> ([ ] (~ p0))) ; ([ ] p0) ; (~ p0) Or ( 10 -> 11 ) (<> Verum) ; (<> (~ p0)) ; (<> ([ ] (~ p0))) ; ; p0 ; ([ ] p0) ; (~ p0) Id ( 11 -> 12 ) ... 104 lines omitted ... Id ( 70 -> 71 ) Or ( 64 -> 72 ) (p0 v ([ ] (<> (~ p0)))) ; (<> Verum) ; ; ([ ] (<> p0)) ; ([ ] ([ ] (<> p0))) ; ([ ] ([ ] p0)) ; ([ ] p0) ; (~ p0) Or ( 72 -> 73 ) (<> Verum) ; p0 ; ([ ] (<> p0)) ; ([ ] ([ ] (<> p0))) ; ([ ] ([ ] p0)) ; ([ ] p0) ; (~ p0) Id ( 73 -> 74 ) Or ( 72 -> 75 ) (<> Verum) ; ; ([ ] (<> (~ p0))) ; ([ ] (<> p0)) ; ([ ] ([ ] (<> p0))) ; ([ ] ([ ] p0)) ; ([ ] p0) ; (~ p0) K ( 75 -> 76 ) ([ ] (<> p0)) ; ([ ] p0) ; p0 ; Verum ; ; ; ; (<> (~ p0)) ; (<> p0) K ( 76 -> 77 ) p0 ; ; ; (~ p0) ; ; (<> p0) Id ( 77 -> 78 ) Time:0.0080 Result:Close Total Rules applications:78 Cache results: 5/10 Total queries:0 Hits:0 Miss:0 Elements in the cache:0
PTV Features ● Layout according to size of subtrees. – Compact structure – formulae only shown on request. ● Subtrees can be collapsed and expanded. ● Tableau/sequent rules displayed in full. – Assignments of formulae to variables shown using colours. ● Formulae can be “traced” up the tree. 6/10
Demonstration 7/10
Implementation Details ● Written in Haskell. ● Prover runs on server. – Nodes loaded over network as user views them. ● Provers use a special format to specify the proof tree. – Each rule application is specified as a set of assignments of formulae to variables. – Exact details of format still in development. 8/10
Further Work ● Web browser-embeddable version. ● More powerful tree editing – Allow users to adjust the layout manually if desired. ● Adapt more provers to work with the PTV. – Allow use of provers stored on the user's computer, rather than on the server. ● Set up build systems to provide Mac and Windows binaries. ● Code refactoring and optimisation. 9/10
More Information ● PTV is free software. – Licensed under the GNU GPL. ● Source code, Linux binaries and user guide available at: http://users.rsise.anu.edu.au/~dalexander/ptv ● This presentation will also be posted on the above website. 10/10
Recommend
More recommend