Sid iddh dharth Kr h Kris ishn hna procedure insert(lst: Node , - - PowerPoint PPT Presentation

β–Ά
sid iddh dharth kr h kris ishn hna
SMART_READER_LITE
LIVE PREVIEW

Sid iddh dharth Kr h Kris ishn hna procedure insert(lst: Node , - - PowerPoint PPT Presentation

Sid iddh dharth Kr h Kris ishn hna procedure insert(lst: Node , elt: Node ) returns (res: Node ) requires , ensures (,


slide-1
SLIDE 1

Sid iddh dharth Kr h Kris ishn hna

slide-2
SLIDE 2

procedure insert(lst: Node, elt: Node) returns (res: Node) requires π‘“π‘šπ‘’ ↦ π‘œπ‘£π‘šπ‘š βˆ— π‘šπ‘‘π‘“π‘• π‘šπ‘‘π‘’, π‘œπ‘£π‘šπ‘š ensures π‘šπ‘‘π‘“π‘•(𝑠𝑓𝑑, π‘œπ‘£π‘šπ‘š) { if (lst != null) { var curr := lst; while (nondet() && curr.next != null) invariant 𝑑𝑣𝑠𝑠 β‰  π‘œπ‘£π‘šπ‘š ∢ π‘“π‘šπ‘’ ↦ π‘œπ‘£π‘šπ‘š βˆ— π‘šπ‘‘π‘“π‘• π‘šπ‘‘π‘’, 𝑑𝑣𝑠𝑠 βˆ— π‘šπ‘‘π‘“π‘• 𝑑𝑣𝑠𝑠, π‘œπ‘£π‘šπ‘š { curr := curr.next; } elt.next := curr.next; curr.next := elt; return lst; } else return elt; }

slide-3
SLIDE 3

procedure insertion_sort(lst: Node) requires π‘šπ‘‘π‘“π‘• π‘šπ‘‘π‘’, π‘œπ‘£π‘šπ‘š βˆ— π‘šπ‘‘π‘’ β‰  π‘œπ‘£π‘šπ‘š ensures π‘‘π‘šπ‘‘π‘“π‘•(π‘šπ‘‘π‘’, π‘œπ‘£π‘šπ‘š) { var prv := null, srt := lst; while (srt != null) invariant (π‘žπ‘ π‘€ = π‘œπ‘£π‘šπ‘š βˆ— 𝑑𝑠𝑒 = π‘šπ‘‘π‘’ βˆ— π‘šπ‘‘π‘“π‘•(π‘šπ‘‘π‘’, π‘œπ‘£π‘šπ‘š)) || (π‘šπ‘‘π‘“π‘• (π‘šπ‘‘π‘’, π‘žπ‘ π‘€) βˆ— π‘žπ‘  ↦ 𝑑𝑠𝑒 βˆ— π‘šπ‘‘π‘“π‘• (𝑑𝑠𝑒, π‘œπ‘£π‘šπ‘š)) { var curr := srt.next; var min := srt; while (curr != null) invariant π‘žπ‘ π‘€ = π‘œπ‘£π‘šπ‘š βˆ— π‘šπ‘‘π‘“π‘• π‘šπ‘‘π‘’, 𝑑𝑠𝑒 βˆ— π‘šπ‘‘π‘“π‘• 𝑑𝑠𝑒, π‘›π‘—π‘œ βˆ— π‘šπ‘‘π‘“π‘• π‘›π‘—π‘œ, 𝑑𝑣𝑠𝑠 βˆ— π‘šπ‘‘π‘“π‘• 𝑑𝑣𝑠𝑠, π‘œπ‘£π‘šπ‘š || (π‘šπ‘‘π‘“π‘•(π‘šπ‘‘π‘’, π‘žπ‘ π‘€) βˆ— π‘šπ‘‘π‘“π‘• (π‘žπ‘ π‘€, 𝑑𝑠𝑒) βˆ— π‘šπ‘‘π‘“π‘• 𝑑𝑠𝑒, π‘›π‘—π‘œ βˆ— π‘šπ‘‘π‘“π‘• π‘›π‘—π‘œ, 𝑑𝑣𝑠𝑠 βˆ— π‘šπ‘‘π‘“π‘•(𝑑𝑣𝑠𝑠, π‘œπ‘£π‘šπ‘š)) invariant π‘›π‘—π‘œ β‰  π‘œπ‘£π‘šπ‘š { if (curr.data < min.data) { min := curr; } curr := curr.next; } var tmp := min.data; min.data := srt.data; srt.data := tmp; prv := srt; srt := srt.next; } }

slide-4
SLIDE 4

procedure insert(lst: Node, elt: Node) returns (res: Node) requires π‘“π‘šπ‘’ ↦ π‘œπ‘£π‘šπ‘š βˆ— π‘šπ‘‘π‘“π‘• π‘šπ‘‘π‘’, π‘œπ‘£π‘šπ‘š ensures π‘šπ‘‘π‘“π‘•(𝑠𝑓𝑑, π‘œπ‘£π‘šπ‘š) { if (lst != null) { var curr := lst; while (nondet() && curr.next != null) { invariant 𝑑𝑣𝑠𝑠 β‰  π‘œπ‘£π‘šπ‘š ∢ π‘“π‘šπ‘’ ↦ π‘œπ‘£π‘šπ‘š βˆ— π‘šπ‘‘π‘“π‘•(π‘šπ‘‘π‘’, 𝑑𝑣𝑠𝑠) βˆ— π‘šπ‘‘π‘“π‘• 𝑑𝑣𝑠𝑠, π‘œπ‘£π‘šπ‘š curr := curr.next; } elt.next := curr.next; curr.next := elt; return lst; } else return elt; } ... ... ...

slide-5
SLIDE 5

𝑑𝑣𝑠𝑠 β‰  π‘œπ‘£π‘šπ‘š ∢ π‘“π‘šπ‘’ ↦ π‘œπ‘£π‘šπ‘š βˆ— π‘šπ‘‘π‘“π‘•(π‘šπ‘‘π‘’, 𝑑𝑣𝑠𝑠) βˆ— π‘šπ‘‘π‘“π‘• 𝑑𝑣𝑠𝑠, π‘œπ‘£π‘šπ‘š

slide-6
SLIDE 6
slide-7
SLIDE 7
slide-8
SLIDE 8

x 1

π‘“π‘›π‘ž

slide-9
SLIDE 9

x 1

𝑧 ↦ 𝑨

slide-10
SLIDE 10

x 1

𝑧 ↦ 𝑨 βˆ— 𝑨 ↦ 𝑧

slide-11
SLIDE 11

x 1

𝑧 ↦ 𝑨 ∧ 𝑨 ↦ 𝑧

slide-12
SLIDE 12

x 1

𝑦 = 1 ∢ 𝑧 ↦ 𝑨 βˆ— 𝑨 ↦ 𝑧

slide-13
SLIDE 13

π‘šπ‘‘π‘“π‘• 𝑦, 𝑧 ≔ βˆƒ 𝑨. 𝑦 = 𝑧 ∢ π‘“π‘›π‘ž ∨ (𝑦 β‰  𝑧 ∢ 𝑦 ↦ 𝑨 βˆ— π‘šπ‘‘π‘“π‘• 𝑨, 𝑧 )

k 1

π‘šπ‘‘π‘“π‘• 𝑦, π‘œπ‘£π‘šπ‘š ≑ βˆƒπ‘¨ . 𝑦 β‰  π‘œπ‘£π‘šπ‘š ∢ 𝑦 ↦ 𝑨 βˆ— π‘šπ‘‘π‘“π‘• 𝑨, π‘œπ‘£π‘šπ‘š ≑ … ≑ 𝑦 ↦ 𝑨 βˆ— 𝑨 ↦ π‘œπ‘£π‘šπ‘š βˆ— π‘“π‘›π‘ž

slide-14
SLIDE 14
slide-15
SLIDE 15

(𝑧 β‰₯ 𝑦)

slide-16
SLIDE 16

Formulas

𝑑𝑣𝑠𝑠 β‰  π‘œπ‘£π‘šπ‘š ∢ π‘“π‘šπ‘’ ↦ π‘œπ‘£π‘šπ‘š βˆ— π‘šπ‘‘π‘“π‘•(π‘šπ‘‘π‘’, 𝑑𝑣𝑠𝑠) βˆ— π‘šπ‘‘π‘“π‘• 𝑑𝑣𝑠𝑠, π‘œπ‘£π‘šπ‘š

Graphs

slide-17
SLIDE 17

πΊπ‘π‘ π‘›π‘£π‘šπ‘ π‘Šπ‘π‘  πΊπ‘π‘ π‘›π‘£π‘šπ‘ | πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ | π‘“π‘›π‘ž πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΉπ‘¦π‘žπ‘  πΉπ‘¦π‘žπ‘  π‘Šπ‘π‘  π‘Šπ‘π‘  π‘Šπ‘π‘  π‘Šπ‘π‘  πΊπ‘π‘ π‘›π‘£π‘šπ‘ πΉπ‘¦π‘žπ‘  π‘Šπ‘π‘  π‘Šπ‘π‘  π‘Šπ‘π‘  π‘Šπ‘π‘  πΊπ‘π‘ π‘›π‘£π‘šπ‘ πΉπ‘¦π‘žπ‘  π‘Šπ‘π‘ 

slide-18
SLIDE 18

πΊπ‘π‘ π‘›π‘£π‘šπ‘ β†’ βˆƒ π‘Šπ‘π‘  πΊπ‘π‘ π‘›π‘£π‘šπ‘ | πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ | π‘“π‘›π‘ž πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΉπ‘¦π‘žπ‘  πΉπ‘¦π‘žπ‘  π‘Šπ‘π‘  π‘Šπ‘π‘  π‘Šπ‘π‘  π‘Šπ‘π‘  πΊπ‘π‘ π‘›π‘£π‘šπ‘ πΉπ‘¦π‘žπ‘  π‘Šπ‘π‘  π‘Šπ‘π‘  π‘Šπ‘π‘  π‘Šπ‘π‘  πΊπ‘π‘ π‘›π‘£π‘šπ‘ πΉπ‘¦π‘ž π‘Šπ‘π‘ 

πΊπ‘π‘ π‘›π‘£π‘šπ‘ 𝑒 πΊπ‘π‘ π‘›π‘£π‘šπ‘ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ πΉπ‘¦π‘žπ‘  πΉπ‘¦π‘žπ‘  πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘

slide-19
SLIDE 19

πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΉπ‘¦π‘žπ‘  πΉπ‘¦π‘žπ‘  π‘Šπ‘π‘  π‘Šπ‘π‘  π‘Šπ‘π‘  π‘Šπ‘π‘  πΊπ‘π‘ π‘›π‘£π‘šπ‘ πΉπ‘¦π‘žπ‘  π‘Šπ‘π‘  π‘Šπ‘π‘  π‘Šπ‘π‘  π‘Šπ‘π‘  πΊπ‘π‘ π‘›π‘£π‘šπ‘

slide-20
SLIDE 20

πΊπ‘π‘ π‘›π‘£π‘šπ‘ 𝑒 πΊπ‘π‘ π‘›π‘£π‘šπ‘ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ πΉπ‘¦π‘žπ‘  πΉπ‘¦π‘žπ‘ 

2

𝑦 𝑒

3 4 5 6

πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘

πΊπ‘π‘ π‘›π‘£π‘šπ‘ β†’ βˆƒ π‘Šπ‘π‘  . πΊπ‘π‘ π‘›π‘£π‘šπ‘ | πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ β†’ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ βˆ— πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ | π‘“π‘›π‘ž πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ β†’ ls πΉπ‘¦π‘žπ‘ , πΉπ‘¦π‘žπ‘ , … | tree πΉπ‘¦π‘žπ‘ , … πΉπ‘¦π‘ž β†’ 0 ∣ π‘Šπ‘π‘ 

slide-21
SLIDE 21

π‘šπ‘‘π‘“π‘• π‘šπ‘‘π‘’, 𝑑𝑣𝑠𝑠 π‘šπ‘‘π‘“π‘• 𝑑𝑣𝑠𝑠, π‘šπ‘‘π‘’ π‘šπ‘‘π‘“π‘• π‘šπ‘‘π‘’, 𝑑𝑣𝑠𝑠 βˆ— π‘šπ‘‘π‘“π‘• 𝑑𝑣𝑠𝑠, π‘œπ‘£π‘šπ‘š ... 𝑑𝑣𝑠𝑠 β‰  π‘œπ‘£π‘šπ‘š ∢ π‘“π‘šπ‘’ ↦ π‘œπ‘£π‘šπ‘š βˆ— π‘šπ‘‘π‘“π‘• π‘šπ‘‘π‘’, 𝑑𝑣𝑠𝑠 βˆ— π‘šπ‘‘π‘“π‘• 𝑑𝑣𝑠𝑠, π‘œπ‘£π‘šπ‘š ...

slide-22
SLIDE 22

πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ β†’ ls πΉπ‘¦π‘žπ‘ , πΉπ‘¦π‘žπ‘ , _ | tree πΉπ‘¦π‘žπ‘ , _

𝑑𝑣𝑠𝑠 β‰  π‘œπ‘£π‘šπ‘š ∢ π‘“π‘šπ‘’ ↦ π‘œπ‘£π‘šπ‘š βˆ— π‘šπ‘‘π‘“π‘• π‘šπ‘‘π‘’, 𝑑𝑣𝑠𝑠 βˆ— π‘šπ‘‘π‘“π‘• 𝑑𝑣𝑠𝑠, π‘œπ‘£π‘šπ‘š

slide-23
SLIDE 23

πΊπ‘π‘ π‘›π‘£π‘šπ‘ π‘Šπ‘π‘  πΊπ‘π‘ π‘›π‘£π‘šπ‘ | πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘

πΊπ‘π‘ π‘›π‘£π‘šπ‘ 𝑒 πΊπ‘π‘ π‘›π‘£π‘šπ‘

2

𝑦 𝑒

3 4 5 6

slide-24
SLIDE 24

πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ | π‘“π‘›π‘ž

πΊπ‘π‘ π‘›π‘£π‘šπ‘ 𝑒 πΊπ‘π‘ π‘›π‘£π‘šπ‘ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘

2

𝑦 𝑒

3 4 5 6

πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘

slide-25
SLIDE 25

πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΉπ‘¦π‘žπ‘  πΉπ‘¦π‘žπ‘  πΉπ‘¦π‘žπ‘ 

πΊπ‘π‘ π‘›π‘£π‘šπ‘ 𝑒 πΊπ‘π‘ π‘›π‘£π‘šπ‘ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ πΉπ‘¦π‘žπ‘  πΉπ‘¦π‘žπ‘ 

2

𝑦 𝑒

3 4 5 6

πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘

slide-26
SLIDE 26

πΉπ‘¦π‘žπ‘  π‘Šπ‘π‘ 

2

𝑦 𝑒

3 4 5 6

πΊπ‘π‘ π‘›π‘£π‘šπ‘ 𝑒 πΊπ‘π‘ π‘›π‘£π‘šπ‘ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ πΉπ‘¦π‘žπ‘  πΉπ‘¦π‘žπ‘  πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘

slide-27
SLIDE 27

Numeric Invariants:

  • Training at verification time
  • Training data: Observations
  • Desired Invariant

~ Model Our Heap Invariants:

  • Training beforehand
  • Training data: Independent
  • Desired Invariant

~ Predicted Label

slide-28
SLIDE 28
slide-29
SLIDE 29
slide-30
SLIDE 30
slide-31
SLIDE 31
slide-32
SLIDE 32
slide-33
SLIDE 33

...

slide-34
SLIDE 34

These slides from David Sontag, adapted from Luke Zettlemoyer, Vibhav Gogate, Carlos Guestrin, Andrew Moore, Dan Klein

slide-35
SLIDE 35
slide-36
SLIDE 36
slide-37
SLIDE 37
slide-38
SLIDE 38
slide-39
SLIDE 39

procedure insert(lst: Node, elt: Node) returns (res: Node) requires π‘“π‘šπ‘’ ↦ π‘œπ‘£π‘šπ‘š βˆ— π‘šπ‘‘π‘“π‘• π‘šπ‘‘π‘’, π‘œπ‘£π‘šπ‘š ensures π‘šπ‘‘π‘“π‘•(𝑠𝑓𝑑, π‘œπ‘£π‘šπ‘š) { if (lst != null) { var curr := lst; while ( ? && curr.next != null) { curr := curr.next; } elt.next := curr.next; curr.next := elt; return lst; } } 𝑑𝑣𝑠𝑠 β‰  π‘œπ‘£π‘šπ‘š ∢ π‘“π‘šπ‘’ ↦ π‘œπ‘£π‘šπ‘š βˆ— π‘šπ‘‘π‘“π‘•(π‘šπ‘‘π‘’, 𝑑𝑣𝑠𝑠) βˆ— π‘šπ‘‘π‘“π‘• 𝑑𝑣𝑠𝑠, π‘œπ‘£π‘šπ‘š procedure insert(lst: Node, elt: Node) returns (res: Node) requires π‘“π‘šπ‘’ ↦ π‘œπ‘£π‘šπ‘š βˆ— π‘šπ‘‘π‘“π‘• π‘šπ‘‘π‘’, π‘œπ‘£π‘šπ‘š ensures π‘šπ‘‘π‘“π‘•(𝑠𝑓𝑑, π‘œπ‘£π‘šπ‘š) { if (lst != null) { var curr := lst; while ( ? && curr.next != null) invariant 𝑑𝑣𝑠𝑠 β‰  π‘œπ‘£π‘šπ‘š ∢ π‘“π‘šπ‘’ ↦ π‘œπ‘£π‘šπ‘š βˆ— π‘šπ‘‘π‘“π‘•(π‘šπ‘‘π‘’, 𝑑𝑣𝑠𝑠) βˆ— π‘šπ‘‘π‘“π‘• 𝑑𝑣𝑠𝑠, π‘œπ‘£π‘šπ‘š { curr := curr.next; } elt.next := curr.next; curr.next := elt; return lst; } } Grasshopper picture from this blog

slide-40
SLIDE 40
slide-41
SLIDE 41

lseg(lst, curr) [] [2] [2, 4] lseg(curr, null) [2, 4, 6, 9] [4, 6, 9] [6, 9] lseg(elt, null) [7] [7] [7] lst.data 2 2 2 curr.data 2 4 6 elt.data 7 7 7

... ... ... βˆ€π‘£. 𝑣 ∈ 𝐺𝑄 π‘šπ‘‘π‘“π‘• π‘šπ‘‘π‘’, 𝑑𝑣𝑠𝑠 β‡’ 𝑣. 𝑒𝑏𝑒𝑏 < 𝑑𝑣𝑠𝑠. 𝑒𝑏𝑒𝑏 βˆ€π‘£, 𝑀. 𝐺𝑄 π‘šπ‘‘π‘“π‘• π‘šπ‘‘π‘’, 𝑑𝑣𝑠𝑠 : 𝑣 β†’+ 𝑀 β‡’ 𝑣. 𝑒𝑏𝑒𝑏 ≀ 𝑀. 𝑒𝑏𝑒𝑏 βˆ€π‘£, 𝑀. 𝐺𝑄 π‘šπ‘‘π‘“π‘• 𝑑𝑣𝑠𝑠, π‘œπ‘£π‘šπ‘š : 𝑣 β†’+ 𝑀 β‡’ 𝑣. 𝑒𝑏𝑒𝑏 ≀ 𝑀. 𝑒𝑏𝑒𝑏 𝑑𝑣𝑠𝑠. 𝑒𝑏𝑒𝑏 ≀ π‘“π‘šπ‘’. 𝑒𝑏𝑒𝑏

slide-42
SLIDE 42
  • Analog to functional version from:

He Zhu, Gustavo Petri, Suresh Jagannathan, Automatically Learning Shape Specifications, PLDI 2016

slide-43
SLIDE 43
slide-44
SLIDE 44

Picture from Aqua Teen Hunger Force Wikia

slide-45
SLIDE 45
slide-46
SLIDE 46
slide-47
SLIDE 47