1 に答える
2
ネストされたwith
句は問題ありません。問題は、 の定義では、 の結果だけでなく、引数とそれ自体もclose-var
一致することです。そしてもちろん、Agda は、どの関数方程式を使用するかを確認せずに何かを減らすことはできません。compare (toℕ y) (toℕ z)
y
z
2 番目の穴では、close-var
でパターン マッチする必要inject₁ z
がありますが、そうではありません (できません)。それも抽象化してから、1 つの方程式を安全に選択できることを Agda に納得させるのに十分なパターン マッチを行う必要があります。
close∘open≡id x y z | tri> _ _ _
with inject₁ z | compare (toℕ y) (toℕ (inject₁ z))
... | tri> _ _ _ | Fin.zero | tri< () _ _
... | tri> _ _ _ | Fin.suc r | tri< _ _ _ = {!!} -- goal is r ≡ z
最初の穴については、上記のコードが役に立たない場合は、単純な補題を証明してください。
≡→≤ : {x y : ℕ} → x ≡ y → x ≤ y
≡→≤ refl = ≤-refl
そして、次の方法で矛盾を導き出すことができます。
y≮suc-z (s≤s (≡→≤ y≡z))
(私は記録を調べませんでしたStrictTotalOrder
が、この補題が既に存在する可能性があります)。
于 2014-02-25T14:36:51.410 に答える