この回答を書いているときに、これが期待どおりに機能することに気付きました。
onlyModBy5 : (n : Nat) -> {auto prf : n `modNat` 5 = 0} -> Nat
onlyModBy5 n = n
foo : Nat
foo = onlyModBy5 25
しかし、プロパティに名前を付けるとすぐに機能しなくなります:
Divides : Nat -> Nat -> Type
Divides n k = k `modNat` n = 0
onlyModBy5 : (n : Nat) -> {auto prf : 5 `Divides` n} -> Nat
onlyModBy5 n = n
foo : Nat
foo = onlyModBy5 25
引数を埋めるとauto
失敗するようになりました
Can't find a value of type
Divides 5 25
Idris がDivides
の定義を見抜くことができないのはなぜですか?