Assistant de preuve pour écrire des mathématiques


12

Je voudrais écrire des preuves mathématiques en utilisant un assistant de preuve. Tout sera écrit en utilisant une logique de premier ordre (avec égalité) et une déduction naturelle. Le fond est la théorie des ensembles (ZF). Par exemple, comment pourrais-je écrire la preuve suivante?

Axiome: xy(x=yz(zxzy))

Théorème: xy(z(zx)z(zy)x=y)

Autrement dit, l'ensemble vide est unique.

C'est trivial pour moi d'accomplir cela en utilisant du papier et un stylo, mais ce dont j'ai vraiment besoin, c'est d'un logiciel pour m'aider à vérifier l'exactitude des preuves.

Je vous remercie.


11
Vous devez d'abord sélectionner un assistant de vérification. Coq est ce que j'utilise, mais il y en a beaucoup d' autres . Certains d'entre eux sont basés sur une logique de premier ordre, ils seront donc plus adaptés à vos besoins. Ensuite, vous devez vous engager à apprendre l'assistant de preuve. En quelques jours, vous devriez être capable de coder des théorèmes simples, comme celui ci-dessus, et de les prouver. Ne vous attendez pas à ce que nous le fassions pour vous. Vous n'apprendrez rien de cette façon.
Dave Clarke

5
Si vous êtes intéressé par la théorie des ensembles, pas par la théorie des types, Isabelle est probablement le système le plus simple. Coq semblera étrange et déroutant.
Mark Reitblatt

2
Je pense que l'axiome que vous avez écrit n'est pas une logique de premier ordre, mais une logique de second ordre. En effet, dans le premier, les variables ne s'étendent que sur les individus, tandis que dans le second, les variables peuvent s'étendre sur les individus et les ensembles. Apparemment, dans l'axiome donné, et y sont des ensembles tandis que z est un individu. xyz
MS Dousti

9
@Sadeq: Dans ZF, les éléments de base de l'univers ne sont-ils pas de toute façon? Vous devriez donc être capable de dire des choses comme "pour tous les ensembles" dans une logique de premier ordre, ce qui se fait dans cet axiome.
Robin Kothari

9
@Sadeq, ce que Robin a dit est correct, est une théorie du premier ordre et l'axiome écrit dans la question est également du premier ordre. Dans Z F, tout n'est qu'un ensemble, il n'y a rien en tant qu'individus contre ensembles. (En remarque, il n'est pas nécessaire de passer à des objets de second ordre ou supérieurs pour parler de différents types de variables, il suffit de différents types, la logique de second ordre et supérieure est assez différente des logiques à plusieurs types). ZFZF
Kaveh

Réponses:


13

Coq et Isabelle peuvent le faire.

[Coq] Voici un article expliquant comment encoder ZFC dans CIC, sur lequel Coq est basé.

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

[Isabelle] Il y a une bibliothèque pour ZF.

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


3
Bien que cet article soit assez agréable, je pense qu'il serait plus pragmatique d'ajouter simplement des espèces (variables de type) et des axiomes pour coder directement la théorie axiomatique de ZF, puis faire les preuves en faisant directement appel à ces axiomes. L'encodage est plus pour montrer que les théories sont liées dans la force expressive.
cody

2
Je dois cependant ajouter qu'il y a une mise en œuvre de ces idées, par Bruno Barras: lix.polytechnique.fr/~barras/proofs/sets/index.html
cody

9

Déplacé du commentaire à la suggestion de Kaveh

Vous devez d'abord sélectionner un assistant de vérification. Coq est ce que j'utilise, mais il y en a beaucoup d' autres . Coq est basé sur une logique d'ordre supérieur (le soi-disant calcul des constructions inductives). D'autres assistants de preuve sont basés sur une logique de premier ordre, ils peuvent donc être plus adaptés à vos besoins (modulo les commentaires ci-dessus).

Ensuite, vous devez vous engager à apprendre l'assistant de preuve. Le document lié est un tutoriel pour se familiariser avec Coq. Devenir un expert Coq nécessite des années de dévouement et de pratique, mais des théorèmes simples peuvent être prouvés en un après-midi. La clé pour apprendre Coq ou tout autre assistant de preuve est de faire des preuves, telles que celles du document lié. La simple lecture du document n'aidera que très peu, car toute l'expérience d'interaction avec l'assistant de preuve ne peut pas être bien retransmise sur papier.

En quelques jours, vous devriez être capable de coder des théorèmes simples, comme celui ci-dessus, et de les prouver. Ne vous attendez pas à ce que nous le fassions pour vous. Vous n'apprendrez rien de cette façon.

Lorsque vous réussissez à prouver ces théorèmes, n'hésitez pas à poster vos réponses ici et peut-être à laisser quelques commentaires sur vos expériences.

Êtes-vous prêts à relever le défi?


4
Coq est un choix raisonnable; cependant, si xddz5 veut vraiment travailler dans la théorie des ensembles ZF plutôt que dans la théorie des types, alors peut-être que Mizar est plus approprié.
Timothy Chow,


5

Dave Clarke suggère Coq, mais vraiment Isabelle semble être une bien meilleure idée, car il a une bibliothèque pour ZF . Isabelle est également très mature et comprend une grande variété de tactiques et d'extensions.

Je n'ai pas personnellement utilisé Mizar, mais cela pourrait aussi être bon.


2

comment pourrais-je écrire la preuve suivante?

Dans Isabelle / ZF, vous pouvez écrire quelque chose comme ça

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

Comme vous pouvez le constater, Isabelle le prouve automatiquement. Bien sûr, vous pouvez rédiger une preuve plus détaillée si vous le souhaitez vraiment.


2

Ce même théorème est un exemple travaillé (voir l'exemple 11) dans le tutoriel inclus avec mon logiciel DC Proof 2.0. Téléchargez-le gratuitement sur mon site http://www.dcproof.com


1
Il s'agit d'un peu de vente pour ce site. Pourriez-vous présenter certaines informations de manière impartiale pour dire de quelle manière votre logiciel est bien adapté au problème? Peut-être un lien vers une vidéo ou une capture d'écran de cette dérivation en cours de réalisation?
Charles Stewart

1
Voici la preuve: dcproof.com/EmptySetUnique.htm Il y a une vidéo sur mon site Web montrant comment le système fonctionne.
Dan Christensen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.