2014-12-11 3 views
2

Они были реализованы в Idris 0.9.14, и я успешно использовал induction для некоторых доказательств. Однако они работают только для некоторых типов библиотек; в то время как, например, Vect поддерживает их, почти изоморфные All не:Idris case/induction tactics

-Main.h2> induction ys1 INTERNAL ERROR: induction needs an eliminator for Data.Vect.Quantifiers.All 
This is probably a bug, or a missing error message. 
Please consider reporting at https://github.com/idris-lang/Idris-dev/issues 

К сожалению, не много документации языков, и я не мог найти, как реализовать устранение/случай анализа для пользовательских типов. Копаясь в Prelude, я нашел модификатор %elim, но это не помогло. Может ли кто-нибудь привести пример, например, вышеупомянутого All?

ответ

2

Тактика induction может использоваться только для типов, объявленных %elim. Некоторые люди считают, что Идрис должен автоматически генерировать элиминаторы, когда это возможно, но, похоже, с этим возникнут технические трудности.

Может ли кто-нибудь привести пример, скажем, к вышеупомянутому Всеобщему?

Насколько я могу сказать, что не должно быть никаких проблем при добавлении %elim к определению All (только отредактировать файл Quantifiers.idr и перекомпилировать Идриса). Вы можете отправить запрос на перенос на Github.

+0

Спасибо! Когда я сначала попытался добавить% delete (к своему пользовательскому типу), это не сработало, но теперь это происходит. Вероятно, пришлось обновить или перекомпилировать что-то. – Yuuri

 Смежные вопросы

  • Нет связанных вопросов^_^