Gradual Program Verification and its Techniques

undefined
Gradual
Verification
JENNA WISE
A
D
V
I
S
O
R
S
:
 
J
O
N
A
T
H
A
N
 
A
L
D
R
I
C
H
,
 
J
O
S
H
 
S
U
N
S
H
I
N
E
SPECIAL THANKS TO: JOHANNES BADER & ÉRIC TANTER
Bader, Johannes, Jonathan Aldrich, and Éric Tanter. "Gradual Program Verification." In International Conference on Verification, Model
Checking, and Abstract Interpretation, pp. 25-46. Springer, Cham, 2018.
1
Overview & Motivation
2
Static
Verification
(at compile
time)
Dynamic
Verification
(at runtime)
Gradual
Verification
If sound, no static errors
means no runtime errors
(no extra runtime checks)
Software must be fully
specified with detailed
specs
Software can be partially
specified with partial specs
Specs turned into runtime
checks (runtime overhead)
Static Verification by Example
3
Precondition: P
Postcondition: Q
Annotated Function
Client Program
 
?
 
?
Dynamic Verification by Example
4
Annotated Function
Client Program
 
?
 
?
Gradual Guarantee
 
Reducing the precision of specifications never breaks the verifiability
of a program (formalized in [1])
5
[1] Bader, Johannes, Jonathan Aldrich, and Éric Tanter. "Gradual Program Verification." In International Conference on Verification,
Model Checking, and Abstract Interpretation, pp. 25-46. Springer, Cham, 2018.
Static
Verification
(at compile
time)
Dynamic
Verification
(at runtime)
Gradual
Verification
adhering to
Gradual
Gaurantee
undefined
Approach
 
6
Gradual Formulas
 
Allow imprecision in specifications via the “?” wildcard
7
Gradual Formulas
 
Gradual formulas are given meaning by the set of fully precise
formulas it represents
8
Gradual Formula
Set of Representing formulas
Static Verification in Gradual Setting
[1] Garcia, Ronald, Alison M. Clark, and Éric Tanter. "Abstracting gradual typing." ACM SIGPLAN Notices. Vol. 51. No. 1. ACM, 2016.
9
 
 Lifting Diagram
10
 
?
 
 
WLP Lifting Diagram
??
11
Static Verification in Gradual Setting:
An Example
12
Annotated Function
Client Program
 
?
 
?
Dynamic Verification in Gradual Setting
 
Dynamic verification in the gradual setting must ensure that a valid
instantiation of “?” in the static checker is valid at runtime
 
Pay-as-you-go cost model: 
optimized runtime checks based on
statically guaranteed info
13
undefined
Current & Future Work
 
14
Current & Future Work
 
 
Building a usable, language independent, and robust gradual
verification tool
 
Supports verification of programs written in multiple languages
Java, Wyvern, C0
 
Supports efficient verification of many different language features
Shared mutable state, recursive data structures, loops, etc.
15
Current & Future Work
 
 
Deploy the tool in 15-122
Teaches imperative programming and methods for ensuring the
correctness of imperative programs
 
Teaches process and techniques for going from algorithms to correct
implementations
 
 
Research Question
Can the incremental nature of gradual verification allow students to achieve
these learning goals more easily?
16
Summary
17
Static
Verification
(at compile
time)
Dynamic
Verification
(at runtime)
Gradual
Verification
adhering to
Gradual
Gaurantee
If sound, no static errors
means no runtime errors
(no extra runtime checks)
Software must be fully
specified with detailed
specs
Software can be partially
specified with partial specs
Specs turned into runtime
checks (runtime overhead)
Summary
18
Gradual
Verification
adhering to
Gradual
Gaurantee
Slide Note

Seamlessly and flexibly combine static and dynamic verification by drawing on the general principles from abstract interpretation to derive a gradual system from a static one

Concerned with formal verification where program correctness determined from specifications of system components drawn from a logic

Function/method pre- and postconditions (contracts)

Loop invariants

Type invariants

etc.

Embed
Share

Gradual Program Verification introduces a method where static verification is combined with dynamic verification to ensure program correctness gradually. This approach allows for partial specifications and runtime checks to be gradually applied, reducing the risk of errors and overhead in software development. The technique includes static guarantees, dynamic checks, and gradual formulas to maintain verifiability as specification precision changes.

  • Program Verification
  • Static Verification
  • Dynamic Verification
  • Software Development
  • Gradual Techniques

Uploaded on Sep 22, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Gradual Verification JENNA WISE ADVISORS: ADVISORS: JONATHAN ALDRICH, JOSH SUNSHINE SPECIAL THANKS TO: JOHANNES BADER & RIC TANTER Bader, Johannes, Jonathan Aldrich, and ric Tanter. "Gradual Program Verification." In International Conference on Verification, Model Checking, and Abstract Interpretation, pp. 25-46. Springer, Cham, 2018. 1

  2. Overview & Motivation Static Verification (at compile time) Dynamic Verification (at runtime) If sound, no static errors means no runtime errors (no extra runtime checks) Software can be partially specified with partial specs Gradual Verification Specs turned into runtime checks (runtime overhead) Software must be fully specified with detailed specs 2

  3. Static Verification by Example Client Program Annotated Function int balance 100; Q: ??????? = 100 P: ??????? 30 balance withdraw(balance, 30); Q: ??????? 0 P: ??????? 40 balance withdraw(balance, 40); int withdraw(int balance, int amount) requires ??????? ?????? ensures ?????? 0 Postcondition: Q Precondition: P ? ? return balance amount; } { 3

  4. Dynamic Verification by Example Client Program Annotated Function int balance 100; assert P: ??????? 30 balance withdraw(balance, 30); assert P: ??????? 40 balance withdraw(balance, 40); int withdraw(int balance, int amount) requires ??????? ?????? ensures ?????? 0 ? assert P: 100 30 ? assert P: 70 40 return balance amount; } { 4

  5. Gradual Guarantee Reducing the precision of specifications never breaks the verifiability of a program (formalized in [1]) static guarantees + dynamic checks Static Verification (at compile time) Dynamic Verification (at runtime) + static guarantees dynamic checks Gradual Verification adhering to Gradual Gaurantee [1] Bader, Johannes, Jonathan Aldrich, and ric Tanter. "Gradual Program Verification." In International Conference on Verification, Model Checking, and Abstract Interpretation, pp. 25-46. Springer, Cham, 2018. 5

  6. Approach 6

  7. Gradual Formulas ? = ? | ? ? Allow imprecision in specifications via the ? wildcard 7

  8. Gradual Formulas Gradual formulas are given meaning by the set of fully precise formulas it represents Gradual Formula Set of Representing formulas ??????? 0 ??????? 0 ??????? = 0, ??????? 0, ??????? 0 ? ??????? 0 ?????? 0 ??????? 0 ??????? < 0 8

  9. Static Verification in Gradual Setting Lifted from normal static verification using ideas from Abstract Interpretation on Gradual Typing [1] Predicates Functions ??? ????,? Static Verification in Gradual Setting Uses lifted predicates and functions [1] Garcia, Ronald, Alison M. Clark, and ric Tanter. "Abstracting gradual typing." ACM SIGPLAN Notices. Vol. 51. No. 1. ACM, 2016. 9

  10. Lifting Diagram ? ? ? ? ? Set of ? Exist ?1 Exist ?2 Set of ? 10

  11. WLP Lifting Diagram ??? ? ?? ? ? ? ??? Set of ? Set of ? 11

  12. Static Verification in Gradual Setting: An Example Client Program Annotated Function int balance 100; Q: ??????? = 100 P: ??????? 30 balance withdraw(balance, 30); Q: ??????? 0 ? P: ??????? 40 balance withdraw(balance, 40); int withdraw(int balance, int amount) requires ??????? ?????? ensures ?????? 0 ? ? ? return balance amount; } { 12

  13. Dynamic Verification in Gradual Setting Dynamic verification in the gradual setting must ensure that a valid instantiation of ? in the static checker is valid at runtime Pay-as-you-go cost model: optimized runtime checks based on statically guaranteed info 0 static guarantees All dynamic checks static guarantees + dynamic checks All static guarantees 0 dynamic checks ?1 ?? 1 ? ?1 ?? 2 ? ?1 ? ? ?1 ?? + static guarantees dynamic checks 13

  14. Current & Future Work 14

  15. Current & Future Work Building a usable, language independent, and robust gradual verification tool Supports verification of programs written in multiple languages Java, Wyvern, C0 Supports efficient verification of many different language features Shared mutable state, recursive data structures, loops, etc. 15

  16. Current & Future Work Deploy the tool in 15-122 Teaches imperative programming and methods for ensuring the correctness of imperative programs Teaches process and techniques for going from algorithms to correct implementations Research Question Can the incremental nature of gradual verification allow students to achieve these learning goals more easily? 16

  17. Summary Static Verification (at compile time) Dynamic Verification (at runtime) Gradual Verification adhering to Gradual Gaurantee If sound, no static errors means no runtime errors (no extra runtime checks) Software can be partially specified with partial specs Specs turned into runtime checks (runtime overhead) Software must be fully specified with detailed specs 17

  18. Summary 0 static guarantees All dynamic checks All static guarantees 0 dynamic checks static guarantees + dynamic checks ?1 ?? 1 ? ?1 ?? 2 ? ?1 ? ? ?1 ?? + static guarantees dynamic checks Gradual Verification adhering to Gradual Gaurantee 18

Related


More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#