Sid iddh dharth Kr h Kris ishn hna
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; }
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; } }
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; }
ππ£π π β ππ£ππ βΆ πππ’ β¦ ππ£ππ β ππ‘ππ(ππ‘π’, ππ£π π ) β ππ‘ππ ππ£π π , ππ£ππ
πππ x 1
π§ β¦ π¨ x 1
π§ β¦ π¨ β π¨ β¦ π§ x 1
π§ β¦ π¨ β§ π¨ β¦ π§ x 1
π¦ = 1 βΆ π§ β¦ π¨ β π¨ β¦ π§ x 1
ππ‘ππ π¦, π§ β β π¨. π¦ = π§ βΆ πππ β¨ (π¦ β π§ βΆ π¦ β¦ π¨ β ππ‘ππ π¨, π§ ) ππ‘ππ π¦, ππ£ππ β‘ βπ¨ . π¦ β ππ£ππ βΆ π¦ β¦ π¨ β ππ‘ππ π¨, ππ£ππ β‘ β¦ β‘ π¦ β¦ π¨ β π¨ β¦ ππ£ππ β πππ k 1
(π§ β₯ π¦)
ππ£π π β ππ£ππ βΆ πππ’ β¦ ππ£ππ β ππ‘ππ(ππ‘π’, ππ£π π ) β ππ‘ππ ππ£π π , ππ£ππ Graphs Formulas
πΊππ ππ£ππ πππ πΊππ ππ£ππ | πΌππππππ’π‘ πΌππππππ’π‘ πΌππππππ’ πΌππππππ’π‘ | πππ πΌππππππ’ πΉπ¦ππ πΉπ¦ππ πππ πππ πππ πππ πΊππ ππ£ππ πΉπ¦ππ πππ πππ πππ πππ πΊππ ππ£ππ πΉπ¦ππ πππ
πΊππ ππ£ππ β β πππ πΊππ ππ£ππ | πΌππππππ’π‘ πΌππππππ’π‘ πΌππππππ’ πΌππππππ’π‘ | πππ πΌππππππ’ πΉπ¦ππ πΉπ¦ππ πππ πππ πππ πππ πΊππ ππ£ππ πΉπ¦ππ πππ πππ πππ πππ πΊππ ππ£ππ πΊππ ππ£ππ πΉπ¦π πππ π’ πΊππ ππ£ππ πΌππππππ’π‘ πΌππππππ’ πΌππππππ’π‘ πΉπ¦ππ πΉπ¦ππ
πΌππππππ’ πΉπ¦ππ πΉπ¦ππ πππ πππ πππ πππ πΊππ ππ£ππ πΉπ¦ππ πππ πππ πππ πππ πΊππ ππ£ππ
πΌππππππ’ β ls πΉπ¦ππ , πΉπ¦ππ , β¦ πΊππ ππ£ππ β β πππ . πΊππ ππ£ππ | πΌππππππ’π‘ πΌππππππ’π‘ β πΌππππππ’ β πΌππππππ’π‘ | πππ πΉπ¦π β 0 β£ πππ π¦ πΊππ ππ£ππ 2 | tree πΉπ¦ππ , β¦ π’ πΊππ ππ£ππ 3 πΌππππππ’π‘ π’ 4 πΌππππππ’ πΌππππππ’π‘ 5 πΉπ¦ππ πΉπ¦ππ 6
ππ‘ππ ππ‘π’, ππ£π π ππ‘ππ ππ£π π , ππ‘π’ ππ‘ππ ππ‘π’, ππ£π π β ππ‘ππ ππ£π π , ππ£ππ ... ππ£π π β ππ£ππ βΆ πππ’ β¦ ππ£ππ β ππ‘ππ ππ‘π’, ππ£π π β ππ‘ππ ππ£π π , ππ£ππ ...
ππ£π π β ππ£ππ βΆ πππ’ β¦ ππ£ππ β ππ‘ππ ππ‘π’, ππ£π π β ππ‘ππ ππ£π π , ππ£ππ πΌππππππ’ β ls πΉπ¦ππ , πΉπ¦ππ , _ | tree πΉπ¦ππ , _
πΊππ ππ£ππ πππ πΊππ ππ£ππ | πΌππππππ’π‘ π¦ πΊππ ππ£ππ 2 π’ πΊππ ππ£ππ 3 π’ 4 5 6
πΌππππππ’π‘ πΌππππππ’ πΌππππππ’π‘ | πππ π¦ πΊππ ππ£ππ 2 π’ πΊππ ππ£ππ 3 πΌππππππ’π‘ π’ 4 πΌππππππ’ πΌππππππ’π‘ 5 6
πΌππππππ’ πΉπ¦ππ πΉπ¦ππ π¦ πΊππ ππ£ππ πΉπ¦ππ 2 π’ πΊππ ππ£ππ 3 πΌππππππ’π‘ π’ 4 πΌππππππ’ πΌππππππ’π‘ 5 πΉπ¦ππ πΉπ¦ππ 6
πΉπ¦ππ πππ π¦ πΊππ ππ£ππ 2 π’ πΊππ ππ£ππ 3 πΌππππππ’π‘ π’ 4 πΌππππππ’ πΌππππππ’π‘ 5 πΉπ¦ππ πΉπ¦ππ 6
Numeric Invariants: Our Heap Invariants: Training at verification time Training beforehand β’ β’ Training data: Observations Training data: Independent β’ β’ Desired Invariant Desired Invariant β’ β’ ~ Model ~ Predicted Label
...
These slides from David Sontag, adapted from Luke Zettlemoyer, Vibhav Gogate, Carlos Guestrin, Andrew Moore, Dan Klein
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