Assistente di prova per la scrittura di matematica


12

Vorrei scrivere prove matematiche usando un assistente di prova. Tutto sarà scritto usando la logica del primo ordine (con uguaglianza) e la deduzione naturale. Lo sfondo è la teoria degli insiemi (ZF). Ad esempio, come posso scrivere la seguente prova?

Assioma:xy(x=yz(zxzy))

Teorema:xy(z(zx)z(zy)x=y)

Cioè, l'insieme vuoto è unico.

È banale per me farlo utilizzando carta e penna, ma quello di cui ho veramente bisogno è un software che mi aiuti a verificare la correttezza della prova.

Grazie.


11
Per prima cosa devi selezionare un assistente di prova. Coq è quello che uso, ma ce ne sono molti altri . Alcuni di questi sono basati sulla logica del primo ordine, quindi saranno più adatti alle tue esigenze. Quindi è necessario impegnarsi ad apprendere l'assistente prove. Entro pochi giorni dovresti essere in grado di codificare teoremi semplici, come quello sopra, e dimostrarli. Non aspettarti che lo faremo per te. In questo modo non imparerai nulla.
Dave Clarke,

5
Se sei interessato alla teoria degli insiemi, non alla teoria dei tipi, Isabelle è probabilmente il sistema più semplice. Coq sembrerà strano e confuso.
Mark Reitblatt,

2
Penso che l'assioma che hai scritto non sia la logica del primo ordine, ma la logica del secondo ordine. Ciò è dovuto al fatto che nel primo caso le variabili variano solo sugli individui, mentre nel secondo le variabili possono variare sia sugli individui che sugli insiemi. Apparentemente, nel assioma proposta, ed sono insiemi mentre è un individuo. y zxyz
MS Dousti,

9
@Sadeq: In ZF non sono comunque impostati gli elementi di base dell'universo? Quindi dovresti essere in grado di dire cose come "per tutti gli insiemi" nella logica del primo ordine, che è ciò che viene fatto in quell'assioma.
Robin Kothari,

9
@Sadeq, ciò che Robin ha detto è corretto, è una teoria del primo ordine e l'assioma scritto nella domanda è anche del primo ordine. In tutto è solo un set, non c'è niente come singoli contro set. (Come nota a margine, non è necessario spostarsi su oggetti di secondo o di ordine superiore per parlare di diversi tipi di variabili, è necessario solo un tipo diverso, la logica di secondo e di ordine superiore è abbastanza diversa dalle logiche ordinate). Z FZFZF
Kaveh,

Risposte:


13

Sia Coq che Isabelle possono farlo.

[Coq] Ecco un articolo che discute su come codificare ZFC in CIC, su cui si basa Coq.

Benjamin Werner: Insiemi in Tipi, Tipi in insiemi (1997). http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.55.1709

[Isabelle] C'è una libreria per ZF.

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


3
Mentre questo documento è abbastanza carino, penso che sarebbe più pragmatico aggiungere solo specie (variabili di tipo) e assiomi per codificare direttamente la teoria assiomatica di ZF, quindi fare le prove facendo appello diretto a questi assiomi. La codifica è più per mostrare che le teorie sono correlate in forza espressiva.
cody

2
Vorrei aggiungere che esiste un'implementazione di queste idee, di Bruno Barras: lix.polytechnique.fr/~barras/proofs/sets/index.html
cody,

9

Spostato dal commento su suggerimento di Kaveh

Per prima cosa devi selezionare un assistente di prova. Coq è quello che uso, ma ce ne sono molti altri . Coq si basa su una logica di ordine superiore (il cosiddetto Calcolo delle costruzioni induttive). Altri assistenti di prova si basano sulla logica del primo ordine, quindi potrebbero essere più adatti alle tue esigenze (modulo i commenti sopra).

Quindi è necessario impegnarsi ad apprendere l'assistente prove. Il documento collegato è un tutorial per ottenere terreno con Coq. Diventare un esperto di Coq richiede anni di dedizione e pratica, ma semplici teoremi possono essere dimostrati in un pomeriggio. La chiave per apprendere Coq o qualsiasi altro assistente di prova è fare prove, come quelle nel documento collegato. La sola lettura del documento sarà molto utile, poiché l'intera esperienza di interazione con l'assistente alla prova non può essere trasmessa bene sulla carta.

Entro pochi giorni dovresti essere in grado di codificare teoremi semplici, come quello sopra, e dimostrarli. Non aspettarti che lo faremo per te. In questo modo non imparerai nulla.

Quando riuscirai a dimostrare questi teoremi, sentiti libero di pubblicare le tue risposte qui e magari lasciare alcuni commenti sulle tue esperienze.

Sei pronto per la sfida?


4
Coq è una scelta ragionevole; tuttavia, se xddz5 vuole davvero lavorare nella teoria degli insiemi ZF piuttosto che nella teoria dei tipi, allora forse Mizar è più adatto.
Timothy Chow,


5

Dave Clarke suggerisce Coq, ma Isabelle sembra un'idea molto migliore, visto che ha una libreria per ZF . Isabelle è anche molto matura e include una vasta gamma di tattiche ed estensioni.

Non ho usato personalmente Mizar, ma potrebbe anche essere buono.


2

come potrei scrivere la seguente prova?

In Isabelle / ZF puoi scrivere qualcosa del genere

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

Come puoi vedere Isabelle lo dimostra automaticamente. Ovviamente puoi scrivere una prova più dettagliata se vuoi davvero.


2

Questo stesso teorema è un esempio funzionante (vedi Esempio 11) nel tutorial incluso con il mio software DC Proof 2.0. Scaricalo gratuitamente sul mio sito web http://www.dcproof.com


1
Questo è un po 'di vendita per questo sito. Potresti presentare alcune informazioni in modo uniforme per dire in che modo il tuo software è adatto al problema? Forse viene eseguito un collegamento a un video o uno screenshot di questa derivazione?
Charles Stewart,

1
Ecco la prova: dcproof.com/EmptySetUnique.htm Sul mio sito web è presente un video che mostra come funziona il sistema.
Dan Christensen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.