解决这个coq练习

时间:2012-10-21 01:47:48

标签: coq theorem-proving

我正在学习COQ而且我仍然坚持参加其中一本书练习。这本书没有给我一个解决方案,所以我不知道该怎么做。我做过第一个。我必须将这些语句翻译成谓词逻辑:

   h0 : Everybody knows somebody
   h1 : Nobody doesn't know anybody. 
   h2 : Everybody knows somebody 
   h3 : A footballer is known by everybody.
   h4 : Footballers only know footballers. 
   h5 : There is somebody who only knows one person.

代码:

Section Stadium.

Variable Fans : Set.
Variable Knows : Fans -> Fans -> Prop.
Variable Footballer : Fans -> Prop.

Hypothesis h0 : forall x: Fans, exists y: Fans, Knows x y.


End Stadium

你能帮帮忙吗?非常感谢你!

1 个答案:

答案 0 :(得分:3)

我认为这些定义是为您提供的,因此“每个人”都由Fans的成员代表。

你有什么困扰?

例如,h1说“没有人不认识任何人”。这归结为“不是某人不认识任何人的情况”。现在您有两种方法可以继续:

  1. 您手动编码“某人不认识任何人”,只是否定它。

  2. (或)您重复使用h0,注意到它的否定是“某人不认识任何人”。


  3. 要谈论足球运动员,您只需验证变量x : Fans是否满足Footballer x ->。 例如,h3将从:

    开始
    forall x, Footballer x -> (* here, you encode "everybody knows x" *)
    

    也许h5有点难。编码“只有一个人”的一种方法是说他知道一个人p0,如果他知道另一个人p1,那么p1 = p0。


    如果没有您觉得困难的详细信息,很难为您提供一个不是解决方案的有用答案。