Additionally, it would be nice to remain compatible with plugins :)

On 2016-05-07 09:33, Clément Pit--Claudel wrote:
> Hi Paul,
> 
> I don't think we should give it a different name yet; I think it would create 
> a lot of confusion.
> 
> We can phrase this differently: what you are currently writing is a library 
> that implements the protocol spoken by Coq. Ideally, we would be able to plug 
> that library straight into proof general. Unfortunately, that isn't the case 
> today. So, we'll have to modify PG. That's fine :)
> 
> One particular strong point of proof general is its ability to talk to 
> multiple versions of Coq. A full fork would be problematic, because it would 
> loose this ability.
> 
> Regarding the other part (coqserver), I think a coqdev thread would be more 
> appropriate.
> 
> Clément.
> 
> On 2016-05-07 02:48, Paul A. Steckler wrote:
>> After hacking on PG all yesterday, and working out how to dispatch
>> between two shell modes, I think a forked, Coq-only version is the
>> better solution. Name suggestions? :-)
>>
>> At the other end, I think that there should be a separate binary for
>> the XML (or whatever it turns out to be) protocol, say `coqserver'.
>> It's operating in a different way than coqtop-as-a-REPL. That would be
>> simplify the codebase for coqtop. Although I haven't yet dealt with
>> the extra channels that the toploop-coqide mode gives, I'm still
>> liking the idea of using HTTP and a REST API as the basic
>> communication mechanism.
>>
>> -- Paul
>>
>>
>> On Fri, May 6, 2016 at 3:51 PM, David Aspinall <david.aspin...@ed.ac.uk> 
>> wrote:
>>> That sounds right (but could lead to confusion!).  What I did was to fork a
>>> version of PG and cut it down to something fairly minimal. - D.
>>>
>>>
>>> On 06/05/2016 14:34, Paul A. Steckler wrote:
>>>>
>>>> The proof-shell mode comes with a lot of associated state, like
>>>> regexps, buffers,  etc. Some bits of that state would be useful in the
>>>> new mode I'm creating, others not.
>>>>
>>>> I'm thinking that I can share the same state variables for the new
>>>> mode, because I'll never have an active proof shell mode and the new
>>>> mode active at the same time. Yes?
>>>> I'd hate to have to duplicate state.
>>>>
>>>> If I load two .v files in emacs, it seems I can only work on one at a
>>>> time using Proof General, and there's only one proof-shell mode window
>>>> active.
>>>>
>>>> -- Paul
>>>>
>>>>
>>>> On Fri, May 6, 2016 at 3:15 PM, David Aspinall <david.aspin...@ed.ac.uk>
>>>> wrote:
>>>>>
>>>>> I did something like this once to support PGIP, which was a sort of
>>>>> pre-cursor of PIDE based on exchanging XML messages. You can find the
>>>>> source in the CVS repo PG Kit repo (Kit/src/pgemacs).  But it probably
>>>>> isn't useful: it's about 10 years old and the case we wanted to allow
>>>>> was input coming voluntarily from the prover to PG (think
>>>>> progress/annotations etc), rather than the other way around.  - David
>>>>>
>>>>> On 06/05/2016 11:48, Paul A. Steckler wrote:
>>>>>>
>>>>>> Proof General defines a shell mode, proof-shell, and an associated
>>>>>> message filter. My thought now is to define an alternate-universe
>>>>>> shell mode, proof-shell-noprompt and an associated message filter.
>>>>>>
>>>>>> -- Paul
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Fri, May 6, 2016 at 1:27 AM, Pierre Courtieu
>>>>>> <pierre.court...@cnam.fr> wrote:
>>>>>>>
>>>>>>> I am sorry to say that I already asked myself about everything you
>>>>>>> asked here, and, despite you suggest more smart answers than I did
>>>>>>> myself I don't see any good enough idea yet. About the prompt: a *lot*
>>>>>>> of things (everything really) in pg depend on the fact that 1 command
>>>>>>> = 1 prompt exactly.
>>>>>>>
>>>>>>> Once again, don't dismiss starting from scratch without thinking a
>>>>>>> while about it. Actually large parts of pg could be reused.
>>>>>>>
>>>>>>> P.
>>>>>>>
>>>>>>>
>>>>>>> 2016-05-05 19:59 GMT+02:00 Clément Pit--Claudel
>>>>>>> <clement....@gmail.com>:
>>>>>>>>
>>>>>>>> I entirely agree with this point; I argued in this direction on a
>>>>>>>> recent coq-dev thread.
>>>>>>>>
>>>>>>>> On 2016-05-05 12:24, Paul A. Steckler wrote:
>>>>>>>>>
>>>>>>>>> I'm not a fan of this idea. The IDE and the prover should be only
>>>>>>>>> loosely-coupled, with a clearly-defined communication protocol
>>>>>>>>> between
>>>>>>>>> them.
>>>>>>>>>
>>>>>>>>> A plugin introduces a tight coupling between these components. Yes,
>>>>>>>>> it's only a plugin, so the scope of the coupling is limited. But it
>>>>>>>>> still seems undesirable to me.
>>>>>>>>>
>>>>>>>>> -- Paul
>>>>>>>>>
>>>>>>>>> On Thu, May 5, 2016 at 4:58 PM, Clément Pit--Claudel
>>>>>>>>> <clement....@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>> Not entirely clear to me :) I think there'd be some amount of design
>>>>>>>>>> work there as well.
>>>>>>>>>>
>>>>>>>>>> On 2016-05-05 10:39, Paul A. Steckler wrote:
>>>>>>>>>>>
>>>>>>>>>>> With that toploop plugin installed on the coqtop side installed,
>>>>>>>>>>> what
>>>>>>>>>>> does Proof General see from its shell?
>>>>>>>>>>>
>>>>>>>>>>> -- Paul
>>>>>>>>>>>
>>>>>>>>>>> On Thu, May 5, 2016 at 4:34 PM, Clément Pit--Claudel
>>>>>>>>>>> <clement....@gmail.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> Hi Paul,
>>>>>>>>>>>>
>>>>>>>>>>>> Here's another approach that I forgot to mention: we could build a
>>>>>>>>>>>> separate Emacs toploop as a plugin, which would inherit most of 
>>>>>>>>>>>> CoqIDE's
>>>>>>>>>>>> toploop (you know that I have mixed feelings about that, but it 
>>>>>>>>>>>> may be the
>>>>>>>>>>>> most pragmatic approach).
>>>>>>>>>>>>
>>>>>>>>>>>> Clément.
>>>>>>>>>>>>
>>>>>>>>>>>> On 2016-05-05 10:17, Clément Pit--Claudel wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Paul,
>>>>>>>>>>>>>
>>>>>>>>>>>>> You could indeed modify PG to handle the first prompt
>>>>>>>>>>>>> differently, or even Coq.
>>>>>>>>>>>>> In the long run, though, I don't think the approach is
>>>>>>>>>>>>> sustainable. PG is very much hardcoded to expect one prompt for 
>>>>>>>>>>>>> every query
>>>>>>>>>>>>> it sends: thus, even though you may get something working pretty 
>>>>>>>>>>>>> quickly by
>>>>>>>>>>>>> hacking around this prompt thing, I think we'll see more 
>>>>>>>>>>>>> breakages with
>>>>>>>>>>>>> every evolution of the new protocol.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Here's a slightly different idea. Right now, PG adds an
>>>>>>>>>>>>> abstraction layer on top of a REPL model. What you could do is 
>>>>>>>>>>>>> reimplement
>>>>>>>>>>>>> the same abstraction, but on top of Coq's new asynchronous model.
>>>>>>>>>>>>> Concretely, my suggestion is to make a separate library to talk 
>>>>>>>>>>>>> to Coq's new
>>>>>>>>>>>>> API, which would provide the same interface 
>>>>>>>>>>>>> (proof-shell-invisible-command,
>>>>>>>>>>>>> proof-shell-ready-prover, proof-shell-invisible-cmd-get-result, 
>>>>>>>>>>>>> etc.).
>>>>>>>>>>>>>
>>>>>>>>>>>>> I think this would make your life easier. You would:
>>>>>>>>>>>>>
>>>>>>>>>>>>> 1. Identify a small (hopefully) collection of functions that
>>>>>>>>>>>>> Coq-ProofGeneral actually depends on (some sort of semi-explicit 
>>>>>>>>>>>>> interface,
>>>>>>>>>>>>> essentially).
>>>>>>>>>>>>> 2. Implement support for these functions using Coq's new API
>>>>>>>>>>>>> model
>>>>>>>>>>>>> 3. Modify the current implementation to call these functions or
>>>>>>>>>>>>> the legacy ones depending on the version of Coq.
>>>>>>>>>>>>>
>>>>>>>>>>>>> What do you think?
>>>>>>>>>>>>> Clément.
>>>>>>>>>>>>>
>>>>>>>>>>>>> On 2016-05-05 09:48, Paul A. Steckler wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I've already mentioned the issue described below to Clément
>>>>>>>>>>>>>> Pit-Claudel
>>>>>>>>>>>>>> and Pierre Courtieu, maybe others on this list have thoughts on
>>>>>>>>>>>>>> it.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Proof General is welded to a model of receiving prompts from a
>>>>>>>>>>>>>> prover.
>>>>>>>>>>>>>> After it's received a prompt, PG can send something back to the
>>>>>>>>>>>>>> prover.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> The ideslave (politically incorrectly-named) mode in Coq,
>>>>>>>>>>>>>> developed
>>>>>>>>>>>>>> for CoqIDE abandons that model. In that mode, Coq just waits for
>>>>>>>>>>>>>> XML
>>>>>>>>>>>>>> from an IDE, without first offering a prompt.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> In ideslave mode, it seems that Coq sends back responses wrapped
>>>>>>>>>>>>>> in
>>>>>>>>>>>>>> <value> tags, so you can use that as a pseudo-prompt. Hmm, I
>>>>>>>>>>>>>> think the
>>>>>>>>>>>>>> prompt regexp would have to look for both the closing tag, and
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> single-tag version, <value ... />.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Even with that, there's still a bootstrapping issue, because
>>>>>>>>>>>>>> there's
>>>>>>>>>>>>>> no prompt to s start with. I could probably modify PG to not
>>>>>>>>>>>>>> look for
>>>>>>>>>>>>>> that first prompt.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Is there some good way to handle this?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> -- Paul
>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>> ProofGeneral-devel mailing list
>>>>>>>>>>>>>> ProofGeneral-devel@inf.ed.ac.uk
>>>>>>>>>>>>>> http://lists.inf.ed.ac.uk/mailman/listinfo/proofgeneral-devel
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> ProofGeneral-devel mailing list
>>>>>>>>>>>>> ProofGeneral-devel@inf.ed.ac.uk
>>>>>>>>>>>>> http://lists.inf.ed.ac.uk/mailman/listinfo/proofgeneral-devel
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> ProofGeneral-devel mailing list
>>>>>>>>>>>> ProofGeneral-devel@inf.ed.ac.uk
>>>>>>>>>>>> http://lists.inf.ed.ac.uk/mailman/listinfo/proofgeneral-devel
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> ProofGeneral-devel mailing list
>>>>>>>> ProofGeneral-devel@inf.ed.ac.uk
>>>>>>>> http://lists.inf.ed.ac.uk/mailman/listinfo/proofgeneral-devel
>>>>>>
>>>>>> _______________________________________________
>>>>>> ProofGeneral-devel mailing list
>>>>>> ProofGeneral-devel@inf.ed.ac.uk
>>>>>> http://lists.inf.ed.ac.uk/mailman/listinfo/proofgeneral-devel
>>>>>>
>>>>>
>>>>> --
>>>>> The University of Edinburgh is a charitable body, registered in
>>>>> Scotland, with registration number SC005336.
>>>>>
>>>>> _______________________________________________
>>>>> ProofGeneral-devel mailing list
>>>>> ProofGeneral-devel@inf.ed.ac.uk
>>>>> http://lists.inf.ed.ac.uk/mailman/listinfo/proofgeneral-devel
>>>>
>>>>
>>>
>>> --
>>> The University of Edinburgh is a charitable body, registered in
>>> Scotland, with registration number SC005336.
>>>
>> _______________________________________________
>> ProofGeneral-devel mailing list
>> ProofGeneral-devel@inf.ed.ac.uk
>> http://lists.inf.ed.ac.uk/mailman/listinfo/proofgeneral-devel
>>
> 
> 
> 
> _______________________________________________
> ProofGeneral-devel mailing list
> ProofGeneral-devel@inf.ed.ac.uk
> http://lists.inf.ed.ac.uk/mailman/listinfo/proofgeneral-devel
> 

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
ProofGeneral-devel mailing list
ProofGeneral-devel@inf.ed.ac.uk
http://lists.inf.ed.ac.uk/mailman/listinfo/proofgeneral-devel

Reply via email to