The Passport automated Coq proof script synthesis tool
The following are the directions for installation and use of Passport.
Passport operates within the CoqGym learning environment and so modifies their code.
- Create an OPAM switch for OCaml 4.07.1+flambda:
opam switch create 4.07.1+flambda && eval $(opam env)
- Upgrade the installed OPAM packages (optional):
opam upgrade && eval $(opam env)
- Clone the repository:
git clone https://github.com/LASER-UMASS/Passport.git
- Install Coq, SerAPI and CoqHammer:
cd Passport && source install.sh
- Build the Coq projects (can take a while):
cd coq_projects && make && cd ..
- Create and activate the conda environment:
conda env create -f passport.yml && conda activate passport
The source install.sh
command will modify your terminals
environmental variables for working with Passport, as well as building
and installing dependencies. If you open a new terminal after the
building and installing is done, run source swarm/prelude.sh
to
initialize your terminal environment.
For any Coq project that compiles in Coq 8.9.1 that you want to use (and may not be in the CoqGym dataset), the following are the steps to extract the proofs from code:
- Copy the project into the
coq_projects
directory. - For each
*.meta
file in the project, runpython check_proofs.py --file /path/to/*.meta
This generates a*.json
file in./data/
corresponding to each*.meta
file. Theproofs
field of the JSON object is a list containing the proof names. - For each
*.meta
file and each proof, run:
python extract_proof.py --file /path/to/*.meta --proof $PROOF_NAME
python extract_synthetic_proofs.py --file /path/to/*.meta --proof $PROOF_NAME
- Finally, run
python postprocess.py
To download the CoqGym dataset, please refer to the CoqGym repo for the latest instructions.
Proofs steps used in the paper are found in processed.tar.gz
, which can be downloaded from a shared Google drive link here. This should be copied into Passport/
. When you uncompress it,
you will see the directory proof_steps/
.
2. To extract new proofs, run python extract_proof_steps.py
.
To train, for example, the Tok model on all the proof steps, run
python main.py --no_validation --exp_id tok --no-locals-file --training
Model checkpoints will be saved in Passport/runs/tok/checkpoints/
. See options.py
for command line options.
Now, you can evaluate a model you trained on the test set. For example, the Tok model that you trained can be run with python evaluate.py ours tok-results --path /path/to/tok_model/*.pth --no-locals-file
.
If you used additional options in training, specify those same options for evaluating.
Some pre-trained models from the paper (Tok+Passport, Tac+Passport, ASTactic+Passport) are available here. Once you download and unzip, the model weights are found in the checkpoints/
dir of each model variant's directory. We recommend using model_002.pth
.