La ligne de commande semble être la voie à suivre.
Coq inclut plusieurs outils de ligne de commande, y compris le compilateur coqc
. Ce programme prend un fichier de théorie Coq en entrée et essaie de le compiler. Si quelque chose ne va pas avec la théorie, la commande échoue avec un code de sortie différent de zéro et écrit des commentaires sur ses flux de sortie. Si tout est OK, la commande est (généralement) silencieuse, quitte avec un code de sortie zéro et écrit un fichier .vo
contenant la théorie compilée.
Par exemple:
$ cat bad.v
Lemma zero_less_than_one: 0 < 1.
$ coqc bad.v ; echo $?
Error: There are pending proofs
1
$ cat good.v
Lemma zero_less_than_one: 0 < 1.
Proof.
auto.
Qed.
$ coqc good.v ; echo $?
0
Voici les documents pour les outils de ligne de commande Coq, qui peut prendre plusieurs drapeaux: https://coq.inria.fr/distrib/current/refman/Reference-Manual016.html
Je suis au courant de deux outils qui utilisent Coq comme moteur preuve subordonné: Frama-C et Why3. En regardant les sources à https://github.com/Frama-C/Frama-C-snapshot/blob/master/src/plugins/wp/ProverCoq.ml (méthodes compile
et check
) et au https://github.com/AdaCore/why3/tree/master/drivers, ces outils semblent également déverser des théories Coq dans un fichier, puis appeler les outils de ligne de commande de Coq. Pour autant que je sache, il n'y a plus d'API directe pour Coq.
Je vois 3 votes proches sur cette question, disant que la question est trop large. Personnellement, je pense que c'est une question légitime. Probablement que quelqu'un pourrait partager un peu de perspicacité sur la façon d'améliorer la question (plus ciblée, si vous voulez), au lieu de simplement le fermer tout de suite? –
Le cadrage de la question semble déjà assez précis pour obtenir une réponse informative d'un développeur Coq. :-) Mais si le PO a une application spécifique à l'esprit peut-être que les gens peuvent être encore plus utiles. –
Mon intention est de contrôler Coq à partir de https://github.com/opencog et de l'utiliser comme composant de raisonnement formel (j'essaie d'implémenter des logiques supplémentaires) avec le raisonnement logique et la représentation des connaissances disponibles dans OpenCog. Mais la programmation n'est pas du tout un problème ici. Si Coq est en quelque sorte disponible (et il est - comme il peut être des réponses) de l'extérieur alors c'est bien. Je peux m'adapter, pas de problèmes. Parler par programmation à Coq est la question la plus simple dans mes plans. – TomR