で平等FORALL: Lemma Foo (A : Type) (n : nat) (gen : forall p : nat, p < S n -> A)
(ic0 : 0 < S n) (ic1 : 0 mod S n < S n):
gen (n - n) ic1 = gen 0 ic0.
n-nはNat.sub_diagで0であると0 mod S nはNat.mod_0_l
私は現在、容易に生成できる用語(この具体例では、tauto)を使用して存在量限定子をインスタンス化する手法を作成しようとしています。私の最初の試み: Ltac mytac :=
match goal with
| |- (exists (_ : ?X), _) => cut X;
[ let t := fresh "t" in intro t ; exis
、これは可能ですか? 私はキャンセルがグループで働くことを証明しようとしています。 私は a, b, x : G
H: a <+> x = b <+> x
を持っていると私は a = b
私の考えを証明したいと思いますが(iが逆関数である)仮説 H2: a <+> x <+> i x = a <+> x <+> i x
を取得することでした。 私は pose proof eq_ref
Coqのベクトルの順列について、私は理由を考える必要があります。標準ライブラリには、リストの置換定義のみが含まれています。私の最初の試みとして、私はのようなベクターのためにそれを模倣しようとした: Inductive VPermutation: forall n, vector A n -> vector A n -> Prop :=
| vperm_nil: VPermutation
私はCoqの2つのパラメータにネストされた再帰関数を定義しようとしています。 Require Import List.
Import ListNotations.
Fixpoint map_sequence2 {A B C : Set} (f : A -> B -> option C)
(xs : list A) (ys : list B) : option (list C) :=
私はCoqを学習しています。初めて、ring戦術を使用する必要があります。私はRequire Ring.またはRequire ArithRing.の後にそれを使って私が目標として持っている方程式の右辺を簡略化しようとしましたが、Coqはそれが存在しない参照を取ります。これらの戦術を呼び出すには Lemma sum_n_p : forall n, 2 * sum_n n + n = n * n.