Personalizado provador táticas em Idris
-
21-12-2019 - |
Pergunta
Se eu entendi corretamente (principalmente da existência do applyTactic
função), é possível escrever as suas próprias táticas para o provador de teorema em Idris.O que (ou onde) são alguns exemplos que eu poderia usar para aprender como fazer isso?
Solução
Existem dois mecanismos para a escrita personalizada táticas em Idris:de alto nível e baixo nível de reflexão.
Usando de reflexão de alto nível, você pode escrever uma função que executa na sintaxe, ao invés de incluir na avaliados dados - não reduzir o seu argumento.Estas funções devolvem uma nova tática, definida utilizando a pré-existentes táticas em Idris.Se você deseja retornar a uma prova de prazo, diretamente, você pode sempre apenas utilizar Exact
.Um exemplo deste tipo de reflexão pode ser encontrado em a biblioteca de efeitos.De reflexão de alto nível táticas são invocados usando byReflection
no modo de prova.
No baixo nível de reflexão, você trabalha diretamente com o citado termos de Idris do tipo de núcleo da teoria.Uma tática é, então, uma função em TT -> List (TTName, TT) -> Tactic
onde o primeiro argumento é o tipo de meta, o segundo é o local de prova contexto, e o resultado de retorno é o mesmo como na reflexão de alto nível.Isso é o que laughadelic vinculada ao acima.Estes são invocados usando applyTactic
no modo de prova.