2

I am trying to implement a command line version of Isabelle/JEdit so I can

  1. Run the Isabelle server in another docker/machine
  2. Allow the integration of more editors like Vim or Emacs
  3. Allow automated agents to examine and write proofs.

From this question it seems like there is no way to separate JEdit from the Isabelle process. I have also read the Isabelle systems manual and the manual does not have much information in terms of the protocol. e.g.

$ isabelle server # On another machine/terminal

$ isabelle client

help
OK ["cancel","echo","help","purge_theories","session_build","session_start","session_stop","shutdown","use_theories"]
session_start
ERROR {"kind":"error","message":"Bad argument for command 'session_start'","argument":""}

Another library which provides this kind of feature is scala-isabelle but it is not clear to me if it can perform this kind of interactions.

Martingale
  • 91
  • 4

1 Answers1

4

This is a major undertaking.

Official tools

From an editor point of view, I believe that the easiest answer is to use the LSP protocol. There is an existing server in Isabelle, so you don't have to reinvent the wheel.

It is also possible to write tools directly in Isabelle/ML or Isabelle/scala especially if you want to include your tool in Isabelle eventually. This also avoids the whole handling of starting Isabelle and the base sessions and so on.

I believe that the Isabelle process is on level higher. It works on sessions and theory, not on individual goals.

External tools

Disclaimer: in my free time, I work on an LSP client for Isabelle for emacs, so I am biased towards believing that it is better than PG. I have used Isabelle over SSH before with it.

Mathias Fleury
  • 2,221
  • 5
  • 12