在农民宇航员中制定逻辑

Formualting a logic in farmer astronaught

电影中有这种逻辑,我不能完全形式化(例如在 Coq 中)。

有人想在他的农场上发射一枚火箭,监视该站点的 FBI 人员正在互相讨论他们为什么在那里。一个人说:

Because if we are not here and he launches, we will look like as*s.

然后另一个人回复了

what if we are here and he launches?

答案:

we'll still look like as*s.

看来这里的逻辑是这样的: 给定:

A = we look foolish
B = he launches
C = we are not here.

我们有

 B /\ C -> A    and
 B /\ ~C -> A

此外,C(我们在这里)是否成立似乎并不重要。结论归结为B -> A。 (如果他发射,我们会看起来很愚蠢)。

我们能证明这个推理吗?

我试过:

Theorem farmer: forall A B C:Prop, 
(B /\ C -> A) -> (B /\ ~C -> A) -> (B -> A).
Proof.
intros. tauto.

然后卡住了。我尝试添加排除的中间,但 tauto 仍然无法证明。

另一方面,在做布尔代数时,我们有:

(~B + ~C + A)(~B + C + A) = 
(~B + A)C + (~B + A)~C + (~B +A) =
~B + A.

(B /\ C -> A) /\ (B /\ ~C -> A) = B -> A.

这在 Coq 的逻辑中如何证明,还是我推导错误?

如果你的命题没有可判定性,我不确定你能否证明你想要的:你仍然需要知道 C 是否为真。但是你的陈述需要复杂的命题相等性,我建议你更确切地说:

forall A B C:Prop, ((B /\ C) -> A) /\ ((B /\ ~C) -> A) -> (B -> A).

不知道你为什么用排中律失败了,因为它足以证明命题:

Axiom LEM: forall P:Prop, P \/ ~P.

Theorem farmer: forall A B C:Prop, 
(B /\ C -> A) -> (B /\ ~C -> A) -> (B -> A).
  intros.
  destruct (LEM C); tauto.
Qed.