Coq Call 2020 05 20
- May 20th 2020, 4pm-5pm Paris Time
- The link to the visio room will be provided on Zulip the day of the call: https://coq.zulipchat.com/#narrow/stream/237656-Coq-devs.20.26.20plugin.20devs/topic/Coq.20Call
- Add your topics below
- 8.12 update after branching
- #11170: Memory corruption in VM
- Brief update about UI work (Emilio, if Hugo can attend)
- Update about ongoing declare / proof handling work (Emilio)
- hooks / chaining is an issue
- extra needs noted by Pierre-Marie ?
- vio path / restrict / universes ?
Branched on monday. Release notes in preparation. Not much to wait for for the beta.
Reminder we have a critical bug: #11170: Memory corruption in VM. We should ask Pierre Roux, Benjamin Grégoire or Xavier Leroy if he would have the expertise to fix it, other members of the development team are not feeling competent to do so.
=> pre-2012: REPL
=> 2012-now:
- STM [from paralITP]
=> 2014-now:
- jsCoq [Gallego, Itzhaky, Jouvelot, Pin]
- [protocol is different from the XML, based on a tweaked STM OCaml-API]
- SerAPI exposes basically the same these days
- Protocol designed with help of cpitclaudel
=> 2014-abandoned
- pg-xml [Steckler, ?]
- protocol has a lot of state => client suffers requires lots of sync
=> 2014-now:
- vsCoq [Siegbell]
- currently maintained by Dénès
=> 2015-now:
- SerAPI [Gallego, Palmskog, Pit-Claudel, others...]
- lost focus as a UI server
=> 2016-now:
- LSP prototype for Dedukti/lambdapi [Blanqui, Gallego, others]
=> 2018-now:
- Isabelle-"LSP" [Wenzel]
=> 2019:
- Coq-LSP prototype [Gallego, Laporte]
=> 2020:
- document manager ? [Dénès, Tassi]
Work on server still not possible:
- rework handling of proofs
-
~80% done [Gallego, Gilbert, Pédrot] [Proofs GH project]
-
obligations close to regular path
-
still some issues: vio mode and universes
-
question by Enrico: what are the goals? => remove internal low-level structures => enforce large amount of invariants statically => large removal of duplicate code, better API [no need for callers to worry about universes, etc...] => fixing some problems (bugs) with side-effects => removing inversion of control => single API for constant declaration with holes => issues with declaration of mutual entries
API now is:
val declare_definition
: name:Id.t
-> info:CInfo.t
-> types:EConstr.t option
-> body:EConstr.t
-> Evd.evar_map
-> GlobRef.t
where CInfo.t
contains locality, hook, kind, implicits, etc...
- rework handling of state [emilio's focus for 8.13]
-
~20% done [Dénès, Gallego, Gilbert, Herbelin, Pédrot]
-
handling of enviroments
-
notation state
-
a bit more on parsing state
"Global.env () / universes => this will allow to have a better api for opaque proofs
"the API the document needs would benefit from reflecting more invariants"
- global is moving to vernac
- "just an idea" let's think about it [once the API is a bit more functional] incremental checking
- waiting on 1 & 2
- inspired by Dune model
- quite a few questions open
deps --[action]--> targets
- [env | proofview | universes] --[check_proof]--> finished proof
trace_of_env : env -> Trace.t
Proof.
| apply: foo => {u1 : uctx}
| apply: bar => {u2 : uctx}
Qed. ->{targets} (u : UState.t * p : Proof.t * Summary.t)
u1 ≈ u2
-{deps}(u,p)->
Lemma tooo : foo.
Proof.
Qed.
- cross-prover efforts:
- discussions mainly with Makarius about LSP, at some point we should find a common ground [possibly with Lean]
-
Work on 2 above: prioritary, essential.
-
with OCaml multicore team: Coq + Multicore
-
Diego Diverio: INRIA Saclay Engineer for LSP
- common infra for "Tocatta, Dedukteam, Partout", to be used by "coq-lsp" / "ocaml-lsp" why3 mode just released "gitlab.inria/why3"
- also an intern will work on that
-
Once 2 is to a reasonable point:
- incremental checking prototype [based on Dune's lang]
- LSP: thin layer on top of it
- notations
- searchs
-
LSP, what does it solve:
- core communication protocol
- nice extra goodies [completion, etc,...]
- maintenance quite a bit easier
- easy to implement [first prototype done in an afternoon]
-
LSP, what it does not solve:
- architectural problems in Coq
- architectural problems in OCaml
- "large-scale & industrial user needs"
-
Overall, LSP is convenient over a custom protocol, but not solving all the problem to type check proof documents interactively.
"Emilio => working on state of Coq"
-
Quick review of Hugo's questions: https://github.com/coq/coq/pull/12337#issuecomment-629766568
-
Not using serAPI for ui protocols
-
LSP-Coq a failed experiment?
-
pg-xml revival project by Erik Martin Dorel?
Much work needed on cleaning up the APIs w.r.t. global state handling.
-
- Emilio's take away => many tries , none of them still "works for me"
- Problems identified:
- Maintenance of protocol =[fix]=> use LSP
- Current design of Coq's API has bad impedance =[fix]=> rework of API, deprecation of STM
To the extent possible under law, the contributors of “Cocorico!, the Coq wiki” have waived all copyright and related or neighboring rights to their contributions.
By contributing to Cocorico!, the Coq wiki, you agree that you hold the copyright and you agree to license your contribution under the CC0 license or you agree that you have permission to distribute your contribution under the CC0 license.