Skip to content

Commit 5998fbf

Browse files
committed
ci: add Coq tests
1 parent 67a2c13 commit 5998fbf

File tree

2 files changed

+82
-0
lines changed

2 files changed

+82
-0
lines changed

.github/workflows/coq.yml

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: Coq
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
pull_request:
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
strategy:
13+
matrix:
14+
target: [x86_64-unknown-linux-gnu]
15+
16+
steps:
17+
- name: Checkout Noir repo
18+
uses: actions/checkout@v4
19+
20+
- name: Download Git submodules
21+
run: git submodule update --init --recursive
22+
23+
- name: Run the Coq tests
24+
uses: coq-community/docker-coq-action@v1
25+
with:
26+
custom_image: coqorg/coq:8.17-ocaml-4.14-flambda
27+
custom_script: |
28+
startGroup "Install dependencies"
29+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
30+
source "$HOME/.cargo/env"
31+
cargo --version
32+
sudo ln -s `which python3` /usr/bin/python
33+
opam install -y --deps-only CoqOfNoir/coq-of-noir.opam
34+
endGroup
35+
startGroup "Install"
36+
sudo chown -R $(whoami) .
37+
cargo install --package nargo_cli
38+
endGroup
39+
startGroup "Checkout noir_base64 example"
40+
git checkout https://github.com/noir-lang/noir_base64.git
41+
cd noir_base64/
42+
git checkout eb933f20b8175132f8e965e519b98c41ad805af1
43+
cd ..
44+
endGroup
45+
startGroup "Convert to Coq"
46+
cd noir_base64/
47+
nargo test --show-monomorphized
48+
cd ..
49+
python scripts/coq_of_noir.py noir_base64/monomorphized_program.json >CoqOfNoir/base64/translation.v
50+
endGroup
51+
startGroup "Check that the diff is empty (excluding submodules)"
52+
git -c color.ui=always diff --exit-code --ignore-submodules=dirty
53+
endGroup
54+
startGroup "Compile Coq translations"
55+
cd CoqOfNoir
56+
make
57+
cd ..
58+
endGroup

CoqOfNoir/coq-of-noir.opam

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
opam-version: "2.0"
2+
name: "coq-of-noir"
3+
version: "0.1"
4+
synopsis: "Coq of Noir"
5+
description: """
6+
Formal verification for Noir by translation to the proof system Coq
7+
"""
8+
maintainer: "Guillaume Claret <dev@clarus.me>"
9+
authors: [
10+
"Formal Land <contact@formal.land>"
11+
]
12+
license: "MIT and APACHE-2.0"
13+
homepage: "https://github.com/formal-land/coq-of-noir"
14+
bug-reports: "https://github.com/formal-land/coq-of-noir/issues"
15+
dev-repo: "git+https://github.com/formal-land/coq-of-noir.git"
16+
depends: [
17+
"ocaml" {>= "4.08"}
18+
"coq" {>= "8.17.1" & < "8.18"}
19+
"coq-hammer" {>= "1.3.2+8.17" & < "1.3.2+8.18"}
20+
"coq-coqutil" {>= "0.0.5"}
21+
]
22+
build: [
23+
[make]
24+
]

0 commit comments

Comments
 (0)