Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
I
inox
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
LARA
inox
Commits
789ba7ea
Commit
789ba7ea
authored
10 years ago
by
Regis Blanc
Browse files
Options
Downloads
Patches
Plain Diff
introduce verification conditions
parent
1346ea1f
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
doc/verification.rst
+19
-1
19 additions, 1 deletion
doc/verification.rst
with
19 additions
and
1 deletion
doc/verification.rst
+
19
−
1
View file @
789ba7ea
...
@@ -15,7 +15,25 @@ by Leon. We also discuss how Leon can be used to prove mathematical theorems.
...
@@ -15,7 +15,25 @@ by Leon. We also discuss how Leon can be used to prove mathematical theorems.
Verification conditions
Verification conditions
-----------------------
-----------------------
Given an input program, Leon generates individual verification conditions
corresponding to different properties of the program. A program is correct if
all of the generated verification conditions are `valid`. The validity of some
conditions depends on the validity of other conditions --- typically a
postcondition is `valid` assuming the precondition is `valid`.
For each function, Leon attempts to verify its contract, if there is one. A
*contract* is the combination of a *precondition* and a *postcondition*. A
function meets its contract if for any input parameter that passes the
precondition, the postcondition holds after executing the function.
Preconditions and postconditions are annotations given by the user --- they are
the secifications and hence cannot be infered by a tool and must be provided.
In addition to user-provided contracts, Leon will also generate a few safety
verification conditions of its own. It will check that any array accesses are
within proper bounds, and that pattern matching always cover all possible cases,
even given complex precondition. The latter is different from the Scala compiler
check on pattern matching exhaustiveness, as Leon considers information provided
by (explicit or implicit) preconditions to the match expression.
Postconditions
Postconditions
**************
**************
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment