COQ ile totolojinin kanıtlanması


12

Şu anda Coq öğrenmek zorunda ve nasıl başa çıkacağımı bilmiyorum or:

Örnek olarak, olduğu kadar basit, nasıl kanıtlayacağımı göremiyorum:

Theorem T0: x \/ ~x.

Biri bana yardım edebilirse gerçekten çok memnun olurum.

Referans için bu hile sayfasını kullanıyorum .

Ayrıca aklımda bulunan bir kanıt örneği: Burada çift olumsuzlama için:

Require Import Classical_Prop.

Parameters x: Prop.

Theorem T7: (~~x) -> x. 
intro H. 
apply NNPP. 
exact H. 
Qed.

NNPP'nin türü forall p:Prop, ~ ~ p -> p., bu yüzden kanıtlamak için kullanmak hile yapıyor T7. İçe aktarırken Classical_PropAlacağınızAxiom classic : forall P:Prop, P \/ ~ P.
Anton Trunov

Böylece, apply classic.hedefinizi çözer T0.
Anton Trunov

Yanıtlar:


14

Sezgisel mantığa dayalı olduğu için bunu "vanilya" Coq'da kanıtlayamazsınız :

Kanıt teorik açıdan, sezgisel mantık, dışlanmış orta ve çift olumsuzlama ortadan kaldırılması yasasının geçerli mantıksal kurallar olmadığı klasik mantığın bir kısıtlamasıdır .

Böyle bir durumla başa çıkmanın birkaç yolu vardır.

  • Dışlanan orta yasayı bir aksiyom olarak tanıtın:

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

    Bu noktadan sonra hiçbir şey ispatlamaya gerek yok.

  • Dışlanan orta yasaya eşdeğer bir aksiyom tanıtın ve eşdeğerliklerini kanıtlayın. İşte birkaç örnek.


Şimdiye kadar çok teşekkür ederim. Yazdığınız her şeye aşina değilim, ama yine de kontrol edeceğim. Ben coqIde kullanın ve aslında çift olumsuzlama için bir kanıt var, daha sonra daha fazla netlik için sorun açıklamasına ekledim. Yukarıda verilen sorun için benzer bir yol olmasını bekliyordum. Belki bir örnek vermeliydim.
Imago

1
@AntonTrunov aşağıdaki konularda bazı parantez eklemeniz gerekir Axiom peirce: o Peirce yasa değil haliyle (ve aslında trivialkanıtlamak için).
gallais

@gallais Bunu fark ettiğiniz için teşekkürler! Sabit.
Anton Trunov

6

Diğerlerinin size bildirdiği gibi, klasik mantık varsaymadıkça totolojiniz bir totoloji değildir. Ancak karar verilebilir gerçek değerler üzerinde totolojiler yaptığınızdan, boolbunun yerine kullanabilirsiniz Prop. Sonra totolojiniz şunları tutar:

Require Import Bool.

Lemma how_about_bool: forall (p : bool), Is_true (p || negb p).
Proof.
  now intros [|].
Qed.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.