mechanized proofs in higher order separation logic
play

Mechanized proofs in higher-order separation logic Robbert Krebbers - PowerPoint PPT Presentation

Mechanized proofs in higher-order separation logic Robbert Krebbers Delft University of Technology, The Netherlands February 5, 2019 @ Vrije Universiteit, Amsterdam, The Netherlands 1 Tactic-style proofs (as in LCF/Coq/HOL/ etc. ) have shown to


  1. Mechanized proofs in higher-order separation logic Robbert Krebbers Delft University of Technology, The Netherlands February 5, 2019 @ Vrije Universiteit, Amsterdam, The Netherlands 1

  2. Tactic-style proofs (as in LCF/Coq/HOL/ etc. ) have shown to be effective in large-scale proof developments (CompCert, Four color, Feit-Thompson, Kepler, . . . ) 2

  3. Basic example of tactic-style proofs in Coq Lemma test { A } ( P Q : Prop ) (Ψ : A → Prop ) : P ∧ ( ∃ a , Ψ a ) ∧ Q → Q ∧ ∃ a , P ∧ Ψ a . Proof . intros [H1 [H2 H3]]. destruct H2 as [x H2]. split. - assumption. - exists x. auto. Qed. 3

  4. Basic example of tactic-style proofs in Coq 1 subgoal Lemma test { A } ( P Q : Prop ) (Ψ : A → Prop ) : A : Type P ∧ ( ∃ a , Ψ a ) ∧ Q → Q ∧ ∃ a , P ∧ Ψ a . P , Q : Prop Proof . Ψ : A → Prop intros [H1 [H2 H3]]. H1 : P destruct H2 as [x H2]. H2 : ∃ a : A , Ψ a split. H3 : Q - assumption. (1/1) - exists x. Q ∧ ( ∃ a : A , P ∧ Ψ a ) auto. Qed. 3

  5. Basic example of tactic-style proofs in Coq 1 subgoal Lemma test { A } ( P Q : Prop ) (Ψ : A → Prop ) : A : Type P ∧ ( ∃ a , Ψ a ) ∧ Q → Q ∧ ∃ a , P ∧ Ψ a . P , Q : Prop Proof . Context Ψ : A → Prop intros [H1 [H2 H3]]. H1 : P destruct H2 as [x H2]. H2 : ∃ a : A , Ψ a split. H3 : Q - assumption. (1/1) Goal - exists x. Q ∧ ( ∃ a : A , P ∧ Ψ a ) auto. Qed. 3

  6. Basic example of tactic-style proofs in Coq 1 subgoal Lemma test { A } ( P Q : Prop ) (Ψ : A → Prop ) : A : Type P ∧ ( ∃ a , Ψ a ) ∧ Q → Q ∧ ∃ a , P ∧ Ψ a . P , Q : Prop Proof . Ψ : A → Prop intros [H1 [H2 H3]]. H1 : P destruct H2 as [x H2]. H2 : ∃ a : A , Ψ a split. H3 : Q - assumption. (1/1) - exists x. Q ∧ ( ∃ a : A , P ∧ Ψ a ) auto. Qed. 3

  7. Basic example of tactic-style proofs in Coq 1 subgoal Lemma test { A } ( P Q : Prop ) (Ψ : A → Prop ) : A : Type P ∧ ( ∃ a , Ψ a ) ∧ Q → Q ∧ ∃ a , P ∧ Ψ a . P , Q : Prop Proof . Ψ : A → Prop intros [H1 [H2 H3]]. H1 : P destruct H2 as [x H2]. x : A split. H2 : Ψ x - assumption. H3 : Q - exists x. (1/1) Q ∧ ( ∃ a : A , P ∧ Ψ a ) auto. Qed. 3

  8. Basic example of tactic-style proofs in Coq 1 subgoal Lemma test { A } ( P Q : Prop ) (Ψ : A → Prop ) : A : Type P ∧ ( ∃ a , Ψ a ) ∧ Q → Q ∧ ∃ a , P ∧ Ψ a . P , Q : Prop Proof . Ψ : A → Prop intros [H1 [H2 H3]]. H1 : P destruct H2 as [x H2]. x : A split. H2 : Ψ x - assumption. H3 : Q - exists x. (1/1) Q ∧ ( ∃ a : A , P ∧ Ψ a ) auto. Qed. 3

  9. Basic example of tactic-style proofs in Coq 2 subgoals Lemma test { A } ( P Q : Prop ) (Ψ : A → Prop ) : A : Type P ∧ ( ∃ a , Ψ a ) ∧ Q → Q ∧ ∃ a , P ∧ Ψ a . P , Q : Prop Proof . Ψ : A → Prop intros [H1 [H2 H3]]. H1 : P destruct H2 as [x H2]. x : A split. H2 : Ψ x - assumption. H3 : Q - exists x. (1/2) Q auto. (2/2) Qed. ∃ a : A , P ∧ Ψ a 3

  10. Basic example of tactic-style proofs in Coq No more subgoals . Lemma test { A } ( P Q : Prop ) (Ψ : A → Prop ) : P ∧ ( ∃ a , Ψ a ) ∧ Q → Q ∧ ∃ a , P ∧ Ψ a . Proof . intros [H1 [H2 H3]]. destruct H2 as [x H2]. split. - assumption. - exists x. auto. Qed. 3

  11. Basic example of tactic-style proofs in Coq Lemma test { A } ( P Q : Prop ) (Ψ : A → Prop ) : P ∧ ( ∃ a , Ψ a ) ∧ Q → Q ∧ ∃ a , P ∧ Ψ a . Proof . intros [H1 [H2 H3]]. by firstorder (* automate this *). Qed. Scales in practice ◮ High-level tactics for arithmetic, Prolog-style search, algebra, . . . ◮ Compact syntax for combining tactics (ssreflect) ◮ Tactic programming (using ML, Ltac, . . . ) 3

  12. Tactic-style proofs for other logics, like separation logic 4

  13. Separation logic [O’Hearn, Reynolds, Yang; CSL’01] Propositions P , Q denote ownership of resources Separating conjunction P ∗ Q : The resources consists of separate parts satisfying P and Q Basic example: { x �→ v 1 ∗ y �→ v 2 } swap ( x , y ) { x �→ v 2 ∗ y �→ v 1 } the ∗ ensures that x and y are different memory locations 5

  14. Why is separation logic useful? Separation logic is very useful: ◮ It provides a high level of modularity ◮ It scales to fancy PL features like concurrency Just in Coq, there is an ever growing collection of separation logics: ◮ Bedrock ◮ CFML ◮ Charge! ◮ CHL ⊣⊢ * ◮ FCSL ◮ Iris ◮ VST ◮ . . . 6

  15. Problem: Cannot reuse the tactics/context of the proof assistant when reasoning in an embedded logic like separation logic 7

  16. Goal of this talk Enable tactic-style proofs in separation logic ◮ Extend Coq with named proof contexts for separation logic ◮ Tactics for introduction and elimination of all connectives of separation logic . . . ◮ . . . that can be used in Coq’s mechanisms for automation/tactic programming ◮ Implemented without modifying Coq (using reflection, type classes and Ltac) ⊣⊢ * 8

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend