Isabelle (named by Lawrence Paulson after the daughter of Gérard Huet, as a tribute): a popular generic theorem prover
There are really intersting ideas underlying Isabelle:
Isabelle is not a prover in itself ⟶ it’s relying on the Logical Framework (LF)
Contrary to Coq (which relies on CIC), HOL-light (relying on HOL), the Logical Framework tries to encompass all possible logical systems.
⟶ Isabelle is such a framework, embedding various logical systems
Isabelle/”the logic used”:
- Isabelle/ZF (Zermelo-Fraenkel Set theory)
but the most popular (by far) is Isabelle/HOL.
LF: Not very popular anymore, because there’s one logics with a binder and basic connectors, which helps us to encode the other logical systems ⟶ you end up having two layers (the underlying logics and the enriched one), which is cumbersome in practice.
More “modern” than the old-fashioned LF ideas:
a basic prover that you can enrich by adding deduction-modulo rules
Isabelle’s Meta Logic
- basic types
- function types of the form $σ ⟶ τ$
- $λ$-terms with De Bruijn indices
and meta-formulas, meta-rules, meta-symbols.
To represent an object-logic, you add new basic types, constant symbols:\[true: form ⟶ prop\]
- $form$ is the type of object-logic formulas
- $prop$ is the type of the meta (underlying) logic
term(on which you quantify)
- containing for instance $nat, bool, ⋯$
- enables to use multi-sorted logics (by quantifying on only $nat$ for instance)
- objet fomulas of type
prop: one type in the $λ$-calculus in the meta/core logic
Warning!: you have many sorts of arrows:
Ex: for first-order logic (FOL)
- In the meta-logic:
you have the arrow $→$ of types of $λ$-terms:
- $λx.x: A → A$
among the basic types, there is $prop$, and there’s the arrow:\[⟹: prop → prop → prop\]
In the object-logic:
you have the arrow:\[⟶: o → o → o\]
which is “equivalent” in a way (due to the mata-rules) to $⟹$