sid iddh dharth kr h kris ishn hna
play

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 (,


  1. Sid iddh dharth Kr h Kris ishn hna

  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; }

  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; } }

  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; }

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

  6. π‘“π‘›π‘ž x 1

  7. 𝑧 ↦ 𝑨 x 1

  8. 𝑧 ↦ 𝑨 βˆ— 𝑨 ↦ 𝑧 x 1

  9. 𝑧 ↦ 𝑨 ∧ 𝑨 ↦ 𝑧 x 1

  10. 𝑦 = 1 ∢ 𝑧 ↦ 𝑨 βˆ— 𝑨 ↦ 𝑧 x 1

  11. π‘šπ‘‘π‘“π‘• 𝑦, 𝑧 ≔ βˆƒ 𝑨. 𝑦 = 𝑧 ∢ π‘“π‘›π‘ž ∨ (𝑦 β‰  𝑧 ∢ 𝑦 ↦ 𝑨 βˆ— π‘šπ‘‘π‘“π‘• 𝑨, 𝑧 ) π‘šπ‘‘π‘“π‘• 𝑦, π‘œπ‘£π‘šπ‘š ≑ βˆƒπ‘¨ . 𝑦 β‰  π‘œπ‘£π‘šπ‘š ∢ 𝑦 ↦ 𝑨 βˆ— π‘šπ‘‘π‘“π‘• 𝑨, π‘œπ‘£π‘šπ‘š ≑ … ≑ 𝑦 ↦ 𝑨 βˆ— 𝑨 ↦ π‘œπ‘£π‘šπ‘š βˆ— π‘“π‘›π‘ž k 1

  12. (𝑧 β‰₯ 𝑦)

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

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

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

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

  17. πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ β†’ ls πΉπ‘¦π‘žπ‘ , πΉπ‘¦π‘žπ‘ , … πΊπ‘π‘ π‘›π‘£π‘šπ‘ β†’ βˆƒ π‘Šπ‘π‘  . πΊπ‘π‘ π‘›π‘£π‘šπ‘ | πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ β†’ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ βˆ— πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ | π‘“π‘›π‘ž πΉπ‘¦π‘ž β†’ 0 ∣ π‘Šπ‘π‘  𝑦 πΊπ‘π‘ π‘›π‘£π‘šπ‘ 2 | tree πΉπ‘¦π‘žπ‘ , … 𝑒 πΊπ‘π‘ π‘›π‘£π‘šπ‘ 3 πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ 𝑒 4 πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ 5 πΉπ‘¦π‘žπ‘  πΉπ‘¦π‘žπ‘  6

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

  19. 𝑑𝑣𝑠𝑠 β‰  π‘œπ‘£π‘šπ‘š ∢ π‘“π‘šπ‘’ ↦ π‘œπ‘£π‘šπ‘š βˆ— π‘šπ‘‘π‘“π‘• π‘šπ‘‘π‘’, 𝑑𝑣𝑠𝑠 βˆ— π‘šπ‘‘π‘“π‘• 𝑑𝑣𝑠𝑠, π‘œπ‘£π‘šπ‘š πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ β†’ ls πΉπ‘¦π‘žπ‘ , πΉπ‘¦π‘žπ‘ , _ | tree πΉπ‘¦π‘žπ‘ , _

  20. πΊπ‘π‘ π‘›π‘£π‘šπ‘ π‘Šπ‘π‘  πΊπ‘π‘ π‘›π‘£π‘šπ‘ | πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ 𝑦 πΊπ‘π‘ π‘›π‘£π‘šπ‘ 2 𝑒 πΊπ‘π‘ π‘›π‘£π‘šπ‘ 3 𝑒 4 5 6

  21. πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ | π‘“π‘›π‘ž 𝑦 πΊπ‘π‘ π‘›π‘£π‘šπ‘ 2 𝑒 πΊπ‘π‘ π‘›π‘£π‘šπ‘ 3 πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ 𝑒 4 πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ 5 6

  22. πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΉπ‘¦π‘žπ‘  πΉπ‘¦π‘žπ‘  𝑦 πΊπ‘π‘ π‘›π‘£π‘šπ‘ πΉπ‘¦π‘žπ‘  2 𝑒 πΊπ‘π‘ π‘›π‘£π‘šπ‘ 3 πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ 𝑒 4 πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ 5 πΉπ‘¦π‘žπ‘  πΉπ‘¦π‘žπ‘  6

  23. πΉπ‘¦π‘žπ‘  π‘Šπ‘π‘  𝑦 πΊπ‘π‘ π‘›π‘£π‘šπ‘ 2 𝑒 πΊπ‘π‘ π‘›π‘£π‘šπ‘ 3 πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ 𝑒 4 πΌπ‘“π‘π‘žπ‘šπ‘“π‘’ πΌπ‘“π‘π‘žπ‘šπ‘“π‘’π‘‘ 5 πΉπ‘¦π‘žπ‘  πΉπ‘¦π‘žπ‘  6

  24. Numeric Invariants: Our Heap Invariants: Training at verification time Training beforehand β€’ β€’ Training data: Observations Training data: Independent β€’ β€’ Desired Invariant Desired Invariant β€’ β€’ ~ Model ~ Predicted Label

  25. ...

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

  27. 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

Recommend


More recommend