I am trying to implement a command line version of Isabelle/JEdit so I can
- Run the Isabelle server in another docker/machine
- Allow the integration of more editors like Vim or Emacs
- 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.