Skip to content

Commit fe41d1c

Browse files
authored
Update contracts-assigns.md
1 parent dfab451 commit fe41d1c

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/goto-instrument/contracts/doc/user/contracts-assigns.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -502,12 +502,12 @@ int foo()
502502

503503
## Loop Assigns Inference
504504

505-
When loop invariants clauses are specified but loop assigns are not, CBMC will infer
505+
When loop invariant clauses are specified but loop assigns are not, CBMC will infer
506506
loop assigns clauses and use them to apply loop contracts. The idea of the inference
507507
is to include all the left hand side of assignments in the loop.
508508

509509
For example, in the loop in the following function, we assume that only the loop
510-
invariants `i <= SIZE` is specified. Then CBMC will infer loop assigns targets `i`, `j`
510+
invariant `i <= SIZE` is specified. Then CBMC will infer loop assigns targets `i`, `j`
511511
and `__CPROVER_object_whole(b)` for the loop.
512512

513513
```
@@ -569,7 +569,7 @@ As an example, for assignment `ptr = box.ptr`, we cannot determine that `ptr`
569569
aliases `box.ptr`. And hence if we later write to `*ptr`, we will fail to
570570
infer the assigns target `__CPROVER_object_whole(box.ptr)`.
571571

572-
However, the failed inference not result in unsound result.
572+
However, the failed inference does not result in unsoundness.
573573
That is, CBMC will report assignability-checks failure when the inferred
574574
assigns clauses are not accurate.
575575

0 commit comments

Comments
 (0)