Я создавал Web IDE (WIDE) для доказательства теорем в области компьютерных наук. Возможно, вы знаете, что есть 3 наиболее распространенных помощника в доказательствах, которых зовут Афина, Изабель и Кок. Большинство программистов могут забыть свой синтаксис, области видимости и т. д. Моя веб-среда IDE работает с перетаскиванием и примерами. Вы можете редактировать и писать на нем дополнительный код, вы можете скачать его, вы можете поделиться им, вы можете сохранить его и т. д. Он также имеет собственный парсер. Пока все в порядке. Осторожно! Вот мой вопрос: как я могу запустить коды пользователей и получить результат (особенно для Athena http://proofcentral.org/), когда пользователь хочет запустить свой код в моей веб-среде IDE. На самом деле, я могу сделать это через mouse_event (user32) и другие с помощью pinvoke (вызов платформы). Моя программа отправляет коды через Интернет на работающий ПК (не на сервер. Поскольку у сервера нет экрана, поэтому программа не будет знать, куда щелкнуть), затем ПК получает коды. Затем программа щелкает значок «emacs». Через несколько секунд (для открытия и загрузки dll Athena) программа вставляет эти коды Athena в оболочку emacs. Emacs запускает эти коды и возвращает результат. После этого программа выбирает, копирует и возвращает результат в Web IDE. Однако это причудливый и хитрый способ. Я хотел бы сделать лучший способ. Спасибо за внимание. Лучший
Как запустить Афину | Кок | Изабель кодирует удаленно?
Ответы (1)
Я могу дать только частичный ответ для Изабель:
Сама Isabelle реализована на стандартном ML, но для связи с внешним миром она использует протокол под названием PIDE (= Prover IDE). Эталонная реализация PIDE поставляется вместе с Isabelle и написана на Scala, поэтому ее можно использовать с любым языком JVM. Основным приложением PIDE является Isabelle/jEdit, которое использует редактор jEdit для создания IDE для Isabelle, включая разметку, непрерывную проверку, ...
Существуют и другие IDE, такие как Isabelle/Eclipse и Clide (в Интернете). Для вашего варианта использования Clide кажется очень актуальным.
Если вы хотите узнать больше о внутренней работе PIDE, вы можете обратиться к соответствующим документам Вензеля, например, Асинхронное взаимодействие с пользователем и интеграция инструментов в Isabelle/PIDE и Изабель как помощник по проверке документов.
Теперь, наконец, бессовестный плагин: Поскольку вопрос о том, как взаимодействовать с Isabelle как с внешней программой, возникает то и дело, я упаковал PIDE с некоторыми дополнительными утилитами как libisabelle. Он включает в себя пример очень простого пинг-понг-взаимодействия с доказывающим.