2022-05-18 16:36:02 +02:00
2022-05-18 16:36:02 +02:00
2022-05-19 21:50:57 +02:00
2022-05-10 11:48:53 +02:00
2022-05-18 16:36:02 +02:00
2022-05-19 23:54:52 +02:00
2022-05-18 16:36:02 +02:00

The Pieuvre™ Proof Assistant

Ne vous êtes jamais vous dit que votre quotidien était morose ? Que tout ce que vous pourriez prouver dans votre vie ne serait que vain ? C'est que vous avez besoin du réconfort de Pieuvre™ !

Pieuvre™ est un assistant de preuve à votre service. Lorsque vous doutez, que vous êtes effrayés par l'incurable finitude de votre esprit, l'ineffable efficacité de Pieuvre™ saura vous réconforter en vous assurant des preuves complètes et sans accroc.

Bien plus efficace que d'autres gallinacés, l'interface CLI de Pieuvre™ saura convenir à petits et grands. Son design entre post-modernisme et romantisme baroque néo-mérovingien rappellera aux utilisateur·ices les plus avertis les plus grandes heures de l'humanité.

Allez, tous à vos pieuvres !

L'équipe de Pieuvre™ n'est pas responsable des dommages occasionnés par les réalisations philosophiques causées aux utilisateur·ices de par l'utilisation du programme

Utilisation

Pieuvre génère automatiquement un fichier log.8pus contenant la preuve venant d'être faite. Attention, le fichier log.8pus ne doit jamais être donné en entrée de Pieuvre™ !

Option typecheck

L'option typecheck vérifie si un lambda-terme est bien typé. Elle s'utilise de la manière suivante :

./pieuvre -typecheck tests/typecheck/right-type
./pieuvre -typecheck tests/typecheck/wrong-type

Option alpha

L'option alpha vérifie si deux lambda-termes sont alpha-équivalents. Elle s'utilise de la manière suivante :

./pieuvre -alpha tests/lambda-terms/alpha-eq.lams
./pieuvre -alpha tests/lambda-terms/alpha-not-eq.lams

Option reduce

L'option alpha vérifie si deux lambda-termes sont alpha-équivalents. Elle s'utilise de la manière suivante :

./pieuvre -reduce tests/lambda-terms/lambda.lam

Notes d'implémentation

  • Les λ-termes à trous sont représentés par leurs fonctions de remplissage. À la liste des λ-termes à mettre dans les trous, on associe le λ-terme complété.

Découpage des fichiers

  • lexer.mll et parser.mly sont les fichiers pour le parser ocamlyacc
  • main.ml contient le code gérant la ligne de commande, la construction du lambda-terme en appelant les fonctions de pieuvre.ml
  • pieuvre.ml contient toutes les fonctions de manipulation de λ-termes.
  • structs.ml contient l'ensemble des structures de données : λ-terme, environnements, types
  • tactic.ml contient la structure de définition des tactiques.

Répartition du travail

Adrien

  • Interface interactive (avec le parsage des formules, des tactiques, ...), lecture des fichiers
  • Construction d'un lambda-terme à partir de la preuve (sans et / ou )
  • Tactiques élémentaires (intro, intros, assumption, apply, elim)
  • Options alpha, reduce, typecheck, ... : partie interactive appelant les fonctions écrites par Samy
  • Écriture de tests (irréfutabilité du tiers exclus, de la formule de Peirce, ...)

Samy

  • Introduction du README
  • Fonctions de manipulation des λ-termes (pieuvre.ml)
  • Typecheck
  • Erreurs lors des tactiques.
  • \/ et /\
  • Parsing des λ-termes
  • True et exact
  • Option -computetype
  • Écriture de tests
Description
The Pieuvre® Proof Assistant
Readme 142 KiB
Languages
OCaml 90.5%
Roff 8.4%
Makefile 1.1%