GithubHelp home page GithubHelp logo

coq / platform Goto Github PK

View Code? Open in Web Editor NEW
185.0 185.0 47.0 170.05 MB

Multi platform setup for Coq, Coq libraries and tools

License: Creative Commons Zero v1.0 Universal

Shell 83.07% Batchfile 5.74% NSIS 6.53% C 1.81% Coq 2.85%

platform's Introduction

Coq

GitLab CI GitHub macOS CI GitHub Windows CI Zulip Discourse DOI

Coq is a formal proof management system. It provides a formal language to write mathematical definitions, executable algorithms and theorems together with an environment for semi-interactive development of machine-checked proofs.

Installation

latest packaged version(s)

Docker Hub package latest dockerized version

Please see https://coq.inria.fr/download. Information on how to build and install from sources can be found in INSTALL.md.

Documentation

The sources of the documentation can be found in directory doc. See doc/README.md to learn more about the documentation, in particular how to build it. The documentation of the last released version is available on the Coq web site at coq.inria.fr/documentation. See also Cocorico (the Coq wiki), and the Coq FAQ, for additional user-contributed documentation.

The documentation of the master branch is continuously deployed. See:

Changes

The Recent changes chapter of the reference manual explains the differences and the incompatibilities of each new version of Coq. If you upgrade Coq, please read it carefully as it contains important advice on how to approach some problems you may encounter.

Questions and discussion

We have a number of channels to reach the user community and the development team:

  • Our Zulip chat, for casual and high traffic discussions.
  • Our Discourse forum, for more structured and easily browsable discussions and Q&A.
  • Our historical mailing list, the Coq-Club.

See also coq.inria.fr/community, which lists several other active platforms.

Bug reports

Please report any bug / feature request in our issue tracker.

To be effective, bug reports should mention the OCaml version used to compile and run Coq, the Coq version (coqtop -v), the configuration used, and include a complete source example leading to the bug.

Contributing to Coq

Guidelines for contributing to Coq in various ways are listed in the contributor's guide.

Information about release plans is at https://github.com/coq/coq/wiki/Release-Plan

Supporting Coq

Help the Coq community grow and prosper by becoming a sponsor! The Coq Consortium can establish sponsorship contracts or receive donations. If you want to take an active role in shaping Coq's future, you can also become a Consortium member. If you are interested, please get in touch!

platform's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

platform's Issues

[wish] [snap] source pre downloading

This wish would enable snapcraft.io to build for us the snap package on architecture other than x86_64 (eg aarch64). I don't know how popular linux PC on arm will become in the near future, so it's not super high priority. Today we are limited to x86_64 since the github action runners are only on this arch (one can add a custom linux runner if he wants, but we don't have one).

The problem is that snapcraft remote build happens in a sadboxed environment which has no network access: all the sources need to be downloaded as a build dependency or as a source entry in the snap file.

The request is:

  • a mode where the scripts only download the sources (of opam files, but also opam installer), to be run locally before calling snapcraft remote-build --build-on=arm64
  • a mode were a local directory is used to "download" sources of things (both by the scripts and by opam), to be used by the scripts when run from the snap

I have no idea how feasilble this is. Maybe it's easier to buy an arm linux box and link it to github actions.

Documentation has references to github.com/MSoegtropIMC

Now that the official home of the Coq Platform is github.com/coq/platform, there are references to github.com/MSoegtropIMC/coq-platform that should be changed.
These are in the README.md, but also in the release notes for the beta1 tag, that is, https://github.com/coq/platform/blob/v8.12.0+beta1/README.md

Extrude artifact filtering code from windows installer

The snap package needs to trim down the opam root as well.
The filtering code is a bit tied to nsh files, some refactoring may be needed in order to reuse it.
Something like for f in $files; do cp $f $SNAP_PART_INSTALL/; done is sufficient, but today $files is "implicit" in the .nsh files which are almost lists of files but not entirely

How to make the documentation more user-friendly

README.md is addressed to coq developers and other sophisticated insiders. This was appropriate when this Platform was under initial development, but now we should hope that most readers of the documentation will be ordinary users. Therefore, I would suggest:

  1. Most users should not clone the repo, but just download a release.

  2. Split README.md into two files, the other being USAGE.md, which explains how to use the Coq Platform. All the material starting with "Usage of the ..." should be in USAGE.md. In the README, right before Note on Licenses, there should be:

    • Suggestion to choose the latest release from github.com/coq/platform/releases
    • Prominent link to USAGE.md.
  3. The release notes (the "body" text of the release) should have a prominent link to USAGE.md

  4. Proposed edits of USAGE.md are attached
    USAGE.txt
    (My apologies for doing it this way, instead of more professionally as a pull request.)

  5. It is "brittle" to have the switch-name repeated so many times in USAGE.md. It would be better to generate USAGE.md from a script that pastes in the result of calculating the name via coq_platform_switch_name.sh.

installation failed

The setup script failed for me. Using macOS and macports. Edited the script to use full version since I need clightgen
(opam install coq-compcert.3.7+8.12~coq_platform).
In brief it's opam packages:
┌─ The following actions failed
│ λ build coq-coquelicot 3.1.0
│ λ build coq-flocq 3.3.1

Here's the full trace FWIW.
coq-platform-error-trace.txt

Warning on non-existing opam repo

On my machine (wsl with archlinux), I get a warning:

Found opam 2.0.7 - good!   /usr/sbin/opam 
===== opam already initialized =====
===== CREATE OPAM SWITCH =====
[WARNING] No configured repositories by these names found: patch_coq-platform_.8.12.0+beta1                                                    [patch_coq-platform_.8.12.0+beta1] Initialised    

missed dependency checks? (autoconf and automake)

As I understand the script is meant to detect and resolve all dependencies. On macOS I pulled the current version of beta1 (commit 1dfaf7c) and ran it to install including full CompCert and VST. It prompted me to run port to install some dependencies (bison boost flex gmp mpfr) but then broke because autoconf was missing. After I installed autoconf, it got as far as VST but failed on gappa which requires aclocal (transcript attached). After using port to install automake, the coq-platform installation completed successfully.

coq-platform-error-aclocal.txt

Notarize CoqIDE for macOS >= 10.15

Description of the problem

As described in https://coq.zulipchat.com/#narrow/stream/237656-Coq-devs.20.26.20plugin.20devs/topic/Testing.20the.20signed.20installers.20for.208.2E12.2E0

After installing CoqIDE on Catalina, running it gives:

“CoqIDE_8.12.0.app” can’t be opened because Apple cannot check it for malicious software.
This software needs to be updated. Contact the developer for more information.

There's no visible option to open it anyway, but the usual workaround for unsigned code (right-click + open) seems to work.

IIUC, that warning means that the software is not notarized — that is, submitted for automated review to Apple (this is not the review for the App Store). Notarization is necessary since macOS 10.15 Catalina:

https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution

One can also notarize existing software — I'm not sure if one has to update the released package, or if the notarization can be stored Apple-side.

Coq Version

I verified this for 8.12.0; @TheoWinterhalter verified this for both 8.12.0 and 8.11.1.

Add CoqEAL to the Coq Platform

CoqEAL is (mainly) a library for performing data refinement, such as refining a function using nat to a function using binary integers (Z) while preserving all relevant properties. Since early 2019, CoqEAL has had releases supporting recent Coq. It depends on the usual MathComp packages already in the platform, as well as Paramcoq and Multinomials.

To my knowledge, there are no similar libraries for performing data refinement in Coq itself (as opposed to in some embedded language). Hence, I propose that CoqEAL is added to the Coq Platform.

The maintainers of CoqEAL are @proux01 and @CohenCyril.

Coq platform for research artifact evaluation

The research communities around programming languages, formal methods, and software engineering are continually expanding and improving artifact evaluation for their premier conferences. Some examples:

The Coq platform is a natural focal point for research artifacts based on Coq and OCaml. Researchers can potentially target a Coq platform version for their submitted artifact, and this platform version is then used by the committee during artifact evaluation, which minimizes packaging and distribution effort for both parties, and ensures reproducibility. The Coq platform can also provide a format for packaging the artifacts for long-time archiving.

However, Coq platform maintainers will likely have to coordinate with artifact evaluation committee chairs so that the Coq platform is permitted as part of mandated evaluation environments. For example, a virtual machine may be mandated which does not directly support the Coq platform without significant work by the submitting researchers.

Since the POPL AE traditionally has many Coq artifacts, e.g., around 10 out of 40 artifacts submitted during 2019, coordinating with the chairs of that committee is a natural first step.

Coq installer makes binaries available?

Description of the problem

We teach using Coq at an introductory level (second course for CS majors), where many of the students aren't particularly familiar with the terminal. The startup cost---whether we use CoqIDE or Proof General---is fairly high; in both setups, we've had to use coqc on the terminal to manually compile things.

It would be helpful to us if CoqIDE, on installation, either:

(a) symlinked /usr/local/bin/coq* to the installation location (e.g., /Applications/CoqIDE\ 8.10.2.app/Contents, or
(b) added the installation location to the user's PATH

The precise way to do this (and possibly, best course of action) may be platform dependent.

Coq Version

8.10.2 on macOS and Windows.

Add csdp to the Coq Platform

The psatz tactic uses the external tool csdp.

To make it convenient for users of any platform to call psatz, I propose that csdp is included in the Coq Platform. Debian and Ubuntu users can already install it as the package coinor-csdp.

Unreliable download of sources

I've seen this a few times on windows, eg https://github.com/coq/platform/runs/1687094305?check_suite_focus=true

On win64:

Error:  The sources of the following couldn't be obtained, aborting:
          - gappa.1.3.5: Bad checksum

On win32:

Error:  The sources of the following couldn't be obtained, aborting:     
          - coq-mathcomp-algebra.1.12.0
          - coq-mathcomp-character.1.12.0
          - coq-mathcomp-field.1.12.0
          - coq-mathcomp-fingroup.1.12.0
          - coq-mathcomp-solvable.1.12.0
          - coq-mathcomp-ssreflect.1.12.0
          - gappa.1.3.5: Bad checksum

I think I saw it once also on OSX, but I think I did re-run the job and there is now no trace of it.

Windows: add option to compile OCaml from sources

On Windows the Coq platform currently uses a pre-compiled binary OCaml. For testing purposes it is sometimes desirable to compile OCaml from sources. Add an option for this.

The OCaml version needs to be changed e.g. from ocaml-variants.4.07.1+mingw64c to ocaml-variants.4.07.1+mingw64 (note the c at the end).

Add SerAPI to the Coq Platform

SerAPI is an OCaml project which contains:

  1. a library and a set of tools for large-scale (de)serialization of Coq code to and from JSON and S-expressions, and
  2. a structured protocol for machine-to-machine communication with Coq.

SerAPI provides unique functionality to Coq tool developers, which, e.g., obviates writing their own lexer and parser for Coq code. It has been used for implementing mutation analysis of Coq code and machine learning on Coq code. SerAPI has had consistent releases for major Coq versions since Coq 8.9. It is packaged directly in the OCaml opam repository.

For the benefit of tool developers and experimental use by end Coq users, I propose that SerAPI is included in the Coq Platform.

I am one of the maintainers of SerAPI, but as the main author, @ejgallego should have ultimate veto over inclusion into the platform.

Nightly builds roadmap

Providing nightly Coq builds would simply mean having a webpage where users can download a binary package corresponding to the latest version of Coq master branch.
This should include at least the packages we provide now for released versions (MacOS, Windows 32 bits and Windows 64 bits) but it would be cool to provide more (e.g. a Debian / Ubuntu .deb binary package, a Nix package with a binary cache, etc).

Nightly builds are useful to ensure that all our users have the possibility of testing development (alpha) versions, including those who are on platforms where compiling Coq from sources is harder. In particular, developers of Coq packages we test in CI must be able to run their packages with the latest version of Coq master.
Additionally, providing a pre-compiled Linux package (.deb or Nix) would help gain build time for people testing their package on CI with the development version of Coq.

We are already quite close to providing nightly builds. Here are the steps I see:

  • Build MacOS and Windows packages on CI.
  • (optional) Build Linux binary packages on CI (done with Nix).
  • Give a precise version number to these packages. See coq/coq#483.
    What is the current status of this PR? @ejgallego do you intend to take care of finishing it and do you think that Dune is going to help here?
  • Choose where to host these packages. Because Travis doesn't provide native build artifact support, the MacOS package currently uses bintray. With a proper version number, it would make sense to use this platform for nightly builds and we could upload Windows package over there as well.

Add coq-dpdgraph to the Coq Platform

Coq-Dpdgraph is a tool for building dependency graphs between Coq objects.

This is a Coq plugin which extracts out dependencies between terms. It can be used to output graphs of term relationships, and to find unused definitions and lemmas. Coq-dpdgraph has had consistent releases for new versions of Coq and is part of Coq's CI.

Since it provides useful and unique functionality to Coq project maintainers, I propose that coq-dpdgraph is included in the Coq Platform.

The maintainer of coq-dpdgraph is @ybertot.

Coq 8.13 and coq-native

Since Coq 8.13 CEP 48 is implemented.

In short, when the (empty) package coq-native is installed, coq is configured to pre compile stuff for native_compute.
We should be asking the question in the platform scripts (and provide a -coq-native=[y/n] option).

Add MathComp Analysis to the Coq Platform

Analysis is a library for real analysis using the Mathematical Components library.

Real analysis is a critical ingredient in many applications of Coq for software verification and formalized mathematics. Analysis bridges the gap between Coq standard library reals and Mathematical Components structures. Hence, even though it is currently described as an experimental library, I propose that Analysis is included in the platform.

To my knowledge, the release managers of Analysis are @affeldt-aist and @CohenCyril.

Error running the installer script

I tried running the installer script, but I got a strange error saying Repository coq-released is already set up and points to https://coq.github.io/opam-coq-archive/released-opam1.2.

agnishom@agnishomDuncan:~/soft$ cd coq-platform/
agnishom@agnishomDuncan:~/soft/coq-platform$ ls
charter.md                             notes
COPYING                                opam
coq_platform_make.sh                   README.md
coq_platform_make_windows.bat          shell_scripts
coq_platform_packages.sh               ToDo.md
coq_platform_switch_name.sh            variants.md
example_coq_platform_make.sh           windows
example_coq_platform_make_windows.bat
agnishom@agnishomDuncan:~/soft/coq-platform$ opam switch _coq-platform_.8.12.0+beta1
[ERROR] No switch _coq-platform_.8.12.0+beta1 is currently installed. Did you
        mean 'opam switch create _coq-platform_.8.12.0+beta1'?
        Installed switches are:
          - 4.10.0
          - 4.07.0
          - system

agnishom@agnishomDuncan:~/soft/coq-platform$ ./coq_platform_make.sh 
shell_scripts/init_utilities.sh: line 192: [: __unset__: integer expression expected
shell_scripts/init_utilities.sh: line 192: [: __unset__: integer expression expected
================================ INTRODUCTION ================================
This script installs the Coq platform version 8.12.0+beta1, that is:

- the Coq compiler and Coq's standard library
- CoqIDE, a GTK3 based graphical user interface
- various widely used libraries and plugins

The script uses opam, the OCaml package manager, to do all the work.
In case opam is not yet installed, it will install opam.
A new opam switch named _coq-platform_.8.12.0+beta1 will be created.

The script compiles everything from sources, which might takes less than one
hour on a fast machine with lot's of RAM, or up to 6 hours with little RAM.

The script is tested on these platforms:
- Windows 10 with cygwin installed by coq_platform_make_windows.bat
- macOS Catalina 10.15.4 with XCode 11.0.3
- Ubuntu 18.04 LTS
In case you have issues, please report a bug at:
https://github.com/MSoegtropIMC/coq-platform/issues
================================ INTRODUCTION ================================
Enter y to continue with compiling/installing the Coq platform! (y/c=cancel) y

=============================== PARALLEL BUILD ===============================
The Coq platform opam build has two levels of parallelism:

- parallel build of (independent) opam packages
- parallel build inside the make of each opam package

Since a single coqc call can take more than 1 GB of RAM and since the two
above kinds of parallelism multiply, the total amount of memory can be large.
But it is not as bad as one might expect: test show that a full parallel
build takes less than 14GB of RAM with 15 parallel make jobs.

With 32 GB or RAM a parallel package build with 16 make jobs is recommended.
With 16 GB of RAM a parallel package build with 4 make jobs is recommended.
With 8 GB of RAM a sequential package build with 4 make jobs is recommended.
With 4 GB+1GB swap a sequential packahge build with 2 make jobs is recommended.
With less RAM, you might have to remove failing packages, e.g. VST.
In order to remove packages, just edit this script at "PACKAGE SELECTION".

In case these recommendations don't work for you, please report an issue at:
https://github.com/MSoegtropIMC/coq-platform/issues
=============================== PARALLEL BUILD ===============================
Build opam packages parallel (p) or sequential (s)? (p/s/c=cancel) p

Number of parallel make jobs (number in 1..16) 15

================================== COMPCERT ==================================
The Coq platform installs the formally verified C compiler CompCert.

CompCert is *not* free / open source software, but may be used for research and
evaluation purposes. Please clarify the license at:

https://github.com/AbsInt/CompCert/blob/master/LICENSE

Parts of CompCert are required for the Princeton C verification tool VST.
Some parts of CompCert are open source and for exploring or learning VST
using the supplied example programs, this open source part is sufficient.
If you want to use VST with your own C code, you need the non open source
variant of CompCert. Before you install the full non-free version of CompCert,
please make sure that your intended usage conforms to the above license.

If you answer n=no below to skip CompCert, VST will also not be installed.

You can also change this later using opam commands.
================================== COMPCERT ==================================
Install full (f), open source (o) or no (n) CompCert? (f/o/n/c=cancel) f

======================= VERIFIED SOFTWARE TOOLCHAIN VST =======================
The Coq platform installs the Verified Software Toolchain VST.

Unfortunately VST takes a while to compile - on a fast machine with 32GB RAM it
may be just 20 minutes, but on a slow machine with 4GB RAM it is more likely
2 hours.

In case you do not plan to formally verify C code with VST, you might want
to select no (n) below. You can install VST any time later with:

  opam install coq-vst.2.6.
======================= VERIFIED SOFTWARE TOOLCHAIN VST =======================
Install VST (y) or do not install VST (n)? (y/n/c=cancel) y

===== CHECKING VERSION OF INSTALLED OPAM =====
Found opam 2.0.5 - good!
/usr/bin/opam
===== opam already initialized =====
===== CREATE OPAM SWITCH =====
[WARNING] No configured repositories by these names found:
          patch_coq-platform_.8.12.0+beta1
[patch_coq-platform_.8.12.0+beta1] Initialised
[ERROR] Repository coq-released is already set up and points to
        https://coq.github.io/opam-coq-archive/released-opam1.2. To change
        that, use 'opam repository set-url'.

Now, I tried deleting the repository with opam repository remove coq-resolved and retried:

agnishom@agnishomDuncan:/tmp/coq-platform$ sh ./coq_platform_make.sh 
./coq_platform_make.sh: 14: source: not found
./coq_platform_make.sh: 15: source: not found
./coq_platform_make.sh: 16: source: not found
./coq_platform_make.sh: 20: source: not found
./coq_platform_make.sh: 27: function: not found
coq_platform_make.sh [options]

Create a new opam switch named $COQ_PLATFORM_SWITCH_NAME
and make and install the Coq platform in this switch.

If an option is not given, the option is explained and asked for interactively.
Except for expert users this is the recommended way to run this script.

OPTIONS:
  -h, -help    Print this help message
  -intro=n     Skip introduction message
  -parallel=p  Build several opam packages in parallel
  -parallel=s  Build opam packages sequentially
  -jobs=1..16  Number of make threads per package
  -compcert=f  Build full non-free version of CompCert
  -compcert=o  Build only open source part of CompCert
  -compcert=n  Do not build CompCert and VST
  -vst=y       Build Verified Software Toolchain (takes a while)
  -vst=n       Do not build Verified Software Toolchain
  -switch=k    In case the opam switch already exists, keep it
  -switch=d    In case the opam switch already exists, delete it
./coq_platform_make.sh: 51: Syntax error: "}" unexpected

Cygwin installation: The system cannot find the path specified.

We're using the Coq platform in a lecture to let students install Coq with packages on Windows.

A student is experiencing the following error:

"========== DOWNLOAD CYGWIN SETUP =========="
Exception calling "DownloadFile" with "2" argument(s): "An exception occurred during a WebClient request."
At line:1 char:1
+ (New-Object Net.WebClient).DownloadFile('http://www.cygwin.com/setup- ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : WebException

"========== INSTALL CYGWIN =========="
The system cannot find the path specified.
ERROR coq_platform_make_windows.bat failed

Any hints?

Add Regular Language Representations to the Coq Platform

Regular Language Representations in Coq (RegLang) is a Coq library with definitions and verified translations between different representations of regular languages: various forms of automata, regular expressions, and the logic WS1S. It uses the ssreflect library from MathComp.

Finite automata and regexps are standard CS concepts that are currently not found in the Coq Stdlib. RegLang provides general and flexible representations of these and related concepts designed for convenient reasoning using the SSReflect proof language. The library is maintained in coq-community and has had stable releases for Coq since 8.8. I therefore propose that it should be included in the Coq Platform.

I am one of the maintainers of RegLang, but as the main author and maintainer, @chdoc should have ultimate veto over inclusion into the platform.

Version naming of Coq Platform releases

The current implied Coq Platform version naming conventions have potential to cause counterintuitive version ordering in OPAM, so I propose that the Coq Platform follows Coq's version naming conventions:

  • X.YY+alphaZ for alpha (or beta) releases, e.g., 8.12+alpha1, 8.13+alpha2.
  • X.YY.Z for stable releases, e.g., 8.12.0 and 8.13.1.

Note in particular that OPAM sorts:

  • 8.12.0+alpha1 after 8.12.0
  • 8.13.0.alpha1after 8.13.0
    ... hence we should avoid conventions that lead to such version names.

For example,

$ dpkg --compare-versions 8.12.0 lt 8.12.0.alpha1 && echo true
true

Coq-Elpi (& hierarchy-builder)

I'd like Coq-Elpi and hierarchy-builder to be in. They are already in the Coq installer for windows.

I have a question. Context: I'd like to release, this week probably, a version of Coq-Elpi that takes advantage of a few new features of Coq 8.12, version 1.5.0. Should we pick it? Can we pick it for the platform?

The one shipped with the installer is almost identical to the released version 1.4.1 which works on Coq 8.11. I think this would be ideal for the platform, since it has almost no incompatibility with the previous version. But there is no platform for 8.11, and no Coq-Elpi in the windows installer for 8.11 either. So I'm considering the idea, better to break compatibility now than later.

But, I don't know if, on Windows, the platform has to agree with the installer or not. If it has to agree then we have to stay with 1.4.1, but if has not to agree then I'll invest energy this week to make a 1.5.0 release (and adjust hierarchy-builder to it).

Make Iris and std++ part of the Coq platform

I was told opening an issue here is the right way to apply for Coq platform membership, so here we go. :)

I'd like to see Iris and its sole dependency, std++, added to the Coq platform. We (the Iris and std++ teams) promise to do our best to release new compatible versions of our libraries quickly after a Coq release. For Coq 8.12, we actually are faster than Coq itself, having just released Iris 3.3 and std++ 1.4 which are already compatible with the upcoming Coq 8.12 (tested against the current 8.12 git branch).

I am not sure if we need to demonstrate "sufficient public interest" or so, but if we do, I hope https://iris-project.org/ is convincing enough that Iris indeed is already seeing numerous interesting applications.

Add MathComp Multinomials to the Coq Platform

MathComp Multinomials is a library for monoidal rings and multinomials.

Multinomials is used in another key project, CoqEAL, which allows data refinement of Coq code. In its role as dependency of CoqEAL (and other projects such as grobner) I propose that it is included in the Coq Platform.

As far as I can tell, the maintainers of Multinomials are @strub and @CohenCyril.

Compilation experience report

I did an installation of the platform on a fresh Windows 10 install that came stock with a notebook. Most things went fine, but I did have a few issues (some of them are just things that might be useful to document in the readme):

  • I had to set git config --global core.autocrlf false before cloning the git repo. Otherwise, the bash scripts won't execute, because they contain carriage returns
  • I had to disable some scanners. In particular 'HP Sure Sense' (whatever that is) and 'Windows real-time protection'
  • I had to change this line
    bash opam$BITSIZE/install.sh --prefix "/usr/$(uname -m)-w64-mingw32/sys-root/mingw"
    to bash opam64/install.sh --prefix /usr/sys-root/mingw

Otherwise, everything was pretty smooth! Much better than the previous installer for windows.

Add CoqHammer (and ATPs) to the Coq Platform

CoqHammer nowadays consists of two components, where the first can be used independently of the second:

  1. a general proof search procedure for CIC, sauto (package coq-hammer-tactics), and
  2. an automated reasoning system which calls ATPs with selected premises and tries to reconstruct ATP proofs (package coq-hammer).

The latest version of these components and packages, 1.3, are available for Coq 8.10, 8.11, and 8.12.

CoqHammer provides much-needed high-level proof automation for Coq users. It is part of Coq's CI and has had consistent releases matching Coq's major versions since Coq 8.8, all of which are packaged on the Coq opam archive. I propose that CoqHammer should be included in the Coq platform, along with at least two ATPs, e.g., Z3 and Eprover.

The maintainer of CoqHammer is @lukaszcz.

Add coq2html to the Coq Platform

coq2html is an HTML documentation generator for Coq source files, which, in contrast to coqdoc, provides foldable proof scripts.

coq2html is a standalone OCaml program that works across a wide range of Coq versions. It is unique in that no other program provides similar out-of-the-box support for foldable proofs in Coq HTML documentation. To allow this functionality to reach a wide audience and in particular large Coq projects, I propose that coq2html is included in the Coq Platform.

coq2html is packaged in the Coq opam archive as coq-coq2html. The latest version, 1.2, works with Coq 8.12.0 and many earlier versions.

coq2html is the current documentation generation tool for CompCert, which indicates coq2html will co-evolve with CompCert as support for new Coq versions is added.

@xavierleroy is the maintainer of coq2html.

Add Paramcoq to the Coq Platform

Paramcoq is a Coq plugin for generating parametricity statements to perform refinement proofs.

Paramcoq provides general functionality used in several projects, such as the CoqEAL refinement library. It is part of Coq's CI and has had consistent opam-packaged releases since Coq 8.7. I therefore propose that it should be included in the Coq Platform.

The maintainer of Paramcoq is @proux01.

Add CoqPrime to the Coq Platform

CoqPrime is a library for certifying primality using Pocklington certificates and Elliptic Curve certificates. When the right options are used, the library can certify very large primes quickly, which is important in cryptographic applications. CoqPrime is used, e.g., in the Fiat-Crypto library which generates code for cryptographic primitives.

CoqPrime is to my knowledge the state of the art for practical primality checking in proof assistants (as opposed to reasoning about primality), so I think it is important to include it in the platform for this reason. It has releases going back several Coq versions and works on Coq 8.12.

The maintainer of CoqPrime is @thery.

Add Math Classes to the Coq Platform

Math Classes is a Coq project that provides abstract interfaces for mathematical structures based on type classes.

Since Math Classes is a general, useful, and well-known library used by large projects such as CoRN, I propose that it should be included in the Coq Platform. Math Classes has had consistent opam-packaged releases since Coq 8.8.

@spitters is the maintainer of Math Classes.

Add Ott and its Coq library to the Coq Platform

Ott is a tool for writing definitions of programming languages and calculi that can be translated to Coq.

Ott consists of an OCaml tool (ott) which is packaged on the OCaml opam repository, and a Coq support library coq-ott. It is a generally useful tool for programming language researchers and practitioners. One project which uses Ott is the Mi-Cho-Coq project which provides a definition of the Michelson smart contract language for the Tezos blockchain.

I am the Coq maintainer for Ott and am committed to ensuring there are stable releases of ott and coq-ott to match Coq Platform releases. I therefore propose that Ott is included in the Coq platform.

Add Dune to the Coq Platform

Dune is a composable and opinionated build system for Coq and OCaml.

Dune is a robust alternative to fragile Makefiles and using coq_makefile for building Coq projects, and nowadays even supports extraction to OCaml. Dune support for Coq is currently at language version 0.2 and is not considered final, but I use Dune in CI for all my projects and it works very well. Long-term stable Dune support for Coq is expected in the near future.

I propose that the Coq Platform includes the latest stable Dune release, which at the time of writing is version 2.6.2.

The Coq maintainer for Dune is @ejgallego.

workflow for docker and snap

It is possible to manually trigger workflows
https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows#external-events
passing them options.

I can foresee these two jobs run on a schedule and not upload/save artifacts (just test it works).
Then one can run the job manually and ask to save the artifacts for local testing or upload them to the docker or snap "stores".
These artifacts are large, so saving them automatically is a bit problematic and systematically upload them may be overkill.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.