Skip to content

Commit f5710cc

Browse files
author
Enrico Steffinlongo
committed
Added concept of canonical goto program
1 parent cbef34e commit f5710cc

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

doc/ADR/README.md

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ where taken at the time they were, so that future maintainers
66
can more easily identify constraints that shaped the architecture
77
of the system and the surrounding infrastructure.
88

9+
## Canonical goto program
10+
\subpage canonical-goto
11+
912
## Release & Packaging
1013

1114
* \subpage release-process

doc/ADR/canonical_goto.md

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
\page canonical-goto Canonical goto definition
2+
3+
During the analysis of a program CBMC transforms the program in an intermediate language called
4+
extended goto. Then the tool performs a series of simplifications on the obtained goto program until
5+
the program is given to the solver.
6+
7+
Here we define the concept of **canonical goto program** as a program that has been simplified to
8+
remove all extended-goto specific features.
9+
10+
More specifically, a program that is in **canonical goto program form** is one that can be analyzed
11+
by any solver deriving from `goto_verifiert` by using the `goto_verifiert::operator()` function
12+
without requiring any lowering step.
13+
14+
At the time of writing verifiers extending `goto_verifiert`, so defining what a **canonical goto
15+
program** is are:
16+
17+
* `all_properties_verifier_with_fault_localizationt`,
18+
* `all_properties_verifier_with_trace_storaget`,
19+
* `all_properties_verifiert`,
20+
* `cover_goals_verifier_with_trace_storaget`,
21+
* `stop_on_fail_verifier_with_fault_localizationt`,
22+
* `stop_on_fail_verifiert`.

0 commit comments

Comments
 (0)