ผู้ช่วยพิสูจน์สำหรับการเขียนคณิตศาสตร์


12

ฉันต้องการเขียนหลักฐานทางคณิตศาสตร์โดยใช้ผู้ช่วยพิสูจน์ ทุกอย่างจะถูกเขียนโดยใช้ตรรกะลำดับแรก (มีความเสมอภาค) และการหักตามธรรมชาติ พื้นหลังเป็นทฤษฎีเซต (ZF) ตัวอย่างเช่นฉันจะเขียนหลักฐานต่อไปนี้ได้อย่างไร

ความจริง: xy(x=yz(zxzy))

ทฤษฎีบท: xy(z(zx)z(zy)x=y)

นั่นคือชุดที่ว่างเปล่าไม่ซ้ำกัน

มันเป็นเรื่องเล็กน้อยสำหรับฉันที่จะทำสิ่งนั้นให้สำเร็จโดยใช้กระดาษและปากกา แต่สิ่งที่ฉันต้องการจริงๆคือซอฟต์แวร์ที่ช่วยฉันตรวจสอบความถูกต้อง

ขอบคุณ.


11
ก่อนอื่นคุณต้องเลือกผู้ช่วยพิสูจน์ Coqคือสิ่งที่ผมใช้ แต่มีหลายคนอื่น ๆ บางส่วนจะขึ้นอยู่กับตรรกะการสั่งซื้อครั้งแรกดังนั้นจะเหมาะกับความต้องการของคุณมากขึ้น จากนั้นคุณต้องมุ่งมั่นที่จะเรียนรู้ผู้ช่วยพิสูจน์ ภายในสองสามวันคุณควรเข้ารหัสทฤษฎีบทอย่างง่ายเช่นทฤษฎีข้างต้นและพิสูจน์พวกเขา อย่าคาดหวังว่าเราจะทำสิ่งนี้เพื่อคุณ คุณจะไม่ได้เรียนรู้อะไรแบบนั้น
Dave Clarke

5
หากคุณสนใจทฤษฎีเซตไม่ใช่ทฤษฎีประเภทอิสเบลอาจเป็นระบบที่ตรงไปตรงมาที่สุด Coq จะดูแปลกและสับสน
Mark Reitblatt

2
ฉันคิดว่าความจริงที่คุณเขียนไม่ใช่ตรรกะลำดับแรก แต่เป็นตรรกะลำดับที่สอง นี่เป็นเพราะในอดีตตัวแปรครอบคลุมเฉพาะช่วงบุคคลในขณะที่ตัวแปรหลังสามารถครอบคลุมทั้งบุคคลและชุด เห็นได้ชัดว่าในสัจพจน์ที่กำหนดและyจะถูกตั้งค่าในขณะที่zเป็นรายบุคคล xyz
MS Dousti

9
@Sadeq: ใน ZF ยังไม่ได้กำหนดองค์ประกอบพื้นฐานของจักรวาลอยู่ดี ดังนั้นคุณควรจะสามารถพูดสิ่งต่าง ๆ เช่น "สำหรับทุกชุด" ในตรรกะลำดับแรกซึ่งเป็นสิ่งที่ทำในสัจพจน์นั้น
Robin Kothari

9
@Sadeq สิ่งที่โรบินพูดนั้นถูกต้องเป็นทฤษฎีลำดับแรกและสัจพจน์ที่เขียนในคำถามก็เป็นอันดับแรกเช่นกัน ในZ Fทุกอย่างเป็นเพียงแค่เซตเดียว (ในฐานะที่เป็นบันทึกด้านข้างหนึ่งไม่จำเป็นต้องย้ายไปที่วัตถุลำดับที่สองหรือสูงกว่าเพื่อพูดคุยเกี่ยวกับตัวแปรชนิดต่าง ๆ หนึ่งต้องการเพียงแค่การเรียงลำดับที่แตกต่างกันตรรกะลำดับที่สองและสูงกว่าค่อนข้างแตกต่างจากตรรกะหลายประเภท) ZFZF
Kaveh

คำตอบ:


13

ทั้ง Coq และ Isabelle สามารถทำได้

[Coq] นี่คือบทความที่กล่าวถึงวิธีการเข้ารหัส ZFC ใน CIC ซึ่งเป็นพื้นฐานของ Coq

Benjamin Werner: ชุดในประเภท, ประเภทเป็นเซต (1997) http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.55.1709

[Isabelle] มีห้องสมุดสำหรับ ZF

http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/ZF/index.html


3
ในขณะที่บทความนี้ค่อนข้างดีฉันคิดว่ามันจะเป็นประโยชน์มากกว่าการเพิ่มสปีชีส์ (ตัวแปรประเภท) และสัจพจน์เพื่อเข้ารหัสทฤษฎีเชิงสัจพจน์ของ ZF โดยตรงจากนั้นทำการพิสูจน์ด้วยการอุทธรณ์โดยตรงกับความจริงเหล่านี้ การเข้ารหัสมีมากขึ้นเพื่อแสดงให้เห็นว่าทฤษฎีมีความสัมพันธ์ในความแข็งแกร่งที่แสดงออก
ดี้

2
ฉันควรเพิ่มว่ามีการดำเนินการตามความคิดเหล่านี้แม้ว่าโดย Bruno Barras: lix.polytechnique.fr/~barras/proofs/sets/index.html
cody

9

ย้ายจากความคิดเห็นตามข้อเสนอแนะของ Kaveh

ก่อนอื่นคุณต้องเลือกผู้ช่วยพิสูจน์ Coqคือสิ่งที่ผมใช้ แต่มีหลายคนอื่น ๆ Coq อยู่บนพื้นฐานของตรรกะที่สูงกว่า (แคลคูลัสที่เรียกว่า Inductive Constructions) ผู้ช่วยพิสูจน์อื่น ๆ นั้นใช้ตรรกะอันดับแรกดังนั้นอาจเหมาะสมกับความต้องการของคุณมากขึ้น (modulo ความคิดเห็นด้านบน)

จากนั้นคุณต้องมุ่งมั่นที่จะเรียนรู้ผู้ช่วยพิสูจน์ เอกสารที่เชื่อมโยงเป็นบทช่วยสอนสำหรับการเริ่มต้นด้วย Coq การเป็นผู้เชี่ยวชาญ Coq ต้องใช้ความทุ่มเทและฝึกฝนเป็นเวลาหลายปี แต่ทฤษฎีบทง่าย ๆ สามารถพิสูจน์ได้ในช่วงบ่าย กุญแจสำคัญในการเรียนรู้ Coq หรือผู้ช่วยพิสูจน์อื่น ๆ คือการทำบทพิสูจน์เช่นที่อยู่ในเอกสารที่เชื่อมโยง เพียงอ่านกระดาษจะช่วยน้อยมากเพราะประสบการณ์ทั้งหมดของการโต้ตอบกับผู้ช่วยพิสูจน์ไม่สามารถถ่ายทอดได้ดีบนกระดาษ

ภายในสองสามวันคุณควรเข้ารหัสทฤษฎีบทอย่างง่ายเช่นทฤษฎีข้างต้นและพิสูจน์พวกเขา อย่าคาดหวังว่าเราจะทำสิ่งนี้เพื่อคุณ คุณจะไม่ได้เรียนรู้อะไรแบบนั้น

เมื่อคุณประสบความสำเร็จในการพิสูจน์ทฤษฎีบทเหล่านี้อย่าลังเลที่จะโพสต์คำตอบของคุณที่นี่และอาจแสดงความคิดเห็นเล็กน้อยเกี่ยวกับประสบการณ์ของคุณ

คุณพร้อมสำหรับความท้าทายหรือไม่?


4
Coq เป็นตัวเลือกที่สมเหตุสมผล อย่างไรก็ตามถ้า xddz5 ต้องการทำงานในทฤษฎีเซตของ ZF มากกว่าทฤษฎีประเภทดังนั้น Mizar อาจเหมาะสมกว่า
Timothy Chow


5

เดฟคล๊าร์คแสดงให้เห็น Coq แต่จริงๆอิสซาเบลดูเหมือนความคิดที่ดีมากที่ได้เห็นมันมีห้องสมุดสำหรับการ ZF อิสซาเบลยังเป็นผู้ใหญ่มากและรวมถึงกลยุทธ์และส่วนขยายที่หลากหลาย

ฉันไม่ได้ใช้ Mizar เป็นการส่วนตัว แต่มันอาจจะดีเช่นกัน


2

ฉันจะเขียนหลักฐานต่อไปนี้ได้อย่างไร

ใน Isabelle / ZF คุณสามารถเขียนสิ่งนี้

theory csthquestion imports Main

begin

theorem empty_unique:
shows "\<forall> x.\<forall>y.(\<forall>z. (z\<notin>x)) \<and> (\<forall>z.(z\<notin>y)) \<longrightarrow> x=y"
    by auto

end

อย่างที่คุณเห็นอิสซาเบลพิสูจน์สิ่งนี้โดยอัตโนมัติ แน่นอนคุณสามารถเขียนหลักฐานที่มีรายละเอียดมากขึ้นถ้าคุณต้องการ


2

ทฤษฎีบทนี้เป็นตัวอย่างการทำงาน (ดูตัวอย่างที่ 11) ในบทช่วยสอนที่มาพร้อมกับซอฟต์แวร์ DC Proof 2.0 ของฉัน ดาวน์โหลดได้ฟรีที่เว็บไซต์ของฉันhttp://www.dcproof.com


1
นี่คือการขายเล็กน้อยสำหรับเว็บไซต์นี้ คุณสามารถนำเสนอข้อมูลด้วยวิธีที่ตรงไปตรงมาเพื่อบอกว่าซอฟต์แวร์ของคุณเหมาะสมกับปัญหาหรือไม่ บางทีลิงก์ไปยังวิดีโอหรือภาพหน้าจอของแหล่งที่มานี้กำลังดำเนินการอยู่
Charles Stewart

1
นี่คือข้อพิสูจน์: dcproof.com/EmptySetUnique.htmมีวิดีโอที่เว็บไซต์ของฉันแสดงวิธีการทำงานของระบบ
Dan Christensen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.