La coutume de l'étalon de tactiques de l'Idris
-
21-12-2019 - |
Question
Si je comprends bien (principalement de l'existence de la applyTactic
la fonction), il est possible d'écrire personnalisé tactiques pour le prouveur de l'Idris.Ce qui (ou que) en sont quelques exemples que je pourrais utiliser pour apprendre comment faire cela?
La solution
Il existe deux mécanismes pour la rédaction de la coutume de tactiques de l'Idris:de haut niveau et de bas niveau de la réflexion.
À l'aide de haut-niveau de la réflexion, de vous écrire une fonction qui s'exécute sur la syntaxe plutôt que sur les données évaluées - il ne réduira pas son argument.Ces fonctions renvoient une nouvelle tactique, définie à l'aide de la pré-existant de tactiques de l'Idris.Si vous voulez retourner une preuve terme directement, vous pouvez toujours l'utiliser Exact
.Un exemple de ce type de réflexion peut être trouvé dans la bibliothèque d'effets.Haut niveau de réflexion tactiques sont appelés à l'aide byReflection
dans la preuve de mode.
Dans les bas-niveau de réflexion, vous travaillez directement avec la cité des termes de l'Idris de base de théorie des types.Une tactique est alors une fonction dans TT -> List (TTName, TT) -> Tactic
où le premier argument est le type d'objectif, la seconde est la preuve contexte, et le résultat obtenu est le même que dans le haut-niveau de la réflexion.C'est ce que laughadelic lié à ci-dessus.Ces sont appelés à l'aide applyTactic
dans la preuve de mode.