48
1 . . An Abstract Separation Logic for Interlinked Extensible Records Martin Bodin Thomas Jensen Alan Schmitt Inria 29th of January JFLA 2016

An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

1

.

.

An Abstract Separation Logicfor Interlinked Extensible Records

Martin Bodin Thomas Jensen Alan Schmitt

Inria

29th of January

JFLA 2016

Page 2: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

2

Objectif

Analyser JavaScript, avec sa sémantique complexe ;Certifier l’analyseur ;POPL’14, JSCert, une sémantique formelle de JavaScript :

....

JavaScript

...

JSCert

Page 3: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

3

CPP’15 : Pourquoi redéfinir une sémantique ?

..IfTrue

𝑠1, 𝐸 ⇓ 𝐸′

(𝑣, 𝐸) , if 𝑠1 𝑠2, ..⇓ 𝐸′𝑣 ∈ ℤ⋆.

IfFalse𝑠2, 𝐸 ⇓ 𝐸′

(𝑣, 𝐸) , if 𝑠1 𝑠2 ..⇓ 𝐸′𝑣 ∈ {0}

..

Sémantique

.

…(1,𝐸), if 𝑠1 𝑠2 ⇓ …

.

𝐸, 𝑠1 ⇓ 𝐸′

(1, 𝐸), if 𝑠1 𝑠2 ⇓ 𝐸′

.

Dérivation concrète

.

𝐸, 𝑠1 ⇓ 𝐸′1 𝐸, 𝑠2 ⇓ 𝐸′

2(⊤,𝐸), if 𝑠1 𝑠2 ⇓ 𝐸′

1 ⊔ 𝐸′2

.

Dérivation Abstraite

Page 4: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

3

CPP’15 : Pourquoi redéfinir une sémantique ?

..IfTrue

𝑠1, 𝐸 ⇓ 𝐸′

(𝑣, 𝐸) , if 𝑠1 𝑠2, ..⇓ 𝐸′𝑣 ∈ ℤ⋆.

IfFalse𝑠2, 𝐸 ⇓ 𝐸′

(𝑣, 𝐸) , if 𝑠1 𝑠2 ..⇓ 𝐸′𝑣 ∈ {0}

..

Sémantique

.

…(1,𝐸), if 𝑠1 𝑠2 ⇓ 𝐸′

.

𝐸, 𝑠1 ⇓ 𝐸′

(1, 𝐸), if 𝑠1 𝑠2 ⇓ 𝐸′

.

Dérivation concrète

.

𝐸, 𝑠1 ⇓ 𝐸′1 𝐸, 𝑠2 ⇓ 𝐸′

2(⊤,𝐸), if 𝑠1 𝑠2 ⇓ 𝐸′

1 ⊔ 𝐸′2

.

Dérivation Abstraite

Page 5: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

3

CPP’15 : Pourquoi redéfinir une sémantique ?

..IfTrue

𝑠1, 𝐸 ⇓ 𝐸′

(𝑣, 𝐸) , if 𝑠1 𝑠2, ..⇓ 𝐸′𝑣 ∈ ℤ⋆.

IfFalse𝑠2, 𝐸 ⇓ 𝐸′

(𝑣, 𝐸) , if 𝑠1 𝑠2 ..⇓ 𝐸′𝑣 ∈ {0}

..

Sémantique

.

…(1,𝐸), if 𝑠1 𝑠2 ⇓ 𝐸′

.

𝐸, 𝑠1 ⇓ 𝐸′

(1, 𝐸), if 𝑠1 𝑠2 ⇓ 𝐸′

.

Dérivation concrète

.

𝐸, 𝑠1 ⇓ 𝐸′1 𝐸, 𝑠2 ⇓ 𝐸′

2(⊤,𝐸), if 𝑠1 𝑠2 ⇓ 𝐸′

1 ⊔ 𝐸′2

.

Dérivation Abstraite

Page 6: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

4

CPP’15 : Différence entre sémantique abstraite et concrète.À partir des règles de dérivation, ⇓ et ⇓♯ sont définies différemment...

.

Sémantique concrète ⇓

On applique n’importe quellerègle qui s’applique

Interprétation inductived’une dérivation⇓ = lfp (ℱ)

pas d’approximations

Sémantique abstraite ⇓♯

On applique toutesles règles qui s’appliquent

Interprétation coinductived’une dérivation⇓♯ = gfp (ℱ♯)

On autorise des approximations

.. ..(𝑣♯, 𝐸♯

0) , if 𝑠1 𝑠2 ⇓♯ 𝐸♯1 ⊔ 𝐸♯

2

..

𝐸♯0, 𝑠1 ⇓♯ 𝐸♯

1

.

𝐸♯0, 𝑠2 ⇓♯ 𝐸♯

2

.

IfTrue

.

IfFalse

Page 7: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

4

CPP’15 : Différence entre sémantique abstraite et concrète.À partir des règles de dérivation, ⇓ et ⇓♯ sont définies différemment...

.

Sémantique concrète ⇓

On applique n’importe quellerègle qui s’applique

Interprétation inductived’une dérivation⇓ = lfp (ℱ)

pas d’approximations

Sémantique abstraite ⇓♯

On applique toutesles règles qui s’appliquent

Interprétation coinductived’une dérivation⇓♯ = gfp (ℱ♯)

On autorise des approximations

.. ..(𝑣♯, 𝐸♯

0) , if 𝑠1 𝑠2 ⇓♯ 𝐸♯1 ⊔ 𝐸♯

2

..

𝐸♯0, 𝑠1 ⇓♯ 𝐸♯

1

.

𝐸♯0, 𝑠2 ⇓♯ 𝐸♯

2

.

IfTrue

.

IfFalse

Page 8: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

4

CPP’15 : Différence entre sémantique abstraite et concrète.À partir des règles de dérivation, ⇓ et ⇓♯ sont définies différemment...

.

Sémantique concrète ⇓

On applique n’importe quellerègle qui s’applique

Interprétation inductived’une dérivation⇓ = lfp (ℱ)

pas d’approximations

Sémantique abstraite ⇓♯

On applique toutesles règles qui s’appliquent

Interprétation coinductived’une dérivation⇓♯ = gfp (ℱ♯)

On autorise des approximations

Weaken𝑃 ′ ⊑ 𝑃 {𝑃} 𝑝 {𝑄} 𝑄 ⊑ 𝑄′

{𝑃 ′} 𝑝 {𝑄′}

..

𝐸♯0, 𝑠1 ⇓♯ 𝐸♯

1

.

𝐸♯0, 𝑠2 ⇓♯ 𝐸♯

2

.

IfTrue

.

IfFalse

Page 9: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

5

CPP’15 : Sémantique abstraite sous forme de point fixe

À partir d’un ensemble (𝜎, 𝑡, 𝑟) ∈ ⇓♯0.

Application de la règle 𝑖 : apply𝑖 (⇓♯0)

Application de la règle Weaken :

glue♯𝑖 (⇓♯0) =

⎧{⎨{⎩(𝜎, 𝑡, 𝑟) ∣

∃𝜎0, ∃𝑟0,𝜎 ⊑♯ 𝜎0 ∧ 𝑟0 ⊑♯ 𝑟 ∧(𝜎0, 𝑡, 𝑟0) ∈ apply𝑖 (⇓

♯0)

⎫}⎬}⎭

Application de toutes les règles : ℱ♯

⇓♯ = gfp (ℱ♯)

Page 10: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

5

CPP’15 : Sémantique abstraite sous forme de point fixe

À partir d’un ensemble (𝜎, 𝑡, 𝑟) ∈ ⇓♯0.

Application de la règle 𝑖 : apply𝑖 (⇓♯0)

Application de la règle Weaken :

glue♯𝑖 (⇓♯0) =

⎧{⎨{⎩(𝜎, 𝑡, 𝑟) ∣

∃𝜎0, ∃𝑟0,𝜎 ⊑♯ 𝜎0 ∧ 𝑟0 ⊑♯ 𝑟 ∧(𝜎0, 𝑡, 𝑟0) ∈ apply𝑖 (⇓

♯0)

⎫}⎬}⎭

Application de toutes les règles : ℱ♯

⇓♯ = gfp (ℱ♯)

Page 11: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

5

CPP’15 : Sémantique abstraite sous forme de point fixe

À partir d’un ensemble (𝜎, 𝑡, 𝑟) ∈ ⇓♯0.

Application de la règle 𝑖 : apply𝑖 (⇓♯0)

Application de la règle Weaken :

glue♯𝑖 (⇓♯0) =

⎧{⎨{⎩(𝜎, 𝑡, 𝑟) ∣

∃𝜎0, ∃𝑟0,𝜎 ⊑♯ 𝜎0 ∧ 𝑟0 ⊑♯ 𝑟 ∧(𝜎0, 𝑡, 𝑟0) ∈ apply𝑖 (⇓

♯0)

⎫}⎬}⎭

Application de toutes les règles : ℱ♯

⇓♯ = gfp (ℱ♯)

Page 12: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

6

Situation globale

....

JavaScript

...

JSCert

.

.

.

Domaineabstrait

. .. Sémantiqueabstraite

. .. Analyseur..

Page 13: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

7

...1 Une Sémantique abstraite basée sur la sémantique concrète

...2 Logique de séparation

...3 Ajout des nœuds résumés

Page 14: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

8

Domaine mémoire de JavaScript

Pas d’arithmétique pointeur !Des localités (« locations ») 𝑙𝑖 ∈ Loc ⊆ Val.Un tas 𝐻 ∶ Loc ⇀ ..𝔉 ⇀ Val.

Allocation de nouvelles localités.Ajout/suppression de champs.Possibilité de tester si un champ existe.

..

Noms de champs, champs spéciaux (prototypes, etc.)

.

.Interlinked Extensible Records / Enregistrements extensibles intriqués.

Page 15: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

9

Logique de séparation

𝜙 ∶∶= emp | 𝜙1 ⋆ 𝜙2 | x =̇ 𝑣♯ | 𝑙 ↦ {𝑜}𝑜 ∶∶= f ∶ 𝑣♯, 𝑜 | _ ∶ 𝑣♯

.x =̇ 𝑙1 ⋆ 𝑙1 ↦ {next ∶ 𝑙2, _ ∶ ⊠} ⋆ 𝑙1 ↦ {next ∶ nil, value ∶ 𝑣♯, _ ∶ ⊠}

..

...

next.

next.

value

.x.. •. 𝑙1.. •. 𝑙2. 𝑣♯

Page 16: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

9

Logique de séparation

𝜙 ∶∶= emp | 𝜙1 ⋆ 𝜙2 | x =̇ 𝑣♯ | 𝑙 ↦ {𝑜}𝑜 ∶∶= f ∶ 𝑣♯, 𝑜 | _ ∶ 𝑣♯

.The lattice of abstract values..

.

+,±,−,… ∈ 𝑣♯𝑙 ∈ 𝑣♯

nil ∈ 𝑣♯⊠ ∈ 𝑣♯

Les différentes valeurs peuvent êtremélangées : + ⊔ 𝑙 ⊔ ⊠.

Page 17: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

10

La Règle de contexte

Frame𝜙, 𝑠 ⇓♯ 𝜙′

𝜙 ⋆ 𝜙𝑐, 𝑠 ⇓♯ 𝜙′ ⋆ 𝜙𝑐

Tout ce qui n’est pas explicitement changé est inchangé.Permet de se focaliser lors de l’analyse de fonctions.

Page 18: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

10

La Règle de contexte

Frame𝜙, 𝑠 ⇓♯ 𝜙′

𝜙 ⋆ 𝜙𝑐, 𝑠 ⇓♯ 𝜙′ ⋆ 𝜙𝑐

Impossible de changer 𝜙 en 𝜙′ si l’interface change, même si𝛾 (𝜙) = 𝛾 (𝜙′).Solution : conserver l’interface dans une membrane.

(𝑙𝑎 → 𝑙1, 𝑙𝑏 → 𝑙2 | 𝑙1 ↦ {f ∶ 𝑙2, _ ∶ ⊠})= (𝑙𝑎 → 𝑙2, 𝑙𝑏 → 𝑙3 | 𝑙2 ↦ {f ∶ 𝑙3, _ ∶ ⊠})

Page 19: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

11

Quid des boucles ?

Une abstraction simple et générique : les nœuds résumés.

x ∶= nil;while ? (

t ∶= {};t.next ∶= x;x ∶= t

)

..next . next.𝑘.

x

𝑘 ↦ {next ∶ 𝑘 ⊔ nil, _ ∶ ⊠}

Page 20: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

11

Quid des boucles ?

Une abstraction simple et générique : les nœuds résumés.

x ∶= nil;while ? (

t ∶= {}𝑘;t.next ∶= x;x ∶= t

)

..next . next.𝑘.

x

𝑘 ↦ {next ∶ 𝑘 ⊔ nil, _ ∶ ⊠}

Page 21: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

12

Les nœuds résumés changent les interfaces !

...𝑘1. 𝑘2. ⇝... 𝑘3

𝑘1 ↦ {f ∶ +, _ ∶ ⊠} ⋆ 𝑘2 ↦ {f ∶ +, _ ∶ ⊠}⇝ 𝑘3 ↦ {f ∶ +, _ ∶ ⊠}

Page 22: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

13

Un exemple de manipulation de membrane

(𝑘 → 𝑘, 𝑙 → 𝑙 | x =̇ 𝑙 ⋆ 𝑙 ↦ {f ∶ 𝑘, _ ∶ ⊠} ⋆ 𝑘 ↦ {g ∶ 𝑘, _ ∶ ⊠})

...•.𝑙.x . 𝑘.f

.

g

. 𝑘′.

f?

. g?..

→.

𝑘

.

𝑘′

.→

.

𝑙

.

𝑘′

...

→.

𝑘

.

𝑘

.→

.

𝑙

.

𝑙

.

→.

𝑘

.

𝑘′

.→

.

𝑙

.

𝑘′

Page 23: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

13

Un exemple de manipulation de membrane

(𝑘 → 𝑘, 𝑙 → 𝑙 | x =̇ 𝑙 ⋆ 𝑙 ↦ {f ∶ 𝑘, _ ∶ ⊠} ⋆ 𝑘 ↦ {g ∶ 𝑘, _ ∶ ⊠})

.

..•.𝑙

.x

. 𝑘.f

.

g

. 𝑘′.

f?

. g?..

→.

𝑘

.

𝑘′

.→

.

𝑙

.

𝑘′

...

→.

𝑘

.

𝑘

.→

.

𝑙

.

𝑙

.

→.

𝑘

.

𝑘′

.→

.

𝑙

.

𝑘′

(𝑘 → 𝑘, 𝑙 → 𝑙 | x =̇ 𝑙)..⋆ (𝑘 → 𝑘′, 𝑙 → 𝑘′ ∣ 𝑘′ ↦ {f ∶ 𝑘′ ⊔ ⊠, g ∶ 𝑘′ ⊔ ⊠, _ ∶ ⊠})

Page 24: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

13

Un exemple de manipulation de membrane

(𝑘 → 𝑘, 𝑙 → 𝑙 | x =̇ 𝑙 ⋆ 𝑙 ↦ {f ∶ 𝑘, _ ∶ ⊠} ⋆ 𝑘 ↦ {g ∶ 𝑘, _ ∶ ⊠})

.

..•.𝑙

.x

. 𝑘.f

.

g

. 𝑘′.

f?

. g?

..

→.

𝑘

.

𝑘′

.→

.

𝑙

.

𝑘′

..

.

→.

𝑘

.

𝑘

.→

.

𝑙

.

𝑙

.

→.

𝑘

.

𝑘′

.→

.

𝑙

.

𝑘′

(𝑘 → 𝑘′, 𝑙 → 𝑘′ ∣ x =̇ 𝑘′ ⋆ 𝑘′ ↦ {f ∶ 𝑘′ ⊔ ⊠, g ∶ 𝑘′ ⊔ ⊠, _ ∶ ⊠})

Page 25: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

14

D’autres manipulations de membranes

Transormer un nœud 𝑙 précis en un nœud résumé 𝑘,

...•.𝑙. {𝑜}. 𝑘. {𝑜}. ⇝

Matérialisation de nœuds résumés,

....𝑘..

•.

𝑙

.{𝑜}

.f ...𝑘

..•

.

𝑙

.{𝑜}

. f. ⇝.. •. 𝑙′

Séparer les nœuds résumés selon un critère de filtre…

Page 26: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

15

Conclusion et travaux futurs

Vers un domaine pour JavaScript,Objects extensibles.Reste les clôtures, domaines pour chaînes de caractère, etc.

Compatible avec la logique de séparation,Compatible avec l’interprétation abstraite certifiée.

.Étapes suivantes..

.

Coq en cours.Un analyseur certifié d’un langage intermédiaire.Passer à l’échelle de JavaScript.

Page 27: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

16

Merci d’avoir écouté !(𝑘 → 𝑘 | x =̇ 𝑙)

..⋆ (𝑘 → 𝑘′, 𝑙 → 𝑘′ ∣ 𝑘′ ↦ {f ∶ 𝑘′ ⊔ ⊠, g ∶ 𝑘′ ⊔ ⊠, _ ∶ ⊠})

..x

.𝑘′

.

f?

.g?

..→

.

𝑘

.

𝑘′

.

.

𝑙

.

𝑘′

...→

.

𝑘0

.

𝑘

.

.

𝑙

.

𝑙

.

. Avez-vous des questions ?

Page 28: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

17

...1 Une Sémantique abstraite basée sur la sémantique concrète

...2 Logique de séparation

...3 Ajout des nœuds résumés

Page 29: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

18

Planches pour questions

Page 30: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

19

.. Syntax

.. Membrane syntax

.. Dark matter

.. Why the Dark matter ?

.. Abstract rules

.. A more complex example

Page 31: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

20

Syntaxe

𝑠 ∶∶= skip | 𝑠1; 𝑠2 | if 𝑒 𝑠1 𝑠2| while 𝑒 𝑠 | throw | x ∶= 𝑒| 𝑒1.f ∶= 𝑒2 | delete 𝑒.f

𝑒 ∶∶= 𝑛 ∈ ℤ | ? | x ∈ Var | nil| {} | 𝑒.f | f in 𝑒 | ¬ 𝑒| = 𝑒1 𝑒2 | 1 𝑒1 𝑒2 (1 ∈ {>,+,−})

Page 32: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

21

.. Syntax

.. Membrane syntax

.. Dark matter

.. Why the Dark matter ?

.. Abstract rules

.. A more complex example

Page 33: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

22

Syntax With Membranes

𝜙 ∶∶= emp | 𝜙1 ⋆ 𝜙2 | x =̇ 𝑣♯ | ℎ ↦ {𝑜}ℎ ∶∶= 𝑙 | 𝑘 𝑜 ∶∶= f ∶ 𝑣♯, 𝑜 | _ ∶ 𝑣♯

𝑚 ∈ 𝔐 ∶∶= ℎ → ℎ1 +…+ ℎ𝑛 | 𝜈ℎ

Φ ∶∶= (𝑀 | 𝜙) 𝑀 ∈ 𝒫𝑓 (𝔐)

Page 34: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

23

.. Syntax

.. Membrane syntax

.. Dark matter

.. Why the Dark matter ?

.. Abstract rules

.. A more complex example

Page 35: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

24

The One Problem of JavaScript

.An Introduction to Separation Logic, by John C. Reynolds..

.

The soundness of the frame rule is surprisingly sensitive to the semantics ofour programming language. Suppose, for example, we changed thebehavior of deallocation, so that, instead of causing a memory fault,dispose x behaved like skip when the value of x was not in the domain ofthe heap. Then {emp}dispose x{emp} would be valid, and the frame rulecould be used to infer {emp ⋆ x =̇ 10}dispose x{emp ⋆ x =̇ 10}. Then,since emp is a neutral element for ⋆, we would have{x =̇ 10}dispose x{x =̇ 10}, which is patently false.

JavaScript’s delete does exactly this.

Page 36: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

24

The One Problem of JavaScript

.An Introduction to Separation Logic, by John C. Reynolds..

.

{emp}dispose x{emp} AlreadyDisposed

{emp ⋆ x =̇ 10}dispose x{emp ⋆ x =̇ 10} Frame

{x =̇ 10}dispose x{x =̇ 10} Rewrite

JavaScript’s delete does exactly this.

Page 37: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

25

.. Syntax

.. Membrane syntax

.. Dark matter

.. Why the Dark matter ?

.. Abstract rules

.. A more complex example

Page 38: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

26

About the Dark Matter “⊠”Why do we need it ?

.

.

..

lexical environment

..𝑙0

.

.

𝑙2

.

.

𝑙𝑔x = 2

.. 𝑙1

.

.

𝑙3x = 1

.

.

𝑙4x = 3

It is very important to track the absence of properties in objects.

Page 39: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

27

About the Dark Matter “⊠”Can you tell the difference between these formulae ?

empTrue𝑙 ↦ {f ∶ ⊠, _ ∶ ⊠}𝑙 ↦ {f ∶ ⊠, _ ∶ ⊠} ⋆ 𝜙𝑙 ↦ {f ∶ ⊥, _ ∶ ⊠}

= False

𝛾 (emp) = 𝛾 (𝑙 ↦ {f ∶ ⊠, _ ∶ ⊠})

Page 40: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

27

About the Dark Matter “⊠”Can you tell the difference between these formulae ?

empTrue𝑙 ↦ {f ∶ ⊠, _ ∶ ⊠}𝑙 ↦ {f ∶ ⊠, _ ∶ ⊠} ⋆ 𝜙𝑙 ↦ {f ∶ ⊥, _ ∶ ⊠} = False

𝛾 (emp) = 𝛾 (𝑙 ↦ {f ∶ ⊠, _ ∶ ⊠})

Page 41: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

28

.. Syntax

.. Membrane syntax

.. Dark matter

.. Why the Dark matter ?

.. Abstract rules

.. A more complex example

Page 42: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

29

CPP’15 in a Nutshell : Abstract Rules

IfTrue𝐸, 𝑠1 ⇓ 𝐸′

(𝑣, 𝐸) , if 𝑠1 𝑠2 ..⇓ 𝐸′𝑣 ∈ ℤ⋆

IfFalse𝐸, 𝑠2 ⇓ 𝐸′

(𝑣, 𝐸) , if 𝑠1 𝑠2 ..⇓ 𝐸′𝑣 ∈ {0}

IfTrue𝐸♯, 𝑠1 ⇓♯ 𝐸′♯

(𝑣♯, 𝐸♯) , if 𝑠1 𝑠2 ..⇓♯ 𝐸′♯𝛾 (𝑣♯) ∩ ℤ⋆ ≠ ∅

IfFalse𝐸♯, 𝑠2 ⇓♯ 𝐸′♯

(𝑣♯, 𝐸♯) , if 𝑠1 𝑠2 ..⇓♯ 𝐸′♯𝛾 (𝑣♯) ∩ {0} ≠ ∅

.

Page 43: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

30

.. Syntax

.. Membrane syntax

.. Dark matter

.. Why the Dark matter ?

.. Abstract rules

.. A more complex example

Page 44: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

31

Updating the Frame Rule

.The ⋆ for membraned formulae Φ = (𝑀 |𝜙)... (𝑀 | 𝜙) ..⋆ (𝑀𝑐 | 𝜙𝑐) = « (𝑀𝑐 | (𝑀 | 𝜙) ⋆ 𝜙𝑐) »

FrameΦ, 𝑠 ⇓♯ Φ′

Φ ..⋆ Φ𝑐, 𝑠 ⇓♯ Φ′ ..⋆ Φ𝑐

Page 45: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

32

.. Syntax

.. Membrane syntax

.. Dark matter

.. Why the Dark matter ?

.. Abstract rules

.. A more complex example

Page 46: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

33

Example

x ∶= nil;while ? (

t ∶= x;x ∶= {};if ? (

x.t ∶= 0;x.f ∶= t

)(x.t ∶= 1;x.g ∶= t;x.f ∶= 42

));while x ≠ nil (

if x.t (x ∶= x.g)(x ∶= x.f))

..t

.

t

.

f

.

g

.

f

.

g

.

f

.

g

.

f

.𝑘0.

𝑘1

. 0.

1

.

42

.

x

We can express a loop invariant wi-thout adding new constructions !

Page 47: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

34

.. Syntax

.. Membrane syntax

.. Dark matter

.. Why the Dark matter ?

.. Abstract rules

.. A more complex example

Page 48: An Abstract Separation Logic for Interlinked Extensible ...people.rennes.inria.fr/Martin.Bodin/paperoj/jfla16_slides.pdf · 1.. An Abstract Separation Logic for Interlinked Extensible

35

...1 Une Sémantique abstraite basée sur la sémantique concrète

...2 Logique de séparation

...3 Ajout des nœuds résumés