Repository navigation
docs: Correct the public documentation the 0.2 audit found wrong - #45
Merged
Merged
Conversation
…their bounds, in pointers.
…their bounds, in ch12-loops-in-practice.
…their bounds, in ch14-pointers-frames-modifies.
…their bounds, in ARCHITECTURE.
…5 adapter, and the Lean fallback.
…bset on the front page.
…d its opt-out work.
…of reaches, in ch06.
… last bare constructs.
…++ standard in use.
…d bare constructs.
…ts, and build the test tools.
… assessment up to date.
…es the verification failure.
… that no longer compiles.
…t no longer compiles.
…ntax that no longer compiles.
…ntax that no longer compiles.
…ntax that no longer compiles.
…rd syntax that no longer compiles.
…e keyword syntax that no longer compiles.
…tax that no longer compiles.
…yntax that no longer compiles.
…ord syntax that no longer compiles.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The 0.2 audit of the public documentation found statements the code or the tests contradict. Each fix below was checked again against the code or a real run before writing it. Where a page now shows a verdict or an error, the example is checked by
check-doc-examples.py.Language reference:
syntax.rstsaid C++26pre/post"belong to the compiler". This Clang implements no C++26 contracts, and with-fverify-contractsa barepre(...)is an error whose fix-it writescppverify::pre. A new section shows it with a checkedrejectsexample (the barecontract_asserterror included). The README said the same thing ambiguously.pointers.rstsaid a bounded quantifier's bound is "the implicit trigger", and so did ch12, ch14, and ARCHITECTURE.quantifytakes patterns only fromcppverify::triggermarks, and otherwise the solver chooses its own, as the expressions page already says.ghost-proofs.rstcalled a recursive spec opaque by default. It is unfolded once, andhideis what makes a spec opaque.integers.rstsaid every encoding gives the same verdicts and counterexamples. Every encoding is exact, but one may settle in time what another leaves unresolved, and counterexample values are the solver's choice.limitations.rst:suite/reference_subobject_lowering.cpp);--collection-timeoutover collections;Unresolvedwithconstruct.unsupported, and never a counterexample;++/--,*p = rfor a record, andcppverify::aliasesacross pointee types.tooling.rstsaidrun-verify-tests.shlowers every example first; the public script does not. The row now says what it runs. The page also gives the lit command, with the test toolssetup.shdoes not build (as the macOS CI job builds them).Front page and case studies:
index.rstgavebuild\binas the Windows output for the Visual Studio generator, which writesbuild\Release\bin(setup.ps1). The Quick start says where the binaries are in a release archive. The opening names the supported subset.Book:
hide/revealapply to the whole function. Revealing can change what a proof reaches, though no setting makes a false claim verify.aliasingcheck, and a swap by sums that fails when both pointers are the same (checked, with its counterexample). The aliasing default covers any pair with one mutable pointer, not only two mutable ones. The text block of bare clauses is gone.INT_MINnote to ch18, which explains it.Certifiedwhen Lean checked every obligation;Proved (portfolio+lean);pre(...)is qualified.Exported: lean fallback: ...rather than exiting as unresolved. Fallback results can beCertified, and the release gate needs the test tools built.deleteand a read of an unwritten local, which were checked with and without--no-check-ub. Shifts follow the C++ standard in use since the C++20 fix.CPPVERIFY_JOBS.Design notes and other files:
&xis unsupported because escapes are not modeled (lexical lifetimes are);Transform/andBackend/hold.third_party/README.md: the Verify tests also run on macOS.scripts/coverage-verify.shwrote its failing input in the keyword syntax, which no longer parses, and|| truehid that, so the verification-failure path was never covered. It is qualified now. Withpre(false)it would have been vacuous rather than failing, so the input is a plain false postcondition. It now fails with the counterexampleresult = 1.samples/andtest/(from 2026-06) are in the keyword syntax, no longer compile, and are used by nothing. They are removed.Checked: all 175 documentation examples pass (46 against the verdicts their pages show), and the site builds with
sphinx-build -W.