Given:

```
cat import_only.v
Require Import Classical.
```

then:

```
coqchk -silent -o import_only.vo
[...]
* Axioms:
Coq.Logic.Classical_Prop.classic
```

This surprises me. I expected it to behave like `Print Assumptions`

, which actually looks for the axioms that were used instead of simply the axioms that exist in the context.

Why is this? Is there some way to do the equivalent of `Print Assumptions`

for every "leaf" of the development (or, more bruteforcy, for every lemma/definition)?

Oh. I just realized it is checking the assumptions of everything in the `Classical`

file. :woman_facepalming:

Gah, this is annoying! Maybe not for `Classical`

, which I only import if I want to use classical logic, but I originally noticed this with `Program.Wf`

. You can use it without functional extensionality, but since it includes the line `Require Import FunctionalExtensionality.`

in order to prove a specific lemma, the functional extensionality axiom appears in `coqchk`

from then on.

if you want to avoid checking modules depended on by your modules, then I think you need to use the `-norec`

option for `coqchk`

. However, this is discouraged by for example the Common Criteria eval recommendations

"Program imports more axioms than you'd like" is a known annoyance, and e.g. https://github.com/coq/coq/issues/15408#issuecomment-1014275290 suggests PRs are welcome

currently, I just eschew `Require Import Program`

and have more granular imports (just those from stdpp: `From Coq.Program Require Import Basics Syntax.`

).

while I do use `Program`

, I don't recommend its well-founded recursion support. Robust use of WfRec requires proving unfolding lemmas, which Equations (and Function) generate but `Program`

doesn't.

You can do `coqchk -norec`

to check only the module passed after norec.

That can be combined with an incremental check where you do this for all files.

Or you could pass all the files you want to check at once each with a -norec.

Oh I missed that -norec was mentioned already oops.

Last updated: Oct 01 2023 at 19:01 UTC