doc-src/Logics/HOL.tex
changeset 2933 f842a75d9624
parent 2926 15c21c1ad71d
child 2975 230f456956a2
equal deleted inserted replaced
2932:9c4d5fd41c9b 2933:f842a75d9624
  1862 substructure of the main theory structure.
  1862 substructure of the main theory structure.
  1863 
  1863 
  1864 This package is derived from the ZF one, described in a
  1864 This package is derived from the ZF one, described in a
  1865 separate paper,\footnote{It appeared in CADE~\cite{paulson-CADE} and a
  1865 separate paper,\footnote{It appeared in CADE~\cite{paulson-CADE} and a
  1866   longer version is distributed with Isabelle.} which you should refer to
  1866   longer version is distributed with Isabelle.} which you should refer to
  1867 in case of difficulties.  The package is simpler than ZF's, thanks to HOL's
  1867 in case of difficulties.  The package is simpler than ZF's thanks to HOL's
  1868 automatic type-checking.  The type of the (co)inductive determines the
  1868 automatic type-checking.  The type of the (co)inductive determines the
  1869 domain of the fixedpoint definition, and the package does not use inference
  1869 domain of the fixedpoint definition, and the package does not use inference
  1870 rules for type-checking.
  1870 rules for type-checking.
  1871 
  1871 
  1872 
  1872 
  1891 
  1891 
  1892 \item[\tt mk_cases] is a function to create simplified instances of {\tt
  1892 \item[\tt mk_cases] is a function to create simplified instances of {\tt
  1893 elim}, using freeness reasoning on some underlying datatype.
  1893 elim}, using freeness reasoning on some underlying datatype.
  1894 \end{description}
  1894 \end{description}
  1895 
  1895 
  1896 For an inductive definition, the result structure contains two induction rules,
  1896 For an inductive definition, the result structure contains two induction
  1897 {\tt induct} and \verb|mutual_induct|.  For a coinductive definition, it
  1897 rules, {\tt induct} and \verb|mutual_induct|.  (To save storage, the latter
  1898 contains the rule \verb|coinduct|.
  1898 rule is just {\tt True} unless more than one set is being defined.)  For a
       
  1899 coinductive definition, it contains the rule \verb|coinduct|.
  1899 
  1900 
  1900 Figure~\ref{def-result-fig} summarizes the two result signatures,
  1901 Figure~\ref{def-result-fig} summarizes the two result signatures,
  1901 specifying the types of all these components.
  1902 specifying the types of all these components.
  1902 
  1903 
  1903 \begin{figure}
  1904 \begin{figure}
  2001      pred "pred a r: Pow(acc r) ==> a: acc r"
  2002      pred "pred a r: Pow(acc r) ==> a: acc r"
  2002   monos   "[Pow_mono]"
  2003   monos   "[Pow_mono]"
  2003 end
  2004 end
  2004 \end{ttbox}
  2005 \end{ttbox}
  2005 The HOL distribution contains many other inductive definitions, such as the
  2006 The HOL distribution contains many other inductive definitions, such as the
  2006 theory {\tt HOL/ex/PropLog.thy} and the directory {\tt HOL/IMP}.  The
  2007 theory {\tt HOL/ex/PropLog.thy} and the subdirectories {\tt IMP}, {\tt Lambda}
  2007 theory {\tt HOL/ex/LList.thy} contains coinductive definitions.
  2008 and {\tt Auth}.  The theory {\tt HOL/ex/LList.thy} contains coinductive
       
  2009 definitions.
  2008 
  2010 
  2009 \index{*coinductive|)} \index{*inductive|)}
  2011 \index{*coinductive|)} \index{*inductive|)}
  2010 
  2012 
  2011 
  2013 
  2012 \section{The examples directories}
  2014 \section{The examples directories}
  2021 Directory {\tt HOL/IMP} contains a formalization of various denotational,
  2023 Directory {\tt HOL/IMP} contains a formalization of various denotational,
  2022 operational and axiomatic semantics of a simple while-language, the necessary
  2024 operational and axiomatic semantics of a simple while-language, the necessary
  2023 equivalence proofs, soundness and completeness of the Hoare rules w.r.t.\ the
  2025 equivalence proofs, soundness and completeness of the Hoare rules w.r.t.\ the
  2024 denotational semantics, and soundness and completeness of a verification
  2026 denotational semantics, and soundness and completeness of a verification
  2025 condition generator. Much of development is taken from
  2027 condition generator. Much of development is taken from
  2026 Winskel~\cite{winskel93}. For details see~\cite{Nipkow-FSTTCS-96}.
  2028 Winskel~\cite{winskel93}. For details see~\cite{nipkow-IMP}.
  2027 
  2029 
  2028 Directory {\tt HOL/Hoare} contains a user friendly surface syntax for Hoare
  2030 Directory {\tt HOL/Hoare} contains a user friendly surface syntax for Hoare
  2029 logic, including a tactic for generating verification-conditions.
  2031 logic, including a tactic for generating verification-conditions.
  2030 
  2032 
  2031 Directory {\tt HOL/MiniML} contains a formalization of the type system of the
  2033 Directory {\tt HOL/MiniML} contains a formalization of the type system of the