SlideShare a Scribd company logo
Modern Software Testing and Formal Verification
Techniques
Day 3
Sergey Staroletov
Polzunov Altai State Technical University,
Lenin avenue 46, Barnaul, 656038, Russia
Email: serg soft@mail.ru
June 26, 2019
1 / 42
Today’s agenda
1 Design-By-Contract. MS Code Contracts
2 Deductive verification of C-code with Frama-C WP
3 C-code: is LTL applicable here?
4 Cyber-physical systems and their verification
2 / 42
Overall picture of tools applicability
3 / 42
Design-By-Contract
Created by Bertrand Meyer, firstly implemented in Eiffel language and
based on the Sir Tony Hoare’s logic
The approach is based on specifying pre-conditions, post-conditions
and invariant to functions (methods, classes).
4 / 42
Design-By-Contract
Well-known forms:
{P}C{Q}
P =⇒ [C]Q
where P – precondition, C – code, Q – postcondition. Invariant is a
form of a global pre- and post- condition {I}C{I}
In OOP languages:
Pre- and Post- conditions are specified for methods
Invariant is specified for the whole class
Also, for loops Loop Invariants and Loop Variant are specified
The things can be specified:
As a part of language syntax (Eiffel)
In comments (Frama-C)
In annotations and special code (MS Code contracts)
5 / 42
A bit about Hoare’s Logic
Program− > (Sentence)+
Sentence− > Skip|Assignment|If|Loop|Composition
6 / 42
A bit about Hoare’s Logic
Skip changes nothing
Assignment has an influence to the post-condition
Composition makes sequential execution with making transition
of post-condition
If has two branches with “or” operator which holds with 2
preconditions
Loop is characterized with the Invariant of the cycle which holds
before the cycle, in the cycle and after the cycle is finished. Also
there is addition control for resolving The halting Turing problem –
the Variant, which should decrease at the each step and to be
always positive.
7 / 42
MS Code contracts
Microsoft, known for its research departments, has added a method to
programming using contracts for .NET programs as a special library
and extension for Visual Studio.
Initially, the research included Spec# (Specification Sharp) language
for contract description, but now the contracts are fully integrated into
the project in the target programming language (for example, in C#).
Contracts can be checked:
In dynamic, that is, while the program is running, expressions in
the contracts are calculated, and if they are not as expected, an
exception is thrown.
In static, i.e. during the project build without needing it to run, a
special static checker can check the program branches and find
some potential errors.
8 / 42
MS VS Addition for Code Contracts
9 / 42
Class Student
10 / 42
Class Student constructor contract with a precondition
11 / 42
Class Student object invariant
12 / 42
Class Student contract violation
13 / 42
Class Student contract violation – throw the exception
14 / 42
Static checker for contracts in the IDE
15 / 42
More complex contracts
16 / 42
Add a student to a group list
17 / 42
Remove a student from a group list
18 / 42
Group invariant
19 / 42
Double check
20 / 42
Contracts in C# – resume
A good method to move academic approach into production
Moves logic of class stability to a class
Different way of implementation of checks
Does not guarantee a class correctness
21 / 42
The Weakest Precondition
Dijkstra has proposed the addition to Hoare’s logic – the weakest
precondition (WP approach), which requires the precondition to be as
simple as possible to reach just a postcondition
{P}f{Q} =⇒ {wp(f, Q)fQ}
In this case, the further program verification will be as follows: we
calculate W = wp(f, Q), go from the end of Q to the start of the
function, and we post a task to prove P => W to a theorem prover
22 / 42
Frama-C
An extensible static-analyze tool
Created by INRIA
Based on annotation that user write to C code by hand
Some annotations can be generated
ACSL language for ISO-standardized annotations, provable
specification for C code
To prove the annotations, the WP approach is used.
23 / 42
Frama-C: the interface
24 / 42
Frama-C: inserting runtime checks
25 / 42
ACSL example
26 / 42
ACSL example in Frama-C
27 / 42
Verifying a simple car moving model
28 / 42
Towards verifying a drone attitude PID-controller
29 / 42
Towards verifying a drone attitude PID-controller
Even for this simple code the verification on real floating point numbers
is challenging!
30 / 42
Towards verifying a drone attitude PID-controller
31 / 42
Towards verifying a drone attitude PID-controller
We should run Frama-C on infinite abstract real numbers model!
32 / 42
Towards verifying a drone attitude PID-controller
33 / 42
Towards verifying a drone attitude PID-controller
34 / 42
Towards verifying a drone attitude PID-controller
35 / 42
C code and LTL: Aora¨ı
36 / 42
C code and LTL: Aora¨ı
37 / 42
Verification of Cyber-physical systems demo
Cyber-physical system:
A Cyber part – descrete controller
A Physical part – continuous model of the system, here –
expressed in ODEs.
38 / 42
Verification of Cyber-physical systems
These systems can be modeled as Hybrid automata which represent
discrete-time and continuous-time transitions; such models are known
as Hybrid models and specified using the Hybrid Dynamic Logic .
According to A. Platzer, the syntax of hybrid programs is defined as
follows:
α ::= x := e | ?Q | x = f(x)&Q | α ∪ α | α; α | α∗
(1)
where α is a meta-variable for the hybrid programs, x is a
meta-variable for program variables, e is a meta-variable for the
first-order real-valued terms, f is a meta-variable for the continuous
real functions, and Q is a meta-variable for the first-order formulas over
real numbers. The construct ‘;’ means here the sequential
composition, ‘∪’ — is the non-deterministic choice, ‘?’ — is the
condition operator, and ‘∗’ — is the non-deterministic iteration (like
Kleene-star).
* Platzer, Andr´e. ”Logical Foundations of Cyber-Physical Systems.”
39 / 42
Verification of a simple PD-controller
The simplification of PID is PD-controller and the model of the system
is given as a Hoare’s triple:
init =⇒ [controller](req) (2)
Then, we decompose the system into precondition, continuous
PD-controller and requirements. Precondition:
init :== v ≥ 0 ∧ c > 0 ∧ Kp = 2 ∧ Kd = 3 ∧ V(p, pr , v) < c (3)
The continuous state:
controller :== p = v, v = −Kp · (p − pr ) − Kd · v (4)
As the requirement it is proposed to try stability using Lyapunov
method:
req :== V(p, pr , v) < c (5)
V(p, pr , v) = 5/4 · (p − pr )2
+ (p − pr ) · v/2 + v2
/4 (6)
*Quesel et al.: How to Model and Prove Hybrid Systems with
KeYmaera
40 / 42
KeYmaera – verification results of the model
KeYmaera – is an automatic theorem prover and it implements the
Dynamic Differential Logic and KeYmaera’s input are hybrid programs.
41 / 42
Learn more about ways of verification and contracts
42 / 42

More Related Content

PDF
High quality implementation for
ijseajournal
 
PDF
Control Flow Analysis
Edgar Barbosa
 
PDF
De-virtualizing virtual Function Calls using various Type Analysis Technique...
IOSR Journals
 
PDF
HIS 2017 Mark Batty-Industrial concurrency specification for C/C++
jamieayre
 
PDF
Binary code obfuscation through c++ template meta programming
nong_dan
 
PDF
Computer programming chapter ( 4 )
Ibrahim Elewah
 
PPTX
C_Programming_Notes_ICE
Gilbert NZABONITEGEKA
 
PDF
Resume_Prathamesh_VLSI_VIT_UNIVERSITY_Cadence_11Months_Exp
Prathamesh Chodankar
 
High quality implementation for
ijseajournal
 
Control Flow Analysis
Edgar Barbosa
 
De-virtualizing virtual Function Calls using various Type Analysis Technique...
IOSR Journals
 
HIS 2017 Mark Batty-Industrial concurrency specification for C/C++
jamieayre
 
Binary code obfuscation through c++ template meta programming
nong_dan
 
Computer programming chapter ( 4 )
Ibrahim Elewah
 
C_Programming_Notes_ICE
Gilbert NZABONITEGEKA
 
Resume_Prathamesh_VLSI_VIT_UNIVERSITY_Cadence_11Months_Exp
Prathamesh Chodankar
 

What's hot (20)

PDF
Introduction to algorithms
subhashchandra197
 
PPTX
Path testing
Mohamed Ali
 
PPTX
18CSS101J PROGRAMMING FOR PROBLEM SOLVING
GOWSIKRAJAP
 
PPTX
C Programming and Coding Standards, Learn C Programming
Tonex
 
PPTX
Unit 3 Control Flow Testing
ravikhimani
 
PDF
Computer programming chapter ( 3 )
Ibrahim Elewah
 
DOC
Notes of c programming 1st unit BCA I SEM
Mansi Tyagi
 
PDF
Declare Your Language: What is a Compiler?
Eelco Visser
 
PDF
C Programming Lab manual 18CPL17
manjurkts
 
PDF
C programming
Rounak Samdadia
 
PPTX
C language
marar hina
 
DOCX
Practical List COMPILER DESIGN
Shraddha Patel
 
PDF
POLITEKNIK MALAYSIA
Aiman Hud
 
PDF
POLITEKNIK MALAYSIA
Aiman Hud
 
PDF
Using PSL and FoCs for Functional Coverage Verification
DVClub
 
PPTX
Sta unit 2(abimanyu)
Abhimanyu Mishra
 
PPTX
Unit 2 unit testing
ravikhimani1984
 
PDF
Krml203
Pedro Gonçalves
 
PPTX
INTRODUCTION TO C PROGRAMMING
JEENA SARA VIJU
 
Introduction to algorithms
subhashchandra197
 
Path testing
Mohamed Ali
 
18CSS101J PROGRAMMING FOR PROBLEM SOLVING
GOWSIKRAJAP
 
C Programming and Coding Standards, Learn C Programming
Tonex
 
Unit 3 Control Flow Testing
ravikhimani
 
Computer programming chapter ( 3 )
Ibrahim Elewah
 
Notes of c programming 1st unit BCA I SEM
Mansi Tyagi
 
Declare Your Language: What is a Compiler?
Eelco Visser
 
C Programming Lab manual 18CPL17
manjurkts
 
C programming
Rounak Samdadia
 
C language
marar hina
 
Practical List COMPILER DESIGN
Shraddha Patel
 
POLITEKNIK MALAYSIA
Aiman Hud
 
POLITEKNIK MALAYSIA
Aiman Hud
 
Using PSL and FoCs for Functional Coverage Verification
DVClub
 
Sta unit 2(abimanyu)
Abhimanyu Mishra
 
Unit 2 unit testing
ravikhimani1984
 
INTRODUCTION TO C PROGRAMMING
JEENA SARA VIJU
 
Ad

Similar to Staroletov Design by Contract, verification of Cyber-physical systems (20)

PPTX
Software engineering module 4 notes for btech and mca
mca23mmci43
 
PPTX
SE2023 0401 Software Coding and Testing.pptx
Bharat Chawda
 
DOCX
Nishar_Resume
MD NISHAR
 
DOCX
RamachandraParlapalli_RESUME
parlapalli ramachandra
 
PPT
the programming Structure of c concept.ppt
SriGovndarajaSwamyAr
 
PPT
Probe Debugging
ESUG
 
PPT
Chap-02-1.ppt
Vamshi171
 
PPT
Chap-02-1.ppt
ShraddhaPattnaik
 
PPT
Chap-02-01.ppt
ssuser5ad1571
 
PPT
Chap-02-1.ppt
hamsa72
 
PPT
Chap 02-1
Navjot Singh
 
PPT
Chap-02-1.ppt
UdhayaKumar175069
 
PPT
Chap-02-1.ppt
ssusere6f5a11
 
PPTX
C programming-1.pptx
MohammadAnsari340279
 
PPT
Chapter 1.ppt
tadudemise
 
PPT
Open-DO Update
AdaCore
 
PDF
UoN-Lec_12_Control_Structure.pdf
madihamaqbool6
 
DOC
LTTechServices_Surya
suryakant pallai
 
PPT
Chap-02-1.ppt
AbdulSacur2
 
PPTX
Estimation techniques and risk management
Purushottam Basnet
 
Software engineering module 4 notes for btech and mca
mca23mmci43
 
SE2023 0401 Software Coding and Testing.pptx
Bharat Chawda
 
Nishar_Resume
MD NISHAR
 
RamachandraParlapalli_RESUME
parlapalli ramachandra
 
the programming Structure of c concept.ppt
SriGovndarajaSwamyAr
 
Probe Debugging
ESUG
 
Chap-02-1.ppt
Vamshi171
 
Chap-02-1.ppt
ShraddhaPattnaik
 
Chap-02-01.ppt
ssuser5ad1571
 
Chap-02-1.ppt
hamsa72
 
Chap 02-1
Navjot Singh
 
Chap-02-1.ppt
UdhayaKumar175069
 
Chap-02-1.ppt
ssusere6f5a11
 
C programming-1.pptx
MohammadAnsari340279
 
Chapter 1.ppt
tadudemise
 
Open-DO Update
AdaCore
 
UoN-Lec_12_Control_Structure.pdf
madihamaqbool6
 
LTTechServices_Surya
suryakant pallai
 
Chap-02-1.ppt
AbdulSacur2
 
Estimation techniques and risk management
Purushottam Basnet
 
Ad

More from Sergey Staroletov (8)

PDF
Distributed Systems Presentation for Business informatics students (Staroletov)
Sergey Staroletov
 
PDF
Теория языков программирования некоторые слайды к лекциям
Sergey Staroletov
 
PDF
Staroletov MBC (Model Based Checking)
Sergey Staroletov
 
PDF
Staroletov testing TDD BDD MBT
Sergey Staroletov
 
PDF
An Application of Test-Driven Development Methodology into the Process of Ha...
Sergey Staroletov
 
PDF
Towards a Probabilistic Extension to Non-Deterministic Transitions in Model-B...
Sergey Staroletov
 
PDF
Applying Model Checking Approach with Floating Point Arithmetic for Verificat...
Sergey Staroletov
 
PDF
Cameroun (Francophone day)
Sergey Staroletov
 
Distributed Systems Presentation for Business informatics students (Staroletov)
Sergey Staroletov
 
Теория языков программирования некоторые слайды к лекциям
Sergey Staroletov
 
Staroletov MBC (Model Based Checking)
Sergey Staroletov
 
Staroletov testing TDD BDD MBT
Sergey Staroletov
 
An Application of Test-Driven Development Methodology into the Process of Ha...
Sergey Staroletov
 
Towards a Probabilistic Extension to Non-Deterministic Transitions in Model-B...
Sergey Staroletov
 
Applying Model Checking Approach with Floating Point Arithmetic for Verificat...
Sergey Staroletov
 
Cameroun (Francophone day)
Sergey Staroletov
 

Recently uploaded (20)

PPTX
Presentation about Database and Database Administrator
abhishekchauhan86963
 
PDF
lesson-2-rules-of-netiquette.pdf.bshhsjdj
jasmenrojas249
 
PDF
Bandai Playdia The Book - David Glotz
BluePanther6
 
PDF
Enhancing Healthcare RPM Platforms with Contextual AI Integration
Cadabra Studio
 
PPTX
Explanation about Structures in C language.pptx
Veeral Rathod
 
PPTX
ConcordeApp: Engineering Global Impact & Unlocking Billions in Event ROI with AI
chastechaste14
 
PPTX
classification of computer and basic part of digital computer
ravisinghrajpurohit3
 
PPTX
The-Dawn-of-AI-Reshaping-Our-World.pptxx
parthbhanushali307
 
PDF
What to consider before purchasing Microsoft 365 Business Premium_PDF.pdf
Q-Advise
 
PDF
49784907924775488180_LRN2959_Data_Pump_23ai.pdf
Abilash868456
 
PDF
advancepresentationskillshdhdhhdhdhdhhfhf
jasmenrojas249
 
DOCX
Can You Build Dashboards Using Open Source Visualization Tool.docx
Varsha Nayak
 
PPTX
AI-Ready Handoff: Auto-Summaries & Draft Emails from MQL to Slack in One Flow
bbedford2
 
PPTX
Web Testing.pptx528278vshbuqffqhhqiwnwuq
studylike474
 
PDF
vAdobe Premiere Pro 2025 (v25.2.3.004) Crack Pre-Activated Latest
imang66g
 
PDF
Generating Union types w/ Static Analysis
K. Matthew Dupree
 
PDF
Protecting the Digital World Cyber Securit
dnthakkar16
 
PPTX
TRAVEL APIs | WHITE LABEL TRAVEL API | TOP TRAVEL APIs
philipnathen82
 
PPTX
Visualising Data with Scatterplots in IBM SPSS Statistics.pptx
Version 1 Analytics
 
PPTX
Role Of Python In Programing Language.pptx
jaykoshti048
 
Presentation about Database and Database Administrator
abhishekchauhan86963
 
lesson-2-rules-of-netiquette.pdf.bshhsjdj
jasmenrojas249
 
Bandai Playdia The Book - David Glotz
BluePanther6
 
Enhancing Healthcare RPM Platforms with Contextual AI Integration
Cadabra Studio
 
Explanation about Structures in C language.pptx
Veeral Rathod
 
ConcordeApp: Engineering Global Impact & Unlocking Billions in Event ROI with AI
chastechaste14
 
classification of computer and basic part of digital computer
ravisinghrajpurohit3
 
The-Dawn-of-AI-Reshaping-Our-World.pptxx
parthbhanushali307
 
What to consider before purchasing Microsoft 365 Business Premium_PDF.pdf
Q-Advise
 
49784907924775488180_LRN2959_Data_Pump_23ai.pdf
Abilash868456
 
advancepresentationskillshdhdhhdhdhdhhfhf
jasmenrojas249
 
Can You Build Dashboards Using Open Source Visualization Tool.docx
Varsha Nayak
 
AI-Ready Handoff: Auto-Summaries & Draft Emails from MQL to Slack in One Flow
bbedford2
 
Web Testing.pptx528278vshbuqffqhhqiwnwuq
studylike474
 
vAdobe Premiere Pro 2025 (v25.2.3.004) Crack Pre-Activated Latest
imang66g
 
Generating Union types w/ Static Analysis
K. Matthew Dupree
 
Protecting the Digital World Cyber Securit
dnthakkar16
 
TRAVEL APIs | WHITE LABEL TRAVEL API | TOP TRAVEL APIs
philipnathen82
 
Visualising Data with Scatterplots in IBM SPSS Statistics.pptx
Version 1 Analytics
 
Role Of Python In Programing Language.pptx
jaykoshti048
 

Staroletov Design by Contract, verification of Cyber-physical systems

  • 1. Modern Software Testing and Formal Verification Techniques Day 3 Sergey Staroletov Polzunov Altai State Technical University, Lenin avenue 46, Barnaul, 656038, Russia Email: serg [email protected] June 26, 2019 1 / 42
  • 2. Today’s agenda 1 Design-By-Contract. MS Code Contracts 2 Deductive verification of C-code with Frama-C WP 3 C-code: is LTL applicable here? 4 Cyber-physical systems and their verification 2 / 42
  • 3. Overall picture of tools applicability 3 / 42
  • 4. Design-By-Contract Created by Bertrand Meyer, firstly implemented in Eiffel language and based on the Sir Tony Hoare’s logic The approach is based on specifying pre-conditions, post-conditions and invariant to functions (methods, classes). 4 / 42
  • 5. Design-By-Contract Well-known forms: {P}C{Q} P =⇒ [C]Q where P – precondition, C – code, Q – postcondition. Invariant is a form of a global pre- and post- condition {I}C{I} In OOP languages: Pre- and Post- conditions are specified for methods Invariant is specified for the whole class Also, for loops Loop Invariants and Loop Variant are specified The things can be specified: As a part of language syntax (Eiffel) In comments (Frama-C) In annotations and special code (MS Code contracts) 5 / 42
  • 6. A bit about Hoare’s Logic Program− > (Sentence)+ Sentence− > Skip|Assignment|If|Loop|Composition 6 / 42
  • 7. A bit about Hoare’s Logic Skip changes nothing Assignment has an influence to the post-condition Composition makes sequential execution with making transition of post-condition If has two branches with “or” operator which holds with 2 preconditions Loop is characterized with the Invariant of the cycle which holds before the cycle, in the cycle and after the cycle is finished. Also there is addition control for resolving The halting Turing problem – the Variant, which should decrease at the each step and to be always positive. 7 / 42
  • 8. MS Code contracts Microsoft, known for its research departments, has added a method to programming using contracts for .NET programs as a special library and extension for Visual Studio. Initially, the research included Spec# (Specification Sharp) language for contract description, but now the contracts are fully integrated into the project in the target programming language (for example, in C#). Contracts can be checked: In dynamic, that is, while the program is running, expressions in the contracts are calculated, and if they are not as expected, an exception is thrown. In static, i.e. during the project build without needing it to run, a special static checker can check the program branches and find some potential errors. 8 / 42
  • 9. MS VS Addition for Code Contracts 9 / 42
  • 11. Class Student constructor contract with a precondition 11 / 42
  • 12. Class Student object invariant 12 / 42
  • 13. Class Student contract violation 13 / 42
  • 14. Class Student contract violation – throw the exception 14 / 42
  • 15. Static checker for contracts in the IDE 15 / 42
  • 17. Add a student to a group list 17 / 42
  • 18. Remove a student from a group list 18 / 42
  • 21. Contracts in C# – resume A good method to move academic approach into production Moves logic of class stability to a class Different way of implementation of checks Does not guarantee a class correctness 21 / 42
  • 22. The Weakest Precondition Dijkstra has proposed the addition to Hoare’s logic – the weakest precondition (WP approach), which requires the precondition to be as simple as possible to reach just a postcondition {P}f{Q} =⇒ {wp(f, Q)fQ} In this case, the further program verification will be as follows: we calculate W = wp(f, Q), go from the end of Q to the start of the function, and we post a task to prove P => W to a theorem prover 22 / 42
  • 23. Frama-C An extensible static-analyze tool Created by INRIA Based on annotation that user write to C code by hand Some annotations can be generated ACSL language for ISO-standardized annotations, provable specification for C code To prove the annotations, the WP approach is used. 23 / 42
  • 25. Frama-C: inserting runtime checks 25 / 42
  • 27. ACSL example in Frama-C 27 / 42
  • 28. Verifying a simple car moving model 28 / 42
  • 29. Towards verifying a drone attitude PID-controller 29 / 42
  • 30. Towards verifying a drone attitude PID-controller Even for this simple code the verification on real floating point numbers is challenging! 30 / 42
  • 31. Towards verifying a drone attitude PID-controller 31 / 42
  • 32. Towards verifying a drone attitude PID-controller We should run Frama-C on infinite abstract real numbers model! 32 / 42
  • 33. Towards verifying a drone attitude PID-controller 33 / 42
  • 34. Towards verifying a drone attitude PID-controller 34 / 42
  • 35. Towards verifying a drone attitude PID-controller 35 / 42
  • 36. C code and LTL: Aora¨ı 36 / 42
  • 37. C code and LTL: Aora¨ı 37 / 42
  • 38. Verification of Cyber-physical systems demo Cyber-physical system: A Cyber part – descrete controller A Physical part – continuous model of the system, here – expressed in ODEs. 38 / 42
  • 39. Verification of Cyber-physical systems These systems can be modeled as Hybrid automata which represent discrete-time and continuous-time transitions; such models are known as Hybrid models and specified using the Hybrid Dynamic Logic . According to A. Platzer, the syntax of hybrid programs is defined as follows: α ::= x := e | ?Q | x = f(x)&Q | α ∪ α | α; α | α∗ (1) where α is a meta-variable for the hybrid programs, x is a meta-variable for program variables, e is a meta-variable for the first-order real-valued terms, f is a meta-variable for the continuous real functions, and Q is a meta-variable for the first-order formulas over real numbers. The construct ‘;’ means here the sequential composition, ‘∪’ — is the non-deterministic choice, ‘?’ — is the condition operator, and ‘∗’ — is the non-deterministic iteration (like Kleene-star). * Platzer, Andr´e. ”Logical Foundations of Cyber-Physical Systems.” 39 / 42
  • 40. Verification of a simple PD-controller The simplification of PID is PD-controller and the model of the system is given as a Hoare’s triple: init =⇒ [controller](req) (2) Then, we decompose the system into precondition, continuous PD-controller and requirements. Precondition: init :== v ≥ 0 ∧ c > 0 ∧ Kp = 2 ∧ Kd = 3 ∧ V(p, pr , v) < c (3) The continuous state: controller :== p = v, v = −Kp · (p − pr ) − Kd · v (4) As the requirement it is proposed to try stability using Lyapunov method: req :== V(p, pr , v) < c (5) V(p, pr , v) = 5/4 · (p − pr )2 + (p − pr ) · v/2 + v2 /4 (6) *Quesel et al.: How to Model and Prove Hybrid Systems with KeYmaera 40 / 42
  • 41. KeYmaera – verification results of the model KeYmaera – is an automatic theorem prover and it implements the Dynamic Differential Logic and KeYmaera’s input are hybrid programs. 41 / 42
  • 42. Learn more about ways of verification and contracts 42 / 42