根据idris中的函数输出做出结论
Making conclusions based on function output in idris
有没有办法根据 Idris 中函数的输出得出结论?例如,让函数定义为:
equalNumber: (x,y : Nat) -> Nat
equalNumber x y = case decEq x y of
Yes Refl => 42
No contra => 0
现在我很想得出结论:
lemma : equalNumber x x = 42
这可以证明吗?如果是:如何?
这是一种解决方案:
total
lemma : equalNumber x x = 42
lemma {x} with (decEq x x)
lemma {x} | (Yes Refl) = Refl
lemma {x} | (No contra) = absurd $ contra Refl
不幸的是,我所有使用 decEqSelfIsYes
引理的尝试都失败了。
有没有办法根据 Idris 中函数的输出得出结论?例如,让函数定义为:
equalNumber: (x,y : Nat) -> Nat
equalNumber x y = case decEq x y of
Yes Refl => 42
No contra => 0
现在我很想得出结论:
lemma : equalNumber x x = 42
这可以证明吗?如果是:如何?
这是一种解决方案:
total
lemma : equalNumber x x = 42
lemma {x} with (decEq x x)
lemma {x} | (Yes Refl) = Refl
lemma {x} | (No contra) = absurd $ contra Refl
不幸的是,我所有使用 decEqSelfIsYes
引理的尝试都失败了。