coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: kirang <kirang AT comp.nus.edu.sg>
- To: coq-club AT inria.fr
- Subject: [Coq-Club] Accessing Coq programmatically From OCaml
- Date: Fri, 22 Apr 2022 14:42:35 +0100
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=kirang AT comp.nus.edu.sg; spf=Pass smtp.mailfrom=kirang AT comp.nus.edu.sg; spf=None smtp.helo=postmaster AT mailgw0.comp.nus.edu.sg
- Ironport-data: A9a23:ecsUA6gzMETp18IXAU5xdylOX161qBYKZh0ujC45NGQN5FlHY01je htvXzrQMv+OYmHxf9klPInj9B4FvZ+Bz4JrTgFkryBjFi9jpJueD7x1DG+gZnLIdpWroGFPt phFNIGYdKjYaleG+39B55C49SEUOZmgH+a6UKieUsxIbVcMpB0J0HqPoMZkxN8w6TSFK1nV4 4mq/5eFYAbNNwNcawr41YrT8HuDg9yp4Fv0jnRmDRyclAK2e9E9VfrzFInpR5fKatE88t2SG 44v+IqEElbxpH/BPD8KfoHTKSXmSpaKVeSHZ+E/t6KK2nCurQRquko32WZ1hUp/0120c95NJ NplsMDtQDcTb5bwp+kQTzhWEhFADbYW5+qSSZS/mZT7I0zudnLtx/pxVAc9OogAvOBqGidD+ eFeMz9lghKr3rnphuvgEK882oJ5dKEHP6tH0p1k5TLYF/8gTrjIRKDSo9lFx3E9it0IBvm2i 88xMGA2M0mbMkMn1lE/OptvzKSEoHjGL2NZ81PW+4hu/0vO9VkkuFTqGICEJIPVHJ49clyjj mnB5iHyBgwQHMeOzCKMtHOqnO7G2y3hML/+D5Xoqrsw2BuYwWkLThsLTh22reT/kUHWt89jx 1I8/3ZzpJgIpXeXcdTwQzy2oU66jgVMRI8FewEl0z2lxq3R6gefI2ELSD9dddAr3PPaoxR2j TdlePu1WFRSXK2ppWG1r+zM9m7a1Tw9dDdZNXJZEWPp9vG6+OkOYgTzosFLK4HdYjfdIjD2z DmSqzIz71n4pZdbv5hXEHiX33f2/t7CSQstoAPKRSSo4h4/f4HNi22UBbrzsK0owGWxFwfpU J04dy62t75m4Xalz3XlfQn1NOv1j8tpyRWF6bKVI7Ev9i6251modp1K7Td1KS9Ba5hZIWK5P hCK5F4IvPe/2UdGi4crOOpd7Ox2k8Dd+SjNDJg4k/IQP8UqKmdrAgk3Phb4M5/RfLgEy/BhZ sjCKq5A/F4cALhmyzy/Q68A1741yzolxH/CDZf1hw+m17WXfHmPRN843KimMogEAFe/iFyNq b53bpLaoz0CALyWSnSGquY7cAFVRVBlXsqeg5IMKYa+zv9ORTtJ5wn5m+1xIuSIXs19y4/1w 51KchIGmAen2S2beG1nqBlLMdvSYHq2llpjVQREALpi8yFLjV+H4PhNep0pU6Mg8eA/n/d4Q +NcJpeLBfFXDDLa4HIQYYS7t4M7LEanggeHPiyEZjkjfs48HlORqo+8Jga/pjMTCieXtNclp +zy3wzWdpMPWgB+AZuEc/mo1V6w4SAQlbsqDUvFK9VeYmv2941uJ3Cjh/M7OZhRex7EwyPc0 RuNRxoUuK/WrNZtotXOgKmFqaavEvd/ThYDQDGLve7uOHCDrGS5wIJGXOKZRhznVTv5qPe4e OFY7/DgK/lWzl9Fvr11H6tv0a9jtcDkoKVXz1g8EXjGMwarB7dnLiXU1MVDrPcWlLpQuA+5R RrJ8d5fIfOPJdijHVIMYhEqN7zR2fYRkzjUzPI0PESquHYopOrXCR1fb0uWlShQDLppK4d0k +4utfkf5xG7lhd3YM2NiTpZ9jjUI3FcAb8rsIoWXN3ihgYxkAgQMcCZUHew65aKc5NKL1JsL zOJwrHN3uwOyk3Hens1NH7MwesN2c1R4EAalAcPdwaTh97Ipv4rxxkAoz04QzNcwghDz+8ua HNgMFd4JPnW8jpl7CSZs7tAx+2c6NylFk3NJ58hkWTYS0a3DirGK2glf+CQ5wYU/38aZTczE HR0Dor6eW6CQS0z9nJatY1ZRzjLRtt07kvEhdvhEsiYWYI1CdYgqrH7fnIG8nMLHuto7HAqZ oBWECJYYqr+LWgWvrZ9BoWHk68fIPxByKquXtk5lJ408arglP1eFNRAx41dui+AGhASzXKFN g==
- Ironport-hdrordr: A9a23:3WLmgapKKKSgrRL1wxcNXNsaV5oleYIsimQD101hICG9Ffbo7v xG/c5rsyMc5wxxZJhNo7C90cq7L080l6QFhLX5VI3KNGKK1ASVxepZnOnfKlPbak7DH6JmpM Bdm/gXMqyVMbGkt6zH3DU=
- Ironport-phdr: A9a23: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
- Ironport-sdr: Kgkj+DqbqVPQbnMlcTinxeEmCcf0hwRFyRO0aCE4I53gKURPuVrwFkAetPWqpP/bq/p+rH2rDr fZ5Z51zkaXTDsVCHytEXK8ppHdQBxpvGtF+4H/8opB72ujH62fVM97L1sOCIziiLpoi190iHVo NxRex7G2sxcgP7+9iWjMujJaZaliFCG+hAJne0TME/fbU3Hkcxn9W1Bo41gFOdLrBetz/kAInh eGBIeVkWCe4bsF5uXjo7D7TMmONzhg3iYc3T0SUalEdMcjImrSE8kkH4hLe4MP3GJ9RPaITppD 8k9eJs3OFsTXlwQ/cLzGYMcV
Hi all,
I’m working on a project where for various reasons I’ve found myself needing to inspect the intermediate proof contexts of Coq proofs in a programmatic way from OCaml.
I’d like to get programatic access to view the corresponding proof context at intermediate points of given (possibly unfinished) proof scripts from OCaml:
```
1 goal (ID 22)
x : nat
IHx : forall y : nat, x + y = y + x
y : nat
============================
S (x + y) = y + S x
```
Note: I don’t need to modify/update/change the context, simply access it.
One simple way to do this would be to run coqtop as a external process and feed it in the prefix of the proof, and then use the show tactic and parse the result, but this seems fragile.
Seeing as I’m writing in OCaml anyway, I thought I’d try just running Coq directly as a library, and then reading the proof context directly through Coq’s own API, bypassing the need to do the parsing myself (albeit having to deal directly with the proof terms rather than the simplified notations).
Unfortunately, there isn’t much documentation on exactly which of Coq’s APIs need to be called in which order in order for Coq to be able to load a given file, so I’ve been running into issues with my programs just crashing at runtime when trying to invoke Coq, with fairly esoteric error messages such as “entry [integer] is empty”, etc.
As such, I’m wondering if anyone has had experience with using Coq in this way? or is this more difficult than it’s worth, and it’s probably better to just bite the bullet and parse the proof state instead?
Thanks,
Kiran.
- [Coq-Club] Accessing Coq programmatically From OCaml, kirang, 04/22/2022
Archive powered by MHonArc 2.6.19+.