Skip to content

Commit 8648df3

Browse files
authored
Merge pull request #3537 from edstenson/review_nondeterminism
Updated language use in modeling-nondeterminism.md
2 parents 09057ac + 8c61e24 commit 8648df3

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

doc/cprover-manual/modeling-nondeterminism.md

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
### Rationale
66

77
Programs typically read inputs from an environment. These inputs can
8-
take the form of data read from a file, keyboard or network socket, or
8+
take the form of data read from a file, keyboard, or network socket, or
99
arguments passed on the command line. It is usually desirable to analyze
1010
the program for any choice of these inputs. In Model Checking, inputs
1111
are therefore modeled by means of *nondeterminism*, which means that the
@@ -16,13 +16,13 @@ computation that results from any choice of inputs.
1616

1717
The CPROVER tools support the following sources of nondeterminism:
1818

19-
- functions that read inputs from the environments;
20-
- the thread schedule in concurrent programs;
21-
- initial values of local-scoped variables and memory allocated with
22-
`malloc`;
23-
- initial values of variables that are `extern` in all compilation
24-
units;
25-
- explicit functions for generating nondeterminism.
19+
- Functions that read inputs from the environments.
20+
- The thread schedule in concurrent programs.
21+
- Initial values of local-scoped variables and memory allocated with
22+
`malloc`.
23+
- Initial values of variables that are `extern` in all compilation
24+
units.
25+
- Explicit functions for generating nondeterminism.
2626

2727
The CPROVER tools are shipped with a number of stubs for the most
2828
commonly used library functions. When executing a statement such as
@@ -46,11 +46,13 @@ probabilistic (or random) choice.
4646
### Uninterpreted Functions
4747

4848
It may be necessary to check parts of a program independently.
49-
Nondeterminism can be used to over-approximate the behaviour of part of
49+
Nondeterminism can be used to over-approximate the behavior of a part of
5050
the system which is not being checked. Rather than calling a complex or
5151
unrelated function, a nondeterministic stub is used. However, separate
5252
calls to the function can return different results, even for the same
53-
inputs. If the function output only depends on its inputs then this can
53+
inputs.
54+
55+
If the function output only depends on its inputs, this can
5456
introduce spurious errors. To avoid this problem, functions whose names
5557
begin with the prefix `__CPROVER_uninterpreted_` are treated as
5658
uninterpreted functions. Their value is non-deterministic but different

0 commit comments

Comments
 (0)