使用等价的传递性重写目标

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 重写,但我不是真的熟练掌握这些技术)。