我試圖讓人們可以稱之爲伊德里斯的可判斷的分析器。起初我只是在分析自然數,但遇到了意想不到的問題。產生它的代碼的最小例子是這樣的: data Digit : Char -> Type where
Zero : Digit '0'
One : Digit '1'
digitToNat : Digit a -> Nat
digitToNat Zero = 0
digitToN
類型謂詞生成運行時證明我使用此類型推理可以在其上進行可判定的解析字符串: data Every : (a -> Type) -> List a -> Type where
Nil : {P : a -> Type} -> Every P []
(::) : {P : a -> Type} -> P x -> Every P xs -> Every P (x::xs)
例如,
考慮理論
theory Scratch imports Main
begin
notepad
begin
fix P and f g h :: "int ⇒ int"
assume prems: "P f" "P g" "P h"
assume comp: "⋀ f g. P f ⟹ P g ⟹ P (λ x. f (g x))"
have "