Idris Nat文字类型

时间:2013-07-25 06:52:50

标签: idris

我希望伊德里斯证明testMult : mult 3 3 = 9有人居住。

不幸的是,这被输入为

mult (fromInteger 3) (fromInteger 3) = fromInteger 9 : Type

我可以这样解决:

n3 : Nat; n3 = 3
n9 : Nat; n9 = 9
testMult : mult n3 n3 = n9
testMult = Refl

有没有办法做一些与mult (3 : Nat) (3 : Nat) = (9 : Nat)类似的事情?

1 个答案:

答案 0 :(得分:6)

您可以使用函数the : (a : Type) -> a -> a指定类型推断失败时的类型。

testMult : the Nat (3 * 3) = the Nat 9
testMult = Refl

请注意,您需要在相等的两边都有the,因为Idris具有异质的相等性,即(=) : {a : Type} -> {b : Type} -> a -> b -> Type

或者,你可以写

testMult : the Nat 3 * the Nat 3 = the Nat 9
testMult = Refl

如果你喜欢那种风格。