# IsaFoL: Isabelle Formalization of Logic #

This repository contains various Isabelle formalizations of logical calculi and related topics.

The goal is to develop lemma libraries and methodology for formalizing modern research in automated reasoning. Our initial focus is on well-established ground and first-order calculi, such as DPLL, CDCL, and resolution. One of our inspirations is the [IsaFoR/CeTA](http://cl-informatik.uibk.ac.at/software/ceta/) project (Isabelle/HOL Formalization of Rewriting for Certified Tool Assertions) at Universität Innsbruck.


## Entries ##

### A Comprehensive Saturation Framework ###

* Latest version (compatible with latest Isabelle repository): [AFP entry 1](https://devel.isa-afp.org/entries/Saturation_Framework.html); [AFP entry 2](https://devel.isa-afp.org/entries/Saturation_Framework_Extensions.html)
* Recent version (compatible with latest Isabelle release): [AFP entry 1](https://www.isa-afp.org/entries/Saturation_Framework.html); [AFP entry 2](https://www.isa-afp.org/entries/Saturation_Framework_Extensions.html)


### A Functional Implementation of Bachmair and Ganzinger's Ordered Resolution Prover ###

* Latest version (compatible with latest Isabelle repository): [AFP entry](https://devel.isa-afp.org/entries/Functional_Ordered_Resolution_Prover.html)
* Recent version (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/Functional_Ordered_Resolution_Prover.html)


### A Variant of the Superposition Calculus ###

* Latest version (compatible with latest Isabelle repository): [AFP entry](https://devel.isa-afp.org/entries/SuperCalc.html)
* Recent version (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/SuperCalc.html)


### Abstract Completeness ###

* Latest version (compatible with latest Isabelle repository): [AFP entry](https://devel.isa-afp.org/entries/Abstract_Completeness.shtml)
* Recent version (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/Abstract_Completeness.shtml)


### Abstract Soundness ###

* Latest version (compatible with latest Isabelle repository): [AFP entry](https://devel.isa-afp.org/entries/Abstract_Soundness.shtml)
* Recent version (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/Abstract_Soundness.shtml)


### Compactness of First-order Logic (ongoing) ###

* Latest version (compatible with latest Isabelle release): [IsaFoL entry](https://github.com/IsaFoL/IsaFoL/tree/master/FOL_Compactness/)


### Epistemic Logic ###

* Latest version (compatible with latest Isabelle repository): [AFP entry](https://devel.isa-afp.org/entries/Epistemic_Logic.shtml)
* Recent version (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/Epistemic_Logic.shtml)


### First-Order Logic According to Berghofer (ongoing) ###

* Latest version (compatible with latest Isabelle release): [IsaFoL entry](https://github.com/IsaFoL/IsaFoL/tree/master/FOL_Berghofer/)


### First-Order Logic According to Harrison ###

* Latest version (compatible with latest Isabelle repository): [AFP entry](https://devel.isa-afp.org/entries/FOL_Harrison.shtml)
* Recent version (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/FOL_Harrison.shtml)
* Variants (compatible with latest Isabelle release): [IsaFoL entry](https://github.com/IsaFoL/IsaFoL/tree/master/FOL_Harrison/)


### First-Order Logic According to Monk (ongoing) ###

* Latest version (compatible with latest Isabelle release): [IsaFoL entry](https://github.com/IsaFoL/IsaFoL/tree/master/FOL_Monk/)


### Given Clause Loops ###

* Latest version (compatible with latest Isabelle repository): [AFP entry](https://devel.isa-afp.org/entries/Given_Clause_Loops.shtml)
* Recent version (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/Given_Clause_Loops.shtml)


### GRAT Checker ###

* Latest version (compatible with Isabelle2016-1): [IsaFoL entry](https://github.com/IsaFoL/IsaFoL/tree/master/GRAT/)


### Hybrid Logic ###

* Latest version (compatible with latest Isabelle repository): [AFP entry](https://devel.isa-afp.org/entries/Hybrid_Logic.shtml)
* Recent version (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/Hybrid_Logic.shtml)
* Variants (compatible with latest Isabelle release): [IsaFoL entry](https://github.com/IsaFoL/IsaFoL/tree/master/Hybrid_Logic/)


### Lambda-Free Higher-Order Embedding Path Order ###

* Latest version (compatible with latest Isabelle repository): [AFP entry](https://devel.isa-afp.org/entries/Lambda_Free_EPO.shtml)
* Recent version (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/Lambda_Free_EPO.shtml)


### Lambda-Free Higher-Order Knuth-Bendix Orders ###

* Latest version (compatible with latest Isabelle repository): [AFP entry](https://devel.isa-afp.org/entries/Lambda_Free_KBOs.shtml)
* Recent version (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/Lambda_Free_KBOs.shtml)


### Lambda-Free Higher-Order Recursive Path Orders ###

* Latest version (compatible with latest Isabelle repository): [AFP entry](https://devel.isa-afp.org/entries/Lambda_Free_RPOs.shtml)
* Recent version (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/Lambda_Free_RPOs.shtml)


### Nested Multisets, Hereditary Multisets, and Syntactic Ordinals ###

* Latest version (compatible with latest Isabelle repository): [AFP entry](https://devel.isa-afp.org/entries/Nested_Multisets_Ordinals.shtml)
* Recent version (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/Nested_Multisets_Ordinals.shtml)


### Ordered Resolution Prover According to Bachmair and Ganzinger ###

* Latest version (compatible with Isabelle2017): [IsaFoL entry](https://github.com/IsaFoL/IsaFoL/tree/master/Ordered_Resolution_Prover/), [documentation](http://people.mpi-inf.mpg.de/~mfleury/IsaFoL/current/Ordered_Resolution_Prover/index.html)


### Paraconsistency ###

* Latest version (compatible with latest Isabelle release): [IsaFoL entry](https://github.com/IsaFoL/IsaFoL/tree/master/Paraconsistency/)
* Recent version (compatible with latest Isabelle repository): [AFP entry](https://devel.isa-afp.org/entries/Paraconsistency.shtml)
* Recent version (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/Paraconsistency.shtml)


### PAC Checker ###

The initial formalisation of PAC was moved to the AFP:

* Latest version (compatible with latest Isabelle release): [AFP entry](https://devel.isa-afp.org/entries/PAC_Checker.html)
* AFP entry (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/PAC_Checker.html)

But we continued working on it in [IsaFoL entry](https://github.com/IsaFoL/IsaFoL/tree/master/PAC_Checker2)


### Proof Systems for Propositional Logic ###

* Latest version (compatible with latest Isabelle repository): [AFP entry](https://devel.isa-afp.org/entries/Propositional_Proof_Systems.html)
* Recent version (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/Propositional_Proof_Systems.html)


### Propositional Resolution and Prime Implicates Generation ###

* Latest version (compatible with latest Isabelle repository): [AFP entry](https://devel.isa-afp.org/entries/PropResPI.html)
* Recent version (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/PropResPI.html)


### Sequent Calculus ###

* Latest version (compatible with latest Isabelle release): [IsaFoL entry](https://github.com/IsaFoL/IsaFoL/tree/master/Sequent_Calculus/)


### Simple Prover ###

* Latest version (compatible with latest Isabelle release): [IsaFoL entry](https://github.com/IsaFoL/IsaFoL/tree/master/Simple_Prover/)


### Sound and Complete Sort Encodings for First-Order Logic ###

* Latest version (compatible with latest Isabelle repository): [AFP entry](https://devel.isa-afp.org/entries/Sort_Encodings.shtml)
* Recent version (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/Sort_Encodings.shtml)

### Splitting Framework ###

* Latest version (compatible with latest Isabelle release): [IsaFoL entry](https://github.com/IsaFoL/IsaFoL/tree/master/Splitting_Framework/)

### Standard Superposition (ongoing) ###

* Latest version (compatible with latest Isabelle release): [IsaFoL entry](https://github.com/IsaFoL/IsaFoL/tree/master/Standard_Superposition/)


### Unordered Resolution ###

* Latest version (compatible with latest Isabelle release): [AFP entry](https://www.isa-afp.org/entries/Resolution_FOL.shtml), [IsaFoL entry](https://github.com/IsaFoL/IsaFoL/tree/master/Unordered_Resolution/), [documentation](http://people.mpi-inf.mpg.de/~mfleury/IsaFoL/current/Unordered_Resolution/index.html)
* Recent version (compatible with latest Isabelle repository): [AFP entry](https://devel.isa-afp.org/entries/Resolution_FOL.shtml)


### Weidenbach's Book (ongoing) ###

* The relevant parts of Weidenbach's book can be found [online](http://people.mpi-inf.mpg.de/~mfleury/paper/Weidenback_Book_CDCL.pdf)
* Latest version: [IsaFoL entry](https://github.com/IsaFoL/IsaFoL/tree/master/Weidenbach_Book/), [documentation](http://people.mpi-inf.mpg.de/~mfleury/IsaFoL/current/Weidenbach_Book/index.html)


## Authors ##

* [Heiko Becker](mailto:hbecker_shtrudel_mpi-sws.org)
* [Alexander Bentkamp](mailto:a.bentkamp_shtrudel_vu.nl)
* [Ghilain Bergeron](mailto:ghilain.bergeron_shtrudel_inria.fr)
* [Jasmin Christian Blanchette](mailto:j.c.blanchette_shtrudel_vu.nl)
* [Mathias Fleury](mailto:mathias.fleury_shtrudel_mpi-inf.mpg.de)
* [Asta Halkjær From](mailto:ahfrom_shtrudel_dtu.dk)
* [Alexander Birch Jensen](mailto:aleje_shtrudel_dtu.dk)
* [Peter Lammich](mailto:p.lammich_shtrudel_utwente.nl)
* [John Bruntse Larsen](mailto:jobla_shtrudel_dtu.dk)
* [Julius Michaelis](mailto:j.michaelis_shtrudel_live.de)
* [Tobias Nipkow](mailto:nipkow_shtrudel_in.tum.de)
* [Nicolas Peltier](mailto:Nicolas.Peltier_shtrudel_imag.fr)
* [Andrei Popescu](mailto:A.Popescu_shtrudel_mdx.ac.uk)
* [Qi Qiu](mailto:qi.qiu_shtrudel_univ-lyon1.fr)
* [Simon Robillard](mailto:simon.robillard_shtrudel_chalmers.se)
* [Anders Schlichtkrull](mailto:andschl_shtrudel_dtu.dk)
* [Balazs Toth](mailto:balazs.toth_shtrudel_ifi.lmu.de)
* [Sophie Tourret](mailto:stourret_shtrudel_mpi-inf.mpg.de)
* [Dmitriy Traytel](mailto:traytel_shtrudel_di.ku.dk)
* [Jørgen Villadsen](mailto:jovi_shtrudel_dtu.dk)
* [Petar Vukmirović](mailto:p.vukmirovic_shtrudel_vu.nl)


## Additional Collaborators ##

* [Maximilian Kirchmeier](mailto:m.kirchmeier_shtrudel_tum.de)
* [Christian Sternagel](mailto:christian.sternagel_shtrudel_uibk.ac.at)
* [Uwe Waldmann](mailto:waldmann_shtrudel_mpi-inf.mpg.de)
* [Daniel Wand](mailto:dwand_shtrudel_mpi-inf.mpg.de)
* [Christoph Weidenbach](mailto:weidenbach_shtrudel_mpi-inf.mpg.de)


## Publications ##

 * [A Modular Isabelle Framework for Verifying Saturation Provers](https://matryoshka-project.github.io/pubs/satur_isa_paper.pdf).
  S. Tourret, J. Blanchette.
  In Hrițcu, C., Popescu, A. (eds.) 10th ACM SIGPLAN International Conference on Certified Programs and Proofs (CPP 2021), pp. 224–237, ACM, 2021.

* [The Proof Checkers Pacheck and Pastèquefor the Practical Algebraic Calculus](http://fmv.jku.at/papers/KaufmannFleuryBiere-FMCAD20.pdf).
  D. Kaufmann, M. Fleury, and A Biere.
  In Formal Methods in Computer-Aided Design 2020 (FMCAD-20).

* [A Verified SAT Solver Framework including Optimization and Partial Valuations](http://people.mpi-inf.mpg.de/~mfleury/paper/optimizing_cdcl.pdf).
  M. Fleury and C. Weidenbach.
  Accepted at 23rd International Conference on Logic for Programming, Artificial Intelligence and Reasoning (LPAR-23).

* [A Comprehensive Framework for Saturation Theorem Proving](http://matryoshka.gforge.inria.fr/pubs/satur_paper.pdf).
  U. Waldmann, S. Tourret, S. Robillard, and J. Blanchette
  Accepted at 10th International Joint Conference on Automated Reasoning (IJCAR 2020).

* [Formalizing Bachmair and Ganzinger's Ordered Resolution Prover](http://matryoshka.gforge.inria.fr/pubs/rp_article.pdf).
  A. Schlichtkrull, J. Blanchette, D. Traytel, and U. Waldmann.
  Acccepted in _Journal of Automated Reasoning_.

* [Formalization of Logical Calculi in Isabelle/HOL](http://fmv.jku.at/fleury/papers/Fleury-thesis.pdf)
  M. Fleury.
  Ph.D. thesis, Universität des Saarlandes, 2020.
* [Optimizing a Verified SAT Solver](https://people.mpi-inf.mpg.de/~mfleury/paper/optimised_isasat.pdf).
  M. Fleury.
  In Badger, J., Rozier, K.Y. (eds.) 11th NASA Formal Methods Symposium (NFM 2019), LNCS, Springer, 2019.

* [A Verified Prover Based on Ordered Resolution](http://matryoshka.gforge.inria.fr/pubs/fun_rp_paper.pdf).
  A. Schlichtkrull, J. C. Blanchette, and D. Traytel.
  In Mahboubi, A., Myreen, M. O. (eds.) 8th ACM SIGPLAN International Conference on Certified Programs and Proofs (CPP 2019), ACM, 2019.

* [Formalizing the Metatheory of Logical Calculi and Automatic Provers in Isabelle/HOL (Invited Talk)](http://matryoshka.gforge.inria.fr/pubs/metathy_paper.pdf)
  J. C. Blanchette.
  In Mahboubi, A., Myreen, M. O. (eds.) 8th ACM SIGPLAN International Conference on Certified Programs and Proofs (CPP 2019), ACM, 2019.

* [Formalization of Logic in the Isabelle Proof Assistant](http://matryoshka.gforge.inria.fr/pubs/schlichtkrull_phd_thesis.pdf)
  A. Schlichtkrull.
  Ph.D. thesis, Technical University of Denmark, 2018.
* [Formalizing Bachmair and Ganzinger's Ordered Resolution Prover](http://matryoshka.gforge.inria.fr/pubs/rp_paper.pdf).
  A. Schlichtkrull, J. C. Blanchette, D. Traytel, and U. Waldmann.
  In Galmiche, D., Schulz, S., Sebastiani, R. (eds.) 9th International Joint Conference on Automated Reasoning (IJCAR 2018), LNCS 10395, pp. 89–107, Springer, 2018.

* [A Verified SAT Solver with Watched Literals using Imperative HOL (Extended Abstract)](https://files.sketis.net/Isabelle_Workshop_2018/Isabelle_2018_paper_4.pdf)
  M. Fleury, J. C. Blanchette, and P. Lammich. Isabelle Workshop 2018.

* [Formalization of the Resolution Calculus for First-Order Logic](http://rdcu.be/E92z)
  A. Schlichtkrull.
  _Journal of Automated Reasoning_ 61(1-4):455-484, 2018.

* [A Verified SAT Solver Framework with Learn, Forget, Restart, and Incrementality](http://matryoshka.gforge.inria.fr/pubs/sat_article.pdf).
  J. C. Blanchette, M. Fleury, P. Lammich, and C. Weidenbach.
  _Journal of Automated Reasoning_ 61(1-4):333-365, 2018.

* [Formalizing a Paraconsistent Logic in the Isabelle Proof Assistant](http://orbit.dtu.dk/files/140838206/TLDKS.pdf).
  J. Villadsen and A. Schlichtkrull.
  _LNCS Transactions on Large-Scale Data- and Knowledge-Centered Systems_ 34:92-122, 2017.

* [A Verified SAT Solver with Watched Literals using Imperative HOL](http://matryoshka.gforge.inria.fr/pubs/sat_2wl_paper.pdf).
  M. Fleury, J. C. Blanchette, and P. Lammich.
  In Andronick, J., Felty, A. (eds.) 7th ACM SIGPLAN International Conference on Certified Programs and Proofs (CPP 2018), ACM, 2018.

* [The GRAT Tool Chain: Efficient (UN)SAT Certificate Checking with Formal Correctness Guarantees](http://www21.in.tum.de/~lammich/pub/sat2017.pdf).
  P. Lammich.
  In Gaspers, S., Walsh, T. (eds.) 20th International Conference on Theory and Applications of Satisfiability Testing (SAT 2017), LNCS 10491, pp. 457–463, Springer, 2017.

* [Efficient Verified (UN)SAT Certificate Checking](http://www21.in.tum.de/~lammich/pub/cade2017.pdf).
  P. Lammich.
  In de Moura, L. (ed.) 26th International Conference on Automated Deduction (CADE-26), LNCS 10395, pp. 237–254, Springer, 2017. 

* [Nested Multisets, Hereditary Multisets, and Syntactic Ordinals in Isabelle/HOL](http://www.cs.vu.nl/~jbe248/nested_multisets.pdf).
  J. C. Blanchette, M. Fleury, and D. Traytel.
  In Miller, D. (ed.) 2nd International Conference on Formal Structures for Computation and Deduction (FSCD 2017), LIPIcs 84, pages 11:1–11:18, Schloss Dagstuhl—Leibniz-Zentrum für Informatik, 2017. 

* [A Transfinite Knuth–Bendix Order for Lambda-Free Higher-Order Terms](http://people.mpi-inf.mpg.de/~jblanche/lambda_free_kbo_conf.pdf).
  H. Becker, J. C. Blanchette, U. Waldmann, and D. Wand.
  In de Moura, L. (ed.) 26th International Conference on Automated Deduction (CADE-26), LNCS 10395, pp. 432–453, Springer, 2017.

* [A Lambda-Free Higher-Order Recursive Path Order](http://people.mpi-inf.mpg.de/~jblanche/lambda_free_rpo_conf.pdf).
  J. C. Blanchette, U. Waldmann, and D. Wand.
  In Esparza, J., Murawski, A. S. (eds.) 20th International Conference on Foundations of Software Science and Computation Structures (FoSSaCS 2017), LNCS 10203, pp. 461–479, Springer, 2017.

* [Soundness and Completeness Proofs by Coinductive Methods](http://people.mpi-inf.mpg.de/~jblanche/compl2.pdf).
  J. C. Blanchette, A. Popescu, and D. Traytel.
  _Journal of Automated Reasoning_ 58(1):149-179, 2017.

* [A Verified SAT Solver Framework with Learn, Forget, Restart, and Incrementality](http://people.mpi-inf.mpg.de/~jblanche/sat.pdf).
  J. C. Blanchette, M. Fleury, and C. Weidenbach.
  In Sierra, C. (ed.) 26th International Joint Conference on Artificial Intelligence (IJCAI-17), pp. 4786–4790, ijcai.org, 2017.

* [A Verified SAT Solver Framework with Learn, Forget, Restart, and Incrementality (Extended Abstract)](https://www.cs.vu.nl/~jbe248/sat.pdf)
  J. C. Blanchette, M. Fleury, P. Lammich, and C. Weidenbach. Isabelle Workshop 2016.

* [Formalization of the Resolution Calculus for First-Order Logic](http://orbit.dtu.dk/files/126069253/typeinst.pdf).
  A. Schlichtkrull.
  In Blanchette, J. C., Merz, S. (eds.) 7th International Conference on Interactive Theorem Proving (ITP 2016), LNCS 9807, pp. 341-357, Springer, 2016.

* [Development and Verification of a Proof Assistant](http://production.datastore.cvt.dk/oafilestore?oid=57de73be1f4bfa107d000031&targetid=57de73bf1f4bfa107d000033). 
  A. B. Jensen.
  M.Sc. thesis, Technical University of Denmark, 2016.

* [A Verified SAT Solver Framework with Learn, Forget, Restart, and Incrementality](http://people.mpi-inf.mpg.de/~jblanche/sat.pdf).
  J. C. Blanchette, M. Fleury, and C. Weidenbach.
  In Olivetti, N., Tiwari, A. (eds.) 8th International Joint Conference on Automated Reasoning (IJCAR 2016), LNCS 9706, pp. 25-44, Springer, 2016.

* [Meta-Logical Reasoning in Higher-Order Logic](http://orbit.dtu.dk/files/118776437/logica_poster.pdf).
  J. Villadsen, A. Schlichtkrull, and A. V. Hess.
  Poster session presented at 29th Annual International Symposia Devoted to Logic (LOGICA 2015), 2015.

* [Formalization of Resolution Calculus in Isabelle](http://people.compute.dtu.dk/andschl/Thesis.pdf).
  A. Schlichtkrull.
  M.Sc. thesis, Technical University of Denmark, 2015.

* [Formalisation of Ground Inference Systems in a Proof Assistant](http://www.mpi-inf.mpg.de/fileadmin/inf/rg1/Documents/fleury_master_thesis.pdf).
  M. Fleury.
  M.Sc. thesis, École normale supérieure Rennes, 2015.

* [Unified Classical Logic Completeness: A Coinductive Pearl](http://people.mpi-inf.mpg.de/~jblanche/compl.pdf).
  J. C. Blanchette, A. Popescu, and D. Traytel.
  In Demri, S., Kapur, D., Weidenbach, C. (eds) 7th International Joint Conference on Automated Reasoning (IJCAR 2014), LNCS 8562, pp. 46-60, Springer, 2014.

* [Mechanizing the Metatheory of Sledgehammer](http://people.mpi-inf.mpg.de/~jblanche/self.pdf).
  J. C. Blanchette and A. Popescu.
  In Fontaine, P., Ringeissen, C., Schmidt, R. A. (eds.) 9th International Symposium on Frontiers of Combining Systems (FroCoS 2013), LNCS 8152, pp. 245-260, Springer, 2013.
