You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: latest/DafnyRef/Attributes.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -398,7 +398,7 @@ in which methods or functions are verified (default: N = 1).
398
398
`{:resource_limit N}` limits the verifier resource usage to verify the method or function to `N`.
399
399
400
400
This is the per-method equivalent of the command-line flag `/rlimit:N` or `--resource-limit N`.
401
-
If using [`{:vcs_split_on_every_assert}`](#sec-vcs_split_on_every_assert) as well, the limit will be set for each assertion.
401
+
If using [`{:isolate_assertions}`](#sec-isolate_assertions) as well, the limit will be set for each assertion.
402
402
403
403
The attribute `{:rlimit N}` is also available, and limits the verifier resource usage to verify the method or function to `N * 1000`. This version is deprecated, however.
404
404
@@ -422,10 +422,10 @@ To give orders of magnitude about resource usage, here is a list of examples ind
422
422
}
423
423
```
424
424
425
-
* 40K total resource usage using [`{:vcs_split_on_every_assert}`](#sec-vcs_split_on_every_assert)
425
+
* 40K total resource usage using [`{:isolate_assertions}`](#sec-isolate_assertions)
text.dfy(11,25): Error: argument at index 1 ('d') might not be allocated in the two-state function's previous state
1
+
text.dfy(11,25): Error: argument at index 1 for parameter 'd' could not be proved to be allocated in the two-state function's previous state -- if you add 'new' before the parameter declaration, like 'new d: Cell', arguments can refer to expressions possibly unallocated in the previous state
2
2
3
3
Dafny program verifier finished with 2 verified, 1 error
text.dfy(10,27): Error: argument at index 0 ('c') might not be allocated in the two-state function's previous state
1
+
text.dfy(10,27): Error: argument at index 0 for parameter 'c' could not be proved to be allocated in the two-state function's previous state -- if you add 'new' before the parameter declaration, like 'new c: Cell', arguments can refer to expressions possibly unallocated in the previous state
2
2
3
3
Dafny program verifier finished with 2 verified, 1 error
text.dfy(3,9): Error: type parameter (T) passed to type A must support nonempty (got Q) (perhaps try declaring abstract type 'Q' on line 2 as 'Q(00)', which says it can only be instantiated with a nonempty type)
1
+
text.dfy(3,9): Error: type parameter (T) passed to type A must be nonempty (got Q) (perhaps try declaring abstract type 'Q' on line 2 as 'Q(00)', which says it can only be instantiated with a nonempty type)
Copy file name to clipboardExpand all lines: latest/DafnyRef/UserGuide.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1434,7 +1434,7 @@ The fundamental unit of verification in `dafny` is an _assertion batch_, which c
1434
1434
* If the verifier says it is correct,[^smt-encoding] it means that all the assertions hold.
1435
1435
* If the verifier returns a counterexample, this counterexample is used to determine both the failing assertion and the failing path.
1436
1436
In order to retrieve additional failing assertions, `dafny` will again query the verifier after turning previously failed assertions into assumptions.[^example-assertion-turned-into-assumption][^caveat-about-assertion-and-assumption]
1437
-
* If the verifier returns `unknown` or times out, or even preemptively for difficult assertions or to reduce the chance that the verifier will ‘be confused’ by the many assertions in a large batch, `dafny` may partition the assertions into smaller batches[^smaller-batches]. An extreme case is the use of the `/vcsSplitOnEveryAssert` command-line option or the [`{:vcs_split_on_every_assert}` attribute](#sec-vcs_split_on_every_assert), which causes `dafny` to make one batch for each assertion.
1437
+
* If the verifier returns `unknown` or times out, or even preemptively for difficult assertions or to reduce the chance that the verifier will ‘be confused’ by the many assertions in a large batch, `dafny` may partition the assertions into smaller batches[^smaller-batches]. An extreme case is the use of the `/vcsSplitOnEveryAssert` command-line option or the [`{:isolate_assertions}` attribute](#sec-isolate_assertions), which causes `dafny` to make one batch for each assertion.
1438
1438
1439
1439
[^smt-encoding]: The formula sent to the underlying SMT solver is the negation of the formula that the verifier wants to prove - also called a VC or verification condition. Hence, if the SMT solver returns "unsat", it means that the SMT formula is always false, meaning the verifier's formula is always true. On the other side, if the SMT solver returns "sat", it means that the SMT formula can be made true with a special variable assignment, which means that the verifier's formula is false under that same variable assignment, meaning it's a counter-example for the verifier. In practice and because of quantifiers, the SMT solver will usually return "unknown" instead of "sat", but will still provide a variable assignment that it couldn't prove that it does not make the formula true. `dafny` reports it as a "counter-example" but it might not be a real counter-example, only provide hints about what `dafny` knows.
1440
1440
@@ -1450,7 +1450,7 @@ Here is how you can control how `dafny` partitions assertions into batches.
1450
1450
1451
1451
*[`{:focus}`](#sec-focus) on an assert generates a separate assertion batch for the assertions of the enclosing block.
1452
1452
*[`{:split_here}`](#sec-split_here) on an assert generates a separate assertion batch for assertions after this point.
1453
-
*[`{:vcs_split_on_every_assert}`](#sec-vcs_split_on_every_assert) on a function or a method generates one assertion batch per assertion
1453
+
*[`{:isolate_assertions}`](#sec-isolate_assertions) on a function or a method generates one assertion batch per assertion
1454
1454
1455
1455
We discourage the use of the following _heuristics attributes_ to partition assertions into batches.
1456
1456
The effect of these attributes may vary, because they are low-level attributes and tune low-level heuristics, and will result in splits that could be manually controlled anyway.
0 commit comments