Is it possible to have some A, B : Prop such that we can provide a proof of:
Section QUESTION.
A: Prop := <whatever you want> .
B : Prop := <whatever you want> .
Theorem ANeqB: A <> B.
Proof.
<a proof of this fact>
Qed.
Intuitively, I think not, since this would let us "distinguish" between proofs, but one should not be able to do this without computing on A or B. However, Coq explicitly forbids us from inspecting a proof, since they must be erased at runtime. So, only Prop ought to be able to inspect Prop (due to erasure), but inspection is always computational, hence Prop cannot inspect Prop. Therefore, nothing can inspect Prop, and the above theorem ANeqB cannot be proved.
- If my above explanation is incorrect, could you please explain to me why it is so?
- If the theorem
ANeqBcannot be proved, can you point me a proof of this fact? - If the theorem
ANeqBcan be proved, can you tell me where my intuition fails?
EDIT:
It just struck me that since we can take proof irrelevance as an extra axiom (Axiom proof_irrelevance : forall (P:Prop) (p1 p2:P), p1 = p2.), the theorem ANeqB cannot be proven within Coq --- if it could, it would make it unsound to allow proof_irrelevance as an extra axiom.
This shifts my question, then:
- Is it possible to prove
ANeqBfor some inhabitantsAandB? (proof_irrelevanceis stronger: it states that we cannot proveA <> B[actually, the more stronger statement that we can proveA = B] for allA, B) - If not, can someone furnish a proof that
ANeqBcannot be proved in Coq's based axiomatic system?