Top Banner
Logical Reasoning for Disjoint Permissions Xuan-Bach Le Aquinas Hobor ESOP 2018, Thessaloniki, Greece
68

Logical Reasoning for Disjoint Permissions

Apr 30, 2022

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Logical Reasoning for Disjoint Permissions

Logical Reasoning for Disjoint Permissions

Xuan-Bach Le Aquinas Hobor

ESOP 2018, Thessaloniki, Greece

Page 2: Logical Reasoning for Disjoint Permissions

This talk is about ...

Permission reasoning in Concurrent Separation Logic

Page 3: Logical Reasoning for Disjoint Permissions

3

Some notations

● Mapsto predicate

x

Page 4: Logical Reasoning for Disjoint Permissions

4

Some notations

● Mapsto predicate

● Fractional mapsto predicate

x

x

Page 5: Logical Reasoning for Disjoint Permissions

5

Some notations

● Mapsto predicate

● Fractional mapsto predicate

● Disjoint conjunction

x

x

Page 6: Logical Reasoning for Disjoint Permissions

6

Predicate multiplication

permission predicate

Page 7: Logical Reasoning for Disjoint Permissions

7

Ownership reasoning

class Example {

   BinaryTree t;

   void shareTree{

fork();

     readTree(t);

wait();

  deallocate(t);

   }

}

Page 8: Logical Reasoning for Disjoint Permissions

8

Ownership reasoning

class Example {

   BinaryTree t;

   void shareTree{

fork();

     readTree(t);

wait();

  deallocate(t);

   }

}

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

Page 9: Logical Reasoning for Disjoint Permissions

9

Case study: Rational permissions

● Model:

● Examples:

● Combine permissions:

Page 10: Logical Reasoning for Disjoint Permissions

10

Reasoning with rational permissions (expected result)

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

Page 11: Logical Reasoning for Disjoint Permissions

11

Reasoning with rational permissions (expected result)

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

Page 12: Logical Reasoning for Disjoint Permissions

12

Reasoning with rational permissions (expected result)

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

Page 13: Logical Reasoning for Disjoint Permissions

13

Reasoning with rational permissions (expected result)

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

Page 14: Logical Reasoning for Disjoint Permissions

14

Reasoning with rational permissions (expected result)

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

Page 15: Logical Reasoning for Disjoint Permissions

15

Reasoning with rational permissions (expected result)

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

Page 16: Logical Reasoning for Disjoint Permissions

16

Reasoning with rational permissions (expected result)

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

Page 17: Logical Reasoning for Disjoint Permissions

17

Reasoning with rational permissions (expected result)

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

Page 18: Logical Reasoning for Disjoint Permissions

18

Shortcomming of Rationals

Page 19: Logical Reasoning for Disjoint Permissions

19

Shortcomming of Rationals

Page 20: Logical Reasoning for Disjoint Permissions

20

Shortcomming of Rationals

The latter is always a tree possibly a DAG!

a

b

00

Page 21: Logical Reasoning for Disjoint Permissions

21

Diagnosis

● Without permissions

is not satisfiable

x v x v

Page 22: Logical Reasoning for Disjoint Permissions

22

Diagnosis

● Without permissions

● With permissions

is not satisfiable

is equivalent to

x v x v

x (v,1/2) x (v,1/2) x (v,1)

Page 23: Logical Reasoning for Disjoint Permissions

23

Diagnosis

● Without permissions

● With permissions

is not satisfiable

is equivalent to

x v x v

x (v,1/2) x (v,1/2) x (v,1)

Rational permissions fail to preserve the disjointness property of Separation Logic!

Page 24: Logical Reasoning for Disjoint Permissions

24

This talk

1. Disjoint permission model

2. Inference systems

3. Disjoint permission analysis

Page 25: Logical Reasoning for Disjoint Permissions

25

Disjoint permission model

partial addition

total multiplication

additive identity

multiplicative identity

Page 26: Logical Reasoning for Disjoint Permissions

26

Disjoint permission model

● Axioms from semiring:– Commutativity over addition

– Associativity over multiplication

– Right distributivity of multiplication over addition

– ...

● Disjointness axiom:

Page 27: Logical Reasoning for Disjoint Permissions

27

Disjoint permission model

● Axioms from semiring:– Commutativity over addition

– Associativity over multiplication

– Right distributivity of multiplication over addition

– ...

● Disjointness axiom:

Not true with rationals!

Page 28: Logical Reasoning for Disjoint Permissions

28

Enable efficient bi-abduction reasoning

● Complete a partial entailment

● With disjoint permissions

● Automatic tool ShareInfer

Page 29: Logical Reasoning for Disjoint Permissions

29

Enable efficient bi-abduction reasoning

● Complete a partial entailment

● With disjoint permissions

● Automatic tool ShareInfer

Page 30: Logical Reasoning for Disjoint Permissions

30

Enable efficient bi-abduction reasoning

● Complete a partial entailment

● With disjoint permissions

● Automatic tool ShareInfer

Page 31: Logical Reasoning for Disjoint Permissions

31

Roadmap

● Predicate multiplication with disjoint permissions

● Inference systems

● Disjoint permissions analysis

Page 32: Logical Reasoning for Disjoint Permissions

32

Overview of inference system● 10/13 rules are bidirectional

● Some rules don’t hold with rational permissions

Page 33: Logical Reasoning for Disjoint Permissions

33

A closer look

Initiate the sharing mechanism

DOTFULL

Page 34: Logical Reasoning for Disjoint Permissions

34

A closer look

Collapse nested permissions

DOTDOT

Page 35: Logical Reasoning for Disjoint Permissions

35

A closer look

Splitting permissions over predicate

precise(P): P cannot hold in 2 subheaps simultaneously

DOTPLUS

Page 36: Logical Reasoning for Disjoint Permissions

36

A closer look

Distribute permissions over predicates

uniform( ): all addresses have permission

DOTSTAR

Page 37: Logical Reasoning for Disjoint Permissions

37

Inductive Reasoning(honourable mention)

● Inference system for inductive reasoning

– 8 inference rules

– Induction over finiteness of fractional heap

– Can prove side conditions precise, uniform

– Implementation: ShareInfer tool

Page 38: Logical Reasoning for Disjoint Permissions

38

Example

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

Page 39: Logical Reasoning for Disjoint Permissions

39

Example

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

DotFull

Page 40: Logical Reasoning for Disjoint Permissions

40

Example

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

DotFull

DotPlus

Page 41: Logical Reasoning for Disjoint Permissions

41

Example

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

DotFull

DotPlus

Page 42: Logical Reasoning for Disjoint Permissions

42

Example

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

DotFull

DotPlus

DotStar

Page 43: Logical Reasoning for Disjoint Permissions

43

Example

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

DotFull

DotPlus

DotStar

Page 44: Logical Reasoning for Disjoint Permissions

44

Example

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

DotFull

DotPlus

DotPlus

DotStar

Page 45: Logical Reasoning for Disjoint Permissions

45

Example

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

DotFull

DotPlus

DotPlus

DotFull

DotStar

Page 46: Logical Reasoning for Disjoint Permissions

46

Example

Parent process

fork()

readTree(t)

wait()

deallocate(t)

Child process

readTree(t)

wait()

DotFull

DotPlus

DotPlus

DotFull

DotStar

Page 47: Logical Reasoning for Disjoint Permissions

47

Soundness

● Prove over fractional heap model:

a1

... ...

an

Page 48: Logical Reasoning for Disjoint Permissions

48

Soundness

● Prove over fractional heap model:

a1

... ...

an

a1

... ...

an

a1

... ...

an

● Heap multiplication:

Page 49: Logical Reasoning for Disjoint Permissions

49

Soundness

● Prove over fractional heap model:

a1

... ...

an

a1

... ...

an

a1

... ...

an

● Heap multiplication:

● Predicate multiplication:

Page 50: Logical Reasoning for Disjoint Permissions

50

Soundness

disjoint permission axioms inference rules

Page 51: Logical Reasoning for Disjoint Permissions

51

Soundness

disjoint permission axioms inference rules

Example:

Associativity of

Page 52: Logical Reasoning for Disjoint Permissions

52

Roadmap

● Predicate multiplication with disjoint permissions

● Inference systems

● Disjoint permissions analysis

Page 53: Logical Reasoning for Disjoint Permissions

53

Inference rules force permission axioms

inference rules disjoint permission axioms

Page 54: Logical Reasoning for Disjoint Permissions

54

Inference rules force permission axioms

inference rules disjoint permission axioms

DOTFULL

Example:

Page 55: Logical Reasoning for Disjoint Permissions

55

Inference rules force permission axioms

inference rules disjoint permission axioms

Proof sketch: Let P be and .

By definition,

As , we also have Thus . QED

x

x

DOTFULL

Example:

Page 56: Logical Reasoning for Disjoint Permissions

56

Disjointness in a multiplicative setting

● Disjointness axiom (D)

● Left distributivity (LD)

● Right distributivity (RD)

Page 57: Logical Reasoning for Disjoint Permissions

57

Disjointness in a multiplicative setting

● Disjointness axiom (D)

● Left distributivity (LD)

● Right distributivity (RD)

D + LD + RD + other standard axioms Trivial models

Page 58: Logical Reasoning for Disjoint Permissions

58

Disjointness in a multiplicative setting

● Disjointness axiom (D)

● Left distributivity (LD)

● Right distributivity (RD)

D + LD + RD + other standard axioms Good models

Page 59: Logical Reasoning for Disjoint Permissions

59

Disjointness in a multiplicative setting

Multiplicative left inverse (LI):

Page 60: Logical Reasoning for Disjoint Permissions

60

Disjointness in a multiplicative setting

Multiplicative left inverse (LI):

D + (LD or RD) + LI + other axioms Trivial models

Page 61: Logical Reasoning for Disjoint Permissions

61

Disjointness in a multiplicative setting

Multiplicative left inverse (LI):

D + (LD or RD) + LI + other axioms Good models

Page 62: Logical Reasoning for Disjoint Permissions

62

Scaling separation algebra

Capture characteristics of fractional heaps

Heap components Permission components

Page 63: Logical Reasoning for Disjoint Permissions

63

Scaling separation algebra

Capture characteristics of fractional heaps

a1

a2

a1

a3

a1

a2

a3

Heap join:

Page 64: Logical Reasoning for Disjoint Permissions

64

Scaling separation algebra

Capture characteristics of fractional heaps

mul( , )

a1

... ...

an

a1

... ...

an

Heap mul:

Page 65: Logical Reasoning for Disjoint Permissions

65

Scaling separation algebra

Capture characteristics of fractional heaps

Heap force:

force( , )

a1

... ...

an

a1

... ...

an

Page 66: Logical Reasoning for Disjoint Permissions

66

Scaling separation algebra

14 axioms for scaling separation algebra

Axioms for fractional heaps

Page 67: Logical Reasoning for Disjoint Permissions

67

A graphical summary

Disjoint permission axioms

Inference rules for predicate multiplication

Scaling separationalgebra

Page 68: Logical Reasoning for Disjoint Permissions

68

Conclusion

● We proposed inference systems (with tool support) for predicate multiplication with disjoint permissions.

● Our soundness proof is verified in Coq using fractional heap model and Scaling Separation Algebra.

● We justified why certain properties of disjoint permissions cannot hold simultaneously.

● Future work: further investigation for permission algebra and Scaling Separation Algebra.

Thank you!