coq-community / run-coq-bug-minimizer

Repository for triggering runs of the Coq bug minimizer using GitHub Actions [maintainer=@JasonGross]
MIT License
2 stars 0 forks source link

Test issue creation #2

Closed JasonGross closed 4 years ago

JasonGross commented 4 years ago

@coqbot: minimize it

opam install -y coq-ext-lib
eval $(opam env)

mkdir temp
cd temp
wget https://github.com/coq/coq/files/4698509/bug.v.zip
unzip bug.v.zip
coqc -q bug.v
JasonGross commented 2 years ago

Does coqbot watch this repo? @coqbot minimize

opam install coq-metacoq coq-quickchick
echo > bug.v <<EOF
From QuickChick Require Import Sets.
From MetaCoq.Template Require Import TermEquality.
EOF
coqc -q bug.v
coqbot commented 2 years ago

Hey @JasonGross, the coq bug minimizer is running your script, I'll come back to you with the results once it's done.

coqbot commented 2 years ago

@JasonGross, Error: Could not minimize file (full log on GitHub Actions)

build log ``` ++ (/github/workspace/run-script.sh @ line 1) $ opam install coq-metacoq coq-quickchick The following dependencies couldn't be met: - coq-quickchick -> coq < 8.12~ not available because the package is pinned to version 8.14.0 - coq-quickchick -> ocaml >= 4.07 base of this switch (use `--unlock-base' to force) No solution found, exiting ```
minimizer log ``` ```

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross). If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

JasonGross commented 2 years ago

@coqbot minimize

opam install --unlock-base coq-metacoq coq-quickchick
echo > bug.v <<EOF
From QuickChick Require Import Sets.
From MetaCoq.Template Require Import TermEquality.
EOF
coqc -q bug.v
coqbot commented 2 years ago

Hey @JasonGross, the coq bug minimizer is running your script, I'll come back to you with the results once it's done.

coqbot commented 2 years ago

@JasonGross, Error: Could not minimize file (full log on GitHub Actions)

build log ``` ++ (/github/workspace/run-script.sh @ line 1) $ opam install --unlock-base coq-metacoq coq-quickchick The following dependencies couldn't be met: - coq-metacoq -> coq < 8.13~ not available because the package is pinned to version 8.14.0 - coq-metacoq -> coq-metacoq-template >= 1.0~beta2+8.13 -> coq < 8.14~ not available because the package is pinned to version 8.14.0 No solution found, exiting ```
minimizer log ``` ```

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross). If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

JasonGross commented 2 years ago

@coqbot minimize

opam switch create coq.8.7.2 --empty
opam switch coq.8.7.2
opam install -y coq.8.7.2
eval $(opam env)
git clone https://github.com/Alizter/VST.git
cd VST
git checkout test-6984
make veric/SeparationLogic.vo
coqbot commented 2 years ago

Hey @JasonGross, the coq bug minimizer is running your script, I'll come back to you with the results once it's done.

coqbot commented 2 years ago

@JasonGross, Error: Could not minimize file (full log on GitHub Actions)

build log ``` ```
minimizer log ``` ```

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross). If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

JasonGross commented 2 years ago

@coqbot minimize

opam switch create coq.8.7.2 --empty
opam switch coq.8.7.2
opam install -y coq.8.7.2
eval $(opam env)
git clone https://github.com/Alizter/VST.git
cd VST
git checkout test-6984
make veric/SeparationLogic.vo
coqbot commented 2 years ago

Hey @JasonGross, the coq bug minimizer is running your script, I'll come back to you with the results once it's done.

coqbot commented 2 years ago

@JasonGross, Error: Could not minimize file (full log on GitHub Actions)

build log ``` ```
minimizer log ``` ```

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross). If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

JasonGross commented 2 years ago

@coqbot minimize

opam switch create coq.8.7.2 --empty
opam switch coq.8.7.2
opam install -y coq.8.7.2
eval $(opam env)
git clone https://github.com/Alizter/VST.git
cd VST
git checkout test-6984
make veric/SeparationLogic.vo
coqbot commented 2 years ago

Hey @JasonGross, the coq bug minimizer is running your script, I'll come back to you with the results once it's done.

coqbot commented 2 years ago

@JasonGross, Error: Could not minimize file (full log on GitHub Actions)

build log ``` ```
minimizer log ``` ```

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross). If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

JasonGross commented 2 years ago

@coqbot minimize

opam switch create coq.8.7.2 --empty
opam switch coq.8.7.2
opam install -y coq.8.7.2
eval $(opam env)
git clone https://github.com/Alizter/VST.git
cd VST
git checkout test-6984
make veric/SeparationLogic.vo
coqbot commented 2 years ago

Hey @JasonGross, the coq bug minimizer is running your script, I'll come back to you with the results once it's done.

coqbot commented 2 years ago

@JasonGross, Error: Could not minimize file (full log on GitHub Actions)

build log ``` ++ (/github/workspace/run-script.sh @ line 1) $ opam switch create coq.8.7.2 --empty cat: /github/workspace/coqbot.resume-minimization-url: No such file or directory cat: /github/workspace/coqbot.resumption-args: No such file or directory grep: failing-log.log: No such file or directory ::group::opam wrap files /github/workspace /github/workspace mv: cannot stat 'coqc coqtop': No such file or directory ```
minimizer log ``` ```

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross). If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

JasonGross commented 2 years ago

@coqbot minimize

opam switch create coq.8.7.2 --empty
opam switch coq.8.7.2
opam install -y coq.8.7.2
eval $(opam env)
git clone https://github.com/Alizter/VST.git
cd VST
git checkout test-6984
make veric/SeparationLogic.vo
coqbot commented 2 years ago

Hey @JasonGross, the coq bug minimizer is running your script, I'll come back to you with the results once it's done.

JasonGross commented 2 years ago

@coqbot minimize

opam switch create coq.8.7.2 --empty
opam switch coq.8.7.2
opam install -y coq.8.7.2
eval $(opam env)
git clone https://github.com/Alizter/VST.git
cd VST
git checkout test-6984
make veric/SeparationLogic.vo
coqbot commented 2 years ago

Hey @JasonGross, the coq bug minimizer is running your script, I'll come back to you with the results once it's done.

coqbot commented 2 years ago

@JasonGross, Error: Could not minimize file (full log on GitHub Actions)

build log ``` ++ (/github/workspace/run-script.sh @ line 1) $ opam switch create coq.8.7.2 --empty grep: failing-log.log: No such file or directory ::group::opam wrap files attempting to wrap coqc /home/coq/.opam/4.05.0/bin/coqc ~/.opam/4.05.0/bin /github/workspace /github/workspace attempting to wrap coqtop /home/coq/.opam/4.05.0/bin/coqtop ~/.opam/4.05.0/bin /github/workspace /github/workspace ::endgroup:: ++ (/github/workspace/run-script.sh @ line 2) $ opam switch coq.8.7.2 grep: failing-log.log: No such file or directory ::group::opam wrap files attempting to wrap coqc /home/coq/.opam/4.05.0/bin/coqc ~/.opam/4.05.0/bin /github/workspace /github/workspace attempting to wrap coqtop /home/coq/.opam/4.05.0/bin/coqtop ~/.opam/4.05.0/bin /github/workspace /github/workspace ::endgroup:: # Run eval $(opam env) to update the current shell environment ++ (/github/workspace/run-script.sh @ line 3) $ opam install -y coq.8.7.2 grep: failing-log.log: No such file or directory ::group::opam wrap files attempting to wrap coqc /home/coq/.opam/4.05.0/bin/coqc ~/.opam/4.05.0/bin /github/workspace /github/workspace attempting to wrap coqtop /home/coq/.opam/4.05.0/bin/coqtop ~/.opam/4.05.0/bin /github/workspace /github/workspace ::endgroup:: The following actions will be performed: - install base-bigarray base - install ocaml-base-compiler 4.09.1 [required by ocaml] - install conf-perl 2 [required by camlp5] - install base-threads base - install base-unix base - install conf-findutils 1 [required by coq] - install ocaml-config 1 [required by ocaml] - install ocaml 4.09.1 [required by coq] - install ocamlfind 1.9.3 [required by coq] - install camlp5 7.14 [required by coq] - install num 1.4 [required by coq] - install coq 8.7.2 ===== 12 to install ===== <><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><> [num.1.4] downloaded from cache at https://opam.ocaml.org/cache [camlp5.7.14] downloaded from cache at https://opam.ocaml.org/cache [ocaml-base-compiler.4.09.1] downloaded from cache at https://opam.ocaml.org/cache [ocamlfind.1.9.3] downloaded from cache at https://opam.ocaml.org/cache [coq.8.7.2] downloaded from cache at https://opam.ocaml.org/cache [ocaml-base-compiler.4.09.1/alt-signal-stack.patch] downloaded from https://opam.ocaml.org/cache <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -> installed base-bigarray.base -> installed base-threads.base -> installed base-unix.base -> installed conf-findutils.1 -> installed conf-perl.2 -> installed ocaml-base-compiler.4.09.1 -> installed ocaml-config.1 -> installed ocaml.4.09.1 -> installed camlp5.7.14 -> installed ocamlfind.1.9.3 -> installed num.1.4 -> installed coq.8.7.2 Done. # Run eval $(opam env) to update the current shell environment +++ (/github/workspace/run-script.sh @ line 4) $ opam env grep: failing-log.log: No such file or directory ::group::opam wrap files attempting to wrap coqc attempting to wrap coqtop ::endgroup:: ++ (/github/workspace/run-script.sh @ line 4) $ eval /home/coq/.opam/4.05.0/bin/coqc '~/.opam/4.05.0/bin' /github/workspace /github/workspace /home/coq/.opam/4.05.0/bin/coqtop '~/.opam/4.05.0/bin' /github/workspace /github/workspace 'OPAM_SWITCH_PREFIX='\''/home/coq/.opam/coq.8.7.2'\'';' export 'OPAM_SWITCH_PREFIX;' 'CAML_LD_LIBRARY_PATH='\''/home/coq/.opam/coq.8.7.2/lib/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml'\'';' export 'CAML_LD_LIBRARY_PATH;' 'OCAML_TOPLEVEL_PATH='\''/home/coq/.opam/coq.8.7.2/lib/toplevel'\'';' export 'OCAML_TOPLEVEL_PATH;' 'MANPATH='\'':/home/coq/.opam/4.05.0/man:/home/coq/.opam/coq.8.7.2/man'\'';' export 'MANPATH;' 'PATH='\''/home/coq/.opam/coq.8.7.2/bin:/home/coq/.local/bin:/home/coq/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games'\'';' export 'PATH;' +++ (/github/workspace/run-script.sh @ line 4) $ /home/coq/.opam/4.05.0/bin/coqc /home/coq/.opam/4.05.0/bin /github/workspace /github/workspace /home/coq/.opam/4.05.0/bin/coqtop /home/coq/.opam/4.05.0/bin /github/workspace /github/workspace OPAM_SWITCH_PREFIX=/home/coq/.opam/coq.8.7.2 MINIMIZER_DEBUG: /home/coq/.opam/4.05.0/bin/coqc MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace MINIMIZER_DEBUG: exec: /home/coq/.opam/4.05.0/bin/coqc.orig /home/coq/.opam/4.05.0/bin /github/workspace /github/workspace /home/coq/.opam/4.05.0/bin/coqtop /home/coq/.opam/4.05.0/bin /github/workspace /github/workspace OPAM_SWITCH_PREFIX=/home/coq/.opam/coq.8.7.2 Error: More than one file to compile: /github/workspace ```
minimizer log ``` ```

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross). If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

coqbot commented 2 years ago

@JasonGross, Error: Could not minimize file (full log on GitHub Actions)

build log ``` ++ (/github/workspace/run-script.sh @ line 1) $ opam switch create coq.8.7.2 --empty grep: failing-log.log: No such file or directory ::group::opam wrap files attempting to wrap coqc /home/coq/.opam/4.05.0/bin/coqc ~/.opam/4.05.0/bin /github/workspace /github/workspace attempting to wrap coqtop /home/coq/.opam/4.05.0/bin/coqtop ~/.opam/4.05.0/bin /github/workspace /github/workspace ::endgroup:: ++ (/github/workspace/run-script.sh @ line 2) $ opam switch coq.8.7.2 grep: failing-log.log: No such file or directory # Run eval $(opam env) to update the current shell environment ::group::opam wrap files attempting to wrap coqc /home/coq/.opam/4.05.0/bin/coqc ~/.opam/4.05.0/bin /github/workspace /github/workspace attempting to wrap coqtop /home/coq/.opam/4.05.0/bin/coqtop ~/.opam/4.05.0/bin /github/workspace /github/workspace ::endgroup:: ++ (/github/workspace/run-script.sh @ line 3) $ opam install -y coq.8.7.2 grep: failing-log.log: No such file or directory The following actions will be performed: - install base-bigarray base - install ocaml-base-compiler 4.09.1 [required by ocaml] - install conf-perl 2 [required by camlp5] - install base-threads base - install base-unix base - install conf-findutils 1 [required by coq] - install ocaml-config 1 [required by ocaml] - install ocaml 4.09.1 [required by coq] - install ocamlfind 1.9.3 [required by coq] - install camlp5 7.14 [required by coq] - install num 1.4 [required by coq] - install coq 8.7.2 ===== 12 to install ===== <><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><> [camlp5.7.14] downloaded from cache at https://opam.ocaml.org/cache [num.1.4] downloaded from cache at https://opam.ocaml.org/cache [coq.8.7.2] downloaded from cache at https://opam.ocaml.org/cache [ocaml-base-compiler.4.09.1] downloaded from cache at https://opam.ocaml.org/cache [ocamlfind.1.9.3] downloaded from cache at https://opam.ocaml.org/cache [ocaml-base-compiler.4.09.1/alt-signal-stack.patch] downloaded from https://opam.ocaml.org/cache <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -> installed base-bigarray.base -> installed base-threads.base -> installed base-unix.base -> installed conf-findutils.1 -> installed conf-perl.2 -> installed ocaml-base-compiler.4.09.1 -> installed ocaml-config.1 -> installed ocaml.4.09.1 -> installed camlp5.7.14 -> installed ocamlfind.1.9.3 -> installed num.1.4 -> installed coq.8.7.2 Done. # Run eval $(opam env) to update the current shell environment ::group::opam wrap files attempting to wrap coqc /home/coq/.opam/4.05.0/bin/coqc ~/.opam/4.05.0/bin /github/workspace /github/workspace attempting to wrap coqtop /home/coq/.opam/4.05.0/bin/coqtop ~/.opam/4.05.0/bin /github/workspace /github/workspace ::endgroup:: +++ (/github/workspace/run-script.sh @ line 4) $ opam env grep: failing-log.log: No such file or directory ::group::opam wrap files attempting to wrap coqc attempting to wrap coqtop ::endgroup:: ++ (/github/workspace/run-script.sh @ line 4) $ eval 'OPAM_SWITCH_PREFIX='\''/home/coq/.opam/coq.8.7.2'\'';' export 'OPAM_SWITCH_PREFIX;' 'CAML_LD_LIBRARY_PATH='\''/home/coq/.opam/coq.8.7.2/lib/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml'\'';' export 'CAML_LD_LIBRARY_PATH;' 'OCAML_TOPLEVEL_PATH='\''/home/coq/.opam/coq.8.7.2/lib/toplevel'\'';' export 'OCAML_TOPLEVEL_PATH;' 'MANPATH='\'':/home/coq/.opam/4.05.0/man:/home/coq/.opam/coq.8.7.2/man'\'';' export 'MANPATH;' 'PATH='\''/home/coq/.opam/coq.8.7.2/bin:/home/coq/.local/bin:/home/coq/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games'\'';' export 'PATH;' /home/coq/.opam/4.05.0/bin/coqc '~/.opam/4.05.0/bin' /github/workspace /github/workspace /home/coq/.opam/4.05.0/bin/coqtop '~/.opam/4.05.0/bin' /github/workspace /github/workspace +++ (/github/workspace/run-script.sh @ line 4) $ OPAM_SWITCH_PREFIX=/home/coq/.opam/coq.8.7.2 +++ (/github/workspace/run-script.sh @ line 4) $ export OPAM_SWITCH_PREFIX +++ (/github/workspace/run-script.sh @ line 4) $ CAML_LD_LIBRARY_PATH=/home/coq/.opam/coq.8.7.2/lib/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml +++ (/github/workspace/run-script.sh @ line 4) $ export CAML_LD_LIBRARY_PATH +++ (/github/workspace/run-script.sh @ line 4) $ OCAML_TOPLEVEL_PATH=/home/coq/.opam/coq.8.7.2/lib/toplevel +++ (/github/workspace/run-script.sh @ line 4) $ export OCAML_TOPLEVEL_PATH +++ (/github/workspace/run-script.sh @ line 4) $ MANPATH=:/home/coq/.opam/4.05.0/man:/home/coq/.opam/coq.8.7.2/man +++ (/github/workspace/run-script.sh @ line 4) $ export MANPATH +++ (/github/workspace/run-script.sh @ line 4) $ PATH=/home/coq/.opam/coq.8.7.2/bin:/home/coq/.local/bin:/home/coq/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games +++ (/github/workspace/run-script.sh @ line 4) $ export PATH +++ (/github/workspace/run-script.sh @ line 4) $ /home/coq/.opam/4.05.0/bin/coqc /home/coq/.opam/4.05.0/bin /github/workspace /github/workspace /home/coq/.opam/4.05.0/bin/coqtop /home/coq/.opam/4.05.0/bin /github/workspace /github/workspace MINIMIZER_DEBUG: /home/coq/.opam/4.05.0/bin/coqc MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace MINIMIZER_DEBUG: exec: /home/coq/.opam/4.05.0/bin/coqc.orig /home/coq/.opam/4.05.0/bin /github/workspace /github/workspace /home/coq/.opam/4.05.0/bin/coqtop /home/coq/.opam/4.05.0/bin /github/workspace /github/workspace Error: More than one file to compile: /github/workspace ```
minimizer log ``` ```

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross). If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

JasonGross commented 2 years ago

@coqbot minimize

opam switch create coq.8.7.2 --empty
opam switch coq.8.7.2
opam install -y coq.8.7.2
eval $(opam env)
git clone https://github.com/Alizter/VST.git
cd VST
git checkout test-6984
make veric/SeparationLogic.vo
coqbot commented 2 years ago

Hey @JasonGross, the coq bug minimizer is running your script, I'll come back to you with the results once it's done.

coqbot commented 2 years ago

@JasonGross, Error: Could not minimize file (full log on GitHub Actions)

build log ``` ++ (/github/workspace/run-script.sh @ line 1) $ opam switch create coq.8.7.2 --empty /home/coq/.opam/4.05.0/bin/coqc ~/.opam/4.05.0/bin /github/workspace /github/workspace /home/coq/.opam/4.05.0/bin/coqtop ~/.opam/4.05.0/bin /github/workspace /github/workspace ++ (/github/workspace/run-script.sh @ line 2) $ opam switch coq.8.7.2 # Run eval $(opam env) to update the current shell environment /home/coq/.opam/4.05.0/bin/coqc ~/.opam/4.05.0/bin /github/workspace /github/workspace /home/coq/.opam/4.05.0/bin/coqtop ~/.opam/4.05.0/bin /github/workspace /github/workspace ++ (/github/workspace/run-script.sh @ line 3) $ opam install -y coq.8.7.2 The following actions will be performed: - install base-bigarray base - install ocaml-base-compiler 4.09.1 [required by ocaml] - install conf-perl 2 [required by camlp5] - install base-threads base - install base-unix base - install conf-findutils 1 [required by coq] - install ocaml-config 1 [required by ocaml] - install ocaml 4.09.1 [required by coq] - install ocamlfind 1.9.3 [required by coq] - install camlp5 7.14 [required by coq] - install num 1.4 [required by coq] - install coq 8.7.2 ===== 12 to install ===== <><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><> [camlp5.7.14] downloaded from cache at https://opam.ocaml.org/cache [coq.8.7.2] downloaded from cache at https://opam.ocaml.org/cache [num.1.4] downloaded from cache at https://opam.ocaml.org/cache [ocaml-base-compiler.4.09.1] downloaded from cache at https://opam.ocaml.org/cache [ocamlfind.1.9.3] downloaded from cache at https://opam.ocaml.org/cache [ocaml-base-compiler.4.09.1/alt-signal-stack.patch] downloaded from https://opam.ocaml.org/cache <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -> installed base-bigarray.base -> installed base-threads.base -> installed base-unix.base -> installed conf-findutils.1 -> installed conf-perl.2 -> installed ocaml-base-compiler.4.09.1 -> installed ocaml-config.1 -> installed ocaml.4.09.1 -> installed camlp5.7.14 -> installed ocamlfind.1.9.3 -> installed num.1.4 -> installed coq.8.7.2 Done. # Run eval $(opam env) to update the current shell environment /home/coq/.opam/4.05.0/bin/coqc ~/.opam/4.05.0/bin /github/workspace /github/workspace /home/coq/.opam/4.05.0/bin/coqtop ~/.opam/4.05.0/bin /github/workspace /github/workspace +++ (/github/workspace/run-script.sh @ line 4) $ opam env ++ (/github/workspace/run-script.sh @ line 4) $ eval 'OPAM_SWITCH_PREFIX='\''/home/coq/.opam/coq.8.7.2'\'';' export 'OPAM_SWITCH_PREFIX;' 'CAML_LD_LIBRARY_PATH='\''/home/coq/.opam/coq.8.7.2/lib/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml'\'';' export 'CAML_LD_LIBRARY_PATH;' 'OCAML_TOPLEVEL_PATH='\''/home/coq/.opam/coq.8.7.2/lib/toplevel'\'';' export 'OCAML_TOPLEVEL_PATH;' 'MANPATH='\'':/home/coq/.opam/4.05.0/man:/home/coq/.opam/coq.8.7.2/man'\'';' export 'MANPATH;' 'PATH='\''/home/coq/.opam/coq.8.7.2/bin:/home/coq/.local/bin:/home/coq/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games'\'';' export 'PATH;' /home/coq/.opam/4.05.0/bin/coqc '~/.opam/4.05.0/bin' /github/workspace /github/workspace /home/coq/.opam/4.05.0/bin/coqtop '~/.opam/4.05.0/bin' /github/workspace /github/workspace +++ (/github/workspace/run-script.sh @ line 4) $ OPAM_SWITCH_PREFIX=/home/coq/.opam/coq.8.7.2 +++ (/github/workspace/run-script.sh @ line 4) $ export OPAM_SWITCH_PREFIX +++ (/github/workspace/run-script.sh @ line 4) $ CAML_LD_LIBRARY_PATH=/home/coq/.opam/coq.8.7.2/lib/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml +++ (/github/workspace/run-script.sh @ line 4) $ export CAML_LD_LIBRARY_PATH +++ (/github/workspace/run-script.sh @ line 4) $ OCAML_TOPLEVEL_PATH=/home/coq/.opam/coq.8.7.2/lib/toplevel +++ (/github/workspace/run-script.sh @ line 4) $ export OCAML_TOPLEVEL_PATH +++ (/github/workspace/run-script.sh @ line 4) $ MANPATH=:/home/coq/.opam/4.05.0/man:/home/coq/.opam/coq.8.7.2/man +++ (/github/workspace/run-script.sh @ line 4) $ export MANPATH +++ (/github/workspace/run-script.sh @ line 4) $ PATH=/home/coq/.opam/coq.8.7.2/bin:/home/coq/.local/bin:/home/coq/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games +++ (/github/workspace/run-script.sh @ line 4) $ export PATH +++ (/github/workspace/run-script.sh @ line 4) $ /home/coq/.opam/4.05.0/bin/coqc /home/coq/.opam/4.05.0/bin /github/workspace /github/workspace /home/coq/.opam/4.05.0/bin/coqtop /home/coq/.opam/4.05.0/bin /github/workspace /github/workspace MINIMIZER_DEBUG: /home/coq/.opam/4.05.0/bin/coqc MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace MINIMIZER_DEBUG: exec: /home/coq/.opam/4.05.0/bin/coqc.orig /home/coq/.opam/4.05.0/bin /github/workspace /github/workspace /home/coq/.opam/4.05.0/bin/coqtop /home/coq/.opam/4.05.0/bin /github/workspace /github/workspace Error: More than one file to compile: /github/workspace ```
minimizer log ``` ```

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross). If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

JasonGross commented 2 years ago

@coqbot minimize

opam switch create coq.8.7.2 --empty
opam switch coq.8.7.2
opam install -y coq.8.7.2
eval $(opam env)
git clone https://github.com/Alizter/VST.git
cd VST
git checkout test-6984
make veric/SeparationLogic.vo
coqbot commented 2 years ago

Hey @JasonGross, the coq bug minimizer is running your script, I'll come back to you with the results once it's done.

coqbot commented 2 years ago

@JasonGross, Error: Could not minimize file (full log on GitHub Actions)

build log ``` ++ (/github/workspace/run-script.sh @ line 1) $ opam switch create coq.8.7.2 --empty grep: failing-log.log: No such file or directory ::group::opam wrap files attempting to wrap coqc /home/coq/.opam/4.05.0/bin/coqc wrapping coqc attempting to wrap coqtop /home/coq/.opam/4.05.0/bin/coqtop wrapping coqtop ::endgroup:: ++ (/github/workspace/run-script.sh @ line 2) $ opam switch coq.8.7.2 grep: failing-log.log: No such file or directory # Run eval $(opam env) to update the current shell environment ::group::opam wrap files attempting to wrap coqc /home/coq/.opam/4.05.0/bin/coqc wrapping coqc attempting to wrap coqtop /home/coq/.opam/4.05.0/bin/coqtop wrapping coqtop ::endgroup:: ++ (/github/workspace/run-script.sh @ line 3) $ opam install -y coq.8.7.2 grep: failing-log.log: No such file or directory The following actions will be performed: - install base-bigarray base - install ocaml-base-compiler 4.09.1 [required by ocaml] - install conf-perl 2 [required by camlp5] - install base-threads base - install base-unix base - install conf-findutils 1 [required by coq] - install ocaml-config 1 [required by ocaml] - install ocaml 4.09.1 [required by coq] - install ocamlfind 1.9.3 [required by coq] - install camlp5 7.14 [required by coq] - install num 1.4 [required by coq] - install coq 8.7.2 ===== 12 to install ===== <><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><> [num.1.4] downloaded from cache at https://opam.ocaml.org/cache [coq.8.7.2] downloaded from cache at https://opam.ocaml.org/cache [camlp5.7.14] downloaded from cache at https://opam.ocaml.org/cache [ocaml-base-compiler.4.09.1] downloaded from cache at https://opam.ocaml.org/cache [ocamlfind.1.9.3] downloaded from cache at https://opam.ocaml.org/cache [ocaml-base-compiler.4.09.1/alt-signal-stack.patch] downloaded from https://opam.ocaml.org/cache <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -> installed base-bigarray.base -> installed base-threads.base -> installed base-unix.base -> installed conf-findutils.1 -> installed conf-perl.2 -> installed ocaml-base-compiler.4.09.1 -> installed ocaml-config.1 -> installed ocaml.4.09.1 -> installed camlp5.7.14 -> installed ocamlfind.1.9.3 -> installed num.1.4 -> installed coq.8.7.2 Done. # Run eval $(opam env) to update the current shell environment ::group::opam wrap files attempting to wrap coqc /home/coq/.opam/4.05.0/bin/coqc wrapping coqc attempting to wrap coqtop /home/coq/.opam/4.05.0/bin/coqtop wrapping coqtop ::endgroup:: +++ (/github/workspace/run-script.sh @ line 4) $ opam env grep: failing-log.log: No such file or directory ::group::opam wrap files attempting to wrap coqc wrapping coqc attempting to wrap coqtop wrapping coqtop ::endgroup:: ++ (/github/workspace/run-script.sh @ line 4) $ eval 'OPAM_SWITCH_PREFIX='\''/home/coq/.opam/coq.8.7.2'\'';' export 'OPAM_SWITCH_PREFIX;' 'CAML_LD_LIBRARY_PATH='\''/home/coq/.opam/coq.8.7.2/lib/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml'\'';' export 'CAML_LD_LIBRARY_PATH;' 'OCAML_TOPLEVEL_PATH='\''/home/coq/.opam/coq.8.7.2/lib/toplevel'\'';' export 'OCAML_TOPLEVEL_PATH;' 'MANPATH='\'':/home/coq/.opam/4.05.0/man:/home/coq/.opam/coq.8.7.2/man'\'';' export 'MANPATH;' 'PATH='\''/home/coq/.opam/coq.8.7.2/bin:/home/coq/.local/bin:/home/coq/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games'\'';' export 'PATH;' /home/coq/.opam/4.05.0/bin/coqc /home/coq/.opam/4.05.0/bin/coqtop +++ (/github/workspace/run-script.sh @ line 4) $ OPAM_SWITCH_PREFIX=/home/coq/.opam/coq.8.7.2 +++ (/github/workspace/run-script.sh @ line 4) $ export OPAM_SWITCH_PREFIX +++ (/github/workspace/run-script.sh @ line 4) $ CAML_LD_LIBRARY_PATH=/home/coq/.opam/coq.8.7.2/lib/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml +++ (/github/workspace/run-script.sh @ line 4) $ export CAML_LD_LIBRARY_PATH +++ (/github/workspace/run-script.sh @ line 4) $ OCAML_TOPLEVEL_PATH=/home/coq/.opam/coq.8.7.2/lib/toplevel +++ (/github/workspace/run-script.sh @ line 4) $ export OCAML_TOPLEVEL_PATH +++ (/github/workspace/run-script.sh @ line 4) $ MANPATH=:/home/coq/.opam/4.05.0/man:/home/coq/.opam/coq.8.7.2/man +++ (/github/workspace/run-script.sh @ line 4) $ export MANPATH +++ (/github/workspace/run-script.sh @ line 4) $ PATH=/home/coq/.opam/coq.8.7.2/bin:/home/coq/.local/bin:/home/coq/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games +++ (/github/workspace/run-script.sh @ line 4) $ export PATH +++ (/github/workspace/run-script.sh @ line 4) $ /home/coq/.opam/4.05.0/bin/coqc /home/coq/.opam/4.05.0/bin/coqtop MINIMIZER_DEBUG: /home/coq/.opam/4.05.0/bin/coqc MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace MINIMIZER_DEBUG: exec: /home/coq/.opam/4.05.0/bin/coqc.orig /home/coq/.opam/4.05.0/bin/coqtop Warning: File "/home/coq/.opam/4.05.0/bin/coqtop" has been implicitly expanded to "/home/coq/.opam/4.05.0/bin/coqtop.v" [file-no-extension,filesystem] Error: Can't find file /home/coq/.opam/4.05.0/bin/coqtop.v ```
minimizer log ``` ```

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross). If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

JasonGross commented 2 years ago

@coqbot minimize

opam switch create coq.8.7.2 --empty
opam switch coq.8.7.2
opam install -y coq.8.7.2
eval $(opam env)
git clone https://github.com/Alizter/VST.git
cd VST
git checkout test-6984
make veric/SeparationLogic.vo
coqbot commented 2 years ago

Hey @JasonGross, the coq bug minimizer is running your script, I'll come back to you with the results once it's done.

JasonGross commented 2 years ago

@coqbot minimize

opam switch create coq.8.7.2 --empty
opam switch coq.8.7.2
opam install -y coq.8.7.2
eval $(opam env)
git clone https://github.com/Alizter/VST.git
cd VST
git checkout test-6984
make veric/SeparationLogic.vo
coqbot commented 2 years ago

Hey @JasonGross, the coq bug minimizer is running your script, I'll come back to you with the results once it's done.

coqbot commented 2 years ago

@JasonGross, Error: Could not minimize file (full log on GitHub Actions)

build log ``` ++ (/github/workspace/run-script.sh @ line 1) $ opam switch create coq.8.7.2 --empty grep: failing-log.log: No such file or directory ::group::opam wrap files attempting to wrap coqc wrapping coqc attempting to wrap coqtop wrapping coqtop ::endgroup:: ++ (/github/workspace/run-script.sh @ line 2) $ opam switch coq.8.7.2 grep: failing-log.log: No such file or directory # Run eval $(opam env) to update the current shell environment ::group::opam wrap files attempting to wrap coqc wrapping coqc attempting to wrap coqtop wrapping coqtop ::endgroup:: ++ (/github/workspace/run-script.sh @ line 3) $ opam install -y coq.8.7.2 grep: failing-log.log: No such file or directory The following actions will be performed: - install base-bigarray base - install ocaml-base-compiler 4.09.1 [required by ocaml] - install conf-perl 2 [required by camlp5] - install base-threads base - install base-unix base - install conf-findutils 1 [required by coq] - install ocaml-config 1 [required by ocaml] - install ocaml 4.09.1 [required by coq] - install ocamlfind 1.9.3 [required by coq] - install camlp5 7.14 [required by coq] - install num 1.4 [required by coq] - install coq 8.7.2 ===== 12 to install ===== <><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><> [num.1.4] downloaded from cache at https://opam.ocaml.org/cache [camlp5.7.14] downloaded from cache at https://opam.ocaml.org/cache [coq.8.7.2] downloaded from cache at https://opam.ocaml.org/cache [ocamlfind.1.9.3] downloaded from cache at https://opam.ocaml.org/cache [ocaml-base-compiler.4.09.1] downloaded from cache at https://opam.ocaml.org/cache [ocaml-base-compiler.4.09.1/alt-signal-stack.patch] downloaded from https://opam.ocaml.org/cache <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -> installed base-bigarray.base -> installed base-threads.base -> installed base-unix.base -> installed conf-findutils.1 -> installed conf-perl.2 -> installed ocaml-base-compiler.4.09.1 -> installed ocaml-config.1 -> installed ocaml.4.09.1 -> installed camlp5.7.14 -> installed ocamlfind.1.9.3 -> installed num.1.4 -> installed coq.8.7.2 Done. # Run eval $(opam env) to update the current shell environment ::group::opam wrap files attempting to wrap coqc wrapping coqc attempting to wrap coqtop wrapping coqtop ::endgroup:: +++ (/github/workspace/run-script.sh @ line 4) $ opam env grep: failing-log.log: No such file or directory ::group::opam wrap files attempting to wrap coqc wrapping coqc attempting to wrap coqtop wrapping coqtop ::endgroup:: ++ (/github/workspace/run-script.sh @ line 4) $ eval 'OPAM_SWITCH_PREFIX='\''/home/coq/.opam/coq.8.7.2'\'';' export 'OPAM_SWITCH_PREFIX;' 'CAML_LD_LIBRARY_PATH='\''/home/coq/.opam/coq.8.7.2/lib/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml'\'';' export 'CAML_LD_LIBRARY_PATH;' 'OCAML_TOPLEVEL_PATH='\''/home/coq/.opam/coq.8.7.2/lib/toplevel'\'';' export 'OCAML_TOPLEVEL_PATH;' 'MANPATH='\'':/home/coq/.opam/4.05.0/man:/home/coq/.opam/coq.8.7.2/man'\'';' export 'MANPATH;' 'PATH='\''/home/coq/.opam/coq.8.7.2/bin:/home/coq/.local/bin:/home/coq/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games'\'';' export 'PATH;' +++ (/github/workspace/run-script.sh @ line 4) $ OPAM_SWITCH_PREFIX=/home/coq/.opam/coq.8.7.2 +++ (/github/workspace/run-script.sh @ line 4) $ export OPAM_SWITCH_PREFIX +++ (/github/workspace/run-script.sh @ line 4) $ CAML_LD_LIBRARY_PATH=/home/coq/.opam/coq.8.7.2/lib/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml/stublibs:/home/coq/.opam/coq.8.7.2/lib/ocaml +++ (/github/workspace/run-script.sh @ line 4) $ export CAML_LD_LIBRARY_PATH +++ (/github/workspace/run-script.sh @ line 4) $ OCAML_TOPLEVEL_PATH=/home/coq/.opam/coq.8.7.2/lib/toplevel +++ (/github/workspace/run-script.sh @ line 4) $ export OCAML_TOPLEVEL_PATH +++ (/github/workspace/run-script.sh @ line 4) $ MANPATH=:/home/coq/.opam/4.05.0/man:/home/coq/.opam/coq.8.7.2/man +++ (/github/workspace/run-script.sh @ line 4) $ export MANPATH +++ (/github/workspace/run-script.sh @ line 4) $ PATH=/home/coq/.opam/coq.8.7.2/bin:/home/coq/.local/bin:/home/coq/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games +++ (/github/workspace/run-script.sh @ line 4) $ export PATH ++ (/github/workspace/run-script.sh @ line 5) $ git clone https://github.com/Alizter/VST.git Cloning into 'VST'... ++ (/github/workspace/run-script.sh @ line 6) $ cd VST ++ (/github/workspace/run-script.sh @ line 7) $ git checkout test-6984 Switched to a new branch 'test-6984' Branch 'test-6984' set up to track remote branch 'test-6984' from 'origin'. ++ (/github/workspace/run-script.sh @ line 8) $ make veric/SeparationLogic.vo coqdep ... >.depend COQC compcert/lib/Coqlib.v COQC compcert/flocq/Core/Fcore_Zaux.v COQC compcert/flocq/Core/Fcore_Raux.v COQC compcert/flocq/Core/Fcore_defs.v COQC compcert/flocq/Core/Fcore_float_prop.v COQC compcert/flocq/Core/Fcore_rnd.v COQC compcert/flocq/Core/Fcore_generic_fmt.v COQC compcert/flocq/Core/Fcore_ulp.v COQC compcert/flocq/Core/Fcore_rnd_ne.v COQC compcert/flocq/Core/Fcore_FIX.v COQC compcert/flocq/Core/Fcore_FLX.v COQC compcert/flocq/Core/Fcore_FLT.v COQC compcert/flocq/Core/Fcore.v COQC compcert/flocq/Core/Fcore_digits.v COQC compcert/flocq/Calc/Fcalc_digits.v COQC compcert/flocq/Calc/Fcalc_bracket.v COQC compcert/flocq/Calc/Fcalc_round.v COQC compcert/flocq/Calc/Fcalc_ops.v COQC compcert/flocq/Calc/Fcalc_div.v COQC compcert/flocq/Calc/Fcalc_sqrt.v COQC compcert/flocq/Prop/Fprop_relative.v COQC compcert/flocq/Appli/Fappli_IEEE.v COQC compcert/flocq/Appli/Fappli_IEEE_bits.v COQC compcert/x86_32/Archi.v COQC compcert/lib/Integers.v COQC compcert/flocq/Prop/Fprop_Sterbenz.v COQC compcert/flocq/Appli/Fappli_rnd_odd.v COQC compcert/lib/Fappli_IEEE_extra.v COQC compcert/lib/Floats.v COQC compcert/lib/Maps.v COQC compcert/common/Errors.v COQC compcert/common/AST.v COQC compcert/lib/Axioms.v COQC compcert/common/Linking.v COQC compcert/cfrontend/Ctypes.v COQC compcert/common/Values.v COQC compcert/lib/Intv.v COQC compcert/common/Memdata.v COQC compcert/common/Memtype.v COQC compcert/common/Memory.v COQC compcert/cfrontend/Cop.v COQC compcert/common/Globalenvs.v COQC compcert/common/Events.v COQC compcert/common/Smallstep.v COQC compcert/cfrontend/Clight.v COQC compcert/exportclight/Clightdefs.v COQC msl/Axioms.v COQC msl/Extensionality.v COQC msl/base.v COQC msl/Coqlib2.v COQC msl/eq_dec.v COQC veric/coqlib4.v COQC sepcomp/Address.v COQC veric/Memory.v COQC veric/base.v COQC msl/sepalg.v COQC msl/sepalg_generators.v COQC msl/psepalg.v COQC msl/boolean_alg.v COQC msl/tree_shares.v COQC msl/shares.v COQC msl/ageable.v COQC msl/predicates_hered.v COQC msl/subtypes.v COQC msl/predicates_rec.v COQC msl/age_sepalg.v COQC msl/cjoins.v COQC msl/cross_split.v COQC msl/predicates_sl.v COQC msl/subtypes_sl.v COQC msl/contractive.v COQC msl/seplog.v COQC msl/ghost.v COQC msl/ghost_seplog.v COQC msl/functors.v COQC msl/knot_full_variant.v COQC msl/sig_isomorphism.v COQC msl/knot.v COQC msl/knot_shims.v COQC msl/sepalg_functors.v COQC msl/knot_full_sa.v COQC msl/corable.v COQC msl/combiner_sa.v COQC msl/pshares.v COQC msl/msl_standard.v COQC msl/normalize.v COQC msl/alg_seplog.v COQC msl/simple_CCC.v COQC msl/log_normalize.v COQC msl/ramification_lemmas.v COQC veric/shares.v COQC veric/rmaps.v COQC msl/sepalg_list.v COQC veric/rmaps_lemmas.v COQC veric/compcert_rmaps.v COQC veric/Clight_lemmas.v COQC veric/composite_compute.v COQC veric/type_induction.v COQC veric/align_mem.v COQC veric/lift.v COQC veric/tycontext.v COQC veric/Cop2.v COQC veric/change_compspecs.v COQC veric/expr.v COQC veric/expr2.v COQC veric/address_conflict.v COQC veric/res_predicates.v COQC veric/slice.v COQC veric/binop_lemmas2.v COQC veric/extend_tc.v COQC veric/environ_lemmas.v COQC veric/expr_lemmas2.v COQC veric/expr_lemmas3.v COQC veric/mapsto_memory_block.v COQC veric/seplog.v COQC veric/juicy_base.v COQC veric/juicy_mem.v COQC veric/juicy_mem_lemmas.v COQC veric/local.v COQC veric/juicy_mem_ops.v COQC veric/binop_lemmas3.v COQC veric/binop_lemmas4.v COQC veric/binop_lemmas5.v COQC veric/binop_lemmas6.v COQC veric/binop_lemmas.v COQC veric/expr_lemmas4.v COQC veric/expr_lemmas.v COQC veric/expr_rel.v COQC veric/assert_lemmas.v COQC sepcomp/mem_lemmas.v COQC sepcomp/semantics.v COQC sepcomp/extspec.v COQC sepcomp/semantics_lemmas.v COQC sepcomp/step_lemmas.v COQC veric/juicy_safety.v COQC msl/age_to.v COQC veric/age_to_resource_at.v COQC veric/initial_world.v COQC veric/own.v COQC veric/juicy_extspec.v COQC veric/valid_pointer.v COQC sepcomp/effect_semantics.v COQC sepcomp/structured_injections.v COQC sepcomp/reach.v COQC sepcomp/globalSep.v COQC sepcomp/simulations.v COQC veric/Clight_new.v COQC veric/semax.v COQC veric/semax_lemmas.v COQC veric/semax_call.v COQC veric/initialize.v COQC veric/semax_prog.v COQC veric/semax_ext.v COQC veric/SeparationLogic.v File "./veric/SeparationLogic.v", line 253, characters 58-63: Error: In environment it : ident * type The term "mpred" has type "Type@{max(VST.msl.predicates_hered.3, Set+1)}" while it is expected to have type "Type@{VST.veric.SeparationLogic.74}" (universe inconsistency). make: *** [Makefile:392: veric/SeparationLogic.vo] Error 1 ```
minimizer log ``` ```

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross). If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

coqbot commented 2 years ago

@JasonGross, Minimized File /github/workspace/VST/veric/SeparationLogic.v (interrupted by timeout) (full log on GitHub Actions)

Minimized Coq File (consider adding this file to the test-suite) ```coq (* -*- mode: coq; coq-prog-args: ("-emacs" "-w" "none" "-R" "/github/workspace/VST/compcert" "compcert" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/VST/msl" "VST.msl" "-Q" "/github/workspace/VST/sepcomp" "VST.sepcomp" "-Q" "/github/workspace/VST/veric" "VST.veric" "-Q" "/github/workspace/VST/floyd" "VST.floyd" "-Q" "/github/workspace/VST/progs" "VST.progs" "-Q" "/github/workspace/VST/concurrency" "VST.concurrency" "-Q" "/github/workspace/VST/ccc26x86" "VST.ccc26x86" "-Q" "/github/workspace/VST/wand_demo" "wand_demo" "-Q" "/github/workspace/VST/sha" "sha" "-Q" "/github/workspace/VST/fcf" "fcf" "-Q" "/github/workspace/VST/hmacfcf" "hmacfcf" "-Q" "/github/workspace/VST/tweetnacl20140427" "tweetnacl20140427" "-Q" "/github/workspace/VST/hmacdrbg" "hmacdrbg" "-Q" "/github/workspace/VST/aes" "aes" "-Q" "/github/workspace/VST/mailbox" "mailbox" "-top" "SeparationLogic") -*- *) (* File reduced by coq-bug-minimizer from original input, then from 1507 lines to 166 lines, then from 179 lines to 1613 lines, then from 1618 lines to 283 lines, then from 296 lines to 1447 lines, then from 1447 lines to 305 lines, then from 318 lines to 2145 lines, then from 2137 lines to 360 lines, then from 373 lines to 520 lines, then from 523 lines to 388 lines, then from 401 lines to 1790 lines, then from 1792 lines to 448 lines, then from 461 lines to 1138 lines, then from 1142 lines to 444 lines, then from 457 lines to 1784 lines, then from 1789 lines to 481 lines, then from 494 lines to 2397 lines, then from 2398 lines to 682 lines *) (* coqc version 8.7.2 (February 2022) compiled on Feb 7 2022 8:00:14 with OCaml 4.09.1 coqtop version 8.7.2 (February 2022) Expected coqc runtime on this file: 1.531 sec *) Require VST.msl.seplog. Require VST.veric.base. Require VST.msl.ghost. Require VST.veric.shares. Axiom proof_admitted : False. Tactic Notation "admit" := abstract case proof_admitted. Import VST.msl.msl_standard. Import VST.msl.ghost. Import VST.veric.shares. Module Type ADR_VAL. Parameter address : Type. Parameter kind: Type. End ADR_VAL. Module Type ADR_VAL0. Parameter address : Type. Parameter kind: Type. End ADR_VAL0. Module SimpleAdrVal (AV0: ADR_VAL0) <: ADR_VAL with Definition address := AV0.address with Definition kind := AV0.kind. Import AV0. Definition address := address. Definition kind := kind. End SimpleAdrVal. Inductive TypeTree: Type := | ConstType: Type -> TypeTree | Mpred: TypeTree | DependentType: nat -> TypeTree | ProdType: TypeTree -> TypeTree -> TypeTree | ArrowType: TypeTree -> TypeTree -> TypeTree | PiType: forall (I : Type), (I -> TypeTree) -> TypeTree. Definition dependent_type_functor_rec (ts: list Type): TypeTree -> functor. Admitted. Definition fpreds: functor. Admitted. Instance preds_join (PRED : Type) (I: Type) : Join (I -> nat -> option (fpreds PRED)). Admitted. Section Finmap. Definition finmap A := list (option A). Import ListNotations. Definition finmap_get {A} (m : finmap A) k := nth k m None. Context {A} {J: Join A}. Inductive finmap_join: Join (finmap A) := | finmap_join_nil_l m: finmap_join [] m m | finmap_join_nil_r m: finmap_join m [] m | finmap_join_cons a1 a2 m1 m2 a3 m3: join a1 a2 a3 -> finmap_join m1 m2 m3 -> finmap_join (a1 :: m1) (a2 :: m2) (a3 :: m3). Global Instance Perm_finmap {P: Perm_alg A} : @Perm_alg _ finmap_join. Admitted. Global Instance Sep_finmap {S: Sep_alg A} : @Sep_alg _ finmap_join. Admitted. End Finmap. Instance finmap_RA {RA: Ghost} : Ghost := { valid m := forall i a, finmap_get m i = Some a -> valid a; Join_G := finmap_join }. admit. Defined. Instance Global_Ghost {I} {RAs: I -> Ghost}: Ghost := { G := forall i, finmap (@G (RAs i)); valid m := forall i, @valid finmap_RA (m i) }. admit. Defined. Module Type STRAT_MODEL. Declare Module AV : ADR_VAL. Definition f_pre_rmap : functor. Admitted. Instance Join_pre_rmap (A: Type) : Join (f_pre_rmap A). Admitted. Parameter Sep_pre_rmap: forall (A: Type), Sep_alg (f_pre_rmap A). Parameter paf_pre_rmap : @pafunctor f_pre_rmap Join_pre_rmap. End STRAT_MODEL. Module StratModel (AV' : ADR_VAL) : STRAT_MODEL with Module AV:=AV'. Module AV := AV'. Import AV. Definition preds: functor. Admitted. Inductive res (PRED : Type) : Type := | NO': forall sh: Share.t, ~(readable_share sh) -> res PRED | YES': forall sh: Share.t, readable_share sh -> kind -> preds PRED -> res PRED | PURE': kind -> preds PRED -> res PRED. Definition res_fmap (A B:Type) (f:A->B) (g:B->A)(x:res A) : res B. Admitted. Lemma ff_res : functorFacts res res_fmap. Admitted. Definition f_res : functor. exact (Functor ff_res). Defined. Inductive res_join (PRED : Type) : f_res PRED -> f_res PRED -> f_res PRED -> Prop := | res_join_NO1 : forall sh1 nsh1 sh2 nsh2 sh3 nsh3, join sh1 sh2 sh3 -> res_join PRED (NO' PRED sh1 nsh1) (NO' PRED sh2 nsh2) (NO' PRED sh3 nsh3) | res_join_NO2 : forall sh1 nsh1 sh2 rsh2 sh3 rsh3 k p, join sh1 sh2 sh3 -> res_join PRED (NO' PRED sh1 nsh1) (YES' PRED sh2 rsh2 k p) (YES' PRED sh3 rsh3 k p) | res_join_NO3 : forall sh1 rsh1 sh2 nsh2 sh3 rsh3 k p, join sh1 sh2 sh3 -> res_join PRED (YES' PRED sh1 rsh1 k p) (NO' PRED sh2 nsh2) (YES' PRED sh3 rsh3 k p) | res_join_YES : forall sh1 rsh1 sh2 rsh2 sh3 rsh3 k p, join sh1 sh2 sh3 -> res_join PRED (YES' PRED sh1 rsh1 k p) (YES' PRED sh2 rsh2 k p) (YES' PRED sh3 rsh3 k p) | res_join_PURE : forall k p, res_join PRED (PURE' PRED k p) (PURE' PRED k p) (PURE' PRED k p). Instance Join_res (PRED: Type) : Join (res PRED). exact (res_join PRED). Defined. Instance sa_rj : forall PRED, @Sep_alg _ (res_join PRED). Admitted. Inductive ghost (PRED : Type) : Type := GHOST' I (RAs: I -> Ghost) (g: @G Global_Ghost) (pds: I -> nat -> option (fpreds PRED)) (Hv: ghost.valid g) (dom: forall i n pp, pds i n = Some pp -> exists a, finmap_get (g i) n = Some a). Program Definition ghost_fmap (A B:Type) (f:A->B) (g:B->A)(x:ghost A) : ghost B := match x with | GHOST' _ RAs a pds _ _ => GHOST' _ _ RAs a (fmap (ffunc (fconst _) (ffunc (fconst _) (foption fpreds))) f g pds) _ _ end. Admit Obligations. Lemma ff_ghost : functorFacts ghost ghost_fmap. Admitted. Definition f_ghost : functor. exact (Functor ff_ghost). Defined. Inductive ghost_join (PRED : Type) : f_ghost PRED -> f_ghost PRED -> f_ghost PRED -> Prop := | ghost_join_I : forall A (RAs : A -> Ghost) a b c pdsa pdsb pdsc Hva Hvb Hvc doma domb domc, join a b c -> join pdsa pdsb pdsc -> ghost_join PRED (GHOST' PRED _ RAs a pdsa Hva doma) (GHOST' PRED _ RAs b pdsb Hvb domb) (GHOST' PRED _ RAs c pdsc Hvc domc). Instance Join_ghost (PRED: Type) : Join (ghost PRED). exact (ghost_join PRED). Defined. Instance sa_gj : forall PRED, @Sep_alg _ (ghost_join PRED). Admitted. Definition valid' A (w: (address -> res A) * ghost A) : Prop. Admitted. Lemma valid'_res_map : forall A B f g m, valid' A m -> valid' B (fmap f_res f g oo fst m, fmap f_ghost f g (snd m)). Admitted. Definition pre_rmap (A:Type) := { m:(address -> res A) * ghost A | valid' A m }. Definition f_pre_rmap : functor. exact (fsubset (fpair (ffunc (fconst address) f_res) f_ghost) _ valid'_res_map). Defined. Instance Join_pre_rmap (A: Type) : Join (pre_rmap A). Admitted. Definition paf_pre_rmap : @pafunctor f_pre_rmap Join_pre_rmap. Admitted. Instance Sep_pre_rmap (A: Type): Sep_alg (pre_rmap A). Admitted. Lemma pre_rmap_core: forall A (m : f_pre_rmap A), exists P, core m = exist (valid' A) (core (proj1_sig m)) P. Admitted. End StratModel. Module Type RMAPS. Declare Module AV:ADR_VAL. Parameter rmap : Type. Axiom ag_rmap: ageable rmap. End RMAPS. Module Rmaps (AV':ADR_VAL): RMAPS with Module AV:=AV'. Module Export AV:=AV'. Module SM := StratModel(AV). Import SM. Module Export TyF. Definition F := f_pre_rmap. End TyF. Module TyFSA <: KNOT_FULL_SA_INPUT with Module KI:=TyF. Module KI := TyF. Instance Join_F: forall A, Join (F A). exact (_). Defined. Definition Perm_F : forall A, Perm_alg (F A). Admitted. Definition Sep_F := Sep_pre_rmap. Definition paf_F := paf_pre_rmap. End TyFSA. Module K := Knot_MixVariantHeredProp(TyF). Definition rmap := K.knot. Instance ag_rmap : ageable rmap. Admitted. End Rmaps. Import VST.veric.base. Inductive kind : Type := VAL : memval -> kind | LK : Z -> kind | CT: Z -> kind | FUN: funsig -> calling_convention -> kind. Module CompCert_AV <: ADR_VAL. Definition address := address. Definition kind := kind. End CompCert_AV. Module R := Rmaps (CompCert_AV). Export R. Section cuof. Context (cenv: composite_env). Definition composite_env_complete_legal_cosu_type: Prop. Admitted. End cuof. Definition hardware_alignof_env_consistent (cenv: composite_env) (ha_env: PTree.t Z): Prop. Admitted. Definition hardware_alignof_env_complete (cenv: composite_env) (ha_env: PTree.t Z): Prop. Admitted. Module Type LEGAL_ALIGNAS. Parameter legal_alignas_obs: Type. End LEGAL_ALIGNAS. Module LegalAlignasDefsGen (LegalAlignas: LEGAL_ALIGNAS). Import LegalAlignas. Definition legal_alignas_env_consistent (cenv: composite_env) (ha_env: PTree.t Z) (la_env: PTree.t legal_alignas_obs): Prop. Admitted. Definition legal_alignas_env_complete (cenv: composite_env) (la_env: PTree.t legal_alignas_obs): Prop. Admitted. Definition legal_alignas_env_sound (cenv: composite_env) (ha_env: PTree.t Z) (la_env: PTree.t legal_alignas_obs): Prop. Admitted. End LegalAlignasDefsGen. Module Type LEGAL_ALIGNAS_FACTS. Declare Module LegalAlignas: LEGAL_ALIGNAS. Module LegalAlignasDefs := LegalAlignasDefsGen (LegalAlignas). Export LegalAlignas. Export LegalAlignasDefs. End LEGAL_ALIGNAS_FACTS. Module LegalAlignasStrong <: LEGAL_ALIGNAS. Section legal_alignas. Definition legal_alignas_obs: Type. Admitted. End legal_alignas. End LegalAlignasStrong. Module LegalAlignasStrongFacts: LEGAL_ALIGNAS_FACTS with Module LegalAlignas := LegalAlignasStrong. Module LegalAlignas := LegalAlignasStrong. Module LegalAlignasDefs := LegalAlignasDefsGen (LegalAlignas). End LegalAlignasStrongFacts. Module Export LegalAlignasFacts := LegalAlignasStrongFacts. Structure Lift := mkLift { lift_S: Type; lift_T: Type; lift_prod : Type; lift_last: Type; lifted:> Type; lift_curry: lift_T -> lift_prod -> lift_last; lift_uncurry_open: ((lift_S -> lift_prod) -> (lift_S -> lift_last)) -> lifted }. Definition Tend (S: Type) (A: Type) := mkLift S A unit A (S -> A) (fun f _ => f) (fun f => f (fun _: S => tt)). Canonical Structure Tarrow (A: Type) (H: Lift) := mkLift (lift_S H) (A -> lift_T H) (prod A (lift_prod H)) (lift_last H) ((lift_S H -> A) -> lifted H) (fun f x => match x with (x1,x2) => lift_curry H (f x1) x2 end) (fun f x => lift_uncurry_open H (fun y: lift_S H -> lift_prod H => f (fun z => (x z, y z)))). Set Implicit Arguments. Definition liftx {H: Lift} (f: lift_T H) : lifted H. Admitted. Notation "'`' x" := (liftx x) (at level 9). Notation "'`(' x ')'" := (liftx (x : _)). Module Export Map. Section map. Variables (B : Type). Definition t := positive -> option B. Definition get (h: t) (a:positive) : option B. Admitted. End map. Definition genviron := Map.t block. Definition venviron := Map.t (block * type). Definition tenviron := Map.t val. Inductive environ : Type := mkEnviron: forall (ge: genviron) (ve: venviron) (te: tenviron), environ. Definition te_of (rho: environ) : tenviron. Admitted. Definition mpred := pred rmap. Definition AssertTT (A: TypeTree): TypeTree. Admitted. Definition super_non_expansive {A: TypeTree} (P: forall ts, dependent_type_functor_rec ts (AssertTT A) mpred): Prop. Admitted. Inductive funspec := mk_funspec: funsig -> calling_convention -> forall (A: TypeTree) (P Q: forall ts, dependent_type_functor_rec ts (AssertTT A) mpred) (P_ne: super_non_expansive P) (Q_ne: super_non_expansive Q), funspec. Definition composite_legal_fieldlist (co: composite): Prop. Admitted. Definition composite_env_legal_fieldlist env := forall (id : positive) (co : composite), env ! id = Some co -> composite_legal_fieldlist co. Class compspecs := mkcompspecs { cenv_cs : composite_env; cenv_consistent: composite_env_consistent cenv_cs; cenv_legal_fieldlist: composite_env_legal_fieldlist cenv_cs; cenv_legal_su: composite_env_complete_legal_cosu_type cenv_cs; ha_env_cs: PTree.t Z; ha_env_cs_consistent: hardware_alignof_env_consistent cenv_cs ha_env_cs; ha_env_cs_complete: hardware_alignof_env_complete cenv_cs ha_env_cs; la_env_cs: PTree.t legal_alignas_obs; la_env_cs_consistent: legal_alignas_env_consistent cenv_cs ha_env_cs la_env_cs; la_env_cs_complete: legal_alignas_env_complete cenv_cs la_env_cs; la_env_cs_sound: legal_alignas_env_sound cenv_cs ha_env_cs la_env_cs }. Existing Class composite_env. Existing Instance cenv_cs. Arguments sizeof {env} !t / . Arguments alignof {env} !t / . Inductive Annotation := WeakAnnotation : (environ -> mpred) -> Annotation | StrongAnnotation : (environ -> mpred) -> Annotation. Inductive tycontext : Type := mk_tycontext : forall (tyc_temps: PTree.t (type * bool)) (tyc_vars: PTree.t type) (tyc_ret: type) (tyc_globty: PTree.t type) (tyc_globsp: PTree.t funspec) (tyc_annot: PTree.t Annotation), tycontext. Module Export Cop2. Definition sem_cast (t1 t2: type): val -> option val. Admitted. Definition sem_unary_operation (op: Cop.unary_operation) (ty: type) (v: val): option val. Admitted. Definition sem_binary_operation' {CS: compspecs} (op: Cop.binary_operation) (t1:type) (t2: type) : val -> val -> option val. Admitted. Definition force_val (v: option val) : val. Admitted. Definition force_val1 (f: val -> option val) (v: val) := force_val (f v). Definition force_val2 (f: val -> val -> option val) (v1 v2: val) := force_val (f v1 v2). Canonical Structure LiftEnviron := Tend environ. Definition eval_id (id: ident) (rho: environ) := force_val (Map.get (te_of rho) id). Definition eval_unop (op: Cop.unary_operation) (t1 : type) := force_val1 (Cop2.sem_unary_operation op t1). Definition eval_binop {CS:compspecs} (op: Cop.binary_operation) (t1 t2 : type) := force_val2 (Cop2.sem_binary_operation' op t1 t2). Definition eval_cast (t1 t2 : type) := force_val1 (sem_cast t1 t2). Definition eval_field {CS: compspecs} (ty: type) (fld: ident) : val -> val. Admitted. Definition eval_var (id:ident) (ty: type) (rho: environ) : val. Admitted. Fixpoint eval_expr {CS: compspecs} (e: expr) : environ -> val := match e with | Econst_int i ty => `(Vint i) | Econst_long i ty => `(Vlong i) | Econst_float f ty => `(Vfloat f) | Econst_single f ty => `(Vsingle f) | Etempvar id ty => eval_id id | Eaddrof a ty => eval_lvalue a | Eunop op a ty => `(eval_unop op (typeof a)) (eval_expr a) | Ebinop op a1 a2 ty => `(eval_binop op (typeof a1) (typeof a2)) (eval_expr a1) (eval_expr a2) | Ecast a ty => `(eval_cast (typeof a) ty) (eval_expr a) | Evar id ty => eval_var id ty | Ederef a ty => eval_expr a | Efield a i ty => `(eval_field (typeof a) i) (eval_lvalue a) | Esizeof t ty => `(Vptrofs (Ptrofs.repr (sizeof t))) | Ealignof t ty => `(Vptrofs (Ptrofs.repr (alignof t))) end with eval_lvalue {CS: compspecs} (e: expr) : environ -> val := match e with | Evar id ty => eval_var id ty | Ederef a ty => eval_expr a | Efield a i ty => `(eval_field (typeof a) i) (eval_lvalue a) | _ => `Vundef end. Fixpoint eval_exprlist {CS: compspecs} (et: list type) (el:list expr) : environ -> list val := match et, el with | t::et', e::el' => `(@cons val) (`force_val (`(sem_cast (typeof e) t) (eval_expr e))) (eval_exprlist et' el') | _, _ => `nil end. Inductive tc_error := | op_result_type : expr -> tc_error | arg_type : expr -> tc_error | pp_compare_size_0 : type -> tc_error | pp_compare_size_exceed : type -> tc_error | invalid_cast : type -> type -> tc_error | invalid_cast_result : type -> type -> tc_error | invalid_expression : expr -> tc_error | var_not_in_tycontext : tycontext -> positive -> tc_error | mismatch_context_type : type -> type -> tc_error | deref_byvalue : type -> tc_error | volatile_load : type -> tc_error | invalid_field_access : expr -> tc_error | invalid_composite_name: ident -> tc_error | invalid_struct_field : ident -> ident -> tc_error | invalid_lvalue : expr -> tc_error | wrong_signature : tc_error | int_or_ptr_type_error : tc_error | miscellaneous_typecheck_error : tc_error. Inductive tc_assert := | tc_FF: tc_error -> tc_assert | tc_TT : tc_assert | tc_andp': tc_assert -> tc_assert -> tc_assert | tc_orp' : tc_assert -> tc_assert -> tc_assert | tc_nonzero': expr -> tc_assert | tc_iszero': expr -> tc_assert | tc_isptr: expr -> tc_assert | tc_test_eq': expr -> expr -> tc_assert | tc_test_order': expr -> expr -> tc_assert | tc_ilt': expr -> int -> tc_assert | tc_llt': expr -> int64 -> tc_assert | tc_Zle: expr -> Z -> tc_assert | tc_Zge: expr -> Z -> tc_assert | tc_samebase: expr -> expr -> tc_assert | tc_nodivover': expr -> expr -> tc_assert | tc_initialized: PTree.elt -> type -> tc_assert | tc_nosignedover: (Z->Z->Z) -> expr -> expr -> tc_assert. Definition isptr v := match v with | Vptr _ _ => True | _ => False end. Definition tc_val (ty: type) : val -> Prop. Admitted. Definition valid_pointer (p: val) : mpred. Admitted. Definition weak_valid_pointer (p: val) : mpred. Admitted. Export VST.msl.seplog. Instance Nveric: NatDed mpred. Admitted. Definition denote_tc_iszero v : mpred := match v with | Vint i => prop (is_true (Int.eq i Int.zero)) | Vlong i => prop (is_true (Int64.eq (Int64.repr (Int64.unsigned i)) Int64.zero)) | _ => FF end. Definition denote_tc_nonzero v : mpred := match v with | Vint i => prop (i <> Int.zero) | Vlong i =>prop (i <> Int64.zero) | _ => FF end. Definition denote_tc_igt i v : mpred := match v with | Vint i1 => prop (Int.unsigned i1 < Int.unsigned i) | _ => FF end. Definition denote_tc_lgt l v : mpred := match v with | Vlong l1 => prop (Int64.unsigned l1 < Int64.unsigned l) | _ => FF end. Definition Zoffloat (f:float): option Z. Admitted. Definition Zofsingle (f: float32): option Z. Admitted. Definition denote_tc_Zge z v : mpred := match v with | Vfloat f => match Zoffloat f with | Some n => prop (z >= n) | None => FF end | Vsingle f => match Zofsingle f with | Some n => prop (z >= n) | None => FF end | _ => FF end. Definition denote_tc_Zle z v : mpred := match v with | Vfloat f => match Zoffloat f with | Some n => prop (z <= n) | None => FF end | Vsingle f => match Zofsingle f with | Some n => prop (z <= n) | None => FF end | _ => FF end. Definition sameblock v1 v2 : bool := match v1, v2 with | Vptr b1 _, Vptr b2 _ => peq b1 b2 | _, _ => false end. Definition denote_tc_samebase v1 v2 : mpred := prop (is_true (sameblock v1 v2)). Definition denote_tc_nodivover v1 v2 : mpred := match v1, v2 with | Vint n1, Vint n2 => prop (~(n1 = Int.repr Int.min_signed /\ n2 = Int.mone)) | Vlong n1, Vlong n2 => prop (~(n1 = Int64.repr Int64.min_signed /\ n2 = Int64.mone)) | Vint n1, Vlong n2 => TT | Vlong n1, Vint n2 => prop (~ (n1 = Int64.repr Int64.min_signed /\ n2 = Int.mone)) | _ , _ => FF end. Definition denote_tc_nosignedover (op: Z->Z->Z) v1 v2 : mpred := match v1,v2 with | Vint n1, Vint n2 => prop (Int.min_signed <= op (Int.signed n1) (Int.signed n2) <= Int.max_signed) | Vlong n1, Vlong n2 => prop (Int64.min_signed <= op (Int64.signed n1) (Int64.signed n2) <= Int64.max_signed) | Vint n1, Vlong n2 => prop (Int64.min_signed <= op (Int.signed n1) (Int64.signed n2) <= Int64.max_signed) | Vlong n1, Vint n2 => prop (Int64.min_signed <= op (Int64.signed n1) (Int.signed n2) <= Int64.max_signed) | _, _ => FF end. Definition denote_tc_initialized id ty rho : mpred := prop (exists v, Map.get (te_of rho) id = Some v /\ tc_val ty v). Definition denote_tc_isptr v : mpred := prop (isptr v). Definition test_eq_ptrs v1 v2 : mpred := if sameblock v1 v2 then (andp (weak_valid_pointer v1) (weak_valid_pointer v2)) else (andp (valid_pointer v1) (valid_pointer v2)). Definition test_order_ptrs v1 v2 : mpred := if sameblock v1 v2 then (andp (weak_valid_pointer v1) (weak_valid_pointer v2)) else FF. Definition denote_tc_test_eq v1 v2 : mpred := match v1, v2 with | Vint i, Vint j => if Archi.ptr64 then FF else andp (prop (i = Int.zero)) (prop (j = Int.zero)) | Vlong i, Vlong j => if Archi.ptr64 then andp (prop (i = Int64.zero)) (prop (j = Int64.zero)) else FF | Vint i, Vptr _ _ => if Archi.ptr64 then FF else andp (prop (i = Int.zero)) (weak_valid_pointer v2) | Vlong i, Vptr _ _ => if Archi.ptr64 then andp (prop (i = Int64.zero)) (weak_valid_pointer v2) else FF | Vptr _ _, Vint i => if Archi.ptr64 then FF else andp (prop (i = Int.zero)) (weak_valid_pointer v1) | Vptr _ _, Vlong i => if Archi.ptr64 then andp (prop (i = Int64.zero)) (weak_valid_pointer v1) else FF | Vptr _ _, Vptr _ _ => test_eq_ptrs v1 v2 | _, _ => FF end. Definition denote_tc_test_order v1 v2 : mpred := match v1, v2 with | Vint i, Vint j => if Archi.ptr64 then FF else andp (prop (i = Int.zero)) (prop (j = Int.zero)) | Vlong i, Vlong j => if Archi.ptr64 then andp (prop (i = Int64.zero)) (prop (j = Int64.zero)) else FF | Vptr _ _, Vptr _ _ => test_order_ptrs v1 v2 | _, _ => FF end. Definition typecheck_error (e: tc_error) : Prop. Admitted. Fixpoint denote_tc_assert {CS: compspecs} (a: tc_assert) : environ -> mpred := match a with | tc_FF msg => `(prop (typecheck_error msg)) | tc_TT => TT | tc_andp' b c => fun rho => andp (denote_tc_assert b rho) (denote_tc_assert c rho) | tc_orp' b c => `orp (denote_tc_assert b) (denote_tc_assert c) | tc_nonzero' e => `denote_tc_nonzero (eval_expr e) | tc_isptr e => `denote_tc_isptr (eval_expr e) | tc_test_eq' e1 e2 => `denote_tc_test_eq (eval_expr e1) (eval_expr e2) | tc_test_order' e1 e2 => `denote_tc_test_order (eval_expr e1) (eval_expr e2) | tc_ilt' e i => `(denote_tc_igt i) (eval_expr e) | tc_llt' e i => `(denote_tc_lgt i) (eval_expr e) | tc_Zle e z => `(denote_tc_Zge z) (eval_expr e) | tc_Zge e z => `(denote_tc_Zle z) (eval_expr e) | tc_samebase e1 e2 => `denote_tc_samebase (eval_expr e1) (eval_expr e2) | tc_nodivover' v1 v2 => `denote_tc_nodivover (eval_expr v1) (eval_expr v2) | tc_initialized id ty => denote_tc_initialized id ty | tc_iszero' e => `denote_tc_iszero (eval_expr e) | tc_nosignedover op e1 e2 => `(denote_tc_nosignedover op) (eval_expr e1) (eval_expr e2) end. Definition fool' := @map _ Type (fun it : ident * type => mpred). ```
Intermediate Coq File (useful for debugging if minimization did not go as far as you wanted) (truncated to 8.0KiB; full 24KiB file on GitHub Actions Artifacts under tmp.v) ```coq (* -*- mode: coq; coq-prog-args: ("-emacs" "-w" "none" "-R" "/github/workspace/VST/compcert" "compcert" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/VST/msl" "VST.msl" "-Q" "/github/workspace/VST/sepcomp" "VST.sepcomp" "-Q" "/github/workspace/VST/veric" "VST.veric" "-Q" "/github/workspace/VST/floyd" "VST.floyd" "-Q" "/github/workspace/VST/progs" "VST.progs" "-Q" "/github/workspace/VST/concurrency" "VST.concurrency" "-Q" "/github/workspace/VST/ccc26x86" "VST.ccc26x86" "-Q" "/github/workspace/VST/wand_demo" "wand_demo" "-Q" "/github/workspace/VST/sha" "sha" "-Q" "/github/workspace/VST/fcf" "fcf" "-Q" "/github/workspace/VST/hmacfcf" "hmacfcf" "-Q" "/github/workspace/VST/tweetnacl20140427" "tweetnacl20140427" "-Q" "/github/workspace/VST/hmacdrbg" "hmacdrbg" "-Q" "/github/workspace/VST/aes" "aes" "-Q" "/github/workspace/VST/mailbox" "mailbox" "-top" "SeparationLogic") -*- *) (* File reduced by coq-bug-minimizer from original input, then from 1507 lines to 166 lines, then from 179 lines to 1613 lines, then from 1618 lines to 283 lines, then from 296 lines to 1447 lines, then from 1447 lines to 305 lines, then from 318 lines to 2145 lines, then from 2137 lines to 360 lines, then from 373 lines to 520 lines, then from 523 lines to 388 lines, then from 401 lines to 1790 lines, then from 1792 lines to 448 lines, then from 461 lines to 1138 lines, then from 1142 lines to 444 lines, then from 457 lines to 1784 lines, then from 1789 lines to 481 lines, then from 494 lines to 2397 lines, then from 2398 lines to 680 lines *) (* coqc version 8.7.2 (February 2022) compiled on Feb 7 2022 8:00:14 with OCaml 4.09.1 coqtop version 8.7.2 (February 2022) Expected coqc runtime on this file: 1.531 sec *) Require VST.msl.seplog. Require VST.veric.base. Require VST.msl.ghost. Require VST.veric.shares. Axiom proof_admitted : False. Tactic Notation "admit" := abstract case proof_admitted. Import VST.msl.msl_standard. Import VST.msl.ghost. Import VST.veric.shares. Module Type ADR_VAL. Parameter address : Type. Parameter kind: Type. End ADR_VAL. Module Type ADR_VAL0. Parameter address : Type. Parameter kind: Type. End ADR_VAL0. Module SimpleAdrVal (AV0: ADR_VAL0) <: ADR_VAL with Definition address := AV0.address with Definition kind := AV0.kind. Import AV0. Definition address := address. Definition kind := kind. End SimpleAdrVal. Inductive TypeTree: Type := | ConstType: Type -> TypeTree | Mpred: TypeTree | DependentType: nat -> TypeTree | ProdType: TypeTree -> TypeTree -> TypeTree | ArrowType: TypeTree -> TypeTree -> TypeTree | PiType: forall (I : Type), (I -> TypeTree) -> TypeTree. Definition dependent_type_functor_rec (ts: list Type): TypeTree -> functor. Admitted. Definition fpreds: functor. Admitted. Instance preds_join (PRED : Type) (I: Type) : Join (I -> nat -> option (fpreds PRED)). Admitted. Section Finmap. Definition finmap A := list (option A). Import ListNotations. Definition finmap_get {A} (m : finmap A) k := nth k m None. Context {A} {J: Join A}. Inductive finmap_join: Join (finmap A) := | finmap_join_nil_l m: finmap_join [] m m | finmap_join_nil_r m: finmap_join m [] m | finmap_join_cons a1 a2 m1 m2 a3 m3: join a1 a2 a3 -> finmap_join m1 m2 m3 -> finmap_join (a1 :: m1) (a2 :: m2) (a3 :: m3). Global Instance Perm_finmap {P: Perm_alg A} : @Perm_alg _ finmap_join. Admitted. Global Instance Sep_finmap {S: Sep_alg A} : @Sep_alg _ finmap_join. Admitted. End Finmap. Instance finmap_RA {RA: Ghost} : Ghost := { valid m := forall i a, finmap_get m i = Some a -> valid a; Join_G := finmap_join }. admit. Defined. Instance Global_Ghost {I} {RAs: I -> Ghost}: Ghost := { G := forall i, finmap (@G (RAs i)); valid m := forall i, @valid finmap_RA (m i) }. admit. Defined. Module Type STRAT_MODEL. Declare Module AV : ADR_VAL. Definition f_pre_rmap : functor. Admitted. Instance Join_pre_rmap (A: Type) : Join (f_pre_rmap A). Admitted. Parameter Sep_pre_rmap: forall (A: Type), Sep_alg (f_pre_rmap A). Parameter paf_pre_rmap : @pafunctor f_pre_rmap Join_pre_rmap. End STRAT_MODEL. Module StratModel (AV' : ADR_VAL) : STRAT_MODEL with Module AV:=AV'. Module AV := AV'. Import AV. Definition preds: functor. Admitted. Inductive res (PRED : Type) : Type := | NO': forall sh: Share.t, ~(readable_share sh) -> res PRED | YES': forall sh: Share.t, readable_share sh -> kind -> preds PRED -> res PRED | PURE': kind -> preds PRED -> res PRED. Definition res_fmap (A B:Type) (f:A->B) (g:B->A)(x:res A) : res B. Admitted. Lemma ff_res : functorFacts res res_fmap. Admitted. Definition f_res : functor. exact (Functor ff_res). Defined. Inductive res_join (PRED : Type) : f_res PRED -> f_res PRED -> f_res PRED -> Prop := | res_join_NO1 : forall sh1 nsh1 sh2 nsh2 sh3 nsh3, join sh1 sh2 sh3 -> res_join PRED (NO' PRED sh1 nsh1) (NO' PRED sh2 nsh2) (NO' PRED sh3 nsh3) | res_join_NO2 : forall sh1 nsh1 sh2 rsh2 sh3 rsh3 k p, join sh1 sh2 sh3 -> res_join PRED (NO' PRED sh1 nsh1) (YES' PRED sh2 rsh2 k p) (YES' PRED sh3 rsh3 k p) | res_join_NO3 : forall sh1 rsh1 sh2 nsh2 sh3 rsh3 k p, join sh1 sh2 sh3 -> res_join PRED (YES' PRED sh1 rsh1 k p) (NO' PRED sh2 nsh2) (YES' PRED sh3 rsh3 k p) | res_join_YES : forall sh1 rsh1 sh2 rsh2 sh3 rsh3 k p, join sh1 sh2 sh3 -> res_join PRED (YES' PRED sh1 rsh1 k p) (YES' PRED sh2 rsh2 k p) (YES' PRED sh3 rsh3 k p) | res_join_PURE : forall k p, res_join PRED (PURE' PRED k p) (PURE' PRED k p) (PURE' PRED k p). Instance Join_res (PRED: Type) : Join (res PRED). exact (res_join PRED). Defined. Instance sa_rj : forall PRED, @Sep_alg _ (res_join PRED). Admitted. Inductive ghost (PRED : Type) : Type := GHOST' I (RAs: I -> Ghost) (g: @G Global_Ghost) (pds: I -> nat -> option (fpreds PRED)) (Hv: ghost.valid g) (dom: forall i n pp, pds i n = Some pp -> exists a, finmap_get (g i) n = Some a). Program Definition ghost_fmap (A B:Type) (f:A->B) (g:B->A)(x:ghost A) : ghost B := match x with | GHOST' _ RAs a pds _ _ => GHOST' _ _ RAs a (fmap (ffunc (fconst _) (ffunc (fconst _) (foption fpreds))) f g pds) _ _ end. Admit Obligations. Lemma ff_ghost : functorFacts ghost ghost_fmap. Admitted. Definition f_ghost : functor. exact (Functor ff_ghost). Defined. Inductive ghost_join (PRED : Type) : f_ghost PRED -> f_ghost PRED -> f_ghost PRED -> Prop := | ghost_join_I : forall A (RAs : A -> Ghost) a b c pdsa pdsb pdsc Hva Hvb Hvc doma domb domc, join a b c -> join pdsa pdsb pdsc -> ghost_join PRED (GHOST' PRED _ RAs a pdsa Hva doma) (GHOST' PRED _ RAs b pdsb Hvb domb) (GHOST' PRED _ RAs c pdsc Hvc domc). Instance Join_ghost (PRED: Type) : Join (ghost PRED). exact (ghost_join PRED). Defined. Instance sa_gj : forall PRED, @Sep_alg _ (ghost_join PRED). Admitted. Definition valid' A (w: (address -> res A) * ghost A) : Prop. Admitted. Lemma valid'_res_map : forall A B f g m, valid' A m -> valid' B (fmap f_res f g oo fst m, fmap f_ghost f g (snd m)). Admitted. Definition pre_rmap (A:Type) := { m:(address -> res A) * ghost A | valid' A m }. Definition f_pre_rmap : functor. exact (fsubset (fpair (ffunc (fconst address) f_res) f_ghost) _ valid'_res_map). Defined. Instance Join_pre_rmap (A: Type) : Join (pre_rmap A). Admitted. Definition paf_pre_rmap : @pafunctor f_pre_rmap Join_pre_rmap. Admitted. Instance Sep_pre_rmap (A: Type): Sep_alg (pre_rmap A). Admitted. Lemma pre_rmap_core: forall A (m : f_pre_rmap A), exists P, core m = exist (valid' A) (core (proj1_sig m)) P. Admitted. End StratModel. Module Type RMAPS. Declare Module AV:ADR_VAL. Parameter rmap : Type. Axiom ag_rmap: ageable rmap. End RMAPS. Module Rmaps (AV':ADR_VAL): RMAPS with Module AV:=AV'. Module Export AV:=AV'. Module SM := StratModel(AV). ```
Build Log (contains the Coq error message) (truncated to last 8.0KiB; full 285KiB file on GitHub Actions Artifacts under build.log) ``` VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert -compile veric/semax_call.v COQC veric/initialize.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqc MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqc.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert veric/initialize.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert -compile veric/initialize.v COQC veric/semax_prog.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqc MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqc.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert veric/semax_prog.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert -compile veric/semax_prog.v COQC veric/semax_ext.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqc MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqc.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert veric/semax_ext.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert -compile veric/semax_ext.v COQC veric/SeparationLogic.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqc MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqc.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert veric/SeparationLogic.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert -compile veric/SeparationLogic.v File "./veric/SeparationLogic.v", line 253, characters 58-63: Error: In environment it : ident * type The term "mpred" has type "Type@{max(VST.msl.predicates_hered.3, Set+1)}" while it is expected to have type "Type@{VST.veric.SeparationLogic.74}" (universe inconsistency). make: *** [Makefile:392: veric/SeparationLogic.vo] Error 1 ```
Minimization Log (truncated to last 8.0KiB; full 597KiB file on GitHub Actions Artifacts under bug.log) ``` rror: Failed to remove definitions and preserve the error. Writing intermediate code to /github/workspace/cwd/tmp.v. The new error was: MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -R /github/workspace/VST/compcert compcert -Q /github/workspace/cwd Top -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -top SeparationLogic -R /tmp/tmprdl1wnt9 '' -q -compile /tmp/tmprdl1wnt9/SeparationLogic.v File "/tmp/tmprdl1wnt9/SeparationLogic.v", line 27, characters 0-17: Error: The field address is missing in SeparationLogic.SimpleAdrVal. I will now attempt to remove unused non-instance, non-canonical structure definitions Non-fatal error: Failed to remove non-instance definitions and preserve the error. Writing intermediate code to /github/workspace/cwd/tmp.v. The new error was: MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -R /github/workspace/VST/compcert compcert -Q /github/workspace/cwd Top -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -top SeparationLogic -R /tmp/tmpubnmk122 '' -q -compile /tmp/tmpubnmk122/SeparationLogic.v File "/tmp/tmpubnmk122/SeparationLogic.v", line 130, characters 38-48: Error: The reference ghost_fmap was not found in the current environment. I will now attempt to remove unused variables Non-fatal error: Failed to remove variables and preserve the error. Writing intermediate code to /github/workspace/cwd/tmp.v. The new error was: MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -R /github/workspace/VST/compcert compcert -Q /github/workspace/cwd Top -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -top SeparationLogic -R /tmp/tmpxn58xr00 '' -q -compile /tmp/tmpxn58xr00/SeparationLogic.v File "/tmp/tmpxn58xr00/SeparationLogic.v", line 18, characters 38-49: Error: The reference AV0.address was not found in the current environment. I will now attempt to remove unused contexts Context removal successful. I will now attempt to replace Obligation with Admit Obligations Admitting Obligations successful. Failed to do everything at once; trying one at a time. Admitting Obligations unsuccessful. No successful changes. I will now attempt to admit lemmas with Admitted Admitting lemmas successful. Failed to do everything at once; trying one at a time. Admitting lemmas unsuccessful. No successful changes. I will now attempt to admit definitions with Admitted Non-fatal error: Failed to admit definitions and preserve the error. Writing intermediate code to /github/workspace/cwd/tmp.v. The new error was: MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -R /github/workspace/VST/compcert compcert -Q /github/workspace/cwd Top -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -top SeparationLogic -R /tmp/tmprx14bzeq '' -q -compile /tmp/tmprx14bzeq/SeparationLogic.v File "/tmp/tmprx14bzeq/SeparationLogic.v", line 75, characters 0-140: Error: Stack overflow. Failed to do everything at once; trying one at a time. Admitting definitions unsuccessful. No successful changes. I will now attempt to admit lemmas with admit. Defined Admitting lemmas successful. Failed to do everything at once; trying one at a time. Admitting lemmas unsuccessful. No successful changes. I will now attempt to admit definitions with admit. Defined Non-fatal error: Failed to admit definitions and preserve the error. Writing intermediate code to /github/workspace/cwd/tmp.v. The new error was: MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -R /github/workspace/VST/compcert compcert -Q /github/workspace/cwd Top -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -top SeparationLogic -R /tmp/tmpbcuiiphq '' -q -compile /tmp/tmpbcuiiphq/SeparationLogic.v File "/tmp/tmpbcuiiphq/SeparationLogic.v", line 114, characters 46-63: Error: In environment res_join : forall PRED : Type, f_res PRED -> f_res PRED -> f_res PRED -> Prop PRED : Type sh1 : Share.t nsh1 : ~ readable_share sh1 sh2 : Share.t nsh2 : ?T sh3 : Share.t nsh3 : ?T0 The term "NO' PRED sh1 nsh1" has type "res PRED" while it is expected to have type "f_res PRED". Failed to do everything at once; trying one at a time. Admitting definitions unsuccessful. No successful changes. I will now attempt to export modules Module exportation unsuccessful. I will now attempt to split imports and exports Import/Export splitting unsuccessful. I will now attempt to split := definitions ```

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross). If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

JasonGross commented 2 years ago

@coqbot minimize

cat > bug.v <<'EOF'
(* -*- mode: coq; coq-prog-args: ("-emacs" "-w" "none" "-R" "/github/workspace/VST/compcert" "compcert" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/VST/msl" "VST.msl" "-Q" "/github/workspace/VST/sepcomp" "VST.sepcomp" "-Q" "/github/workspace/VST/veric" "VST.veric" "-Q" "/github/workspace/VST/floyd" "VST.floyd" "-Q" "/github/workspace/VST/progs" "VST.progs" "-Q" "/github/workspace/VST/concurrency" "VST.concurrency" "-Q" "/github/workspace/VST/ccc26x86" "VST.ccc26x86" "-Q" "/github/workspace/VST/wand_demo" "wand_demo" "-Q" "/github/workspace/VST/sha" "sha" "-Q" "/github/workspace/VST/fcf" "fcf" "-Q" "/github/workspace/VST/hmacfcf" "hmacfcf" "-Q" "/github/workspace/VST/tweetnacl20140427" "tweetnacl20140427" "-Q" "/github/workspace/VST/hmacdrbg" "hmacdrbg" "-Q" "/github/workspace/VST/aes" "aes" "-Q" "/github/workspace/VST/mailbox" "mailbox" "-top" "SeparationLogic") -*- *)
(* File reduced by coq-bug-minimizer from original input, then from 1507 lines to 166 lines, then from 179 lines to 1613 lines, then from 1618 lines to 283 lines, then from 296 lines to 1447 lines, then from 1447 lines to 305 lines, then from 318 lines to 2145 lines, then from 2137 lines to 360 lines, then from 373 lines to 520 lines, then from 523 lines to 388 lines, then from 401 lines to 1790 lines, then from 1792 lines to 448 lines, then from 461 lines to 1138 lines, then from 1142 lines to 444 lines, then from 457 lines to 1784 lines, then from 1789 lines to 481 lines, then from 494 lines to 2397 lines, then from 2398 lines to 682 lines *)
(* coqc version 8.7.2 (February 2022) compiled on Feb 7 2022 8:00:14 with OCaml 4.09.1
   coqtop version 8.7.2 (February 2022)
   Expected coqc runtime on this file: 1.531 sec *)
Require VST.msl.seplog.
Require VST.veric.base.
Require VST.msl.ghost.
Require VST.veric.shares.
Axiom proof_admitted : False.
Tactic Notation "admit" := abstract case proof_admitted.
Import VST.msl.msl_standard.
Import VST.msl.ghost.
Import VST.veric.shares.

Module Type ADR_VAL.
Parameter address : Type.

Parameter kind: Type.
End ADR_VAL.

Module Type ADR_VAL0.
Parameter address : Type.
Parameter kind: Type.
End ADR_VAL0.

Module SimpleAdrVal (AV0: ADR_VAL0) <:
   ADR_VAL with Definition address := AV0.address
                   with Definition kind := AV0.kind.
  Import AV0.
  Definition address := address.
  Definition kind := kind.
End SimpleAdrVal.

Inductive TypeTree: Type :=
  | ConstType: Type -> TypeTree
  | Mpred: TypeTree
  | DependentType: nat -> TypeTree
  | ProdType: TypeTree -> TypeTree -> TypeTree
  | ArrowType: TypeTree -> TypeTree -> TypeTree
  | PiType: forall (I : Type), (I -> TypeTree) -> TypeTree.
Definition dependent_type_functor_rec (ts: list Type): TypeTree -> functor.
Admitted.
Definition fpreds: functor.
Admitted.
Instance preds_join (PRED : Type) (I: Type) : Join (I -> nat -> option (fpreds PRED)).
Admitted.

Section Finmap.

Definition finmap A := list (option A).

Import ListNotations.

Definition finmap_get {A} (m : finmap A) k := nth k m None.

Context {A} {J: Join A}.

Inductive finmap_join: Join (finmap A) :=
| finmap_join_nil_l m: finmap_join [] m m
| finmap_join_nil_r m: finmap_join m [] m
| finmap_join_cons a1 a2 m1 m2 a3 m3: join a1 a2 a3 -> finmap_join m1 m2 m3 ->
    finmap_join (a1 :: m1) (a2 :: m2) (a3 :: m3).

Global Instance Perm_finmap {P: Perm_alg A} : @Perm_alg _ finmap_join.
Admitted.

Global Instance Sep_finmap {S: Sep_alg A} : @Sep_alg _ finmap_join.
Admitted.

End Finmap.

Instance finmap_RA {RA: Ghost} : Ghost :=
  { valid m := forall i a, finmap_get m i = Some a -> valid a; Join_G := finmap_join }.
admit.
Defined.

Instance Global_Ghost {I} {RAs: I -> Ghost}: Ghost :=
  { G := forall i, finmap (@G (RAs i)); valid m := forall i, @valid finmap_RA (m i) }.
admit.
Defined.

Module Type STRAT_MODEL.
  Declare Module AV : ADR_VAL.
Definition f_pre_rmap : functor.
Admitted.
Instance Join_pre_rmap (A: Type) : Join (f_pre_rmap A).
Admitted.
  Parameter Sep_pre_rmap: forall (A: Type), Sep_alg (f_pre_rmap A).
  Parameter paf_pre_rmap : @pafunctor f_pre_rmap Join_pre_rmap.

End STRAT_MODEL.

Module StratModel (AV' : ADR_VAL) : STRAT_MODEL with Module AV:=AV'.
  Module AV := AV'.
  Import AV.
Definition preds: functor.
Admitted.

  Inductive res (PRED : Type) : Type :=
    | NO':  forall sh: Share.t, ~(readable_share sh) -> res PRED
    | YES': forall sh: Share.t, readable_share sh -> kind -> preds PRED -> res PRED
    | PURE': kind -> preds PRED -> res PRED.
Definition res_fmap (A B:Type) (f:A->B) (g:B->A)(x:res A) : res B.
Admitted.

  Lemma ff_res : functorFacts res res_fmap.
Admitted.
Definition f_res : functor.
exact (Functor ff_res).
Defined.

  Inductive res_join (PRED : Type) : f_res PRED -> f_res PRED -> f_res PRED -> Prop :=
    | res_join_NO1 : forall sh1 nsh1 sh2 nsh2 sh3 nsh3,
                               join sh1 sh2 sh3 ->
                               res_join PRED (NO' PRED sh1 nsh1) (NO' PRED sh2 nsh2)
                                     (NO' PRED sh3 nsh3)
    | res_join_NO2 : forall sh1 nsh1 sh2 rsh2 sh3 rsh3 k p,
                               join sh1 sh2 sh3 ->
                               res_join PRED (NO' PRED sh1 nsh1) (YES' PRED sh2 rsh2 k p)
                                   (YES' PRED sh3 rsh3 k p)
    | res_join_NO3 : forall sh1 rsh1 sh2 nsh2 sh3 rsh3 k p,
                               join sh1 sh2 sh3 ->
                               res_join PRED (YES' PRED sh1 rsh1 k p) (NO' PRED sh2 nsh2)
                                   (YES' PRED sh3 rsh3 k p)
    | res_join_YES : forall sh1 rsh1 sh2 rsh2 sh3 rsh3 k p,
                              join sh1 sh2 sh3 ->
              res_join PRED (YES' PRED sh1 rsh1 k p) (YES' PRED sh2 rsh2 k p) (YES' PRED sh3 rsh3 k p)
    | res_join_PURE : forall k p, res_join PRED (PURE' PRED k p) (PURE' PRED k p) (PURE' PRED k p).
Instance Join_res (PRED: Type) : Join (res PRED).
exact (res_join PRED).
Defined.

  Instance sa_rj : forall PRED, @Sep_alg _ (res_join PRED).
Admitted.

  Inductive ghost (PRED : Type) : Type :=
    GHOST' I (RAs: I -> Ghost) (g: @G Global_Ghost) (pds: I -> nat -> option (fpreds PRED))
      (Hv: ghost.valid g)
      (dom: forall i n pp, pds i n = Some pp -> exists a, finmap_get (g i) n = Some a).

  Program Definition ghost_fmap (A B:Type) (f:A->B) (g:B->A)(x:ghost A) : ghost B :=
    match x with
      | GHOST' _ RAs a pds _ _ =>
        GHOST' _ _ RAs a (fmap (ffunc (fconst _) (ffunc (fconst _) (foption fpreds))) f g pds) _ _
    end.
Admit Obligations.

  Lemma ff_ghost : functorFacts ghost ghost_fmap.
Admitted.
Definition f_ghost : functor.
exact (Functor ff_ghost).
Defined.

  Inductive ghost_join (PRED : Type) : f_ghost PRED -> f_ghost PRED -> f_ghost PRED -> Prop :=
    | ghost_join_I : forall A (RAs : A -> Ghost) a b c pdsa pdsb pdsc Hva Hvb Hvc doma domb domc,
        join a b c -> join pdsa pdsb pdsc ->
        ghost_join PRED (GHOST' PRED _ RAs a pdsa Hva doma) (GHOST' PRED _ RAs b pdsb Hvb domb)
                        (GHOST' PRED _ RAs c pdsc Hvc domc).
Instance Join_ghost (PRED: Type) : Join (ghost PRED).
exact (ghost_join PRED).
Defined.

  Instance sa_gj : forall PRED, @Sep_alg _ (ghost_join PRED).
Admitted.
Definition valid' A (w: (address -> res A) * ghost A) : Prop.
Admitted.

  Lemma valid'_res_map : forall A B f g m,
    valid' A m -> valid' B (fmap f_res f g oo fst m, fmap f_ghost f g (snd m)).
Admitted.

  Definition pre_rmap (A:Type) := { m:(address -> res A) * ghost A | valid' A m }.
Definition f_pre_rmap : functor.
exact (fsubset (fpair (ffunc (fconst address) f_res) f_ghost) _ valid'_res_map).
Defined.
Instance Join_pre_rmap (A: Type) : Join (pre_rmap A).
Admitted.
Definition paf_pre_rmap : @pafunctor f_pre_rmap Join_pre_rmap.
Admitted.
Instance Sep_pre_rmap (A: Type): Sep_alg (pre_rmap A).
Admitted.

  Lemma pre_rmap_core: forall A (m : f_pre_rmap A),
    exists P, core m = exist (valid' A) (core (proj1_sig m)) P.
Admitted.

End StratModel.

Module Type RMAPS.
  Declare Module AV:ADR_VAL.

  Parameter rmap : Type.
  Axiom ag_rmap: ageable rmap.

End RMAPS.

Module Rmaps (AV':ADR_VAL): RMAPS with Module AV:=AV'.
  Module Export AV:=AV'.

  Module SM := StratModel(AV).
  Import SM.

  Module Export TyF.

    Definition F := f_pre_rmap.
  End TyF.

  Module TyFSA <: KNOT_FULL_SA_INPUT with Module KI:=TyF.
    Module KI := TyF.
Instance Join_F: forall A, Join (F A).
exact (_).
Defined.
Definition Perm_F : forall A, Perm_alg (F A).
Admitted.
    Definition Sep_F := Sep_pre_rmap.
    Definition paf_F := paf_pre_rmap.
  End TyFSA.

  Module K := Knot_MixVariantHeredProp(TyF).

  Definition rmap := K.knot.
Instance ag_rmap : ageable rmap.
Admitted.

End Rmaps.
Import VST.veric.base.

Inductive kind : Type := VAL : memval -> kind
                                   | LK : Z -> kind
                                   | CT: Z -> kind
                                   | FUN: funsig -> calling_convention -> kind.

Module CompCert_AV <: ADR_VAL.

Definition address := address.
Definition kind := kind.

End CompCert_AV.

Module R := Rmaps (CompCert_AV).
Export R.

Section cuof.

Context (cenv: composite_env).
Definition composite_env_complete_legal_cosu_type: Prop.
Admitted.

End cuof.

Definition hardware_alignof_env_consistent (cenv: composite_env) (ha_env: PTree.t Z): Prop.
Admitted.
Definition hardware_alignof_env_complete (cenv: composite_env) (ha_env: PTree.t Z): Prop.
Admitted.

Module Type LEGAL_ALIGNAS.

  Parameter legal_alignas_obs: Type.

End LEGAL_ALIGNAS.

Module LegalAlignasDefsGen (LegalAlignas: LEGAL_ALIGNAS).

  Import LegalAlignas.
Definition legal_alignas_env_consistent (cenv: composite_env) (ha_env: PTree.t Z) (la_env: PTree.t legal_alignas_obs): Prop.
Admitted.
Definition legal_alignas_env_complete (cenv: composite_env) (la_env: PTree.t legal_alignas_obs): Prop.
Admitted.
Definition legal_alignas_env_sound (cenv: composite_env) (ha_env: PTree.t Z) (la_env: PTree.t legal_alignas_obs): Prop.
Admitted.

End LegalAlignasDefsGen.

Module Type LEGAL_ALIGNAS_FACTS.

  Declare Module LegalAlignas: LEGAL_ALIGNAS.
  Module LegalAlignasDefs := LegalAlignasDefsGen (LegalAlignas).
Export LegalAlignas.
Export LegalAlignasDefs.

End LEGAL_ALIGNAS_FACTS.

Module LegalAlignasStrong <: LEGAL_ALIGNAS.

Section legal_alignas.
Definition legal_alignas_obs: Type.
Admitted.

End legal_alignas.

End LegalAlignasStrong.

Module LegalAlignasStrongFacts: LEGAL_ALIGNAS_FACTS with Module LegalAlignas := LegalAlignasStrong.

Module LegalAlignas := LegalAlignasStrong.
Module LegalAlignasDefs := LegalAlignasDefsGen (LegalAlignas).

End LegalAlignasStrongFacts.

Module Export LegalAlignasFacts := LegalAlignasStrongFacts.

Structure Lift := mkLift {
         lift_S: Type;
         lift_T: Type;
         lift_prod : Type;
         lift_last: Type;
         lifted:> Type;
         lift_curry: lift_T -> lift_prod -> lift_last;
         lift_uncurry_open: ((lift_S -> lift_prod) -> (lift_S -> lift_last)) -> lifted
}.

Definition Tend (S: Type) (A: Type) :=
    mkLift S A unit A
          (S -> A)
          (fun f _ => f)
          (fun f => f (fun _: S => tt)).

Canonical Structure Tarrow (A: Type) (H: Lift) :=
    mkLift (lift_S H)
      (A -> lift_T H)
      (prod A (lift_prod H))
      (lift_last H)
      ((lift_S H -> A) -> lifted H)
      (fun f x => match x with (x1,x2) => lift_curry H (f x1) x2 end)
      (fun f x => lift_uncurry_open H (fun y: lift_S H -> lift_prod H => f (fun z => (x z, y z)))).

Set Implicit Arguments.
Definition liftx {H: Lift} (f: lift_T H) : lifted H.
Admitted.

Notation "'`' x" := (liftx x) (at level 9).
Notation "'`(' x ')'" := (liftx (x : _)).
Module Export Map.
Section map.
Variables (B : Type).

Definition t := positive -> option B.
Definition get (h: t) (a:positive) : option B.
Admitted.

End map.

Definition genviron := Map.t block.

Definition venviron := Map.t (block * type).

Definition tenviron := Map.t val.

Inductive environ : Type :=
 mkEnviron: forall (ge: genviron) (ve: venviron) (te: tenviron), environ.
Definition te_of (rho: environ) : tenviron.
Admitted.

Definition mpred := pred rmap.
Definition AssertTT (A: TypeTree): TypeTree.
Admitted.
Definition super_non_expansive {A: TypeTree}
  (P: forall ts, dependent_type_functor_rec ts (AssertTT A) mpred): Prop.
Admitted.

Inductive funspec :=
   mk_funspec: funsig -> calling_convention -> forall (A: TypeTree)
     (P Q: forall ts, dependent_type_functor_rec ts (AssertTT A) mpred)
     (P_ne: super_non_expansive P) (Q_ne: super_non_expansive Q),
     funspec.
Definition composite_legal_fieldlist (co: composite): Prop.
Admitted.

Definition composite_env_legal_fieldlist env :=
  forall (id : positive) (co : composite),
    env ! id = Some co -> composite_legal_fieldlist co.

Class compspecs := mkcompspecs {
  cenv_cs : composite_env;
  cenv_consistent: composite_env_consistent cenv_cs;
  cenv_legal_fieldlist: composite_env_legal_fieldlist cenv_cs;
  cenv_legal_su: composite_env_complete_legal_cosu_type cenv_cs;
  ha_env_cs: PTree.t Z;
  ha_env_cs_consistent: hardware_alignof_env_consistent cenv_cs ha_env_cs;
  ha_env_cs_complete: hardware_alignof_env_complete cenv_cs ha_env_cs;
  la_env_cs: PTree.t legal_alignas_obs;
  la_env_cs_consistent: legal_alignas_env_consistent cenv_cs ha_env_cs la_env_cs;
  la_env_cs_complete: legal_alignas_env_complete cenv_cs la_env_cs;
  la_env_cs_sound: legal_alignas_env_sound cenv_cs ha_env_cs la_env_cs
}.

Existing Class composite_env.
Existing Instance cenv_cs.

Arguments sizeof {env} !t / .
Arguments alignof {env} !t / .

Inductive Annotation :=
  WeakAnnotation : (environ -> mpred) -> Annotation
| StrongAnnotation : (environ -> mpred) -> Annotation.

Inductive tycontext : Type :=
  mk_tycontext : forall (tyc_temps: PTree.t (type * bool))
                        (tyc_vars: PTree.t type)
                        (tyc_ret: type)
                        (tyc_globty: PTree.t type)
                        (tyc_globsp: PTree.t funspec)
                        (tyc_annot: PTree.t Annotation),
                             tycontext.

Module Export Cop2.
Definition sem_cast (t1 t2: type): val -> option val.
Admitted.
Definition sem_unary_operation
            (op: Cop.unary_operation) (ty: type) (v: val): option val.
Admitted.
Definition sem_binary_operation'
    {CS: compspecs} (op: Cop.binary_operation)
    (t1:type) (t2: type) : val -> val -> option val.
Admitted.
Definition force_val (v: option val) : val.
Admitted.

Definition force_val1 (f: val -> option val) (v: val) := force_val (f v).
Definition force_val2 (f: val -> val -> option val) (v1 v2: val) := force_val (f v1 v2).

Canonical Structure LiftEnviron := Tend environ.

Definition eval_id (id: ident) (rho: environ) := force_val (Map.get (te_of rho) id).

Definition eval_unop (op: Cop.unary_operation) (t1 : type) :=
       force_val1 (Cop2.sem_unary_operation op t1).

Definition eval_binop {CS:compspecs} (op: Cop.binary_operation) (t1 t2 : type) :=
       force_val2 (Cop2.sem_binary_operation'  op t1 t2).

Definition eval_cast (t1 t2 : type) :=
  force_val1 (sem_cast t1 t2).
Definition eval_field {CS: compspecs} (ty: type) (fld: ident) : val -> val.
Admitted.
Definition eval_var (id:ident) (ty: type) (rho: environ) : val.
Admitted.

Fixpoint eval_expr {CS: compspecs} (e: expr) : environ -> val :=
 match e with
 | Econst_int i ty => `(Vint i)
 | Econst_long i ty => `(Vlong i)
 | Econst_float f ty => `(Vfloat f)
 | Econst_single f ty => `(Vsingle f)
 | Etempvar id ty => eval_id id
 | Eaddrof a ty => eval_lvalue a
 | Eunop op a ty =>  `(eval_unop op (typeof a)) (eval_expr a)
 | Ebinop op a1 a2 ty =>
                  `(eval_binop op (typeof a1) (typeof a2)) (eval_expr a1) (eval_expr a2)
 | Ecast a ty => `(eval_cast (typeof a) ty) (eval_expr a)
 | Evar id ty => eval_var id ty
 | Ederef a ty => eval_expr a
 | Efield a i ty => `(eval_field (typeof a) i) (eval_lvalue a)
 | Esizeof t ty => `(Vptrofs (Ptrofs.repr (sizeof t)))
 | Ealignof t ty => `(Vptrofs (Ptrofs.repr (alignof t)))
 end

 with eval_lvalue {CS: compspecs} (e: expr) : environ -> val :=
 match e with
 | Evar id ty => eval_var id ty
 | Ederef a ty => eval_expr a
 | Efield a i ty => `(eval_field (typeof a) i) (eval_lvalue a)
 | _  => `Vundef
 end.

Fixpoint eval_exprlist {CS: compspecs} (et: list type) (el:list expr) : environ -> list val :=
 match et, el with
 | t::et', e::el' =>
    `(@cons val) (`force_val (`(sem_cast (typeof e) t) (eval_expr e))) (eval_exprlist et' el')
 | _, _ => `nil
 end.

Inductive tc_error :=
| op_result_type : expr -> tc_error
| arg_type : expr -> tc_error
| pp_compare_size_0 : type -> tc_error
| pp_compare_size_exceed : type -> tc_error
| invalid_cast : type -> type -> tc_error
| invalid_cast_result : type -> type -> tc_error
| invalid_expression : expr -> tc_error
| var_not_in_tycontext : tycontext -> positive  -> tc_error
| mismatch_context_type : type -> type -> tc_error
| deref_byvalue : type -> tc_error
| volatile_load : type -> tc_error
| invalid_field_access : expr -> tc_error
| invalid_composite_name: ident -> tc_error
| invalid_struct_field : ident   -> ident   -> tc_error
| invalid_lvalue : expr -> tc_error
| wrong_signature : tc_error
| int_or_ptr_type_error : tc_error
| miscellaneous_typecheck_error : tc_error.

Inductive tc_assert :=
| tc_FF: tc_error -> tc_assert
| tc_TT : tc_assert
| tc_andp': tc_assert -> tc_assert -> tc_assert
| tc_orp' : tc_assert -> tc_assert -> tc_assert
| tc_nonzero': expr -> tc_assert
| tc_iszero': expr -> tc_assert
| tc_isptr: expr -> tc_assert
| tc_test_eq': expr -> expr -> tc_assert
| tc_test_order': expr -> expr -> tc_assert
| tc_ilt': expr -> int -> tc_assert
| tc_llt': expr -> int64 -> tc_assert
| tc_Zle: expr -> Z -> tc_assert
| tc_Zge: expr -> Z -> tc_assert
| tc_samebase: expr -> expr -> tc_assert
| tc_nodivover': expr -> expr -> tc_assert
| tc_initialized: PTree.elt -> type -> tc_assert
| tc_nosignedover: (Z->Z->Z) -> expr -> expr -> tc_assert.

Definition isptr v :=
   match v with | Vptr _ _ => True | _ => False end.
Definition tc_val (ty: type) : val -> Prop.
Admitted.
Definition valid_pointer (p: val) : mpred.
Admitted.
Definition weak_valid_pointer (p: val) : mpred.
Admitted.
Export VST.msl.seplog.
Instance Nveric: NatDed mpred.
Admitted.

Definition denote_tc_iszero v : mpred :=
         match v with
         | Vint i => prop (is_true (Int.eq i Int.zero))
         | Vlong i => prop (is_true (Int64.eq (Int64.repr (Int64.unsigned i)) Int64.zero))
         | _ => FF
         end.

Definition denote_tc_nonzero v : mpred :=
         match v with
         | Vint i => prop (i <> Int.zero)
         | Vlong i =>prop (i <> Int64.zero)
         | _ => FF end.

Definition denote_tc_igt i v : mpred :=
     match v with
     | Vint i1 => prop (Int.unsigned i1 < Int.unsigned i)
     | _ => FF
     end.

Definition denote_tc_lgt l v : mpred :=
     match v with
     | Vlong l1 => prop (Int64.unsigned l1 < Int64.unsigned l)
     | _ => FF
     end.
Definition Zoffloat (f:float): option Z.
Admitted.
Definition Zofsingle (f: float32): option Z.
Admitted.

Definition denote_tc_Zge z v : mpred :=
          match v with
                     | Vfloat f => match Zoffloat f with
                                    | Some n => prop (z >= n)
                                    | None => FF
                                   end
                     | Vsingle f => match Zofsingle f with
                                    | Some n => prop (z >= n)
                                    | None => FF
                                   end
                     | _ => FF
                  end.

Definition denote_tc_Zle z v : mpred :=
          match v with
                     | Vfloat f => match Zoffloat f with
                                    | Some n => prop (z <= n)
                                    | None => FF
                                   end
                     | Vsingle f => match Zofsingle f with
                                    | Some n => prop (z <= n)
                                    | None => FF
                                   end
                     | _ => FF
                  end.

Definition sameblock v1 v2 : bool :=
         match v1, v2 with
          | Vptr b1 _, Vptr b2 _ => peq b1 b2
          | _, _ => false
         end.

Definition denote_tc_samebase v1 v2 : mpred :=
       prop (is_true (sameblock v1 v2)).

Definition denote_tc_nodivover v1 v2 : mpred :=
match v1, v2 with
          | Vint n1, Vint n2 => prop (~(n1 = Int.repr Int.min_signed /\ n2 = Int.mone))
          | Vlong n1, Vlong n2 => prop (~(n1 = Int64.repr Int64.min_signed /\ n2 = Int64.mone))
          | Vint n1, Vlong n2 => TT
          | Vlong n1, Vint n2 => prop (~ (n1 = Int64.repr Int64.min_signed  /\ n2 = Int.mone))
          | _ , _ => FF
        end.

Definition denote_tc_nosignedover (op: Z->Z->Z) v1 v2 : mpred :=
 match v1,v2 with
 | Vint n1, Vint n2 =>
   prop (Int.min_signed <= op (Int.signed n1) (Int.signed n2) <= Int.max_signed)
 | Vlong n1, Vlong n2 =>
   prop (Int64.min_signed <= op (Int64.signed n1) (Int64.signed n2) <= Int64.max_signed)
 | Vint n1, Vlong n2 =>
   prop (Int64.min_signed <= op (Int.signed n1) (Int64.signed n2) <= Int64.max_signed)
 | Vlong n1, Vint n2 =>
   prop (Int64.min_signed <= op (Int64.signed n1) (Int.signed n2) <= Int64.max_signed)
 | _, _ => FF
 end.

Definition denote_tc_initialized id ty rho : mpred :=
    prop (exists v, Map.get (te_of rho) id = Some v
               /\ tc_val ty v).

Definition denote_tc_isptr v : mpred :=
  prop (isptr v).

Definition test_eq_ptrs v1 v2 : mpred :=
  if sameblock v1 v2
  then (andp (weak_valid_pointer v1) (weak_valid_pointer v2))
  else (andp (valid_pointer v1) (valid_pointer v2)).

Definition test_order_ptrs v1 v2 : mpred :=
  if sameblock v1 v2
  then (andp (weak_valid_pointer v1) (weak_valid_pointer v2))
  else FF.

Definition denote_tc_test_eq v1 v2 : mpred :=
 match v1, v2 with
 | Vint i, Vint j =>
     if Archi.ptr64 then FF else andp (prop (i = Int.zero)) (prop (j = Int.zero))
 | Vlong i, Vlong j =>
     if Archi.ptr64 then andp (prop (i = Int64.zero)) (prop (j = Int64.zero)) else FF
 | Vint i, Vptr _ _ =>
      if Archi.ptr64 then FF else andp (prop (i = Int.zero)) (weak_valid_pointer v2)
 | Vlong i, Vptr _ _ =>
      if Archi.ptr64 then andp (prop (i = Int64.zero)) (weak_valid_pointer v2) else FF
 | Vptr _ _, Vint i =>
      if Archi.ptr64 then FF else andp (prop (i = Int.zero)) (weak_valid_pointer v1)
 | Vptr _ _, Vlong i =>
      if Archi.ptr64 then andp (prop (i = Int64.zero)) (weak_valid_pointer v1) else FF
 | Vptr _ _, Vptr _ _ =>
      test_eq_ptrs v1 v2
 | _, _ => FF
 end.

Definition denote_tc_test_order v1 v2 : mpred :=
 match v1, v2 with
 | Vint i, Vint j => if Archi.ptr64 then FF else andp (prop (i = Int.zero)) (prop (j = Int.zero))
 | Vlong i, Vlong j => if Archi.ptr64 then andp (prop (i = Int64.zero)) (prop (j = Int64.zero)) else FF
 | Vptr _ _, Vptr _ _ =>
      test_order_ptrs v1 v2
 | _, _ => FF
 end.
Definition typecheck_error (e: tc_error) : Prop.
Admitted.

Fixpoint denote_tc_assert {CS: compspecs} (a: tc_assert) : environ -> mpred :=
  match a with
  | tc_FF msg => `(prop (typecheck_error msg))
  | tc_TT => TT
  | tc_andp' b c => fun rho => andp (denote_tc_assert b rho) (denote_tc_assert c rho)
  | tc_orp' b c => `orp (denote_tc_assert b) (denote_tc_assert c)
  | tc_nonzero' e => `denote_tc_nonzero (eval_expr e)
  | tc_isptr e => `denote_tc_isptr (eval_expr e)
  | tc_test_eq' e1 e2 => `denote_tc_test_eq (eval_expr e1) (eval_expr e2)
  | tc_test_order' e1 e2 => `denote_tc_test_order (eval_expr e1) (eval_expr e2)
  | tc_ilt' e i => `(denote_tc_igt i) (eval_expr e)
  | tc_llt' e i => `(denote_tc_lgt i) (eval_expr e)
  | tc_Zle e z => `(denote_tc_Zge z) (eval_expr e)
  | tc_Zge e z => `(denote_tc_Zle z) (eval_expr e)
  | tc_samebase e1 e2 => `denote_tc_samebase (eval_expr e1) (eval_expr e2)
  | tc_nodivover' v1 v2 => `denote_tc_nodivover (eval_expr v1) (eval_expr v2)
  | tc_initialized id ty => denote_tc_initialized id ty
  | tc_iszero' e => `denote_tc_iszero (eval_expr e)
  | tc_nosignedover op e1 e2 => `(denote_tc_nosignedover op) (eval_expr e1) (eval_expr e2)
 end.

Definition fool' := @map _ Type (fun it : ident * type => mpred).
EOF
cat bug.v
opam switch create coq.8.7.2 --empty
opam switch coq.8.7.2
opam install -y coq.8.7.2
eval $(opam env)
git clone https://github.com/Alizter/VST.git
cd VST
git checkout test-6984
make veric/SeparationLogic.vo
coqbot commented 2 years ago

Hey @JasonGross, the coq bug minimizer is running your script, I'll come back to you with the results once it's done.

coqbot commented 2 years ago

Hey @JasonGross, the coq bug minimizer is running your script, I'll come back to you with the results once it's done.

coqbot commented 2 years ago

Hey @JasonGross, the coq bug minimizer is running your script, I'll come back to you with the results once it's done.

coqbot commented 2 years ago

@JasonGross, Minimized File /github/workspace/VST/veric/SeparationLogic.v (interrupted by timeout) (full log on GitHub Actions)

Minimized Coq File (consider adding this file to the test-suite) ```coq (* -*- mode: coq; coq-prog-args: ("-emacs" "-w" "none" "-R" "/github/workspace/VST/compcert" "compcert" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/VST/msl" "VST.msl" "-Q" "/github/workspace/VST/sepcomp" "VST.sepcomp" "-Q" "/github/workspace/VST/veric" "VST.veric" "-Q" "/github/workspace/VST/floyd" "VST.floyd" "-Q" "/github/workspace/VST/progs" "VST.progs" "-Q" "/github/workspace/VST/concurrency" "VST.concurrency" "-Q" "/github/workspace/VST/ccc26x86" "VST.ccc26x86" "-Q" "/github/workspace/VST/wand_demo" "wand_demo" "-Q" "/github/workspace/VST/sha" "sha" "-Q" "/github/workspace/VST/fcf" "fcf" "-Q" "/github/workspace/VST/hmacfcf" "hmacfcf" "-Q" "/github/workspace/VST/tweetnacl20140427" "tweetnacl20140427" "-Q" "/github/workspace/VST/hmacdrbg" "hmacdrbg" "-Q" "/github/workspace/VST/aes" "aes" "-Q" "/github/workspace/VST/mailbox" "mailbox" "-top" "bug_01") -*- *) (* File reduced by coq-bug-minimizer from original input, then from 1507 lines to 166 lines, then from 179 lines to 1613 lines, then from 1618 lines to 283 lines, then from 296 lines to 1447 lines, then from 1447 lines to 305 lines, then from 318 lines to 2145 lines, then from 2137 lines to 360 lines, then from 373 lines to 520 lines, then from 523 lines to 388 lines, then from 401 lines to 1790 lines, then from 1792 lines to 448 lines, then from 461 lines to 1138 lines, then from 1142 lines to 444 lines, then from 457 lines to 1784 lines, then from 1789 lines to 481 lines, then from 494 lines to 2397 lines, then from 2398 lines to 682 lines, then from 689 lines to 676 lines, then from 689 lines to 1896 lines, then from 1895 lines to 680 lines, then from 693 lines to 779 lines, then from 784 lines to 693 lines, then from 706 lines to 1627 lines, then from 1629 lines to 699 lines, then from 712 lines to 1325 lines, then from 1329 lines to 717 lines, then from 731 lines to 1132 lines, then from 1138 lines to 704 lines, then from 718 lines to 1032 lines, then from 1037 lines to 706 lines, then from 720 lines to 2384 lines, then from 2385 lines to 993 lines, then from 1007 lines to 2529 lines, then from 2521 lines to 921 lines *) (* coqc version 8.7.2 (February 2022) compiled on Feb 7 2022 16:37:53 with OCaml 4.09.1 coqtop version 8.7.2 (February 2022) Modules that could not be inlined: VST.msl.tree_shares, VST.msl.predicates_hered Expected coqc runtime on this file: 1.011 sec *) Axiom proof_admitted : False. Tactic Notation "admit" := abstract case proof_admitted. Module Export knot_full_variant. Require VST.msl.base. Import VST.msl.base. Require VST.msl.ageable. Import VST.msl.ageable. Require VST.msl.functors. Import VST.msl.functors. Import VST.msl.functors.MixVariantFunctor. Module Type KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL. Parameter F : functor. End KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL. Module Type KNOT__MIXVARIANT_HERED_T_OTH_REL. Declare Module KI: KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL. Parameter knot:Type. End KNOT__MIXVARIANT_HERED_T_OTH_REL. Module Knot_MixVariantHeredTOthRel (KI':KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL) : KNOT__MIXVARIANT_HERED_T_OTH_REL with Module KI:=KI'. Module KI := KI'. Import KI. Definition sinv (n:nat) : Type. Admitted. Definition knot := { n:nat & F (sinv n) }. Section stratifies. End stratifies. End Knot_MixVariantHeredTOthRel. Module Export KnotLemmas1. End KnotLemmas1. Module Export KnotLemmas2. End KnotLemmas2. Module KnotLemmas_MixVariantHeredTOthRel (K : KNOT__MIXVARIANT_HERED_T_OTH_REL). End KnotLemmas_MixVariantHeredTOthRel. Module Type KNOT_FULL_OUTPUT. Declare Module KI: KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL. Declare Module K0: KNOT__MIXVARIANT_HERED_T_OTH_REL with Module KI := KI. End KNOT_FULL_OUTPUT. Module Type KNOT_FULL. Declare Module KI: KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL. Declare Module KO: KNOT_FULL_OUTPUT with Module KI := KI. Definition knot : Type. Admitted. End KNOT_FULL. Module Type KNOT_FULL_LEMMAS. End KNOT_FULL_LEMMAS. Module KnotFull (KI': KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL) (KO': KNOT_FULL_OUTPUT with Module KI := KI'): KNOT_FULL with Module KI := KI' with Module KO:=KO'. Module Export KI:=KI'. Module Export KO:=KO'. Definition knot: Type. exact (KO.K0.knot). Defined. End KnotFull. Require VST.msl.sepalg_generators. Require VST.msl.seplog. Require VST.veric.base. Require VST.msl.ghost. Require VST.msl.predicates_hered. Require VST.msl.tree_shares. Import VST.msl.predicates_hered. Module Type KNOT_INPUT__COCONTRAVARIANT_HERED_T_OTH_REL. End KNOT_INPUT__COCONTRAVARIANT_HERED_T_OTH_REL. Module Type KNOT__COCONTRAVARIANT_HERED_T_OTH_REL. Declare Module KI: KNOT_INPUT__COCONTRAVARIANT_HERED_T_OTH_REL. End KNOT__COCONTRAVARIANT_HERED_T_OTH_REL. Module Type KNOT_INPUT__COVARIANT_HERED_PROP_OTH_REL. Parameter other : Type. End KNOT_INPUT__COVARIANT_HERED_PROP_OTH_REL. Module Type KNOT__COVARIANT_HERED_PROP_OTH_REL. Declare Module KI : KNOT_INPUT__COVARIANT_HERED_PROP_OTH_REL. End KNOT__COVARIANT_HERED_PROP_OTH_REL. Module Type KNOT_INPUT__COVARIANT_HERED_PROP_OTH. Parameter other : Type. End KNOT_INPUT__COVARIANT_HERED_PROP_OTH. Module Type KNOT__COVARIANT_HERED_PROP_OTH. Declare Module KI : KNOT_INPUT__COVARIANT_HERED_PROP_OTH. End KNOT__COVARIANT_HERED_PROP_OTH. Module Type KNOT_INPUT__COVARIANT_HERED_PROP. End KNOT_INPUT__COVARIANT_HERED_PROP. Module Type KNOT__COVARIANT_HERED_PROP. Declare Module KI : KNOT_INPUT__COVARIANT_HERED_PROP. End KNOT__COVARIANT_HERED_PROP. Module Type KNOT_INPUT__MIXVARIANT_HERED_PROP. End KNOT_INPUT__MIXVARIANT_HERED_PROP. Module Type KNOT__MIXVARIANT_HERED_PROP. Declare Module KI : KNOT_INPUT__MIXVARIANT_HERED_PROP. Parameter knot : Type. End KNOT__MIXVARIANT_HERED_PROP. Module Knot_CoContraVariantHeredTOthRel (KI': KNOT_INPUT__COCONTRAVARIANT_HERED_T_OTH_REL): KNOT__COCONTRAVARIANT_HERED_T_OTH_REL with Module KI:=KI'. Module Export KI:=KI'. Module Export Input. End Input. End Knot_CoContraVariantHeredTOthRel. Module Knot_CovariantHeredPropOthRel (KI':KNOT_INPUT__COVARIANT_HERED_PROP_OTH_REL) : KNOT__COVARIANT_HERED_PROP_OTH_REL with Module KI:=KI'. Module Export KI:=KI'. Module Export Input. Definition F: functor. Admitted. Definition other := KI.other. Definition T := Prop. End Input. Module K0 := knot_full_variant.Knot_MixVariantHeredTOthRel(Input). Module Output <: knot_full_variant.KNOT_FULL_OUTPUT with Module KI := Input. Module KI := Input. Module K0 := K0. End Output. End Knot_CovariantHeredPropOthRel. Module Knot_CovariantHeredPropOth (KI':KNOT_INPUT__COVARIANT_HERED_PROP_OTH) : KNOT__COVARIANT_HERED_PROP_OTH with Module KI:=KI'. Module Export KI:=KI'. Module Export Input. Definition F: functor. Admitted. Definition other := KI.other. Definition T := Prop. End Input. Module K0 := knot_full_variant.Knot_MixVariantHeredTOthRel(Input). Module Output <: knot_full_variant.KNOT_FULL_OUTPUT with Module KI := Input. Module KI := Input. Module K0 := K0. End Output. End Knot_CovariantHeredPropOth. Module Knot_CovariantHeredProp (KI':KNOT_INPUT__COVARIANT_HERED_PROP) : KNOT__COVARIANT_HERED_PROP with Module KI:=KI'. Module Export KI:=KI'. Module Export Input. Definition F: functor. Admitted. Definition other := unit. Definition T := Prop. End Input. Module K0 := knot_full_variant.Knot_MixVariantHeredTOthRel(Input). Module Output <: knot_full_variant.KNOT_FULL_OUTPUT with Module KI := Input. Module KI := Input. Module K0 := K0. End Output. End Knot_CovariantHeredProp. Module Knot_MixVariantHeredProp (KI':KNOT_INPUT__MIXVARIANT_HERED_PROP) : KNOT__MIXVARIANT_HERED_PROP with Module KI:=KI'. Module Export KI:=KI'. Module Export Input. Definition F: functor. Admitted. Definition other := unit. Definition T := Prop. End Input. Module K0 := knot_full_variant.Knot_MixVariantHeredTOthRel(Input). Module Output <: knot_full_variant.KNOT_FULL_OUTPUT with Module KI := Input. Module KI := Input. Module K0 := K0. End Output. Module K := knot_full_variant.KnotFull(Input)(Output). Definition knot := K.knot. End Knot_MixVariantHeredProp. Import VST.msl.sepalg. Section SA_LOWER. Variable A : Type. Instance Join_lower: Join (option A). Admitted. Instance Perm_lower: @Perm_alg (option A) Join_lower. Admitted. Instance Sep_lower: @Sep_alg _ Join_lower. Admitted. End SA_LOWER. Existing Instance Join_lower. Existing Instance Perm_lower. Existing Instance Sep_lower. Module Type KNOT_FULL_BASIC_INPUT. End KNOT_FULL_BASIC_INPUT. Module Type KNOT_FULL_SA_INPUT. Declare Module KI: KNOT_FULL_BASIC_INPUT. End KNOT_FULL_SA_INPUT. Import VST.msl.boolean_alg. Module Share : SHARE_MODEL := tree_shares.Share. Definition share : Type. exact (Share.t). Defined. Export MixVariantFunctorGenerator. Definition nonempty_share (sh: share) := sepalg.nonidentity sh. Definition readable_share (sh: share) := nonempty_share (Share.glb Share.Rsh sh). Import VST.msl.ghost. Module Type ADR_VAL. Parameter address : Type. Parameter kind: Type. End ADR_VAL. Module Type ADR_VAL0. Parameter address : Type. Parameter kind: Type. End ADR_VAL0. Module SimpleAdrVal (AV0: ADR_VAL0) <: ADR_VAL with Definition address := AV0.address with Definition kind := AV0.kind. Import AV0. Definition address := address. Definition kind := kind. End SimpleAdrVal. Inductive TypeTree: Type := | ConstType: Type -> TypeTree | Mpred: TypeTree | DependentType: nat -> TypeTree | ProdType: TypeTree -> TypeTree -> TypeTree | ArrowType: TypeTree -> TypeTree -> TypeTree | PiType: forall (I : Type), (I -> TypeTree) -> TypeTree. Definition dependent_type_functor_rec (ts: list Type): TypeTree -> functor. Admitted. Definition fpreds: functor. Admitted. Section Finmap. Definition finmap A := list (option A). Import ListNotations. Definition finmap_get {A} (m : finmap A) k := nth k m None. Context {A} {J: Join A}. Inductive finmap_join: Join (finmap A) := | finmap_join_nil_l m: finmap_join [] m m | finmap_join_nil_r m: finmap_join m [] m | finmap_join_cons a1 a2 m1 m2 a3 m3: join a1 a2 a3 -> finmap_join m1 m2 m3 -> finmap_join (a1 :: m1) (a2 :: m2) (a3 :: m3). Global Instance Perm_finmap {P: Perm_alg A} : @Perm_alg _ finmap_join. Admitted. Global Instance Sep_finmap {S: Sep_alg A} : @Sep_alg _ finmap_join. Admitted. End Finmap. Instance finmap_RA {RA: Ghost} : Ghost := { valid m := forall i a, finmap_get m i = Some a -> valid a; Join_G := finmap_join }. admit. Defined. Instance Global_Ghost {I} {RAs: I -> Ghost}: Ghost := { G := forall i, finmap (@G (RAs i)); valid m := forall i, @valid finmap_RA (m i) }. admit. Defined. Module Type STRAT_MODEL. Declare Module AV : ADR_VAL. End STRAT_MODEL. Module StratModel (AV' : ADR_VAL) : STRAT_MODEL with Module AV:=AV'. Module AV := AV'. Import AV. Definition preds: functor. Admitted. Inductive res (PRED : Type) : Type := | NO': forall sh: Share.t, ~(readable_share sh) -> res PRED | YES': forall sh: Share.t, readable_share sh -> kind -> preds PRED -> res PRED | PURE': kind -> preds PRED -> res PRED. Definition res_fmap (A B:Type) (f:A->B) (g:B->A)(x:res A) : res B. Admitted. Lemma ff_res : functorFacts res res_fmap. Admitted. Definition f_res : functor. exact (Functor ff_res). Defined. Inductive res_join (PRED : Type) : f_res PRED -> f_res PRED -> f_res PRED -> Prop := | res_join_NO1 : forall sh1 nsh1 sh2 nsh2 sh3 nsh3, join sh1 sh2 sh3 -> res_join PRED (NO' PRED sh1 nsh1) (NO' PRED sh2 nsh2) (NO' PRED sh3 nsh3) | res_join_NO2 : forall sh1 nsh1 sh2 rsh2 sh3 rsh3 k p, join sh1 sh2 sh3 -> res_join PRED (NO' PRED sh1 nsh1) (YES' PRED sh2 rsh2 k p) (YES' PRED sh3 rsh3 k p) | res_join_NO3 : forall sh1 rsh1 sh2 nsh2 sh3 rsh3 k p, join sh1 sh2 sh3 -> res_join PRED (YES' PRED sh1 rsh1 k p) (NO' PRED sh2 nsh2) (YES' PRED sh3 rsh3 k p) | res_join_YES : forall sh1 rsh1 sh2 rsh2 sh3 rsh3 k p, join sh1 sh2 sh3 -> res_join PRED (YES' PRED sh1 rsh1 k p) (YES' PRED sh2 rsh2 k p) (YES' PRED sh3 rsh3 k p) | res_join_PURE : forall k p, res_join PRED (PURE' PRED k p) (PURE' PRED k p) (PURE' PRED k p). Instance Join_res (PRED: Type) : Join (res PRED). exact (res_join PRED). Defined. Instance sa_rj : forall PRED, @Sep_alg _ (res_join PRED). Admitted. Inductive ghost (PRED : Type) : Type := GHOST' I (RAs: I -> Ghost) (g: @G Global_Ghost) (pds: I -> nat -> option (fpreds PRED)) (Hv: ghost.valid g) (dom: forall i n pp, pds i n = Some pp -> exists a, finmap_get (g i) n = Some a). Program Definition ghost_fmap (A B:Type) (f:A->B) (g:B->A)(x:ghost A) : ghost B := match x with | GHOST' _ RAs a pds _ _ => GHOST' _ _ RAs a (fmap (ffunc (fconst _) (ffunc (fconst _) (foption fpreds))) f g pds) _ _ end. Admit Obligations. Lemma ff_ghost : functorFacts ghost ghost_fmap. Admitted. Definition f_ghost : functor. exact (Functor ff_ghost). Defined. Inductive ghost_join (PRED : Type) : f_ghost PRED -> f_ghost PRED -> f_ghost PRED -> Prop := | ghost_join_I : forall A (RAs : A -> Ghost) a b c pdsa pdsb pdsc Hva Hvb Hvc doma domb domc, join a b c -> join pdsa pdsb pdsc -> ghost_join PRED (GHOST' PRED _ RAs a pdsa Hva doma) (GHOST' PRED _ RAs b pdsb Hvb domb) (GHOST' PRED _ RAs c pdsc Hvc domc). Instance Join_ghost (PRED: Type) : Join (ghost PRED). exact (ghost_join PRED). Defined. Instance sa_gj : forall PRED, @Sep_alg _ (ghost_join PRED). Admitted. Definition valid' A (w: (address -> res A) * ghost A) : Prop. Admitted. Lemma valid'_res_map : forall A B f g m, valid' A m -> valid' B (fmap f_res f g oo fst m, fmap f_ghost f g (snd m)). Admitted. Definition pre_rmap (A:Type) := { m:(address -> res A) * ghost A | valid' A m }. Definition f_pre_rmap : functor. exact (fsubset (fpair (ffunc (fconst address) f_res) f_ghost) _ valid'_res_map). Defined. Instance Sep_pre_rmap (A: Type): Sep_alg (pre_rmap A). Admitted. Lemma pre_rmap_core: forall A (m : f_pre_rmap A), exists P, core m = exist (valid' A) (core (proj1_sig m)) P. Admitted. End StratModel. Module Type RMAPS. Declare Module AV:ADR_VAL. Parameter rmap : Type. Axiom ag_rmap: ageable rmap. End RMAPS. Module Rmaps (AV':ADR_VAL): RMAPS with Module AV:=AV'. Module Export AV:=AV'. Module Export TyF. End TyF. Module TyFSA <: KNOT_FULL_SA_INPUT with Module KI:=TyF. Module KI := TyF. End TyFSA. Module K := Knot_MixVariantHeredProp(TyF). Definition rmap := K.knot. Instance ag_rmap : ageable rmap. Admitted. End Rmaps. Import VST.veric.base. Inductive kind : Type := VAL : memval -> kind | LK : Z -> kind | CT: Z -> kind | FUN: funsig -> calling_convention -> kind. Module CompCert_AV <: ADR_VAL. Definition address := address. Definition kind := kind. End CompCert_AV. Module R := Rmaps (CompCert_AV). Export R. Section cuof. Context (cenv: composite_env). Definition composite_env_complete_legal_cosu_type: Prop. Admitted. End cuof. Definition hardware_alignof_env_consistent (cenv: composite_env) (ha_env: PTree.t Z): Prop. Admitted. Definition hardware_alignof_env_complete (cenv: composite_env) (ha_env: PTree.t Z): Prop. Admitted. Module Type LEGAL_ALIGNAS. Parameter legal_alignas_obs: Type. End LEGAL_ALIGNAS. Module LegalAlignasDefsGen (LegalAlignas: LEGAL_ALIGNAS). Import LegalAlignas. Definition legal_alignas_env_consistent (cenv: composite_env) (ha_env: PTree.t Z) (la_env: PTree.t legal_alignas_obs): Prop. Admitted. Definition legal_alignas_env_complete (cenv: composite_env) (la_env: PTree.t legal_alignas_obs): Prop. Admitted. Definition legal_alignas_env_sound (cenv: composite_env) (ha_env: PTree.t Z) (la_env: PTree.t legal_alignas_obs): Prop. Admitted. End LegalAlignasDefsGen. Module Type LEGAL_ALIGNAS_FACTS. Declare Module LegalAlignas: LEGAL_ALIGNAS. Module LegalAlignasDefs := LegalAlignasDefsGen (LegalAlignas). Export LegalAlignas. Export LegalAlignasDefs. End LEGAL_ALIGNAS_FACTS. Module LegalAlignasStrong <: LEGAL_ALIGNAS. Section legal_alignas. Definition legal_alignas_obs: Type. Admitted. End legal_alignas. End LegalAlignasStrong. Module LegalAlignasStrongFacts: LEGAL_ALIGNAS_FACTS with Module LegalAlignas := LegalAlignasStrong. Module LegalAlignas := LegalAlignasStrong. Module LegalAlignasDefs := LegalAlignasDefsGen (LegalAlignas). End LegalAlignasStrongFacts. Module Export LegalAlignasFacts := LegalAlignasStrongFacts. Structure Lift := mkLift { lift_S: Type; lift_T: Type; lift_prod : Type; lift_last: Type; lifted:> Type; lift_curry: lift_T -> lift_prod -> lift_last; lift_uncurry_open: ((lift_S -> lift_prod) -> (lift_S -> lift_last)) -> lifted }. Definition Tend (S: Type) (A: Type) := mkLift S A unit A (S -> A) (fun f _ => f) (fun f => f (fun _: S => tt)). Canonical Structure Tarrow (A: Type) (H: Lift) := mkLift (lift_S H) (A -> lift_T H) (prod A (lift_prod H)) (lift_last H) ((lift_S H -> A) -> lifted H) (fun f x => match x with (x1,x2) => lift_curry H (f x1) x2 end) (fun f x => lift_uncurry_open H (fun y: lift_S H -> lift_prod H => f (fun z => (x z, y z)))). Set Implicit Arguments. Definition liftx {H: Lift} (f: lift_T H) : lifted H. Admitted. Notation "'`' x" := (liftx x) (at level 9). Notation "'`(' x ')'" := (liftx (x : _)). Module Export Map. Section map. Variables (B : Type). Definition t := positive -> option B. Definition get (h: t) (a:positive) : option B. Admitted. End map. Definition genviron := Map.t block. Definition venviron := Map.t (block * type). Definition tenviron := Map.t val. Inductive environ : Type := mkEnviron: forall (ge: genviron) (ve: venviron) (te: tenviron), environ. Definition te_of (rho: environ) : tenviron. Admitted. Definition mpred := pred rmap. Definition AssertTT (A: TypeTree): TypeTree. Admitted. Definition super_non_expansive {A: TypeTree} (P: forall ts, dependent_type_functor_rec ts (AssertTT A) mpred): Prop. Admitted. Inductive funspec := mk_funspec: funsig -> calling_convention -> forall (A: TypeTree) (P Q: forall ts, dependent_type_functor_rec ts (AssertTT A) mpred) (P_ne: super_non_expansive P) (Q_ne: super_non_expansive Q), funspec. Definition composite_legal_fieldlist (co: composite): Prop. Admitted. Definition composite_env_legal_fieldlist env := forall (id : positive) (co : composite), env ! id = Some co -> composite_legal_fieldlist co. Class compspecs := mkcompspecs { cenv_cs : composite_env; cenv_consistent: composite_env_consistent cenv_cs; cenv_legal_fieldlist: composite_env_legal_fieldlist cenv_cs; cenv_legal_su: composite_env_complete_legal_cosu_type cenv_cs; ha_env_cs: PTree.t Z; ha_env_cs_consistent: hardware_alignof_env_consistent cenv_cs ha_env_cs; ha_env_cs_complete: hardware_alignof_env_complete cenv_cs ha_env_cs; la_env_cs: PTree.t legal_alignas_obs; la_env_cs_consistent: legal_alignas_env_consistent cenv_cs ha_env_cs la_env_cs; la_env_cs_complete: legal_alignas_env_complete cenv_cs la_env_cs; la_env_cs_sound: legal_alignas_env_sound cenv_cs ha_env_cs la_env_cs }. Existing Class composite_env. Existing Instance cenv_cs. Arguments sizeof {env} !t / . Arguments alignof {env} !t / . Inductive Annotation := WeakAnnotation : (environ -> mpred) -> Annotation | StrongAnnotation : (environ -> mpred) -> Annotation. Inductive tycontext : Type := mk_tycontext : forall (tyc_temps: PTree.t (type * bool)) (tyc_vars: PTree.t type) (tyc_ret: type) (tyc_globty: PTree.t type) (tyc_globsp: PTree.t funspec) (tyc_annot: PTree.t Annotation), tycontext. Module Export Cop2. Definition sem_cast (t1 t2: type): val -> option val. Admitted. Definition sem_unary_operation (op: Cop.unary_operation) (ty: type) (v: val): option val. Admitted. Definition sem_binary_operation' {CS: compspecs} (op: Cop.binary_operation) (t1:type) (t2: type) : val -> val -> option val. Admitted. Definition force_val (v: option val) : val. Admitted. Definition force_val1 (f: val -> option val) (v: val) := force_val (f v). Definition force_val2 (f: val -> val -> option val) (v1 v2: val) := force_val (f v1 v2). Canonical Structure LiftEnviron := Tend environ. Definition eval_id (id: ident) (rho: environ) := force_val (Map.get (te_of rho) id). Definition eval_unop (op: Cop.unary_operation) (t1 : type) := force_val1 (Cop2.sem_unary_operation op t1). Definition eval_binop {CS:compspecs} (op: Cop.binary_operation) (t1 t2 : type) := force_val2 (Cop2.sem_binary_operation' op t1 t2). Definition eval_cast (t1 t2 : type) := force_val1 (sem_cast t1 t2). Definition eval_field {CS: compspecs} (ty: type) (fld: ident) : val -> val. Admitted. Definition eval_var (id:ident) (ty: type) (rho: environ) : val. Admitted. Fixpoint eval_expr {CS: compspecs} (e: expr) : environ -> val := match e with | Econst_int i ty => `(Vint i) | Econst_long i ty => `(Vlong i) | Econst_float f ty => `(Vfloat f) | Econst_single f ty => `(Vsingle f) | Etempvar id ty => eval_id id | Eaddrof a ty => eval_lvalue a | Eunop op a ty => `(eval_unop op (typeof a)) (eval_expr a) | Ebinop op a1 a2 ty => `(eval_binop op (typeof a1) (typeof a2)) (eval_expr a1) (eval_expr a2) | Ecast a ty => `(eval_cast (typeof a) ty) (eval_expr a) | Evar id ty => eval_var id ty | Ederef a ty => eval_expr a | Efield a i ty => `(eval_field (typeof a) i) (eval_lvalue a) | Esizeof t ty => `(Vptrofs (Ptrofs.repr (sizeof t))) | Ealignof t ty => `(Vptrofs (Ptrofs.repr (alignof t))) end with eval_lvalue {CS: compspecs} (e: expr) : environ -> val := match e with | Evar id ty => eval_var id ty | Ederef a ty => eval_expr a | Efield a i ty => `(eval_field (typeof a) i) (eval_lvalue a) | _ => `Vundef end. Fixpoint eval_exprlist {CS: compspecs} (et: list type) (el:list expr) : environ -> list val := match et, el with | t::et', e::el' => `(@cons val) (`force_val (`(sem_cast (typeof e) t) (eval_expr e))) (eval_exprlist et' el') | _, _ => `nil end. Inductive tc_error := | op_result_type : expr -> tc_error | arg_type : expr -> tc_error | pp_compare_size_0 : type -> tc_error | pp_compare_size_exceed : type -> tc_error | invalid_cast : type -> type -> tc_error | invalid_cast_result : type -> type -> tc_error | invalid_expression : expr -> tc_error | var_not_in_tycontext : tycontext -> positive -> tc_error | mismatch_context_type : type -> type -> tc_error | deref_byvalue : type -> tc_error | volatile_load : type -> tc_error | invalid_field_access : expr -> tc_error | invalid_composite_name: ident -> tc_error | invalid_struct_field : ident -> ident -> tc_error | invalid_lvalue : expr -> tc_error | wrong_signature : tc_error | int_or_ptr_type_error : tc_error | miscellaneous_typecheck_error : tc_error. Inductive tc_assert := | tc_FF: tc_error -> tc_assert | tc_TT : tc_assert | tc_andp': tc_assert -> tc_assert -> tc_assert | tc_orp' : tc_assert -> tc_assert -> tc_assert | tc_nonzero': expr -> tc_assert | tc_iszero': expr -> tc_assert | tc_isptr: expr -> tc_assert | tc_test_eq': expr -> expr -> tc_assert | tc_test_order': expr -> expr -> tc_assert | tc_ilt': expr -> int -> tc_assert | tc_llt': expr -> int64 -> tc_assert | tc_Zle: expr -> Z -> tc_assert | tc_Zge: expr -> Z -> tc_assert | tc_samebase: expr -> expr -> tc_assert | tc_nodivover': expr -> expr -> tc_assert | tc_initialized: PTree.elt -> type -> tc_assert | tc_nosignedover: (Z->Z->Z) -> expr -> expr -> tc_assert. Definition isptr v := match v with | Vptr _ _ => True | _ => False end. Definition tc_val (ty: type) : val -> Prop. Admitted. Definition valid_pointer (p: val) : mpred. Admitted. Definition weak_valid_pointer (p: val) : mpred. Admitted. Export VST.msl.seplog. Instance Nveric: NatDed mpred. Admitted. Definition denote_tc_iszero v : mpred := match v with | Vint i => prop (is_true (Int.eq i Int.zero)) | Vlong i => prop (is_true (Int64.eq (Int64.repr (Int64.unsigned i)) Int64.zero)) | _ => FF end. Definition denote_tc_nonzero v : mpred := match v with | Vint i => prop (i <> Int.zero) | Vlong i =>prop (i <> Int64.zero) | _ => FF end. Definition denote_tc_igt i v : mpred := match v with | Vint i1 => prop (Int.unsigned i1 < Int.unsigned i) | _ => FF end. Definition denote_tc_lgt l v : mpred := match v with | Vlong l1 => prop (Int64.unsigned l1 < Int64.unsigned l) | _ => FF end. Definition Zoffloat (f:float): option Z. Admitted. Definition Zofsingle (f: float32): option Z. Admitted. Definition denote_tc_Zge z v : mpred := match v with | Vfloat f => match Zoffloat f with | Some n => prop (z >= n) | None => FF end | Vsingle f => match Zofsingle f with | Some n => prop (z >= n) | None => FF end | _ => FF end. Definition denote_tc_Zle z v : mpred := match v with | Vfloat f => match Zoffloat f with | Some n => prop (z <= n) | None => FF end | Vsingle f => match Zofsingle f with | Some n => prop (z <= n) | None => FF end | _ => FF end. Definition sameblock v1 v2 : bool := match v1, v2 with | Vptr b1 _, Vptr b2 _ => peq b1 b2 | _, _ => false end. Definition denote_tc_samebase v1 v2 : mpred := prop (is_true (sameblock v1 v2)). Definition denote_tc_nodivover v1 v2 : mpred := match v1, v2 with | Vint n1, Vint n2 => prop (~(n1 = Int.repr Int.min_signed /\ n2 = Int.mone)) | Vlong n1, Vlong n2 => prop (~(n1 = Int64.repr Int64.min_signed /\ n2 = Int64.mone)) | Vint n1, Vlong n2 => TT | Vlong n1, Vint n2 => prop (~ (n1 = Int64.repr Int64.min_signed /\ n2 = Int.mone)) | _ , _ => FF end. Definition denote_tc_nosignedover (op: Z->Z->Z) v1 v2 : mpred := match v1,v2 with | Vint n1, Vint n2 => prop (Int.min_signed <= op (Int.signed n1) (Int.signed n2) <= Int.max_signed) | Vlong n1, Vlong n2 => prop (Int64.min_signed <= op (Int64.signed n1) (Int64.signed n2) <= Int64.max_signed) | Vint n1, Vlong n2 => prop (Int64.min_signed <= op (Int.signed n1) (Int64.signed n2) <= Int64.max_signed) | Vlong n1, Vint n2 => prop (Int64.min_signed <= op (Int64.signed n1) (Int.signed n2) <= Int64.max_signed) | _, _ => FF end. Definition denote_tc_initialized id ty rho : mpred := prop (exists v, Map.get (te_of rho) id = Some v /\ tc_val ty v). Definition denote_tc_isptr v : mpred := prop (isptr v). Definition test_eq_ptrs v1 v2 : mpred := if sameblock v1 v2 then (andp (weak_valid_pointer v1) (weak_valid_pointer v2)) else (andp (valid_pointer v1) (valid_pointer v2)). Definition test_order_ptrs v1 v2 : mpred := if sameblock v1 v2 then (andp (weak_valid_pointer v1) (weak_valid_pointer v2)) else FF. Definition denote_tc_test_eq v1 v2 : mpred := match v1, v2 with | Vint i, Vint j => if Archi.ptr64 then FF else andp (prop (i = Int.zero)) (prop (j = Int.zero)) | Vlong i, Vlong j => if Archi.ptr64 then andp (prop (i = Int64.zero)) (prop (j = Int64.zero)) else FF | Vint i, Vptr _ _ => if Archi.ptr64 then FF else andp (prop (i = Int.zero)) (weak_valid_pointer v2) | Vlong i, Vptr _ _ => if Archi.ptr64 then andp (prop (i = Int64.zero)) (weak_valid_pointer v2) else FF | Vptr _ _, Vint i => if Archi.ptr64 then FF else andp (prop (i = Int.zero)) (weak_valid_pointer v1) | Vptr _ _, Vlong i => if Archi.ptr64 then andp (prop (i = Int64.zero)) (weak_valid_pointer v1) else FF | Vptr _ _, Vptr _ _ => test_eq_ptrs v1 v2 | _, _ => FF end. Definition denote_tc_test_order v1 v2 : mpred := match v1, v2 with | Vint i, Vint j => if Archi.ptr64 then FF else andp (prop (i = Int.zero)) (prop (j = Int.zero)) | Vlong i, Vlong j => if Archi.ptr64 then andp (prop (i = Int64.zero)) (prop (j = Int64.zero)) else FF | Vptr _ _, Vptr _ _ => test_order_ptrs v1 v2 | _, _ => FF end. Definition typecheck_error (e: tc_error) : Prop. Admitted. Fixpoint denote_tc_assert {CS: compspecs} (a: tc_assert) : environ -> mpred := match a with | tc_FF msg => `(prop (typecheck_error msg)) | tc_TT => TT | tc_andp' b c => fun rho => andp (denote_tc_assert b rho) (denote_tc_assert c rho) | tc_orp' b c => `orp (denote_tc_assert b) (denote_tc_assert c) | tc_nonzero' e => `denote_tc_nonzero (eval_expr e) | tc_isptr e => `denote_tc_isptr (eval_expr e) | tc_test_eq' e1 e2 => `denote_tc_test_eq (eval_expr e1) (eval_expr e2) | tc_test_order' e1 e2 => `denote_tc_test_order (eval_expr e1) (eval_expr e2) | tc_ilt' e i => `(denote_tc_igt i) (eval_expr e) | tc_llt' e i => `(denote_tc_lgt i) (eval_expr e) | tc_Zle e z => `(denote_tc_Zge z) (eval_expr e) | tc_Zge e z => `(denote_tc_Zle z) (eval_expr e) | tc_samebase e1 e2 => `denote_tc_samebase (eval_expr e1) (eval_expr e2) | tc_nodivover' v1 v2 => `denote_tc_nodivover (eval_expr v1) (eval_expr v2) | tc_initialized id ty => denote_tc_initialized id ty | tc_iszero' e => `denote_tc_iszero (eval_expr e) | tc_nosignedover op e1 e2 => `(denote_tc_nosignedover op) (eval_expr e1) (eval_expr e2) end. Definition fool' := @map _ Type (fun it : ident * type => mpred). ```
Intermediate Coq File (useful for debugging if minimization did not go as far as you wanted) (truncated to 8.0KiB; full 30KiB file on GitHub Actions Artifacts under tmp.v) ```coq (* -*- mode: coq; coq-prog-args: ("-emacs" "-w" "none" "-R" "/github/workspace/VST/compcert" "compcert" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/VST/msl" "VST.msl" "-Q" "/github/workspace/VST/sepcomp" "VST.sepcomp" "-Q" "/github/workspace/VST/veric" "VST.veric" "-Q" "/github/workspace/VST/floyd" "VST.floyd" "-Q" "/github/workspace/VST/progs" "VST.progs" "-Q" "/github/workspace/VST/concurrency" "VST.concurrency" "-Q" "/github/workspace/VST/ccc26x86" "VST.ccc26x86" "-Q" "/github/workspace/VST/wand_demo" "wand_demo" "-Q" "/github/workspace/VST/sha" "sha" "-Q" "/github/workspace/VST/fcf" "fcf" "-Q" "/github/workspace/VST/hmacfcf" "hmacfcf" "-Q" "/github/workspace/VST/tweetnacl20140427" "tweetnacl20140427" "-Q" "/github/workspace/VST/hmacdrbg" "hmacdrbg" "-Q" "/github/workspace/VST/aes" "aes" "-Q" "/github/workspace/VST/mailbox" "mailbox" "-top" "bug_01") -*- *) (* File reduced by coq-bug-minimizer from original input, then from 1507 lines to 166 lines, then from 179 lines to 1613 lines, then from 1618 lines to 283 lines, then from 296 lines to 1447 lines, then from 1447 lines to 305 lines, then from 318 lines to 2145 lines, then from 2137 lines to 360 lines, then from 373 lines to 520 lines, then from 523 lines to 388 lines, then from 401 lines to 1790 lines, then from 1792 lines to 448 lines, then from 461 lines to 1138 lines, then from 1142 lines to 444 lines, then from 457 lines to 1784 lines, then from 1789 lines to 481 lines, then from 494 lines to 2397 lines, then from 2398 lines to 682 lines, then from 689 lines to 676 lines, then from 689 lines to 1896 lines, then from 1895 lines to 680 lines, then from 693 lines to 779 lines, then from 784 lines to 693 lines, then from 706 lines to 1627 lines, then from 1629 lines to 699 lines, then from 712 lines to 1325 lines, then from 1329 lines to 717 lines, then from 731 lines to 1132 lines, then from 1138 lines to 704 lines, then from 718 lines to 1032 lines, then from 1037 lines to 706 lines, then from 720 lines to 2384 lines, then from 2385 lines to 993 lines, then from 1007 lines to 2529 lines, then from 2521 lines to 919 lines *) (* coqc version 8.7.2 (February 2022) compiled on Feb 7 2022 16:37:53 with OCaml 4.09.1 coqtop version 8.7.2 (February 2022) Modules that could not be inlined: VST.msl.tree_shares, VST.msl.predicates_hered Expected coqc runtime on this file: 1.011 sec *) Axiom proof_admitted : False. Tactic Notation "admit" := abstract case proof_admitted. Module Export knot_full_variant. Require VST.msl.base. Import VST.msl.base. Require VST.msl.ageable. Import VST.msl.ageable. Require VST.msl.functors. Import VST.msl.functors. Import VST.msl.functors.MixVariantFunctor. Module Type KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL. Parameter F : functor. End KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL. Module Type KNOT__MIXVARIANT_HERED_T_OTH_REL. Declare Module KI: KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL. Parameter knot:Type. End KNOT__MIXVARIANT_HERED_T_OTH_REL. Module Knot_MixVariantHeredTOthRel (KI':KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL) : KNOT__MIXVARIANT_HERED_T_OTH_REL with Module KI:=KI'. Module KI := KI'. Import KI. Definition sinv (n:nat) : Type. Admitted. Definition knot := { n:nat & F (sinv n) }. Section stratifies. End stratifies. End Knot_MixVariantHeredTOthRel. Module Export KnotLemmas1. End KnotLemmas1. Module Export KnotLemmas2. End KnotLemmas2. Module KnotLemmas_MixVariantHeredTOthRel (K : KNOT__MIXVARIANT_HERED_T_OTH_REL). End KnotLemmas_MixVariantHeredTOthRel. Module Type KNOT_FULL_OUTPUT. Declare Module KI: KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL. Declare Module K0: KNOT__MIXVARIANT_HERED_T_OTH_REL with Module KI := KI. End KNOT_FULL_OUTPUT. Module Type KNOT_FULL. Declare Module KI: KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL. Declare Module KO: KNOT_FULL_OUTPUT with Module KI := KI. Definition knot : Type. Admitted. End KNOT_FULL. Module Type KNOT_FULL_LEMMAS. End KNOT_FULL_LEMMAS. Module KnotFull (KI': KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL) (KO': KNOT_FULL_OUTPUT with Module KI := KI'): KNOT_FULL with Module KI := KI' with Module KO:=KO'. Module Export KI:=KI'. Module Export KO:=KO'. Definition knot: Type. exact (KO.K0.knot). Defined. End KnotFull. Require VST.msl.sepalg_generators. Require VST.msl.seplog. Require VST.veric.base. Require VST.msl.ghost. Require VST.msl.predicates_hered. Require VST.msl.tree_shares. Import VST.msl.predicates_hered. Module Type KNOT_INPUT__COCONTRAVARIANT_HERED_T_OTH_REL. End KNOT_INPUT__COCONTRAVARIANT_HERED_T_OTH_REL. Module Type KNOT__COCONTRAVARIANT_HERED_T_OTH_REL. Declare Module KI: KNOT_INPUT__COCONTRAVARIANT_HERED_T_OTH_REL. End KNOT__COCONTRAVARIANT_HERED_T_OTH_REL. Module Type KNOT_INPUT__COVARIANT_HERED_PROP_OTH_REL. Parameter other : Type. End KNOT_INPUT__COVARIANT_HERED_PROP_OTH_REL. Module Type KNOT__COVARIANT_HERED_PROP_OTH_REL. Declare Module KI : KNOT_INPUT__COVARIANT_HERED_PROP_OTH_REL. End KNOT__COVARIANT_HERED_PROP_OTH_REL. Module Type KNOT_INPUT__COVARIANT_HERED_PROP_OTH. Parameter other : Type. End KNOT_INPUT__COVARIANT_HERED_PROP_OTH. Module Type KNOT__COVARIANT_HERED_PROP_OTH. Declare Module KI : KNOT_INPUT__COVARIANT_HERED_PROP_OTH. End KNOT__COVARIANT_HERED_PROP_OTH. Module Type KNOT_INPUT__COVARIANT_HERED_PROP. End KNOT_INPUT__COVARIANT_HERED_PROP. Module Type KNOT__COVARIANT_HERED_PROP. Declare Module KI : KNOT_INPUT__COVARIANT_HERED_PROP. End KNOT__COVARIANT_HERED_PROP. Module Type KNOT_INPUT__MIXVARIANT_HERED_PROP. End KNOT_INPUT__MIXVARIANT_HERED_PROP. Module Type KNOT__MIXVARIANT_HERED_PROP. Declare Module KI : KNOT_INPUT__MIXVARIANT_HERED_PROP. Parameter knot : Type. End KNOT__MIXVARIANT_HERED_PROP. Module Knot_CoContraVariantHeredTOthRel (KI': KNOT_INPUT__COCONTRAVARIANT_HERED_T_OTH_REL): KNOT__COCONTRAVARIANT_HERED_T_OTH_REL with Module KI:=KI'. Module Export KI:=KI'. Module Export Input. End Input. End Knot_CoContraVariantHeredTOthRel. Module Knot_CovariantHeredPropOthRel (KI':KNOT_INPUT__COVARIANT_HERED_PROP_OTH_REL) : KNOT__COVARIANT_HERED_PROP_OTH_REL with Module KI:=KI'. Module Export KI:=KI'. Module Export Input. Definition F: functor. Admitted. Definition other := KI.other. Definition T := Prop. End Input. Module K0 := knot_full_variant.Knot_MixVariantHeredTOthRel(Input). Module Output <: knot_full_variant.KNOT_FULL_OUTPUT with Module KI := Input. Module KI := Input. Module K0 := K0. End Output. End Knot_CovariantHeredPropOthRel. Module Knot_CovariantHeredPropOth (KI':KNOT_INPUT__COVARIANT_HERED_PROP_OTH) : KNOT__COVARIANT_HERED_PROP_OTH with Module KI:=KI'. Module Export KI:=KI'. Module Export Input. Definition F: functor. Admitted. Definition other := KI.other. Definition T := Prop. End Input. Module K0 := knot_full_variant.Knot_MixVariantHeredTOthRel(Input). Module Output <: knot_full_variant.KNOT_FULL_OUTPUT with Module KI := Input. Module KI := Input. Module K0 := K0. End Output. End Knot_CovariantHeredPropOth. Module Knot_CovariantHeredProp (KI':KNOT_INPUT__COVARIANT_HERED_PROP) : KNOT__COVARIANT_HERED_PROP with Module KI:=KI'. Module Export KI:=KI'. Module Export Input. Definition F: functor. Admitted. Definition other := unit. Definition T := Prop. End Input. Module K0 := knot_full_variant.Knot_MixVariantHeredTOthRel(Input). Module Output <: knot_full_variant.KNOT_FULL_OUTPUT with Module KI := Input. Module KI := Input. Module K0 := K0. End Output. End Knot_CovariantHeredProp. Module Knot_MixVariantHeredProp (KI':KNOT_INPUT__MIXVARIANT_HERED_PROP) : KNOT__MIXVARIANT_HERED_PROP with Module KI:=KI'. Module Export KI:=KI'. Module Export Input. Definition F: functor. Admitted. Definition other := unit. Definition T := Prop. End Input. Module K0 := knot_full_variant.Knot_MixVariantHeredTOthRel(Input). Module Output <: knot_full_variant.KNOT_FULL_OUTPUT with Module KI := Input. Module KI := Input. Module K0 := K0. End Output. Module K := knot_full_variant.KnotFull(Input)(Output). Definition knot := K.knot. End Knot ```
Build Log (contains the Coq error message) (truncated to last 8.0KiB; full 309KiB file on GitHub Actions Artifacts under build.log) ``` VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert -compile veric/semax_call.v COQC veric/initialize.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqc MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqc.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert veric/initialize.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert -compile veric/initialize.v COQC veric/semax_prog.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqc MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqc.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert veric/semax_prog.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert -compile veric/semax_prog.v COQC veric/semax_ext.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqc MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqc.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert veric/semax_ext.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert -compile veric/semax_ext.v COQC veric/SeparationLogic.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqc MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqc.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert veric/SeparationLogic.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert -compile veric/SeparationLogic.v File "./veric/SeparationLogic.v", line 253, characters 58-63: Error: In environment it : ident * type The term "mpred" has type "Type@{max(VST.msl.predicates_hered.3, Set+1)}" while it is expected to have type "Type@{VST.veric.SeparationLogic.74}" (universe inconsistency). make: *** [Makefile:392: veric/SeparationLogic.vo] Error 1 ```
Minimization Log (truncated to last 8.0KiB; full 1.3MiB file on GitHub Actions Artifacts under bug.log) ``` l now attempt to admit [abstract ...]s Admitting [abstract ...] successful. Admitting [abstract ...] successful. Admitting [abstract ...] unsuccessful. Admitting [abstract ...] unsuccessful. I will now attempt to remove goals ending in [Abort.] Aborted removal successful. I will now attempt to remove unused Ltacs Ltac removal successful. I will now attempt to remove unused definitions Non-fatal error: Failed to remove definitions and preserve the error. Writing intermediate code to /github/workspace/cwd/tmp.v. The new error was: MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -R /github/workspace/VST/compcert compcert -Q /github/workspace/cwd Top -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -top bug_01 -R /tmp/tmp5ehlr6vs '' -q -compile /tmp/tmp5ehlr6vs/bug_01.v File "/tmp/tmp5ehlr6vs/bug_01.v", line 155, characters 2-68: Error: The field F is missing in bug_01.knot_full_variant.Knot_CovariantHeredPropOthRel.Input. I will now attempt to remove unused non-instance, non-canonical structure definitions Non-fatal error: Failed to remove non-instance definitions and preserve the error. Writing intermediate code to /github/workspace/cwd/tmp.v. The new error was: MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -R /github/workspace/VST/compcert compcert -Q /github/workspace/cwd Top -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -top bug_01 -R /tmp/tmp5_7xdoki '' -q -compile /tmp/tmp5_7xdoki/bug_01.v File "/tmp/tmp5_7xdoki/bug_01.v", line 155, characters 2-68: Error: The field F is missing in bug_01.knot_full_variant.Knot_CovariantHeredPropOthRel.Input. I will now attempt to remove unused variables Non-fatal error: Failed to remove variables and preserve the error. Writing intermediate code to /github/workspace/cwd/tmp.v. The new error was: MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -R /github/workspace/VST/compcert compcert -Q /github/workspace/cwd Top -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -top bug_01 -R /tmp/tmpiahsh74y '' -q -compile /tmp/tmpiahsh74y/bug_01.v File "/tmp/tmpiahsh74y/bug_01.v", line 31, characters 31-32: Error: The reference F was not found in the current environment. I will now attempt to remove unused contexts Context removal successful. I will now attempt to replace Obligation with Admit Obligations Admitting Obligations successful. Failed to do everything at once; trying one at a time. Admitting Obligations unsuccessful. No successful changes. I will now attempt to admit lemmas with Admitted Admitting lemmas successful. Failed to do everything at once; trying one at a time. Admitting lemmas unsuccessful. No successful changes. I will now attempt to admit definitions with Admitted Non-fatal error: Failed to admit definitions and preserve the error. Writing intermediate code to /github/workspace/cwd/tmp.v. The new error was: MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -R /github/workspace/VST/compcert compcert -Q /github/workspace/cwd Top -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -top bug_01 -R /tmp/tmps_ot5l_x '' -q -compile /tmp/tmps_ot5l_x/bug_01.v Timeout! (external) Failed to do everything at once; trying one at a time. Admitting definitions unsuccessful. No successful changes. I will now attempt to admit lemmas with admit. Defined Admitting lemmas successful. Failed to do everything at once; trying one at a time. Admitting lemmas unsuccessful. No successful changes. I will now attempt to admit definitions with admit. Defined Non-fatal error: Failed to admit definitions and preserve the error. Writing intermediate code to /github/workspace/cwd/tmp.v. The new error was: MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -R /github/workspace/VST/compcert compcert -Q /github/workspace/cwd Top -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -top bug_01 -R /tmp/tmpvbbzkv8f '' -q -compile /tmp/tmpvbbzkv8f/bug_01.v Timeout! (external) Failed to do everything at once; trying one at a time. Admitting definitions unsuccessful. No successful changes. I will now attempt to export modules Module exportation unsuccessful. I will now attempt to split imports and exports Import/Export splitting unsuccessful. I will now attempt to split := definitions One-line definition splitting unsuccessful. I will now attempt to remove all lines, one at a time ```

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross). If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

JasonGross commented 2 years ago

@coqbot minimize

cat > bug.v <<'EOF'
(* -*- mode: coq; coq-prog-args: ("-emacs" "-w" "none" "-R" "/github/workspace/VST/compcert" "compcert" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/VST/msl" "VST.msl" "-Q" "/github/workspace/VST/sepcomp" "VST.sepcomp" "-Q" "/github/workspace/VST/veric" "VST.veric" "-Q" "/github/workspace/VST/floyd" "VST.floyd" "-Q" "/github/workspace/VST/progs" "VST.progs" "-Q" "/github/workspace/VST/concurrency" "VST.concurrency" "-Q" "/github/workspace/VST/ccc26x86" "VST.ccc26x86" "-Q" "/github/workspace/VST/wand_demo" "wand_demo" "-Q" "/github/workspace/VST/sha" "sha" "-Q" "/github/workspace/VST/fcf" "fcf" "-Q" "/github/workspace/VST/hmacfcf" "hmacfcf" "-Q" "/github/workspace/VST/tweetnacl20140427" "tweetnacl20140427" "-Q" "/github/workspace/VST/hmacdrbg" "hmacdrbg" "-Q" "/github/workspace/VST/aes" "aes" "-Q" "/github/workspace/VST/mailbox" "mailbox" "-top" "bug_01") -*- *)
(* File reduced by coq-bug-minimizer from original input, then from 1507 lines to 166 lines, then from 179 lines to 1613 lines, then from 1618 lines to 283 lines, then from 296 lines to 1447 lines, then from 1447 lines to 305 lines, then from 318 lines to 2145 lines, then from 2137 lines to 360 lines, then from 373 lines to 520 lines, then from 523 lines to 388 lines, then from 401 lines to 1790 lines, then from 1792 lines to 448 lines, then from 461 lines to 1138 lines, then from 1142 lines to 444 lines, then from 457 lines to 1784 lines, then from 1789 lines to 481 lines, then from 494 lines to 2397 lines, then from 2398 lines to 682 lines, then from 689 lines to 676 lines, then from 689 lines to 1896 lines, then from 1895 lines to 680 lines, then from 693 lines to 779 lines, then from 784 lines to 693 lines, then from 706 lines to 1627 lines, then from 1629 lines to 699 lines, then from 712 lines to 1325 lines, then from 1329 lines to 717 lines, then from 731 lines to 1132 lines, then from 1138 lines to 704 lines, then from 718 lines to 1032 lines, then from 1037 lines to 706 lines, then from 720 lines to 2384 lines, then from 2385 lines to 993 lines, then from 1007 lines to 2529 lines, then from 2521 lines to 921 lines *)
(* coqc version 8.7.2 (February 2022) compiled on Feb 7 2022 16:37:53 with OCaml 4.09.1
   coqtop version 8.7.2 (February 2022)
   Modules that could not be inlined: VST.msl.tree_shares, VST.msl.predicates_hered
   Expected coqc runtime on this file: 1.011 sec *)
Axiom proof_admitted : False.
Tactic Notation "admit" := abstract case proof_admitted.
Module Export knot_full_variant.

Require VST.msl.base.
Import VST.msl.base.

Require VST.msl.ageable.
Import VST.msl.ageable.

Require VST.msl.functors.
Import VST.msl.functors.
Import VST.msl.functors.MixVariantFunctor.

Module Type KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL.
  Parameter F : functor.

End KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL.

Module Type KNOT__MIXVARIANT_HERED_T_OTH_REL.
  Declare Module KI: KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL.

  Parameter knot:Type.

End KNOT__MIXVARIANT_HERED_T_OTH_REL.

Module Knot_MixVariantHeredTOthRel (KI':KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL) :
  KNOT__MIXVARIANT_HERED_T_OTH_REL with Module KI:=KI'.
  Module KI := KI'.
  Import KI.
Definition sinv (n:nat) : Type.
Admitted.

  Definition knot := { n:nat & F (sinv n) }.

  Section stratifies.
  End stratifies.

End Knot_MixVariantHeredTOthRel.

Module Export KnotLemmas1.

End KnotLemmas1.

Module Export KnotLemmas2.

End KnotLemmas2.

Module KnotLemmas_MixVariantHeredTOthRel (K : KNOT__MIXVARIANT_HERED_T_OTH_REL).

End KnotLemmas_MixVariantHeredTOthRel.

Module Type KNOT_FULL_OUTPUT.
  Declare Module KI: KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL.
  Declare Module K0: KNOT__MIXVARIANT_HERED_T_OTH_REL with Module KI := KI.
End KNOT_FULL_OUTPUT.

Module Type KNOT_FULL.
  Declare Module KI: KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL.
  Declare Module KO: KNOT_FULL_OUTPUT with Module KI := KI.
Definition knot : Type.
Admitted.

End KNOT_FULL.

Module Type KNOT_FULL_LEMMAS.

End KNOT_FULL_LEMMAS.

Module KnotFull
  (KI': KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL)
  (KO': KNOT_FULL_OUTPUT with Module KI := KI'):
  KNOT_FULL with Module KI := KI' with Module KO:=KO'.
  Module Export KI:=KI'.
  Module Export KO:=KO'.
Definition knot: Type.
exact (KO.K0.knot).
Defined.

End KnotFull.
Require VST.msl.sepalg_generators.
Require VST.msl.seplog.
Require VST.veric.base.
Require VST.msl.ghost.
Require VST.msl.predicates_hered.
Require VST.msl.tree_shares.
Import VST.msl.predicates_hered.

Module Type KNOT_INPUT__COCONTRAVARIANT_HERED_T_OTH_REL.

End KNOT_INPUT__COCONTRAVARIANT_HERED_T_OTH_REL.

Module Type KNOT__COCONTRAVARIANT_HERED_T_OTH_REL.
  Declare Module KI: KNOT_INPUT__COCONTRAVARIANT_HERED_T_OTH_REL.

End KNOT__COCONTRAVARIANT_HERED_T_OTH_REL.

Module Type KNOT_INPUT__COVARIANT_HERED_PROP_OTH_REL.

  Parameter other : Type.

End KNOT_INPUT__COVARIANT_HERED_PROP_OTH_REL.

Module Type KNOT__COVARIANT_HERED_PROP_OTH_REL.
  Declare Module KI : KNOT_INPUT__COVARIANT_HERED_PROP_OTH_REL.

End KNOT__COVARIANT_HERED_PROP_OTH_REL.

Module Type KNOT_INPUT__COVARIANT_HERED_PROP_OTH.
  Parameter other : Type.

End KNOT_INPUT__COVARIANT_HERED_PROP_OTH.

Module Type KNOT__COVARIANT_HERED_PROP_OTH.
  Declare Module KI : KNOT_INPUT__COVARIANT_HERED_PROP_OTH.

End KNOT__COVARIANT_HERED_PROP_OTH.

Module Type KNOT_INPUT__COVARIANT_HERED_PROP.

End KNOT_INPUT__COVARIANT_HERED_PROP.

Module Type KNOT__COVARIANT_HERED_PROP.
  Declare Module KI : KNOT_INPUT__COVARIANT_HERED_PROP.

End KNOT__COVARIANT_HERED_PROP.

Module Type KNOT_INPUT__MIXVARIANT_HERED_PROP.

End KNOT_INPUT__MIXVARIANT_HERED_PROP.

Module Type KNOT__MIXVARIANT_HERED_PROP.
  Declare Module KI : KNOT_INPUT__MIXVARIANT_HERED_PROP.

  Parameter knot : Type.

End KNOT__MIXVARIANT_HERED_PROP.

Module Knot_CoContraVariantHeredTOthRel
  (KI': KNOT_INPUT__COCONTRAVARIANT_HERED_T_OTH_REL):
  KNOT__COCONTRAVARIANT_HERED_T_OTH_REL with Module KI:=KI'.
  Module Export KI:=KI'.

  Module Export Input.

  End Input.

End Knot_CoContraVariantHeredTOthRel.

Module Knot_CovariantHeredPropOthRel (KI':KNOT_INPUT__COVARIANT_HERED_PROP_OTH_REL)
  : KNOT__COVARIANT_HERED_PROP_OTH_REL with Module KI:=KI'.

  Module Export KI:=KI'.

  Module Export Input.
Definition F: functor.
Admitted.

    Definition other := KI.other.

    Definition T := Prop.
  End Input.

  Module K0 := knot_full_variant.Knot_MixVariantHeredTOthRel(Input).

  Module Output <: knot_full_variant.KNOT_FULL_OUTPUT with Module KI := Input.
    Module KI := Input.
    Module K0 := K0.

  End Output.

End Knot_CovariantHeredPropOthRel.

Module Knot_CovariantHeredPropOth (KI':KNOT_INPUT__COVARIANT_HERED_PROP_OTH)
  : KNOT__COVARIANT_HERED_PROP_OTH with Module KI:=KI'.
  Module Export KI:=KI'.

  Module Export Input.
Definition F: functor.
Admitted.
    Definition other := KI.other.

    Definition T := Prop.
  End Input.

  Module K0 := knot_full_variant.Knot_MixVariantHeredTOthRel(Input).

  Module Output <: knot_full_variant.KNOT_FULL_OUTPUT with Module KI := Input.
    Module KI := Input.
    Module K0 := K0.
  End Output.

End Knot_CovariantHeredPropOth.

Module Knot_CovariantHeredProp (KI':KNOT_INPUT__COVARIANT_HERED_PROP)
  : KNOT__COVARIANT_HERED_PROP with Module KI:=KI'.
  Module Export KI:=KI'.

  Module Export Input.
Definition F: functor.
Admitted.
    Definition other := unit.

    Definition T := Prop.
  End Input.

  Module K0 := knot_full_variant.Knot_MixVariantHeredTOthRel(Input).

  Module Output <: knot_full_variant.KNOT_FULL_OUTPUT with Module KI := Input.
    Module KI := Input.
    Module K0 := K0.
  End Output.

End Knot_CovariantHeredProp.

Module Knot_MixVariantHeredProp (KI':KNOT_INPUT__MIXVARIANT_HERED_PROP)
  : KNOT__MIXVARIANT_HERED_PROP with Module KI:=KI'.
  Module Export KI:=KI'.

  Module Export Input.
Definition F: functor.
Admitted.
    Definition other := unit.

    Definition T := Prop.
  End Input.

  Module K0 := knot_full_variant.Knot_MixVariantHeredTOthRel(Input).

  Module Output <: knot_full_variant.KNOT_FULL_OUTPUT with Module KI := Input.
    Module KI := Input.
    Module K0 := K0.
  End Output.

  Module K := knot_full_variant.KnotFull(Input)(Output).

  Definition knot := K.knot.

End Knot_MixVariantHeredProp.
Import VST.msl.sepalg.

Section SA_LOWER.
  Variable A : Type.
Instance Join_lower: Join (option A).
Admitted.

  Instance Perm_lower: @Perm_alg (option A) Join_lower.
Admitted.

 Instance Sep_lower: @Sep_alg _ Join_lower.
Admitted.

End SA_LOWER.

Existing Instance Join_lower.

Existing Instance Perm_lower.
Existing Instance Sep_lower.

Module Type KNOT_FULL_BASIC_INPUT.
End KNOT_FULL_BASIC_INPUT.

Module Type KNOT_FULL_SA_INPUT.
  Declare Module KI: KNOT_FULL_BASIC_INPUT.
End KNOT_FULL_SA_INPUT.
Import VST.msl.boolean_alg.

Module Share : SHARE_MODEL := tree_shares.Share.
Definition share : Type.
exact (Share.t).
Defined.
Export MixVariantFunctorGenerator.

Definition nonempty_share (sh: share) :=
       sepalg.nonidentity sh.
Definition readable_share (sh: share) :=
       nonempty_share (Share.glb Share.Rsh sh).
Import VST.msl.ghost.

Module Type ADR_VAL.
Parameter address : Type.

Parameter kind: Type.
End ADR_VAL.

Module Type ADR_VAL0.
Parameter address : Type.
Parameter kind: Type.
End ADR_VAL0.

Module SimpleAdrVal (AV0: ADR_VAL0) <:
   ADR_VAL with Definition address := AV0.address
                   with Definition kind := AV0.kind.
  Import AV0.
  Definition address := address.
  Definition kind := kind.
End SimpleAdrVal.

Inductive TypeTree: Type :=
  | ConstType: Type -> TypeTree
  | Mpred: TypeTree
  | DependentType: nat -> TypeTree
  | ProdType: TypeTree -> TypeTree -> TypeTree
  | ArrowType: TypeTree -> TypeTree -> TypeTree
  | PiType: forall (I : Type), (I -> TypeTree) -> TypeTree.
Definition dependent_type_functor_rec (ts: list Type): TypeTree -> functor.
Admitted.
Definition fpreds: functor.
Admitted.

Section Finmap.

Definition finmap A := list (option A).

Import ListNotations.

Definition finmap_get {A} (m : finmap A) k := nth k m None.

Context {A} {J: Join A}.

Inductive finmap_join: Join (finmap A) :=
| finmap_join_nil_l m: finmap_join [] m m
| finmap_join_nil_r m: finmap_join m [] m
| finmap_join_cons a1 a2 m1 m2 a3 m3: join a1 a2 a3 -> finmap_join m1 m2 m3 ->
    finmap_join (a1 :: m1) (a2 :: m2) (a3 :: m3).

Global Instance Perm_finmap {P: Perm_alg A} : @Perm_alg _ finmap_join.
Admitted.

Global Instance Sep_finmap {S: Sep_alg A} : @Sep_alg _ finmap_join.
Admitted.

End Finmap.

Instance finmap_RA {RA: Ghost} : Ghost :=
  { valid m := forall i a, finmap_get m i = Some a -> valid a; Join_G := finmap_join }.
admit.
Defined.

Instance Global_Ghost {I} {RAs: I -> Ghost}: Ghost :=
  { G := forall i, finmap (@G (RAs i)); valid m := forall i, @valid finmap_RA (m i) }.
admit.
Defined.

Module Type STRAT_MODEL.
  Declare Module AV : ADR_VAL.

End STRAT_MODEL.

Module StratModel (AV' : ADR_VAL) : STRAT_MODEL with Module AV:=AV'.
  Module AV := AV'.
  Import AV.
Definition preds: functor.
Admitted.

  Inductive res (PRED : Type) : Type :=
    | NO':  forall sh: Share.t, ~(readable_share sh) -> res PRED
    | YES': forall sh: Share.t, readable_share sh -> kind -> preds PRED -> res PRED
    | PURE': kind -> preds PRED -> res PRED.
Definition res_fmap (A B:Type) (f:A->B) (g:B->A)(x:res A) : res B.
Admitted.

  Lemma ff_res : functorFacts res res_fmap.
Admitted.
Definition f_res : functor.
exact (Functor ff_res).
Defined.

  Inductive res_join (PRED : Type) : f_res PRED -> f_res PRED -> f_res PRED -> Prop :=
    | res_join_NO1 : forall sh1 nsh1 sh2 nsh2 sh3 nsh3,
                               join sh1 sh2 sh3 ->
                               res_join PRED (NO' PRED sh1 nsh1) (NO' PRED sh2 nsh2)
                                     (NO' PRED sh3 nsh3)
    | res_join_NO2 : forall sh1 nsh1 sh2 rsh2 sh3 rsh3 k p,
                               join sh1 sh2 sh3 ->
                               res_join PRED (NO' PRED sh1 nsh1) (YES' PRED sh2 rsh2 k p)
                                   (YES' PRED sh3 rsh3 k p)
    | res_join_NO3 : forall sh1 rsh1 sh2 nsh2 sh3 rsh3 k p,
                               join sh1 sh2 sh3 ->
                               res_join PRED (YES' PRED sh1 rsh1 k p) (NO' PRED sh2 nsh2)
                                   (YES' PRED sh3 rsh3 k p)
    | res_join_YES : forall sh1 rsh1 sh2 rsh2 sh3 rsh3 k p,
                              join sh1 sh2 sh3 ->
              res_join PRED (YES' PRED sh1 rsh1 k p) (YES' PRED sh2 rsh2 k p) (YES' PRED sh3 rsh3 k p)
    | res_join_PURE : forall k p, res_join PRED (PURE' PRED k p) (PURE' PRED k p) (PURE' PRED k p).
Instance Join_res (PRED: Type) : Join (res PRED).
exact (res_join PRED).
Defined.

  Instance sa_rj : forall PRED, @Sep_alg _ (res_join PRED).
Admitted.

  Inductive ghost (PRED : Type) : Type :=
    GHOST' I (RAs: I -> Ghost) (g: @G Global_Ghost) (pds: I -> nat -> option (fpreds PRED))
      (Hv: ghost.valid g)
      (dom: forall i n pp, pds i n = Some pp -> exists a, finmap_get (g i) n = Some a).

  Program Definition ghost_fmap (A B:Type) (f:A->B) (g:B->A)(x:ghost A) : ghost B :=
    match x with
      | GHOST' _ RAs a pds _ _ =>
        GHOST' _ _ RAs a (fmap (ffunc (fconst _) (ffunc (fconst _) (foption fpreds))) f g pds) _ _
    end.
Admit Obligations.

  Lemma ff_ghost : functorFacts ghost ghost_fmap.
Admitted.
Definition f_ghost : functor.
exact (Functor ff_ghost).
Defined.

  Inductive ghost_join (PRED : Type) : f_ghost PRED -> f_ghost PRED -> f_ghost PRED -> Prop :=
    | ghost_join_I : forall A (RAs : A -> Ghost) a b c pdsa pdsb pdsc Hva Hvb Hvc doma domb domc,
        join a b c -> join pdsa pdsb pdsc ->
        ghost_join PRED (GHOST' PRED _ RAs a pdsa Hva doma) (GHOST' PRED _ RAs b pdsb Hvb domb)
                        (GHOST' PRED _ RAs c pdsc Hvc domc).
Instance Join_ghost (PRED: Type) : Join (ghost PRED).
exact (ghost_join PRED).
Defined.

  Instance sa_gj : forall PRED, @Sep_alg _ (ghost_join PRED).
Admitted.
Definition valid' A (w: (address -> res A) * ghost A) : Prop.
Admitted.

  Lemma valid'_res_map : forall A B f g m,
    valid' A m -> valid' B (fmap f_res f g oo fst m, fmap f_ghost f g (snd m)).
Admitted.

  Definition pre_rmap (A:Type) := { m:(address -> res A) * ghost A | valid' A m }.
Definition f_pre_rmap : functor.
exact (fsubset (fpair (ffunc (fconst address) f_res) f_ghost) _ valid'_res_map).
Defined.
Instance Sep_pre_rmap (A: Type): Sep_alg (pre_rmap A).
Admitted.

  Lemma pre_rmap_core: forall A (m : f_pre_rmap A),
    exists P, core m = exist (valid' A) (core (proj1_sig m)) P.
Admitted.

End StratModel.

Module Type RMAPS.
  Declare Module AV:ADR_VAL.

  Parameter rmap : Type.
  Axiom ag_rmap: ageable rmap.

End RMAPS.

Module Rmaps (AV':ADR_VAL): RMAPS with Module AV:=AV'.
  Module Export AV:=AV'.

  Module Export TyF.
  End TyF.

  Module TyFSA <: KNOT_FULL_SA_INPUT with Module KI:=TyF.
    Module KI := TyF.
  End TyFSA.

  Module K := Knot_MixVariantHeredProp(TyF).

  Definition rmap := K.knot.
Instance ag_rmap : ageable rmap.
Admitted.

End Rmaps.
Import VST.veric.base.

Inductive kind : Type := VAL : memval -> kind
                                   | LK : Z -> kind
                                   | CT: Z -> kind
                                   | FUN: funsig -> calling_convention -> kind.

Module CompCert_AV <: ADR_VAL.

Definition address := address.
Definition kind := kind.

End CompCert_AV.

Module R := Rmaps (CompCert_AV).
Export R.

Section cuof.

Context (cenv: composite_env).
Definition composite_env_complete_legal_cosu_type: Prop.
Admitted.

End cuof.

Definition hardware_alignof_env_consistent (cenv: composite_env) (ha_env: PTree.t Z): Prop.
Admitted.
Definition hardware_alignof_env_complete (cenv: composite_env) (ha_env: PTree.t Z): Prop.
Admitted.

Module Type LEGAL_ALIGNAS.

  Parameter legal_alignas_obs: Type.

End LEGAL_ALIGNAS.

Module LegalAlignasDefsGen (LegalAlignas: LEGAL_ALIGNAS).

  Import LegalAlignas.
Definition legal_alignas_env_consistent (cenv: composite_env) (ha_env: PTree.t Z) (la_env: PTree.t legal_alignas_obs): Prop.
Admitted.
Definition legal_alignas_env_complete (cenv: composite_env) (la_env: PTree.t legal_alignas_obs): Prop.
Admitted.
Definition legal_alignas_env_sound (cenv: composite_env) (ha_env: PTree.t Z) (la_env: PTree.t legal_alignas_obs): Prop.
Admitted.

End LegalAlignasDefsGen.

Module Type LEGAL_ALIGNAS_FACTS.

  Declare Module LegalAlignas: LEGAL_ALIGNAS.
  Module LegalAlignasDefs := LegalAlignasDefsGen (LegalAlignas).
Export LegalAlignas.
Export LegalAlignasDefs.

End LEGAL_ALIGNAS_FACTS.

Module LegalAlignasStrong <: LEGAL_ALIGNAS.

Section legal_alignas.
Definition legal_alignas_obs: Type.
Admitted.

End legal_alignas.

End LegalAlignasStrong.

Module LegalAlignasStrongFacts: LEGAL_ALIGNAS_FACTS with Module LegalAlignas := LegalAlignasStrong.

Module LegalAlignas := LegalAlignasStrong.
Module LegalAlignasDefs := LegalAlignasDefsGen (LegalAlignas).

End LegalAlignasStrongFacts.

Module Export LegalAlignasFacts := LegalAlignasStrongFacts.

Structure Lift := mkLift {
         lift_S: Type;
         lift_T: Type;
         lift_prod : Type;
         lift_last: Type;
         lifted:> Type;
         lift_curry: lift_T -> lift_prod -> lift_last;
         lift_uncurry_open: ((lift_S -> lift_prod) -> (lift_S -> lift_last)) -> lifted
}.

Definition Tend (S: Type) (A: Type) :=
    mkLift S A unit A
          (S -> A)
          (fun f _ => f)
          (fun f => f (fun _: S => tt)).

Canonical Structure Tarrow (A: Type) (H: Lift) :=
    mkLift (lift_S H)
      (A -> lift_T H)
      (prod A (lift_prod H))
      (lift_last H)
      ((lift_S H -> A) -> lifted H)
      (fun f x => match x with (x1,x2) => lift_curry H (f x1) x2 end)
      (fun f x => lift_uncurry_open H (fun y: lift_S H -> lift_prod H => f (fun z => (x z, y z)))).

Set Implicit Arguments.
Definition liftx {H: Lift} (f: lift_T H) : lifted H.
Admitted.

Notation "'`' x" := (liftx x) (at level 9).
Notation "'`(' x ')'" := (liftx (x : _)).
Module Export Map.
Section map.
Variables (B : Type).

Definition t := positive -> option B.
Definition get (h: t) (a:positive) : option B.
Admitted.

End map.

Definition genviron := Map.t block.

Definition venviron := Map.t (block * type).

Definition tenviron := Map.t val.

Inductive environ : Type :=
 mkEnviron: forall (ge: genviron) (ve: venviron) (te: tenviron), environ.
Definition te_of (rho: environ) : tenviron.
Admitted.

Definition mpred := pred rmap.
Definition AssertTT (A: TypeTree): TypeTree.
Admitted.
Definition super_non_expansive {A: TypeTree}
  (P: forall ts, dependent_type_functor_rec ts (AssertTT A) mpred): Prop.
Admitted.

Inductive funspec :=
   mk_funspec: funsig -> calling_convention -> forall (A: TypeTree)
     (P Q: forall ts, dependent_type_functor_rec ts (AssertTT A) mpred)
     (P_ne: super_non_expansive P) (Q_ne: super_non_expansive Q),
     funspec.
Definition composite_legal_fieldlist (co: composite): Prop.
Admitted.

Definition composite_env_legal_fieldlist env :=
  forall (id : positive) (co : composite),
    env ! id = Some co -> composite_legal_fieldlist co.

Class compspecs := mkcompspecs {
  cenv_cs : composite_env;
  cenv_consistent: composite_env_consistent cenv_cs;
  cenv_legal_fieldlist: composite_env_legal_fieldlist cenv_cs;
  cenv_legal_su: composite_env_complete_legal_cosu_type cenv_cs;
  ha_env_cs: PTree.t Z;
  ha_env_cs_consistent: hardware_alignof_env_consistent cenv_cs ha_env_cs;
  ha_env_cs_complete: hardware_alignof_env_complete cenv_cs ha_env_cs;
  la_env_cs: PTree.t legal_alignas_obs;
  la_env_cs_consistent: legal_alignas_env_consistent cenv_cs ha_env_cs la_env_cs;
  la_env_cs_complete: legal_alignas_env_complete cenv_cs la_env_cs;
  la_env_cs_sound: legal_alignas_env_sound cenv_cs ha_env_cs la_env_cs
}.

Existing Class composite_env.
Existing Instance cenv_cs.

Arguments sizeof {env} !t / .
Arguments alignof {env} !t / .

Inductive Annotation :=
  WeakAnnotation : (environ -> mpred) -> Annotation
| StrongAnnotation : (environ -> mpred) -> Annotation.

Inductive tycontext : Type :=
  mk_tycontext : forall (tyc_temps: PTree.t (type * bool))
                        (tyc_vars: PTree.t type)
                        (tyc_ret: type)
                        (tyc_globty: PTree.t type)
                        (tyc_globsp: PTree.t funspec)
                        (tyc_annot: PTree.t Annotation),
                             tycontext.

Module Export Cop2.
Definition sem_cast (t1 t2: type): val -> option val.
Admitted.
Definition sem_unary_operation
            (op: Cop.unary_operation) (ty: type) (v: val): option val.
Admitted.
Definition sem_binary_operation'
    {CS: compspecs} (op: Cop.binary_operation)
    (t1:type) (t2: type) : val -> val -> option val.
Admitted.
Definition force_val (v: option val) : val.
Admitted.

Definition force_val1 (f: val -> option val) (v: val) := force_val (f v).
Definition force_val2 (f: val -> val -> option val) (v1 v2: val) := force_val (f v1 v2).

Canonical Structure LiftEnviron := Tend environ.

Definition eval_id (id: ident) (rho: environ) := force_val (Map.get (te_of rho) id).

Definition eval_unop (op: Cop.unary_operation) (t1 : type) :=
       force_val1 (Cop2.sem_unary_operation op t1).

Definition eval_binop {CS:compspecs} (op: Cop.binary_operation) (t1 t2 : type) :=
       force_val2 (Cop2.sem_binary_operation'  op t1 t2).

Definition eval_cast (t1 t2 : type) :=
  force_val1 (sem_cast t1 t2).
Definition eval_field {CS: compspecs} (ty: type) (fld: ident) : val -> val.
Admitted.
Definition eval_var (id:ident) (ty: type) (rho: environ) : val.
Admitted.

Fixpoint eval_expr {CS: compspecs} (e: expr) : environ -> val :=
 match e with
 | Econst_int i ty => `(Vint i)
 | Econst_long i ty => `(Vlong i)
 | Econst_float f ty => `(Vfloat f)
 | Econst_single f ty => `(Vsingle f)
 | Etempvar id ty => eval_id id
 | Eaddrof a ty => eval_lvalue a
 | Eunop op a ty =>  `(eval_unop op (typeof a)) (eval_expr a)
 | Ebinop op a1 a2 ty =>
                  `(eval_binop op (typeof a1) (typeof a2)) (eval_expr a1) (eval_expr a2)
 | Ecast a ty => `(eval_cast (typeof a) ty) (eval_expr a)
 | Evar id ty => eval_var id ty
 | Ederef a ty => eval_expr a
 | Efield a i ty => `(eval_field (typeof a) i) (eval_lvalue a)
 | Esizeof t ty => `(Vptrofs (Ptrofs.repr (sizeof t)))
 | Ealignof t ty => `(Vptrofs (Ptrofs.repr (alignof t)))
 end

 with eval_lvalue {CS: compspecs} (e: expr) : environ -> val :=
 match e with
 | Evar id ty => eval_var id ty
 | Ederef a ty => eval_expr a
 | Efield a i ty => `(eval_field (typeof a) i) (eval_lvalue a)
 | _  => `Vundef
 end.

Fixpoint eval_exprlist {CS: compspecs} (et: list type) (el:list expr) : environ -> list val :=
 match et, el with
 | t::et', e::el' =>
    `(@cons val) (`force_val (`(sem_cast (typeof e) t) (eval_expr e))) (eval_exprlist et' el')
 | _, _ => `nil
 end.

Inductive tc_error :=
| op_result_type : expr -> tc_error
| arg_type : expr -> tc_error
| pp_compare_size_0 : type -> tc_error
| pp_compare_size_exceed : type -> tc_error
| invalid_cast : type -> type -> tc_error
| invalid_cast_result : type -> type -> tc_error
| invalid_expression : expr -> tc_error
| var_not_in_tycontext : tycontext -> positive  -> tc_error
| mismatch_context_type : type -> type -> tc_error
| deref_byvalue : type -> tc_error
| volatile_load : type -> tc_error
| invalid_field_access : expr -> tc_error
| invalid_composite_name: ident -> tc_error
| invalid_struct_field : ident   -> ident   -> tc_error
| invalid_lvalue : expr -> tc_error
| wrong_signature : tc_error
| int_or_ptr_type_error : tc_error
| miscellaneous_typecheck_error : tc_error.

Inductive tc_assert :=
| tc_FF: tc_error -> tc_assert
| tc_TT : tc_assert
| tc_andp': tc_assert -> tc_assert -> tc_assert
| tc_orp' : tc_assert -> tc_assert -> tc_assert
| tc_nonzero': expr -> tc_assert
| tc_iszero': expr -> tc_assert
| tc_isptr: expr -> tc_assert
| tc_test_eq': expr -> expr -> tc_assert
| tc_test_order': expr -> expr -> tc_assert
| tc_ilt': expr -> int -> tc_assert
| tc_llt': expr -> int64 -> tc_assert
| tc_Zle: expr -> Z -> tc_assert
| tc_Zge: expr -> Z -> tc_assert
| tc_samebase: expr -> expr -> tc_assert
| tc_nodivover': expr -> expr -> tc_assert
| tc_initialized: PTree.elt -> type -> tc_assert
| tc_nosignedover: (Z->Z->Z) -> expr -> expr -> tc_assert.

Definition isptr v :=
   match v with | Vptr _ _ => True | _ => False end.
Definition tc_val (ty: type) : val -> Prop.
Admitted.
Definition valid_pointer (p: val) : mpred.
Admitted.
Definition weak_valid_pointer (p: val) : mpred.
Admitted.
Export VST.msl.seplog.
Instance Nveric: NatDed mpred.
Admitted.

Definition denote_tc_iszero v : mpred :=
         match v with
         | Vint i => prop (is_true (Int.eq i Int.zero))
         | Vlong i => prop (is_true (Int64.eq (Int64.repr (Int64.unsigned i)) Int64.zero))
         | _ => FF
         end.

Definition denote_tc_nonzero v : mpred :=
         match v with
         | Vint i => prop (i <> Int.zero)
         | Vlong i =>prop (i <> Int64.zero)
         | _ => FF end.

Definition denote_tc_igt i v : mpred :=
     match v with
     | Vint i1 => prop (Int.unsigned i1 < Int.unsigned i)
     | _ => FF
     end.

Definition denote_tc_lgt l v : mpred :=
     match v with
     | Vlong l1 => prop (Int64.unsigned l1 < Int64.unsigned l)
     | _ => FF
     end.
Definition Zoffloat (f:float): option Z.
Admitted.
Definition Zofsingle (f: float32): option Z.
Admitted.

Definition denote_tc_Zge z v : mpred :=
          match v with
                     | Vfloat f => match Zoffloat f with
                                    | Some n => prop (z >= n)
                                    | None => FF
                                   end
                     | Vsingle f => match Zofsingle f with
                                    | Some n => prop (z >= n)
                                    | None => FF
                                   end
                     | _ => FF
                  end.

Definition denote_tc_Zle z v : mpred :=
          match v with
                     | Vfloat f => match Zoffloat f with
                                    | Some n => prop (z <= n)
                                    | None => FF
                                   end
                     | Vsingle f => match Zofsingle f with
                                    | Some n => prop (z <= n)
                                    | None => FF
                                   end
                     | _ => FF
                  end.

Definition sameblock v1 v2 : bool :=
         match v1, v2 with
          | Vptr b1 _, Vptr b2 _ => peq b1 b2
          | _, _ => false
         end.

Definition denote_tc_samebase v1 v2 : mpred :=
       prop (is_true (sameblock v1 v2)).

Definition denote_tc_nodivover v1 v2 : mpred :=
match v1, v2 with
          | Vint n1, Vint n2 => prop (~(n1 = Int.repr Int.min_signed /\ n2 = Int.mone))
          | Vlong n1, Vlong n2 => prop (~(n1 = Int64.repr Int64.min_signed /\ n2 = Int64.mone))
          | Vint n1, Vlong n2 => TT
          | Vlong n1, Vint n2 => prop (~ (n1 = Int64.repr Int64.min_signed  /\ n2 = Int.mone))
          | _ , _ => FF
        end.

Definition denote_tc_nosignedover (op: Z->Z->Z) v1 v2 : mpred :=
 match v1,v2 with
 | Vint n1, Vint n2 =>
   prop (Int.min_signed <= op (Int.signed n1) (Int.signed n2) <= Int.max_signed)
 | Vlong n1, Vlong n2 =>
   prop (Int64.min_signed <= op (Int64.signed n1) (Int64.signed n2) <= Int64.max_signed)
 | Vint n1, Vlong n2 =>
   prop (Int64.min_signed <= op (Int.signed n1) (Int64.signed n2) <= Int64.max_signed)
 | Vlong n1, Vint n2 =>
   prop (Int64.min_signed <= op (Int64.signed n1) (Int.signed n2) <= Int64.max_signed)
 | _, _ => FF
 end.

Definition denote_tc_initialized id ty rho : mpred :=
    prop (exists v, Map.get (te_of rho) id = Some v
               /\ tc_val ty v).

Definition denote_tc_isptr v : mpred :=
  prop (isptr v).

Definition test_eq_ptrs v1 v2 : mpred :=
  if sameblock v1 v2
  then (andp (weak_valid_pointer v1) (weak_valid_pointer v2))
  else (andp (valid_pointer v1) (valid_pointer v2)).

Definition test_order_ptrs v1 v2 : mpred :=
  if sameblock v1 v2
  then (andp (weak_valid_pointer v1) (weak_valid_pointer v2))
  else FF.

Definition denote_tc_test_eq v1 v2 : mpred :=
 match v1, v2 with
 | Vint i, Vint j =>
     if Archi.ptr64 then FF else andp (prop (i = Int.zero)) (prop (j = Int.zero))
 | Vlong i, Vlong j =>
     if Archi.ptr64 then andp (prop (i = Int64.zero)) (prop (j = Int64.zero)) else FF
 | Vint i, Vptr _ _ =>
      if Archi.ptr64 then FF else andp (prop (i = Int.zero)) (weak_valid_pointer v2)
 | Vlong i, Vptr _ _ =>
      if Archi.ptr64 then andp (prop (i = Int64.zero)) (weak_valid_pointer v2) else FF
 | Vptr _ _, Vint i =>
      if Archi.ptr64 then FF else andp (prop (i = Int.zero)) (weak_valid_pointer v1)
 | Vptr _ _, Vlong i =>
      if Archi.ptr64 then andp (prop (i = Int64.zero)) (weak_valid_pointer v1) else FF
 | Vptr _ _, Vptr _ _ =>
      test_eq_ptrs v1 v2
 | _, _ => FF
 end.

Definition denote_tc_test_order v1 v2 : mpred :=
 match v1, v2 with
 | Vint i, Vint j => if Archi.ptr64 then FF else andp (prop (i = Int.zero)) (prop (j = Int.zero))
 | Vlong i, Vlong j => if Archi.ptr64 then andp (prop (i = Int64.zero)) (prop (j = Int64.zero)) else FF
 | Vptr _ _, Vptr _ _ =>
      test_order_ptrs v1 v2
 | _, _ => FF
 end.
Definition typecheck_error (e: tc_error) : Prop.
Admitted.

Fixpoint denote_tc_assert {CS: compspecs} (a: tc_assert) : environ -> mpred :=
  match a with
  | tc_FF msg => `(prop (typecheck_error msg))
  | tc_TT => TT
  | tc_andp' b c => fun rho => andp (denote_tc_assert b rho) (denote_tc_assert c rho)
  | tc_orp' b c => `orp (denote_tc_assert b) (denote_tc_assert c)
  | tc_nonzero' e => `denote_tc_nonzero (eval_expr e)
  | tc_isptr e => `denote_tc_isptr (eval_expr e)
  | tc_test_eq' e1 e2 => `denote_tc_test_eq (eval_expr e1) (eval_expr e2)
  | tc_test_order' e1 e2 => `denote_tc_test_order (eval_expr e1) (eval_expr e2)
  | tc_ilt' e i => `(denote_tc_igt i) (eval_expr e)
  | tc_llt' e i => `(denote_tc_lgt i) (eval_expr e)
  | tc_Zle e z => `(denote_tc_Zge z) (eval_expr e)
  | tc_Zge e z => `(denote_tc_Zle z) (eval_expr e)
  | tc_samebase e1 e2 => `denote_tc_samebase (eval_expr e1) (eval_expr e2)
  | tc_nodivover' v1 v2 => `denote_tc_nodivover (eval_expr v1) (eval_expr v2)
  | tc_initialized id ty => denote_tc_initialized id ty
  | tc_iszero' e => `denote_tc_iszero (eval_expr e)
  | tc_nosignedover op e1 e2 => `(denote_tc_nosignedover op) (eval_expr e1) (eval_expr e2)
 end.

Definition fool' := @map _ Type (fun it : ident * type => mpred).
EOF
cat bug.v
opam switch create coq.8.7.2 --empty
opam switch coq.8.7.2
opam install -y coq.8.7.2
eval $(opam env)
git clone https://github.com/Alizter/VST.git
cd VST
git checkout test-6984
make veric/SeparationLogic.vo
coqbot commented 2 years ago

Hey @JasonGross, the coq bug minimizer is running your script, I'll come back to you with the results once it's done.

coqbot commented 2 years ago

@JasonGross, Minimized File /github/workspace/VST/veric/SeparationLogic.v (interrupted by timeout) (full log on GitHub Actions)

Minimized Coq File (truncated to 32KiB; full 90KiB file on GitHub Actions Artifacts under bug.v) ```coq (* -*- mode: coq; coq-prog-args: ("-emacs" "-w" "none" "-R" "/github/workspace/VST/compcert" "compcert" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/VST/msl" "VST.msl" "-Q" "/github/workspace/VST/sepcomp" "VST.sepcomp" "-Q" "/github/workspace/VST/veric" "VST.veric" "-Q" "/github/workspace/VST/floyd" "VST.floyd" "-Q" "/github/workspace/VST/progs" "VST.progs" "-Q" "/github/workspace/VST/concurrency" "VST.concurrency" "-Q" "/github/workspace/VST/ccc26x86" "VST.ccc26x86" "-Q" "/github/workspace/VST/wand_demo" "wand_demo" "-Q" "/github/workspace/VST/sha" "sha" "-Q" "/github/workspace/VST/fcf" "fcf" "-Q" "/github/workspace/VST/hmacfcf" "hmacfcf" "-Q" "/github/workspace/VST/tweetnacl20140427" "tweetnacl20140427" "-Q" "/github/workspace/VST/hmacdrbg" "hmacdrbg" "-Q" "/github/workspace/VST/aes" "aes" "-Q" "/github/workspace/VST/mailbox" "mailbox" "-top" "bug_01") -*- *) (* File reduced by coq-bug-minimizer from original input, then from 1507 lines to 166 lines, then from 179 lines to 1613 lines, then from 1618 lines to 283 lines, then from 296 lines to 1447 lines, then from 1447 lines to 305 lines, then from 318 lines to 2145 lines, then from 2137 lines to 360 lines, then from 373 lines to 520 lines, then from 523 lines to 388 lines, then from 401 lines to 1790 lines, then from 1792 lines to 448 lines, then from 461 lines to 1138 lines, then from 1142 lines to 444 lines, then from 457 lines to 1784 lines, then from 1789 lines to 481 lines, then from 494 lines to 2397 lines, then from 2398 lines to 682 lines, then from 689 lines to 676 lines, then from 689 lines to 1896 lines, then from 1895 lines to 680 lines, then from 693 lines to 779 lines, then from 784 lines to 693 lines, then from 706 lines to 1627 lines, then from 1629 lines to 699 lines, then from 712 lines to 1325 lines, then from 1329 lines to 717 lines, then from 731 lines to 1132 lines, then from 1138 lines to 704 lines, then from 718 lines to 1032 lines, then from 1037 lines to 706 lines, then from 720 lines to 2384 lines, then from 2385 lines to 993 lines, then from 1007 lines to 2529 lines, then from 2521 lines to 921 lines, then from 934 lines to 900 lines, then from 913 lines to 8941 lines, then from 8933 lines to 998 lines, then from 1011 lines to 1062 lines, then from 1068 lines to 1000 lines, then from 1014 lines to 1130 lines, then from 1136 lines to 1023 lines, then from 1037 lines to 1393 lines, then from 1392 lines to 1024 lines, then from 1038 lines to 1232 lines, then from 1238 lines to 1024 lines, then from 1038 lines to 1857 lines, then from 1863 lines to 1049 lines, then from 1063 lines to 2896 lines, then from 2897 lines to 2989 lines *) (* coqc version 8.7.2 (February 2022) compiled on Feb 7 2022 22:17:26 with OCaml 4.09.1 coqtop version 8.7.2 (February 2022) Modules that could not be inlined: VST.msl.predicates_hered Expected coqc runtime on this file: 10.087 sec *) Require Coq.Logic.ClassicalFacts. Require Coq.Logic.FunctionalExtensionality. Require VST.msl.Axioms. Require Coq.Logic.EqdepFacts. Require VST.msl.Extensionality. Require Coq.Lists.List. Require Coq.Bool.Bool. Require Coq.Relations.Relations. Require Coq.omega.Omega. Require VST.msl.base. Require VST.msl.eq_dec. Require VST.msl.sepalg. Require Coq.Structures.GenericMinMax. Require VST.msl.boolean_alg. Require VST.msl.functors. Require VST.msl.sepalg_generators. Require VST.msl.seplog. Require Coq.ZArith.ZArith. Require Coq.ZArith.Znumtheory. Require compcert.lib.Coqlib. Require Coq.Strings.String. Require Coq.Classes.Equivalence. Require Coq.Classes.EquivDec. Require compcert.lib.Maps. Require compcert.common.Errors. Require Coq.Logic.Eqdep_dec. Require Coq.ZArith.Zquot. Require Coq.ZArith.Zwf. Require Coq.Reals.Reals. Require compcert.flocq.Core.Fcore_Zaux. Require compcert.flocq.Core.Fcore_Raux. Require compcert.flocq.Core.Fcore_defs. Require compcert.flocq.Core.Fcore_float_prop. Require compcert.flocq.Core.Fcore_rnd. Require compcert.flocq.Core.Fcore_generic_fmt. Require Coq.micromega.Psatz. Require compcert.flocq.Core.Fcore_ulp. Require compcert.flocq.Core.Fcore_rnd_ne. Require compcert.flocq.Core.Fcore_FIX. Require compcert.flocq.Core.Fcore_FLX. Require compcert.flocq.Core.Fcore_FLT. Require compcert.flocq.Core.Fcore. Require compcert.flocq.Core.Fcore_digits. Require compcert.flocq.Calc.Fcalc_digits. Require compcert.flocq.Calc.Fcalc_bracket. Require compcert.flocq.Calc.Fcalc_round. Require compcert.flocq.Calc.Fcalc_ops. Require compcert.flocq.Calc.Fcalc_div. Require compcert.flocq.Calc.Fcalc_sqrt. Require compcert.flocq.Prop.Fprop_relative. Require compcert.flocq.Appli.Fappli_IEEE. Require compcert.flocq.Appli.Fappli_IEEE_bits. Require compcert.x86_32.Archi. Require compcert.lib.Integers. Require compcert.flocq.Prop.Fprop_Sterbenz. Require compcert.flocq.Appli.Fappli_rnd_odd. Require compcert.lib.Fappli_IEEE_extra. Require Coq.Program.Program. Require compcert.lib.Floats. Require compcert.common.AST. Require compcert.common.Values. Require compcert.lib.Axioms. Require Coq.Program.Wf. Require Coq.funind.Recdef. Require compcert.lib.Intv. Require compcert.common.Memdata. Require compcert.common.Memtype. Require compcert.common.Memory. Require compcert.common.Linking. Require compcert.cfrontend.Ctypes. Require Coq.Wellfounded.Wellfounded. Require VST.msl.ageable. Require VST.msl.predicates_hered. Declare ML Module "ltac_plugin". Module Export AdmitTactic. Module Import LocalFalse. Inductive False : Prop := . End LocalFalse. Axiom proof_admitted : False. Global Set Default Proof Mode "Classic". Tactic Notation "admit" := abstract case proof_admitted. End AdmitTactic. Module compcert_DOT_cfrontend_DOT_Cop_WRAPPED. Module Cop. Import compcert.lib.Coqlib. Import compcert.common.AST. Import compcert.lib.Integers. Import compcert.lib.Floats. Import compcert.common.Values. Import compcert.common.Memory. Import compcert.cfrontend.Ctypes. Inductive unary_operation : Type := | Onotbool : unary_operation | Onotint : unary_operation | Oneg : unary_operation | Oabsfloat : unary_operation. Inductive binary_operation : Type := | Oadd : binary_operation | Osub : binary_operation | Omul : binary_operation | Odiv : binary_operation | Omod : binary_operation | Oand : binary_operation | Oor : binary_operation | Oxor : binary_operation | Oshl : binary_operation | Oshr : binary_operation | Oeq: binary_operation | One: binary_operation | Olt: binary_operation | Ogt: binary_operation | Ole: binary_operation | Oge: binary_operation. Inductive incr_or_decr : Type := Incr | Decr. Inductive classify_cast_cases : Type := | cast_case_pointer | cast_case_i2i (sz2:intsize) (si2:signedness) | cast_case_f2f | cast_case_s2s | cast_case_f2s | cast_case_s2f | cast_case_i2f (si1: signedness) | cast_case_i2s (si1: signedness) | cast_case_f2i (sz2:intsize) (si2:signedness) | cast_case_s2i (sz2:intsize) (si2:signedness) | cast_case_l2l | cast_case_i2l (si1: signedness) | cast_case_l2i (sz2: intsize) (si2: signedness) | cast_case_l2f (si1: signedness) | cast_case_l2s (si1: signedness) | cast_case_f2l (si2:signedness) | cast_case_s2l (si2:signedness) | cast_case_i2bool | cast_case_l2bool | cast_case_f2bool | cast_case_s2bool | cast_case_struct (id1 id2: ident) | cast_case_union (id1 id2: ident) | cast_case_void | cast_case_default. Definition classify_cast (tfrom tto: type) : classify_cast_cases := match tto, tfrom with | Tvoid, _ => cast_case_void | Tint IBool _ _, Tint _ _ _ => cast_case_i2bool | Tint IBool _ _, Tlong _ _ => cast_case_l2bool | Tint IBool _ _, Tfloat F64 _ => cast_case_f2bool | Tint IBool _ _, Tfloat F32 _ => cast_case_s2bool | Tint IBool _ _, (Tpointer _ _ | Tarray _ _ _ | Tfunction _ _ _) => if Archi.ptr64 then cast_case_l2bool else cast_case_i2bool | Tint sz2 si2 _, Tint _ _ _ => if Archi.ptr64 then cast_case_i2i sz2 si2 else if intsize_eq sz2 I32 then cast_case_pointer else cast_case_i2i sz2 si2 | Tint sz2 si2 _, Tlong _ _ => cast_case_l2i sz2 si2 | Tint sz2 si2 _, Tfloat F64 _ => cast_case_f2i sz2 si2 | Tint sz2 si2 _, Tfloat F32 _ => cast_case_s2i sz2 si2 | Tint sz2 si2 _, (Tpointer _ _ | Tarray _ _ _ | Tfunction _ _ _) => if Archi.ptr64 then cast_case_l2i sz2 si2 else if intsize_eq sz2 I32 then cast_case_pointer else cast_case_i2i sz2 si2 | Tlong _ _, Tlong _ _ => if Archi.ptr64 then cast_case_pointer else cast_case_l2l | Tlong _ _, Tint sz1 si1 _ => cast_case_i2l si1 | Tlong si2 _, Tfloat F64 _ => cast_case_f2l si2 | Tlong si2 _, Tfloat F32 _ => cast_case_s2l si2 | Tlong si2 _, (Tpointer _ _ | Tarray _ _ _ | Tfunction _ _ _) => if Archi.ptr64 then cast_case_pointer else cast_case_i2l si2 | Tfloat F64 _, Tint sz1 si1 _ => cast_case_i2f si1 | Tfloat F32 _, Tint sz1 si1 _ => cast_case_i2s si1 | Tfloat F64 _, Tlong si1 _ => cast_case_l2f si1 | Tfloat F32 _, Tlong si1 _ => cast_case_l2s si1 | Tfloat F64 _, Tfloat F64 _ => cast_case_f2f | Tfloat F32 _, Tfloat F32 _ => cast_case_s2s | Tfloat F64 _, Tfloat F32 _ => cast_case_s2f | Tfloat F32 _, Tfloat F64 _ => cast_case_f2s | Tpointer _ _, Tint _ _ _ => if Archi.ptr64 then cast_case_i2l Unsigned else cast_case_pointer | Tpointer _ _, Tlong _ _ => if Archi.ptr64 then cast_case_pointer else cast_case_l2i I32 Unsigned | Tpointer _ _, (Tpointer _ _ | Tarray _ _ _ | Tfunction _ _ _) => cast_case_pointer | Tstruct id2 _, Tstruct id1 _ => cast_case_struct id1 id2 | Tunion id2 _, Tunion id1 _ => cast_case_union id1 id2 | _, _ => cast_case_default end. Definition cast_int_int (sz: intsize) (sg: signedness) (i: int) : int := match sz, sg with | I8, Signed => Int.sign_ext 8 i | I8, Unsigned => Int.zero_ext 8 i | I16, Signed => Int.sign_ext 16 i | I16, Unsigned => Int.zero_ext 16 i | I32, _ => i | IBool, _ => if Int.eq i Int.zero then Int.zero else Int.one end. Definition cast_int_float (si: signedness) (i: int) : float := match si with | Signed => Float.of_int i | Unsigned => Float.of_intu i end. Definition cast_float_int (si : signedness) (f: float) : option int := match si with | Signed => Float.to_int f | Unsigned => Float.to_intu f end. Definition cast_int_single (si: signedness) (i: int) : float32 := match si with | Signed => Float32.of_int i | Unsigned => Float32.of_intu i end. Definition cast_single_int (si : signedness) (f: float32) : option int := match si with | Signed => Float32.to_int f | Unsigned => Float32.to_intu f end. Definition cast_int_long (si: signedness) (i: int) : int64 := match si with | Signed => Int64.repr (Int.signed i) | Unsigned => Int64.repr (Int.unsigned i) end. Definition cast_long_float (si: signedness) (i: int64) : float := match si with | Signed => Float.of_long i | Unsigned => Float.of_longu i end. Definition cast_long_single (si: signedness) (i: int64) : float32 := match si with | Signed => Float32.of_long i | Unsigned => Float32.of_longu i end. Definition cast_float_long (si : signedness) (f: float) : option int64 := match si with | Signed => Float.to_long f | Unsigned => Float.to_longu f end. Definition cast_single_long (si : signedness) (f: float32) : option int64 := match si with | Signed => Float32.to_long f | Unsigned => Float32.to_longu f end. Definition sem_cast (v: val) (t1 t2: type) (m: mem): option val := match classify_cast t1 t2 with | cast_case_pointer => match v with | Vptr _ _ => Some v | Vint _ => if Archi.ptr64 then None else Some v | Vlong _ => if Archi.ptr64 then Some v else None | _ => None end | cast_case_i2i sz2 si2 => match v with | Vint i => Some (Vint (cast_int_int sz2 si2 i)) | _ => None end | cast_case_f2f => match v with | Vfloat f => Some (Vfloat f) | _ => None end | cast_case_s2s => match v with | Vsingle f => Some (Vsingle f) | _ => None end | cast_case_s2f => match v with | Vsingle f => Some (Vfloat (Float.of_single f)) | _ => None end | cast_case_f2s => match v with | Vfloat f => Some (Vsingle (Float.to_single f)) | _ => None end | cast_case_i2f si1 => match v with | Vint i => Some (Vfloat (cast_int_float si1 i)) | _ => None end | cast_case_i2s si1 => match v with | Vint i => Some (Vsingle (cast_int_single si1 i)) | _ => None end | cast_case_f2i sz2 si2 => match v with | Vfloat f => match cast_float_int si2 f with | Some i => Some (Vint (cast_int_int sz2 si2 i)) | None => None end | _ => None end | cast_case_s2i sz2 si2 => match v with | Vsingle f => match cast_single_int si2 f with | Some i => Some (Vint (cast_int_int sz2 si2 i)) | None => None end | _ => None end | cast_case_i2bool => match v with | Vint n => Some(Vint(if Int.eq n Int.zero then Int.zero else Int.one)) | Vptr b ofs => if Archi.ptr64 then None else if Mem.weak_valid_pointer m b (Ptrofs.unsigned ofs) then Some Vone else None | _ => None end | cast_case_l2bool => match v with | Vlong n => Some(Vint(if Int64.eq n Int64.zero then Int.zero else Int.one)) | Vptr b ofs => if negb Archi.ptr64 then None else if Mem.weak_valid_pointer m b (Ptrofs.unsigned ofs) then Some Vone else None | _ => None end | cast_case_f2bool => match v with | Vfloat f => Some(Vint(if Float.cmp Ceq f Float.zero then Int.zero else Int.one)) | _ => None end | cast_case_s2bool => match v with | Vsingle f => Some(Vint(if Float32.cmp Ceq f Float32.zero then Int.zero else Int.one)) | _ => None end | cast_case_l2l => match v with | Vlong n => Some (Vlong n) | _ => None end | cast_case_i2l si => match v with | Vint n => Some(Vlong (cast_int_long si n)) | _ => None end | cast_case_l2i sz si => match v with | Vlong n => Some(Vint (cast_int_int sz si (Int.repr (Int64.unsigned n)))) | _ => None end | cast_case_l2f si1 => match v with | Vlong i => Some (Vfloat (cast_long_float si1 i)) | _ => None end | cast_case_l2s si1 => match v with | Vlong i => Some (Vsingle (cast_long_single si1 i)) | _ => None end | cast_case_f2l si2 => match v with | Vfloat f => match cast_float_long si2 f with | Some i => Some (Vlong i) | None => None end | _ => None end | cast_case_s2l si2 => match v with | Vsingle f => match cast_single_long si2 f with | Some i => Some (Vlong i) | None => None end | _ => None end | cast_case_struct id1 id2 => match v with | Vptr b ofs => if ident_eq id1 id2 then Some v else None | _ => None end | cast_case_union id1 id2 => match v with | Vptr b ofs => if ident_eq id1 id2 then Some v else None | _ => None end | cast_case_void => Some v | cast_case_default => None end. Inductive classify_bool_cases : Type := | bool_case_i | bool_case_l | bool_case_f | bool_case_s | bool_default. Definition classify_bool (ty: type) : classify_bool_cases := match typeconv ty with | Tint _ _ _ => bool_case_i | Tpointer _ _ => if Archi.ptr64 then bool_case_l else bool_case_i | Tfloat F64 _ => bool_case_f | Tfloat F32 _ => bool_case_s | Tlong _ _ => bool_case_l | _ => bool_default end. Definition bool_val (v: val) (t: type) (m: mem) : option bool := match classify_bool t with | bool_case_i => match v with | Vint n => Some (negb (Int.eq n Int.zero)) | Vptr b ofs => if Archi.ptr64 then None else if Mem.weak_valid_pointer m b (Ptrofs.unsigned ofs) then Some true else None | _ => None end | bool_case_l => match v with | Vlong n => Some (negb (Int64.eq n Int64.zero)) | Vptr b ofs => if negb Archi.ptr64 then None else if Mem.weak_valid_pointer m b (Ptrofs.unsigned ofs) then Some true else None | _ => None end | bool_case_f => match v with | Vfloat f => Some (negb (Float.cmp Ceq f Float.zero)) | _ => None end | bool_case_s => match v with | Vsingle f => Some (negb (Float32.cmp Ceq f Float32.zero)) | _ => None end | bool_default => None end. Definition sem_notbool (v: val) (ty: type) (m: mem): option val := option_map (fun b => Val.of_bool (negb b)) (bool_val v ty m). Inductive classify_neg_cases : Type := | neg_case_i(s: signedness) | neg_case_f | neg_case_s | neg_case_l(s: signedness) | neg_default. Definition classify_neg (ty: type) : classify_neg_cases := match ty with | Tint I32 Unsigned _ => neg_case_i Unsigned | Tint _ _ _ => neg_case_i Signed | Tfloat F64 _ => neg_case_f | Tfloat F32 _ => neg_case_s | Tlong si _ => neg_case_l si | _ => neg_default end. Definition sem_neg (v: val) (ty: type) : option val := match classify_neg ty with | neg_case_i sg => match v with | Vint n => Some (Vint (Int.neg n)) | _ => None end | neg_case_f => match v with | Vfloat f => Some (Vfloat (Float.neg f)) | _ => None end | neg_case_s => match v with | Vsingle f => Some (Vsingle (Float32.neg f)) | _ => None end | neg_case_l sg => match v with | Vlong n => Some (Vlong (Int64.neg n)) | _ => None end | neg_default => None end. Definition sem_absfloat (v: val) (ty: type) : option val := match classify_neg ty with | neg_case_i sg => match v with | Vint n => Some (Vfloat (Float.abs (cast_int_float sg n))) | _ => None end | neg_case_f => match v with | Vfloat f => Some (Vfloat (Float.abs f)) | _ => None end | neg_case_s => match v with | Vsingle f => Some (Vfloat (Float.abs (Float.of_single f))) | _ => None end | neg_case_l sg => match v with | Vlong n => Some (Vfloat (Float.abs (cast_long_float sg n))) | _ => None end | neg_default => None end. Inductive classify_notint_cases : Type := | notint_case_i(s: signedness) | notint_case_l(s: signedness) | notint_default. Definition classify_notint (ty: type) : classify_notint_cases := match ty with | Tint I32 Unsigned _ => notint_case_i Unsigned | Tint _ _ _ => notint_case_i Signed | Tlong si _ => notint_case_l si | _ => notint_default end. Definition sem_notint (v: val) (ty: type): option val := match classify_notint ty with | notint_case_i sg => match v with | Vint n => Some (Vint (Int.not n)) | _ => None end | notint_case_l sg => match v with | Vlong n => Some (Vlong (Int64.not n)) | _ => None end | notint_default => None end. Inductive binarith_cases: Type := | bin_case_i (s: signedness) | bin_case_l (s: signedness) | bin_case_f | bin_case_s | bin_default. Definition classify_binarith (ty1: type) (ty2: type) : binarith_cases := match ty1, ty2 with | Tint I32 Unsigned _, Tint _ _ _ => bin_case_i Unsigned | Tint _ _ _, Tint I32 Unsigned _ => bin_case_i Unsigned | Tint _ _ _, Tint _ _ _ => bin_case_i Signed | Tlong Signed _, Tlong Signed _ => bin_case_l Signed | Tlong _ _, Tlong _ _ => bin_case_l Unsigned | Tlong sg _, Tint _ _ _ => bin_case_l sg | Tint _ _ _, Tlong sg _ => bin_case_l sg | Tfloat F32 _, Tfloat F32 _ => bin_case_s | Tfloat _ _, Tfloat _ _ => bin_case_f | Tfloat F64 _, (Tint _ _ _ | Tlong _ _) => bin_case_f | (Tint _ _ _ | Tlong _ _), Tfloat F64 _ => bin_case_f | Tfloat F32 _, (Tint _ _ _ | Tlong _ _) => bin_case_s | (Tint _ _ _ | Tlong _ _), Tfloat F32 _ => bin_case_s | _, _ => bin_default end. Definition binarith_type (c: binarith_cases) : type := match c with | bin_case_i sg => Tint I32 sg noattr | bin_case_l sg => Tlong sg noattr | bin_case_f => Tfloat F64 noattr | bin_case_s => Tfloat F32 noattr | bin_default => Tvoid end. Definition sem_binarith (sem_int: signedness -> int -> int -> option val) (sem_long: signedness -> int64 -> int64 -> option val) (sem_float: float -> float -> option val) (sem_single: float32 -> float32 -> option val) (v1: val) (t1: type) (v2: val) (t2: type) (m: mem): option val := let c := classify_binarith t1 t2 in let t := binarith_type c in match sem_cast v1 t1 t m with | None => None | Some v1' => match sem_cast v2 t2 t m with | None => None | Some v2' => match c with | bin_case_i sg => match v1', v2' with | Vint n1, Vint n2 => sem_int sg n1 n2 | _, _ => None end | bin_case_f => match v1', v2' with | Vfloat n1, Vfloat n2 => sem_float n1 n2 | _, _ => None end | bin_case_s => match v1', v2' with | Vsingle n1, Vsingle n2 => sem_single n1 n2 | _, _ => None end | bin_case_l sg => match v1', v2' with | Vlong n1, Vlong n2 => sem_long sg n1 n2 | _, _ => None end | bin_default => None end end end. Inductive classify_add_cases : Type := | add_case_pi (ty: type) (si: signedness) | add_case_pl (ty: type) | add_case_ip (si: signedness) (ty: type) | add_case_lp (ty: type) | add_default. Definition classify_add (ty1: type) (ty2: type) := match typeconv ty1, typeconv ty2 with | Tpointer ty _, Tint _ si _ => add_case_pi ty si | Tpointer ty _, Tlong _ _ => add_case_pl ty | Tint _ si _, Tpointer ty _ => add_case_ip si ty | Tlong _ _, Tpointer ty _ => add_case_lp ty | _, _ => add_default end. Definition ptrofs_of_int (si: signedness) (n: int) : ptrofs := match si with | Signed => Ptrofs.of_ints n | Unsigned => Ptrofs.of_intu n end. Definition sem_add_ptr_int (cenv: composite_env) (ty: type) (si: signedness) (v1 v2: val): option val := match v1, v2 with | Vptr b1 ofs1, Vint n2 => let n2 := ptrofs_of_int si n2 in Some (Vptr b1 (Ptrofs.add ofs1 (Ptrofs.mul (Ptrofs.repr (sizeof cenv ty)) n2))) | Vint n1, Vint n2 => if Archi.ptr64 then None else Some (Vint (Int.add n1 (Int.mul (Int.repr (sizeof cenv ty)) n2))) | Vlong n1, Vint n2 => let n2 := cast_int_long si n2 in if Archi.ptr64 then Some (Vlong (Int64.add n1 (Int64.mul (Int64.repr (sizeof cenv ty)) n2))) else None | _, _ => None end. Definition sem_add_ptr_long (cenv: composite_env) (ty: type) (v1 v2: val): option val := match v1, v2 with | Vptr b1 ofs1, Vlong n2 => let n2 := Ptrofs.of_int64 n2 in Some (Vptr b1 (Ptrofs.add ofs1 (Ptrofs.mul (Ptrofs.repr (sizeof cenv ty)) n2))) | Vint n1, Vlong n2 => let n2 := Int.repr (Int64.unsigned n2) in if Archi.ptr64 then None else Some (Vint (Int.add n1 (Int.mul (Int.repr (sizeof cenv ty)) n2))) | Vlong n1, Vlong n2 => if Archi.ptr64 then Some (Vlong (Int64.add n1 (Int64.mul (Int64.repr (sizeof cenv ty)) n2))) else None | _, _ => None end. Definition sem_add (cenv: composite_env) (v1:val) (t1:type) (v2: val) (t2:type) (m: mem): option val := match classify_add t1 t2 with | add_case_pi ty si => sem_add_ptr_int cenv ty si v1 v2 | add_case_pl ty => sem_add_ptr_long cenv ty v1 v2 | add_case_ip si ty => sem_add_ptr_int cenv ty si v2 v1 | add_case_lp ty => sem_add_ptr_long cenv ty v2 v1 | add_default => sem_binarith (fun sg n1 n2 => Some(Vint(Int.add n1 n2))) (fun sg n1 n2 => Some(Vlong(Int64.add n1 n2))) (fun n1 n2 => Some(Vfloat(Float.add n1 n2))) (fun n1 n2 => Some(Vsingle(Float32.add n1 n2))) v1 t1 v2 t2 m end. Inductive classify_sub_cases : Type := | sub_case_pi (ty: type) (si: signedness) | sub_case_pp (ty: type) | sub_case_pl (ty: type) | sub_default. Definition classify_sub (ty1: type) (ty2: type) := match typeconv ty1, typeconv ty2 with | Tpointer ty _, Tint _ si _ => sub_case_pi ty si | Tpointer ty _ , Tpointer _ _ => sub_case_pp ty | Tpointer ty _, Tlong _ _ => sub_case_pl ty | _, _ => sub_default end. Definition sem_sub (cenv: composite_env) (v1:val) (t1:type) (v2: val) (t2:type) (m:mem): option val := match classify_sub t1 t2 with | sub_case_pi ty si => match v1, v2 with | Vptr b1 ofs1, Vint n2 => let n2 := ptrofs_of_int si n2 in Some (Vptr b1 (Ptrofs.sub ofs1 (Ptrofs.mul (Ptrofs.repr (sizeof cenv ty)) n2))) | Vint n1, Vint n2 => if Archi.ptr64 then None else Some (Vint (Int.sub n1 (Int.mul (Int.repr (sizeof cenv ty)) n2))) | Vlong n1, Vint n2 => let n2 := cast_int_long si n2 in if Archi.ptr64 then Some (Vlong (Int64.sub n1 (Int64.mul (Int64.repr (sizeof cenv ty)) n2))) else None | _, _ => None end | sub_case_pl ty => match v1, v2 with | Vptr b1 ofs1, Vlong n2 => let n2 := Ptrofs.of_int64 n2 in Some (Vptr b1 (Ptrofs.sub ofs1 (Ptrofs.mul (Ptrofs.repr (sizeof cenv ty)) n2))) | Vint n1, Vlong n2 => let n2 := Int.repr (Int64.unsigned n2) in if Archi.ptr64 then None else Some (Vint (Int.sub n1 (Int.mul (Int.repr (sizeof cenv ty)) n2))) | Vlong n1, Vlong n2 => if Archi.ptr64 then Some (Vlong (Int64.sub n1 (Int64.mul (Int64.repr (sizeof cenv ty)) n2))) else None | _, _ => None end | sub_case_pp ty => match v1,v2 with | Vptr b1 ofs1, Vptr b2 ofs2 => if eq_block b1 b2 then let sz := sizeof cenv ty in if zlt 0 sz && zle sz Ptrofs.max_signed then Some (Vptrofs (Ptrofs.divs (Ptrofs.sub ofs1 ofs2) (Ptrofs.repr sz))) else None else None | _, _ => None end | sub_default => sem_binarith (fun sg n1 n2 => Some(Vint(Int.sub n1 n2))) (fun sg n1 n2 => Some(Vlong(Int64.sub n1 n2))) (fun n1 n2 => Some(Vfloat(Float.sub n1 n2))) (fun n1 n2 => Some(Vsingle(Float32.sub n1 n2))) v1 t1 v2 t2 m end. Definition sem_mul (v1:val) (t1:type) (v2: val) (t2:type) (m:mem) : option val := sem_binarith (fun sg n1 n2 => Some(Vint(Int.mul n1 n2))) (fun sg n1 n2 => Some(Vlong(Int64.mul n1 n2))) (fun n1 n2 => Some(Vfloat(Float.mul n1 n2))) (fun n1 n2 => Some(Vsingle(Float32.mul n1 n2))) v1 t1 v2 t2 m. Definition sem_div (v1:val) (t1:type) (v2: val) (t2:type) (m:mem) : option val := sem_binarith (fun sg n1 n2 => match sg with | Signed => if Int.eq n2 Int.zero || Int.eq n1 (Int.repr Int.min_signed) && Int.eq n2 Int.mone then None else Some(Vint(Int.divs n1 n2)) | Unsigned => if Int.eq n2 Int.zero then None else Some(Vint(Int.divu n1 n2)) end) (fun sg n1 n2 => match sg with | Signed => if Int64.eq n2 Int64.zero || Int64.eq n1 (Int64.repr Int64.min_signed) && Int64.eq n2 Int64.mone then None else Some(Vlong(Int64.divs n1 n2)) | Unsigned => if Int64.eq n2 Int64.zero then None else Some(Vlong(Int64.divu n1 n2)) end) (fun n1 n2 => Some(Vfloat(Float.div n1 n2))) (fun n1 n2 => Some(Vsingle(Float32.div n1 n2))) v1 t1 v2 t2 m. Definition sem_mod (v1:val) (t1:type) (v2: val) (t2:type) (m:mem) : option val := sem_binarith (fun sg n1 n2 => match sg with | Signed => if Int.eq n2 Int.zero || Int.eq n1 (Int.repr Int.min_signed) && Int.eq n2 Int.mone then None else Some(Vint(Int.mods n1 n2)) | Unsigned => if Int.eq n2 Int.zero then None else Some(Vint(Int.modu n1 n2)) end) (fun sg n1 n2 => match sg with | Signed => if Int64.eq n2 Int64.zero || Int64.eq n1 (Int64.repr Int64.min_signed) && Int64.eq n2 Int64.mone then None else Some(Vlong(Int64.mods n1 n2)) | Unsigned => if Int64.eq n2 Int64.zero then None else Some(Vlong(Int64.modu n1 n2)) end) (fun n1 n2 => None) (fun n1 n2 => None) v1 t1 v2 t2 m. Definition sem_and (v1:val) (t1:type) (v2: val) (t2:type) (m:mem) : option val := sem_binarith (fun sg n1 n2 => Some(Vint(Int.and n1 n2))) (fun sg n1 n2 => Some(Vlong(Int64.and n1 n2))) (fun n1 n2 => None) (fun n1 n2 => None) v1 t1 v2 t2 m. Definition sem_or (v1:val) (t1:type) (v2: val) (t2:type) (m:mem) : option val := sem_binarith (fun sg n1 n2 => Some(Vint(Int.or n1 n2))) (fun sg n1 n2 => Some(Vlong(Int64.or n1 n2))) (fun n1 n2 => None) (fun n1 n2 => None) v1 t1 v2 t2 m. Definition sem_xor (v1:val) (t1:type) (v2: val) (t2:type) (m:mem) : option val := sem_binarith (fun sg n1 n2 => Some(Vint(Int.xor n1 n2))) (fun sg n1 n2 => Some(Vlong(Int64.xor n1 n2))) (fun n1 n2 => None) (fun n1 n2 => None) v1 t1 v2 t2 m. Inductive classify_shift_cases : Type:= | shift_case_ii(s: signedness) | shift_case_ll(s: signedness) | shift_case_il(s: signedness) | shift_case_li(s: signedness) | shift_default. Definition classify_shift (ty1: type) (ty2: type) := match typeconv ty1, typeconv ty2 with | Tint I32 Unsigned _, Tint _ _ _ => shift_case_ii Unsigned | Tint _ _ _, Tint _ _ _ => shift_case_ii Signed | Tint I32 Unsigned _, Tlong _ _ => shift_case_il Unsigned | Tint _ _ _, Tlong _ _ => shift_case_il Signed | Tlong s _, Tint _ _ _ => shift_case_li s | Tlong s _, Tlong _ _ => shift_case_ll s | _,_ => shift_default end. Definition sem_shift (sem_int: signedness -> int -> int -> int) (sem_long: signedness -> int64 -> int64 -> int64) (v1: val) (t1: type) (v2: val) (t2: type) : option val := match classify_shift t1 t2 with | shift_case_ii sg => match v1, v2 with | Vint n1, Vint n2 => if Int.ltu n2 Int.iwordsize then Some(Vint(sem_int sg n1 n2)) else None | _, _ => None end | shift_case_il sg => match v1, v2 with | Vint n1, Vlong n2 => if Int64.ltu n2 (Int64.repr 32) then Some(Vint(sem_int sg n1 (Int64.loword n2))) else None | _, _ => None end | shift_case_li sg => match v1, v2 with | Vlong n1, Vint n2 => if Int.ltu n2 Int64.iwordsize' then Some(Vlong(sem_long sg n1 (Int64.repr (Int.unsigned n2)))) else None | _, _ => None end | shift_case_ll sg => match v1, v2 with | Vlong n1, Vlong n2 => if Int64.ltu n2 Int64.iwordsize then Some(Vlong(sem_long sg n1 n2)) else None | _, _ => None end | shift_default => None end. Definition sem_shl (v1:val) (t1:type) (v2: val) (t2:type) : option val := sem_shift (fun sg n1 n2 => Int.shl n1 n2) (fun sg n1 n2 => Int64.shl n1 n2) v1 t1 v2 t2. Definition sem_shr (v1:val) (t1:type) (v2: val) (t2:type) : option ```
Intermediate Coq File (useful for debugging if minimization did not go as far as you wanted) (truncated to 8.0KiB; full 20KiB file on GitHub Actions Artifacts under tmp.v) ```coq (* -*- mode: coq; coq-prog-args: ("-emacs" "-w" "none" "-R" "/github/workspace/VST/compcert" "compcert" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/VST/msl" "VST.msl" "-Q" "/github/workspace/VST/sepcomp" "VST.sepcomp" "-Q" "/github/workspace/VST/veric" "VST.veric" "-Q" "/github/workspace/VST/floyd" "VST.floyd" "-Q" "/github/workspace/VST/progs" "VST.progs" "-Q" "/github/workspace/VST/concurrency" "VST.concurrency" "-Q" "/github/workspace/VST/ccc26x86" "VST.ccc26x86" "-Q" "/github/workspace/VST/wand_demo" "wand_demo" "-Q" "/github/workspace/VST/sha" "sha" "-Q" "/github/workspace/VST/fcf" "fcf" "-Q" "/github/workspace/VST/hmacfcf" "hmacfcf" "-Q" "/github/workspace/VST/tweetnacl20140427" "tweetnacl20140427" "-Q" "/github/workspace/VST/hmacdrbg" "hmacdrbg" "-Q" "/github/workspace/VST/aes" "aes" "-Q" "/github/workspace/VST/mailbox" "mailbox" "-top" "bug_01") -*- *) (* File reduced by coq-bug-minimizer from original input, then from 1507 lines to 166 lines, then from 179 lines to 1613 lines, then from 1618 lines to 283 lines, then from 296 lines to 1447 lines, then from 1447 lines to 305 lines, then from 318 lines to 2145 lines, then from 2137 lines to 360 lines, then from 373 lines to 520 lines, then from 523 lines to 388 lines, then from 401 lines to 1790 lines, then from 1792 lines to 448 lines, then from 461 lines to 1138 lines, then from 1142 lines to 444 lines, then from 457 lines to 1784 lines, then from 1789 lines to 481 lines, then from 494 lines to 2397 lines, then from 2398 lines to 682 lines, then from 689 lines to 676 lines, then from 689 lines to 1896 lines, then from 1895 lines to 680 lines, then from 693 lines to 779 lines, then from 784 lines to 693 lines, then from 706 lines to 1627 lines, then from 1629 lines to 699 lines, then from 712 lines to 1325 lines, then from 1329 lines to 717 lines, then from 731 lines to 1132 lines, then from 1138 lines to 704 lines, then from 718 lines to 1032 lines, then from 1037 lines to 706 lines, then from 720 lines to 2384 lines, then from 2385 lines to 993 lines, then from 1007 lines to 2529 lines, then from 2521 lines to 921 lines, then from 934 lines to 900 lines, then from 913 lines to 8941 lines, then from 8933 lines to 998 lines, then from 1011 lines to 1062 lines, then from 1068 lines to 1000 lines, then from 1014 lines to 1130 lines, then from 1136 lines to 1023 lines, then from 1037 lines to 1393 lines, then from 1392 lines to 1024 lines, then from 1038 lines to 1232 lines, then from 1238 lines to 1024 lines, then from 1038 lines to 1857 lines, then from 1863 lines to 1049 lines, then from 1063 lines to 2896 lines, then from 2897 lines to 679 lines *) (* coqc version 8.7.2 (February 2022) compiled on Feb 7 2022 22:17:26 with OCaml 4.09.1 coqtop version 8.7.2 (February 2022) Modules that could not be inlined: VST.msl.predicates_hered Expected coqc runtime on this file: 10.087 sec *) Require Coq.Logic.ClassicalFacts. Require Coq.Logic.FunctionalExtensionality. Require VST.msl.Axioms. Require Coq.Logic.EqdepFacts. Require VST.msl.Extensionality. Require Coq.Lists.List. Require Coq.Bool.Bool. Require Coq.Relations.Relations. Require Coq.omega.Omega. Require VST.msl.base. Require VST.msl.eq_dec. Require VST.msl.sepalg. Require Coq.Structures.GenericMinMax. Require VST.msl.boolean_alg. Require VST.msl.functors. Require VST.msl.sepalg_generators. Require VST.msl.seplog. Require Coq.ZArith.ZArith. Require Coq.ZArith.Znumtheory. Require compcert.lib.Coqlib. Require Coq.Strings.String. Require Coq.Classes.Equivalence. Require Coq.Classes.EquivDec. Require compcert.lib.Maps. Require compcert.common.Errors. Require Coq.Logic.Eqdep_dec. Require Coq.ZArith.Zquot. Require Coq.ZArith.Zwf. Require Coq.Reals.Reals. Require compcert.flocq.Core.Fcore_Zaux. Require compcert.flocq.Core.Fcore_Raux. Require compcert.flocq.Core.Fcore_defs. Require compcert.flocq.Core.Fcore_float_prop. Require compcert.flocq.Core.Fcore_rnd. Require compcert.flocq.Core.Fcore_generic_fmt. Require Coq.micromega.Psatz. Require compcert.flocq.Core.Fcore_ulp. Require compcert.flocq.Core.Fcore_rnd_ne. Require compcert.flocq.Core.Fcore_FIX. Require compcert.flocq.Core.Fcore_FLX. Require compcert.flocq.Core.Fcore_FLT. Require compcert.flocq.Core.Fcore. Require compcert.flocq.Core.Fcore_digits. Require compcert.flocq.Calc.Fcalc_digits. Require compcert.flocq.Calc.Fcalc_bracket. Require compcert.flocq.Calc.Fcalc_round. Require compcert.flocq.Calc.Fcalc_ops. Require compcert.flocq.Calc.Fcalc_div. Require compcert.flocq.Calc.Fcalc_sqrt. Require compcert.flocq.Prop.Fprop_relative. Require compcert.flocq.Appli.Fappli_IEEE. Require compcert.flocq.Appli.Fappli_IEEE_bits. Require compcert.x86_32.Archi. Require compcert.lib.Integers. Require compcert.flocq.Prop.Fprop_Sterbenz. Require compcert.flocq.Appli.Fappli_rnd_odd. Require compcert.lib.Fappli_IEEE_extra. Require Coq.Program.Program. Require compcert.lib.Floats. Require compcert.common.AST. Require compcert.common.Values. Require compcert.lib.Axioms. Require Coq.Program.Wf. Require Coq.funind.Recdef. Require compcert.lib.Intv. Require compcert.common.Memdata. Require compcert.common.Memtype. Require compcert.common.Memory. Require compcert.common.Linking. Require compcert.cfrontend.Ctypes. Require Coq.Wellfounded.Wellfounded. Require VST.msl.ageable. Require VST.msl.predicates_hered. Declare ML Module "ltac_plugin". Module Export AdmitTactic. Module Import LocalFalse. Inductive False : Prop := . End LocalFalse. Axiom proof_admitted : False. Global Set Default Proof Mode "Classic". Tactic Notation "admit" := abstract case proof_admitted. End AdmitTactic. Module compcert_DOT_cfrontend_DOT_Cop_WRAPPED. Module Cop. Import compcert.lib.Coqlib. Import compcert.common.AST. Import compcert.lib.Integers. Import compcert.lib.Floats. Import compcert.common.Values. Import compcert.common.Memory. Import compcert.cfrontend.Ctypes. Definition cast_int_int (sz: intsize) (sg: signedness) (i: int) : int := match sz, sg with | I8, Signed => Int.sign_ext 8 i | I8, Unsigned => Int.zero_ext 8 i | I16, Signed => Int.sign_ext 16 i | I16, Unsigned => Int.zero_ext 16 i | I32, _ => i | IBool, _ => if Int.eq i Int.zero then Int.zero else Int.one end. Section GENERIC_INJECTION. Variable f: meminj. Remark val_inject_vtrue: forall f, Val.inject f Vtrue Vtrue. Proof. unfold Vtrue; auto. Qed. Remark val_inject_vfalse: forall f, Val.inject f Vfalse Vfalse. Proof. unfold Vfalse; auto. Qed. Remark val_inject_of_bool: forall f b, Val.inject f (Val.of_bool b) (Val.of_bool b). Proof. intros. unfold Val.of_bool. destruct b; [apply val_inject_vtrue|apply val_inject_vfalse]. Qed. Remark val_inject_vptrofs: forall n, Val.inject f (Vptrofs n) (Vptrofs n). Proof. intros. unfold Vptrofs. destruct Archi.ptr64; auto. Qed. Hint Resolve val_inject_vtrue val_inject_vfalse val_inject_of_bool val_inject_vptrofs. End GENERIC_INJECTION. Section VAL_CASTED. Inductive val_casted: val -> type -> Prop := | val_casted_int: forall sz si attr n, cast_int_int sz si n = n -> val_casted (Vint n) (Tint sz si attr) | val_casted_float: forall attr n, val_casted (Vfloat n) (Tfloat F64 attr) | val_casted_single: forall attr n, val_casted (Vsingle n) (Tfloat F32 attr) | val_casted_long: forall si attr n, val_casted (Vlong n) (Tlong si attr) | val_casted_ptr_ptr: forall b ofs ty attr, val_casted (Vptr b ofs) (Tpointer ty attr) | val_casted_int_ptr: forall n ty attr, Archi.ptr64 = false -> val_casted (Vint n) (Tpointer ty attr) | val_casted_ptr_int: forall b ofs si attr, Archi.ptr64 = false -> val_casted (Vptr b ofs) (Tint I32 si attr) | val_casted_long_ptr: forall n ty attr, Archi.ptr64 = true -> val_casted (Vlong n) (Tpointer ty attr) | val_casted_ptr_long: forall b ofs si attr, Archi.ptr64 = true -> val_casted (Vptr b ofs) (Tlong si attr) | val_casted_struct: forall id attr b ofs, val_casted (Vptr b ofs) (Tstruct id attr) | val_casted_union: forall id attr b ofs, val_casted (Vptr b ofs) (Tunion id attr) | val_casted_void: forall v, val_casted v Tvoid. Hint Const ```
Build Log (contains the Coq error message) (truncated to last 8.0KiB; full 315KiB file on GitHub Actions Artifacts under build.log) ``` VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert -compile veric/semax_call.v COQC veric/initialize.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqc MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqc.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert veric/initialize.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert -compile veric/initialize.v COQC veric/semax_prog.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqc MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqc.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert veric/semax_prog.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert -compile veric/semax_prog.v COQC veric/semax_ext.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqc MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqc.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert veric/semax_ext.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert -compile veric/semax_ext.v COQC veric/SeparationLogic.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqc MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqc.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert veric/SeparationLogic.v MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/VST MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert -compile veric/SeparationLogic.v File "./veric/SeparationLogic.v", line 253, characters 58-63: Error: In environment it : ident * type The term "mpred" has type "Type@{max(VST.msl.predicates_hered.3, Set+1)}" while it is expected to have type "Type@{VST.veric.SeparationLogic.74}" (universe inconsistency). make: *** [Makefile:392: veric/SeparationLogic.vo] Error 1 ```
Minimization Log (truncated to last 8.0KiB; full 945KiB file on GitHub Actions Artifacts under bug.log) ``` erve the error. Writing changed file to /github/workspace/cwd/tmp.v. The new error was: MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -R /github/workspace/VST/compcert compcert -Q /github/workspace/cwd Top -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -top bug_01 -R /tmp/tmpq98to8ny '' -q -compile /tmp/tmpq98to8ny/bug_01.v File "/tmp/tmpq98to8ny/bug_01.v", line 279, characters 2-145: Error: KI' already exists Now, I will attempt to strip repeated newlines and trailing spaces from this file... Succeeded in stripping newlines and spaces. getting /github/workspace/cwd/bug_01.v WARNING: Assuming that /github/workspace/cwd/bug_01.glob is not a valid reflection of /github/workspace/cwd/bug_01.v because /github/workspace/cwd/bug_01.v is newer (1644290553 >= 1644288408) getting bug_01.v (/github/workspace/cwd/bug_01.v) NOTE: The file bug_01.v is very new (1644290553, 0 seconds old), delaying until it's a bit older /home/coq/.opam/coq.8.7.2/bin/coq_makefile COQC = /home/coq/.opam/coq.8.7.2/bin/coqc.orig -o Makefile_rj19sbc.coq -R /github/workspace/VST/compcert compcert -Q /github/workspace/cwd Top -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert -Q /github/workspace/cwd Top -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -arg -w -arg none bug_01.v make -k -f Makefile_rj19sbc.coq bug_01.glob getting bug_01.glob (/github/workspace/cwd/bug_01.glob) getting ../VST/compcert/cfrontend/Cop.glob (/github/workspace/VST/compcert/cfrontend/Cop.glob) getting /github/workspace/cwd/bug_01.glob getting /github/workspace/cwd/bug_01.glob The timeout for /home/coq/.opam/coq.8.7.2/bin/coqc.orig has been set to: 30 Inlining compcert.cfrontend.Cop via Include, stripping Requires succeeded. Sanity check passed. Now, I will attempt to strip repeated newlines and trailing spaces from this file... Succeeded in stripping newlines and spaces. Now, I will attempt to strip the comments from this file... Succeeded in stripping comments. Now, I will attempt to factor out all of the [Require]s... getting bug_01.v (/github/workspace/cwd/bug_01.v) NOTE: The file bug_01.v is very new (1644290600, 0 seconds old), delaying until it's a bit older /home/coq/.opam/coq.8.7.2/bin/coq_makefile COQC = /home/coq/.opam/coq.8.7.2/bin/coqc.orig -o Makefileo8_ivwl8.coq -R /github/workspace/VST/compcert compcert -Q /github/workspace/cwd Top -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -R /github/workspace/VST/compcert compcert -Q /github/workspace/cwd Top -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -arg -w -arg none bug_01.v make -k -f Makefileo8_ivwl8.coq bug_01.glob getting bug_01.glob (/github/workspace/cwd/bug_01.glob) getting bug_01.glob (/github/workspace/cwd/bug_01.glob) Succeeded in normalizing Requires. Now, I will attempt to split up [Require] statements... getting /github/workspace/cwd/bug_01.v getting /github/workspace/cwd/bug_01.glob getting /github/workspace/cwd/bug_01.glob No Requires to split. In order to efficiently manipulate the file, I have to break it into statements. I will attempt to do this by matching on periods. Splitting successful. I will now attempt to remove any lines after the line which generates the error. No lines to trim. In order to efficiently manipulate the file, I have to break it into definitions. I will now attempt to do this. Sending statements to coqtop... Done. Splitting to definitions... Splitting to definitions successful. I will now attempt to remove goals ending in [Abort.] Aborted removal successful. I will now attempt to remove unused Ltacs Ltac removal successful. I will now attempt to remove unused definitions Non-fatal error: Failed to remove definitions and preserve the error. Writing intermediate code to /github/workspace/cwd/tmp.v. The new error was: MINIMIZER_DEBUG: /home/coq/.opam/coq.8.7.2/bin/coqtop MINIMIZER_DEBUG: coqpath: COQPATH= MINIMIZER_DEBUG: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci MINIMIZER_DEBUG: exec: /home/coq/.opam/coq.8.7.2/bin/coqtop.orig -w none -R /github/workspace/VST/compcert compcert -Q /github/workspace/cwd Top -Q /github/workspace/VST/msl VST.msl -Q /github/workspace/VST/sepcomp VST.sepcomp -Q /github/workspace/VST/veric VST.veric -Q /github/workspace/VST/floyd VST.floyd -Q /github/workspace/VST/progs VST.progs -Q /github/workspace/VST/concurrency VST.concurrency -Q /github/workspace/VST/ccc26x86 VST.ccc26x86 -Q /github/workspace/VST/wand_demo wand_demo -Q /github/workspace/VST/sha sha -Q /github/workspace/VST/fcf fcf -Q /github/workspace/VST/hmacfcf hmacfcf -Q /github/workspace/VST/tweetnacl20140427 tweetnacl20140427 -Q /github/workspace/VST/hmacdrbg hmacdrbg -Q /github/workspace/VST/aes aes -Q /github/workspace/VST/mailbox mailbox -top bug_01 -R /tmp/tmpc705o2w9 '' -q -compile /tmp/tmpc705o2w9/bug_01.v File "/tmp/tmpc705o2w9/bug_01.v", line 262, characters 2-9: Error: The field Ord is missing in bug_01.VST_DOT_veric_DOT_base_WRAPPED.VST.veric.Share.BA. I will now attempt to remove unused non-instance, non-canonical structure definitions ```

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross). If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

JasonGross commented 2 years ago

@coqbot minimize coq.dev

true | coqtop
opam install -y coq-fiat-crypto.dev
JasonGross commented 2 years ago

@coqbot merge now

JasonGross commented 2 years ago

@coqbot minimize coq.dev

true | coqtop
opam install -y coq-fiat-crypto.dev
JasonGross commented 2 years ago

@coqbot minimize

true | coqtop
opam install -y coq-fiat-crypto.dev
JasonGross commented 2 years ago

@coqbot minimize

true | coqtop
opam install -y coq-fiat-crypto.dev
JasonGross commented 2 years ago

@coqbot minimize coq.dev

true | coqtop
opam install -y coq-fiat-crypto.dev