Transcript
Page 1: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

Siddharth Krishna

Page 2: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

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;

}

Page 3: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

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;

}}

Page 4: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

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;

}

...

...

...

Page 5: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

𝑐𝑢𝑟𝑟 ≠ 𝑛𝑢𝑙𝑙 ∶𝑒𝑙𝑡 ↦ 𝑛𝑢𝑙𝑙 ∗ 𝑙𝑠𝑒𝑔(𝑙𝑠𝑡, 𝑐𝑢𝑟𝑟) ∗ 𝑙𝑠𝑒𝑔 𝑐𝑢𝑟𝑟, 𝑛𝑢𝑙𝑙

Page 6: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM
Page 7: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM
Page 8: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

x 1

𝑒𝑚𝑝

Page 9: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

x 1

𝑦 ↦ 𝑧

Page 10: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

x 1

𝑦 ↦ 𝑧 ∗ 𝑧 ↦ 𝑦

Page 11: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

x 1

𝑦 ↦ 𝑧 ∧ 𝑧 ↦ 𝑦

Page 12: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

x 1

𝑥 = 1 ∶ 𝑦 ↦ 𝑧 ∗ 𝑧 ↦ 𝑦

Page 13: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

𝑙𝑠𝑒𝑔 𝑥, 𝑦 ≔ ∃ 𝑧. 𝑥 = 𝑦 ∶ 𝑒𝑚𝑝 ∨ (𝑥 ≠ 𝑦 ∶ 𝑥 ↦ 𝑧 ∗ 𝑙𝑠𝑒𝑔 𝑧, 𝑦 )

k 1

𝑙𝑠𝑒𝑔 𝑥, 𝑛𝑢𝑙𝑙≡ ∃𝑧 . 𝑥 ≠ 𝑛𝑢𝑙𝑙 ∶ 𝑥 ↦ 𝑧 ∗ 𝑙𝑠𝑒𝑔 𝑧, 𝑛𝑢𝑙𝑙≡ …≡ 𝑥 ↦ 𝑧 ∗ 𝑧 ↦ 𝑛𝑢𝑙𝑙 ∗ 𝑒𝑚𝑝

Page 14: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM
Page 15: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

(𝑦 ≥ 𝑥)

Page 16: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

Formulas

𝑐𝑢𝑟𝑟 ≠ 𝑛𝑢𝑙𝑙 ∶ 𝑒𝑙𝑡 ↦ 𝑛𝑢𝑙𝑙 ∗𝑙𝑠𝑒𝑔(𝑙𝑠𝑡, 𝑐𝑢𝑟𝑟) ∗ 𝑙𝑠𝑒𝑔 𝑐𝑢𝑟𝑟, 𝑛𝑢𝑙𝑙

Graphs

Page 17: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

𝐹𝑜𝑟𝑚𝑢𝑙𝑎 𝑉𝑎𝑟 𝐹𝑜𝑟𝑚𝑢𝑙𝑎 | 𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠

𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠 𝐻𝑒𝑎𝑝𝑙𝑒𝑡 𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠 | 𝑒𝑚𝑝

𝐻𝑒𝑎𝑝𝑙𝑒𝑡 𝐸𝑥𝑝𝑟 𝐸𝑥𝑝𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝐹𝑜𝑟𝑚𝑢𝑙𝑎

𝐸𝑥𝑝𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝐹𝑜𝑟𝑚𝑢𝑙𝑎

𝐸𝑥𝑝𝑟 𝑉𝑎𝑟

Page 18: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

𝐹𝑜𝑟𝑚𝑢𝑙𝑎 → ∃ 𝑉𝑎𝑟 𝐹𝑜𝑟𝑚𝑢𝑙𝑎 | 𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠 𝐻𝑒𝑎𝑝𝑙𝑒𝑡 𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠 | 𝑒𝑚𝑝

𝐻𝑒𝑎𝑝𝑙𝑒𝑡 𝐸𝑥𝑝𝑟 𝐸𝑥𝑝𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝐹𝑜𝑟𝑚𝑢𝑙𝑎

𝐸𝑥𝑝𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝐹𝑜𝑟𝑚𝑢𝑙𝑎𝐸𝑥𝑝 𝑉𝑎𝑟 𝐹𝑜𝑟𝑚𝑢𝑙𝑎

𝑡 𝐹𝑜𝑟𝑚𝑢𝑙𝑎

𝐻𝑒𝑎𝑝𝑙𝑒𝑡 𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠

𝐸𝑥𝑝𝑟 𝐸𝑥𝑝𝑟

𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠

Page 19: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

𝐻𝑒𝑎𝑝𝑙𝑒𝑡 𝐸𝑥𝑝𝑟 𝐸𝑥𝑝𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝐹𝑜𝑟𝑚𝑢𝑙𝑎

𝐸𝑥𝑝𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝑉𝑎𝑟 𝐹𝑜𝑟𝑚𝑢𝑙𝑎

Page 20: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

𝐹𝑜𝑟𝑚𝑢𝑙𝑎

𝑡 𝐹𝑜𝑟𝑚𝑢𝑙𝑎

𝐻𝑒𝑎𝑝𝑙𝑒𝑡 𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠

𝐸𝑥𝑝𝑟 𝐸𝑥𝑝𝑟

2

𝑥

𝑡

3

4

5

6

𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠

𝐹𝑜𝑟𝑚𝑢𝑙𝑎 → ∃ 𝑉𝑎𝑟 . 𝐹𝑜𝑟𝑚𝑢𝑙𝑎 | 𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠 → 𝐻𝑒𝑎𝑝𝑙𝑒𝑡 ∗ 𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠 | 𝑒𝑚𝑝𝐻𝑒𝑎𝑝𝑙𝑒𝑡 → ls 𝐸𝑥𝑝𝑟, 𝐸𝑥𝑝𝑟, …| tree 𝐸𝑥𝑝𝑟, …

𝐸𝑥𝑝 → 0 ∣ 𝑉𝑎𝑟

Page 21: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

𝑙𝑠𝑒𝑔 𝑙𝑠𝑡, 𝑐𝑢𝑟𝑟𝑙𝑠𝑒𝑔 𝑐𝑢𝑟𝑟, 𝑙𝑠𝑡

𝑙𝑠𝑒𝑔 𝑙𝑠𝑡, 𝑐𝑢𝑟𝑟 ∗ 𝑙𝑠𝑒𝑔 𝑐𝑢𝑟𝑟, 𝑛𝑢𝑙𝑙...

𝑐𝑢𝑟𝑟 ≠ 𝑛𝑢𝑙𝑙 ∶ 𝑒𝑙𝑡 ↦ 𝑛𝑢𝑙𝑙 ∗ 𝑙𝑠𝑒𝑔 𝑙𝑠𝑡, 𝑐𝑢𝑟𝑟 ∗ 𝑙𝑠𝑒𝑔 𝑐𝑢𝑟𝑟, 𝑛𝑢𝑙𝑙...

Page 22: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

𝐻𝑒𝑎𝑝𝑙𝑒𝑡 → ls 𝐸𝑥𝑝𝑟, 𝐸𝑥𝑝𝑟, _ | tree 𝐸𝑥𝑝𝑟, _

𝑐𝑢𝑟𝑟 ≠ 𝑛𝑢𝑙𝑙 ∶ 𝑒𝑙𝑡 ↦ 𝑛𝑢𝑙𝑙 ∗ 𝑙𝑠𝑒𝑔 𝑙𝑠𝑡, 𝑐𝑢𝑟𝑟 ∗ 𝑙𝑠𝑒𝑔 𝑐𝑢𝑟𝑟, 𝑛𝑢𝑙𝑙

Page 23: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

𝐹𝑜𝑟𝑚𝑢𝑙𝑎 𝑉𝑎𝑟 𝐹𝑜𝑟𝑚𝑢𝑙𝑎 | 𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠𝐹𝑜𝑟𝑚𝑢𝑙𝑎

𝑡 𝐹𝑜𝑟𝑚𝑢𝑙𝑎

2

𝑥

𝑡

3

4

5

6

Page 24: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠 𝐻𝑒𝑎𝑝𝑙𝑒𝑡 𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠 | 𝑒𝑚𝑝𝐹𝑜𝑟𝑚𝑢𝑙𝑎

𝑡 𝐹𝑜𝑟𝑚𝑢𝑙𝑎

𝐻𝑒𝑎𝑝𝑙𝑒𝑡 𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠

2

𝑥

𝑡

3

4

5

6

𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠

Page 25: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

𝐻𝑒𝑎𝑝𝑙𝑒𝑡 𝐸𝑥𝑝𝑟 𝐸𝑥𝑝𝑟

𝐸𝑥𝑝𝑟 𝐹𝑜𝑟𝑚𝑢𝑙𝑎

𝑡 𝐹𝑜𝑟𝑚𝑢𝑙𝑎

𝐻𝑒𝑎𝑝𝑙𝑒𝑡 𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠

𝐸𝑥𝑝𝑟 𝐸𝑥𝑝𝑟

2

𝑥

𝑡

3

4

5

6

𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠

Page 26: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

𝐸𝑥𝑝𝑟 𝑉𝑎𝑟

2

𝑥

𝑡

3

4

5

6

𝐹𝑜𝑟𝑚𝑢𝑙𝑎

𝑡 𝐹𝑜𝑟𝑚𝑢𝑙𝑎

𝐻𝑒𝑎𝑝𝑙𝑒𝑡 𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠

𝐸𝑥𝑝𝑟 𝐸𝑥𝑝𝑟

𝐻𝑒𝑎𝑝𝑙𝑒𝑡𝑠

Page 27: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

Numeric Invariants:

• Training at verification time

• Training data: Observations

• Desired Invariant

~ Model

Our Heap Invariants:

• Training beforehand

• Training data: Independent

• Desired Invariant

~ Predicted Label

Page 28: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM
Page 29: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM
Page 30: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM
Page 31: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM
Page 32: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM
Page 33: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

...

Page 34: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

These slides from David Sontag, adapted from Luke Zettlemoyer,

Vibhav Gogate, Carlos Guestrin, Andrew Moore, Dan Klein

Page 35: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM
Page 36: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM
Page 37: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM
Page 38: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM
Page 39: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

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

Page 40: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM
Page 41: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

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

...

...

...∀𝑢. 𝑢 ∈ 𝐹𝑃 𝑙𝑠𝑒𝑔 𝑙𝑠𝑡, 𝑐𝑢𝑟𝑟 ⇒ 𝑢. 𝑑𝑎𝑡𝑎 < 𝑐𝑢𝑟𝑟. 𝑑𝑎𝑡𝑎

∀𝑢, 𝑣. 𝐹𝑃 𝑙𝑠𝑒𝑔 𝑙𝑠𝑡, 𝑐𝑢𝑟𝑟 : 𝑢 →+ 𝑣 ⇒ 𝑢. 𝑑𝑎𝑡𝑎 ≤ 𝑣. 𝑑𝑎𝑡𝑎

∀𝑢, 𝑣. 𝐹𝑃 𝑙𝑠𝑒𝑔 𝑐𝑢𝑟𝑟, 𝑛𝑢𝑙𝑙 : 𝑢 →+ 𝑣 ⇒ 𝑢. 𝑑𝑎𝑡𝑎 ≤ 𝑣. 𝑑𝑎𝑡𝑎

𝑐𝑢𝑟𝑟. 𝑑𝑎𝑡𝑎 ≤ 𝑒𝑙𝑡. 𝑑𝑎𝑡𝑎

Page 42: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

Analog to functional version from:

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

Page 43: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM
Page 44: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM

Picture from Aqua Teen Hunger Force Wikia

Page 45: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM
Page 46: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM
Page 47: Siddharth Krishna - New York Universitysiddharth/slides/2016-06-ucl.pdf · Siddharth Krishna Subject: Microsoft Research 2013 Created Date: 6/20/2016 6:42:03 PM