我正在将列表分解为头部和尾部,但后来我需要证明它们结合在一起后会给我原始列表:
test: Bool -> String
test b = let lst = the (List Nat) ?getListFromOtherFunction in
case lst of
Nil => ""
x :: xs =>
let eq = the ((x::xs) = lst) ?howToDoIt in ""
我正在使用Idris 1.3.1。
答案 0 :(得分:2)
您可以通过相关的模式匹配来做到这一点:
test: List Nat -> String
test lst with (lst) proof prf
| Nil = ""
| (x :: xs) = ?something
prf
将保持您的平等。
但是,我认为最好在LHS中与lst
匹配,然后您的证明会在需要的地方自动简化。