Подтвердить что ты не робот

Как эффективно использовать поиск доказательств Agda?

При написании доказательств я заметил, что поиск доказательств Agda часто не нашел решений, которые кажутся мне очевидными. К сожалению, с небольшим примером, который иллюстрирует проблему, кажется, сложно, поэтому я пытаюсь описать наиболее распространенные шаблоны.

  • Я забыл добавить -m в отверстие, чтобы Агда посмотрела на область модуля. Могу ли я сделать этот флаг по умолчанию? Какие недостатки имели бы?
  • Часто текущее отверстие может быть заполнено параметром функции, которую я собираюсь реализовать. Даже добавляя -m, Agda не будет рассматривать функциональные параметры или символы, введенные в предложениях let или where. Есть ли что-то не так, просто попробовав их всех?
  • При просмотре цели символы, представленные в предложениях let или where, даже не отображаются. Почему?

Какие другие привычки могут сделать использование авто более эффективным?

4b9b3361

Ответ 1

Поиск доказательств автоответчика Agda жестко привязан к компилятору. Это делает его быстрым,  но ограничивает количество настроек, которые вы можете сделать. Один альтернативный подход  было бы реализовать аналогичную процедуру поиска доказательств с использованием Agda  отражающий механизм. С недавней расширенной версией отражения с использованием  монада ТС,  вам больше не нужно выполнять свою собственную процедуру унификации.

Carlos   Tome работал над повторной реализацией этих идей (проверьте его код   https://github.com/carlostome/AutoInAgda). Он работал над несколькими   версии, которые пытаются использовать информацию из контекста, распечатывают информацию об отладке,   и т.д. Надеюсь, это поможет!