model checking for symbolic heap separation logic with
play

Model Checking for Symbolic-Heap Separation Logic with Inductive - PowerPoint PPT Presentation

Model Checking for Symbolic-Heap Separation Logic with Inductive Predicates James Brotherston 1 Nikos Gorogiannis 2 Max Kanovich 1 Reuben Rowe 1 1 UCL 2 Middlesex University Australian National University, Canberra, 9 December 2015 1/ 24 Model


  1. Model Checking for Symbolic-Heap Separation Logic with Inductive Predicates James Brotherston 1 Nikos Gorogiannis 2 Max Kanovich 1 Reuben Rowe 1 1 UCL 2 Middlesex University Australian National University, Canberra, 9 December 2015 1/ 24

  2. Model checking, in general • Model checking is the problem of checking whether a structure S satisfies, or is a model of, some formula A : does S | = A ? 2/ 24

  3. Model checking, in general • Model checking is the problem of checking whether a structure S satisfies, or is a model of, some formula A : does S | = A ? • In computer science, S is typically a Kripke structure representing a system or program, and A a formula of modal or temporal logic. 2/ 24

  4. Model checking, in general • Model checking is the problem of checking whether a structure S satisfies, or is a model of, some formula A : does S | = A ? • In computer science, S is typically a Kripke structure representing a system or program, and A a formula of modal or temporal logic. • More generally, S could be any kind of mathematical structure and A a formula describing such structures. 2/ 24

  5. Model checking, in particular • Our setting: separation logic, used as a formalism for verifying imperative pointer programs. 3/ 24

  6. Model checking, in particular • Our setting: separation logic, used as a formalism for verifying imperative pointer programs. • Typically, we do static analysis: given an annotated program, prove that it meets its specification. There are many such automatic analyses! 3/ 24

  7. Model checking, in particular • Our setting: separation logic, used as a formalism for verifying imperative pointer programs. • Typically, we do static analysis: given an annotated program, prove that it meets its specification. There are many such automatic analyses! • When static analysis fails, we might try run-time verification: run the program and check that it does not violate the spec. 3/ 24

  8. Model checking, in particular • Our setting: separation logic, used as a formalism for verifying imperative pointer programs. • Typically, we do static analysis: given an annotated program, prove that it meets its specification. There are many such automatic analyses! • When static analysis fails, we might try run-time verification: run the program and check that it does not violate the spec. • In that case, we need to compare memory states S against specs A : does S | = A ? 3/ 24

  9. Model checking, in particular • Our setting: separation logic, used as a formalism for verifying imperative pointer programs. • Typically, we do static analysis: given an annotated program, prove that it meets its specification. There are many such automatic analyses! • When static analysis fails, we might try run-time verification: run the program and check that it does not violate the spec. • In that case, we need to compare memory states S against specs A : does S | = A ? • We focus on the popular symbolic-heap fragment of separation logic, allowing arbitrary inductive predicates. 3/ 24

  10. Symbolic-heap separation logic • Terms t are either variables x, y, z . . . or the constant nil . 4/ 24

  11. Symbolic-heap separation logic • Terms t are either variables x, y, z . . . or the constant nil . • Pure formulas π and spatial formulas F given by: π ::= t = t | t � = t F ::= emp | x �→ t | P t | F ∗ F (where P a predicate symbol, t a tuple of terms). 4/ 24

  12. Symbolic-heap separation logic • Terms t are either variables x, y, z . . . or the constant nil . • Pure formulas π and spatial formulas F given by: π ::= t = t | t � = t F ::= emp | x �→ t | P t | F ∗ F (where P a predicate symbol, t a tuple of terms). • �→ (“points-to”) denotes an individual pointer to a record in the heap. 4/ 24

  13. Symbolic-heap separation logic • Terms t are either variables x, y, z . . . or the constant nil . • Pure formulas π and spatial formulas F given by: π ::= t = t | t � = t F ::= emp | x �→ t | P t | F ∗ F (where P a predicate symbol, t a tuple of terms). • �→ (“points-to”) denotes an individual pointer to a record in the heap. • ∗ (“and separately”) demarks domain-disjoint heaps. 4/ 24

  14. Symbolic-heap separation logic • Terms t are either variables x, y, z . . . or the constant nil . • Pure formulas π and spatial formulas F given by: π ::= t = t | t � = t F ::= emp | x �→ t | P t | F ∗ F (where P a predicate symbol, t a tuple of terms). • �→ (“points-to”) denotes an individual pointer to a record in the heap. • ∗ (“and separately”) demarks domain-disjoint heaps. • Symbolic heaps A given by ∃ x . Π : F , for Π a set of pure formulas. 4/ 24

  15. Inductive definitions in separation logic • Inductive predicates defined by a set of rules of form: A ⇒ P t (We typically suppress the existential quantifiers in A .) 5/ 24

  16. Inductive definitions in separation logic • Inductive predicates defined by a set of rules of form: A ⇒ P t (We typically suppress the existential quantifiers in A .) • E.g., linked list segments with root x and tail element y: emp ⇒ ls x x x � = nil : x �→ z ∗ ls z y ⇒ ls x y 5/ 24

  17. Inductive definitions in separation logic • Inductive predicates defined by a set of rules of form: A ⇒ P t (We typically suppress the existential quantifiers in A .) • E.g., linked list segments with root x and tail element y: emp ⇒ ls x x x � = nil : x �→ z ∗ ls z y ⇒ ls x y • E.g., binary trees with root x given by: x = nil : emp ⇒ bt x x � = nil : x �→ ( y, z ) ∗ bt y ∗ bt z ⇒ bt x 5/ 24

  18. Semantics • Models are stacks s : Var → Val paired with heaps h : Loc ⇀ fin Val . ◦ is union of domain-disjoint heaps; e is the empty heap; nil is a non-allocable value. 6/ 24

  19. Semantics • Models are stacks s : Var → Val paired with heaps h : Loc ⇀ fin Val . ◦ is union of domain-disjoint heaps; e is the empty heap; nil is a non-allocable value. • Forcing relation s, h | = A given by s, h | = Φ t 1 = ( � =) t 2 ⇔ s ( t 1 ) = ( � =) s ( t 2 ) 6/ 24

  20. Semantics • Models are stacks s : Var → Val paired with heaps h : Loc ⇀ fin Val . ◦ is union of domain-disjoint heaps; e is the empty heap; nil is a non-allocable value. • Forcing relation s, h | = A given by s, h | = Φ t 1 = ( � =) t 2 ⇔ s ( t 1 ) = ( � =) s ( t 2 ) s, h | = Φ emp ⇔ h = e 6/ 24

  21. Semantics • Models are stacks s : Var → Val paired with heaps h : Loc ⇀ fin Val . ◦ is union of domain-disjoint heaps; e is the empty heap; nil is a non-allocable value. • Forcing relation s, h | = A given by s, h | = Φ t 1 = ( � =) t 2 ⇔ s ( t 1 ) = ( � =) s ( t 2 ) s, h | = Φ emp ⇔ h = e s, h | = Φ x �→ t ⇔ dom( h ) = { s ( x ) } and h ( s ( x )) = s ( t ) 6/ 24

  22. Semantics • Models are stacks s : Var → Val paired with heaps h : Loc ⇀ fin Val . ◦ is union of domain-disjoint heaps; e is the empty heap; nil is a non-allocable value. • Forcing relation s, h | = A given by s, h | = Φ t 1 = ( � =) t 2 ⇔ s ( t 1 ) = ( � =) s ( t 2 ) s, h | = Φ emp ⇔ h = e s, h | = Φ x �→ t ⇔ dom( h ) = { s ( x ) } and h ( s ( x )) = s ( t ) ( s ( t ) , h ) ∈ � P i � Φ s, h | = Φ P i t ⇔ 6/ 24

  23. Semantics • Models are stacks s : Var → Val paired with heaps h : Loc ⇀ fin Val . ◦ is union of domain-disjoint heaps; e is the empty heap; nil is a non-allocable value. • Forcing relation s, h | = A given by s, h | = Φ t 1 = ( � =) t 2 ⇔ s ( t 1 ) = ( � =) s ( t 2 ) s, h | = Φ emp ⇔ h = e s, h | = Φ x �→ t ⇔ dom( h ) = { s ( x ) } and h ( s ( x )) = s ( t ) ( s ( t ) , h ) ∈ � P i � Φ s, h | = Φ P i t ⇔ s, h | = Φ F 1 ∗ F 2 ⇔ ∃ h 1 , h 2 . h = h 1 ◦ h 2 and s, h 1 | = Φ F 1 and s, h 2 | = Φ F 2 6/ 24

  24. Semantics • Models are stacks s : Var → Val paired with heaps h : Loc ⇀ fin Val . ◦ is union of domain-disjoint heaps; e is the empty heap; nil is a non-allocable value. • Forcing relation s, h | = A given by s, h | = Φ t 1 = ( � =) t 2 ⇔ s ( t 1 ) = ( � =) s ( t 2 ) s, h | = Φ emp ⇔ h = e s, h | = Φ x �→ t ⇔ dom( h ) = { s ( x ) } and h ( s ( x )) = s ( t ) ( s ( t ) , h ) ∈ � P i � Φ s, h | = Φ P i t ⇔ s, h | = Φ F 1 ∗ F 2 ⇔ ∃ h 1 , h 2 . h = h 1 ◦ h 2 and s, h 1 | = Φ F 1 and s, h 2 | = Φ F 2 ∃ v ∈ Val | z | . s [ z �→ v ] , h | s, h | = Φ ∃ z . Π : F ⇔ = Φ π for all π ∈ Π and s [ z �→ v ] , h | = Φ F 6/ 24

  25. Semantics of inductive predicates Given inductive rule set Φ, the semantics � P � Φ of inductive predicate P is the least fixed point of a monotone operator constructed from Φ. 7/ 24

  26. Semantics of inductive predicates Given inductive rule set Φ, the semantics � P � Φ of inductive predicate P is the least fixed point of a monotone operator constructed from Φ. E.g, recall linked list segments ls : emp ⇒ ls x x x � = nil : x �→ z ∗ ls z y ⇒ ls x y 7/ 24

  27. Semantics of inductive predicates Given inductive rule set Φ, the semantics � P � Φ of inductive predicate P is the least fixed point of a monotone operator constructed from Φ. E.g, recall linked list segments ls : emp ⇒ ls x x x � = nil : x �→ z ∗ ls z y ⇒ ls x y The corresponding operator is: ϕ ( X ) = { ( h, ( s ( x ) , s ( y )) | s, h | = x = y and s, h | = emp , or s, h | = x �→ z ∗ Xzy } where Xzy is interpreted as ( z, y ) ∈ X . 7/ 24

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