การไม่เกี่ยวข้องกับการพิสูจน์โดยทั่วไปไม่ได้บอกเป็นนัยโดยทฤษฎีที่อยู่เบื้องหลัง Coq แม้แต่หลักฐานที่ไม่เกี่ยวข้องกับความเท่าเทียมก็ไม่ได้บอกเป็นนัย มันเทียบเท่ากับ Streicher ของจริง K ทั้งสองสามารถเพิ่มเป็นสัจพจน์
มีการพัฒนาที่มีประโยชน์ในการให้เหตุผลเกี่ยวกับวัตถุพิสูจน์และการไม่เกี่ยวข้องกับการพิสูจน์ทำให้สิ่งนี้เป็นไปไม่ได้ การพัฒนาเหล่านี้ควรจะมีวัตถุทั้งหมดที่มีโครงสร้างที่สำคัญSet
แต่ด้วยทฤษฎี Coq พื้นฐานความเป็นไปได้จะอยู่ที่นั่น
มีหลักฐานย่อยที่ไม่สำคัญที่ไม่เกี่ยวข้องกับการพิสูจน์ที่เก็บอยู่เสมอ สัจพจน์ของ Streicher นั้นมีอยู่ในโดเมนที่สามารถนำมาใช้งานได้เช่นการพิสูจน์ความเสมอภาคในชุดที่สามารถนำมาใช้งานได้นั้นมีลักษณะเฉพาะ หลักฐานทั่วไปอยู่ในEqdep_dec
โมดูลในไลบรารีมาตรฐาน Coq นี่คือทฤษฎีของคุณว่าเป็นข้อพิสูจน์ (ข้อพิสูจน์ของฉันที่นี่ไม่จำเป็นต้องหรูหราที่สุด):
Require Bool.
Require Eqdep_dec.
Theorem bool_pirrel : forall (b : bool) (p1 p2 : b = true), p1 = p2.
Proof.
intros; apply Eqdep_dec.eq_proofs_unicity; intros.
destruct (Bool.bool_dec x y); tauto.
Qed.
สำหรับกรณีพิเศษนี้นี่เป็นข้อพิสูจน์โดยตรง (ได้รับแรงบันดาลใจจากหลักฐานทั่วไปในEqdep_dec.v
) ก่อนอื่นให้นิยามคำจำกัดความตามบัญญัติของ canonical true=b
(ตามปกติใน Coq ง่ายกว่าที่จะมีค่าคงที่ก่อน) จากนั้นเราก็แสดงให้เห็นว่าหลักฐานการใด ๆ ที่จะต้องมีtrue=b
refl_equal true
Let nu b (p:true = b) : true = b :=
match Bool.bool_dec true b with
| left eqxy => eqxy
| right neqxy => False_ind _ (neqxy p)
end.
Lemma bool_pcanonical : forall (b : bool) (p : true = b), p = nu b p.
Proof.
intros. case p. destruct b.
unfold nu; simpl. reflexivity.
discriminate p.
Qed.
หากคุณเพิ่มตรรกะคลาสสิกให้กับ Coq คุณจะได้รับการพิสูจน์ที่ไม่เกี่ยวข้อง สังหรณ์ใจพูดตรรกะคลาสสิกที่จะช่วยให้คุณตัดสินใจ oracle สำหรับข้อเสนอและที่ดีพอสำหรับความจริง K. Classical_Prop
มีหลักฐานในโมดูลมาตรฐานห้องสมุด