私はCoqを初めて使用し、破壊戦術について簡単な質問があります。count
自然数のリスト内の特定の自然数の出現回数をカウントする関数があるとします。
Fixpoint count (v : nat) (xs : natlist) : nat :=
match xs with
| nil => 0
| h :: t =>
match beq_nat h v with
| true => 1 + count v xs
| false => count v xs
end
end.
次の定理を証明したいと思います。
Theorem count_cons : forall (n y : nat) (xs : natlist),
count n (y :: xs) = count n xs + count n [y].
n = 0の類似の定理を証明している場合、yを0またはSy'に単純に破棄できます。一般的なケースでは、私がやりたいのは(beq_nat ny)をtrueまたはfalseに破棄することですが、それを機能させることができないようです。Coq構文の一部が欠落しています。
何か案は?