Как запустить Афину | Кок | Изабель кодирует удаленно?

Я создавал Web IDE (WIDE) для доказательства теорем в области компьютерных наук. Возможно, вы знаете, что есть 3 наиболее распространенных помощника в доказательствах, которых зовут Афина, Изабель и Кок. Большинство программистов могут забыть свой синтаксис, области видимости и т. д. Моя веб-среда IDE работает с перетаскиванием и примерами. Вы можете редактировать и писать на нем дополнительный код, вы можете скачать его, вы можете поделиться им, вы можете сохранить его и т. д. Он также имеет собственный парсер. Пока все в порядке. Осторожно! Вот мой вопрос: как я могу запустить коды пользователей и получить результат (особенно для Athena http://proofcentral.org/), когда пользователь хочет запустить свой код в моей веб-среде IDE. На самом деле, я могу сделать это через mouse_event (user32) и другие с помощью pinvoke (вызов платформы). Моя программа отправляет коды через Интернет на работающий ПК (не на сервер. Поскольку у сервера нет экрана, поэтому программа не будет знать, куда щелкнуть), затем ПК получает коды. Затем программа щелкает значок «emacs». Через несколько секунд (для открытия и загрузки dll Athena) программа вставляет эти коды Athena в оболочку emacs. Emacs запускает эти коды и возвращает результат. После этого программа выбирает, копирует и возвращает результат в Web IDE. Однако это причудливый и хитрый способ. Я хотел бы сделать лучший способ. Спасибо за внимание. Лучший


person Mehmet Taha Meral    schedule 18.06.2015    source источник
comment
Что значит через веб? Кроме того, вы действительно думаете, что Athena работает только в emacs?   -  person Bergi    schedule 18.06.2015
comment
На самом деле, это не имеет значения. Каким-то образом я получаю код пользователя. Но если вам интересно, я написал еще одну программу (и если вам интересно, техническую: WEB.API) на ПК для захвата кода (вы знаете, просто строки) и возврата результата. Да, как я упоминал ранее, загрузка dll Athena. Это означает, что у нас уже есть библиотека и среда Athena. Пожалуйста, посмотрите пример факториала: prntscr.com/7ieahu   -  person Mehmet Taha Meral    schedule 18.06.2015


Ответы (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. Он включает в себя пример очень простого пинг-понг-взаимодействия с доказывающим.

person larsrh    schedule 19.06.2015
comment
Эй, Ларс, я раньше не слышал Клайда. Спасибо за отличный ответ! Однако «Изабель» — наш следующий этап. Потому что мой руководитель работает над Athena (докторская диссертация г-на Варгуна: cs.rpi.edu/~musser/gsd/athena/cct-thesis.pdf) с Константином Аркудасом и Дэвидом Массером. - person Mehmet Taha Meral; 22.06.2015
comment
Просто предупреждение: небезопасно предоставлять экземпляр Isabelle ненадежным пользователям (по крайней мере, без дополнительных мер), поскольку документы Isabelle могут содержать код ML и, следовательно, могут выполнять произвольный код. - person Lars Noschinski; 25.06.2015