doc-src/IsarRef/Thy/HOL_Specific.thy
changeset 45192 008710fff1cc
parent 45187 48c65b2c01c3
child 45232 eb56e1774c26
equal deleted inserted replaced
45191:d98a0388faab 45192:008710fff1cc
  1722   Isabelle's inference kernel, i.e. by a combination of resolution and
  1722   Isabelle's inference kernel, i.e. by a combination of resolution and
  1723   simplification.  Unfortunately, this approach is rather inefficient.
  1723   simplification.  Unfortunately, this approach is rather inefficient.
  1724   A more efficient way of executing specifications is to translate
  1724   A more efficient way of executing specifications is to translate
  1725   them into a functional programming language such as ML.
  1725   them into a functional programming language such as ML.
  1726 
  1726 
  1727   Isabelle provides two generic frameworks to support code generation
  1727   Isabelle provides a generic framework to support code generation
  1728   from executable specifications.  Isabelle/HOL instantiates these
  1728   from executable specifications.  Isabelle/HOL instantiates these
  1729   mechanisms in a way that is amenable to end-user applications.
  1729   mechanisms in a way that is amenable to end-user applications.  Code
  1730 *}
  1730   can be generated for functional programs (including overloading
  1731 
  1731   using type classes) targeting SML \cite{SML}, OCaml \cite{OCaml},
  1732 
  1732   Haskell \cite{haskell-revised-report} and Scala
  1733 subsection {* The new code generator (F. Haftmann) *}
       
  1734 
       
  1735 text {* This framework generates code from functional programs
       
  1736   (including overloading using type classes) to SML \cite{SML}, OCaml
       
  1737   \cite{OCaml}, Haskell \cite{haskell-revised-report} and Scala
       
  1738   \cite{scala-overview-tech-report}.  Conceptually, code generation is
  1733   \cite{scala-overview-tech-report}.  Conceptually, code generation is
  1739   split up in three steps: \emph{selection} of code theorems,
  1734   split up in three steps: \emph{selection} of code theorems,
  1740   \emph{translation} into an abstract executable view and
  1735   \emph{translation} into an abstract executable view and
  1741   \emph{serialization} to a specific \emph{target language}.
  1736   \emph{serialization} to a specific \emph{target language}.
  1742   Inductive specifications can be executed using the predicate
  1737   Inductive specifications can be executed using the predicate