# HG changeset patch # User wenzelm # Date 1660946324 -7200 # Node ID b6589c8ccadd9a3a7355fe948620d8149ef0dd4e # Parent 95d7459e5bc0edeb2bf367bc90950f1246d7e671 discontinued special support for README.html (which was hardly ever used in the past 2 decades); diff -r 95d7459e5bc0 -r b6589c8ccadd NEWS --- a/NEWS Fri Aug 19 21:43:06 2022 +0200 +++ b/NEWS Fri Aug 19 23:58:44 2022 +0200 @@ -194,6 +194,10 @@ *** System *** +* HTML presentation no longer supports README.html, which was meant as +add-on to the index.html of a session. Rare INCOMPATIBILITY, consider +using a separate theory "README" with Isabelle document markup/markdown. + * Isabelle/Scala is now based on Scala 3. This is a completely different compiler ("dotty") and a quite different source language (we are using the classic Java-style syntax, not the new Python-style syntax). diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/Algebra/README.html --- a/src/HOL/Algebra/README.html Fri Aug 19 21:43:06 2022 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ - - - - - - - HOL/Algebra/README.html - - - - -

Algebra --- Classical Algebra, using Explicit Structures and Locales

- -This directory contains proofs in classical algebra. It is intended -as a base for any algebraic development in Isabelle. Emphasis is on -reusability. This is achieved by modelling algebraic structures -as first-class citizens of the logic (not axiomatic type classes, say). -The library is expected to grow in future releases of Isabelle. -Contributions are welcome. - -

GroupTheory, including Sylow's Theorem

- -

These proofs are mainly by Florian Kammüller. (Later, Larry -Paulson simplified some of the proofs.) These theories were indeed -the original motivation for locales. - -Here is an outline of the directory's contents:

- -

Rings and Polynomials

- - - -

Development of Polynomials using Type Classes

- -

A development of univariate polynomials for HOL's ring classes -is available at HOL/Library/Polynomial. - -

[Jacobson1985] Nathan Jacobson, Basic Algebra I, Freeman, 1985. - -

[Ballarin1999] Clemens Ballarin, Computer Algebra and Theorem Proving, - Author's PhD thesis, 1999. Also University of Cambridge, Computer Laboratory Technical Report number 473. - -

-

Clemens Ballarin. -

- - diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/Algebra/README.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/HOL/Algebra/README.thy Fri Aug 19 23:58:44 2022 +0200 @@ -0,0 +1,74 @@ +theory README imports Main +begin + +section \Algebra --- Classical Algebra, using Explicit Structures and Locales\ + +text \ + This directory contains proofs in classical algebra. It is intended as a + base for any algebraic development in Isabelle. Emphasis is on reusability. + This is achieved by modelling algebraic structures as first-class citizens + of the logic (not axiomatic type classes, say). The library is expected to + grow in future releases of Isabelle. Contributions are welcome. +\ + +subsection \GroupTheory, including Sylow's Theorem\ + +text \ + These proofs are mainly by Florian Kammüller. (Later, Larry Paulson + simplified some of the proofs.) These theories were indeed the original + motivation for locales. + + Here is an outline of the directory's contents: + + \<^item> Theory \<^file>\Group.thy\ defines semigroups, monoids, groups, commutative + monoids, commutative groups, homomorphisms and the subgroup relation. It + also defines the product of two groups (This theory was reimplemented by + Clemens Ballarin). + + \<^item> Theory \<^file>\FiniteProduct.thy\ extends commutative groups by a product + operator for finite sets (provided by Clemens Ballarin). + + \<^item> Theory \<^file>\Coset.thy\ defines the factorization of a group and shows that + the factorization a normal subgroup is a group. + + \<^item> Theory \<^file>\Bij.thy\ defines bijections over sets and operations on them and + shows that they are a group. It shows that automorphisms form a group. + + \<^item> Theory \<^file>\Exponent.thy\ the combinatorial argument underlying Sylow's + first theorem. + + \<^item> Theory \<^file>\Sylow.thy\ contains a proof of the first Sylow theorem. +\ + + +subsection \Rings and Polynomials\ + +text \ + \<^item> Theory \<^file>\Ring.thy\ defines Abelian monoids and groups. The difference to + commutative structures is merely notational: the binary operation is + addition rather than multiplication. Commutative rings are obtained by + inheriting properties from Abelian groups and commutative monoids. Further + structures in the algebraic hierarchy of rings: integral domain. + + \<^item> Theory \<^file>\Module.thy\ introduces the notion of a R-left-module over an + Abelian group, where R is a ring. + + \<^item> Theory \<^file>\UnivPoly.thy\ constructs univariate polynomials over rings and + integral domains. Degree function. Universal Property. +\ + + +subsection \Development of Polynomials using Type Classes\ + +text \ + A development of univariate polynomials for HOL's ring classes is available + at \<^file>\~~/src/HOL/Computational_Algebra/Polynomial.thy\. + + [Jacobson1985] Nathan Jacobson, Basic Algebra I, Freeman, 1985. + + [Ballarin1999] Clemens Ballarin, Computer Algebra and Theorem Proving, + Author's PhD thesis, 1999. Also University of Cambridge, Computer Laboratory + Technical Report number 473. +\ + +end diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/Auth/Guard/README.html --- a/src/HOL/Auth/Guard/README.html Fri Aug 19 21:43:06 2022 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ - - - - - - - HOL/Auth/Guard/README.html - - - - -

Protocol-Independent Secrecy Results

- -date: april 2002 -author: Frederic Blanqui -email: blanqui@lri.fr -webpage: - -

The current development is built above the HOL (Higher-Order Logic) -Isabelle theory and the formalization of protocols introduced by Larry Paulson. More details are -in his paper -The Inductive approach -to verifying cryptographic protocols (J. Computer Security 6, pages -85-128, 1998). - -

-This directory contains a number of files: - -

    -
  • Extensions.thy contains extensions of Larry Paulson's files with many useful -lemmas. - -
  • Analz contains an important theorem about the decomposition of analz -between pparts (pairs) and kparts (messages that are not pairs). - -
  • Guard contains the protocol-independent secrecy theorem for nonces. -
  • GuardK is the same for keys. -
  • Guard_Public extends Guard and GuardK for public-key protocols. -
  • Guard_Shared extends Guard and GuardK for symmetric-key protocols. - -
  • List_Msg contains definitions on lists (inside messages). - -
  • P1 contains the definition of the protocol P1 and the proof of its -properties (strong forward integrity, insertion resilience, truncation -resilience, data confidentiality and non-repudiability) - -
  • P2 is the same for the protocol P2 - -
  • NS_Public is for Needham-Schroeder-Lowe -
  • OtwayRees is for Otway-Rees -
  • Yahalom is for Yahalom - -
  • Proto contains a more precise formalization of protocols with rules -and a protocol-independent theorem for proving guardness from a preservation -property. It also contains the proofs for Needham-Schroeder as an example. -
- -
-

Last modified 20 August 2002 - -

-Frederic Blanqui, -blanqui@lri.fr -
- - diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/Auth/Guard/README_Guard.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/HOL/Auth/Guard/README_Guard.thy Fri Aug 19 23:58:44 2022 +0200 @@ -0,0 +1,57 @@ +theory README_Guard imports Main +begin + +section \Protocol-Independent Secrecy Results\ + +text \ + \<^item> date: April 2002 + \<^item> author: Frederic Blanqui + \<^item> email: blanqui@lri.fr + + The current development is built above the HOL (Higher-Order Logic) Isabelle + theory and the formalization of protocols introduced by Larry Paulson. More + details are in his paper + \<^url>\https://www.cl.cam.ac.uk/users/lcp/papers/Auth/jcs.pdf\: \<^emph>\The Inductive + approach to verifying cryptographic protocols\ (J. Computer Security 6, + pages 85-128, 1998). + + This directory contains a number of files: + + \<^item> \<^file>\Extensions.thy\ contains extensions of Larry Paulson's files with + many useful lemmas. + + \<^item> \<^file>\Analz.thy\ contains an important theorem about the decomposition of + analz between pparts (pairs) and kparts (messages that are not pairs). + + \<^item> \<^file>\Guard.thy\ contains the protocol-independent secrecy theorem for + nonces. + + \<^item> \<^file>\GuardK.thy\ is the same for keys. + + \<^item> \<^file>\Guard_Public.thy\ extends \<^file>\Guard.thy\ and \<^file>\GuardK.thy\ for + public-key protocols. + + \<^item> \<^file>\Guard_Shared.thy\ extends \<^file>\Guard.thy\ and \<^file>\GuardK.thy\ for + symmetric-key protocols. + + \<^item> \<^file>\List_Msg.thy\ contains definitions on lists (inside messages). + + \<^item> \<^file>\P1.thy\ contains the definition of the protocol P1 and the proof of + its properties (strong forward integrity, insertion resilience, + truncation resilience, data confidentiality and non-repudiability). + + \<^item> \<^file>\P2.thy\ is the same for the protocol P2 + + \<^item> \<^file>\Guard_NS_Public.thy\ is for Needham-Schroeder-Lowe + + \<^item> \<^file>\Guard_OtwayRees.thy\ is for Otway-Rees + + \<^item> \<^file>\Guard_Yahalom.thy\ is for Yahalom + + \<^item> \<^file>\Proto.thy\ contains a more precise formalization of protocols with + rules and a protocol-independent theorem for proving guardness from a + preservation property. It also contains the proofs for Needham-Schroeder + as an example. +\ + +end diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/Auth/README.html --- a/src/HOL/Auth/README.html Fri Aug 19 21:43:06 2022 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ - - - - - - - HOL/Auth/README - - - - -

Auth--The Inductive Approach to Verifying Security Protocols

- -

Cryptographic protocols are of major importance, especially with the -growing use of the Internet. This directory demonstrates the ``inductive -method'' of protocol verification, which is described in various -papers. The operational semantics of protocol participants is defined -inductively. - -

This directory contains proofs concerning - -

    -
  • three versions of the Otway-Rees protocol - -
  • the Needham-Schroeder shared-key protocol - -
  • the Needham-Schroeder public-key protocol (original and with Lowe's -modification) - -
  • two versions of Kerberos: the simplified form published in the BAN paper - and also the full protocol (Kerberos IV) - -
  • three versions of the Yahalom protocol, including a bad one that - illustrates the purpose of the Oops rule - -
  • a novel recursive authentication protocol - -
  • the Internet protocol TLS - -
  • The certified e-mail protocol of Abadi et al. -
- -

Frederic Blanqui has contributed a theory of guardedness, which is -demonstrated by proofs of some roving agent protocols. - -

-Larry Paulson, -lcp@cl.cam.ac.uk -
- - diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/Auth/README.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/HOL/Auth/README.thy Fri Aug 19 23:58:44 2022 +0200 @@ -0,0 +1,38 @@ +theory README imports Main +begin + +section \Auth--The Inductive Approach to Verifying Security Protocols\ + +text \ + Cryptographic protocols are of major importance, especially with the growing + use of the Internet. This directory demonstrates the ``inductive method'' of + protocol verification, which is described in papers: + \<^url>\http://www.cl.cam.ac.uk/users/lcp/papers/protocols.html\. The operational + semantics of protocol participants is defined inductively. + + This directory contains proofs concerning: + + \<^item> three versions of the Otway-Rees protocol + + \<^item> the Needham-Schroeder shared-key protocol + + \<^item> the Needham-Schroeder public-key protocol (original and with Lowe's + modification) + + \<^item> two versions of Kerberos: the simplified form published in the BAN paper + and also the full protocol (Kerberos IV) + + \<^item> three versions of the Yahalom protocol, including a bad one that + illustrates the purpose of the Oops rule + + \<^item> a novel recursive authentication protocol + + \<^item> the Internet protocol TLS + + \<^item> The certified e-mail protocol of Abadi et al. + + Frederic Blanqui has contributed a theory of guardedness, which is + demonstrated by proofs of some roving agent protocols. +\ + +end diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/HOLCF/README.html --- a/src/HOL/HOLCF/README.html Fri Aug 19 21:43:06 2022 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ - - - - - - - HOLCF/README - - - - -

HOLCF: A higher-order version of LCF based on Isabelle/HOL

- -HOLCF is the definitional extension of Church's Higher-Order Logic with -Scott's Logic for Computable Functions that has been implemented in the -theorem prover Isabelle. This results in a flexible setup for reasoning -about functional programs. HOLCF supports standard domain theory (in particular -fixpoint reasoning and recursive domain equations) but also coinductive -arguments about lazy datatypes. - -

- -The most recent description of HOLCF is found here: - -

- -Descriptions of earlier versions can also be found online: - - - -A detailed description (in German) of the entire development can be found in: - - - -A short survey is available in: - - - - - diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/HOLCF/README.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/HOL/HOLCF/README.thy Fri Aug 19 23:58:44 2022 +0200 @@ -0,0 +1,37 @@ +theory README imports Main +begin + +section \HOLCF: A higher-order version of LCF based on Isabelle/HOL\ + +text \ + HOLCF is the definitional extension of Church's Higher-Order Logic with + Scott's Logic for Computable Functions that has been implemented in the + theorem prover Isabelle. This results in a flexible setup for reasoning + about functional programs. HOLCF supports standard domain theory (in + particular fixpoint reasoning and recursive domain equations) but also + coinductive arguments about lazy datatypes. + + The most recent description of HOLCF is found here: + + \<^item> \<^emph>\HOLCF '11: A Definitional Domain Theory for Verifying Functional + Programs\ \<^url>\http://web.cecs.pdx.edu/~brianh/phdthesis.html\, Brian + Huffman. Ph.D. thesis, Portland State University. 2012. + + Descriptions of earlier versions can also be found online: + + \<^item> \<^emph>\HOLCF = HOL+LCF\ \<^url>\https://www21.in.tum.de/~nipkow/pubs/jfp99.html\ + + A detailed description (in German) of the entire development can be found + in: + + \<^item> \<^emph>\HOLCF: eine konservative Erweiterung von HOL um LCF\ + \<^url>\http://www4.informatik.tu-muenchen.de/publ/papers/Diss_Regensbu.pdf\, + Franz Regensburger. Dissertation Technische Universität München. 1994. + + A short survey is available in: + + \<^item> \<^emph>\HOLCF: Higher Order Logic of Computable Functions\ + \<^url>\http://www4.informatik.tu-muenchen.de/publ/papers/Regensburger_HOLT1995.pdf\ +\ + +end diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/Hoare/README.html --- a/src/HOL/Hoare/README.html Fri Aug 19 21:43:06 2022 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,119 +0,0 @@ - - - - - - - HOL/Hoare/ReadMe - - - - -

Hoare Logic for a Simple WHILE Language

- -

Language and logic

- -This directory contains an implementation of Hoare logic for a simple WHILE -language. The constructs are -
    -
  • SKIP -
  • _ := _ -
  • _ ; _ -
  • IF _ THEN _ ELSE _ FI -
  • WHILE _ INV {_} DO _ OD -
-Note that each WHILE-loop must be annotated with an invariant. -

- -After loading theory Hoare, you can state goals of the form -

-VARS x y ... {P} prog {Q}
-
-where prog is a program in the above language, P is the -precondition, Q the postcondition, and x y ... is the -list of all program variables in prog. The latter list must -be nonempty and it must include all variables that occur on the left-hand -side of an assignment in prog. Example: -
-VARS x {x = a} x := x+1 {x = a+1}
-
-The (normal) variable a is merely used to record the initial -value of x and is not a program variable. Pre/post conditions -can be arbitrary HOL formulae mentioning both program variables and normal -variables. -

- -The implementation hides reasoning in Hoare logic completely and provides a -method vcg for transforming a goal in Hoare logic into an -equivalent list of verification conditions in HOL: -

-apply vcg
-
-If you want to simplify the resulting verification conditions at the same -time: -
-apply vcg_simp
-
-which, given the example goal above, solves it completely. For further -examples see Examples. -

- -IMPORTANT: -This is a logic of partial correctness. You can only prove that your program -does the right thing if it terminates, but not that it -terminates. -A logic of total correctness is also provided and described below. - -

Total correctness

- -To prove termination, each WHILE-loop must be annotated with a variant: -
    -
  • WHILE _ INV {_} VAR {_} DO _ OD -
-A variant is an expression with type nat, which may use program -variables and normal variables. -

- -A total-correctness goal has the form -

-VARS x y ... [P] prog [Q]
-
-enclosing the pre- and postcondition in square brackets. -

- -Methods vcg_tc and vcg_tc_simp can be used to derive -verification conditions. -

- -From a total-correctness proof, a function can be extracted which -for every input satisfying the precondition returns an output -satisfying the postcondition. - -

Notes on the implementation

- -The implementation loosely follows -

-Mike Gordon. -Mechanizing Programming Logics in Higher Order Logic.
-University of Cambridge, Computer Laboratory, TR 145, 1988. -

-published as -

-Mike Gordon. -Mechanizing Programming Logics in Higher Order Logic.
-In -Current Trends in Hardware Verification and Automated Theorem Proving -,
-edited by G. Birtwistle and P.A. Subrahmanyam, Springer-Verlag, 1989. -

- -The main differences: the state is modelled as a tuple as suggested in -

-J. von Wright and J. Hekanaho and P. Luostarinen and T. Langbacka. -Mechanizing Some Advanced Refinement Concepts. -Formal Methods in System Design, 3, 1993, 49-81. -

-and the embeding is deep, i.e. there is a concrete datatype of programs. The -latter is not really necessary. - - diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/Hoare/README.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/HOL/Hoare/README.thy Fri Aug 19 23:58:44 2022 +0200 @@ -0,0 +1,93 @@ +theory README imports Main +begin + +section \Hoare Logic for a Simple WHILE Language\ + +subsection \Language and logic\ + +text \ + This directory contains an implementation of Hoare logic for a simple WHILE + language. The constructs are + + \<^item> \<^verbatim>\SKIP\ + \<^item> \<^verbatim>\_ := _\ + \<^item> \<^verbatim>\_ ; _\ + \<^item> \<^verbatim>\IF _ THEN _ ELSE _ FI\ + \<^item> \<^verbatim>\WHILE _ INV {_} DO _ OD\ + + Note that each WHILE-loop must be annotated with an invariant. + + Within the context of theory \<^verbatim>\Hoare\, you can state goals of the form + @{verbatim [display] \VARS x y ... {P} prog {Q}\} + where \<^verbatim>\prog\ is a program in the above language, \<^verbatim>\P\ is the precondition, + \<^verbatim>\Q\ the postcondition, and \<^verbatim>\x y ...\ is the list of all \<^emph>\program + variables\ in \<^verbatim>\prog\. The latter list must be nonempty and it must include + all variables that occur on the left-hand side of an assignment in \<^verbatim>\prog\. + Example: + @{verbatim [display] \VARS x {x = a} x := x+1 {x = a+1}\} + The (normal) variable \<^verbatim>\a\ is merely used to record the initial value of + \<^verbatim>\x\ and is not a program variable. Pre/post conditions can be arbitrary HOL + formulae mentioning both program variables and normal variables. + + The implementation hides reasoning in Hoare logic completely and provides a + method \<^verbatim>\vcg\ for transforming a goal in Hoare logic into an equivalent list + of verification conditions in HOL: \<^theory_text>\apply vcg\ + + If you want to simplify the resulting verification conditions at the same + time: \<^theory_text>\apply vcg_simp\ which, given the example goal above, solves it + completely. For further examples see \<^file>\Examples.thy\. + + \<^bold>\IMPORTANT:\ + This is a logic of partial correctness. You can only prove that your program + does the right thing \<^emph>\if\ it terminates, but not \<^emph>\that\ it terminates. A + logic of total correctness is also provided and described below. +\ + + +subsection \Total correctness\ + +text \ + To prove termination, each WHILE-loop must be annotated with a variant: + + \<^item> \<^verbatim>\WHILE _ INV {_} VAR {_} DO _ OD\ + + A variant is an expression with type \<^verbatim>\nat\, which may use program variables + and normal variables. + + A total-correctness goal has the form \<^verbatim>\VARS x y ... [P] prog [Q]\ enclosing + the pre- and postcondition in square brackets. + + Methods \<^verbatim>\vcg_tc\ and \<^verbatim>\vcg_tc_simp\ can be used to derive verification + conditions. + + From a total-correctness proof, a function can be extracted which for every + input satisfying the precondition returns an output satisfying the + postcondition. +\ + + +subsection \Notes on the implementation\ + +text \ + The implementation loosely follows + + Mike Gordon. \<^emph>\Mechanizing Programming Logics in Higher Order Logic\. + University of Cambridge, Computer Laboratory, TR 145, 1988. + + published as + + Mike Gordon. \<^emph>\Mechanizing Programming Logics in Higher Order Logic\. In + \<^emph>\Current Trends in Hardware Verification and Automated Theorem Proving\, + edited by G. Birtwistle and P.A. Subrahmanyam, Springer-Verlag, 1989. + + The main differences: the state is modelled as a tuple as suggested in + + J. von Wright and J. Hekanaho and P. Luostarinen and T. Langbacka. + \<^emph>\Mechanizing Some Advanced Refinement Concepts\. Formal Methods in System + Design, 3, 1993, 49-81. + + and the embeding is deep, i.e. there is a concrete datatype of programs. The + latter is not really necessary. +\ + +end diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/Library/README.html --- a/src/HOL/Library/README.html Fri Aug 19 21:43:06 2022 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ - - - - - - - HOL-Library/README - - - - -

HOL-Library: supplemental theories for main Isabelle/HOL

- -This is a collection of generic theories that may be used together -with main Isabelle/HOL. - -

- -Addition of new theories should be done with some care, as the -``module system'' of Isabelle is rather simplistic. The following -guidelines may be helpful to achieve maximum re-usability and minimum -clashes with existing developments. - -

- -
Examples - -
Theories should be as ``generic'' as is sensible. Unused (or -rather unusable?) theories should be avoided; common applications -should actually refer to the present theory. Small example uses may -be included in the library as well, but should be put in a separate -theory, such as Foobar accompanied by -Foobar_Examples. - -
Theory names - -
The theory loader name space is flat, so use sufficiently -long and descriptive names to reduce the danger of clashes with the -user's own theories. The convention for theory names is as follows: -Foobar_Doobar (this looks best in LaTeX output). - -
Names of logical items - -
There are separate hierarchically structured name spaces for -types, constants, theorems etc. Nevertheless, some care should be -taken, as the name spaces are always ``open''. Use adequate names; -avoid unreadable abbreviations. The general naming convention is to -separate word constituents by underscores, as in foo_bar or -Foo_Bar (this looks best in LaTeX output). - -
Global context declarations - -
Only items introduced in the present theory should be declared -globally (e.g. as Simplifier rules). Note that adding and deleting -rules from parent theories may result in strange behavior later, -depending on the user's arrangement of import lists. - -
Spacing - -
Isabelle is able to produce a high-quality LaTeX document from the -theory sources, provided some minor issues are taken care of. In -particular, spacing and line breaks are directly taken from source -text. Incidentally, output looks very good if common type-setting -conventions are observed: put a single space after each -punctuation character (",", ".", etc.), but none -before it; do not extra spaces inside of parentheses; do not attempt -to simulate table markup with spaces, avoid ``hanging'' indentations. - -
- - - diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/Library/README.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/HOL/Library/README.thy Fri Aug 19 23:58:44 2022 +0200 @@ -0,0 +1,43 @@ +theory README imports Main +begin + +section \HOL-Library: supplemental theories for main Isabelle/HOL\ + +text \ + This is a collection of generic theories that may be used together with main + Isabelle/HOL. + + Addition of new theories should be done with some care, as the ``module + system'' of Isabelle is rather simplistic. The following guidelines may be + helpful to achieve maximum re-usability and minimum clashes with existing + developments. + + \<^descr>[Examples] Theories should be as ``generic'' as is sensible. Unused (or + rather unusable?) theories should be avoided; common applications should + actually refer to the present theory. Small example uses may be included in + the library as well, but should be put in a separate theory, such as + \<^verbatim>\Foobar.thy\ accompanied by \<^verbatim>\Foobar_Examples.thy\. + + \<^descr>[Names of logical items] There are separate hierarchically structured name + spaces for types, constants, theorems etc. Nevertheless, some care should be + taken, as the name spaces are always ``open''. Use adequate names; avoid + unreadable abbreviations. The general naming convention is to separate word + constituents by underscores, as in \<^verbatim>\foo_bar\ or \<^verbatim>\Foo_Bar\ (this looks best + in LaTeX output). + + \<^descr>[Global context declarations] Only items introduced in the present theory + should be declared globally (e.g. as Simplifier rules). Note that adding and + deleting rules from parent theories may result in strange behavior later, + depending on the user's arrangement of import lists. + + \<^descr>[Spacing] Isabelle is able to produce a high-quality LaTeX document from + the theory sources, provided some minor issues are taken care of. In + particular, spacing and line breaks are directly taken from source text. + Incidentally, output looks very good if common type-setting conventions are + observed: put a single space \<^emph>\after\ each punctuation character ("\<^verbatim>\,\", + "\<^verbatim>\.\", etc.), but none before it; do not extra spaces inside of + parentheses; do not attempt to simulate table markup with spaces, avoid + ``hanging'' indentations. +\ + +end diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/ROOT --- a/src/HOL/ROOT Fri Aug 19 21:43:06 2022 +0200 +++ b/src/HOL/ROOT Fri Aug 19 23:58:44 2022 +0200 @@ -58,6 +58,8 @@ description " Classical Higher-order Logic -- batteries included. " + theories [document = false] + README theories Library (*conflicting type class instantiations and dependent applications*) @@ -326,6 +328,8 @@ Verification of imperative programs (verification conditions are generated automatically from pre/post conditions and loop invariants). " + theories [document = false] + README theories Examples ExamplesAbort @@ -406,6 +410,8 @@ sessions "HOL-Cardinals" "HOL-Combinatorics" + theories [document = false] + README theories (* Orders and Lattices *) Galois_Connection (* Knaster-Tarski theorem and Galois connections *) @@ -429,10 +435,15 @@ " sessions "HOL-Library" directories "Smartcard" "Guard" + theories [document = false] + README theories Auth_Shared Auth_Public "Smartcard/Auth_Smartcard" + theories [document = false] + "Guard/README_Guard" + theories "Guard/Auth_Guard_Shared" "Guard/Auth_Guard_Public" document_files "root.tex" @@ -445,10 +456,15 @@ Verifying security protocols using Chandy and Misra's UNITY formalism. " directories "Simple" "Comp" + theories [document = false] + README theories (*Basic meta-theory*) UNITY_Main + theories [document = false] + "Simple/README_Simple" + theories (*Simple examples: no composition*) "Simple/Deadlock" "Simple/Common" @@ -463,6 +479,9 @@ (*Verifying security protocols using UNITY*) "Simple/NSP_Bad" + theories [document = false] + "Comp/README_Comp" + theories (*Example of composition*) "Comp/Handshake" @@ -783,7 +802,9 @@ description " Lamport's Temporal Logic of Actions. " - theories TLA + theories + README + TLA session "HOL-TLA-Inc" in "TLA/Inc" = "HOL-TLA" + theories Inc @@ -1083,6 +1104,8 @@ " sessions "HOL-Library" + theories [document = false] + README theories HOLCF (global) document_files "root.tex" diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/TLA/README.html --- a/src/HOL/TLA/README.html Fri Aug 19 21:43:06 2022 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ - - - - - - - HOL/TLA - - - - -

TLA: Lamport's Temporal Logic of Actions

- -TLA -is a linear-time temporal logic introduced by Leslie Lamport in -The Temporal Logic of Actions (ACM TOPLAS 16(3), 1994, -872-923). Unlike other temporal logics, both systems and properties -are represented as logical formulas, and logical connectives such as -implication, conjunction, and existential quantification represent -structural relations such as refinement, parallel composition, and -hiding. TLA has been applied to numerous case studies. - -

This directory formalizes TLA in Isabelle/HOL, as follows: -

    -
  • Theory Intensional prepares the - ground by introducing basic syntax for "lifted", possibl-world based - logics. -
  • Theories Stfun and - Action represent the state and transition - level formulas of TLA, evaluated over single states and pairs of - states. -
  • Theory Init introduces temporal logic - and defines conversion functions from nontemporal to temporal - formulas. -
  • Theory TLA axiomatizes proper temporal - logic. -
- -Please consult the -design notes -for further information regarding the setup and use of this encoding -of TLA. - -

-The theories are accompanied by a small number of examples: -

    -
  • Inc: Lamport's increment - example, a standard TLA benchmark, illustrates an elementary TLA - proof. -
  • Buffer: a proof that two buffers - in a row implement a single buffer, uses a simple refinement - mapping. -
  • Memory: a verification of (the - untimed part of) Broy and Lamport's RPC-Memory case study, - more fully explained in LNCS 1169 (the - TLA - solution is available separately). -
- -
- -
-Stephan Merz -
- -Last modified: Sat Mar 5 00:54:49 CET 2005 - - diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/TLA/README.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/HOL/TLA/README.thy Fri Aug 19 23:58:44 2022 +0200 @@ -0,0 +1,48 @@ +theory README imports Main +begin + +section \TLA: Lamport's Temporal Logic of Actions\ + +text \ + TLA \<^url>\http://www.research.digital.com/SRC/personal/Leslie_Lamport/tla/tla.html\ + is a linear-time temporal logic introduced by Leslie Lamport in \<^emph>\The + Temporal Logic of Actions\ (ACM TOPLAS 16(3), 1994, 872-923). Unlike other + temporal logics, both systems and properties are represented as logical + formulas, and logical connectives such as implication, conjunction, and + existential quantification represent structural relations such as + refinement, parallel composition, and hiding. TLA has been applied to + numerous case studies. + + This directory formalizes TLA in Isabelle/HOL, as follows: + + \<^item> \<^file>\Intensional.thy\ prepares the ground by introducing basic syntax for + "lifted", possible-world based logics. + + \<^item> \<^file>\Stfun.thy\ and \<^file>\Action.thy\ represent the state and transition + level formulas of TLA, evaluated over single states and pairs of states. + + \<^item> \<^file>\Init.thy\ introduces temporal logic and defines conversion functions + from nontemporal to temporal formulas. + + \<^item> \<^file>\TLA.thy\ axiomatizes proper temporal logic. + + + Please consult the \<^emph>\design notes\ + \<^url>\http://www.pst.informatik.uni-muenchen.de/~merz/isabelle/IsaTLADesign.ps\ + for further information regarding the setup and use of this encoding of TLA. + + The theories are accompanied by a small number of examples: + + \<^item> \<^dir>\Inc\: Lamport's \<^emph>\increment\ example, a standard TLA benchmark, + illustrates an elementary TLA proof. + + \<^item> \<^dir>\Buffer\: a proof that two buffers in a row implement a single buffer, + uses a simple refinement mapping. + + \<^item> \<^dir>\Memory\: a verification of (the untimed part of) Broy and Lamport's + \<^emph>\RPC-Memory\ case study, more fully explained in LNCS 1169 (the \<^emph>\TLA + solution\ is available separately from + \<^url>\http://www.pst.informatik.uni-muenchen.de/~merz/papers/RPCMemory.html\). +\ + +end diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/UNITY/Comp/README.html --- a/src/HOL/UNITY/Comp/README.html Fri Aug 19 21:43:06 2022 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ - - - - - - - HOL/UNITY/README - - - - -

UNITY: Examples Involving Program Composition

- -

-The directory presents verification examples involving program composition. -They are mostly taken from the works of Chandy, Charpentier and Chandy. - -

- -

Safety proofs (invariants) are often proved automatically. Progress -proofs involving ENSURES can sometimes be proved automatically. The -level of automation appears to be about the same as in HOL-UNITY by Flemming -Andersen et al. - -

-lcp@cl.cam.ac.uk -
- - diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/UNITY/Comp/README_Comp.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/HOL/UNITY/Comp/README_Comp.thy Fri Aug 19 23:58:44 2022 +0200 @@ -0,0 +1,24 @@ +theory README_Comp imports Main +begin + +section \UNITY: Examples Involving Program Composition\ + +text \ + The directory presents verification examples involving program composition. + They are mostly taken from the works of Chandy, Charpentier and Chandy. + + \<^item> examples of \<^emph>\universal properties\: the counter (\<^file>\Counter.thy\) and + priority system (\<^file>\Priority.thy\) + \<^item> the allocation system (\<^file>\Alloc.thy\) + \<^item> client implementation (\<^file>\Client.thy\) + \<^item> allocator implementation (\<^file>\AllocImpl.thy\) + \<^item> the handshake protocol (\<^file>\Handshake.thy\) + \<^item> the timer array (demonstrates arrays of processes) (\<^file>\TimerArray.thy\) + + Safety proofs (invariants) are often proved automatically. Progress proofs + involving ENSURES can sometimes be proved automatically. The level of + automation appears to be about the same as in HOL-UNITY by Flemming Andersen + et al. +\ + +end diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/UNITY/README.html --- a/src/HOL/UNITY/README.html Fri Aug 19 21:43:06 2022 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ - - - - - - - HOL/UNITY/README - - - - -

UNITY--Chandy and Misra's UNITY formalism

- -

The book Parallel Program Design: A Foundation by Chandy and Misra -(Addison-Wesley, 1988) presents the UNITY formalism. UNITY consists of an -abstract programming language of guarded assignments and a calculus for -reasoning about such programs. Misra's 1994 paper "A Logic for Concurrent -Programming" presents New UNITY, giving more elegant foundations for a more -general class of languages. In recent work, Chandy and Sanders have proposed -new methods for reasoning about systems composed of many components. - -

This directory formalizes these new ideas for UNITY. The Isabelle examples -may seem strange to UNITY traditionalists. Hand UNITY proofs tend to be -written in the forwards direction, as in informal mathematics, while Isabelle -works best in a backwards (goal-directed) style. Programs are expressed as -sets of commands, where each command is a relation on states. Quantification -over commands using [] is easily expressed. At present, there are no examples -of quantification using ||. - -

A UNITY assertion denotes the set of programs satisfying it, as -in the propositions-as-types paradigm. The resulting style is readable if -unconventional. - -

Safety proofs (invariants) are often proved automatically. Progress -proofs involving ENSURES can sometimes be proved automatically. The -level of automation appears to be about the same as in HOL-UNITY by Flemming -Andersen et al. - -

-The directory Simple -presents a few examples, mostly taken from Misra's 1994 -paper, involving single programs. -The directory Comp -presents examples of proofs involving program composition. - -

-lcp@cl.cam.ac.uk -
- diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/UNITY/README.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/HOL/UNITY/README.thy Fri Aug 19 23:58:44 2022 +0200 @@ -0,0 +1,37 @@ +theory README imports Main +begin + +section \UNITY--Chandy and Misra's UNITY formalism\ + +text \ + The book \<^emph>\Parallel Program Design: A Foundation\ by Chandy and Misra + (Addison-Wesley, 1988) presents the UNITY formalism. UNITY consists of an + abstract programming language of guarded assignments and a calculus for + reasoning about such programs. Misra's 1994 paper "A Logic for Concurrent + Programming" presents New UNITY, giving more elegant foundations for a more + general class of languages. In recent work, Chandy and Sanders have proposed + new methods for reasoning about systems composed of many components. + + This directory formalizes these new ideas for UNITY. The Isabelle examples + may seem strange to UNITY traditionalists. Hand UNITY proofs tend to be + written in the forwards direction, as in informal mathematics, while + Isabelle works best in a backwards (goal-directed) style. Programs are + expressed as sets of commands, where each command is a relation on states. + Quantification over commands using \<^verbatim>\[]\ is easily expressed. At present, + there are no examples of quantification using \<^verbatim>\||\. + + A UNITY assertion denotes the set of programs satisfying it, as in the + propositions-as-types paradigm. The resulting style is readable if + unconventional. + + Safety proofs (invariants) are often proved automatically. Progress proofs + involving ENSURES can sometimes be proved automatically. The level of + automation appears to be about the same as in HOL-UNITY by Flemming Andersen + et al. + + The directory \<^dir>\Simple\ presents a few examples, mostly taken from Misra's + 1994 paper, involving single programs. The directory \<^dir>\Comp\ presents + examples of proofs involving program composition. +\ + +end diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/UNITY/Simple/README.html --- a/src/HOL/UNITY/Simple/README.html Fri Aug 19 21:43:06 2022 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ - - - - - - - HOL/UNITY/README - - - - -

UNITY: Examples Involving Single Programs

- -

The directory presents verification examples that do not involve program -composition. They are mostly taken from Misra's 1994 papers on ``New UNITY'': -

- -
-lcp@cl.cam.ac.uk -
- - diff -r 95d7459e5bc0 -r b6589c8ccadd src/HOL/UNITY/Simple/README_Simple.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/HOL/UNITY/Simple/README_Simple.thy Fri Aug 19 23:58:44 2022 +0200 @@ -0,0 +1,22 @@ +theory README_Simple imports Main +begin + +section \UNITY: Examples Involving Single Programs\ + +text \ + The directory presents verification examples that do not involve program + composition. They are mostly taken from Misra's 1994 papers on ``New + UNITY'': + + \<^item> common meeting time (\<^file>\Common.thy\) + \<^item> the token ring (\<^file>\Token.thy\) + \<^item> the communication network (\<^file>\Network.thy\) + \<^item> the lift controller (a standard benchmark) (\<^file>\Lift.thy\) + \<^item> a mutual exclusion algorithm (\<^file>\Mutex.thy\) + \<^item> \n\-process deadlock (\<^file>\Deadlock.thy\) + \<^item> unordered channel (\<^file>\Channel.thy\) + \<^item> reachability in directed graphs (section 6.4 of the book) + (\<^file>\Reach.thy\ and \<^file>\Reachability.thy\> +\ + +end diff -r 95d7459e5bc0 -r b6589c8ccadd src/Pure/Thy/presentation.scala --- a/src/Pure/Thy/presentation.scala Fri Aug 19 21:43:06 2022 +0200 +++ b/src/Pure/Thy/presentation.scala Fri Aug 19 23:58:44 2022 +0200 @@ -433,7 +433,6 @@ /* present session */ val session_graph_path: Path = Path.explode("session_graph.pdf") - val readme_path: Path = Path.explode("README.html") def session_html( html_context: HTML_Context, @@ -473,19 +472,11 @@ val deps_link = HTML.link(session_graph_path, HTML.text("theory dependencies")) - val readme_links = - if ((session_info.dir + readme_path).is_file) { - Isabelle_System.copy_file(session_info.dir + readme_path, session_dir + readme_path) - List(HTML.link(readme_path, HTML.text("README"))) - } - else Nil - val document_links = documents.map(doc => HTML.link(doc.path.pdf, HTML.text(doc.name))) Library.separate(HTML.break ::: HTML.nl, - (deps_link :: readme_links ::: document_links). - map(link => HTML.text("View ") ::: List(link))).flatten + (deps_link :: document_links).map(link => HTML.text("View ") ::: List(link))).flatten } def present_theory(theory_name: String): Option[XML.Body] = { diff -r 95d7459e5bc0 -r b6589c8ccadd src/Pure/Thy/sessions.scala --- a/src/Pure/Thy/sessions.scala Fri Aug 19 21:43:06 2022 +0200 +++ b/src/Pure/Thy/sessions.scala Fri Aug 19 23:58:44 2022 +0200 @@ -34,7 +34,7 @@ def exclude_session(name: String): Boolean = name == "" || name == DRAFT def exclude_theory(name: String): Boolean = - name == root_name || name == "README" || name == "index" || name == "bib" + name == root_name || name == "index" || name == "bib" /* ROOTS file format */