2015-07-18 13 views
4

В большинстве IDE или текстовых редакторах вы можете щелкнуть правой кнопкой мыши по термину и передать его в файл, где этот термин определен. CoqIDE, похоже, не имеет этого, поэтому я делал coqdoc myfile.v --html, а затем перешел к сгенерированным документам HTML. Но единственные доступные для клика условия этого файла для стандартной библиотеки Coq. Термины, определенные ssreflect (например), не доступны для кликов.Как вы смотрите, где идентификаторы определены в Coq эффективно?

Есть ли стандартный способ быстрого поиска, где определенный член/идентификатор определен (и его исходный код), когда в файле Coq? Либо в CoqIDE, либо в emacs + ProofGeneral (я использую CoqIDE, но я бы переключился, если emacs/ProofGeneral имел эту способность).

Или стандартный способ создания документов для каждого проекта Coq и зависимости, которую вы используете?

ответ

4

Если вы выделили термин и выполните Запросы -> Найти, или вы оцените Locate some_identifier., вы получите полное имя константы. Если вы знаете, где установлены зависимости, это скажет вам, где искать идентификатор.

Редактировать: Если вы хотите определить идентификатор, вы можете Print его. Если вы просто хотите его тип, вы можете использовать About, или Check (который также принимает выражения, а не только идентификаторы).

+1

Это близко, но запросы -> Найти на 'finType' дает следующее:« Обозначение Ssreflect.fintype.Finite.Exports.finType »(что полезно). Но есть ли способ связать меня с исходным кодом или документами? Итак, вместо этого он перейдет на http://coqfinitgroup.gforge.inria.fr/doc/fintype.html#Finite.Exports.finType (или что-то в этом роде, возможно, локальная копия исходного кода ssreflect или аналогичная) –

+1

Follow в #coq IRC. Джейсон сказал: «Нет, я не думаю, что есть способ сделать это в настоящее время. \t Исходные файлы даже не устанавливаются, хотя я думаю, что они могут быть исправлены в ближайшее время (или в следующей бета-версии). возможно, с https://itu.dk/research/tomeso/coqoon/, хотя я этого не пробовал ». –

+1

Он также сказал о своем типичном рабочем процессе, который был полезен (для справки): «Я использую« Locate ».Если это мой собственный файл, я открою соответствующий исходный файл. Если это Coq. *, Я либо перехожу к github.coq/coq/coq или в локальную копию исходного кода Coq.Если это библиотека, которую я установил, я перехожу в каталог, в котором я ее установил. Но чаще я просто «печатаю» идентификатор или пользуюсь 'About' или «Проверить», что дает мне полное определение (за исключением любой документации или форматирования). Типичная подпись, а иногда и определение, достаточно часто ». –

1

Существует инструмент, работающий на верхней части доказательства, называемый company-coq. Он имеет функцию перехода к определению, привязанную к ярлыку клавиатуры M-. по умолчанию.

Он может перейти к определению под курсором (даже к стандартной библиотеке), только если модуль, содержащий определение, требуется с помощью команды Require или ее варианта.