Search code examples
isabelleisarhol

Isabelle/Pure Isabelle/HOL Isabell/Isar conceptual questions


I need to do a presentation on a paper which at some point makes use of Isabelle/Isar and Isabelle/HOL.

I tried researching online about Isabelle/HOL and Isabelle/Isar to be able to eplain the relations in one or two slides. Here are the relations as I currently understand them:

  • Isabelle - provides a generic infrastructure for deductive systems
    • Based on Standard ML programming language
    • provides an IDE which allows you to write theories which can be later be proved.
  • Isabelle/Pure - minimal version of higher-order logic according to this link:
    • Is it an actual language that can be inputted into isabelle IDE?
    • Or is it a technical specification?
  • Isabelle/HOL(Higher Order Logic):

    • Is it a library or a language?
    • How does it relate to Isabelle/Pure?
    • Is it procedural in nature?
      • Do tactics only exist in Isabelle/HOL?
      • Is it LCF - Logical Commutable Functions?
  • Isabelle/Isar:

    • Structured proof language based on Isabelle/Pure
    • Declarative
    • Is it an extension of Isabelle/HOL as stated at here?
    • Do locales only exist in Isabelle/Isar?

What does the Isabelle/IDE supports by default?

Just feels like I'm getting conflicting information from different sources and would like to sort this out.

Thanks in advance


Solution

  • Edit - Check out this highly related question and Manuel Eberls answer here: What are all the isabelle/slashes?


    As this is an answer to a homework question and I myself only have limited understanding of all parts of the Isabelle project, this answer merely tries to point you in the right direction for at some parts of your question.

    From the Isabelle/ISAR reference manual:

    The Isabelle system essentially provides a generic infrastructure for building deductive systems (programmed in Standard ML), with a special focus on interactive theorem proving in higher-order logics.

    It continues to also introduce ISAR:

    In contrast Isar provides an interpreted language environment of its own, which has been specifically tailored for the needs of theory and proof development. [...] The main concern of Isar is the design of a human-readable structured proof language

    Let's try to connect Pure to all of this by looking at publications from Makarius Wenzel regarding the topic:

    Thus Isar proof texts may be understood as structured compositions of formal entities of the Pure framework, namely propositions, facts, and goals

    In colloquial terms, Pure is the semantic foundation. Isar is a language that "follows" this semantic and provides syntax for it. Isabelle is just (one of the) platforms it all runs on.

    Some of your confusions around the distinction between Pure and Isar seem to stem from the fact that the Isabelle Pure source code defines, or at least seems to define, both the semantics (Pure) and the syntax (Isar) in one go:

    (* The Pure theory, with definitions of Isar commands and some lemmas. *)

    In my humble opinion, this might be related to your understanding of syntax, semantics and "implementations" of the two. "Pure" outside of computers or paper is just semantics and thus, like math, just a thing in our brains. Give it syntax and you can put it to paper or type it into a machine. For the machine to be able to process your text (since this is ultimately what we after), it needs an implementation. Some framework telling it how to read the syntax and how to then process it. This framework is Isabelle. On top of Isabelle, there is Isabelle/Pure, which defines the semantics (the processing) and Isabelle/Isar, which defines syntax. For practical reasons, Isabelle's Pure implementation already provides the Isar syntax in one go.

    From all of this, you might be able to figure HOL out yourself!

    Some more references: