Isabelle

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/HOL
  • 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:

Dedukti:

a basic prover that you can enrich by adding deduction-modulo rules

Isabelle’s Meta Logic

We have

  • 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

  • object class 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 o
  • 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 $⟹$

Leave a comment