[isabelle] What are the atomic terms in Isabelle/HOL?



I'm looking at this sentence in prog-prove.pdf, page 3:

    Terms are formed as in functional programming by applying
    functions to arguments. If f is a function of type
    tau1 => tau2 and t is a term of type tau1, then f t
    is a term of type tau2.

Also, the word "contain" in this sentence on page 4 makes me unsure of what a term is:

    Terms may also contain lambda-abstractions.

I've looked for other definitions of "term" in the Isabelle docs, but I'm not sure how constants and variables are used as a part of the definition of "term".

Here are three questions I've asked myself, with my answers in parentheses. You can correct them if you'd like:

1) Does a term (of Isabelle/HOL) have a type?  (obviously yes)
2) Is a term (of Isabelle/HOL) a type? (no)
3) Is a type (of Isabelle/HOL) a term? (no)

I'm guessing that one difference between a term and a type is related to constants.

I briefly looked at "3.2.5 Types and terms" in isar-ref.pdf, but I can't sort that out.

In intro.pdf (Old Introduction to Isabelle), page 1, it says:

  The syntax for terms is summarised below...
    t :: tau       type constraint, on a term or bound variable
    %x . t         abstraction
    %x1...xn . t   curried abstraction, %x1...%xn . t
    t(u)           application
    t(u1,...,un)   curried application, t(u1) ... (un)

This indicates that a lambda-abstraction can be a term.

In Paulson's "Logic and Computation - Interactive proof with Cambridge LCF", in "Chapter 5 Syntactic Operations for PP-Lambda", page 142, he says:

    Terms come in four syntactic classes: constants, variables,
    abstractions, and combinations (function applications).

This is like a lambda-calculus term, so it looks as if Isabelle/HOL terms may not be limited to function application, but I tend to take things literally, so when prog-prove.pdf says, "Terms are formed as in functional programming by applying functions to arguments", that makes me wonder whether a term is only function application.

I'll ask two more questions, in case someone wants to answer them:

1) Is a term (in Isabelle/HOL) function application only? (probably not)
2) To what extent do the concepts in "Part II Cambridge LCF" of Paulson's "Logic and Computation" apply to Isabelle/HOL?

Part I chapters 2, 3, and 4 of "Logic and Computation" look like something I need to work through for foundational material on HOL.

Thanks,
GB





This archive was generated by a fusion of Pipermail (Mailman edition) and MHonArc.