如何描述Coq中的一对多关系?

时间:2014-08-25 01:14:55

标签: math logic relation coq theorem-proving

我正在阅读B.Russell的“数学哲学导论”一书,试图将其中描述的所有定理形式化。

以下文字(contexts on book)描述了一对多的关系。

  

可以将一对多关系定义为关系,如果x具有   与y有关的关系,没有其他术语x'也有   与y的关系。

     

或者,再次,它们可以定义如下:给定   两个项x和x',x具有给定关系的项   x'所拥有的那些没有共同的成员。

     

或者,再次,他们可能   被定义为关系,使得其中一个的相对产物   而它的相反意味着身份,两者的“相对产物”   关系R和S是在x和z之间保持的关系   存在中间项y,使得x具有R与y的关系   y具有S到z的关系。

它提出了三种定义方式。我已经成功地描述了前两个,并证明了它们的等价性。当我被困在第三个时候,我试图摆脱“相对产品”的概念,直接得到它的内涵,但也失败了。

以下是我的定义,我是否犯过任何错误?

Definition one_many {X} (R : relation X) : Prop :=
  forall x y, R x y -> forall x', x <> x' -> ~(R x' y).

Definition one_many' {X} (R : relation X) : Prop :=
  forall x x' y, R x y -> R x' y -> x = x'.

Inductive relative_product
          {X} (R: relation X) (S: relation X) : relation X :=
  | rp0 : forall x y, forall z, R x y -> S y z -> relative_product R S x z.
Inductive converse {X} (R : relation X) : relation X :=
  | cv0 : forall x y, R x y -> converse R y x.
Inductive id {X} : relation X :=
  | id0 : forall x, id x x.

Definition one_many'' {X} (R : relation X) : Prop :=
  forall x y, relative_product R (converse R) x y <-> id x y.

下面是我如何解释第三个的定义,而且我也未能证明它们的等价性。

Goal forall {X} (R : relation X),
    one_many'' R <-> (forall x y, R x y -> forall x', converse R y x' -> x = x').
Proof.
  intros. unfold one_many''. split.

  intros.
  assert (relative_product R (converse R) x x' <-> id x x'). apply H.
  inversion H2. apply id_eqv. apply H3.
  apply rp0 with y. assumption. assumption.

  intros.
  split. intro.
  inversion H0. subst.
  apply id_eqv. apply H with y0.
  assumption. assumption.

   (* I'm stuck here. This subgoal is obviously not provable. *)

其中证明id_eqvLemma id_eqv : forall {X} (x:X) (y:X), x = y <-> id x y,可以提前轻松证明。

有人可以帮我弄清楚或者给我一个关于我哪里出错的提示吗?提前谢谢。

2 个答案:

答案 0 :(得分:4)

我认为你错误翻译了第三个定义。原文说:

  

或者,再次,它们可以被定义为关系,使得其中一个的相对乘积与其相反的暗示身份

(强调我的)。这将转化为:

forall x y, relative_product R (converse R) x y -> id x y

也就是说,它应该是一个直接的含义,而不是你断言的等价。你不能希望从其他任何一个证明你的第三个陈述,因为它不等同:考虑非空集上的空关系。这肯定是一对多关系,但相反的相对产品也是空的,所以不是完全的身份关系。

答案 1 :(得分:0)

狂野猜测,但您可能需要R反身或不空。使用你的脚本我最终必须证明

1 subgoal
X : Type
R : relation X
H : forall x y : X, R x y -> forall x' : X, converse R y x' -> x = x'
y : X
______________________________________(1/1)
relative_product R (converse R) y y

所以你有一个关系R和一个居民y:X。为了证明您的目标,您需要有zR y z的见证人R z y。在没有任何其他信息的情况下,我想您唯一的注意事项是让R具有反身性,zy