modular termination verification
play

Modular Termination Verification Bart Jacobs 1 Dragan Bosnacki 2 - PowerPoint PPT Presentation

Modular Termination Verification Bart Jacobs 1 Dragan Bosnacki 2 Ruurd Kuiper 2 1 DistriNet, KU Leuven 2 Eindhoven University of Technology ECOOP 2015 Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification Disclaimer This


  1. Modular Termination Verification Bart Jacobs 1 Dragan Bosnacki 2 Ruurd Kuiper 2 1 DistriNet, KU Leuven 2 Eindhoven University of Technology ECOOP 2015 Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  2. Disclaimer This paper is NOT about termination analysis . No algorithms are proposed. Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  3. Disclaimer This paper is NOT about termination analysis . No algorithms are proposed. We propose an approach for doing pencil-and-paper proofs of termination of programs modularly . Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  4. Disclaimer This paper is NOT about termination analysis . No algorithms are proposed. We propose an approach for doing pencil-and-paper proofs of termination of programs modularly . I.e., we propose a notion of module correctness such that Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  5. Disclaimer This paper is NOT about termination analysis . No algorithms are proposed. We propose an approach for doing pencil-and-paper proofs of termination of programs modularly . I.e., we propose a notion of module correctness such that if one succeeds in producing a paper-and-pencil proof of the correctness of each of a program’s modules, Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  6. Disclaimer This paper is NOT about termination analysis . No algorithms are proposed. We propose an approach for doing pencil-and-paper proofs of termination of programs modularly . I.e., we propose a notion of module correctness such that if one succeeds in producing a paper-and-pencil proof of the correctness of each of a program’s modules, then the program terminates. Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  7. Disclaimer This paper is NOT about termination analysis . No algorithms are proposed. We propose an approach for doing pencil-and-paper proofs of termination of programs modularly . I.e., we propose a notion of module correctness such that if one succeeds in producing a paper-and-pencil proof of the correctness of each of a program’s modules, then the program terminates. Module correctness means the module satisfies its specification Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  8. Disclaimer This paper is NOT about termination analysis . No algorithms are proposed. We propose an approach for doing pencil-and-paper proofs of termination of programs modularly . I.e., we propose a notion of module correctness such that if one succeeds in producing a paper-and-pencil proof of the correctness of each of a program’s modules, then the program terminates. Module correctness means the module satisfies its specification assuming that the modules it imports satisfy theirs. Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  9. Disclaimer This paper is NOT about termination analysis . No algorithms are proposed. We propose an approach for doing pencil-and-paper proofs of termination of programs modularly . I.e., we propose a notion of module correctness such that if one succeeds in producing a paper-and-pencil proof of the correctness of each of a program’s modules, then the program terminates. Module correctness means the module satisfies its specification assuming that the modules it imports satisfy theirs. Main contribution: Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  10. Disclaimer This paper is NOT about termination analysis . No algorithms are proposed. We propose an approach for doing pencil-and-paper proofs of termination of programs modularly . I.e., we propose a notion of module correctness such that if one succeeds in producing a paper-and-pencil proof of the correctness of each of a program’s modules, then the program terminates. Module correctness means the module satisfies its specification assuming that the modules it imports satisfy theirs. Main contribution: an approach for writing module specifications Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  11. Disclaimer This paper is NOT about termination analysis . No algorithms are proposed. We propose an approach for doing pencil-and-paper proofs of termination of programs modularly . I.e., we propose a notion of module correctness such that if one succeeds in producing a paper-and-pencil proof of the correctness of each of a program’s modules, then the program terminates. Module correctness means the module satisfies its specification assuming that the modules it imports satisfy theirs. Main contribution: an approach for writing module specifications that are sufficiently expressive to allow verification of client code Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  12. Disclaimer This paper is NOT about termination analysis . No algorithms are proposed. We propose an approach for doing pencil-and-paper proofs of termination of programs modularly . I.e., we propose a notion of module correctness such that if one succeeds in producing a paper-and-pencil proof of the correctness of each of a program’s modules, then the program terminates. Module correctness means the module satisfies its specification assuming that the modules it imports satisfy theirs. Main contribution: an approach for writing module specifications that are sufficiently expressive to allow verification of client code and sufficiently abstract to allow module implementation evolution Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  13. Disclaimer This paper is NOT about termination analysis . No algorithms are proposed. We propose an approach for doing pencil-and-paper proofs of termination of programs modularly . I.e., we propose a notion of module correctness such that if one succeeds in producing a paper-and-pencil proof of the correctness of each of a program’s modules, then the program terminates. Module correctness means the module satisfies its specification assuming that the modules it imports satisfy theirs. Main contribution: an approach for writing module specifications that are sufficiently expressive to allow verification of client code and sufficiently abstract to allow module implementation evolution any modification that does not break clients should be allowed Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  14. Contents Modular Verification 1 Modular Termination Verification: Upcalls Only 2 Modular Termination Verification: Dynamic Binding 3 Modular Termination Verification: Complex Objects 4 Modular Termination Verification: Abstract Object Construction 5 Conclusion 6 Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  15. Contents Modular Verification 1 Modular Termination Verification: Upcalls Only 2 Modular Termination Verification: Dynamic Binding 3 Modular Termination Verification: Complex Objects 4 Modular Termination Verification: Abstract Object Construction 5 Conclusion 6 Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  16. Whole-Program Verification num sqrt( num x) { (1 + x) / 2 } num vectorSize( num x , num y) { sqrt(x · x + y · y) } void main() { assert 0 ≤ vectorSize(3 , 4) } Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  17. Whole-Program Verification num sqrt( num x) � num y := (1 + x) / 2; � ( y + x / y ) / 2 num vectorSize( num x , num y) { sqrt(x · x + y · y) } void main() { assert 0 ≤ vectorSize(3 , 4) } Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  18. Modular Verification num sqrt( num x) { (1 + x) / 2 } num vectorSize( num x , num y) { sqrt(x · x + y · y) } void main() { assert 0 ≤ vectorSize(3 , 4) } Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  19. Modular Verification num sqrt( num x) req 0 ≤ x ens 0 ≤ result { (1 + x) / 2 } num vectorSize( num x , num y) ens 0 ≤ result { sqrt(x · x + y · y) } void main() { assert 0 ≤ vectorSize(3 , 4) } Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  20. Modular Verification num sqrt( num x) req 0 ≤ x ens 0 ≤ result ? { (1 + x) / 2 } num vectorSize( num x , num y) ens 0 ≤ result ? { sqrt(x · x + y · y) } void main() ? { assert 0 ≤ vectorSize(3 , 4) } Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  21. Modular Verification num sqrt( num x) req 0 ≤ x ens 0 ≤ result { (1 + x) / 2 } � num vectorSize( num x , num y) ens 0 ≤ result ? { sqrt(x · x + y · y) } void main() ? { assert 0 ≤ vectorSize(3 , 4) } Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  22. Modular Verification num sqrt( num x) req 0 ≤ x ens 0 ≤ result { (1 + x) / 2 } � num vectorSize( num x , num y) ens 0 ≤ result { sqrt(x · x + y · y) } � void main() ? { assert 0 ≤ vectorSize(3 , 4) } Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

  23. Modular Verification num sqrt( num x) req 0 ≤ x ens 0 ≤ result { (1 + x) / 2 } � num vectorSize( num x , num y) ens 0 ≤ result { sqrt(x · x + y · y) } � void main() � { assert 0 ≤ vectorSize(3 , 4) } Bart Jacobs , Dragan Bosnacki , Ruurd Kuiper Modular Termination Verification

Recommend


More recommend