Reputation: 22530
There is this logic in a movie which I can't quite formalize (e.g. in Coq).
Some one wanted to launch a rocket on his farm, the FBI guys monitoring the site are talking to one another about why they are there. One guy said:
Because if we are not here and he launches, we will look like as*s.
Then the other guy responded
what if we are here and he launches?
answer:
we'll still look like as*s.
It seems that the logic here is this: Given:
A = we look foolish
B = he launches
C = we are not here.
We have
B /\ C -> A and
B /\ ~C -> A
Furthermore, it seems that whether C
(we are here) holds does not matter. The conclusion boils down to B -> A
. (If he launches, we will look foolish).
Can we prove this reasoning?
I tried:
Theorem farmer: forall A B C:Prop,
(B /\ C -> A) -> (B /\ ~C -> A) -> (B -> A).
Proof.
intros. tauto.
Then it's stuck. I tried adding the excluded middle, but tauto
still can't prove it.
On the other hand, doing boolean algebra, we have:
(~B + ~C + A)(~B + C + A) =
(~B + A)C + (~B + A)~C + (~B +A) =
~B + A.
i.e.
(B /\ C -> A) /\ (B /\ ~C -> A) = B -> A.
How can this be proved in Coq's logic, or did I derive it wrong?
Upvotes: 1
Views: 54
Reputation: 1
The discussion is moot because if he doesn't launch the only thing that happens is plowing a feild cultivated 1000's of times... not nessarally foolish considering the ends to the means but the truly foolish thing in my opinion about your equation is that they don't help him launch because without the launch they are all still here.
Upvotes: 0
Reputation: 5811
I don't know why you failed with Law of excluded middle, because it is sufficient to prove the proposition:
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.
Upvotes: 1
Reputation: 6057
Without decidability of your proposition, I'm not sure you can prove what you want: you still need to know if C
is true or not. However your statement requires complex propositional equality, I advise you to rather state:
forall A B C:Prop, ((B /\ C) -> A) /\ ((B /\ ~C) -> A) -> (B -> A).
Upvotes: 0