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

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend