
Use Coq in Your Browser: The Js Coq Theorem Prover Online - lelf
https://jscoq.github.io/
======
wlkr
I've not used Coq for some time but previously toyed around with ProofWeb [0]
which is a web interface to server side Coq. This seems like a much better
approach and highly active.

[0]: [http://proofweb.cs.ru.nl/](http://proofweb.cs.ru.nl/)

------
xvilka
Coq 8.11 is going to be interesting - they merged ltac2 into the main tree and
working hard on better integration. Coq 8.10 will finally come with CoqIDE GTK
3 port.

~~~
ocfnash
As well as a new sort, SProp!

[https://coq.github.io/doc/v8.10/refman/changes.html#version-...](https://coq.github.io/doc/v8.10/refman/changes.html#version-8-10)

~~~
jeremysalwen
I am familiar with the basics of coq. What does the new SProp sort do? I
couldn't understand the docs.

~~~
cvoss
Were you able to find this doc [0]? As best I understand it, a Prop P has as
many inhabitants as there are proofs of P, whereas an SProp S has at most one
inhabitant, according to whether it is true or not. All proofs of S are
declared to be "the same". (Convertible is the word they use.)

[0]
[https://coq.github.io/doc/v8.10/refman/addendum/sprop.html](https://coq.github.io/doc/v8.10/refman/addendum/sprop.html)

~~~
ocfnash
Right; indeed they have _definitionally_ at most one inhabitant. Swiping the
following spec from the page you link:

    
    
      Definition irrelevance (A:SProp) (P:A -> Prop) (x:A) (v:P x) (y:A) : P y := v.
    

the point is that `irrelevance` consumes an inhabitant `v` of the Prop `P x`
and is supposed to "return" an inhabitant of the Prop `P y`. A priori `P x`
and `P y` are different types but since `x` and `y` are both inhabitants of a
type whose sort is `SProp`, they are definitionally equal and so `v` is
definitionally a valid inhabitant of `P y`. This justifies the implementation
of `irrelevance` as `v`.

I can imagine some other illustrative examples but I think I'll wait till I've
played with SProp to confirm I'm not barking up the wrong end of the stick.

------
Gajurgensen
This is great! It's not going to replace proof general + (evil mode) emacs for
me, but this would be a great way to introduce people to Coq without worrying
about installation.

------
imranq
What’s the purpose of automated theorem provers? Seems to take the fun out of
proofs

~~~
brohee
Ensuring the proof is actually one

[https://www.quantamagazine.org/in-computers-we-
trust-2013022...](https://www.quantamagazine.org/in-computers-we-
trust-20130222/)

~~~
imranq
Thanks, I'd imagine an extremely small number of proofs could be verified this
way

~~~
brohee
There are archives of formal proofs that are quite big, e.g. [https://www.isa-
afp.org/](https://www.isa-afp.org/) for Isabelle,
[https://github.com/UniMath](https://github.com/UniMath) for Coq

~~~
imranq
Thanks! This is really fascinating for me, i had never heard of this way of
doing proofs and I studied math in college

------
mrcactu5
i've always wondered how web and functional programming interact. there's, for
example TypeScript and Elm. These are not designed for mathematical proofs.

[https://www.typescriptlang.org/](https://www.typescriptlang.org/)
[https://elm-lang.org/](https://elm-lang.org/)

~~~
nickpsecurity
You'd probably do it in the theorem prover extracting it to a language with a
web framework or use a language with a web framework that are both easier to
prove. Here's a few places to explore:

[http://www.impredicative.com/ur/](http://www.impredicative.com/ur/)

[https://wiki.haskell.org/Web/Frameworks](https://wiki.haskell.org/Web/Frameworks)

Note: You'd pick the purest of them probably.

Most work I've seen on web applications with formal focus used model checkers,
though.

[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.397....](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.397.742)

[https://www.iro.umontreal.ca/~sahraouh/papers/Forte2004.pdf](https://www.iro.umontreal.ca/~sahraouh/papers/Forte2004.pdf)

------
7373737373
I'd love to see an explanation of the runtime state/evaluation process of a
Coq proof.

------
chewxy
Is it supposed to take so long to load coq base (~ 5min)?

All I did was Require Import List Omega. and I am now stuck in package
loading.

EDIT: From Coq Require Import List Omega. works. Database for hints not
loaded? Can't seem to get eauto to work

~~~
jmgrosen
It all seems very fast for me. I also see no problems with hint databases...
maybe check the JS console for errors?

~~~
chewxy
Side effect of living in Australia when every neighbour is netflixing. I
discovered my network was dropping out very frequently.

------
NotAnEconomist
Does this mean we can have a TypeScript binding to Coq?

------
jnordwick
Sorry to be the 15 year old, but could they have not chosen a better name?

Preemptively yes ive read the history of the name, but i doubt they didn't
know the homophone.

The puns write themselves: More. Coq in Your Browser

~~~
AgentME
I'm surprised to have seen this flagged and dead when it's generally one of
the top comments on anything to do with CockroachDB (which I think is a very
normal name in comparison).

I'd feel weird about suggesting a tool at work called "vaj" or "tits" too.
Feels a little much like encouraging a "boy's club" clique-y kind of
atmosphere.

~~~
umanwizard
Coq is not pronounced like the English word “cock”. It also has no sexual or
vulgar connotation whatsoever, and is just the standard French word for
“rooster”.

~~~
AgentME
>Coq is not pronounced like the English word “cock”.

Maybe they should mimic Facebook's name pronunciation bio line design feature
and mention that obviously because that's news to me and people I've known
that used the tool.

