使用等价的传递性重写目标
Using the transitivity of equivalence to rewrite a goal
我想证明下面的定理:
Theorem T5:
forall s t, (forall u, OoS s u <-> OoS t u) -> s = t.
我目前的背景和目标是:
1 subgoal
s, t : Entity
H : forall u : Entity, OoS s u <-> OoS t u
______________________________________(1/1)
(forall v : Entity, OoS s v <-> OoS s v \/ OoS t v) /\
(forall v : Entity, OoS t v <-> OoS s v \/ OoS t v)
我想知道是否可以使用蕴含的等价性将目标重写为 forall v : Entity, OoS s v <-> OoS t v
,因为两个等价的右边部分是相同的。然后我会使用假设策略来完成我的证明。但是不知道可不可以,具体怎么做。
您可以 rewrite
使用 setoid 重写在充分一致的上下文中使用任何等价关系,see this documentation page。
在您的具体情况下,它看起来像这样:
From Coq Require Import Setoid.
Context (Entity : Type) (OoS : Entity -> Entity -> Prop)
(s t : Entity) (H : forall v, OoS s v <-> OoS t v).
enter code here
Goal (forall v : Entity, OoS s v <-> OoS s v \/ OoS t v) /\
(forall v : Entity, OoS t v <-> OoS s v \/ OoS t v).
Proof.
split; intros v; rewrite H; intuition.
Qed.
我拆分并引入 v
以便 rewrite H
正确地统一 OoS s ?x
(可能有一种方法可以在活页夹下不使用 setoid 重写,但我不是真的熟练掌握这些技术)。
我想证明下面的定理:
Theorem T5:
forall s t, (forall u, OoS s u <-> OoS t u) -> s = t.
我目前的背景和目标是:
1 subgoal
s, t : Entity
H : forall u : Entity, OoS s u <-> OoS t u
______________________________________(1/1)
(forall v : Entity, OoS s v <-> OoS s v \/ OoS t v) /\
(forall v : Entity, OoS t v <-> OoS s v \/ OoS t v)
我想知道是否可以使用蕴含的等价性将目标重写为 forall v : Entity, OoS s v <-> OoS t v
,因为两个等价的右边部分是相同的。然后我会使用假设策略来完成我的证明。但是不知道可不可以,具体怎么做。
您可以 rewrite
使用 setoid 重写在充分一致的上下文中使用任何等价关系,see this documentation page。
在您的具体情况下,它看起来像这样:
From Coq Require Import Setoid.
Context (Entity : Type) (OoS : Entity -> Entity -> Prop)
(s t : Entity) (H : forall v, OoS s v <-> OoS t v).
enter code here
Goal (forall v : Entity, OoS s v <-> OoS s v \/ OoS t v) /\
(forall v : Entity, OoS t v <-> OoS s v \/ OoS t v).
Proof.
split; intros v; rewrite H; intuition.
Qed.
我拆分并引入 v
以便 rewrite H
正确地统一 OoS s ?x
(可能有一种方法可以在活页夹下不使用 setoid 重写,但我不是真的熟练掌握这些技术)。