s a n w o n k y l A r e T m C I r N o f Towards Smart Proof Search for Isabelle PSL and all that k e e w t s a Yutaka Nagashima | Trustworthy System Research Group l l i t n March 2017 u www.csiro.au
Example proof at Data61 • Click to edit Master text styles • Second level – Third level – Fourth level • Fifth level taken from: https://github.com/seL4/seL4 Presentation title | Presenter name 2
PSL and try-hard for Isabelle/HOL The percentage of automatically proved obligations out of 1526 proof obligations (timeout = 300s) 100% Part 2 28% 73% 75% Not specific to Isabelle! Other ITPs / Logic Programming 16% 57% 20% Part 1 50% 25% 0% try_hard sledgehammer Towards Smart Proof Search. | Yutaka Nagashima 3
Isabelle/HOL before PSL proof goal context tactic / sub-tool error-message It's blatantly clear subgoals no sub-goal! You stupid machine, that what I tell you is true (Michael Norrish) Towards Smart Proof Search. | Yutaka Nagashima 4
PSL (Proof Strategy Language) meta-tool tactics approach quickcheck sledgehammer programming language runtime tactic extensible generation (Eisbach) PSL efficient proof extensive generation parallel native Isabelle proof search almost no code clutter!! search proof script low memory usage Towards Smart Proof Search. | Yutaka Nagashima 5
Isabelle/HOL with PSL proof goal proof goal context context strategy tactic / sub-tool PSL proved theorem / Much less interaction with efficient tactic subgoals / message Isabelle. Towards Smart Proof Search. | Yutaka Nagashima 6
Tactics 1 goal preproces goal goal imp principle of explosion False P imp tactic Case 1 Case 2 new goal goal imp goal Case 3 subgoal 1 imp subgoal 2 imp imp goal PSL and all that. | Yutaka Nagashima 7
Tactics 2 , , : thm goal preproces goal goal imp tactic [ ] Case 1 Case 2 new goal goal imp goal Case 3 subgoal 1 imp subgoal 2 imp imp goal PSL and all that. | Yutaka Nagashima 8
Tactics 2 goal preproces goal goal imp tactic Case 4 (failure = empty list) [ ] PSL and all that. | Yutaka Nagashima 9
Tactics 3 [ , ,…] goal :: thm tactic goal 1:: thm goal 2 :: thm Lazy fun tactic :: thm -> [ thm ] OR simp auto simp induct auto simp REPEAT THEN induct auto PSL and all that. | Yutaka Nagashima 10
Tactical (THEN) goal :: thm tactic1 THEN tactic1 tactic2 [ , ,…] goal 1 goal 2 giant tactic? tactic2 tactic2 tactic2 goal 1-1 [ ] [ ,…] @[ ,…]@[… goal 2-1 Towards Smart Proof Search. | Yutaka Nagashima 11
Giant tactic giant tactic? force auto OR OR simp fast OR problem 1: Default problem 2: Giant tactics are too weak! tactics are too slow! problem 3: Sledgehammer and quick-check are not tactics! Towards Smart Proof Search. | Yutaka Nagashima 12
Thens [Dynamic(Induct), Auto, IsSolved] runtime interpretation (InductA ++ InductB ++ …) THEN auto THEN is_solved goal Dynamic ( Induct ) Auto sequential combination (THEN) IsSolved non-determinism Towards Smart Proof Search. | Yutaka Nagashima 13
Monadic interpretation type ‘a tactic = ‘a -> ‘a monad type tactic = thm -> thm Seq.seq explicit tree construction? writer monad + non-deterministic monad goal pointer? Dynamic ( Induct ) Auto efficient proof scripts as “state” IsSolved Towards Smart Proof Search. | Yutaka Nagashima 14
Sledgehammer as tactic problem 3: Sledgehammer and quick-check are not tactics! They work on Proof.state not on thm. type ‘a tactic = 'a -> ‘a nondet_state_monad type tactic = P.state -> P.state nondet_state_monad parallel persistant hammering PThenOne Thens [Dyn (Induct), Thens[Hammer+ , IsSolved]] Towards Smart Proof Search. | Yutaka Nagashima 15
try_hard: the default strategy strategy Try_Hard = Ors [Thens [Subgoal, Basic], Thens [DInductTac, Auto_Solve], strategy Basic = Thens [DCaseTac, Auto_Solve], Ors [ Thens [Subgoal, Advanced], Auto_Solve, Thens [DCaseTac, Solve_Many], Blast_Solve, Thens [DInductTac, Solve_Many] ] FF_Solve, Thens [IntroClasses, Auto_Solve], Thens [Transfer, Auto_Solve], Thens [Normalization, IsSolved], Thens [DInduct, Auto_Solve], Thens [Hammer, IsSolved], Thens [DCases, Auto_Solve], Thens [DCoinduction, Auto_Solve], Thens [Auto, RepeatN(Hammer), IsSolved], Thens [DAuto, IsSolved]] PSL and all that. | Yutaka Nagashima 16
PSL: Demo
PSL and try-hard for Isabelle/HOL The percentage of automatically proved obligations out of 1526 proof obligations (timeout = 300s) 100% try_smart Part 2 28% 73% 75% 16% 57% 20% Part 1 50% 25% 0% try_hard sledgehammer Towards Smart Proof Search. | Yutaka Nagashima 18
PaMpeR: Proof Method proof goal and context as a vector of boolean values Recommendation System huge and complex proof goal proof goal ? context strategy context assertions Regression PaMpeR Algorithm Proof Data Type class mechanism? Base Recursively defined constant? proof method e.g. AFP & seL4 recommendation:: (proof method * double) list Towards Smart Proof Search. | Yutaka Nagashima 19
PaMpeR: Demo Affine_Arithmetic/Affine_Approximation
Future work: try-hard to try-smart PaMpeR proof goal context proof goal context proof goal context small strategy tactic / sub-tool try_smart PSL efficient tactic state monad transformer runtime tactic generation Even better than PSL. Towards Smart Proof Search. | Yutaka Nagashima 21
Isabelle/PSL on Github ( https://github.com/data61/PSL ) Leave a star if you like. I want you to use PSL / adopt the idea Lean/PSL coming soon(?) Isabelle/PaMpeR on Github (still work in progress) Towards Smart Proof Search. | Yutaka Nagashima 22
Thank You TS/ProofEngineering Yutaka Nagashima Engineer www.csiro.au
Recommend
More recommend